{"version":3,"file":"static/js/main.8bbdac64.js","mappings":";uDAKAA,EAAQ,OAAW,EAUnBA,EAAQ,EATO,CACb,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,2YCmCXC,EAAOD,QAzBP,WAEEE,KAAKC,MAAQ,KACbD,KAAKE,QAAU,EAEfF,KAAKG,SAAW,EAEhBH,KAAKI,SAAW,EAEhBJ,KAAKK,OAAS,KACdL,KAAKM,SAAW,EAEhBN,KAAKO,UAAY,EAEjBP,KAAKQ,UAAY,EAEjBR,KAAKS,IAAM,GAEXT,KAAKU,MAAQ,KAEbV,KAAKW,UAAY,EAEjBX,KAAKY,MAAQ,CACf,yhBC3CA,MAAAC,EAAAC,EAAA,OACAC,EAAAD,EAAA,KACAE,EAAAF,EAAA,OACAG,EAAAH,EAAA,OAwBAhB,EAAAA,uBAAA,SACIoB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGiC,IAFjCC,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,GAAAD,UAAA,SAAAE,EAC/BE,EAASJ,UAAAC,OAAA,SAAAC,IAAAF,UAAA,IAAAA,UAAA,IAAGZ,EAAAiB,+DAEZ,MAAOC,EAAgBC,IAAW,EAAApB,EAAAqB,YAAWb,EAAOI,GAE9CU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAtB,EAAAuB,yCACIpB,EACAC,EACAC,EACAY,EACAV,EACAC,EACAC,EACAC,EACAK,IAIR,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,KAgBAjC,EAAAA,+BAAA,SACIoB,EACAC,EACAE,EACAC,EACAoB,GAGiC,IAFjCf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,+DAEZ,MAAOU,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAtB,EAAA2B,iDAAgDvB,EAAMC,EAAaqB,EAAoBR,EAASH,IAGpG,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,KAiBAjC,EAAAA,mCAAA,SACIoB,EACAC,EACAE,EACAC,EACAoB,EACAf,EACAkB,EACAd,GACiC,IAAjCC,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,+DAEZ,MAAOU,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAtB,EAAA6B,qDACIzB,EACAC,EACAqB,EACAR,EACAU,EACAb,IAIR,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,KAcAjC,EAAAA,4BAAA,SACIoB,EACAC,EACAE,EACAwB,EACAd,GACiC,IAAjCC,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,+DAEZ,MAAMI,GAAc,IAAIxB,EAAAyB,aAAcC,KAAI,EAAAtB,EAAA8B,8CAA6C1B,EAAMwB,EAASb,IAEtG,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,GAAQY,EAC7E,iCC9JAiB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQqD,sBAAmB,EAC3B,MAAMC,EAAiBtC,EAAQ,OACzBuC,EAAavC,EAAQ,OACrBwC,EAAcxC,EAAQ,OACtBD,EAAYC,EAAQ,OACpByC,EAAWzC,EAAQ,OACzB,MAAMqC,UAAyBC,EAAeI,aAU1CC,gBAAAA,CAAiBC,EAAQC,GACrB,GAAsB,MAAlBD,EAAOE,QACP,MAAM,IAAIC,MAAM,eACpB,MAAMC,EAAOT,EAAW,UAAUU,OAAOJ,GAAMK,SACzCC,EAAYX,EAAYY,KAAKC,SAASL,EAAMJ,EAAOE,QAAQQ,WACjE,OAAOC,QAAQC,QAAQf,EAASgB,OAAOC,KAAKP,GAAWQ,SAAS,OACpE,CASAC,oBAAAA,CAAqBf,EAAMM,EAAWU,GAClC,MAAMC,EAAOvB,EAAW,UAAUU,OAAOJ,GAAMK,SAC/C,OAAOK,QAAQC,QAAQhB,EAAYY,KAAKC,SAASU,OAAOD,EAAMrB,EAASgB,OAAOC,KAAKP,EAAW,OAAQ,IAAIpD,EAAUiE,UAAUH,GAAWI,YAC7I,EAEJjF,EAAQqD,iBAAmBA,8BCrC3BH,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQkF,qCAAkC,EAC1C,MAAMC,EAASnE,EAAQ,OACjBoE,EAAapE,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClBsE,EAAyBtE,EAAQ,OACjCuE,EAAevE,EAAQ,OACvByC,EAAWzC,EAAQ,QACV,EAAIqE,EAAQG,WAAW,qCACtC,SAASC,EAAoBC,GACzB,MAAMC,EAAkBC,OAAOF,EAAMG,SAAW,KAChD,GAAIF,EAAkB,GAClB,MAAM,IAAI5B,MAAM,qBAEpB,OAAQ4B,GAAmB,IAAoB,YAD7BC,OAAOF,EAAMI,SAAS,GAAGC,SAE/C,CACA,MAAMb,UAAwCI,EAAuBU,qBACjEC,mBAAAA,CAAoBpC,GAChB,MAAO,CACHuB,EAAWN,KAAKoB,8BAA8B,EAAC,EAAIb,EAAQc,UAAUtC,EAAKuC,QAAQ,EAAIf,EAAQc,UAAUtC,EAAKnC,SAAS,EAAI2D,EAAQgB,mBAAmBxC,EAAKtD,aACvJ+F,MAAML,oBAAoBpC,GAErC,CACA,gBAAM0C,CAAW3C,EAAQ4C,EAAUC,EAAaC,GAC5C,IAAKF,EAASG,eAAezG,KAAK0G,SAC9B,MAAM,IAAI7C,MAAM,yBACpB,MAAM8C,EAActB,EAAa/C,YAAYsE,QAAQrD,EAASgB,OAAOC,KAAK+B,EAAYM,GAAGC,IAAK,QACxFC,EAAMJ,EAAYK,UAAUT,EAAYU,OACxC,YAAEC,EAAW,QAAEC,SAAkBnH,KAAKoH,YAAY1D,EAAQ4C,EAAUC,EAAa,CACnFlG,OAAQkD,EAASgB,OAAOC,KAAKuC,EAAIM,QACjC7F,OAAQuF,EAAIvF,OACZ0E,MAAOX,EAAoBoB,KAI/B,OAFAQ,EAAQG,SAAQ,EAAInC,EAAQoC,mBAAmBhE,EAASgB,OAAOC,KAAK+B,EAAYM,GAAGC,IAAK,SACxFK,EAAQG,KAAK5B,OAAOa,EAAYU,OACzB,CAAEC,cAAaC,UAC1B,CACAK,MAAAA,CAAO7D,GACH,OAAOqB,EAAgCyC,GAC3C,CACAC,OAAAA,GACI,OAAO1C,EAAgC2C,IAC3C,EAEJ7H,EAAQkF,gCAAkCA,EAC1CA,EAAgC2C,KAAO1C,EAAO2C,cAAcC,aAC5D7C,EAAgCyC,IAAM,CAAEK,GAAI,iCC9C5C9E,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQiI,2BAAwB,EAChC,MAAMC,EAAsBlH,EAAQ,OACpC,MAAMiH,UAA8BC,EAAoBC,kBACpD,gBAAMC,CAAWC,EAAOC,GACpB,MAAMC,EAAQF,EAAMG,OAAOC,MAAM,KAO3BC,SANenE,QAAQoE,IAAIJ,EAAMK,KAAIC,IACvC,IAAIC,EAASD,EAAKE,WAAW,KAG7B,OAFID,IACAD,EAAOA,EAAKG,UAAU,IACnB9I,KAAK+I,UAAUJ,EAAMP,GAAaY,MAAK9F,GAAS0F,EAAS,EAAI1F,EAAQA,GAAM,MAEjE+F,QAAO,CAACC,EAAeC,IAAiBD,EAAgBC,GAAc,GAC3F,OAAOzD,OAAO0D,KAAKC,MAAc,KAARb,GAC7B,EAEJ1I,EAAQiI,sBAAwBA,mGChBhC,MAAAlH,EAAAC,EAAA,OAGAhB,EAAAA,WAAA,SAA2BwJ,EAAsC3H,GAC7D,OAAO2H,aAA4BzI,EAAAiE,UAC7B,CAACwE,EAAkB3H,GACnB,CAAC2H,EAAiB3E,UAAW,CAAC2E,GACxC,+ECGAxJ,EAAAA,QAAAyJ,EAeAzJ,EAAAA,YAAA,SAA4B0J,EAAoBC,GAC9C,MAAMC,EAAU9E,IAAyB,EAAA+E,EAAAC,aAAY,IAAKJ,KAAaD,EAAQ3E,KAC/E,MAAO,IAAK8E,EAAOD,GAAUC,SAC/B,EAxBA,MAAAG,EAAA/I,EAAA,OACAgJ,EAAAhJ,EAAA,OAEA6I,EAAA7I,EAAA,MAGA,SAAgByI,EAAQ3E,GAKtB,MAAO,CACLA,OACAmF,KAAM,SAACC,GAAe,QAAAC,EAAArI,UAAAC,OAAKqI,EAAkB,IAAAC,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAlBF,EAAkBE,EAAA,GAAAxI,UAAAwI,GAAA,OAAK,EAAAP,EAAAE,MAAKnF,EAAMoF,GAAK,EAAAF,EAAAO,gBAAeH,GAAM,EACvFI,YAAAR,EAAAQ,YAEJ,iBCrBA,MAAMC,EAAOzJ,EAAQ,OAErB,SAAS0J,EAAa7G,GACpB3D,KAAKyK,KAAOF,EAAKG,QACjB1K,KAAK2D,KAAOA,EAAKc,UACnB,CAEA+F,EAAYG,cAAgB,SAAwB9I,GAClD,OAAO,GAAKuH,KAAKC,MAAMxH,EAAS,IAAOA,EAAS,EAAOA,EAAS,EAAK,EAAI,EAAK,EAChF,EAEA2I,EAAYI,UAAUC,UAAY,WAChC,OAAO7K,KAAK2D,KAAK9B,MACnB,EAEA2I,EAAYI,UAAUD,cAAgB,WACpC,OAAOH,EAAYG,cAAc3K,KAAK2D,KAAK9B,OAC7C,EAEA2I,EAAYI,UAAUE,MAAQ,SAAgBC,GAC5C,IAAIC,EAAGC,EAAO/H,EAId,IAAK8H,EAAI,EAAGA,EAAI,GAAKhL,KAAK2D,KAAK9B,OAAQmJ,GAAK,EAC1CC,EAAQjL,KAAK2D,KAAKuH,OAAOF,EAAG,GAC5B9H,EAAQiI,SAASF,EAAO,IAExBF,EAAUK,IAAIlI,EAAO,IAKvB,MAAMmI,EAAerL,KAAK2D,KAAK9B,OAASmJ,EACpCK,EAAe,IACjBJ,EAAQjL,KAAK2D,KAAKuH,OAAOF,GACzB9H,EAAQiI,SAASF,EAAO,IAExBF,EAAUK,IAAIlI,EAAsB,EAAfmI,EAAmB,GAE5C,EAEAtL,EAAOD,QAAU0K,+BCzCjBxH,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQwL,wBAAqB,EAC7B,MAAMC,EAAezK,EAAQ,MACvB0K,EAAiB1K,EAAQ,MACzB2K,EAAkB3K,EAAQ,OA8BhChB,EAAQwL,mBA7BR,SAA4BI,EAAMhI,GAC9B,OAAO,IAAIiI,MAAMD,EAAM,CACnBE,IAAKA,CAACC,EAAQC,EAAMC,IAEH,WAATD,IACIJ,aAAgBH,EAAaS,YAAcN,aAAgBF,EAAeS,cACnE,CAAC7D,EAAa8D,IAAeR,EAAKS,OAAOzI,EAAQ0E,EAAa8D,GAGhE,WAATJ,GACIJ,aAAgBH,EAAaS,WACrB5D,GAAgBsD,EAAKU,OAAO1I,EAAQ0E,GAGvC,UAAT0D,GACIJ,aAAgBF,EAAeS,aACvB7D,GAAgBsD,EAAKW,MAAM3I,EAAQ0E,GAGtC,mBAAT0D,GACIJ,aAAgBD,EAAgBa,cACzB,CAAClE,EAAa8D,IAAeR,EAAKa,eAAe7I,EAAQ0E,EAAa8D,GAI9EM,QAAQZ,IAAIC,EAAQC,EAAMC,IAG7C,6BCjCA/I,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ2M,mBAAqB3M,EAAQ4M,wBAAqB,EAc1D5M,EAAQ4M,mBAAqB,CACzBC,OAAQ,SACRC,OAAQ,SACRC,SAAU,mBAEd7J,OAAO8J,OAAOhN,EAAQ4M,oBACtB,MAAMK,EAAc,4vCAYfC,QAAQ,eAAgB,IACxBA,QAAQ,MAAO,IACfC,OACLnN,EAAQ2M,mBAAqB,IAAIS,OAAO,IAAIH,iCCpC5C/J,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQqN,cAAW,EACnBrN,EAAQqN,SAAW,CACf,CACI,KAAQ,OACR,KAAQ,gBACR,eAAkB,iDAEtB,CACI,KAAQ,SACR,KAAQ,sBACR,QAAW,CACP,CACI,KAAQ,MACR,KAAQ,uBAEZ,CACI,KAAQ,OACR,KAAQ,yBAIpB,CACI,KAAQ,YACR,KAAQ,gDACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,wBAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,wBAGhB,QAAW,GACX,iBAAoB,cAIhC,CACI,KAAQ,OACR,KAAQ,yBACR,eAAkB,sDAEtB,CACI,KAAQ,YACR,KAAQ,qDACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,mBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,wBAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,mBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,wBAGhB,QAAW,GACX,iBAAoB,cAIhC,CACI,KAAQ,OACR,KAAQ,cACR,eAAkB,+CAEtB,CACI,KAAQ,SACR,KAAQ,qCACR,QAAW,CACP,CACI,KAAQ,WACR,KAAQ,0CAIpB,CACI,KAAQ,SACR,KAAQ,yCACR,QAAW,CACP,CACI,KAAQ,WACR,KAAQ,yCAEZ,CACI,KAAQ,gBACR,KAAQ,wCAIpB,CACI,KAAQ,OACR,KAAQ,iEACR,SAAY,CACR,CACI,KAAQ,OACR,KAAQ,0CAEZ,CACI,KAAQ,OACR,KAAQ,QAIpB,CACI,KAAQ,OACR,KAAQ,aACR,SAAY,CACR,CACI,KAAQ,QACR,KAAQ,MAEZ,CACI,KAAQ,OACR,KAAQ,QAIpB,CACI,KAAQ,SACR,KAAQ,oDACR,QAAW,CACP,CACI,KAAQ,YACR,KAAQ,yCAEZ,CACI,KAAQ,WACR,KAAQ,kEAEZ,CACI,KAAQ,QACR,KAAQ,gBAIpB,CACI,KAAQ,YACR,KAAQ,8CACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,oBACR,OAAU,GACV,QAAW,CACP,CACI,KAAQ,uBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,sBACR,KAAQ,sDAGhB,QAAW,CACP,CACI,KAAQ,uBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,yBACR,OAAU,CACN,CACI,KAAQ,sBACR,KAAQ,sDAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,wBACR,OAAU,CACN,CACI,KAAQ,sBACR,KAAQ,sDAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,aACR,OAAU,CACN,CACI,KAAQ,sBACR,KAAQ,sDAGhB,QAAW,GACX,iBAAoB,cAIhC,CACI,KAAQ,OACR,KAAQ,4BACR,eAAkB,iDAEtB,CACI,KAAQ,YACR,KAAQ,gDACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,WACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,iBAEZ,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,kBAGhB,QAAW,CACP,CACI,KAAQ,kBAGhB,iBAAoB,UAIhC,CACI,KAAQ,OACR,KAAQ,YACR,eAAkB,uCAEtB,CACI,KAAQ,YACR,KAAQ,sCACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,sBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,sBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,0BACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,4BACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,0BACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,WACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,kBAGhB,QAAW,GACX,iBAAoB,cAIhC,CACI,KAAQ,OACR,KAAQ,YACR,eAAkB,iDAEtB,CACI,KAAQ,YACR,KAAQ,gDACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,OACR,OAAU,GACV,QAAW,CACP,CACI,KAAQ,kBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,SACR,OAAU,GACV,QAAW,CACP,CACI,KAAQ,kBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,WACR,OAAU,GACV,QAAW,CACP,CACI,KAAQ,sBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,eACR,OAAU,GACV,QAAW,CACP,CACI,KAAQ,wBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,aACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,CACP,CACI,KAAQ,wBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,YACR,OAAU,CACN,CACI,KAAQ,QACR,KAAQ,qDAEZ,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,CACP,CACI,KAAQ,wBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,WACR,OAAU,CACN,CACI,KAAQ,YACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,wBAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,gBACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,qDAEZ,CACI,KAAQ,YACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,wBAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,UACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,wBAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,cAIhC,CACI,KAAQ,OACR,KAAQ,qBACR,eAAkB,0DAEtB,CACI,KAAQ,YACR,KAAQ,yDACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,cACR,OAAU,GACV,QAAW,CACP,CACI,KAAQ,wBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,YACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,sDAGhB,QAAW,CACP,CACI,KAAQ,wBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,eACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,qDAEZ,CACI,KAAQ,YACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,wBAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,cAIhC,CACI,KAAQ,cACR,KAAQ,cACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,iBAEZ,CACI,KAAQ,SACR,KAAQ,iBAEZ,CACI,KAAQ,WACR,KAAQ,qBAEZ,CACI,KAAQ,iBACR,KAAQ,uBAEZ,CACI,KAAQ,YACR,KAAQ,qDAEZ,CACI,KAAQ,mBACR,KAAQ,qDAEZ,CACI,KAAQ,+BACR,KAAQ,qDAEZ,CACI,KAAQ,gBACR,KAAQ,wBAIpB,CACI,KAAQ,WACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,cACR,KAAQ,wBAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,mBACR,KAAQ,wBAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,aACR,KAAQ,wBAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,oBACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,kBACR,KAAQ,wBAGhB,QAAW,CACP,CACI,KAAQ,eAGhB,iBAAoB,YAExB,CACI,KAAQ,QACR,KAAQ,0DACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,OACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,KACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,QACR,KAAQ,sBACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,0DACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,UACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,QACR,KAAQ,sBACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,qDACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,sBACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,uDACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,sBACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,wDACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,sBACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,yDACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,YACR,KAAQ,wCACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,6CACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,OACR,KAAQ,gBACR,KAAQ,QAEZ,CACI,KAAQ,UACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,SACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,6CACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,OACR,KAAQ,gBACR,KAAQ,QAEZ,CACI,KAAQ,UACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,SACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,kDACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,OACR,KAAQ,gBACR,KAAQ,QAEZ,CACI,KAAQ,sBACR,KAAQ,gBACR,KAAQ,QAEZ,CACI,KAAQ,iBACR,KAAQ,gBACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,6CACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,gBACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,WACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,+CACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,kBACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,aACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,6CACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,gBACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,WACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,+CACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,kBACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,aACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,uDACR,KAAQ,OACR,SAAY,CACR,CACI,KAAQ,WACR,KAAQ,0DACR,KAAQ,UAEZ,CACI,KAAQ,WACR,KAAQ,0DACR,KAAQ,UAEZ,CACI,KAAQ,sBACR,KAAQ,qDACR,KAAQ,UAEZ,CACI,KAAQ,wBACR,KAAQ,uDACR,KAAQ,UAEZ,CACI,KAAQ,yBACR,KAAQ,wDACR,KAAQ,UAEZ,CACI,KAAQ,0BACR,KAAQ,yDACR,KAAQ,UAEZ,CACI,KAAQ,cACR,KAAQ,6CACR,KAAQ,UAEZ,CACI,KAAQ,cACR,KAAQ,6CACR,KAAQ,UAEZ,CACI,KAAQ,mBACR,KAAQ,kDACR,KAAQ,UAEZ,CACI,KAAQ,uBACR,KAAQ,6CACR,KAAQ,UAEZ,CACI,KAAQ,yBACR,KAAQ,+CACR,KAAQ,UAEZ,CACI,KAAQ,uBACR,KAAQ,6CACR,KAAQ,UAEZ,CACI,KAAQ,yBACR,KAAQ,+CACR,KAAQ,0CClgCxBnK,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQsN,cAgBR,SAAuBC,EAAQC,GAC3B,MAAMC,GAAS,EAAIC,EAAkBC,iBAAiBJ,EAAQ,CAC1DC,sBAAuBA,IAE3B,IAAKC,EACD,OAEJ,GAAIA,GAAUF,EACV,MAAO,CAACA,GAGY,KAApBA,EAAOK,OAAO,KACdL,EAASA,EAAOK,MAAM,GAAI,IAE9B,MACMC,EADSN,EAAOK,MAAM,IAAKH,EAAO1L,OAAS,IAC5B0G,MAAM,KAAKqF,UAChC,IAAIC,EAAMN,EACV,MAAMO,EAAe,CAACD,GACtB,KAAOF,EAAM9L,QAAQ,CAGjBgM,EAAM,GADOF,EAAMI,WACFF,IACjBC,EAAaxG,KAAKuG,EACtB,CACA,OAAOC,CACX,EAxCA,MAAMN,EAAoB1M,EAAQ,kCCFlCkC,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQkO,8BAA2B,EAoDnClO,EAAQkO,yBAnDR,MACIC,WAAAA,CAAYC,EAAgBC,GACxBnO,KAAKoO,UAAY,CAAC,EAClBpO,KAAKqO,QAAUH,EACflO,KAAKmO,OAASA,CAClB,CACA,mBAAMG,CAAcH,GAChB,MAAMI,QAAcvO,KAAKqO,QAAQG,MAAM,CAAC,CAAC,CAAExE,IAAK,aAAc9G,MAAOiL,EAAOzF,KAAI+F,GAASA,EAAMC,iBAAkBC,IAC7G,MAAMC,EAAM5O,KAAKoO,UAAUO,EAAIhH,MAC/B,OAAW,MAAPiH,EACO,KACJ,IAAIA,EAAIC,QAAQF,EAAI,IAEzBG,EAAW,CAAC,EAClBP,EAAMQ,SAAQrD,GAAQoD,EAASpD,EAAKsD,iBAAmBtD,IACvD,IAAK,IAAI+C,KAASN,EAAQ,CACtB,MAAMzC,EAAOoD,EAASL,EAAMC,YAC5B,GAAY,MAARhD,EACA,SACJ,MAAMkD,EAAM5O,KAAKoO,UAAU1C,EAAKhE,WACrB,MAAPkH,SAEEA,EAAIK,SAASR,EAAO/C,EAC9B,CACJ,CACA,WAAMwD,GACmB,MAAjBlP,KAAKiP,iBAEHjP,KAAKqO,QAAQc,aACbnP,KAAKmO,OAAOgB,OAClBnP,KAAKmO,OAAOiB,iBAAiBpP,KAAKiP,SAAWI,gBACnCrP,KAAKsO,cAAcH,IAClB,IAEf,CACAmB,IAAAA,GACItP,KAAKmO,OAAOoB,mBAAmBvP,KAAKiP,SACxC,CACAG,gBAAAA,CAAiBzH,EAAMsH,EAAUJ,GAC7B7O,KAAKoO,UAAUzG,GAAQ,CACnBsH,WACAJ,UAER,CACAU,kBAAAA,CAAmB5H,GACf,OAAI3H,KAAKoO,UAAUzG,YAEZ3H,KAAKoO,UAAUzG,IACf,EACX,2gBCpDJ6H,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,yBCLA,OAAC,WACC,aAkDA,IAAI2P,EACFC,EAAY,6CACZC,EAAWvG,KAAKwG,KAChBC,EAAYzG,KAAKC,MAEjByG,EAAiB,qBACjBC,EAAgBD,EAAiB,yDAEjCE,EAAO,KACPC,EAAW,GACXC,EAAmB,iBAEnBC,EAAW,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAC7EC,EAAY,IAKZC,EAAM,IAqpFR,SAASC,EAASC,GAChB,IAAIvF,EAAQ,EAAJuF,EACR,OAAOA,EAAI,GAAKA,IAAMvF,EAAIA,EAAIA,EAAI,CACpC,CAIA,SAASwF,EAAcC,GAMrB,IALA,IAAIC,EAAGC,EACL3F,EAAI,EACJ4F,EAAIH,EAAE5O,OACNgP,EAAIJ,EAAE,GAAK,GAENzF,EAAI4F,GAAI,CAGb,IAFAF,EAAID,EAAEzF,KAAO,GACb2F,EAAIV,EAAWS,EAAE7O,OACV8O,IAAKD,EAAI,IAAMA,GACtBG,GAAKH,CACP,CAGA,IAAKE,EAAIC,EAAEhP,OAA8B,KAAtBgP,EAAEC,aAAaF,KAElC,OAAOC,EAAEnD,MAAM,EAAGkD,EAAI,GAAK,EAC7B,CAIA,SAASG,EAAQC,EAAGC,GAClB,IAAIR,EAAGS,EACLC,EAAKH,EAAEI,EACPC,EAAKJ,EAAEG,EACPpG,EAAIgG,EAAEN,EACNE,EAAIK,EAAEP,EACNY,EAAIN,EAAEO,EACNC,EAAIP,EAAEM,EAGR,IAAKvG,IAAM4F,EAAG,OAAO,KAMrB,GAJAH,EAAIU,IAAOA,EAAG,GACdD,EAAIG,IAAOA,EAAG,GAGVZ,GAAKS,EAAG,OAAOT,EAAIS,EAAI,GAAKN,EAAI5F,EAGpC,GAAIA,GAAK4F,EAAG,OAAO5F,EAMnB,GAJAyF,EAAIzF,EAAI,EACRkG,EAAII,GAAKE,GAGJL,IAAOE,EAAI,OAAOH,EAAI,GAAKC,EAAKV,EAAI,GAAK,EAG9C,IAAKS,EAAG,OAAOI,EAAIE,EAAIf,EAAI,GAAK,EAKhC,IAHAG,GAAKU,EAAIH,EAAGtP,SAAW2P,EAAIH,EAAGxP,QAAUyP,EAAIE,EAGvCxG,EAAI,EAAGA,EAAI4F,EAAG5F,IAAK,GAAImG,EAAGnG,IAAMqG,EAAGrG,GAAI,OAAOmG,EAAGnG,GAAKqG,EAAGrG,GAAKyF,EAAI,GAAK,EAG5E,OAAOa,GAAKE,EAAI,EAAIF,EAAIE,EAAIf,EAAI,GAAK,CACvC,CAMA,SAASgB,EAASlB,EAAGmB,EAAKC,EAAKC,GAC7B,GAAIrB,EAAImB,GAAOnB,EAAIoB,GAAOpB,IAAMV,EAAUU,GACxC,MAAM1M,MACJiM,GAAkB8B,GAAQ,aAA2B,iBAALrB,EAC7CA,EAAImB,GAAOnB,EAAIoB,EAAM,kBAAoB,oBACzC,6BAA+BE,OAAOtB,GAE/C,CAIA,SAASuB,EAAMvB,GACb,IAAIe,EAAIf,EAAEa,EAAEvP,OAAS,EACrB,OAAOyO,EAASC,EAAEgB,EAAItB,IAAaqB,GAAKf,EAAEa,EAAEE,GAAK,GAAK,CACxD,CAGA,SAASS,EAAcC,EAAKT,GAC1B,OAAQS,EAAInQ,OAAS,EAAImQ,EAAIC,OAAO,GAAK,IAAMD,EAAItE,MAAM,GAAKsE,IAC5DT,EAAI,EAAI,IAAM,MAAQA,CAC1B,CAGA,SAASW,EAAaF,EAAKT,EAAGZ,GAC5B,IAAIwB,EAAKC,EAGT,GAAIb,EAAI,EAAG,CAGT,IAAKa,EAAKzB,EAAI,MAAOY,EAAGa,GAAMzB,GAC9BqB,EAAMI,EAAKJ,CAGb,MAIE,KAAMT,GAHNY,EAAMH,EAAInQ,QAGK,CACb,IAAKuQ,EAAKzB,EAAGY,GAAKY,IAAOZ,EAAGa,GAAMzB,GAClCqB,GAAOI,CACT,MAAWb,EAAIY,IACbH,EAAMA,EAAItE,MAAM,EAAG6D,GAAK,IAAMS,EAAItE,MAAM6D,IAI5C,OAAOS,CACT,CAMAvC,EA3wFA,SAAS4C,EAAMC,GACb,IAAIC,EAAKC,EAAaC,EACpBC,EAAIjD,EAAU7E,UAAY,CAAEqD,YAAawB,EAAWhL,SAAU,KAAMkO,QAAS,MAC7EC,EAAM,IAAInD,EAAU,GAUpBoD,EAAiB,GAajBC,EAAgB,EAMhBC,GAAc,EAIdC,EAAa,GAMbC,GAAW,IAKXC,EAAU,IAGVC,GAAS,EAkBTC,EAAc,EAIdC,EAAgB,EAGhBC,EAAS,CACPC,OAAQ,GACRC,UAAW,EACXC,mBAAoB,EACpBC,eAAgB,IAChBC,iBAAkB,IAClBC,kBAAmB,EACnBC,uBAAwB,OACxBC,OAAQ,IAMVC,EAAW,uCACXC,GAAiC,EAgBnC,SAASvE,EAAUwE,EAAG/C,GACpB,IAAIgD,EAAU9C,EAAG+C,EAAa5C,EAAGvG,EAAGoJ,EAAOjC,EAAKH,EAC9ChB,EAAIhR,KAGN,KAAMgR,aAAavB,GAAY,OAAO,IAAIA,EAAUwE,EAAG/C,GAEvD,GAAS,MAALA,EAAW,CAEb,GAAI+C,IAAwB,IAAnBA,EAAEI,aAYT,OAXArD,EAAEN,EAAIuD,EAAEvD,QAEHuD,EAAE7C,GAAK6C,EAAE1C,EAAI2B,EAChBlC,EAAEI,EAAIJ,EAAEO,EAAI,KACH0C,EAAE1C,EAAI0B,EACfjC,EAAEI,EAAI,CAACJ,EAAEO,EAAI,IAEbP,EAAEO,EAAI0C,EAAE1C,EACRP,EAAEI,EAAI6C,EAAE7C,EAAE1D,UAMd,IAAK0G,EAAoB,iBAALH,IAAsB,EAAJA,GAAS,EAAG,CAMhD,GAHAjD,EAAEN,EAAI,EAAIuD,EAAI,GAAKA,GAAKA,GAAI,GAAK,EAG7BA,MAAQA,EAAG,CACb,IAAK1C,EAAI,EAAGvG,EAAIiJ,EAAGjJ,GAAK,GAAIA,GAAK,GAAIuG,KASrC,YAPIA,EAAI2B,EACNlC,EAAEI,EAAIJ,EAAEO,EAAI,MAEZP,EAAEO,EAAIA,EACNP,EAAEI,EAAI,CAAC6C,IAIX,CAEAjC,EAAMH,OAAOoC,EACf,KAAO,CAEL,IAAKvE,EAAU4E,KAAKtC,EAAMH,OAAOoC,IAAK,OAAOxB,EAAazB,EAAGgB,EAAKoC,GAElEpD,EAAEN,EAAyB,IAArBsB,EAAIlB,WAAW,IAAYkB,EAAMA,EAAItE,MAAM,IAAK,GAAK,CAC7D,EAGK6D,EAAIS,EAAIuC,QAAQ,OAAS,IAAGvC,EAAMA,EAAIhF,QAAQ,IAAK,MAGnDhC,EAAIgH,EAAIwC,OAAO,OAAS,GAGvBjD,EAAI,IAAGA,EAAIvG,GACfuG,IAAMS,EAAItE,MAAM1C,EAAI,GACpBgH,EAAMA,EAAIlJ,UAAU,EAAGkC,IACduG,EAAI,IAGbA,EAAIS,EAAInQ,OAGZ,KAAO,CAOL,GAJA4P,EAASP,EAAG,EAAG6C,EAASlS,OAAQ,QAIvB,IAALqP,GAAW8C,EAEb,OAAOS,EADPzD,EAAI,IAAIvB,EAAUwE,GACFpB,EAAiB7B,EAAEO,EAAI,EAAGuB,GAK5C,GAFAd,EAAMH,OAAOoC,GAETG,EAAoB,iBAALH,EAAe,CAGhC,GAAQ,EAAJA,GAAS,EAAG,OAAOxB,EAAazB,EAAGgB,EAAKoC,EAAOlD,GAKnD,GAHAF,EAAEN,EAAI,EAAIuD,EAAI,GAAKjC,EAAMA,EAAItE,MAAM,IAAK,GAAK,EAGzC+B,EAAUiF,OAAS1C,EAAIhF,QAAQ,YAAa,IAAInL,OAAS,GAC3D,MAAMgC,MACJkM,EAAgBkE,EAEtB,MACEjD,EAAEN,EAA0B,KAAtBsB,EAAIlB,WAAW,IAAakB,EAAMA,EAAItE,MAAM,IAAK,GAAK,EAQ9D,IALAwG,EAAWH,EAASrG,MAAM,EAAGwD,GAC7BK,EAAIvG,EAAI,EAIHmH,EAAMH,EAAInQ,OAAQmJ,EAAImH,EAAKnH,IAC9B,GAAIkJ,EAASK,QAAQnD,EAAIY,EAAIC,OAAOjH,IAAM,EAAG,CAC3C,GAAS,KAALoG,GAGF,GAAIpG,EAAIuG,EAAG,CACTA,EAAIY,EACJ,QACF,OACK,IAAKgC,IAGNnC,GAAOA,EAAI2C,gBAAkB3C,EAAMA,EAAI4C,gBACvC5C,GAAOA,EAAI4C,gBAAkB5C,EAAMA,EAAI2C,gBAAgB,CACzDR,GAAc,EACdnJ,GAAK,EACLuG,EAAI,EACJ,QACF,CAGF,OAAOkB,EAAazB,EAAGa,OAAOoC,GAAIG,EAAOlD,EAC3C,CAIFkD,GAAQ,GAIH7C,GAHLS,EAAMQ,EAAYR,EAAKd,EAAG,GAAIF,EAAEN,IAGnB6D,QAAQ,OAAS,EAAGvC,EAAMA,EAAIhF,QAAQ,IAAK,IACnDuE,EAAIS,EAAInQ,MACf,CAGA,IAAKmJ,EAAI,EAAyB,KAAtBgH,EAAIlB,WAAW9F,GAAWA,KAGtC,IAAKmH,EAAMH,EAAInQ,OAAkC,KAA1BmQ,EAAIlB,aAAaqB,KAExC,GAAIH,EAAMA,EAAItE,MAAM1C,IAAKmH,GAAM,CAI7B,GAHAA,GAAOnH,EAGHoJ,GAAS3E,EAAUiF,OACrBvC,EAAM,KAAO8B,EAAI/D,GAAoB+D,IAAMpE,EAAUoE,IACnD,MAAMpQ,MACJkM,EAAiBiB,EAAEN,EAAIuD,GAI7B,IAAK1C,EAAIA,EAAIvG,EAAI,GAAKkI,EAGpBlC,EAAEI,EAAIJ,EAAEO,EAAI,UAGP,GAAIA,EAAI0B,EAGbjC,EAAEI,EAAI,CAACJ,EAAEO,EAAI,OACR,CAWL,GAVAP,EAAEO,EAAIA,EACNP,EAAEI,EAAI,GAMNpG,GAAKuG,EAAI,GAAKtB,EACVsB,EAAI,IAAGvG,GAAKiF,GAEZjF,EAAImH,EAAK,CAGX,IAFInH,GAAGgG,EAAEI,EAAE9J,MAAM0K,EAAItE,MAAM,EAAG1C,IAEzBmH,GAAOlC,EAAUjF,EAAImH,GACxBnB,EAAEI,EAAE9J,MAAM0K,EAAItE,MAAM1C,EAAGA,GAAKiF,IAG9BjF,EAAIiF,GAAY+B,EAAMA,EAAItE,MAAM1C,IAAInJ,MACtC,MACEmJ,GAAKmH,EAGP,KAAOnH,IAAKgH,GAAO,KACnBhB,EAAEI,EAAE9J,MAAM0K,EACZ,CACF,MAGEhB,EAAEI,EAAI,CAACJ,EAAEO,EAAI,EAEjB,CA21BA,SAASsD,EAAOtE,EAAGvF,EAAG8J,EAAIC,GACxB,IAAIC,EAAIzD,EAAG0D,EAAI9C,EAAKH,EAKpB,GAHU,MAAN8C,EAAYA,EAAKhC,EAChBrB,EAASqD,EAAI,EAAG,IAEhBvE,EAAEa,EAAG,OAAOb,EAAE9L,WAKnB,GAHAuQ,EAAKzE,EAAEa,EAAE,GACT6D,EAAK1E,EAAEgB,EAEE,MAALvG,EACFgH,EAAMxB,EAAcD,EAAEa,GACtBY,EAAY,GAAN+C,GAAiB,GAANA,IAAYE,GAAMlC,GAAckC,GAAMjC,GACpDjB,EAAcC,EAAKiD,GACnB/C,EAAaF,EAAKiD,EAAI,UAezB,GAVA1D,GAHAhB,EAAIkE,EAAM,IAAIhF,EAAUc,GAAIvF,EAAG8J,IAGzBvD,EAGNY,GADAH,EAAMxB,EAAcD,EAAEa,IACZvP,OAOA,GAANkT,GAAiB,GAANA,IAAY/J,GAAKuG,GAAKA,GAAKwB,GAAa,CAGrD,KAAOZ,EAAMnH,EAAGgH,GAAO,IAAKG,KAC5BH,EAAMD,EAAcC,EAAKT,EAG3B,MAKE,GAJAvG,GAAKiK,EACLjD,EAAME,EAAaF,EAAKT,EAAG,KAGvBA,EAAI,EAAIY,GACV,KAAMnH,EAAI,EAAG,IAAKgH,GAAO,IAAKhH,IAAKgH,GAAO,WAG1C,IADAhH,GAAKuG,EAAIY,GACD,EAEN,IADIZ,EAAI,GAAKY,IAAKH,GAAO,KAClBhH,IAAKgH,GAAO,KAM3B,OAAOzB,EAAEG,EAAI,GAAKsE,EAAK,IAAMhD,EAAMA,CACrC,CAKA,SAASkD,EAASC,EAAM5E,GAKtB,IAJA,IAAIe,EAAGL,EACLjG,EAAI,EACJgG,EAAI,IAAIvB,EAAU0F,EAAK,IAElBnK,EAAImK,EAAKtT,OAAQmJ,OACtBiG,EAAI,IAAIxB,EAAU0F,EAAKnK,KAChB0F,IAAMY,EAAIP,EAAQC,EAAGC,MAAQV,GAAW,IAANe,GAAWN,EAAEN,IAAMH,KAC1DS,EAAIC,GAIR,OAAOD,CACT,CAOA,SAASoE,EAAU7E,EAAGa,EAAGG,GAKvB,IAJA,IAAIvG,EAAI,EACN4F,EAAIQ,EAAEvP,QAGAuP,IAAIR,GAAIQ,EAAEiE,OAGlB,IAAKzE,EAAIQ,EAAE,GAAIR,GAAK,GAAIA,GAAK,GAAI5F,KAkBjC,OAfKuG,EAAIvG,EAAIuG,EAAItB,EAAW,GAAKiD,EAG/B3C,EAAEa,EAAIb,EAAEgB,EAAI,KAGHA,EAAI0B,EAGb1C,EAAEa,EAAI,CAACb,EAAEgB,EAAI,IAEbhB,EAAEgB,EAAIA,EACNhB,EAAEa,EAAIA,GAGDb,CACT,CAyDA,SAASkE,EAAMzD,EAAGsE,EAAIR,EAAIjE,GACxB,IAAI0E,EAAGvK,EAAG4F,EAAGU,EAAGf,EAAGiF,EAAIC,EACrBtE,EAAKH,EAAEI,EACPsE,EAASvF,EAGX,GAAIgB,EAAI,CAQNpK,EAAK,CAGH,IAAKwO,EAAI,EAAGjE,EAAIH,EAAG,GAAIG,GAAK,GAAIA,GAAK,GAAIiE,KAIzC,IAHAvK,EAAIsK,EAAKC,GAGD,EACNvK,GAAKiF,EACLW,EAAI0E,EACJ/E,EAAIY,EAAGqE,EAAK,GAGZC,EAAK5F,EAAUU,EAAImF,EAAOH,EAAI3E,EAAI,GAAK,SAIvC,IAFA4E,EAAK7F,GAAU3E,EAAI,GAAKiF,KAEdkB,EAAGtP,OAAQ,CAEnB,IAAIgP,EASF,MAAM9J,EANN,KAAOoK,EAAGtP,QAAU2T,EAAIrE,EAAG7J,KAAK,IAChCiJ,EAAIkF,EAAK,EACTF,EAAI,EAEJ3E,GADA5F,GAAKiF,GACGA,EAAW,CAIvB,KAAO,CAIL,IAHAM,EAAIe,EAAIH,EAAGqE,GAGND,EAAI,EAAGjE,GAAK,GAAIA,GAAK,GAAIiE,KAU9BE,GAHA7E,GAJA5F,GAAKiF,GAIGA,EAAWsF,GAGV,EAAI,EAAI1F,EAAUU,EAAImF,EAAOH,EAAI3E,EAAI,GAAK,GACrD,CAkBF,GAfAC,EAAIA,GAAKyE,EAAK,GAKC,MAAdnE,EAAGqE,EAAK,KAAe5E,EAAI,EAAIL,EAAIA,EAAImF,EAAOH,EAAI3E,EAAI,IAEvDC,EAAIiE,EAAK,GACLW,GAAM5E,KAAa,GAANiE,GAAWA,IAAO9D,EAAEN,EAAI,EAAI,EAAI,IAC9C+E,EAAK,GAAW,GAANA,IAAkB,GAANX,GAAWjE,GAAW,GAANiE,IAGrC9J,EAAI,EAAI4F,EAAI,EAAIL,EAAImF,EAAOH,EAAI3E,GAAK,EAAIO,EAAGqE,EAAK,IAAM,GAAM,GAC7DV,IAAO9D,EAAEN,EAAI,EAAI,EAAI,IAEpB4E,EAAK,IAAMnE,EAAG,GAiBhB,OAhBAA,EAAGtP,OAAS,EAERgP,GAGFyE,GAAMtE,EAAEO,EAAI,EAGZJ,EAAG,GAAKuE,GAAQzF,EAAWqF,EAAKrF,GAAYA,GAC5Ce,EAAEO,GAAK+D,GAAM,GAIbnE,EAAG,GAAKH,EAAEO,EAAI,EAGTP,EAkBT,GAdS,GAALhG,GACFmG,EAAGtP,OAAS2T,EACZlE,EAAI,EACJkE,MAEArE,EAAGtP,OAAS2T,EAAK,EACjBlE,EAAIoE,EAAOzF,EAAWjF,GAItBmG,EAAGqE,GAAM5E,EAAI,EAAIf,EAAUU,EAAImF,EAAOH,EAAI3E,GAAK8E,EAAO9E,IAAMU,EAAI,GAI9DT,EAEF,OAAU,CAGR,GAAU,GAAN2E,EAAS,CAGX,IAAKxK,EAAI,EAAG4F,EAAIO,EAAG,GAAIP,GAAK,GAAIA,GAAK,GAAI5F,KAEzC,IADA4F,EAAIO,EAAG,IAAMG,EACRA,EAAI,EAAGV,GAAK,GAAIA,GAAK,GAAIU,KAG1BtG,GAAKsG,IACPN,EAAEO,IACEJ,EAAG,IAAMnB,IAAMmB,EAAG,GAAK,IAG7B,KACF,CAEE,GADAA,EAAGqE,IAAOlE,EACNH,EAAGqE,IAAOxF,EAAM,MACpBmB,EAAGqE,KAAQ,EACXlE,EAAI,CAER,CAIF,IAAKtG,EAAImG,EAAGtP,OAAoB,IAAZsP,IAAKnG,GAAUmG,EAAGkE,OACxC,CAGIrE,EAAEO,EAAI2B,EACRlC,EAAEI,EAAIJ,EAAEO,EAAI,KAGHP,EAAEO,EAAI0B,IACfjC,EAAEI,EAAI,CAACJ,EAAEO,EAAI,GAEjB,CAEA,OAAOP,CACT,CAGA,SAAS2B,EAAQpC,GACf,IAAIyB,EACFT,EAAIhB,EAAEgB,EAER,OAAU,OAANA,EAAmBhB,EAAE9L,YAEzBuN,EAAMxB,EAAcD,EAAEa,GAEtBY,EAAMT,GAAKwB,GAAcxB,GAAKyB,EAC1BjB,EAAcC,EAAKT,GACnBW,EAAaF,EAAKT,EAAG,KAElBhB,EAAEG,EAAI,EAAI,IAAMsB,EAAMA,EAC/B,CA+qCA,OAn1EAvC,EAAU4C,MAAQA,EAElB5C,EAAUkG,SAAW,EACrBlG,EAAUmG,WAAa,EACvBnG,EAAUoG,WAAa,EACvBpG,EAAUqG,YAAc,EACxBrG,EAAUsG,cAAgB,EAC1BtG,EAAUuG,gBAAkB,EAC5BvG,EAAUwG,gBAAkB,EAC5BxG,EAAUyG,gBAAkB,EAC5BzG,EAAU0G,iBAAmB,EAC7B1G,EAAU2G,OAAS,EAqCnB3G,EAAU4G,OAAS5G,EAAU6G,IAAM,SAAU1H,GAC3C,IAAI2H,EAAGtC,EAEP,GAAW,MAAPrF,EAAa,CAEf,GAAkB,iBAAPA,EA4HT,MAAM/K,MACJiM,EAAiB,oBAAsBlB,GAvFzC,GAlCIA,EAAI4H,eAAeD,EAAI,oBAEzB9E,EADAwC,EAAIrF,EAAI2H,GACI,EAAGlG,EAAKkG,GACpB1D,EAAiBoB,GAKfrF,EAAI4H,eAAeD,EAAI,mBAEzB9E,EADAwC,EAAIrF,EAAI2H,GACI,EAAG,EAAGA,GAClBzD,EAAgBmB,GAOdrF,EAAI4H,eAAeD,EAAI,qBACzBtC,EAAIrF,EAAI2H,KACCtC,EAAEoB,KACT5D,EAASwC,EAAE,IAAK5D,EAAK,EAAGkG,GACxB9E,EAASwC,EAAE,GAAI,EAAG5D,EAAKkG,GACvBxD,EAAakB,EAAE,GACfjB,EAAaiB,EAAE,KAEfxC,EAASwC,GAAI5D,EAAKA,EAAKkG,GACvBxD,IAAeC,EAAaiB,EAAI,GAAKA,EAAIA,KAOzCrF,EAAI4H,eAAeD,EAAI,SAEzB,IADAtC,EAAIrF,EAAI2H,KACCtC,EAAEoB,IACT5D,EAASwC,EAAE,IAAK5D,GAAM,EAAGkG,GACzB9E,EAASwC,EAAE,GAAI,EAAG5D,EAAKkG,GACvBtD,EAAUgB,EAAE,GACZf,EAAUe,EAAE,OACP,CAEL,GADAxC,EAASwC,GAAI5D,EAAKA,EAAKkG,IACnBtC,EAGF,MAAMpQ,MACJiM,EAAiByG,EAAI,oBAAsBtC,GAH7ChB,IAAYC,EAAUe,EAAI,GAAKA,EAAIA,EAKvC,CAMF,GAAIrF,EAAI4H,eAAeD,EAAI,UAAW,CAEpC,IADAtC,EAAIrF,EAAI2H,QACItC,EAcV,MAAMpQ,MACJiM,EAAiByG,EAAI,uBAAyBtC,GAdhD,GAAIA,EAAG,CACL,GAAqB,oBAAVwC,SAAyBA,SAClCA,OAAOC,kBAAmBD,OAAOnM,YAIjC,MADA6I,GAAUc,EACJpQ,MACJiM,EAAiB,sBAJnBqD,EAASc,CAMb,MACEd,EAASc,CAMf,CAoBA,GAhBIrF,EAAI4H,eAAeD,EAAI,iBAEzB9E,EADAwC,EAAIrF,EAAI2H,GACI,EAAG,EAAGA,GAClBnD,EAAca,GAKZrF,EAAI4H,eAAeD,EAAI,mBAEzB9E,EADAwC,EAAIrF,EAAI2H,GACI,EAAGlG,EAAKkG,GACpBlD,EAAgBY,GAKdrF,EAAI4H,eAAeD,EAAI,UAAW,CAEpC,GAAgB,iBADhBtC,EAAIrF,EAAI2H,IAEH,MAAM1S,MACTiM,EAAiByG,EAAI,mBAAqBtC,GAFlBX,EAASW,CAGrC,CAIA,GAAIrF,EAAI4H,eAAeD,EAAI,YAAa,CAKtC,GAAgB,iBAJhBtC,EAAIrF,EAAI2H,KAIqB,wBAAwBjC,KAAKL,GAIxD,MAAMpQ,MACJiM,EAAiByG,EAAI,aAAetC,GAJtCD,EAAmD,cAAlBC,EAAEvG,MAAM,EAAG,IAC5CqG,EAAWE,CAKf,CAQJ,CAEA,MAAO,CACLpB,eAAgBA,EAChBC,cAAeA,EACf6D,eAAgB,CAAC5D,EAAYC,GAC7B4D,MAAO,CAAC3D,EAASC,GACjBC,OAAQA,EACRC,YAAaA,EACbC,cAAeA,EACfC,OAAQA,EACRS,SAAUA,EAEd,EAYAtE,EAAUoH,YAAc,SAAU5C,GAChC,IAAKA,IAAwB,IAAnBA,EAAEI,aAAuB,OAAO,EAC1C,IAAK5E,EAAUiF,MAAO,OAAO,EAE7B,IAAI1J,EAAGuF,EACLa,EAAI6C,EAAE7C,EACNG,EAAI0C,EAAE1C,EACNb,EAAIuD,EAAEvD,EAER3J,EAAK,GAA2B,kBAAvB,CAAC,EAAEtC,SAASqS,KAAK1F,IAExB,IAAW,IAANV,IAAkB,IAAPA,IAAaa,IAAMlB,GAAOkB,GAAKlB,GAAOkB,IAAM1B,EAAU0B,GAAI,CAGxE,GAAa,IAATH,EAAE,GAAU,CACd,GAAU,IAANG,GAAwB,IAAbH,EAAEvP,OAAc,OAAO,EACtC,MAAMkF,CACR,CAQA,IALAiE,GAAKuG,EAAI,GAAKtB,GACN,IAAGjF,GAAKiF,GAIZ4B,OAAOT,EAAE,IAAIvP,QAAUmJ,EAAG,CAE5B,IAAKA,EAAI,EAAGA,EAAIoG,EAAEvP,OAAQmJ,IAExB,IADAuF,EAAIa,EAAEpG,IACE,GAAKuF,GAAKP,GAAQO,IAAMV,EAAUU,GAAI,MAAMxJ,EAItD,GAAU,IAANwJ,EAAS,OAAO,CACtB,CACF,OAGK,GAAU,OAANa,GAAoB,OAANG,IAAqB,OAANb,GAAoB,IAANA,IAAkB,IAAPA,GAC/D,OAAO,EAGT,MAAM7M,MACHiM,EAAiB,sBAAwBmE,EAC9C,EAQAxE,EAAUsH,QAAUtH,EAAUkC,IAAM,WAClC,OAAOuD,EAAStT,WAAY,EAC9B,EAQA6N,EAAUuH,QAAUvH,EAAUiC,IAAM,WAClC,OAAOwD,EAAStT,UAAW,EAC7B,EAaA6N,EAAUwH,OAAU,WAClB,IAAIC,EAAU,iBAMVC,EAAkB/N,KAAK6N,SAAWC,EAAW,QAC9C,WAAc,OAAOrH,EAAUzG,KAAK6N,SAAWC,EAAU,EACzD,WAAc,OAA2C,SAAlB,WAAhB9N,KAAK6N,SAAwB,IACnC,QAAhB7N,KAAK6N,SAAsB,EAAI,EAEnC,OAAO,SAAUG,GACf,IAAI3G,EAAGS,EAAGK,EAAGD,EAAG2C,EACdjJ,EAAI,EACJoG,EAAI,GACJiG,EAAO,IAAI5H,EAAUmD,GAOvB,GALU,MAANwE,EAAYA,EAAKvE,EAChBpB,EAAS2F,EAAI,EAAG/G,GAErBiB,EAAI3B,EAASyH,EAAKnH,GAEdkD,EAGF,GAAIsD,OAAOC,gBAAiB,CAI1B,IAFAjG,EAAIgG,OAAOC,gBAAgB,IAAIY,YAAYhG,GAAK,IAEzCtG,EAAIsG,IAQT2C,EAAW,OAAPxD,EAAEzF,IAAgByF,EAAEzF,EAAI,KAAO,MAM1B,MACPkG,EAAIuF,OAAOC,gBAAgB,IAAIY,YAAY,IAC3C7G,EAAEzF,GAAKkG,EAAE,GACTT,EAAEzF,EAAI,GAAKkG,EAAE,KAKbE,EAAE9J,KAAK2M,EAAI,MACXjJ,GAAK,GAGTA,EAAIsG,EAAI,CAGV,KAAO,KAAImF,OAAOnM,YA2BhB,MADA6I,GAAS,EACHtP,MACJiM,EAAiB,sBAvBnB,IAFAW,EAAIgG,OAAOnM,YAAYgH,GAAK,GAErBtG,EAAIsG,IAMT2C,EAAmB,iBAAN,GAAPxD,EAAEzF,IAA0C,cAAXyF,EAAEzF,EAAI,GAC9B,WAAXyF,EAAEzF,EAAI,GAAgC,SAAXyF,EAAEzF,EAAI,IACjCyF,EAAEzF,EAAI,IAAM,KAAOyF,EAAEzF,EAAI,IAAM,GAAKyF,EAAEzF,EAAI,KAErC,KACPyL,OAAOnM,YAAY,GAAGiN,KAAK9G,EAAGzF,IAI9BoG,EAAE9J,KAAK2M,EAAI,MACXjJ,GAAK,GAGTA,EAAIsG,EAAI,CAKV,CAIF,IAAK6B,EAEH,KAAOnI,EAAIsG,IACT2C,EAAIkD,KACI,OAAM/F,EAAEpG,KAAOiJ,EAAI,MAc/B,IAVA3C,EAAIF,IAAIpG,GACRoM,GAAMnH,EAGFqB,GAAK8F,IACPnD,EAAI9D,EAASF,EAAWmH,GACxBhG,EAAEpG,GAAK6E,EAAUyB,EAAI2C,GAAKA,GAIZ,IAAT7C,EAAEpG,GAAUoG,EAAEiE,MAAOrK,KAG5B,GAAIA,EAAI,EACNoG,EAAI,CAACG,EAAI,OACJ,CAGL,IAAKA,GAAK,EAAa,IAATH,EAAE,GAAUA,EAAEoG,OAAO,EAAG,GAAIjG,GAAKtB,GAG/C,IAAKjF,EAAI,EAAGiJ,EAAI7C,EAAE,GAAI6C,GAAK,GAAIA,GAAK,GAAIjJ,KAGpCA,EAAIiF,IAAUsB,GAAKtB,EAAWjF,EACpC,CAIA,OAFAqM,EAAK9F,EAAIA,EACT8F,EAAKjG,EAAIA,EACFiG,CACT,CACF,CAnIoB,GA2IpB5H,EAAUgI,IAAM,WAId,IAHA,IAAIzM,EAAI,EACNmK,EAAOvT,UACP6V,EAAM,IAAIhI,EAAU0F,EAAK,IACpBnK,EAAImK,EAAKtT,QAAS4V,EAAMA,EAAIC,KAAKvC,EAAKnK,MAC7C,OAAOyM,CACT,EAOAjF,EAAe,WACb,IAAImF,EAAU,aAOd,SAASC,EAAU5F,EAAK6F,EAAQC,EAAS5D,GAOvC,IANA,IAAItD,EAEFmH,EADAC,EAAM,CAAC,GAEPhN,EAAI,EACJmH,EAAMH,EAAInQ,OAELmJ,EAAImH,GAAM,CACf,IAAK4F,EAAOC,EAAInW,OAAQkW,IAAQC,EAAID,IAASF,GAI7C,IAFAG,EAAI,IAAM9D,EAASK,QAAQvC,EAAIC,OAAOjH,MAEjC4F,EAAI,EAAGA,EAAIoH,EAAInW,OAAQ+O,IAEtBoH,EAAIpH,GAAKkH,EAAU,IACH,MAAdE,EAAIpH,EAAI,KAAYoH,EAAIpH,EAAI,GAAK,GACrCoH,EAAIpH,EAAI,IAAMoH,EAAIpH,GAAKkH,EAAU,EACjCE,EAAIpH,IAAMkH,EAGhB,CAEA,OAAOE,EAAIpK,SACb,CAKA,OAAO,SAAUoE,EAAK6F,EAAQC,EAAS5T,EAAM+T,GAC3C,IAAI/D,EAAUqB,EAAGhE,EAAGD,EAAGT,EAAGG,EAAGG,EAAIF,EAC/BjG,EAAIgH,EAAIuC,QAAQ,KAChB6C,EAAKvE,EACLiC,EAAKhC,EA+BP,IA5BI9H,GAAK,IACPsG,EAAI+B,EAGJA,EAAgB,EAChBrB,EAAMA,EAAIhF,QAAQ,IAAK,IAEvBgE,GADAC,EAAI,IAAIxB,EAAUoI,IACZK,IAAIlG,EAAInQ,OAASmJ,GACvBqI,EAAgB/B,EAKhBL,EAAEG,EAAIwG,EAAU1F,EAAa1B,EAAcQ,EAAEI,GAAIJ,EAAEO,EAAG,KACrD,GAAIuG,EAASH,GACd1G,EAAEM,EAAIN,EAAEG,EAAEvP,QAUZ0P,EAAID,GALJH,EAAKyG,EAAU5F,EAAK6F,EAAQC,EAASG,GACjC/D,EAAWH,EAAU4D,IACrBzD,EAAWyD,EAAS5D,KAGblS,OAGO,GAAXsP,IAAKG,GAASH,EAAGkE,OAGxB,IAAKlE,EAAG,GAAI,OAAO+C,EAASjC,OAAO,GAqCnC,GAlCIjH,EAAI,IACJuG,GAEFP,EAAEI,EAAID,EACNH,EAAEO,EAAIA,EAGNP,EAAEN,EAAIxM,EAENiN,GADAH,EAAIuB,EAAIvB,EAAGC,EAAGmG,EAAItC,EAAIgD,IACf1G,EACPP,EAAIG,EAAEH,EACNU,EAAIP,EAAEO,GASRvG,EAAImG,EAHJoE,EAAIhE,EAAI6F,EAAK,GAOb9F,EAAIwG,EAAU,EACdjH,EAAIA,GAAK0E,EAAI,GAAkB,MAAbpE,EAAGoE,EAAI,GAEzB1E,EAAIiE,EAAK,GAAU,MAAL9J,GAAa6F,KAAa,GAANiE,GAAWA,IAAO9D,EAAEN,EAAI,EAAI,EAAI,IAC1D1F,EAAIsG,GAAKtG,GAAKsG,IAAW,GAANwD,GAAWjE,GAAW,GAANiE,GAAuB,EAAZ3D,EAAGoE,EAAI,IACtDT,IAAO9D,EAAEN,EAAI,EAAI,EAAI,IAKxB6E,EAAI,IAAMpE,EAAG,GAGfa,EAAMnB,EAAIqB,EAAagC,EAASjC,OAAO,IAAKmF,EAAIlD,EAASjC,OAAO,IAAMiC,EAASjC,OAAO,OACjF,CAML,GAHAd,EAAGtP,OAAS0T,EAGR1E,EAGF,MAAOiH,IAAW3G,IAAKoE,GAAKuC,GAC1B3G,EAAGoE,GAAK,EAEHA,MACDhE,EACFJ,EAAK,CAAC,GAAGgH,OAAOhH,IAMtB,IAAKG,EAAIH,EAAGtP,QAASsP,IAAKG,KAG1B,IAAKtG,EAAI,EAAGgH,EAAM,GAAIhH,GAAKsG,EAAGU,GAAOkC,EAASjC,OAAOd,EAAGnG,OAGxDgH,EAAME,EAAaF,EAAKT,EAAG2C,EAASjC,OAAO,GAC7C,CAGA,OAAOD,CACT,CACF,CAnJe,GAuJfO,EAAO,WAGL,SAAS6F,EAASpH,EAAGM,EAAG+G,GACtB,IAAIC,EAAGC,EAAMC,EAAKC,EAChBC,EAAQ,EACR1N,EAAIgG,EAAEnP,OACN8W,EAAMrH,EAAIlB,EACVwI,EAAMtH,EAAIlB,EAAY,EAExB,IAAKY,EAAIA,EAAEtD,QAAS1C,KAKlB0N,IADAH,EAAOI,GAHPH,EAAMxH,EAAEhG,GAAKoF,IAEbkI,EAAIM,EAAMJ,GADVC,EAAMzH,EAAEhG,GAAKoF,EAAY,GACHuI,GACGvI,EAAaA,EAAasI,GACnCL,EAAO,IAAMC,EAAIlI,EAAY,GAAKwI,EAAMH,EACxDzH,EAAEhG,GAAKuN,EAAOF,EAKhB,OAFIK,IAAO1H,EAAI,CAAC0H,GAAOP,OAAOnH,IAEvBA,CACT,CAEA,SAASD,EAAQN,EAAGS,EAAG2H,EAAIC,GACzB,IAAI9N,EAAG+N,EAEP,GAAIF,GAAMC,EACRC,EAAMF,EAAKC,EAAK,GAAK,OAGrB,IAAK9N,EAAI+N,EAAM,EAAG/N,EAAI6N,EAAI7N,IAExB,GAAIyF,EAAEzF,IAAMkG,EAAElG,GAAI,CAChB+N,EAAMtI,EAAEzF,GAAKkG,EAAElG,GAAK,GAAK,EACzB,KACF,CAIJ,OAAO+N,CACT,CAEA,SAASC,EAASvI,EAAGS,EAAG2H,EAAIR,GAI1B,IAHA,IAAIrN,EAAI,EAGD6N,KACLpI,EAAEoI,IAAO7N,EACTA,EAAIyF,EAAEoI,GAAM3H,EAAE2H,GAAM,EAAI,EACxBpI,EAAEoI,GAAM7N,EAAIqN,EAAO5H,EAAEoI,GAAM3H,EAAE2H,GAI/B,MAAQpI,EAAE,IAAMA,EAAE5O,OAAS,EAAG4O,EAAE+G,OAAO,EAAG,IAC5C,CAGA,OAAO,SAAUxG,EAAGC,EAAGmG,EAAItC,EAAIuD,GAC7B,IAAIU,EAAKxH,EAAGvG,EAAGiO,EAAM1I,EAAG2I,EAAMC,EAAOC,EAAGC,EAAIC,EAAKC,EAAMC,EAAMC,EAAIC,EAAIC,EACnEC,EAAIC,EACJnJ,EAAIM,EAAEN,GAAKO,EAAEP,EAAI,GAAK,EACtBS,EAAKH,EAAEI,EACPC,EAAKJ,EAAEG,EAGT,IAAKD,IAAOA,EAAG,KAAOE,IAAOA,EAAG,GAE9B,OAAO,IAAI5B,EAGTuB,EAAEN,GAAMO,EAAEP,IAAMS,GAAKE,GAAMF,EAAG,IAAME,EAAG,GAAMA,GAG7CF,GAAe,GAATA,EAAG,KAAYE,EAAS,EAAJX,EAAQA,EAAI,EAHaoJ,KAoBvD,IAZAT,GADAD,EAAI,IAAI3J,EAAUiB,IACXU,EAAI,GAEXV,EAAI0G,GADJ7F,EAAIP,EAAEO,EAAIN,EAAEM,GACC,EAER8G,IACHA,EAAOrI,EACPuB,EAAIjB,EAASU,EAAEO,EAAItB,GAAYK,EAASW,EAAEM,EAAItB,GAC9CS,EAAIA,EAAIT,EAAW,GAKhBjF,EAAI,EAAGqG,EAAGrG,KAAOmG,EAAGnG,IAAM,GAAIA,KAInC,GAFIqG,EAAGrG,IAAMmG,EAAGnG,IAAM,IAAIuG,IAEtBb,EAAI,EACN2I,EAAG/R,KAAK,GACR2R,GAAO,MACF,CAwBL,IAvBAS,EAAKvI,EAAGtP,OACR+X,EAAKvI,EAAGxP,OACRmJ,EAAI,EACJ0F,GAAK,GAILH,EAAIV,EAAUwI,GAAQhH,EAAG,GAAK,KAItB,IACNA,EAAK+G,EAAS/G,EAAId,EAAG8H,GACrBlH,EAAKiH,EAASjH,EAAIZ,EAAG8H,GACrBuB,EAAKvI,EAAGxP,OACR6X,EAAKvI,EAAGtP,QAGV4X,EAAKG,EAELL,GADAD,EAAMnI,EAAGzD,MAAM,EAAGkM,IACP/X,OAGJ0X,EAAOK,EAAIN,EAAIC,KAAU,GAChCM,EAAKxI,EAAG3D,QACRmM,EAAK,CAAC,GAAG1B,OAAO0B,GAChBF,EAAMtI,EAAG,GACLA,EAAG,IAAMgH,EAAO,GAAGsB,IAIvB,EAAG,CAOD,GANApJ,EAAI,GAGJwI,EAAMhI,EAAQM,EAAIiI,EAAKM,EAAIL,IAGjB,EAAG,CAqBX,GAjBAC,EAAOF,EAAI,GACPM,GAAML,IAAMC,EAAOA,EAAOnB,GAAQiB,EAAI,IAAM,KAGhD/I,EAAIV,EAAU2J,EAAOG,IAab,EAcN,IAXIpJ,GAAK8H,IAAM9H,EAAI8H,EAAO,GAI1Bc,GADAD,EAAOd,EAAS/G,EAAId,EAAG8H,IACVxW,OACb0X,EAAOD,EAAIzX,OAM+B,GAAnCkP,EAAQmI,EAAMI,EAAKH,EAAOI,IAC/BhJ,IAGAyI,EAASE,EAAMU,EAAKT,EAAQU,EAAKxI,EAAI8H,EAAOd,GAC5Cc,EAAQD,EAAKrX,OACbkX,EAAM,OAQC,GAALxI,IAGFwI,EAAMxI,EAAI,GAKZ4I,GADAD,EAAO7H,EAAG3D,SACG7L,OAUf,GAPIsX,EAAQI,IAAML,EAAO,CAAC,GAAGf,OAAOe,IAGpCF,EAASM,EAAKJ,EAAMK,EAAMlB,GAC1BkB,EAAOD,EAAIzX,QAGC,GAARkX,EAMF,KAAOhI,EAAQM,EAAIiI,EAAKM,EAAIL,GAAQ,GAClChJ,IAGAyI,EAASM,EAAKM,EAAKL,EAAOM,EAAKxI,EAAIkI,EAAMlB,GACzCkB,EAAOD,EAAIzX,MAGjB,MAAmB,IAARkX,IACTxI,IACA+I,EAAM,CAAC,IAITD,EAAGrO,KAAOuF,EAGN+I,EAAI,GACNA,EAAIC,KAAUpI,EAAGsI,IAAO,GAExBH,EAAM,CAACnI,EAAGsI,IACVF,EAAO,EAEX,QAAUE,IAAOC,GAAgB,MAAVJ,EAAI,KAAe5I,KAE1CuI,EAAiB,MAAVK,EAAI,GAGND,EAAG,IAAIA,EAAG7B,OAAO,EAAG,EAC3B,CAEA,GAAIa,GAAQrI,EAAM,CAGhB,IAAKhF,EAAI,EAAG0F,EAAI2I,EAAG,GAAI3I,GAAK,GAAIA,GAAK,GAAI1F,KAEzCyJ,EAAM2E,EAAGhC,GAAMgC,EAAE7H,EAAIvG,EAAIuG,EAAItB,EAAW,GAAK,EAAG6E,EAAImE,EAGtD,MACEG,EAAE7H,EAAIA,EACN6H,EAAEvI,GAAKoI,EAGT,OAAOG,CACT,CACF,CAhQO,GA2XP3G,EAAgB,WACd,IAAIsH,EAAa,8BACfC,EAAW,cACXC,EAAY,cACZC,EAAkB,qBAClBC,EAAmB,6BAErB,OAAO,SAAUnJ,EAAGgB,EAAKoC,EAAOlD,GAC9B,IAAImH,EACF3H,EAAI0D,EAAQpC,EAAMA,EAAIhF,QAAQmN,EAAkB,IAGlD,GAAID,EAAgB5F,KAAK5D,GACvBM,EAAEN,EAAI0J,MAAM1J,GAAK,KAAOA,EAAI,GAAK,EAAI,MAChC,CACL,IAAK0D,IAGH1D,EAAIA,EAAE1D,QAAQ+M,GAAY,SAAUzB,EAAG+B,EAAIC,GAEzC,OADAjC,EAAkC,MAA1BiC,EAAKA,EAAG1F,eAAwB,GAAW,KAAN0F,EAAY,EAAI,EACrDpJ,GAAKA,GAAKmH,EAAYC,EAAL+B,CAC3B,IAEInJ,IACFmH,EAAOnH,EAGPR,EAAIA,EAAE1D,QAAQgN,EAAU,MAAMhN,QAAQiN,EAAW,SAG/CjI,GAAOtB,GAAG,OAAO,IAAIjB,EAAUiB,EAAG2H,GAKxC,GAAI5I,EAAUiF,MACZ,MAAM7Q,MACHiM,EAAiB,SAAWoB,EAAI,SAAWA,EAAI,IAAM,YAAcc,GAIxEhB,EAAEN,EAAI,IACR,CAEAM,EAAEI,EAAIJ,EAAEO,EAAI,IACd,CACF,CA9CgB,GAyOhBmB,EAAE6H,cAAgB7H,EAAE8H,IAAM,WACxB,IAAIxJ,EAAI,IAAIvB,EAAUzP,MAEtB,OADIgR,EAAEN,EAAI,IAAGM,EAAEN,EAAI,GACZM,CACT,EAUA0B,EAAE+H,WAAa,SAAUxJ,EAAGC,GAC1B,OAAOH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,GACxC,EAgBAwB,EAAEgI,cAAgBhI,EAAE0E,GAAK,SAAUA,EAAItC,GACrC,IAAI1D,EAAGb,EAAG0D,EACRjD,EAAIhR,KAEN,GAAU,MAANoX,EAKF,OAJA3F,EAAS2F,EAAI,EAAG/G,GACN,MAANyE,EAAYA,EAAKhC,EAChBrB,EAASqD,EAAI,EAAG,GAEdL,EAAM,IAAIhF,EAAUuB,GAAIoG,EAAKpG,EAAEO,EAAI,EAAGuD,GAG/C,KAAM1D,EAAIJ,EAAEI,GAAI,OAAO,KAIvB,GAHAb,IAAM0D,EAAI7C,EAAEvP,OAAS,GAAKyO,EAAStQ,KAAKuR,EAAItB,IAAaA,EAGrDgE,EAAI7C,EAAE6C,GAAI,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAI1D,KAG3C,OAFIA,EAAI,IAAGA,EAAI,GAERA,CACT,EAuBAmC,EAAEiI,UAAYjI,EAAEH,IAAM,SAAUtB,EAAGC,GACjC,OAAOqB,EAAIvS,KAAM,IAAIyP,EAAUwB,EAAGC,GAAI2B,EAAgBC,EACxD,EAOAJ,EAAEkI,mBAAqBlI,EAAEmI,KAAO,SAAU5J,EAAGC,GAC3C,OAAOqB,EAAIvS,KAAM,IAAIyP,EAAUwB,EAAGC,GAAI,EAAG,EAC3C,EAkBAwB,EAAEoI,gBAAkBpI,EAAEwF,IAAM,SAAU3H,EAAG+H,GACvC,IAAIyC,EAAMC,EAAUhQ,EAAGsG,EAAS2J,EAAQC,EAAQC,EAAQlK,EACtDD,EAAIhR,KAKN,IAHAuQ,EAAI,IAAId,EAAUc,IAGZa,IAAMb,EAAE6K,YACZ,MAAMvX,MACHiM,EAAiB,4BAA8B6C,EAAQpC,IAS5D,GANS,MAAL+H,IAAWA,EAAI,IAAI7I,EAAU6I,IAGjC2C,EAAS1K,EAAEgB,EAAI,IAGVP,EAAEI,IAAMJ,EAAEI,EAAE,IAAgB,GAAVJ,EAAEI,EAAE,KAAYJ,EAAEO,GAAmB,GAAdP,EAAEI,EAAEvP,SAAgB0O,EAAEa,IAAMb,EAAEa,EAAE,GAK5E,OADAH,EAAI,IAAIxB,EAAUrG,KAAK8O,KAAKvF,EAAQ3B,GAAIiK,EAAS1K,EAAEG,GAAK,EAAIoB,EAAMvB,KAAOoC,EAAQpC,KAC1E+H,EAAIrH,EAAEoK,IAAI/C,GAAKrH,EAKxB,GAFAiK,EAAS3K,EAAEG,EAAI,EAEX4H,EAAG,CAGL,GAAIA,EAAElH,GAAKkH,EAAElH,EAAE,IAAMkH,EAAE5H,EAAG,OAAO,IAAIjB,EAAUqK,MAE/CkB,GAAYE,GAAUlK,EAAEoK,aAAe9C,EAAE8C,eAE3BpK,EAAIA,EAAEqK,IAAI/C,GAI1B,KAAO,IAAI/H,EAAEgB,EAAI,IAAMP,EAAEO,EAAI,GAAKP,EAAEO,GAAK,IAAa,GAAPP,EAAEO,EAE7CP,EAAEI,EAAE,GAAK,GAAK6J,GAAUjK,EAAEI,EAAE,IAAM,KAElCJ,EAAEI,EAAE,GAAK,MAAQ6J,GAAUjK,EAAEI,EAAE,IAAM,YASvC,OANAE,EAAIN,EAAEN,EAAI,GAAKoB,EAAMvB,IAAM,EAAI,EAG3BS,EAAEO,GAAK,IAAGD,EAAI,EAAIA,GAGf,IAAI7B,EAAUyL,EAAS,EAAI5J,EAAIA,GAE7B+B,IAKT/B,EAAI3B,EAAS0D,EAAgBpD,EAAW,GAC1C,CAcA,IAZIgL,GACFF,EAAO,IAAItL,EAAU,IACjByL,IAAQ3K,EAAEG,EAAI,GAClByK,EAASrJ,EAAMvB,IAGf4K,GADAnQ,EAAI5B,KAAKoR,KAAK7H,EAAQpC,KACT,EAGfU,EAAI,IAAIxB,EAAUmD,KAGR,CAER,GAAIuI,EAAQ,CAEV,KADAlK,EAAIA,EAAEqK,MAAMtK,IACLI,EAAG,MAENE,EACEL,EAAEG,EAAEvP,OAASyP,IAAGL,EAAEG,EAAEvP,OAASyP,GACxB0J,IACT/J,EAAIA,EAAEoK,IAAI/C,GAEd,CAEA,GAAItN,EAAG,CAEL,GAAU,KADVA,EAAI6E,EAAU7E,EAAI,IACL,MACbmQ,EAASnQ,EAAI,CACf,MAIE,GAFAyJ,EADAlE,EAAIA,EAAE+K,MAAMP,GACHxK,EAAEgB,EAAI,EAAG,GAEdhB,EAAEgB,EAAI,GACR4J,EAASrJ,EAAMvB,OACV,CAEL,GAAU,KADVvF,GAAK2H,EAAQpC,IACA,MACb4K,EAASnQ,EAAI,CACf,CAGFgG,EAAIA,EAAEsK,MAAMtK,GAERM,EACEN,EAAEI,GAAKJ,EAAEI,EAAEvP,OAASyP,IAAGN,EAAEI,EAAEvP,OAASyP,GAC/B0J,IACThK,EAAIA,EAAEqK,IAAI/C,GAEd,CAEA,OAAI0C,EAAiB/J,GACjBiK,IAAQjK,EAAI2B,EAAIL,IAAItB,IAEjBqH,EAAIrH,EAAEoK,IAAI/C,GAAKhH,EAAImD,EAAMxD,EAAGoC,EAAeP,EAnHxBmG,WAmH+ChI,EAC3E,EAWAyB,EAAE6I,aAAe,SAAUzG,GACzB,IAAIvE,EAAI,IAAId,EAAUzP,MAGtB,OAFU,MAAN8U,EAAYA,EAAKhC,EAChBrB,EAASqD,EAAI,EAAG,GACdL,EAAMlE,EAAGA,EAAEgB,EAAI,EAAGuD,EAC3B,EAOApC,EAAE8I,UAAY9I,EAAE+I,GAAK,SAAUxK,EAAGC,GAChC,OAA8C,IAAvCH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,GACxC,EAMAwB,EAAEgJ,SAAW,WACX,QAAS1b,KAAKoR,CAChB,EAOAsB,EAAEiJ,cAAgBjJ,EAAEkJ,GAAK,SAAU3K,EAAGC,GACpC,OAAOH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,IAAM,CAC9C,EAOAwB,EAAEmJ,uBAAyBnJ,EAAEoJ,IAAM,SAAU7K,EAAGC,GAC9C,OAAoD,KAA5CA,EAAIH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,MAAoB,IAANA,CAE3D,EAMAwB,EAAE0I,UAAY,WACZ,QAASpb,KAAKoR,GAAKd,EAAStQ,KAAKuR,EAAItB,GAAYjQ,KAAKoR,EAAEvP,OAAS,CACnE,EAOA6Q,EAAEqJ,WAAarJ,EAAEsJ,GAAK,SAAU/K,EAAGC,GACjC,OAAOH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,IAAM,CAC9C,EAOAwB,EAAEuJ,oBAAsBvJ,EAAEwJ,IAAM,SAAUjL,EAAGC,GAC3C,OAAqD,KAA7CA,EAAIH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,MAAqB,IAANA,CAC5D,EAMAwB,EAAE0H,MAAQ,WACR,OAAQpa,KAAK0Q,CACf,EAMAgC,EAAEyJ,WAAa,WACb,OAAOnc,KAAK0Q,EAAI,CAClB,EAMAgC,EAAE0J,WAAa,WACb,OAAOpc,KAAK0Q,EAAI,CAClB,EAMAgC,EAAE2J,OAAS,WACT,QAASrc,KAAKoR,GAAkB,GAAbpR,KAAKoR,EAAE,EAC5B,EAuBAsB,EAAE4J,MAAQ,SAAUrL,EAAGC,GACrB,IAAIlG,EAAG4F,EAAG2L,EAAGC,EACXxL,EAAIhR,KACJyQ,EAAIO,EAAEN,EAMR,GAHAQ,GADAD,EAAI,IAAIxB,EAAUwB,EAAGC,IACfR,GAGDD,IAAMS,EAAG,OAAO,IAAIzB,EAAUqK,KAGnC,GAAIrJ,GAAKS,EAEP,OADAD,EAAEP,GAAKQ,EACAF,EAAE0G,KAAKzG,GAGhB,IAAIwL,EAAKzL,EAAEO,EAAItB,EACbyM,EAAKzL,EAAEM,EAAItB,EACXkB,EAAKH,EAAEI,EACPC,EAAKJ,EAAEG,EAET,IAAKqL,IAAOC,EAAI,CAGd,IAAKvL,IAAOE,EAAI,OAAOF,GAAMF,EAAEP,GAAKQ,EAAGD,GAAK,IAAIxB,EAAU4B,EAAKL,EAAI8I,KAGnE,IAAK3I,EAAG,KAAOE,EAAG,GAGhB,OAAOA,EAAG,IAAMJ,EAAEP,GAAKQ,EAAGD,GAAK,IAAIxB,EAAU0B,EAAG,GAAKH,EAGnC,GAAjB8B,GAAsB,EAAI,EAE/B,CAOA,GALA2J,EAAKnM,EAASmM,GACdC,EAAKpM,EAASoM,GACdvL,EAAKA,EAAGzD,QAGJ+C,EAAIgM,EAAKC,EAAI,CAaf,KAXIF,EAAO/L,EAAI,IACbA,GAAKA,EACL8L,EAAIpL,IAEJuL,EAAKD,EACLF,EAAIlL,GAGNkL,EAAE3O,UAGGsD,EAAIT,EAAGS,IAAKqL,EAAEjV,KAAK,IACxBiV,EAAE3O,SACJ,MAKE,IAFAgD,GAAK4L,GAAQ/L,EAAIU,EAAGtP,SAAWqP,EAAIG,EAAGxP,SAAW4O,EAAIS,EAEhDT,EAAIS,EAAI,EAAGA,EAAIN,EAAGM,IAErB,GAAIC,EAAGD,IAAMG,EAAGH,GAAI,CAClBsL,EAAOrL,EAAGD,GAAKG,EAAGH,GAClB,KACF,CAgBJ,GAXIsL,IACFD,EAAIpL,EACJA,EAAKE,EACLA,EAAKkL,EACLtL,EAAEP,GAAKO,EAAEP,IAGXQ,GAAKN,EAAIS,EAAGxP,SAAWmJ,EAAImG,EAAGtP,SAItB,EAAG,KAAOqP,IAAKC,EAAGnG,KAAO,GAIjC,IAHAkG,EAAIlB,EAAO,EAGJY,EAAIH,GAAI,CAEb,GAAIU,IAAKP,GAAKS,EAAGT,GAAI,CACnB,IAAK5F,EAAI4F,EAAG5F,IAAMmG,IAAKnG,GAAImG,EAAGnG,GAAKkG,KACjCC,EAAGnG,GACLmG,EAAGP,IAAMZ,CACX,CAEAmB,EAAGP,IAAMS,EAAGT,EACd,CAGA,KAAgB,GAATO,EAAG,GAASA,EAAGqG,OAAO,EAAG,KAAMkF,GAGtC,OAAKvL,EAAG,GAWDiE,EAAUnE,EAAGE,EAAIuL,IAPtBzL,EAAEP,EAAqB,GAAjBoC,GAAsB,EAAI,EAChC7B,EAAEG,EAAI,CAACH,EAAEM,EAAI,GACNN,EAMX,EAwBAyB,EAAEiK,OAASjK,EAAE2I,IAAM,SAAUpK,EAAGC,GAC9B,IAAIkI,EAAG1I,EACLM,EAAIhR,KAKN,OAHAiR,EAAI,IAAIxB,EAAUwB,EAAGC,IAGhBF,EAAEI,IAAMH,EAAEP,GAAKO,EAAEG,IAAMH,EAAEG,EAAE,GACvB,IAAI3B,EAAUqK,MAGX7I,EAAEG,GAAKJ,EAAEI,IAAMJ,EAAEI,EAAE,GACtB,IAAI3B,EAAUuB,IAGJ,GAAfoC,GAIF1C,EAAIO,EAAEP,EACNO,EAAEP,EAAI,EACN0I,EAAI7G,EAAIvB,EAAGC,EAAG,EAAG,GACjBA,EAAEP,EAAIA,EACN0I,EAAE1I,GAAKA,GAEP0I,EAAI7G,EAAIvB,EAAGC,EAAG,EAAGmC,IAGnBnC,EAAID,EAAEsL,MAAMlD,EAAEkC,MAAMrK,KAGbG,EAAE,IAAqB,GAAfgC,IAAkBnC,EAAEP,EAAIM,EAAEN,GAElCO,EACT,EAuBAyB,EAAEkK,aAAelK,EAAE4I,MAAQ,SAAUrK,EAAGC,GACtC,IAAIE,EAAGG,EAAGvG,EAAG4F,EAAGU,EAAGgH,EAAGuE,EAAKrE,EAAKC,EAAKqE,EAAKC,EAAKC,EAAKC,EAClD5E,EAAM6E,EACNlM,EAAIhR,KACJmR,EAAKH,EAAEI,EACPC,GAAMJ,EAAI,IAAIxB,EAAUwB,EAAGC,IAAIE,EAGjC,IAAKD,IAAOE,IAAOF,EAAG,KAAOE,EAAG,GAmB9B,OAhBKL,EAAEN,IAAMO,EAAEP,GAAKS,IAAOA,EAAG,KAAOE,GAAMA,IAAOA,EAAG,KAAOF,EAC1DF,EAAEG,EAAIH,EAAEM,EAAIN,EAAEP,EAAI,MAElBO,EAAEP,GAAKM,EAAEN,EAGJS,GAAOE,GAKVJ,EAAEG,EAAI,CAAC,GACPH,EAAEM,EAAI,GALNN,EAAEG,EAAIH,EAAEM,EAAI,MASTN,EAmBT,IAhBAM,EAAIjB,EAASU,EAAEO,EAAItB,GAAYK,EAASW,EAAEM,EAAItB,GAC9CgB,EAAEP,GAAKM,EAAEN,GACTmM,EAAM1L,EAAGtP,SACTib,EAAMzL,EAAGxP,UAIPob,EAAK9L,EACLA,EAAKE,EACLA,EAAK4L,EACLjS,EAAI6R,EACJA,EAAMC,EACNA,EAAM9R,GAIHA,EAAI6R,EAAMC,EAAKG,EAAK,GAAIjS,IAAKiS,EAAG3V,KAAK,IAK1C,IAHA+Q,EAAOrI,EACPkN,EAAW9M,EAENpF,EAAI8R,IAAO9R,GAAK,GAAI,CAKvB,IAJAoG,EAAI,EACJ2L,EAAM1L,EAAGrG,GAAKkS,EACdF,EAAM3L,EAAGrG,GAAKkS,EAAW,EAEXtM,EAAI5F,GAAbsG,EAAIuL,GAAgBjM,EAAI5F,GAK3BoG,IADAoH,EAAMuE,GAHNvE,EAAMrH,IAAKG,GAAK4L,IAEhB5E,EAAI0E,EAAMxE,GADVC,EAAMtH,EAAGG,GAAK4L,EAAW,GACHH,GACEG,EAAYA,EAAYD,EAAGrM,GAAKQ,GAC7CiH,EAAO,IAAMC,EAAI4E,EAAW,GAAKF,EAAMvE,EAClDwE,EAAGrM,KAAO4H,EAAMH,EAGlB4E,EAAGrM,GAAKQ,CACV,CAQA,OANIA,IACAG,EAEF0L,EAAGzF,OAAO,EAAG,GAGRpC,EAAUnE,EAAGgM,EAAI1L,EAC1B,EAOAmB,EAAEyK,QAAU,WACV,IAAInM,EAAI,IAAIvB,EAAUzP,MAEtB,OADAgR,EAAEN,GAAKM,EAAEN,GAAK,KACPM,CACT,EAuBA0B,EAAEgF,KAAO,SAAUzG,EAAGC,GACpB,IAAIqL,EACFvL,EAAIhR,KACJyQ,EAAIO,EAAEN,EAMR,GAHAQ,GADAD,EAAI,IAAIxB,EAAUwB,EAAGC,IACfR,GAGDD,IAAMS,EAAG,OAAO,IAAIzB,EAAUqK,KAGlC,GAAIrJ,GAAKS,EAER,OADAD,EAAEP,GAAKQ,EACAF,EAAEsL,MAAMrL,GAGjB,IAAIwL,EAAKzL,EAAEO,EAAItB,EACbyM,EAAKzL,EAAEM,EAAItB,EACXkB,EAAKH,EAAEI,EACPC,EAAKJ,EAAEG,EAET,IAAKqL,IAAOC,EAAI,CAGd,IAAKvL,IAAOE,EAAI,OAAO,IAAI5B,EAAUgB,EAAI,GAIzC,IAAKU,EAAG,KAAOE,EAAG,GAAI,OAAOA,EAAG,GAAKJ,EAAI,IAAIxB,EAAU0B,EAAG,GAAKH,EAAQ,EAAJP,EACrE,CAOA,GALAgM,EAAKnM,EAASmM,GACdC,EAAKpM,EAASoM,GACdvL,EAAKA,EAAGzD,QAGJ+C,EAAIgM,EAAKC,EAAI,CAUf,IATIjM,EAAI,GACNiM,EAAKD,EACLF,EAAIlL,IAEJZ,GAAKA,EACL8L,EAAIpL,GAGNoL,EAAE3O,UACK6C,IAAK8L,EAAEjV,KAAK,IACnBiV,EAAE3O,SACJ,CAcA,KAZA6C,EAAIU,EAAGtP,SACPqP,EAAIG,EAAGxP,QAGK,IACV0a,EAAIlL,EACJA,EAAKF,EACLA,EAAKoL,EACLrL,EAAIT,GAIDA,EAAI,EAAGS,GACVT,GAAKU,IAAKD,GAAKC,EAAGD,GAAKG,EAAGH,GAAKT,GAAKT,EAAO,EAC3CmB,EAAGD,GAAKlB,IAASmB,EAAGD,GAAK,EAAIC,EAAGD,GAAKlB,EAUvC,OAPIS,IACFU,EAAK,CAACV,GAAG0H,OAAOhH,KACduL,GAKGtH,EAAUnE,EAAGE,EAAIuL,EAC1B,EAkBAhK,EAAE0K,UAAY1K,EAAE4C,GAAK,SAAUA,EAAIR,GACjC,IAAI1D,EAAGb,EAAG0D,EACRjD,EAAIhR,KAEN,GAAU,MAANsV,GAAcA,MAASA,EAKzB,OAJA7D,EAAS6D,EAAI,EAAGjF,GACN,MAANyE,EAAYA,EAAKhC,EAChBrB,EAASqD,EAAI,EAAG,GAEdL,EAAM,IAAIhF,EAAUuB,GAAIsE,EAAIR,GAGrC,KAAM1D,EAAIJ,EAAEI,GAAI,OAAO,KAIvB,GAFAb,GADA0D,EAAI7C,EAAEvP,OAAS,GACPoO,EAAW,EAEfgE,EAAI7C,EAAE6C,GAAI,CAGZ,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAI1D,KAG7B,IAAK0D,EAAI7C,EAAE,GAAI6C,GAAK,GAAIA,GAAK,GAAI1D,KACnC,CAIA,OAFI+E,GAAMtE,EAAEO,EAAI,EAAIhB,IAAGA,EAAIS,EAAEO,EAAI,GAE1BhB,CACT,EAWAmC,EAAE2K,UAAY,SAAU/L,GAEtB,OADAG,EAASH,GAAG,iBAAmBpB,GACxBlQ,KAAKsb,MAAM,KAAOhK,EAC3B,EAcAoB,EAAE4K,WAAa5K,EAAE6K,KAAO,WACtB,IAAIjF,EAAG/H,EAAGM,EAAG2M,EAAKjB,EAChBvL,EAAIhR,KACJoR,EAAIJ,EAAEI,EACNV,EAAIM,EAAEN,EACNa,EAAIP,EAAEO,EACN6F,EAAKvE,EAAiB,EACtBkI,EAAO,IAAItL,EAAU,OAGvB,GAAU,IAANiB,IAAYU,IAAMA,EAAE,GACtB,OAAO,IAAI3B,GAAWiB,GAAKA,EAAI,KAAOU,GAAKA,EAAE,IAAM0I,IAAM1I,EAAIJ,EAAI,KA8BnE,GAtBS,IAJTN,EAAItH,KAAKmU,MAAM5K,EAAQ3B,MAITN,GAAK,OACjBH,EAAIC,EAAcY,IACXvP,OAAS0P,GAAK,GAAK,IAAGhB,GAAK,KAClCG,EAAItH,KAAKmU,MAAMhN,GACfgB,EAAIjB,GAAUiB,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAAI,GAS1CV,EAAI,IAAIpB,EANNc,EADEG,GAAK,IACH,KAAOa,GAEXhB,EAAIG,EAAEqB,iBACArE,MAAM,EAAG6C,EAAEgE,QAAQ,KAAO,GAAKhD,IAKvCV,EAAI,IAAIpB,EAAUiB,EAAI,IAOpBG,EAAEO,EAAE,GAMN,KAJAV,GADAa,EAAIV,EAAEU,GACE6F,GACA,IAAG1G,EAAI,KAOb,GAHA6L,EAAI1L,EACJA,EAAIkK,EAAKO,MAAMiB,EAAE7E,KAAKnF,EAAIvB,EAAGuL,EAAGnF,EAAI,KAEhC5G,EAAc+L,EAAEnL,GAAG1D,MAAM,EAAGgD,MAAQH,EAAIC,EAAcK,EAAEO,IAAI1D,MAAM,EAAGgD,GAAI,CAW3E,GANIG,EAAEU,EAAIA,KAAKb,EAMN,SALTH,EAAIA,EAAE7C,MAAMgD,EAAI,EAAGA,EAAI,MAKH8M,GAAY,QAALjN,GAgBpB,EAICA,KAAOA,EAAE7C,MAAM,IAAqB,KAAf6C,EAAE0B,OAAO,MAGlCwC,EAAM5D,EAAGA,EAAEU,EAAIsB,EAAiB,EAAG,GACnCyF,GAAKzH,EAAEyK,MAAMzK,GAAG4K,GAAGzK,IAGrB,KACF,CAxBE,IAAKwM,IACH/I,EAAM8H,EAAGA,EAAEhL,EAAIsB,EAAiB,EAAG,GAE/B0J,EAAEjB,MAAMiB,GAAGd,GAAGzK,IAAI,CACpBH,EAAI0L,EACJ,KACF,CAGFnF,GAAM,EACN1G,GAAK,EACL8M,EAAM,CAcV,CAIJ,OAAO/I,EAAM5D,EAAGA,EAAEU,EAAIsB,EAAiB,EAAGC,EAAewF,EAC3D,EAYA5F,EAAEX,cAAgB,SAAUqF,EAAItC,GAK9B,OAJU,MAANsC,IACF3F,EAAS2F,EAAI,EAAG/G,GAChB+G,KAEKvC,EAAO7U,KAAMoX,EAAItC,EAAI,EAC9B,EAeApC,EAAE+K,QAAU,SAAUrG,EAAItC,GAKxB,OAJU,MAANsC,IACF3F,EAAS2F,EAAI,EAAG/G,GAChB+G,EAAKA,EAAKpX,KAAKuR,EAAI,GAEdsD,EAAO7U,KAAMoX,EAAItC,EAC1B,EA4BApC,EAAEgL,SAAW,SAAUtG,EAAItC,EAAID,GAC7B,IAAI7C,EACFhB,EAAIhR,KAEN,GAAc,MAAV6U,EACQ,MAANuC,GAActC,GAAmB,iBAANA,GAC7BD,EAASC,EACTA,EAAK,MACIsC,GAAmB,iBAANA,GACtBvC,EAASuC,EACTA,EAAKtC,EAAK,MAEVD,EAASvB,OAEN,GAAqB,iBAAVuB,EAChB,MAAMhR,MACHiM,EAAiB,2BAA6B+E,GAKnD,GAFA7C,EAAMhB,EAAEyM,QAAQrG,EAAItC,GAEhB9D,EAAEI,EAAG,CACP,IAAIpG,EACFgN,EAAMhG,EAAIzJ,MAAM,KAChBoV,GAAM9I,EAAOrB,UACboK,GAAM/I,EAAOpB,mBACbC,EAAiBmB,EAAOnB,gBAAkB,GAC1CmK,EAAU7F,EAAI,GACd8F,EAAe9F,EAAI,GACnB+F,EAAQ/M,EAAEN,EAAI,EACdsN,EAAYD,EAAQF,EAAQnQ,MAAM,GAAKmQ,EACvC1L,EAAM6L,EAAUnc,OASlB,GAPI+b,IACF5S,EAAI2S,EACJA,EAAKC,EACLA,EAAK5S,EACLmH,GAAOnH,GAGL2S,EAAK,GAAKxL,EAAM,EAAG,CAGrB,IAFAnH,EAAImH,EAAMwL,GAAMA,EAChBE,EAAUG,EAAU9S,OAAO,EAAGF,GACvBA,EAAImH,EAAKnH,GAAK2S,EAAIE,GAAWnK,EAAiBsK,EAAU9S,OAAOF,EAAG2S,GACrEC,EAAK,IAAGC,GAAWnK,EAAiBsK,EAAUtQ,MAAM1C,IACpD+S,IAAOF,EAAU,IAAMA,EAC7B,CAEA7L,EAAM8L,EACHD,GAAWhJ,EAAOlB,kBAAoB,MAAQiK,GAAM/I,EAAOjB,mBAC1DkK,EAAa9Q,QAAQ,IAAIE,OAAO,OAAS0Q,EAAK,OAAQ,KACvD,MAAQ/I,EAAOhB,wBAA0B,KACxCiK,GACDD,CACL,CAEA,OAAQhJ,EAAOtB,QAAU,IAAMvB,GAAO6C,EAAOf,QAAU,GACzD,EAcApB,EAAEuL,WAAa,SAAUC,GACvB,IAAI3I,EAAG4I,EAAIC,EAAIC,EAAI9M,EAAG+M,EAAK/N,EAAGgO,EAAIC,EAAIpF,EAAGvI,EAAGH,EAC1CM,EAAIhR,KACJmR,EAAKH,EAAEI,EAET,GAAU,MAAN8M,MACF3N,EAAI,IAAId,EAAUyO,IAGX9C,cAAgB7K,EAAEa,GAAa,IAARb,EAAEG,IAAYH,EAAEyL,GAAGpJ,IAC/C,MAAM/O,MACHiM,EAAiB,aACfS,EAAE6K,YAAc,iBAAmB,oBAAsBzI,EAAQpC,IAI1E,IAAKY,EAAI,OAAO,IAAI1B,EAAUuB,GAoB9B,IAlBAuE,EAAI,IAAI9F,EAAUmD,GAClB4L,EAAKL,EAAK,IAAI1O,EAAUmD,GACxBwL,EAAKG,EAAK,IAAI9O,EAAUmD,GACxBlC,EAAIF,EAAcW,GAIlBI,EAAIgE,EAAEhE,EAAIb,EAAE7O,OAASmP,EAAEO,EAAI,EAC3BgE,EAAEnE,EAAE,GAAKjB,GAAUmO,EAAM/M,EAAItB,GAAY,EAAIA,EAAWqO,EAAMA,GAC9DJ,GAAMA,GAAM3N,EAAEkK,WAAWlF,GAAK,EAAKhE,EAAI,EAAIgE,EAAIiJ,EAAMjO,EAErD+N,EAAMpL,EACNA,EAAU,IACV3C,EAAI,IAAId,EAAUiB,GAGlB6N,EAAGnN,EAAE,GAAK,EAGRgI,EAAI7G,EAAIhC,EAAGgF,EAAG,EAAG,GAEQ,IADzB8I,EAAKF,EAAGzG,KAAK0B,EAAEkC,MAAM8C,KACd3D,WAAWyD,IAClBC,EAAKC,EACLA,EAAKC,EACLG,EAAKD,EAAG7G,KAAK0B,EAAEkC,MAAM+C,EAAKG,IAC1BD,EAAKF,EACL9I,EAAIhF,EAAE+L,MAAMlD,EAAEkC,MAAM+C,EAAK9I,IACzBhF,EAAI8N,EAeN,OAZAA,EAAK9L,EAAI2L,EAAG5B,MAAM6B,GAAKC,EAAI,EAAG,GAC9BG,EAAKA,EAAG7G,KAAK2G,EAAG/C,MAAMkD,IACtBL,EAAKA,EAAGzG,KAAK2G,EAAG/C,MAAM8C,IACtBG,EAAG7N,EAAI8N,EAAG9N,EAAIM,EAAEN,EAIhBG,EAAI0B,EAAIiM,EAAIJ,EAHZ7M,GAAQ,EAGWuB,GAAewJ,MAAMtL,GAAGwJ,MAAMC,WAC7ClI,EAAIgM,EAAIJ,EAAI5M,EAAGuB,GAAewJ,MAAMtL,GAAGwJ,OAAS,EAAI,CAACgE,EAAIJ,GAAM,CAACG,EAAIJ,GAExEjL,EAAUoL,EAEHzN,CACT,EAMA6B,EAAE+L,SAAW,WACX,OAAQ9L,EAAQ3S,KAClB,EAcA0S,EAAEgM,YAAc,SAAUpJ,EAAIR,GAE5B,OADU,MAANQ,GAAY7D,EAAS6D,EAAI,EAAGjF,GACzBwE,EAAO7U,KAAMsV,EAAIR,EAAI,EAC9B,EAcApC,EAAEjO,SAAW,SAAUyM,GACrB,IAAIc,EACFzB,EAAIvQ,KACJ0Q,EAAIH,EAAEG,EACNa,EAAIhB,EAAEgB,EA0BR,OAvBU,OAANA,EACEb,GACFsB,EAAM,WACFtB,EAAI,IAAGsB,EAAM,IAAMA,IAEvBA,EAAM,OAGC,MAALd,EACFc,EAAMT,GAAKwB,GAAcxB,GAAKyB,EAC3BjB,EAAcvB,EAAcD,EAAEa,GAAIG,GAClCW,EAAa1B,EAAcD,EAAEa,GAAIG,EAAG,KACxB,KAANL,GAAY8C,EAErBhC,EAAME,EAAa1B,GADnBD,EAAIkE,EAAM,IAAIhF,EAAUc,GAAIsC,EAAiBtB,EAAI,EAAGuB,IACjB1B,GAAIb,EAAEgB,EAAG,MAE5CE,EAASP,EAAG,EAAG6C,EAASlS,OAAQ,QAChCmQ,EAAMQ,EAAYN,EAAa1B,EAAcD,EAAEa,GAAIG,EAAG,KAAM,GAAIL,EAAGR,GAAG,IAGpEA,EAAI,GAAKH,EAAEa,EAAE,KAAIY,EAAM,IAAMA,IAG5BA,CACT,EAOAU,EAAEC,QAAUD,EAAEiM,OAAS,WACrB,OAAOhM,EAAQ3S,KACjB,EAGA0S,EAAE2B,cAAe,EAEG,MAAhB/B,GAAsB7C,EAAU6G,IAAIhE,GAEjC7C,CACT,CAqIY4C,GACZ5C,EAAmB,QAAIA,EAAUA,UAAYA,OAIH,KAAxCmP,EAAAA,WAAqB,OAAOnP,CAAY,+BAc3C,CAz2FA,8BCCDzM,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ+e,sBAAmB,EAC3B/e,EAAQ+e,iBAAmB,CACvB,CACI,KAAQ,OACR,KAAQ,oBACR,eAAkB,kCAEtB,CACI,KAAQ,SACR,KAAQ,sBACR,QAAW,CACP,CACI,KAAQ,MACR,KAAQ,uBAEZ,CACI,KAAQ,OACR,KAAQ,yBAIpB,CACI,KAAQ,SACR,KAAQ,qCACR,QAAW,CACP,CACI,KAAQ,WACR,KAAQ,0CAIpB,CACI,KAAQ,SACR,KAAQ,uDACR,QAAW,CACP,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,aACR,KAAQ,iBAEZ,CACI,KAAQ,WACR,KAAQ,wCAIpB,CACI,KAAQ,SACR,KAAQ,4EACR,QAAW,CACP,CACI,KAAQ,WACR,KAAQ,iFAIpB,CACI,KAAQ,SACR,KAAQ,8CACR,QAAW,CACP,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,UACR,KAAQ,qDAEZ,CACI,KAAQ,QACR,KAAQ,qDAEZ,CACI,KAAQ,iBACR,KAAQ,qDAEZ,CACI,KAAQ,gBACR,KAAQ,qDAEZ,CACI,KAAQ,QACR,KAAQ,uBAEZ,CACI,KAAQ,aACR,KAAQ,iBAEZ,CACI,KAAQ,cACR,KAAQ,iBAEZ,CACI,KAAQ,SACR,KAAQ,uBAEZ,CACI,KAAQ,YACR,KAAQ,qDAEZ,CACI,KAAQ,mBACR,KAAQ,uBAEZ,CACI,KAAQ,iBACR,KAAQ,uBAEZ,CACI,KAAQ,iBACR,KAAQ,+EAIpB,CACI,KAAQ,YACR,KAAQ,iCACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,aACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,+CAEZ,CACI,KAAQ,YACR,KAAQ,uCAEZ,CACI,KAAQ,UACR,KAAQ,sBAEZ,CACI,KAAQ,aACR,KAAQ,uCAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,QACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,+CAEZ,CACI,KAAQ,UACR,KAAQ,wCAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,SACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,+CAEZ,CACI,KAAQ,UACR,KAAQ,wCAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,+CAEZ,CACI,KAAQ,YACR,KAAQ,uCAEZ,CACI,KAAQ,UACR,KAAQ,uBAGhB,QAAW,GACX,iBAAoB,cAIhC,CACI,KAAQ,OACR,KAAQ,cACR,eAAkB,kDAEtB,CACI,KAAQ,SACR,KAAQ,8HACR,QAAW,CACP,CACI,KAAQ,WACR,KAAQ,mIAIpB,CACI,KAAQ,YACR,KAAQ,iDACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,UACR,OAAU,CACN,CACI,KAAQ,QACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,wBAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,WACR,OAAU,CACN,CACI,KAAQ,QACR,KAAQ,qDAEZ,CACI,KAAQ,SACR,KAAQ,uBAEZ,CACI,KAAQ,cACR,KAAQ,sDAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,cACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,gIAGhB,QAAW,CACP,CACI,KAAQ,8CAGhB,iBAAoB,UAIhC,CACI,KAAQ,OACR,KAAQ,wBACR,eAAkB,8DAEtB,CACI,KAAQ,SACR,KAAQ,iLACR,QAAW,CACP,CACI,KAAQ,WACR,KAAQ,sLAIpB,CACI,KAAQ,SACR,KAAQ,gDACR,QAAW,CACP,CACI,KAAQ,SACR,KAAQ,uBAEZ,CACI,KAAQ,QACR,KAAQ,yBAIpB,CACI,KAAQ,YACR,KAAQ,6DACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,OACR,KAAQ,mLAGhB,QAAW,CACP,CACI,KAAQ,6EAGhB,iBAAoB,UAIhC,CACI,KAAQ,OACR,KAAQ,oBACR,eAAkB,8DAEtB,CACI,KAAQ,SACR,KAAQ,6CACR,QAAW,CACP,CACI,KAAQ,mBACR,KAAQ,sBAEZ,CACI,KAAQ,qBACR,KAAQ,sBAEZ,CACI,KAAQ,QACR,KAAQ,uBAIpB,CACI,KAAQ,SACR,KAAQ,kEACR,QAAW,CACP,CACI,KAAQ,WACR,KAAQ,uEAIpB,CACI,KAAQ,YACR,KAAQ,6DACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,YACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,gDAGhB,QAAW,CACP,CACI,KAAQ,+CAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,iBACR,OAAU,CACN,CACI,KAAQ,cACR,KAAQ,kBAGhB,QAAW,CACP,CACI,KAAQ,+CAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,0BACR,OAAU,CACN,CACI,KAAQ,gBACR,KAAQ,uCAGhB,QAAW,CACP,CACI,KAAQ,oEAGhB,iBAAoB,UAIhC,CACI,KAAQ,cACR,KAAQ,cACR,OAAU,IAEd,CACI,KAAQ,QACR,KAAQ,wDACR,KAAQ,OACR,SAAY,IAEhB,CACI,KAAQ,QACR,KAAQ,4DACR,KAAQ,OACR,SAAY,IAEhB,CACI,KAAQ,QACR,KAAQ,oEACR,KAAQ,OACR,SAAY,IAEhB,CACI,KAAQ,QACR,KAAQ,qCACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,UACR,KAAQ,oDACR,KAAQ,OAEZ,CACI,KAAQ,UACR,KAAQ,oDACR,KAAQ,OAEZ,CACI,KAAQ,aACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,cACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,gBACR,KAAQ,oDACR,KAAQ,QAEZ,CACI,KAAQ,iBACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,gCACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,UACR,KAAQ,oDACR,KAAQ,OAEZ,CACI,KAAQ,UACR,KAAQ,oDACR,KAAQ,OAEZ,CACI,KAAQ,aACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,cACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,iBACR,KAAQ,qCACR,KAAQ,QAEZ,CACI,KAAQ,gBACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,iCACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,UACR,KAAQ,oDACR,KAAQ,OAEZ,CACI,KAAQ,UACR,KAAQ,oDACR,KAAQ,OAEZ,CACI,KAAQ,aACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,cACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,iBACR,KAAQ,qCACR,KAAQ,QAEZ,CACI,KAAQ,iBACR,KAAQ,oDACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,oDACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,QACR,KAAQ,qCACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,uCACR,KAAQ,OACR,SAAY,CACR,CACI,KAAQ,eACR,KAAQ,wDACR,KAAQ,UAEZ,CACI,KAAQ,yBACR,KAAQ,4DACR,KAAQ,UAEZ,CACI,KAAQ,qBACR,KAAQ,oEACR,KAAQ,UAEZ,CACI,KAAQ,aACR,KAAQ,qCACR,KAAQ,UAEZ,CACI,KAAQ,QACR,KAAQ,gCACR,KAAQ,UAEZ,CACI,KAAQ,SACR,KAAQ,iCACR,KAAQ,UAEZ,CACI,KAAQ,4BACR,KAAQ,oDACR,KAAQ,+TCplBxB,MAAAC,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAOAme,EAAAne,EAAA,OAgHA,SAAgBoe,EAAsDC,GAI7C,IAJ8C,UACnEnd,EACAod,MAAO/d,GAAK,KACZsC,GACqBwb,EACrB,MAAM,YAAEE,EAAW,qBAAEC,EAAoB,eAAEC,GACvCzf,EAAA0f,4CAA4CC,OAAO9b,GAEvD,MAAO,CACH3B,YACAod,KAAM,CACF/d,QAEJsC,KAAM,CACF0b,cACAE,eAAgBD,EAAuBC,EAAiB,MAGpE,CAxHazf,EAAAA,6CAA8C,EAAAgf,EAAAY,QAAoD,EAC3G,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,yBACH,EAAAZ,EAAApa,WAAU,oBAYd7E,EAAAA,8CAAA,SACIuB,EACAke,EACAvd,GAEA,KAAK,EAAAhB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMT,EAAO,CAAC,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAErDrc,EAAOY,EAAO0b,MAAMngB,EAAA0f,4CAA4CU,MAUtE,OATApgB,EAAA0f,4CAA4CW,OACxC,CACId,YAAaJ,EAAAmB,iBAAiBC,6BAC9Bf,qBAAsBC,EAAiB,EAAI,EAC3CA,eAAgBA,GAAkB,IAAI1e,EAAAiE,UAAU,IAEpDnB,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAsBA7D,EAAAA,8CAAA,SACIuf,EACArd,GAEA,IAAKqd,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAA0f,4CAA4CU,KACxE,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,KAAE/d,GAAM,KACdsC,GACAub,EAAuDG,GAC3D,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBC,6BACtC,MAAM,IAAIrB,EAAA0B,iCACd,IAAKrf,EAAM,MAAM,IAAI2d,EAAA2B,iCAErB,MAAO,CACH3e,YACAod,KAAM,CACF/d,QAEJsC,OAER,EAqBA7D,EAAAA,uDAAAof,+BC3HAlc,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ8gB,kBAAe,EACvB,MAAM3b,EAASnE,EAAQ,OACvBhB,EAAQ8gB,aAAe,CACnB,CAAC3b,EAAO4b,eAAeC,SAAU,CAC7BC,UAAW,CACPC,aAAc,+CACdC,iBAAkB,iDAG1B,CAAChc,EAAO4b,eAAeK,SAAU,CAC7BH,UAAW,CACPC,aAAc,+CACdC,iBAAkB,+ECb9Bje,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQqhB,kBAAe,EACvB,MAAMlc,EAASnE,EAAQ,OACjBsgB,EAAWtgB,EAAQ,OACnBugB,EAAsBvgB,EAAQ,OAC9BqE,EAAUrE,EAAQ,OAmQxBhB,EAAQqhB,aAlQR,MAYIlT,WAAAA,CAAYqT,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsBC,EAASzT,GACtHnO,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAWtF,KAAKiO,YAAY2D,KAAO,MAC7D5R,KAAK8hB,aAAe,IAAIC,IACxB/hB,KAAKgiB,eAAgB,EACrBhiB,KAAKiiB,aAAe,KACpBjiB,KAAKkO,eAAiBA,EACtBlO,KAAKuhB,mBAAqBA,EAC1BvhB,KAAKshB,gBAAkBA,EACvBthB,KAAKwhB,SAAWA,EAChBxhB,KAAKyhB,OAASA,EACdzhB,KAAK2hB,qBAAuBA,EAC5B3hB,KAAKmO,OAASA,GAAU,IAAIiT,EAASc,aACrCliB,KAAK4hB,QAAUA,EACf5hB,KAAK0hB,OAAS,CAAC,EACf,IAAK,IAAIS,KAAaT,EAAQ,CAC1B,MAAMU,EAAYD,EAAUE,OAAOf,GAClB,MAAbc,IAEJpiB,KAAK0hB,OAAOU,EAAU1b,SAAW,CAC7B4b,MAAO,KACPC,QAASviB,KAAKshB,gBACd5a,QAAS0b,EAAU1b,QACnBjF,SAAU2gB,EAAU3gB,SACpB+gB,OAAQL,EAAUK,OAClB5Q,KAAMuQ,EAAUvQ,KAChB6Q,gBAAiBL,EAAUK,iBAEnC,CACJ,CASAC,aAAAA,CAAcC,EAAYva,GACtB,OAAOpI,KAAKyhB,OAAOiB,cAAc1iB,KAAKshB,gBAAiBqB,EAAWxa,MAAOC,GAAawa,OAAMrR,IACxFvR,KAAK6hB,OAAOgB,MAAM,2BAA4BtR,GACvC,OAEf,CAQAuR,gBAAAA,CAAiBC,GACb,OAA0D,MAAtD/iB,KAAKwhB,SAASwB,qCACP3e,QAAQC,QAAQ,MACpBye,EAAiB/Z,MAAK4F,GACd,MAAPA,EACO,KACJ5O,KAAKwhB,SAASwB,qCAAqCpU,KAC3DgU,OAAMrR,IACLvR,KAAK6hB,OAAOgB,MAAM,8BAA+BtR,GAC1C,OAEf,CAaA,6BAAM0R,CAAwBtf,EAAMM,EAAWif,EAAgBC,EAAmC/a,GAC9F,MAAO5B,EAAS4c,SAAiC/e,QAAQoE,IAAI,CAACya,EAAgBC,IAE9E,aADM,EAAIhe,EAAQke,iBAAgB,IAAMrjB,KAAKwhB,SAAS8B,yBAAyB3f,EAAMM,EAAWuC,EAAS4c,IAA0B,KAAMne,EAAOse,2BAA4Bnb,SAC/J,EAAIjD,EAAQke,iBAAgB,IAAMrjB,KAAKwhB,SAASgC,2BAA2B7f,EAAMM,EAAWmf,IAA0B,KAAMne,EAAOse,2BAA4Bnb,EAChL,CAgBA,yBAAMqb,CAAoBC,EAAeC,EAAMC,EAAYC,EAAa1b,EAAO2b,GAAoE,IAA3DC,EAAoBniB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGyC,QAAQC,QAAQ,MAAO8D,EAAWxG,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC7I,MAAMkiB,EAActe,OAAOge,EAAcM,aACnCC,EAAave,OAAOge,EAAcO,YACpCN,IACAE,GAA4BC,EAAQI,YACxC,MAAMC,QAAuBR,EACzB3jB,KAAKyhB,OAAO2C,kBAAkBpkB,KAAKshB,gBAAiBsC,EAAYI,EAAaC,EAAYJ,EAAa1b,EAAOC,QAAmB2b,GAChI/jB,KAAKyhB,OAAO4C,qBAAqBrkB,KAAKshB,gBAAiBsC,EAAYI,EAAaC,EAAYJ,EAAa1b,EAAOC,QAAmB2b,IACvI,IAAKI,EAAcG,QACf,MAAM,IAAIjD,EAAoBkD,kBAAkB,gBACpD,OAAOJ,CACX,CAOA,kBAAMK,CAAa/V,EAAO/C,GACtB,GAAY,MAARA,EACA,OACJ,IAAI+Y,GAAc,EA0BlB,OAzBIhW,aAAiBxJ,EAAOyf,kBACxBD,QAAoBzkB,KAAK2kB,uBAAuBjZ,EAAM+C,GAC9B,MAApBA,EAAMmW,MAAMC,MAAgBnZ,EAAKoZ,aAAerW,EAAMmW,KAAKC,OAC3DnZ,EAAKoZ,WAAarW,EAAMmW,KAAKC,KAC7BJ,KAAgB,IAGpBhW,aAAiBxJ,EAAO8f,aACxBN,QAAoBzkB,KAAKglB,kBAAkBtZ,EAAM+C,GACzB,MAApBA,EAAMmW,MAAMC,MAAgBnZ,EAAKuZ,YAAcxW,EAAMmW,KAAKC,OAC1DnZ,EAAKuZ,UAAYxW,EAAMmW,KAAKC,KAC5BJ,KAAgB,IAGpBhW,aAAiBxJ,EAAOigB,cACxBT,QAAoBzkB,KAAKmlB,mBAAmBzZ,EAAM+C,GAC1B,MAApBA,EAAMmW,MAAMC,MAAgBnZ,EAAK0Z,aAAe3W,EAAMmW,KAAKC,OAC3DnZ,EAAK0Z,WAAa3W,EAAMmW,KAAKC,KAC7BJ,KAAgB,IAGxBzkB,KAAK6hB,OAAOwD,KAAK,oBAAsB5W,EAAMR,YAAY2D,KAAO,kBAAoBlG,EAAK4Z,0BAA4B,UAAW5Z,GAC5H+Y,SACM/Y,EAAK6Z,gBAER,CACX,CAIA,UAAMpW,GAAiD,IAA5CqW,EAAQ5jB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAU6jB,EAAgB7jB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACzC,GAAI5B,KAAKgiB,cACL,OACJ,MAAM0D,EAA8C,MAA3B1lB,KAAKmlB,oBAAwD,MAA1BnlB,KAAKglB,mBAA4D,MAA/BhlB,KAAK2kB,uBAGnG,IAAIgB,EAAa,GASjB,GAJID,GACA1lB,KAAKuhB,mBAAmBnS,iBAAiBpP,KAAK4lB,MAL7BC,CAACpX,EAAO/C,KACzBia,EAAWre,KAAK,CAAEmH,QAAO/C,SAClBrH,QAAQC,YAGmDtE,KAAK8lB,iBAAiBC,KAAK,KAAM/lB,OAClGylB,SACKzlB,KAAKgmB,iBACXN,EAAkB,CAElB,IAAK,IAAIjX,KAASkX,QACR3lB,KAAKwkB,aAAa/V,EAAMA,MAAOA,EAAM/C,MAG/C1L,KAAKuhB,mBAAmBhS,mBAAmBvP,KAAK4lB,MAChD5lB,KAAKuhB,mBAAmBnS,iBAAiBpP,KAAK4lB,KAAM5lB,KAAKwkB,aAAauB,KAAK/lB,MAAOA,KAAK8lB,iBAAiBC,KAAK,KAAM/lB,MACvH,CACKwlB,GACDxlB,KAAKimB,oBACTjmB,KAAK6hB,OAAOwD,KAAK,oCACjBrlB,KAAKgiB,eAAgB,CACzB,CACAiE,iBAAAA,GAC8B,MAAtBjmB,KAAKkmB,eAAuD,IAA9BlmB,KAAKkmB,cAAcrkB,SAErD7B,KAAKiiB,aAAekE,aAAY,KAC5BnmB,KAAKomB,MAAM,GACZ,KACP,CACA,oBAAMJ,CAAeK,GACA,MAAbA,IACAA,QAAkBrmB,KAAKkO,eAAeM,MAAM,CAAC,CAAC,CAAExE,IAAK,OAAQ9G,MAAOlD,KAAK4lB,MAAQ,CAAE5b,IAAK,QAAS9G,MAAOlD,KAAKsmB,sBAAwB3X,GAAQ,IAAI3O,KAAK8lB,iBAAiB9lB,KAAM2O,MAEjL,MAAM4X,EAAe,GACfC,EAAc,SACdniB,QAAQoE,IAAI4d,EAAU3d,KAAKgD,GAASA,EAAK+a,OAAM,GAAOzd,MAAK0d,IACzDhb,EAAKib,iBACLH,EAAYlf,KAAKoE,GAGbgb,GACAH,EAAajf,KAAKoE,EAC1B,IACDkX,OAAMrR,GAAKvR,KAAK6hB,OAAOgB,MAAM,oCAAsCnX,EAAK4Z,0BAA4B,KAAM/T,cACvGvR,KAAKkO,eAAe0Y,UAAUJ,SAC9BxmB,KAAKkO,eAAe2Y,QAAQN,EACtC,CACA,UAAMH,CAAK7X,GACM,MAATA,IACAA,QAAcvO,KAAKkO,eAAeM,MAAM,CAAC,CAAC,CAAExE,IAAK,OAAQ9G,MAAOlD,KAAK4lB,MAAQ,CAAE5b,IAAK,QAAS9G,MAAOlD,KAAKkmB,kBAAoBvX,GAAQ,IAAI3O,KAAK8lB,iBAAiB9lB,KAAM2O,MACzK,IAAK,IAAImY,KAAe9mB,KAAK8hB,aAAaiF,SAAU,CAChD,MAAM7jB,EAAQ4jB,EAAYE,QACb,MAAT9jB,GACAA,EAAM+jB,OAAM,EACpB,CACA1Y,EAAMQ,SAAQ7L,IACVA,EAAM+jB,OAAM,EAAK,GAEzB,CACAC,YAAAA,CAAaxb,GACT,OAAKA,EAAKyb,eAMNnnB,KAAK8hB,aAAasF,OAAO1b,EAAK2b,SAE3BrnB,KAAKkO,eAAeoZ,KAAK5b,KAP5B1L,KAAK6hB,OAAO0F,MAAM,wBAA0B7b,EAAK2b,QAAU,2CAC3DrnB,KAAK8hB,aAAaxL,IAAI5K,EAAK2b,QAAS,IAAIG,QAAQ9b,IACzCrH,QAAQC,UAMvB,CACAmjB,cAAAA,CAAe/b,GAEX,OADA1L,KAAK8hB,aAAasF,OAAO1b,EAAK2b,SACzB3b,EAAKyb,YAEHnnB,KAAKkO,eAAewZ,OAAOhc,GADvBrH,QAAQC,SAEvB,CAIA,UAAMgL,GACFtP,KAAKgiB,eAAgB,EACrBhiB,KAAKuhB,mBAAmBhS,mBAAmBvP,KAAK4lB,MAChD5lB,KAAK6hB,OAAOwD,KAAK,gCACQ,MAArBrlB,KAAKiiB,cACL0F,cAAc3nB,KAAKiiB,aAC3B,CAIA2F,cAAAA,GACI,OAAO5nB,KAAK0hB,OAAO1hB,KAAKwhB,SAASqG,2BACrC,gCCtQJ7kB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmG,SAAWnG,EAAQgoB,KAAOhoB,EAAQioB,aAAejoB,EAAQkoB,cAAgBloB,EAAQmoB,YAAcnoB,EAAQooB,cAAgBpoB,EAAQujB,eAAiBvjB,EAAQwF,UAAYxF,EAAQqoB,UAAYroB,EAAQsoB,oBAAiB,EACzN,MAAMvnB,EAAYC,EAAQ,OACpBunB,EAAKvnB,EAAQ,MACbyC,EAAWzC,EAAQ,OACnBuC,EAAavC,EAAQ,OAC3B,SAASsnB,EAAeE,EAAelgB,GACnC,OAAO,IAAI/D,SAAQ,CAACC,EAASikB,KACzB,MAAMC,EAAUC,WAAWnkB,EAASgkB,GACjB,MAAflgB,GACAA,EAAYsgB,iBAAiB,SAAS,KAClCC,aAAaH,GACbD,EAAO,IAAI1kB,MAAM,WAAW,GAC9B,GAEd,CAeA,SAASyB,EAAUiO,GACf,MAAO,CACHgU,MAAO,SAAC9mB,GAAG,QAAAwJ,EAAArI,UAAAC,OAAKsT,EAAI,IAAAhL,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJ+K,EAAI/K,EAAA,GAAAxI,UAAAwI,GAAA,OAAKwe,QAAQrB,MAAMhU,EAAS9S,KAAQ0U,EAAK,EAC7DkQ,KAAM,SAAC5kB,GAAG,QAAAooB,EAAAjnB,UAAAC,OAAKsT,EAAI,IAAAhL,MAAA0e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3T,EAAI2T,EAAA,GAAAlnB,UAAAknB,GAAA,OAAKF,QAAQvD,KAAK9R,EAAS9S,KAAQ0U,EAAK,EAC3D4T,KAAM,SAACtoB,GAAG,QAAAuoB,EAAApnB,UAAAC,OAAKsT,EAAI,IAAAhL,MAAA6e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9T,EAAI8T,EAAA,GAAArnB,UAAAqnB,GAAA,OAAKL,QAAQG,KAAKxV,EAAS9S,KAAQ0U,EAAK,EAC3D0N,MAAO,SAACpiB,GAAG,QAAAyoB,EAAAtnB,UAAAC,OAAKsT,EAAI,IAAAhL,MAAA+e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhU,EAAIgU,EAAA,GAAAvnB,UAAAunB,GAAA,OAAKP,QAAQ/F,MAAMtP,EAAS9S,KAAQ0U,EAAK,EAErE,CArBArV,EAAQsoB,eAAiBA,EAazBtoB,EAAQqoB,UAZR,SAAmBiB,GACf,IAAIC,EACJ,MAAO,IACY,MAAXA,GACAA,EAAUD,IACHC,GAGAA,EAAQzG,OAAM,IAAMyG,EAAUD,KAGjD,EAUAtpB,EAAQwF,UAAYA,EACpB,MAAMuc,EAASvc,EAAU,WA0BzBxF,EAAQujB,eAzBRhU,eAA8Bia,EAAMC,EAAaC,EAAcphB,IAC3DmhB,EAAcA,GAAe,CAAC,GAClBE,WAAaF,EAAYE,YAAc,EACnDF,EAAYG,MAAQH,EAAYG,OAAS,IACzCH,EAAYI,YAAyC,MAA3BJ,EAAYI,aAA6BJ,EAAYI,YAC/E,IAAIC,EAAM,KACV,IAAK,IAAI5e,EAAI,EAAGA,EAAIue,EAAYE,WAAYze,IAAK,CAC7C,IAEI,aADmBse,GAEvB,CACA,MAAO/X,GACH,GAAoB,MAAhBiY,GAAwBA,EAAajY,GACrC,MAAMA,EACVqY,EAAMrY,EACNsQ,EAAOgB,MAAM,0CAA4C7X,EAAGuG,EAChE,CACA,GAAmB,MAAfnJ,GAAuBA,EAAYyhB,QACnC,MAAM,IAAIhmB,MAAM,WAChBmH,IAAMue,EAAYE,WAAa,SACzBrB,EAAemB,EAAYI,YAAcJ,EAAYG,MAAQtgB,KAAK8O,IAAI,EAAGlN,GAAKue,EAAYG,MAAOthB,EAE/G,CACA,MAAMwhB,CACV,EAEA,MAAM1B,EAMF,oBAAO4B,CAAcvZ,GACjB,OAAQA,GAAK2X,EAAc6B,UAAY,EAAIxZ,GAAK2X,EAAc8B,WAAa,EAAI,CACnF,CAOA,uBAAOC,CAAiB1Z,EAAG2Z,GACvB,OAAOhC,EAAc4B,cAAcvZ,GAAKA,EAAI2Z,CAChD,CAMA,6BAAOC,CAAuBtjB,GAC1B,IAAIujB,EAAU,EACd,IAAK,IAAIC,KAAMxjB,EAAGyjB,aACTD,EAAGroB,UAAUue,OAAO1f,EAAU0pB,qBAAqBvoB,YACpDooB,IAER,OAAOA,CACX,CAMA,gBAAOI,CAAU3jB,EAAI4jB,GACjB,MAAMC,EAAa,CAACD,EAASE,YACvBxoB,EAAU,IAAIyoB,IAAIF,GAClBG,EAAW,IAAID,IAAIF,GACnBI,EAAUjkB,EAAGyjB,aAAarhB,QAAO,CAAC8hB,EAAKV,KACzCA,EAAGjL,KAAKrQ,SAAQoQ,IAA0B,IAAzB,OAAEW,EAAM,SAAEC,GAAUZ,EACjC,MAAM6L,EAAKlL,EAAO6K,WACd5K,GACA5d,EAAQI,IAAIyoB,GAChBH,EAAStoB,IAAIyoB,EAAG,IAEpBH,EAAStoB,IAAI8nB,EAAGroB,UAAU2oB,YAC1B,MAAMM,EAAWZ,EAAGjL,KAAKvd,OACnBqpB,EAAab,EAAG1mB,KAAK9B,OAC3B,OAAQkpB,EACJ,EACA7C,EAAc+B,iBAAiBgB,EAAU,GACzC/C,EAAc+B,iBAAiBiB,EAAY,EAAE,GAClD,GACH,OAAQhD,EAAc+B,iBAAiB9nB,EAAQ+nB,KAAM,IACjD,EACAhC,EAAc+B,iBAAiBY,EAASX,KAAM,IAC9C,GACAhC,EAAc4B,cAAcjjB,EAAGyjB,aAAazoB,QAC5CipB,CACR,EAGJhrB,EAAQooB,cAAgBA,EAExBA,EAAc6B,UAAY,IAC1B7B,EAAc8B,WAAa,MAM3BlqB,EAAQmoB,YALR,SAAqBkD,EAAajlB,EAAOklB,GACrC,OAAOD,EACHjlB,EAAMzB,SAAS,IAAI4mB,SAAS,GAAI,KAChCD,EAAc3mB,SAAS,IAAI4mB,SAAS,EAAG,IAC/C,EAWAvrB,EAAQkoB,cATR,SAAuBsD,GACnB,GAAyB,KAArBA,EAAUzpB,OACV,MAAM,IAAIgC,MAAM,8BAAgCynB,EAAUzpB,QAC9D,MAAO,CACHspB,YAAaG,EAAU5d,MAAM,EAAG,IAChCxH,MAAO,IAAImiB,EAAGiD,EAAU5d,MAAM,GAAI,IAAK,OACvC0d,cAAejgB,SAASmgB,EAAU5d,MAAM,GAAI,IAAK,IAEzD,EAQA5N,EAAQioB,aANR,SAAsBoD,EAAatlB,GAC/B,OAAOxC,EAAW,UAAUU,OAAOR,EAASgB,OAAO4T,OAAO,CACtD5U,EAASgB,OAAOC,KAAK2mB,EAAa,OAClCtlB,EAAS0lB,YAAYhoB,EAASgB,OAAQ,KAAM,MAC5CP,SAASS,SAAS,MAC1B,EAOA3E,EAAQgoB,KALR,SAAc5kB,GACV,OAAa,MAATA,EACO,KACJ,IAAImlB,EAAGnlB,EAAMuB,SAAS,IACjC,EAOA3E,EAAQmG,SALR,SAAkB/C,GACd,OAAa,MAATA,EACO,KACJwC,OAAOxC,EAAMuB,SAAS,IACjC,6BCnKA3E,EAAQ,OAAmB,EAkB3BA,EAAQ,EAjBe,CACrB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,kBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,yKAEP,SAAY,mCCnBhBkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0rB,2BAAwB,EAChC,MAAMC,EAAmB3qB,EAAQ,OAC3B4qB,EAAiB5qB,EAAQ,OACzBqE,EAAUrE,EAAQ,OAClB6qB,EAAuB7qB,EAAQ,OAC/B8qB,EAAyB9qB,EAAQ,OACjC+gB,GAAS,EAAI1c,EAAQG,WAAW,oBAEhCumB,EAAyB,MAC3B,IACI,IAAIC,GAAiB,EACrB,MAQMC,EARU,IAAIC,QAAQ,uBAAwB,CAChDC,KAAM,IAAIC,eACVC,OAAQ,OACR,UAAIC,GAEA,OADAN,GAAiB,EACV,MACX,IAE2BO,QAAQC,IAAI,gBAC3C,OAAOR,IAAmBC,CAC9B,CACA,MAAOxa,GAEH,OADAqX,QAAQ/F,MAAM,6DAA8DtR,IACrE,CACX,CACH,EAlB8B,GAmB/BsQ,EAAOwD,KAAK,wCAA0CwG,GA6ItD/rB,EAAQ0rB,sBAjIRnc,eAAqCkd,EAAKN,EAAMO,EAAQhE,EAASiE,EAAQC,GAChD,MAAjBA,IACAA,EAAgBb,GACL,MAAXrD,IACAiE,GAAS,EAAItnB,EAAQwnB,eAAenE,EAAS,IAAI3kB,MAAM,6BAA8B4oB,IACzF,MAAMtd,EAAO,CACTgd,OAAQ,OACRE,QAAS,CAAC,GAERO,EAAYC,KAAKC,MACjBC,EAAkB,CAAC,EACnBC,EAAW,GACjB,GAAKN,EAwBA,CACD,MAAMO,EAAe,IAAItB,EAAqBuB,mBAC9C,IAAIC,GAAmB,EACvB,IAAK,IAAInjB,KAAOiiB,EACRA,EAAKjiB,aAAgB3F,SACrB2oB,EAAS1lB,KAAK2kB,EAAKjiB,GAAKhB,MAAM2F,IAC1BkT,EAAO0F,MAAMgF,EAAM,kBAAoBM,KAAKC,MAAQF,GAAa,oBAAqB,CAAE,CAAC5iB,GAAM2E,IACxFse,EAAaG,YAAY,CAC5B,CAACpjB,GAAM2E,QAGfwe,GAAmB,GAGnBJ,EAAgB/iB,GAAOiiB,EAAKjiB,GAGpC,GAAImjB,EAAkB,CAClBhe,EAAK8c,KAAOgB,EAAaI,oBACzBle,EAAKkd,QAAQ,gBAAkB,8BAC/Bld,EAAKid,OAAS,OACdvK,EAAO0F,MAAMgF,EAAM,uBAAyBM,KAAKC,MAAQF,GAAa,oBAAqBG,GAC3FC,EAAS1lB,KAAK2lB,EAAaG,YAAYL,IACvC,MAAMO,GAAkB,EAAInoB,EAAQooB,uBAAuBd,GAC3DA,EAASa,EAAgBb,OACzBpoB,QAAQoE,IAAIukB,GAAUhkB,MAAK,IAAMikB,EAAaO,QAAO5K,OAAMrR,IACvDA,EAAEkc,oBAAqB,EACvBH,EAAgBI,MAAMnc,EAAE,IAE5Bkb,EAAO/D,iBAAiB,SAAS,IAAMuE,EAAaO,OACxD,MAEI3L,EAAO0F,MAAMgF,EAAM,uBAAyBM,KAAKC,MAAQF,GAAa,wBAAyBG,GAC/F5d,EAAK8c,KAAO0B,KAAKC,UAAUb,GAC3B5d,EAAKkd,QAAQ,gBAAkB,kBAEvC,KA5DoB,CAChB,IAAK,IAAIriB,KAAOiiB,EACRA,EAAKjiB,aAAgB3F,QACrB2oB,EAAS1lB,KAAK2kB,EAAKjiB,GAAKhB,MAAM2F,IAC1Boe,EAAgB/iB,GAAO2E,CAAG,KAI9Boe,EAAgB/iB,GAAOiiB,EAAKjiB,GAGpC,UACU3F,QAAQoE,IAAIukB,EACtB,CACA,MAAOzb,GAEH,MADAA,EAAEkc,oBAAqB,EACjBlc,CACV,CACc,MAAVkb,GACAA,EAAOoB,iBACXhM,EAAO0F,MAAMgF,EAAM,uBAAyBM,KAAKC,MAAQF,GAAa,wBAAyBG,GAC/F5d,EAAK8c,KAAO0B,KAAKC,UAAUb,GAC3B5d,EAAKkd,QAAQ,gBAAkB,kBACnC,CAsCc,MAAVI,IACAtd,EAAKsd,OAASA,GAClBtd,EAAKkd,QAAgB,OAAI,8BACzB,MAAMyB,QAAaC,MAAMxB,EAAKpd,GAAMyT,OAAMrR,IACtC,MAAmB,MAAfpC,EAAKsd,QAA6B,eAAXlb,EAAEK,KACnBzC,EAAKsd,OAAOuB,QAGD,MAAbzc,EAAE0c,UACF1c,EAAE0c,SAAWvB,EAAgB,mBAAqB,wBAChDnb,EACV,IAGJ,GADAsQ,EAAO0F,MAAMgF,EAAM,uBAAyBM,KAAKC,MAAQF,GAAa,QAAUF,EAAgB,kBAAoB,uBAAyB,KAAMoB,EAAKI,QACpI,MAAhBJ,EAAKI,OAAgB,CACrB,IAAIC,EACJ,IACIA,QAAgBL,EAAKM,MACzB,CACA,MAAO7c,GACH,MAAM,IAAIma,EAAe2C,aAAaP,EAAKQ,WAAYR,EAAKI,OAChE,CACA,MAAM,IAAIxC,EAAe2C,aAAaF,EAASL,EAAKI,OACxD,CACA,GAAyC,gCAArCJ,EAAKzB,QAAQzgB,IAAI,gBAAmD,CACpE,MAAM2iB,QAAiBT,EAAKU,OAE5B,OADA3M,EAAO0F,MAAMgF,EAAM,qBAAuBM,KAAKC,MAAQF,GAAa,6BAA8B2B,IAC3F,EAAIppB,EAAQspB,WAAWjC,GAAQ,CAACkC,EAAa1kB,KAChD,MAAM9G,EAAQqrB,EAASvkB,GACjB2kB,GAAS,EAAIlD,EAAiBmD,aAAaF,EAAaxrB,GAC9D,YAAepB,IAAX6sB,EACOtqB,QAAQkkB,OAAO,IAAI1kB,MAAM,wBAGzBQ,QAAQC,QAAQqqB,EAC3B,GAER,CACK,CACD,MAAME,EAAU,IAAIjD,EAAuBkD,qBAAqBhB,EAAM3e,EAAKsd,QAC3E,OAAO,EAAItnB,EAAQspB,WAAWjC,GAAQ,CAACkC,EAAa1kB,IAAQ6kB,EAAQE,SAAS/kB,GAAK4Y,OAAMrR,IACpF,KAAI,EAAIka,EAAiBuD,iBAAiBN,GAE1C,MAAMnd,CAAC,IACRvI,MAAK9F,IACJ2e,EAAO0F,MAAMgF,EAAM,2BAA6BM,KAAKC,MAAQF,GAAa,yBAA0B,CAAE,CAAC5iB,GAAM9G,IAC7G,MAAMyrB,GAAS,EAAIlD,EAAiBmD,aAAaF,EAAaxrB,GAC9D,YAAepB,IAAX6sB,EACOtqB,QAAQkkB,OAAO,IAAI1kB,MAAM,wBAGzB8qB,CACX,KAER,CACJ,+BCxKA3rB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmvB,uBAAoB,EAC5B,MAAM1rB,EAAWzC,EAAQ,OACzBhB,EAAQmvB,kBAAoB,CACxBlqB,SAAU,SAAC7B,GAAqC,IAA9BgsB,EAAUttB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAMC,EAAMD,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACnCilB,EAAS5c,MAAMtI,GACnB,IAAK,IAAImJ,EAAI,EAAGA,EAAInJ,EAAQmJ,IACxB+b,EAAO/b,GAAKmkB,OAAe,MAARjsB,GACnBA,IAAU,GAEd,MAAMY,EAAOP,EAASgB,OAAOC,KAAKuiB,GAGlC,MAFmB,OAAfmI,GACAprB,EAAK8J,UACF9J,CACX,EACAsrB,WAAY,SAAClsB,GACT,GAAmB,QADOtB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,MACJ,CACrB,MAAMytB,EAAM9rB,EAASgB,OAAO0b,MAAM/c,EAAMrB,QACxCqB,EAAMqU,KAAK8X,GACXA,EAAIzhB,UACJ1K,EAAQmsB,CACZ,CACA,IAAIC,EAAc,GAClB,IAAK,IAAIC,KAAQrsB,EACbosB,IAAgB,GAChBA,GAAe5pB,OAAO6pB,GAE1B,OAAOD,CACX,6GC7BJ,MAAAE,EAAA1uB,EAAA,OACA2uB,EAAA3uB,EAAA,OAgBahB,EAAAA,IAAM4vB,CAACjf,EAAWS,EAAWE,IAAeX,EAAIS,GAAOT,EAAIW,EAE3DtR,EAAAA,IAAM6vB,CAAClf,EAAWS,EAAWE,IAAeX,EAAIS,EAAMT,EAAIW,EAAMF,EAAIE,EAMjF,MAAsBwe,UAAoCH,EAAAI,KAcxD5hB,WAAAA,CACW6hB,EACFC,EACEC,EACAC,GAET7pB,QALS,KAAA0pB,SAAAA,EACF,KAAAC,UAAAA,EACE,KAAAC,UAAAA,EACA,KAAAC,KAAAA,EATD,KAAAC,UAAW,EACX,KAAAruB,OAAS,EACT,KAAAsuB,IAAM,EACN,KAAAC,WAAY,EASpBpwB,KAAKqwB,OAAS,IAAIC,WAAWR,GAC7B9vB,KAAKuwB,MAAO,EAAAd,EAAAe,YAAWxwB,KAAKqwB,OAC9B,CACAtsB,MAAAA,CAAOJ,IACL,EAAA6rB,EAAAiB,QAAOzwB,MACP,MAAM,KAAEuwB,EAAI,OAAEF,EAAM,SAAEP,GAAa9vB,KAE7BmS,GADNxO,GAAO,EAAA8rB,EAAAiB,SAAQ/sB,IACE9B,OACjB,IAAK,IAAIsuB,EAAM,EAAGA,EAAMhe,GAAO,CAC7B,MAAMwe,EAAOvnB,KAAKsI,IAAIoe,EAAW9vB,KAAKmwB,IAAKhe,EAAMge,GAEjD,GAAIQ,IAASb,EAKbO,EAAO/Z,IAAI3S,EAAKitB,SAAST,EAAKA,EAAMQ,GAAO3wB,KAAKmwB,KAChDnwB,KAAKmwB,KAAOQ,EACZR,GAAOQ,EACH3wB,KAAKmwB,MAAQL,IACf9vB,KAAK6wB,QAAQN,EAAM,GACnBvwB,KAAKmwB,IAAM,OAVb,CACE,MAAMW,GAAW,EAAArB,EAAAe,YAAW7sB,GAC5B,KAAOmsB,GAAY3d,EAAMge,EAAKA,GAAOL,EAAU9vB,KAAK6wB,QAAQC,EAAUX,EAExE,CAQF,CAGA,OAFAnwB,KAAK6B,QAAU8B,EAAK9B,OACpB7B,KAAK+wB,aACE/wB,IACT,CACAgxB,UAAAA,CAAWjqB,IACT,EAAAyoB,EAAAiB,QAAOzwB,OACP,EAAAwvB,EAAAnvB,QAAO0G,EAAK/G,MACZA,KAAKkwB,UAAW,EAIhB,MAAM,OAAEG,EAAM,KAAEE,EAAI,SAAET,EAAQ,KAAEG,GAASjwB,KACzC,IAAI,IAAEmwB,GAAQnwB,KAEdqwB,EAAOF,KAAS,IAChBnwB,KAAKqwB,OAAOO,SAAST,GAAKc,KAAK,GAG3BjxB,KAAKgwB,UAAYF,EAAWK,IAC9BnwB,KAAK6wB,QAAQN,EAAM,GACnBJ,EAAM,GAGR,IAAK,IAAInlB,EAAImlB,EAAKnlB,EAAI8kB,EAAU9kB,IAAKqlB,EAAOrlB,GAAK,GAzFrD,SAAsBulB,EAAgBW,EAAoBhuB,EAAe+sB,GACvE,GAAiC,oBAAtBM,EAAKY,aAA6B,OAAOZ,EAAKY,aAAaD,EAAYhuB,EAAO+sB,GACzF,MAAMmB,EAAO1rB,OAAO,IACd2rB,EAAW3rB,OAAO,YAClB4rB,EAAKnC,OAAQjsB,GAASkuB,EAAQC,GAC9BE,EAAKpC,OAAOjsB,EAAQmuB,GACpBG,EAAIvB,EAAO,EAAI,EACfze,EAAIye,EAAO,EAAI,EACrBM,EAAKkB,UAAUP,EAAaM,EAAGF,EAAIrB,GACnCM,EAAKkB,UAAUP,EAAa1f,EAAG+f,EAAItB,EACrC,CAmFIkB,CAAaZ,EAAMT,EAAW,EAAGpqB,OAAqB,EAAd1F,KAAK6B,QAAaouB,GAC1DjwB,KAAK6wB,QAAQN,EAAM,GACnB,MAAMmB,GAAQ,EAAAjC,EAAAe,YAAWzpB,GACnBoL,EAAMnS,KAAK+vB,UAEjB,GAAI5d,EAAM,EAAG,MAAM,IAAItO,MAAM,+CAC7B,MAAM8tB,EAASxf,EAAM,EACfzR,EAAQV,KAAK4L,MACnB,GAAI+lB,EAASjxB,EAAMmB,OAAQ,MAAM,IAAIgC,MAAM,sCAC3C,IAAK,IAAImH,EAAI,EAAGA,EAAI2mB,EAAQ3mB,IAAK0mB,EAAMD,UAAU,EAAIzmB,EAAGtK,EAAMsK,GAAIilB,EACpE,CACAjsB,MAAAA,GACE,MAAM,OAAEqsB,EAAM,UAAEN,GAAc/vB,KAC9BA,KAAKgxB,WAAWX,GAChB,MAAMuB,EAAMvB,EAAO3iB,MAAM,EAAGqiB,GAE5B,OADA/vB,KAAK6xB,UACED,CACT,CACAE,UAAAA,CAAWC,GACTA,IAAAA,EAAO,IAAK/xB,KAAKiO,aACjB8jB,EAAGzb,OAAOtW,KAAK4L,OACf,MAAM,SAAEkkB,EAAQ,OAAEO,EAAM,OAAExuB,EAAM,SAAEquB,EAAQ,UAAEE,EAAS,IAAED,GAAQnwB,KAM/D,OALA+xB,EAAGlwB,OAASA,EACZkwB,EAAG5B,IAAMA,EACT4B,EAAG7B,SAAWA,EACd6B,EAAG3B,UAAYA,EACXvuB,EAASiuB,GAAUiC,EAAG1B,OAAO/Z,IAAI+Z,GAC9B0B,CACT,EApGFjyB,EAAAA,OAAA8vB,qGCzBA,MAAAoC,EAAAlxB,EAAA,OAsBAhB,EAAAA,YAAA,SAA4BqI,GAC1B,GAAqB,kBAAVA,EAAoB,CAE7B,MAAM8pB,EAAa9pB,EAAMI,MAAM,KAM/B,MAAO,CACL2pB,OANavE,KAAKwE,MAAMH,EAAUvS,OAAOwS,EAAW,KAOpDG,QANczE,KAAKwE,MAAMH,EAAUvS,OAAOwS,EAAW,KAOrDhuB,UANgBguB,EAAW,IAQxB,GAAqB,kBAAV9pB,EAAoB,CACpC,GAA6B,kBAAlBA,EAAMiqB,QACf,MAAM,IAAIvuB,MAAM,wDAElB,IAAIuuB,EAAUjqB,EAAMiqB,QACK,MAArBjqB,EAAMiqB,QAAQ,KAChBA,EAAUJ,EAAUvS,OAAO2S,IAG7B,MAAMC,EAAkB,GAMxB,OALClqB,EAAM+pB,OAAexpB,KAAK4pB,IACzB,MAAMJ,EAASvE,KAAKwE,MAAMH,EAAUvS,OAAO6S,IAC3CD,EAAW/qB,KAAK4qB,EAAO,IAGlB,CACLA,OAAQG,EACRD,QAASzE,KAAKwE,MAAMC,GACpBnuB,UAAWkE,EAAMlE,WAGvB,oNCzDA,MAAA6a,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OA6HA,SAAgByxB,EAA8BpT,GAIrB,IAJsB,UAC3Cnd,EACAod,MAAOoT,EAASnxB,EAAME,KAAUI,GAAa,KAC7CgC,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAnxB,OACAE,QACAI,gBAEJgC,KAAM7D,EAAA2yB,oBAAoBhT,OAAO9b,GAEzC,CAnIa7D,EAAAA,qBAAsB,EAAAgf,EAAAY,QAA4B,EAAC,EAAAZ,EAAAa,IAAG,gBAAgB,EAAAZ,EAAA2T,KAAI,YAcvF5yB,EAAAA,sBAAA,SACI0yB,EACAnxB,EACAE,EACAC,GAE4B,IAD5BG,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAEjDze,EACAI,GAGEgC,EAAOY,EAAO0b,MAAMngB,EAAA2yB,oBAAoBvS,MAS9C,OARApgB,EAAA2yB,oBAAoBtS,OAChB,CACId,YAAaJ,EAAAmB,iBAAiByS,KAC9BrxB,OAAQkE,OAAOlE,IAEnBmC,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAyBA7D,EAAAA,sBAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAA2yB,oBAAoBvS,KAAM,MAAM,IAAIlB,EAAAyB,iCAEpE,MACIrB,MAAM,QAAEoT,EAAO,KAAEnxB,EAAI,MAAEE,EAAK,aAAEI,GAAc,KAC5CgC,GACA4uB,EAA+BlT,GACnC,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiByS,KAAM,MAAM,IAAI7T,EAAA0B,iCAC1D,IAAK8R,IAAYnxB,IAASE,EAAO,MAAM,IAAIyd,EAAA2B,iCAI3C,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAnxB,OACAE,QACAI,gBAEJgC,OAER,EAwBA7D,EAAAA,+BAAAyyB,wLCxIA,MAAAO,EAAAhyB,EAAA,OAEAiyB,EAAAjyB,EAAA,OAkBahB,EAAAA,mBAAqB,UAChC,MAAMkzB,QAAiB,EAAAD,EAAAE,oBAAmBrR,EAAQsR,cAE5C,WAAEC,EAAU,cAAEC,EAAa,QAAEC,EAAO,QAAEpF,GAAYrM,EAAQwQ,QAChE,IAAKe,GAAoC,IAAtBA,EAAWtxB,OAC5B,MAAM,IAAIgC,MAAM,sCAElB,GACEsvB,EAAWG,MACRC,GAAiC,kBAAjBA,EAAK7sB,SAAmD,kBAApB6sB,EAAK3P,aAG5D,MAAM,IAAI/f,MAAM,8BAElB,IAAKuvB,EACH,MAAM,IAAIvvB,MAAM,kCAGlB,IACE,MACM2vB,EAAyD,CAC7DH,UACAD,gBACAnF,UACAkF,WAL6DA,EA5BhDzqB,KAAKxF,IACpB,MAAM,QAAEwD,EAAO,WAAEkd,GAAe1gB,EAChC,MAAO,CACLwD,UACAkd,WAAYA,EAAWnf,WACxB,KA8BKgvB,GAAU,EAAAX,EAAAY,sBAAqBF,GAC/BG,QAAiBX,EAASY,mBAAmBH,GACnD7R,EAAQiS,WAAWF,GACnB,MAAO9Q,GACP+F,QAAQ/F,MAAM,sDAAuDA,GACrEjB,EAAQkS,4CCzBZ/zB,EAAOD,QAAUi0B,EACjB,IAAIC,EAAYlzB,EAAQ,OAExB,SAASizB,EAAYnS,GACnB,KAAM5hB,gBAAgB+zB,GAAc,OAAO,IAAIA,EAAYnS,GAC3DoS,EAAUld,KAAK9W,KAAM4hB,EACvB,CAJA9gB,EAAQ,MAARA,CAAoBizB,EAAaC,GAKjCD,EAAYnpB,UAAUqpB,WAAa,SAAUC,EAAOC,EAAUC,GAC5DA,EAAG,KAAMF,EACX,6BC/BAp0B,EAAQ,OAAmB,EAkB3BA,EAAQ,EAjBe,CACrB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,gBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,6DAEP,SAAY,mCCChB,MAAMu0B,EAAgBvzB,EAAQ,OACxBwzB,EAAgBxzB,EAAQ,OACxByzB,EAAgBzzB,EAAQ,MACxB0zB,EAAgB1zB,EAAQ,QASxB,SACJ2zB,EAAQ,QAAEC,EAAO,QAAEC,EAAO,KAC1BC,EAAI,aAAEC,EAAY,YAAEC,EAAW,eAAEC,EAAc,aAAEC,EAAY,YAAEC,EAAW,YAAEC,EAAW,WACvFC,GACEr0B,EAAQ,OAOHs0B,EAAO,MAUPC,EAAO,MACHzP,EAAO,MACP0P,EAAS,MAETC,EAAQ,MAKJC,EAAO,MACPC,EAAM,MAMdC,EAAQ,MAGRC,EAAM,MACNC,EAAM,MAgBTC,EAAWzc,IAEJA,IAAM,GAAM,MACbA,IAAM,EAAK,SACP,MAAJA,IAAe,KACX,IAAJA,IAAa,IAIzB,SAAS0c,IACP91B,KAAK+1B,KAAO,KACZ/1B,KAAKyK,KAAO,EACZzK,KAAKg2B,MAAO,EACZh2B,KAAKi2B,KAAO,EAEZj2B,KAAKk2B,UAAW,EAChBl2B,KAAKm2B,MAAQ,EAEbn2B,KAAKo2B,KAAO,EACZp2B,KAAKq2B,MAAQ,EACbr2B,KAAKs2B,MAAQ,EAEbt2B,KAAKu2B,KAAO,KAGZv2B,KAAKw2B,MAAQ,EACbx2B,KAAKy2B,MAAQ,EACbz2B,KAAK02B,MAAQ,EACb12B,KAAK22B,MAAQ,EACb32B,KAAK42B,OAAS,KAGd52B,KAAK62B,KAAO,EACZ72B,KAAK82B,KAAO,EAGZ92B,KAAK6B,OAAS,EACd7B,KAAK+2B,OAAS,EAGd/2B,KAAKg3B,MAAQ,EAGbh3B,KAAKi3B,QAAU,KACfj3B,KAAKk3B,SAAW,KAChBl3B,KAAKm3B,QAAU,EACfn3B,KAAKo3B,SAAW,EAGhBp3B,KAAKq3B,MAAQ,EACbr3B,KAAKs3B,KAAO,EACZt3B,KAAKu3B,MAAQ,EACbv3B,KAAKw3B,KAAO,EACZx3B,KAAKy3B,KAAO,KAEZz3B,KAAK03B,KAAO,IAAIC,YAAY,KAC5B33B,KAAK43B,KAAO,IAAID,YAAY,KAO5B33B,KAAK63B,OAAS,KACd73B,KAAK83B,QAAU,KACf93B,KAAK+3B,KAAO,EACZ/3B,KAAKg4B,KAAO,EACZh4B,KAAKi4B,IAAM,CACb,CAGA,MAAMC,EAAqBnC,IAEzB,IAAKA,EACH,OAAO,EAET,MAAMr1B,EAAQq1B,EAAKr1B,MACnB,OAAKA,GAASA,EAAMq1B,OAASA,GAC3Br1B,EAAM+J,KAAO2qB,GAAQ10B,EAAM+J,KA7Ff,MA8FL,EAEF,CAAC,EAIJ0tB,EAAoBpC,IAExB,GAAImC,EAAkBnC,GAAS,OAAOhB,EACtC,MAAMr0B,EAAQq1B,EAAKr1B,MAqBnB,OApBAq1B,EAAK31B,SAAW21B,EAAKv1B,UAAYE,EAAM41B,MAAQ,EAC/CP,EAAKt1B,IAAM,GACPC,EAAMu1B,OACRF,EAAKn1B,MAAqB,EAAbF,EAAMu1B,MAErBv1B,EAAM+J,KAAO2qB,EACb10B,EAAMs1B,KAAO,EACbt1B,EAAMw1B,SAAW,EACjBx1B,EAAMy1B,OAAS,EACfz1B,EAAM01B,KAAO,MACb11B,EAAM61B,KAAO,KACb71B,EAAMm2B,KAAO,EACbn2B,EAAMo2B,KAAO,EAEbp2B,EAAMu2B,QAAUv2B,EAAMm3B,OAAS,IAAIO,WAhHjB,KAiHlB13B,EAAMw2B,SAAWx2B,EAAMo3B,QAAU,IAAIM,WAhHlB,KAkHnB13B,EAAMq3B,KAAO,EACbr3B,EAAMs3B,MAAQ,EAEPpD,CAAI,EAIPyD,EAAgBtC,IAEpB,GAAImC,EAAkBnC,GAAS,OAAOhB,EACtC,MAAMr0B,EAAQq1B,EAAKr1B,MAInB,OAHAA,EAAM+1B,MAAQ,EACd/1B,EAAMg2B,MAAQ,EACdh2B,EAAMi2B,MAAQ,EACPwB,EAAiBpC,EAAK,EAKzBuC,EAAgBA,CAACvC,EAAMwC,KAC3B,IAAItC,EAGJ,GAAIiC,EAAkBnC,GAAS,OAAOhB,EACtC,MAAMr0B,EAAQq1B,EAAKr1B,MAenB,OAZI63B,EAAa,GACftC,EAAO,EACPsC,GAAcA,IAGdtC,EAA2B,GAAnBsC,GAAc,GAClBA,EAAa,KACfA,GAAc,KAKdA,IAAeA,EAAa,GAAKA,EAAa,IACzCxD,GAEY,OAAjBr0B,EAAMk2B,QAAmBl2B,EAAM81B,QAAU+B,IAC3C73B,EAAMk2B,OAAS,MAIjBl2B,EAAMu1B,KAAOA,EACbv1B,EAAM81B,MAAQ+B,EACPF,EAAatC,GAAK,EAIrByC,EAAeA,CAACzC,EAAMwC,KAE1B,IAAKxC,EAAQ,OAAOhB,EAGpB,MAAMr0B,EAAQ,IAAIo1B,EAIlBC,EAAKr1B,MAAQA,EACbA,EAAMq1B,KAAOA,EACbr1B,EAAMk2B,OAAS,KACfl2B,EAAM+J,KAAO2qB,EACb,MAAMqD,EAAMH,EAAcvC,EAAMwC,GAIhC,OAHIE,IAAQ7D,IACVmB,EAAKr1B,MAAQ,MAER+3B,CAAG,EAoBZ,IAEIC,EAAQC,EAFRC,GAAS,EAKb,MAAMC,EAAen4B,IAGnB,GAAIk4B,EAAQ,CACVF,EAAS,IAAIN,WAAW,KACxBO,EAAU,IAAIP,WAAW,IAGzB,IAAIU,EAAM,EACV,KAAOA,EAAM,KAAOp4B,EAAMg3B,KAAKoB,KAAS,EACxC,KAAOA,EAAM,KAAOp4B,EAAMg3B,KAAKoB,KAAS,EACxC,KAAOA,EAAM,KAAOp4B,EAAMg3B,KAAKoB,KAAS,EACxC,KAAOA,EAAM,KAAOp4B,EAAMg3B,KAAKoB,KAAS,EAMxC,IAJAtE,EAtRS,EAsRY9zB,EAAMg3B,KAAM,EAAG,IAAKgB,EAAU,EAAGh4B,EAAMk3B,KAAM,CAAEd,KAAM,IAG1EgC,EAAM,EACCA,EAAM,IAAMp4B,EAAMg3B,KAAKoB,KAAS,EAEvCtE,EA3RU,EA2RW9zB,EAAMg3B,KAAM,EAAG,GAAMiB,EAAS,EAAGj4B,EAAMk3B,KAAM,CAAEd,KAAM,IAG1E8B,GAAS,CACX,CAEAl4B,EAAMu2B,QAAUyB,EAChBh4B,EAAMy2B,QAAU,EAChBz2B,EAAMw2B,SAAWyB,EACjBj4B,EAAM02B,SAAW,CAAC,EAkBd2B,EAAeA,CAAChD,EAAMiD,EAAKxL,EAAKjW,KAEpC,IAAI0hB,EACJ,MAAMv4B,EAAQq1B,EAAKr1B,MAqCnB,OAlCqB,OAAjBA,EAAMk2B,SACRl2B,EAAM+1B,MAAQ,GAAK/1B,EAAM81B,MACzB91B,EAAMi2B,MAAQ,EACdj2B,EAAMg2B,MAAQ,EAEdh2B,EAAMk2B,OAAS,IAAItG,WAAW5vB,EAAM+1B,QAIlClf,GAAQ7W,EAAM+1B,OAChB/1B,EAAMk2B,OAAOtgB,IAAI0iB,EAAIpI,SAASpD,EAAM9sB,EAAM+1B,MAAOjJ,GAAM,GACvD9sB,EAAMi2B,MAAQ,EACdj2B,EAAMg2B,MAAQh2B,EAAM+1B,QAGpBwC,EAAOv4B,EAAM+1B,MAAQ/1B,EAAMi2B,MACvBsC,EAAO1hB,IACT0hB,EAAO1hB,GAGT7W,EAAMk2B,OAAOtgB,IAAI0iB,EAAIpI,SAASpD,EAAMjW,EAAMiW,EAAMjW,EAAO0hB,GAAOv4B,EAAMi2B,QACpEpf,GAAQ0hB,IAGNv4B,EAAMk2B,OAAOtgB,IAAI0iB,EAAIpI,SAASpD,EAAMjW,EAAMiW,GAAM,GAChD9sB,EAAMi2B,MAAQpf,EACd7W,EAAMg2B,MAAQh2B,EAAM+1B,QAGpB/1B,EAAMi2B,OAASsC,EACXv4B,EAAMi2B,QAAUj2B,EAAM+1B,QAAS/1B,EAAMi2B,MAAQ,GAC7Cj2B,EAAMg2B,MAAQh2B,EAAM+1B,QAAS/1B,EAAMg2B,OAASuC,KAG7C,CAAC,EAopCVl5B,EAAOD,QAAQu4B,aAAeA,EAC9Bt4B,EAAOD,QAAQw4B,cAAgBA,EAC/Bv4B,EAAOD,QAAQq4B,iBAAmBA,EAClCp4B,EAAOD,QAAQo5B,YAnwCMnD,GAEZyC,EAAazC,EA3LJ,IA67ClBh2B,EAAOD,QAAQ04B,aAAeA,EAC9Bz4B,EAAOD,QAAQq5B,QArpCCA,CAACpD,EAAMqD,KAErB,IAAI14B,EACAT,EAAOI,EACPo3B,EACArsB,EACAosB,EAAM6B,EACNxC,EACAC,EACAwC,EAAKC,EACLhiB,EACA/S,EACAg1B,EAEAC,EAAWC,EAASC,EAEpBC,EAAWC,EAASC,EACpB3nB,EACAsmB,EALAsB,EAAO,EAMX,MAAMC,GAAO,IAAI1J,WAAW,GAC5B,IAAI2J,GAEA1pB,GAEJ,MAAM2pB,GACJ,IAAI5J,WAAW,CAAE,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,KAGjF,GAAI4H,EAAkBnC,KAAUA,EAAK11B,SAC/B01B,EAAK91B,OAA2B,IAAlB81B,EAAK51B,SACvB,OAAO40B,EAGTr0B,EAAQq1B,EAAKr1B,MACTA,EAAM+J,OAASmb,IAAQllB,EAAM+J,KAAO6qB,GAIxClqB,EAAM2qB,EAAKz1B,SACXD,EAAS01B,EAAK11B,OACdg5B,EAAOtD,EAAKx1B,UACZk3B,EAAO1B,EAAK71B,QACZD,EAAQ81B,EAAK91B,MACbu3B,EAAOzB,EAAK51B,SACZ02B,EAAOn2B,EAAMm2B,KACbC,EAAOp2B,EAAMo2B,KAGbwC,EAAM9B,EACN+B,EAAOF,EACPZ,EAAM7D,EAENuF,EACA,OACE,OAAQz5B,EAAM+J,MACZ,KAAK2qB,EACH,GAAmB,IAAf10B,EAAMu1B,KAAY,CACpBv1B,EAAM+J,KAAO6qB,EACb,KACF,CAEA,KAAOwB,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEA,GAAkB,EAAbp2B,EAAMu1B,MAAsB,QAATY,EAAiB,CACnB,IAAhBn2B,EAAM81B,QACR91B,EAAM81B,MAAQ,IAEhB91B,EAAM21B,MAAQ,EAEd2D,GAAK,GAAY,IAAPnD,EACVmD,GAAK,GAAMnD,IAAS,EAAK,IACzBn2B,EAAM21B,MAAQ/B,EAAM5zB,EAAM21B,MAAO2D,GAAM,EAAG,GAI1CnD,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KApaC,MAqaP,KACF,CAIA,GAHI/J,EAAM61B,OACR71B,EAAM61B,KAAK6D,MAAO,KAED,EAAb15B,EAAMu1B,UACA,IAAPY,IAA2B,IAAMA,GAAQ,IAAM,GAAI,CACtDd,EAAKt1B,IAAM,yBACXC,EAAM+J,KAAOkrB,EACb,KACF,CACA,IAAY,GAAPkB,KAA4B1B,EAAY,CAC3CY,EAAKt1B,IAAM,6BACXC,EAAM+J,KAAOkrB,EACb,KACF,CASA,GAPAkB,KAAU,EACVC,GAAQ,EAER3kB,EAAiC,GAAnB,GAAP0kB,GACa,IAAhBn2B,EAAM81B,QACR91B,EAAM81B,MAAQrkB,GAEZA,EAAM,IAAMA,EAAMzR,EAAM81B,MAAO,CACjCT,EAAKt1B,IAAM,sBACXC,EAAM+J,KAAOkrB,EACb,KACF,CAIAj1B,EAAM01B,KAAO,GAAK11B,EAAM81B,MAGxB91B,EAAMy1B,MAAQ,EAEdJ,EAAKn1B,MAAQF,EAAM21B,MAAQ,EAC3B31B,EAAM+J,KAAc,IAAPosB,EAncH,MAmc2BjR,EAErCiR,EAAO,EACPC,EAAO,EAEP,MACF,KAjdW,MAmdT,KAAOA,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAGA,GADAp2B,EAAMy1B,MAAQU,GACK,IAAdn2B,EAAMy1B,SAAkBhB,EAAY,CACvCY,EAAKt1B,IAAM,6BACXC,EAAM+J,KAAOkrB,EACb,KACF,CACA,GAAkB,MAAdj1B,EAAMy1B,MAAgB,CACxBJ,EAAKt1B,IAAM,2BACXC,EAAM+J,KAAOkrB,EACb,KACF,CACIj1B,EAAM61B,OACR71B,EAAM61B,KAAKnI,KAASyI,GAAQ,EAAK,GAEhB,IAAdn2B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OAEnC+D,GAAK,GAAY,IAAPnD,EACVmD,GAAK,GAAMnD,IAAS,EAAK,IACzBn2B,EAAM21B,MAAQ/B,EAAM5zB,EAAM21B,MAAO2D,GAAM,EAAG,IAI5CnD,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KAlfE,MAofV,KApfU,MAsfR,KAAOqsB,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEIp2B,EAAM61B,OACR71B,EAAM61B,KAAK8D,KAAOxD,GAED,IAAdn2B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OAEnC+D,GAAK,GAAY,IAAPnD,EACVmD,GAAK,GAAMnD,IAAS,EAAK,IACzBmD,GAAK,GAAMnD,IAAS,GAAM,IAC1BmD,GAAK,GAAMnD,IAAS,GAAM,IAC1Bn2B,EAAM21B,MAAQ/B,EAAM5zB,EAAM21B,MAAO2D,GAAM,EAAG,IAI5CnD,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KA5gBA,MA8gBR,KA9gBQ,MAghBN,KAAOqsB,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEIp2B,EAAM61B,OACR71B,EAAM61B,KAAK+D,OAAiB,IAAPzD,EACrBn2B,EAAM61B,KAAKgE,GAAM1D,GAAQ,GAER,IAAdn2B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OAEnC+D,GAAK,GAAY,IAAPnD,EACVmD,GAAK,GAAMnD,IAAS,EAAK,IACzBn2B,EAAM21B,MAAQ/B,EAAM5zB,EAAM21B,MAAO2D,GAAM,EAAG,IAI5CnD,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KAriBG,MAuiBX,KAviBW,MAwiBT,GAAkB,KAAd/J,EAAMy1B,MAAgB,CAExB,KAAOW,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAp2B,EAAMmB,OAASg1B,EACXn2B,EAAM61B,OACR71B,EAAM61B,KAAKiE,UAAY3D,GAEN,IAAdn2B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OAEnC+D,GAAK,GAAY,IAAPnD,EACVmD,GAAK,GAAMnD,IAAS,EAAK,IACzBn2B,EAAM21B,MAAQ/B,EAAM5zB,EAAM21B,MAAO2D,GAAM,EAAG,IAI5CnD,EAAO,EACPC,EAAO,CAET,MACSp2B,EAAM61B,OACb71B,EAAM61B,KAAKS,MAAQ,MAErBt2B,EAAM+J,KAnkBG,MAqkBX,KArkBW,MAskBT,GAAkB,KAAd/J,EAAMy1B,QACR5e,EAAO7W,EAAMmB,OACT0V,EAAOigB,IAAQjgB,EAAOigB,GACtBjgB,IACE7W,EAAM61B,OACRpkB,EAAMzR,EAAM61B,KAAKiE,UAAY95B,EAAMmB,OAC9BnB,EAAM61B,KAAKS,QAEdt2B,EAAM61B,KAAKS,MAAQ,IAAI1G,WAAW5vB,EAAM61B,KAAKiE,YAE/C95B,EAAM61B,KAAKS,MAAM1gB,IACfrW,EAAM2wB,SACJ6G,EAGAA,EAAOlgB,GAGTpF,IAMe,IAAdzR,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OACnCv1B,EAAM21B,MAAQ/B,EAAM5zB,EAAM21B,MAAOp2B,EAAOsX,EAAMkgB,IAEhDD,GAAQjgB,EACRkgB,GAAQlgB,EACR7W,EAAMmB,QAAU0V,GAEd7W,EAAMmB,QAAU,MAAMs4B,EAE5Bz5B,EAAMmB,OAAS,EACfnB,EAAM+J,KAvmBE,MAymBV,KAzmBU,MA0mBR,GAAkB,KAAd/J,EAAMy1B,MAAgB,CACxB,GAAa,IAATqB,EAAc,MAAM2C,EACxB5iB,EAAO,EACP,GAEEpF,EAAMlS,EAAMw3B,EAAOlgB,KAEf7W,EAAM61B,MAAQpkB,GACbzR,EAAMmB,OAAS,QAClBnB,EAAM61B,KAAK3kB,MAAQC,OAAO4oB,aAAatoB,UAElCA,GAAOoF,EAAOigB,GAOvB,GALmB,IAAd92B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OACnCv1B,EAAM21B,MAAQ/B,EAAM5zB,EAAM21B,MAAOp2B,EAAOsX,EAAMkgB,IAEhDD,GAAQjgB,EACRkgB,GAAQlgB,EACJpF,EAAO,MAAMgoB,CACnB,MACSz5B,EAAM61B,OACb71B,EAAM61B,KAAK3kB,KAAO,MAEpBlR,EAAMmB,OAAS,EACfnB,EAAM+J,KAjoBK,MAmoBb,KAnoBa,MAooBX,GAAkB,KAAd/J,EAAMy1B,MAAgB,CACxB,GAAa,IAATqB,EAAc,MAAM2C,EACxB5iB,EAAO,EACP,GACEpF,EAAMlS,EAAMw3B,EAAOlgB,KAEf7W,EAAM61B,MAAQpkB,GACbzR,EAAMmB,OAAS,QAClBnB,EAAM61B,KAAKmE,SAAW7oB,OAAO4oB,aAAatoB,UAErCA,GAAOoF,EAAOigB,GAMvB,GALmB,IAAd92B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OACnCv1B,EAAM21B,MAAQ/B,EAAM5zB,EAAM21B,MAAOp2B,EAAOsX,EAAMkgB,IAEhDD,GAAQjgB,EACRkgB,GAAQlgB,EACJpF,EAAO,MAAMgoB,CACnB,MACSz5B,EAAM61B,OACb71B,EAAM61B,KAAKmE,QAAU,MAEvBh6B,EAAM+J,KAxpBE,MA0pBV,KA1pBU,MA2pBR,GAAkB,IAAd/J,EAAMy1B,MAAgB,CAExB,KAAOW,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEA,GAAkB,EAAbp2B,EAAMu1B,MAAaY,KAAwB,MAAdn2B,EAAM21B,OAAiB,CACvDN,EAAKt1B,IAAM,sBACXC,EAAM+J,KAAOkrB,EACb,KACF,CAEAkB,EAAO,EACPC,EAAO,CAET,CACIp2B,EAAM61B,OACR71B,EAAM61B,KAAKoE,KAASj6B,EAAMy1B,OAAS,EAAK,EACxCz1B,EAAM61B,KAAK6D,MAAO,GAEpBrE,EAAKn1B,MAAQF,EAAM21B,MAAQ,EAC3B31B,EAAM+J,KAAOmb,EACb,MACF,KAprBY,MAsrBV,KAAOkR,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAf,EAAKn1B,MAAQF,EAAM21B,MAAQR,EAAQgB,GAEnCA,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KAAO4qB,EAEf,KAAKA,EACH,GAAuB,IAAnB30B,EAAMw1B,SASR,OAPAH,EAAKz1B,SAAW8K,EAChB2qB,EAAKx1B,UAAY84B,EACjBtD,EAAK71B,QAAUu3B,EACf1B,EAAK51B,SAAWq3B,EAChB92B,EAAMm2B,KAAOA,EACbn2B,EAAMo2B,KAAOA,EAENhC,EAETiB,EAAKn1B,MAAQF,EAAM21B,MAAQ,EAC3B31B,EAAM+J,KAAOmb,EAEf,KAAKA,EACH,GAAIwT,IAAU1E,GAAW0E,IAAUzE,EAAW,MAAMwF,EAEtD,KAAK7E,EACH,GAAI50B,EAAMs1B,KAAM,CAEda,KAAiB,EAAPC,EACVA,GAAe,EAAPA,EAERp2B,EAAM+J,KAAOirB,EACb,KACF,CAEA,KAAOoB,EAAO,GAAG,CACf,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAQA,OANAp2B,EAAMs1B,KAAe,EAAPa,EAEdA,KAAU,EACVC,GAAQ,EAGQ,EAAPD,GACP,KAAK,EAGHn2B,EAAM+J,KA7uBI,MA8uBV,MACF,KAAK,EAKH,GAJAouB,EAAYn4B,GAGZA,EAAM+J,KAAO+qB,EACT4D,IAAUzE,EAAS,CAErBkC,KAAU,EACVC,GAAQ,EAER,MAAMqD,CACR,CACA,MACF,KAAK,EAGHz5B,EAAM+J,KA5vBG,MA6vBT,MACF,KAAK,EACHsrB,EAAKt1B,IAAM,qBACXC,EAAM+J,KAAOkrB,EAGjBkB,KAAU,EACVC,GAAQ,EAER,MACF,KA1wBgB,MAgxBd,IAJAD,KAAiB,EAAPC,EACVA,GAAe,EAAPA,EAGDA,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEA,IAAY,MAAPD,MAAqBA,IAAS,GAAM,OAAS,CAChDd,EAAKt1B,IAAM,+BACXC,EAAM+J,KAAOkrB,EACb,KACF,CASA,GARAj1B,EAAMmB,OAAgB,MAAPg1B,EAIfA,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KAAO8qB,EACT6D,IAAUzE,EAAW,MAAMwF,EAEjC,KAAK5E,EACH70B,EAAM+J,KAryBM,MAuyBd,KAvyBc,MAyyBZ,GADA8M,EAAO7W,EAAMmB,OACT0V,EAAM,CAGR,GAFIA,EAAOigB,IAAQjgB,EAAOigB,GACtBjgB,EAAO8hB,IAAQ9hB,EAAO8hB,GACb,IAAT9hB,EAAc,MAAM4iB,EAExB95B,EAAOiW,IAAIrW,EAAM2wB,SAAS6G,EAAMA,EAAOlgB,GAAOnM,GAE9CosB,GAAQjgB,EACRkgB,GAAQlgB,EACR8hB,GAAQ9hB,EACRnM,GAAOmM,EACP7W,EAAMmB,QAAU0V,EAChB,KACF,CAEA7W,EAAM+J,KAAOmb,EACb,MACF,KAzzBe,MA2zBb,KAAOkR,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAkBA,GAhBAp2B,EAAM42B,KAAkC,KAAnB,GAAPT,GAEdA,KAAU,EACVC,GAAQ,EAERp2B,EAAM62B,MAAmC,GAAnB,GAAPV,GAEfA,KAAU,EACVC,GAAQ,EAERp2B,EAAM22B,MAAmC,GAAnB,GAAPR,GAEfA,KAAU,EACVC,GAAQ,EAGJp2B,EAAM42B,KAAO,KAAO52B,EAAM62B,MAAQ,GAAI,CACxCxB,EAAKt1B,IAAM,sCACXC,EAAM+J,KAAOkrB,EACb,KACF,CAGAj1B,EAAM82B,KAAO,EACb92B,EAAM+J,KAz1BS,MA21BjB,KA31BiB,MA41Bf,KAAO/J,EAAM82B,KAAO92B,EAAM22B,OAAO,CAE/B,KAAOP,EAAO,GAAG,CACf,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAp2B,EAAMg3B,KAAKwC,GAAMx5B,EAAM82B,SAAmB,EAAPX,EAEnCA,KAAU,EACVC,GAAQ,CAEV,CACA,KAAOp2B,EAAM82B,KAAO,IAClB92B,EAAMg3B,KAAKwC,GAAMx5B,EAAM82B,SAAW,EAapC,GAPA92B,EAAMu2B,QAAUv2B,EAAMm3B,OACtBn3B,EAAMy2B,QAAU,EAEhB8C,GAAO,CAAEnD,KAAMp2B,EAAMy2B,SACrBsB,EAAMjE,EAz5BA,EAy5BqB9zB,EAAMg3B,KAAM,EAAG,GAAIh3B,EAAMu2B,QAAS,EAAGv2B,EAAMk3B,KAAMqC,IAC5Ev5B,EAAMy2B,QAAU8C,GAAKnD,KAEjB2B,EAAK,CACP1C,EAAKt1B,IAAM,2BACXC,EAAM+J,KAAOkrB,EACb,KACF,CAEAj1B,EAAM82B,KAAO,EACb92B,EAAM+J,KA/3BU,MAi4BlB,KAj4BkB,MAk4BhB,KAAO/J,EAAM82B,KAAO92B,EAAM42B,KAAO52B,EAAM62B,OAAO,CAC5C,KACEwC,EAAOr5B,EAAMu2B,QAAQJ,GAAS,GAAKn2B,EAAMy2B,SAAW,GACpDsC,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAENN,GAAc3C,IANZ,CAQP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CACA,GAAI6C,EAAW,GAEb9C,KAAU4C,EACV3C,GAAQ2C,EAER/4B,EAAMg3B,KAAKh3B,EAAM82B,QAAUmC,MAExB,CACH,GAAiB,KAAbA,EAAiB,CAGnB,IADAppB,GAAIkpB,EAAY,EACT3C,EAAOvmB,IAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAMA,GAHAD,KAAU4C,EACV3C,GAAQ2C,EAEW,IAAf/4B,EAAM82B,KAAY,CACpBzB,EAAKt1B,IAAM,4BACXC,EAAM+J,KAAOkrB,EACb,KACF,CACAxjB,EAAMzR,EAAMg3B,KAAKh3B,EAAM82B,KAAO,GAC9BjgB,EAAO,GAAY,EAAPsf,GAEZA,KAAU,EACVC,GAAQ,CAEV,MACK,GAAiB,KAAb6C,EAAiB,CAGxB,IADAppB,GAAIkpB,EAAY,EACT3C,EAAOvmB,IAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAGAD,KAAU4C,EACV3C,GAAQ2C,EAERtnB,EAAM,EACNoF,EAAO,GAAY,EAAPsf,GAEZA,KAAU,EACVC,GAAQ,CAEV,KACK,CAGH,IADAvmB,GAAIkpB,EAAY,EACT3C,EAAOvmB,IAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAGAD,KAAU4C,EACV3C,GAAQ2C,EAERtnB,EAAM,EACNoF,EAAO,IAAa,IAAPsf,GAEbA,KAAU,EACVC,GAAQ,CAEV,CACA,GAAIp2B,EAAM82B,KAAOjgB,EAAO7W,EAAM42B,KAAO52B,EAAM62B,MAAO,CAChDxB,EAAKt1B,IAAM,4BACXC,EAAM+J,KAAOkrB,EACb,KACF,CACA,KAAOpe,KACL7W,EAAMg3B,KAAKh3B,EAAM82B,QAAUrlB,CAE/B,CACF,CAGA,GAAIzR,EAAM+J,OAASkrB,EAAO,MAG1B,GAAwB,IAApBj1B,EAAMg3B,KAAK,KAAY,CACzB3B,EAAKt1B,IAAM,uCACXC,EAAM+J,KAAOkrB,EACb,KACF,CAcA,GATAj1B,EAAMy2B,QAAU,EAEhB8C,GAAO,CAAEnD,KAAMp2B,EAAMy2B,SACrBsB,EAAMjE,EA3hCD,EA2hCqB9zB,EAAMg3B,KAAM,EAAGh3B,EAAM42B,KAAM52B,EAAMu2B,QAAS,EAAGv2B,EAAMk3B,KAAMqC,IAGnFv5B,EAAMy2B,QAAU8C,GAAKnD,KAGjB2B,EAAK,CACP1C,EAAKt1B,IAAM,8BACXC,EAAM+J,KAAOkrB,EACb,KACF,CAaA,GAXAj1B,EAAM02B,SAAW,EAGjB12B,EAAMw2B,SAAWx2B,EAAMo3B,QACvBmC,GAAO,CAAEnD,KAAMp2B,EAAM02B,UACrBqB,EAAMjE,EA3iCA,EA2iCqB9zB,EAAMg3B,KAAMh3B,EAAM42B,KAAM52B,EAAM62B,MAAO72B,EAAMw2B,SAAU,EAAGx2B,EAAMk3B,KAAMqC,IAG/Fv5B,EAAM02B,SAAW6C,GAAKnD,KAGlB2B,EAAK,CACP1C,EAAKt1B,IAAM,wBACXC,EAAM+J,KAAOkrB,EACb,KACF,CAGA,GADAj1B,EAAM+J,KAAO+qB,EACT4D,IAAUzE,EAAW,MAAMwF,EAEjC,KAAK3E,EACH90B,EAAM+J,KAAOgrB,EAEf,KAAKA,EACH,GAAI+B,GAAQ,GAAK6B,GAAQ,IAAK,CAE5BtD,EAAKz1B,SAAW8K,EAChB2qB,EAAKx1B,UAAY84B,EACjBtD,EAAK71B,QAAUu3B,EACf1B,EAAK51B,SAAWq3B,EAChB92B,EAAMm2B,KAAOA,EACbn2B,EAAMo2B,KAAOA,EAEbvC,EAAawB,EAAMwD,GAEnBnuB,EAAM2qB,EAAKz1B,SACXD,EAAS01B,EAAK11B,OACdg5B,EAAOtD,EAAKx1B,UACZk3B,EAAO1B,EAAK71B,QACZD,EAAQ81B,EAAK91B,MACbu3B,EAAOzB,EAAK51B,SACZ02B,EAAOn2B,EAAMm2B,KACbC,EAAOp2B,EAAMo2B,KAGTp2B,EAAM+J,OAASmb,IACjBllB,EAAMs3B,MAAQ,GAEhB,KACF,CAEA,IADAt3B,EAAMs3B,KAAO,EAEX+B,EAAOr5B,EAAMu2B,QAAQJ,GAAS,GAAKn2B,EAAMy2B,SAAW,GACpDsC,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAEPN,GAAa3C,IANV,CAQP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CACA,GAAI4C,GAAgC,KAAV,IAAVA,GAAuB,CAIrC,IAHAE,EAAYH,EACZI,EAAUH,EACVI,EAAWH,EAETI,EAAOr5B,EAAMu2B,QAAQ6C,IACXjD,GAAS,GAAM+C,EAAYC,GAAY,IAAoCD,IACrFH,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAENH,EAAYH,GAAc3C,IAPxB,CASP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CAEAD,KAAU+C,EACV9C,GAAQ8C,EAERl5B,EAAMs3B,MAAQ4B,CAChB,CAOA,GALA/C,KAAU4C,EACV3C,GAAQ2C,EAER/4B,EAAMs3B,MAAQyB,EACd/4B,EAAMmB,OAAS83B,EACC,IAAZD,EAAe,CAIjBh5B,EAAM+J,KAjmCO,MAkmCb,KACF,CACA,GAAc,GAAVivB,EAAc,CAEhBh5B,EAAMs3B,MAAQ,EACdt3B,EAAM+J,KAAOmb,EACb,KACF,CACA,GAAc,GAAV8T,EAAc,CAChB3D,EAAKt1B,IAAM,8BACXC,EAAM+J,KAAOkrB,EACb,KACF,CACAj1B,EAAMs2B,MAAkB,GAAV0C,EACdh5B,EAAM+J,KApnCY,MAsnCpB,KAtnCoB,MAunClB,GAAI/J,EAAMs2B,MAAO,CAGf,IADAzmB,GAAI7P,EAAMs2B,MACHF,EAAOvmB,IAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAp2B,EAAMmB,QAAUg1B,GAAS,GAAKn2B,EAAMs2B,OAAS,EAE7CH,KAAUn2B,EAAMs2B,MAChBF,GAAQp2B,EAAMs2B,MAEdt2B,EAAMs3B,MAAQt3B,EAAMs2B,KACtB,CAEAt2B,EAAMu3B,IAAMv3B,EAAMmB,OAClBnB,EAAM+J,KAzoCU,MA2oClB,KA3oCkB,MA4oChB,KACEsvB,EAAOr5B,EAAMw2B,SAASL,GAAS,GAAKn2B,EAAM02B,UAAY,GACtDqC,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAENN,GAAc3C,IANZ,CAQP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CACA,GAAyB,KAAV,IAAV4C,GAAuB,CAI1B,IAHAE,EAAYH,EACZI,EAAUH,EACVI,EAAWH,EAETI,EAAOr5B,EAAMw2B,SAAS4C,IACZjD,GAAS,GAAM+C,EAAYC,GAAY,IAAoCD,IACrFH,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAENH,EAAYH,GAAc3C,IAPxB,CASP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CAEAD,KAAU+C,EACV9C,GAAQ8C,EAERl5B,EAAMs3B,MAAQ4B,CAChB,CAMA,GAJA/C,KAAU4C,EACV3C,GAAQ2C,EAER/4B,EAAMs3B,MAAQyB,EACA,GAAVC,EAAc,CAChB3D,EAAKt1B,IAAM,wBACXC,EAAM+J,KAAOkrB,EACb,KACF,CACAj1B,EAAMq2B,OAAS4C,EACfj5B,EAAMs2B,MAAoB,GAAX0C,EACfh5B,EAAM+J,KA9rCa,MAgsCrB,KAhsCqB,MAisCnB,GAAI/J,EAAMs2B,MAAO,CAGf,IADAzmB,GAAI7P,EAAMs2B,MACHF,EAAOvmB,IAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAp2B,EAAMq2B,QAAUF,GAAS,GAAKn2B,EAAMs2B,OAAS,EAE7CH,KAAUn2B,EAAMs2B,MAChBF,GAAQp2B,EAAMs2B,MAEdt2B,EAAMs3B,MAAQt3B,EAAMs2B,KACtB,CAEA,GAAIt2B,EAAMq2B,OAASr2B,EAAM01B,KAAM,CAC7BL,EAAKt1B,IAAM,gCACXC,EAAM+J,KAAOkrB,EACb,KACF,CAGAj1B,EAAM+J,KAztCW,MA2tCnB,KA3tCmB,MA4tCjB,GAAa,IAAT4uB,EAAc,MAAMc,EAExB,GADA5iB,EAAOgiB,EAAOF,EACV34B,EAAMq2B,OAASxf,EAAM,CAEvB,GADAA,EAAO7W,EAAMq2B,OAASxf,EAClBA,EAAO7W,EAAMg2B,OACXh2B,EAAMq3B,KAAM,CACdhC,EAAKt1B,IAAM,gCACXC,EAAM+J,KAAOkrB,EACb,KACF,CAiBEpe,EAAO7W,EAAMi2B,OACfpf,GAAQ7W,EAAMi2B,MACdnyB,EAAO9D,EAAM+1B,MAAQlf,GAGrB/S,EAAO9D,EAAMi2B,MAAQpf,EAEnBA,EAAO7W,EAAMmB,SAAU0V,EAAO7W,EAAMmB,QACxC23B,EAAc94B,EAAMk2B,MACtB,MAEE4C,EAAcn5B,EACdmE,EAAO4G,EAAM1K,EAAMq2B,OACnBxf,EAAO7W,EAAMmB,OAEX0V,EAAO8hB,IAAQ9hB,EAAO8hB,GAC1BA,GAAQ9hB,EACR7W,EAAMmB,QAAU0V,EAChB,GACElX,EAAO+K,KAASouB,EAAYh1B,aACnB+S,GACU,IAAjB7W,EAAMmB,SAAgBnB,EAAM+J,KAAOgrB,GACvC,MACF,KA5wCiB,MA6wCf,GAAa,IAAT4D,EAAc,MAAMc,EACxB95B,EAAO+K,KAAS1K,EAAMmB,OACtBw3B,IACA34B,EAAM+J,KAAOgrB,EACb,MACF,KAAKC,EACH,GAAIh1B,EAAMu1B,KAAM,CAEd,KAAOa,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IAEAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAaA,GAXAyC,GAAQF,EACRtD,EAAKv1B,WAAa+4B,EAClB74B,EAAM41B,OAASiD,EACG,EAAb74B,EAAMu1B,MAAasD,IACtBxD,EAAKn1B,MAAQF,EAAM21B,MAEd31B,EAAMy1B,MAAQ7B,EAAM5zB,EAAM21B,MAAOh2B,EAAQk5B,EAAMnuB,EAAMmuB,GAAQlF,EAAQ3zB,EAAM21B,MAAOh2B,EAAQk5B,EAAMnuB,EAAMmuB,IAG7GA,EAAOF,EAEW,EAAb34B,EAAMu1B,OAAcv1B,EAAMy1B,MAAQU,EAAOhB,EAAQgB,MAAWn2B,EAAM21B,MAAO,CAC5EN,EAAKt1B,IAAM,uBACXC,EAAM+J,KAAOkrB,EACb,KACF,CAEAkB,EAAO,EACPC,EAAO,CAGT,CACAp2B,EAAM+J,KAjzCI,MAmzCZ,KAnzCY,MAozCV,GAAI/J,EAAMu1B,MAAQv1B,EAAMy1B,MAAO,CAE7B,KAAOW,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEA,GAAkB,EAAbp2B,EAAMu1B,MAAaY,KAAwB,WAAdn2B,EAAM41B,OAAqB,CAC3DP,EAAKt1B,IAAM,yBACXC,EAAM+J,KAAOkrB,EACb,KACF,CAEAkB,EAAO,EACPC,EAAO,CAGT,CACAp2B,EAAM+J,KAv0CE,MAy0CV,KAz0CU,MA00CRguB,EAAM5D,EACN,MAAMsF,EACR,KAAKxE,EACH8C,EAAMzD,EACN,MAAMmF,EACR,KAAKvE,EACH,OAAOX,EAGT,QACE,OAAOF,EAsBb,OARAgB,EAAKz1B,SAAW8K,EAChB2qB,EAAKx1B,UAAY84B,EACjBtD,EAAK71B,QAAUu3B,EACf1B,EAAK51B,SAAWq3B,EAChB92B,EAAMm2B,KAAOA,EACbn2B,EAAMo2B,KAAOA,GAGTp2B,EAAM+1B,OAAU8C,IAASxD,EAAKx1B,WAAaG,EAAM+J,KAAOkrB,IACvCj1B,EAAM+J,KAAOirB,GAAS0D,IAAU3E,KAC/CsE,EAAahD,EAAMA,EAAK11B,OAAQ01B,EAAKz1B,SAAUi5B,EAAOxD,EAAKx1B,YAC7DG,EAAM+J,KAAOmrB,EACNX,IAGXqE,GAAOvD,EAAK51B,SACZo5B,GAAQxD,EAAKx1B,UACbw1B,EAAK31B,UAAYk5B,EACjBvD,EAAKv1B,WAAa+4B,EAClB74B,EAAM41B,OAASiD,EACG,EAAb74B,EAAMu1B,MAAasD,IACtBxD,EAAKn1B,MAAQF,EAAM21B,MAChB31B,EAAMy1B,MAAQ7B,EAAM5zB,EAAM21B,MAAOh2B,EAAQk5B,EAAMxD,EAAKz1B,SAAWi5B,GAAQlF,EAAQ3zB,EAAM21B,MAAOh2B,EAAQk5B,EAAMxD,EAAKz1B,SAAWi5B,IAE/HxD,EAAKp1B,UAAYD,EAAMo2B,MAAQp2B,EAAMs1B,KAAO,GAAK,IAC9Bt1B,EAAM+J,OAASmb,EAAO,IAAM,IAC5BllB,EAAM+J,OAAS+qB,GAAQ90B,EAAM+J,OAAS8qB,EAAQ,IAAM,IACzD,IAAR+D,GAAsB,IAATC,GAAeH,IAAU3E,IAAagE,IAAQ7D,IAC/D6D,EAAMvD,GAEDuD,EAAG,EA4EZ14B,EAAOD,QAAQ86B,WAxEK7E,IAElB,GAAImC,EAAkBnC,GACpB,OAAOhB,EAGT,IAAIr0B,EAAQq1B,EAAKr1B,MAKjB,OAJIA,EAAMk2B,SACRl2B,EAAMk2B,OAAS,MAEjBb,EAAKr1B,MAAQ,KACNk0B,CAAI,EA8Db70B,EAAOD,QAAQ+6B,iBA1DUA,CAAC9E,EAAMQ,KAG9B,GAAI2B,EAAkBnC,GAAS,OAAOhB,EACtC,MAAMr0B,EAAQq1B,EAAKr1B,MACnB,OAAyB,KAAP,EAAbA,EAAMu1B,MAA0BlB,GAGrCr0B,EAAM61B,KAAOA,EACbA,EAAK6D,MAAO,EACLxF,EAAI,EAiDb70B,EAAOD,QAAQg7B,qBA7CcA,CAAC/E,EAAMgF,KAClC,MAAMC,EAAaD,EAAWl5B,OAE9B,IAAInB,EACAu6B,EACAxC,EAGJ,OAAIP,EAAkBnC,GAAgBhB,GACtCr0B,EAAQq1B,EAAKr1B,MAEM,IAAfA,EAAMu1B,MAAcv1B,EAAM+J,OAAS4qB,EAC9BN,EAILr0B,EAAM+J,OAAS4qB,IACjB4F,EAAS,EAETA,EAAS5G,EAAQ4G,EAAQF,EAAYC,EAAY,GAC7CC,IAAWv6B,EAAM21B,OACZrB,GAKXyD,EAAMM,EAAahD,EAAMgF,EAAYC,EAAYA,GAC7CvC,GACF/3B,EAAM+J,KAAOmrB,EACNX,IAETv0B,EAAMw1B,SAAW,EAEVtB,IAAI,EAab70B,EAAOD,QAAQo7B,YAAc,+QCthD7B,MAAAr6B,EAAAC,EAAA,OACAE,EAAAF,EAAA,OAgEA,SAASq6B,EACLh6B,EACAi6B,EACA75B,EACAF,EACAg6B,GAEsD,IADtDr5B,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBACZ2I,EAAwB15B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAu6B,4BAE3B,MAAMnc,EAAO,CACT,CAAEU,OAAQ3e,EAAO4e,UAAU,EAAMC,YAAY,GAC7C,CAAEF,OAAQsb,EAAiBrb,UAAU,EAAOC,YAAY,GACxD,CAAEF,OAAQve,EAAOwe,UAAU,EAAOC,YAAY,GAC9C,CAAEF,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQjf,EAAA26B,cAAcx5B,UAAW+d,UAAU,EAAOC,YAAY,GAChE,CAAEF,OAAQ9d,EAAW+d,UAAU,EAAOC,YAAY,IAGtD,OAAO,IAAInf,EAAAyf,uBAAuB,CAC9BlB,OACApd,UAAWs5B,EACX33B,KAAM03B,GAEd,CAzEAv7B,EAAAA,wCAAA,SACIqB,EACAi6B,EACA75B,EACAF,GAEsD,IADtDW,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBACZ2I,EAAwB15B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAu6B,4BAE3B,OAAOJ,EACHh6B,EACAi6B,EACA75B,EACAF,EACAkD,EAAO0b,MAAM,GACbje,EACAs5B,EAER,EAcAx7B,EAAAA,kDAAA,SACIqB,EACAi6B,EACA75B,EACAF,GAEsD,IADtDW,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBACZ2I,EAAwB15B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAu6B,4BAE3B,OAAOJ,EACHh6B,EACAi6B,EACA75B,EACAF,EACAkD,EAAOC,KAAK,CAAC,IACbxC,EACAs5B,EAER,EAyCAx7B,EAAAA,+BAAA,SACI27B,EACAC,EACAC,EACAC,EACAC,EACAt6B,GAEsD,IADtDS,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBACZ2I,EAAwB15B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAu6B,4BAE3B,MAAMnc,EAAO,CACT,CAAEU,OAAQ2b,EAAuB1b,UAAU,EAAOC,YAAY,GAC9D,CAAEF,OAAQ4b,EAAY3b,UAAU,EAAOC,YAAY,GACnD,CAAEF,OAAQ6b,EAA4B5b,UAAU,EAAOC,YAAY,GACnE,CAAEF,OAAQ8b,EAAsB7b,UAAU,EAAOC,YAAY,GAC7D,CAAEF,OAAQ+b,EAAW9b,UAAU,EAAOC,YAAY,GAClD,CAAEF,OAAQve,EAAOwe,UAAU,EAAMC,YAAY,GAC7C,CAAEF,OAAQ9d,EAAW+d,UAAU,EAAOC,YAAY,IAGtD,OAAO,IAAInf,EAAAyf,uBAAuB,CAC9BlB,OACApd,UAAWs5B,EACX33B,KAAMY,EAAOC,KAAK,CAAC,KAE3B,+BCjIAxB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQg8B,YAAch8B,EAAQi8B,WAAaj8B,EAAQk8B,qBAAkB,EACrE,MAAMC,EAAiBn7B,EAAQ,OACzBo7B,EAAcp7B,EAAQ,OACtBgJ,EAAUhJ,EAAQ,OAGxB,SAASq7B,EAAUnrB,EAAGxK,GAClB,IAAI41B,EAAgBprB,EAAE9N,MAASsD,EAAUsD,EAAQuyB,MAAMC,WAAWtrB,GAGlE,OAFc,MAAVA,EAAEurB,MAAgBvrB,EAAEurB,KAAKC,mBAAqBh2B,IAC9C41B,GAAiBprB,EAAEurB,KAAKE,SAAWj2B,EAAUwK,EAAEurB,KAAKC,qBACjDJ,CACX,CAPAp5B,OAAOC,eAAenD,EAAS,kBAAmB,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO9B,EAAQkyB,eAAiB,IAsBzHl8B,EAAQi8B,WAdR,SAAoBY,EAAOC,EAASp2B,EAASmB,GAEzCg1B,EAAQA,EAAME,MAAK,CAACpsB,EAAGS,IAGZirB,EAAUjrB,EAAG1K,GAAW21B,EAAU1rB,EAAGjK,KAGhD,MAAM6R,GAAO,EAAI6jB,EAAYY,WAAWH,EAAOC,EAASp2B,EAASmB,GACjE,OAAI0Q,EAAK0kB,OACE1kB,GAEJ,EAAI4jB,EAAee,cAAcL,EAAOC,EAASp2B,EAASmB,EACrE,EAuCA7H,EAAQg8B,YArCR,SAAqBa,EAAOM,EAAcC,EAAY12B,GAClD,IAAKkV,SAAS5R,EAAQuyB,MAAMc,UAAU32B,IAClC,OAAO,KACX,IAAI42B,EAAatzB,EAAQuyB,MAAMgB,iBAAiB,GAAI,CAAC,CAAEh2B,OAAQ41B,IAAiB,MAC5EK,EAAa,EACbC,EAAU,EACd,MAAMR,EAAS,GACf,IAAK,IAAI/xB,EAAI,EAAGA,EAAI2xB,EAAM96B,SAAUmJ,EAAG,CACnC,MAAMwyB,EAAOb,EAAM3xB,GACbyyB,EAAY3zB,EAAQuyB,MAAMC,WAAWkB,GACrCE,EAAUl3B,EAAUi3B,EAC1B,IAAIE,EAAU,EACG,MAAbH,EAAKjB,MAAgBiB,EAAKjB,KAAKC,mBAAqBh2B,IACpDm3B,EAAUH,EAAKjB,KAAKE,SAAWj2B,EAAUg3B,EAAKjB,KAAKC,qBACvD,MAAMoB,EAAY9zB,EAAQuyB,MAAMc,UAAUK,EAAKt6B,OAE3Cw6B,EAAUC,EAAUH,EAAKt6B,QAG7Bk6B,GAAcK,EACdF,GAAWK,EACXN,GAAcK,EACdZ,EAAOz1B,KAAKk2B,GAChB,CACA,MAAM97B,EAAO8E,EAAU42B,EAAcE,EAC/BO,EAAcN,EAAU77B,EAE9B,OAAIm8B,EADkB/zB,EAAQkyB,gBAAgBkB,GAEnC,CACHx7B,MACAwB,MAAO,GAER,CACHxB,MACAwB,MAAO26B,EAEf,+BC/DA,IAAIt5B,EAASzD,EAAAA,OAAAA,OACTkzB,EAAYlzB,EAAAA,OAAAA,UACZg9B,EAAgBh9B,EAAAA,OAAAA,cAGpB,SAASi9B,EAAWC,GACnBhK,EAAUld,KAAK9W,MACfA,KAAKg+B,SAA+B,kBAAbA,EACnBh+B,KAAKg+B,SACRh+B,KAAKg+B,GAAYh+B,KAAKi+B,eAEtBj+B,KAAY,MAAIA,KAAKi+B,eAElBj+B,KAAKk+B,SACRl+B,KAAKm+B,QAAUn+B,KAAKk+B,OACpBl+B,KAAKk+B,OAAS,MAEfl+B,KAAKo+B,SAAW,KAChBp+B,KAAKq+B,UAAY,IAClB,CAhBev9B,EAAQ,MAiBvBw9B,CAASP,EAAY/J,GAErB,IAAIuK,EAAsC,qBAAfjO,WACvBkO,EAAwC,qBAAhBC,aACF,qBAAfnO,YACPmO,YAAYC,SACXn6B,EAAOqG,qBAAqB0lB,YAAc/rB,EAAOo6B,qBA6DtDZ,EAAWnzB,UAAU7G,OAAS,SAAUJ,EAAMi7B,EAAUC,GACvD,IAAIC,EA5DL,SAAkBn7B,EAAMwwB,GAKvB,GAAIxwB,aAAgBY,EACnB,OAAOZ,EAIR,GAAoB,kBAATA,EACV,OAAOY,EAAOC,KAAKb,EAAMwwB,GAO1B,GAAIqK,GAAkBC,YAAYC,OAAO/6B,GAAO,CAE/C,GAAwB,IAApBA,EAAKo7B,WACR,OAAOx6B,EAAO0b,MAAM,GAGrB,IAAI2R,EAAMrtB,EAAOC,KAAKb,EAAK0sB,OAAQ1sB,EAAKutB,WAAYvtB,EAAKo7B,YAKzD,GAAInN,EAAImN,aAAep7B,EAAKo7B,WAC3B,OAAOnN,CAET,CAMA,GAAI2M,GAAiB56B,aAAgB2sB,WACpC,OAAO/rB,EAAOC,KAAKb,GAQpB,GACCY,EAAOy6B,SAASr7B,IACZA,EAAKsK,aACgC,oBAA9BtK,EAAKsK,YAAY+wB,UACxBr7B,EAAKsK,YAAY+wB,SAASr7B,GAE9B,OAAOY,EAAOC,KAAKb,GAGpB,MAAM,IAAIs7B,UAAU,gGACrB,CAGkBl6B,CAASpB,EAAMi7B,GAC5BM,EAAUl/B,KAAKm/B,QAAQL,GAC3B,OAAI9+B,KAAKg+B,SACDh+B,MAGJ6+B,IACHK,EAAUl/B,KAAKo/B,UAAUF,EAASL,IAG5BK,EACR,EAEAnB,EAAWnzB,UAAUy0B,eAAiB,WAAa,EACnDtB,EAAWnzB,UAAU00B,WAAa,WACjC,MAAM,IAAIz7B,MAAM,8CACjB,EAEAk6B,EAAWnzB,UAAU20B,WAAa,WACjC,MAAM,IAAI17B,MAAM,8CACjB,EAEAk6B,EAAWnzB,UAAU40B,OAAS,WAC7B,MAAM,IAAI37B,MAAM,yCACjB,EAEAk6B,EAAWnzB,UAAUqpB,WAAa,SAAUtwB,EAAM87B,EAAGhI,GACpD,IAAI7N,EACJ,IACK5pB,KAAKg+B,SACRh+B,KAAKm/B,QAAQx7B,GAEb3D,KAAKsH,KAAKtH,KAAKm/B,QAAQx7B,GAEzB,CAAE,MAAO4N,GACRqY,EAAMrY,CACP,CAAE,QACDkmB,EAAK7N,EACN,CACD,EACAmU,EAAWnzB,UAAU80B,OAAS,SAAUtF,GACvC,IAAIxQ,EACJ,IACC5pB,KAAKsH,KAAKtH,KAAKm+B,UAChB,CAAE,MAAO5sB,GACRqY,EAAMrY,CACP,CAEA6oB,EAAKxQ,EACN,EACAmU,EAAWnzB,UAAUqzB,eAAiB,SAAUY,GAC/C,IAAIK,EAAUl/B,KAAKm+B,WAAa55B,EAAO0b,MAAM,GAI7C,OAHI4e,IACHK,EAAUl/B,KAAKo/B,UAAUF,EAASL,GAAW,IAEvCK,CACR,EAEAnB,EAAWnzB,UAAUw0B,UAAY,SAAUl8B,EAAOy8B,EAAKC,GAMtD,GALK5/B,KAAKo+B,WACTp+B,KAAKo+B,SAAW,IAAIN,EAAc6B,GAClC3/B,KAAKq+B,UAAYsB,GAGd3/B,KAAKq+B,YAAcsB,EACtB,MAAM,IAAI97B,MAAM,+BAGjB,IAAIkD,EAAM/G,KAAKo+B,SAAStzB,MAAM5H,GAK9B,OAJI08B,IACH74B,GAAO/G,KAAKo+B,SAAS5Q,OAGfzmB,CACR,EAEAhH,EAAOD,QAAUi+B,yBCtKjB,SAAWh+B,EAAQD,GACjB,aAGA,SAAS+/B,EAAQlxB,EAAKlO,GACpB,IAAKkO,EAAK,MAAM,IAAI9K,MAAMpD,GAAO,mBACnC,CAIA,SAAS69B,EAAUwB,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASr1B,UAAYm1B,EAAUn1B,UAC/Bk1B,EAAKl1B,UAAY,IAAIq1B,EACrBH,EAAKl1B,UAAUqD,YAAc6xB,CAC/B,CAIA,SAASzX,EAAI6X,EAAQ7nB,EAAM8nB,GACzB,GAAI9X,EAAG+X,KAAKF,GACV,OAAOA,EAGTlgC,KAAKqgC,SAAW,EAChBrgC,KAAKsgC,MAAQ,KACbtgC,KAAK6B,OAAS,EAGd7B,KAAKugC,IAAM,KAEI,OAAXL,IACW,OAAT7nB,GAA0B,OAATA,IACnB8nB,EAAS9nB,EACTA,EAAO,IAGTrY,KAAKwgC,MAAMN,GAAU,EAAG7nB,GAAQ,GAAI8nB,GAAU,MAElD,CAUA,IAAI57B,EATkB,kBAAXxE,EACTA,EAAOD,QAAUuoB,EAEjBvoB,EAAQuoB,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGoY,SAAW,GAGd,IAEIl8B,EADoB,qBAAXqyB,QAAmD,qBAAlBA,OAAOryB,OACxCqyB,OAAOryB,OAEPzD,EAAAA,OAAAA,MAEb,CAAE,MAAOyQ,GACT,CA+HA,SAASmvB,EAAeC,EAAQC,GAC9B,IAAIxvB,EAAIuvB,EAAO7vB,WAAW8vB,GAE1B,OAAIxvB,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,GAClBA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,QAEXyuB,GAAO,EAAO,wBAA0Bc,EAE5C,CAEA,SAASE,EAAcF,EAAQG,EAAYF,GACzC,IAAI/vB,EAAI6vB,EAAcC,EAAQC,GAI9B,OAHIA,EAAQ,GAAKE,IACfjwB,GAAK6vB,EAAcC,EAAQC,EAAQ,IAAM,GAEpC/vB,CACT,CA6CA,SAASkwB,EAAW/uB,EAAK9C,EAAOse,EAAKwT,GAInC,IAHA,IAAInwB,EAAI,EACJK,EAAI,EACJiB,EAAM/I,KAAKsI,IAAIM,EAAInQ,OAAQ2rB,GACtBxiB,EAAIkE,EAAOlE,EAAImH,EAAKnH,IAAK,CAChC,IAAIoG,EAAIY,EAAIlB,WAAW9F,GAAK,GAE5B6F,GAAKmwB,EAIH9vB,EADEE,GAAK,GACHA,EAAI,GAAK,GAGJA,GAAK,GACVA,EAAI,GAAK,GAITA,EAENyuB,EAAOzuB,GAAK,GAAKF,EAAI8vB,EAAK,qBAC1BnwB,GAAKK,CACP,CACA,OAAOL,CACT,CA2DA,SAASowB,EAAMC,EAAMlI,GACnBkI,EAAKZ,MAAQtH,EAAIsH,MACjBY,EAAKr/B,OAASm3B,EAAIn3B,OAClBq/B,EAAKb,SAAWrH,EAAIqH,SACpBa,EAAKX,IAAMvH,EAAIuH,GACjB,CAqCA,GA9TAlY,EAAG+X,KAAO,SAAee,GACvB,OAAIA,aAAe9Y,GAIJ,OAAR8Y,GAA+B,kBAARA,GAC5BA,EAAIlzB,YAAYwyB,WAAapY,EAAGoY,UAAYt2B,MAAMi3B,QAAQD,EAAIb,MAClE,EAEAjY,EAAG1W,IAAM,SAAc0nB,EAAMgI,GAC3B,OAAIhI,EAAKtgB,IAAIsoB,GAAS,EAAUhI,EACzBgI,CACT,EAEAhZ,EAAG3W,IAAM,SAAc2nB,EAAMgI,GAC3B,OAAIhI,EAAKtgB,IAAIsoB,GAAS,EAAUhI,EACzBgI,CACT,EAEAhZ,EAAGzd,UAAU41B,MAAQ,SAAeN,EAAQ7nB,EAAM8nB,GAChD,GAAsB,kBAAXD,EACT,OAAOlgC,KAAKshC,YAAYpB,EAAQ7nB,EAAM8nB,GAGxC,GAAsB,kBAAXD,EACT,OAAOlgC,KAAKuhC,WAAWrB,EAAQ7nB,EAAM8nB,GAG1B,QAAT9nB,IACFA,EAAO,IAETwnB,EAAOxnB,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAInJ,EAAQ,EACM,OAFlBgxB,EAASA,EAAOz7B,WAAWuI,QAAQ,OAAQ,KAEhC,KACTkC,IACAlP,KAAKqgC,SAAW,GAGdnxB,EAAQgxB,EAAOr+B,SACJ,KAATwW,EACFrY,KAAKwhC,UAAUtB,EAAQhxB,EAAOixB,IAE9BngC,KAAKyhC,WAAWvB,EAAQ7nB,EAAMnJ,GACf,OAAXixB,GACFngC,KAAKuhC,WAAWvhC,KAAK0hC,UAAWrpB,EAAM8nB,IAI9C,EAEA9X,EAAGzd,UAAU02B,YAAc,SAAsBpB,EAAQ7nB,EAAM8nB,GACzDD,EAAS,IACXlgC,KAAKqgC,SAAW,EAChBH,GAAUA,GAERA,EAAS,UACXlgC,KAAKsgC,MAAQ,CAAU,SAATJ,GACdlgC,KAAK6B,OAAS,GACLq+B,EAAS,kBAClBlgC,KAAKsgC,MAAQ,CACF,SAATJ,EACCA,EAAS,SAAa,UAEzBlgC,KAAK6B,OAAS,IAEdg+B,EAAOK,EAAS,kBAChBlgC,KAAKsgC,MAAQ,CACF,SAATJ,EACCA,EAAS,SAAa,SACvB,GAEFlgC,KAAK6B,OAAS,GAGD,OAAXs+B,GAGJngC,KAAKuhC,WAAWvhC,KAAK0hC,UAAWrpB,EAAM8nB,EACxC,EAEA9X,EAAGzd,UAAU22B,WAAa,SAAqBrB,EAAQ7nB,EAAM8nB,GAG3D,GADAN,EAAgC,kBAAlBK,EAAOr+B,QACjBq+B,EAAOr+B,QAAU,EAGnB,OAFA7B,KAAKsgC,MAAQ,CAAC,GACdtgC,KAAK6B,OAAS,EACP7B,KAGTA,KAAK6B,OAASuH,KAAKwG,KAAKswB,EAAOr+B,OAAS,GACxC7B,KAAKsgC,MAAQ,IAAIn2B,MAAMnK,KAAK6B,QAC5B,IAAK,IAAImJ,EAAI,EAAGA,EAAIhL,KAAK6B,OAAQmJ,IAC/BhL,KAAKsgC,MAAMt1B,GAAK,EAGlB,IAAI4F,EAAG+wB,EACHC,EAAM,EACV,GAAe,OAAXzB,EACF,IAAKn1B,EAAIk1B,EAAOr+B,OAAS,EAAG+O,EAAI,EAAG5F,GAAK,EAAGA,GAAK,EAC9C22B,EAAIzB,EAAOl1B,GAAMk1B,EAAOl1B,EAAI,IAAM,EAAMk1B,EAAOl1B,EAAI,IAAM,GACzDhL,KAAKsgC,MAAM1vB,IAAO+wB,GAAKC,EAAO,SAC9B5hC,KAAKsgC,MAAM1vB,EAAI,GAAM+wB,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPhxB,UAGC,GAAe,OAAXuvB,EACT,IAAKn1B,EAAI,EAAG4F,EAAI,EAAG5F,EAAIk1B,EAAOr+B,OAAQmJ,GAAK,EACzC22B,EAAIzB,EAAOl1B,GAAMk1B,EAAOl1B,EAAI,IAAM,EAAMk1B,EAAOl1B,EAAI,IAAM,GACzDhL,KAAKsgC,MAAM1vB,IAAO+wB,GAAKC,EAAO,SAC9B5hC,KAAKsgC,MAAM1vB,EAAI,GAAM+wB,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPhxB,KAIN,OAAO5Q,KAAK6hC,QACd,EA0BAxZ,EAAGzd,UAAU42B,UAAY,SAAoBtB,EAAQhxB,EAAOixB,GAE1DngC,KAAK6B,OAASuH,KAAKwG,MAAMswB,EAAOr+B,OAASqN,GAAS,GAClDlP,KAAKsgC,MAAQ,IAAIn2B,MAAMnK,KAAK6B,QAC5B,IAAK,IAAImJ,EAAI,EAAGA,EAAIhL,KAAK6B,OAAQmJ,IAC/BhL,KAAKsgC,MAAMt1B,GAAK,EAIlB,IAGI22B,EAHAC,EAAM,EACNhxB,EAAI,EAGR,GAAe,OAAXuvB,EACF,IAAKn1B,EAAIk1B,EAAOr+B,OAAS,EAAGmJ,GAAKkE,EAAOlE,GAAK,EAC3C22B,EAAId,EAAaX,EAAQhxB,EAAOlE,IAAM42B,EACtC5hC,KAAKsgC,MAAM1vB,IAAU,SAAJ+wB,EACbC,GAAO,IACTA,GAAO,GACPhxB,GAAK,EACL5Q,KAAKsgC,MAAM1vB,IAAM+wB,IAAM,IAEvBC,GAAO,OAKX,IAAK52B,GADak1B,EAAOr+B,OAASqN,GACX,IAAM,EAAIA,EAAQ,EAAIA,EAAOlE,EAAIk1B,EAAOr+B,OAAQmJ,GAAK,EAC1E22B,EAAId,EAAaX,EAAQhxB,EAAOlE,IAAM42B,EACtC5hC,KAAKsgC,MAAM1vB,IAAU,SAAJ+wB,EACbC,GAAO,IACTA,GAAO,GACPhxB,GAAK,EACL5Q,KAAKsgC,MAAM1vB,IAAM+wB,IAAM,IAEvBC,GAAO,EAKb5hC,KAAK6hC,QACP,EA6BAxZ,EAAGzd,UAAU62B,WAAa,SAAqBvB,EAAQ7nB,EAAMnJ,GAE3DlP,KAAKsgC,MAAQ,CAAC,GACdtgC,KAAK6B,OAAS,EAGd,IAAK,IAAIigC,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAW1pB,EAClEypB,IAEFA,IACAC,EAAWA,EAAU1pB,EAAQ,EAO7B,IALA,IAAIie,EAAQ4J,EAAOr+B,OAASqN,EACxBmM,EAAMib,EAAQwL,EACdtU,EAAMpkB,KAAKsI,IAAI4kB,EAAOA,EAAQjb,GAAOnM,EAErC8yB,EAAO,EACFh3B,EAAIkE,EAAOlE,EAAIwiB,EAAKxiB,GAAK82B,EAChCE,EAAOjB,EAAUb,EAAQl1B,EAAGA,EAAI82B,EAASzpB,GAEzCrY,KAAKiiC,MAAMF,GACP/hC,KAAKsgC,MAAM,GAAK0B,EAAO,SACzBhiC,KAAKsgC,MAAM,IAAM0B,EAEjBhiC,KAAKkiC,OAAOF,GAIhB,GAAY,IAAR3mB,EAAW,CACb,IAAInD,EAAM,EAGV,IAFA8pB,EAAOjB,EAAUb,EAAQl1B,EAAGk1B,EAAOr+B,OAAQwW,GAEtCrN,EAAI,EAAGA,EAAIqQ,EAAKrQ,IACnBkN,GAAOG,EAGTrY,KAAKiiC,MAAM/pB,GACPlY,KAAKsgC,MAAM,GAAK0B,EAAO,SACzBhiC,KAAKsgC,MAAM,IAAM0B,EAEjBhiC,KAAKkiC,OAAOF,EAEhB,CAEAhiC,KAAK6hC,QACP,EAEAxZ,EAAGzd,UAAU2M,KAAO,SAAe2pB,GACjCA,EAAKZ,MAAQ,IAAIn2B,MAAMnK,KAAK6B,QAC5B,IAAK,IAAImJ,EAAI,EAAGA,EAAIhL,KAAK6B,OAAQmJ,IAC/Bk2B,EAAKZ,MAAMt1B,GAAKhL,KAAKsgC,MAAMt1B,GAE7Bk2B,EAAKr/B,OAAS7B,KAAK6B,OACnBq/B,EAAKb,SAAWrgC,KAAKqgC,SACrBa,EAAKX,IAAMvgC,KAAKugC,GAClB,EASAlY,EAAGzd,UAAUu3B,MAAQ,SAAgBjB,GACnCD,EAAKC,EAAMlhC,KACb,EAEAqoB,EAAGzd,UAAUyH,MAAQ,WACnB,IAAIxB,EAAI,IAAIwX,EAAG,MAEf,OADAroB,KAAKuX,KAAK1G,GACHA,CACT,EAEAwX,EAAGzd,UAAUw3B,QAAU,SAAkBlY,GACvC,KAAOlqB,KAAK6B,OAASqoB,GACnBlqB,KAAKsgC,MAAMtgC,KAAK6B,UAAY,EAE9B,OAAO7B,IACT,EAGAqoB,EAAGzd,UAAUi3B,OAAS,WACpB,KAAO7hC,KAAK6B,OAAS,GAAqC,IAAhC7B,KAAKsgC,MAAMtgC,KAAK6B,OAAS,IACjD7B,KAAK6B,SAEP,OAAO7B,KAAKqiC,WACd,EAEAha,EAAGzd,UAAUy3B,UAAY,WAKvB,OAHoB,IAAhBriC,KAAK6B,QAAkC,IAAlB7B,KAAKsgC,MAAM,KAClCtgC,KAAKqgC,SAAW,GAEXrgC,IACT,EAIsB,qBAAXsiC,QAAgD,oBAAfA,OAAOC,IACjD,IACEla,EAAGzd,UAAU03B,OAAOC,IAAI,+BAAiCC,CAC3D,CAAE,MAAOjxB,GACP8W,EAAGzd,UAAU43B,QAAUA,CACzB,MAEAna,EAAGzd,UAAU43B,QAAUA,EAGzB,SAASA,IACP,OAAQxiC,KAAKugC,IAAM,UAAY,SAAWvgC,KAAKyE,SAAS,IAAM,GAChE,CAgCA,IAAIg+B,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAG9Dta,EAAGzd,UAAUnG,SAAW,SAAmB4T,EAAMuqB,GAI/C,IAAI77B,EACJ,GAHA67B,EAAoB,EAAVA,GAAe,EAGZ,MAJbvqB,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCtR,EAAM,GAGN,IAFA,IAAI66B,EAAM,EACNlpB,EAAQ,EACH1N,EAAI,EAAGA,EAAIhL,KAAK6B,OAAQmJ,IAAK,CACpC,IAAI22B,EAAI3hC,KAAKsgC,MAAMt1B,GACfg3B,GAA+B,UAArBL,GAAKC,EAAOlpB,IAAmBjU,SAAS,IACtDiU,EAASipB,IAAO,GAAKC,EAAQ,UAC7BA,GAAO,IACI,KACTA,GAAO,GACP52B,KAGAjE,EADY,IAAV2R,GAAe1N,IAAMhL,KAAK6B,OAAS,EAC/B4gC,EAAM,EAAIT,EAAKngC,QAAUmgC,EAAOj7B,EAEhCi7B,EAAOj7B,CAEjB,CAIA,IAHc,IAAV2R,IACF3R,EAAM2R,EAAMjU,SAAS,IAAMsC,GAEtBA,EAAIlF,OAAS+gC,IAAY,GAC9B77B,EAAM,IAAMA,EAKd,OAHsB,IAAlB/G,KAAKqgC,WACPt5B,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAIsR,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI7E,EAAYkvB,EAAWrqB,GAEvBwqB,EAAYF,EAAWtqB,GAC3BtR,EAAM,GACN,IAAIqK,EAAIpR,KAAKqS,QAEb,IADAjB,EAAEivB,SAAW,GACLjvB,EAAEiL,UAAU,CAClB,IAAIxL,EAAIO,EAAE0xB,MAAMD,GAAWp+B,SAAS4T,GAMlCtR,GALFqK,EAAIA,EAAE2xB,MAAMF,IAELxmB,SAGCxL,EAAI9J,EAFJ07B,EAAMjvB,EAAY3C,EAAEhP,QAAUgP,EAAI9J,CAI5C,CAIA,IAHI/G,KAAKqc,WACPtV,EAAM,IAAMA,GAEPA,EAAIlF,OAAS+gC,IAAY,GAC9B77B,EAAM,IAAMA,EAKd,OAHsB,IAAlB/G,KAAKqgC,WACPt5B,EAAM,IAAMA,GAEPA,CACT,CAEA84B,GAAO,EAAO,kCAChB,EAEAxX,EAAGzd,UAAU6T,SAAW,WACtB,IAAIga,EAAMz4B,KAAKsgC,MAAM,GASrB,OARoB,IAAhBtgC,KAAK6B,OACP42B,GAAuB,SAAhBz4B,KAAKsgC,MAAM,GACO,IAAhBtgC,KAAK6B,QAAkC,IAAlB7B,KAAKsgC,MAAM,GAEzC7H,GAAO,iBAAoC,SAAhBz4B,KAAKsgC,MAAM,GAC7BtgC,KAAK6B,OAAS,GACvBg+B,GAAO,EAAO,8CAEU,IAAlB7/B,KAAKqgC,UAAmB5H,EAAMA,CACxC,EAEApQ,EAAGzd,UAAU+T,OAAS,WACpB,OAAO3e,KAAKyE,SAAS,GAAI,EAC3B,EAEIF,IACF8jB,EAAGzd,UAAU7F,SAAW,SAAmBo7B,EAAQt+B,GACjD,OAAO7B,KAAKurB,YAAYhnB,EAAQ47B,EAAQt+B,EAC1C,GAGFwmB,EAAGzd,UAAU82B,QAAU,SAAkBvB,EAAQt+B,GAC/C,OAAO7B,KAAKurB,YAAYphB,MAAOg2B,EAAQt+B,EACzC,EA2gBA,SAASmhC,EAAYC,EAAM9B,EAAKp6B,GAC9BA,EAAIs5B,SAAWc,EAAId,SAAW4C,EAAK5C,SACnC,IAAIluB,EAAO8wB,EAAKphC,OAASs/B,EAAIt/B,OAAU,EACvCkF,EAAIlF,OAASsQ,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAI1B,EAAoB,EAAhBwyB,EAAK3C,MAAM,GACfpvB,EAAmB,EAAfiwB,EAAIb,MAAM,GACdzvB,EAAIJ,EAAIS,EAERgyB,EAAS,SAAJryB,EACL6H,EAAS7H,EAAI,SAAa,EAC9B9J,EAAIu5B,MAAM,GAAK4C,EAEf,IAAK,IAAI5xB,EAAI,EAAGA,EAAIa,EAAKb,IAAK,CAM5B,IAHA,IAAI6xB,EAASzqB,IAAU,GACnB0qB,EAAgB,SAAR1qB,EACR2qB,EAAOj6B,KAAKsI,IAAIJ,EAAG6vB,EAAIt/B,OAAS,GAC3B+O,EAAIxH,KAAKuI,IAAI,EAAGL,EAAI2xB,EAAKphC,OAAS,GAAI+O,GAAKyyB,EAAMzyB,IAAK,CAC7D,IAAI5F,EAAKsG,EAAIV,EAAK,EAIlBuyB,IADAtyB,GAFAJ,EAAoB,EAAhBwyB,EAAK3C,MAAMt1B,KACfkG,EAAmB,EAAfiwB,EAAIb,MAAM1vB,IACFwyB,GACG,SAAa,EAC5BA,EAAY,SAAJvyB,CACV,CACA9J,EAAIu5B,MAAMhvB,GAAa,EAAR8xB,EACf1qB,EAAiB,EAATyqB,CACV,CAOA,OANc,IAAVzqB,EACF3R,EAAIu5B,MAAMhvB,GAAa,EAARoH,EAEf3R,EAAIlF,SAGCkF,EAAI86B,QACb,CAziBAxZ,EAAGzd,UAAU2gB,YAAc,SAAsB+X,EAAWnD,EAAQt+B,GAClE7B,KAAK6hC,SAEL,IAAI9C,EAAa/+B,KAAK++B,aAClBwE,EAAY1hC,GAAUuH,KAAKuI,IAAI,EAAGotB,GACtCc,EAAOd,GAAcwE,EAAW,yCAChC1D,EAAO0D,EAAY,EAAG,+BAEtB,IAAI3R,EAfS,SAAmB0R,EAAWpZ,GAC3C,OAAIoZ,EAAUE,YACLF,EAAUE,YAAYtZ,GAExB,IAAIoZ,EAAUpZ,EACvB,CAUYuZ,CAASH,EAAWC,GAG9B,OADAvjC,KAAK,gBADoB,OAAXmgC,EAAkB,KAAO,OACRvO,EAAKmN,GAC7BnN,CACT,EAEAvJ,EAAGzd,UAAU84B,eAAiB,SAAyB9R,EAAKmN,GAI1D,IAHA,IAAI4E,EAAW,EACXjrB,EAAQ,EAEH1N,EAAI,EAAG+C,EAAQ,EAAG/C,EAAIhL,KAAK6B,OAAQmJ,IAAK,CAC/C,IAAIg3B,EAAQhiC,KAAKsgC,MAAMt1B,IAAM+C,EAAS2K,EAEtCkZ,EAAI+R,KAAqB,IAAP3B,EACd2B,EAAW/R,EAAI/vB,SACjB+vB,EAAI+R,KAAe3B,GAAQ,EAAK,KAE9B2B,EAAW/R,EAAI/vB,SACjB+vB,EAAI+R,KAAe3B,GAAQ,GAAM,KAGrB,IAAVj0B,GACE41B,EAAW/R,EAAI/vB,SACjB+vB,EAAI+R,KAAe3B,GAAQ,GAAM,KAEnCtpB,EAAQ,EACR3K,EAAQ,IAER2K,EAAQspB,IAAS,GACjBj0B,GAAS,EAEb,CAEA,GAAI41B,EAAW/R,EAAI/vB,OAGjB,IAFA+vB,EAAI+R,KAAcjrB,EAEXirB,EAAW/R,EAAI/vB,QACpB+vB,EAAI+R,KAAc,CAGxB,EAEAtb,EAAGzd,UAAUg5B,eAAiB,SAAyBhS,EAAKmN,GAI1D,IAHA,IAAI4E,EAAW/R,EAAI/vB,OAAS,EACxB6W,EAAQ,EAEH1N,EAAI,EAAG+C,EAAQ,EAAG/C,EAAIhL,KAAK6B,OAAQmJ,IAAK,CAC/C,IAAIg3B,EAAQhiC,KAAKsgC,MAAMt1B,IAAM+C,EAAS2K,EAEtCkZ,EAAI+R,KAAqB,IAAP3B,EACd2B,GAAY,IACd/R,EAAI+R,KAAe3B,GAAQ,EAAK,KAE9B2B,GAAY,IACd/R,EAAI+R,KAAe3B,GAAQ,GAAM,KAGrB,IAAVj0B,GACE41B,GAAY,IACd/R,EAAI+R,KAAe3B,GAAQ,GAAM,KAEnCtpB,EAAQ,EACR3K,EAAQ,IAER2K,EAAQspB,IAAS,GACjBj0B,GAAS,EAEb,CAEA,GAAI41B,GAAY,EAGd,IAFA/R,EAAI+R,KAAcjrB,EAEXirB,GAAY,GACjB/R,EAAI+R,KAAc,CAGxB,EAEIv6B,KAAKy6B,MACPxb,EAAGzd,UAAUk5B,WAAa,SAAqBnC,GAC7C,OAAO,GAAKv4B,KAAKy6B,MAAMlC,EACzB,EAEAtZ,EAAGzd,UAAUk5B,WAAa,SAAqBnC,GAC7C,IAAIplB,EAAIolB,EACJ9wB,EAAI,EAiBR,OAhBI0L,GAAK,OACP1L,GAAK,GACL0L,KAAO,IAELA,GAAK,KACP1L,GAAK,EACL0L,KAAO,GAELA,GAAK,IACP1L,GAAK,EACL0L,KAAO,GAELA,GAAK,IACP1L,GAAK,EACL0L,KAAO,GAEF1L,EAAI0L,CACb,EAGF8L,EAAGzd,UAAUm5B,UAAY,SAAoBpC,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIplB,EAAIolB,EACJ9wB,EAAI,EAoBR,OAnBqB,KAAZ,KAAJ0L,KACH1L,GAAK,GACL0L,KAAO,IAEU,KAAV,IAAJA,KACH1L,GAAK,EACL0L,KAAO,GAES,KAAT,GAAJA,KACH1L,GAAK,EACL0L,KAAO,GAES,KAAT,EAAJA,KACH1L,GAAK,EACL0L,KAAO,GAES,KAAT,EAAJA,IACH1L,IAEKA,CACT,EAGAwX,EAAGzd,UAAUo5B,UAAY,WACvB,IAAIrC,EAAI3hC,KAAKsgC,MAAMtgC,KAAK6B,OAAS,GAC7BoiC,EAAKjkC,KAAK8jC,WAAWnC,GACzB,OAA2B,IAAnB3hC,KAAK6B,OAAS,GAAUoiC,CAClC,EAgBA5b,EAAGzd,UAAUs5B,SAAW,WACtB,GAAIlkC,KAAKqc,SAAU,OAAO,EAG1B,IADA,IAAIxL,EAAI,EACC7F,EAAI,EAAGA,EAAIhL,KAAK6B,OAAQmJ,IAAK,CACpC,IAAIkG,EAAIlR,KAAK+jC,UAAU/jC,KAAKsgC,MAAMt1B,IAElC,GADA6F,GAAKK,EACK,KAANA,EAAU,KAChB,CACA,OAAOL,CACT,EAEAwX,EAAGzd,UAAUm0B,WAAa,WACxB,OAAO31B,KAAKwG,KAAK5P,KAAKgkC,YAAc,EACtC,EAEA3b,EAAGzd,UAAUu5B,OAAS,SAAiBC,GACrC,OAAsB,IAAlBpkC,KAAKqgC,SACArgC,KAAKwa,MAAM6pB,MAAMD,GAAOE,MAAM,GAEhCtkC,KAAKqS,OACd,EAEAgW,EAAGzd,UAAU25B,SAAW,SAAmBH,GACzC,OAAIpkC,KAAKwkC,MAAMJ,EAAQ,GACdpkC,KAAKykC,KAAKL,GAAOE,MAAM,GAAGI,OAE5B1kC,KAAKqS,OACd,EAEAgW,EAAGzd,UAAUmT,MAAQ,WACnB,OAAyB,IAAlB/d,KAAKqgC,QACd,EAGAhY,EAAGzd,UAAU+5B,IAAM,WACjB,OAAO3kC,KAAKqS,QAAQqyB,MACtB,EAEArc,EAAGzd,UAAU85B,KAAO,WAKlB,OAJK1kC,KAAKqc,WACRrc,KAAKqgC,UAAY,GAGZrgC,IACT,EAGAqoB,EAAGzd,UAAUg6B,KAAO,SAAezD,GACjC,KAAOnhC,KAAK6B,OAASs/B,EAAIt/B,QACvB7B,KAAKsgC,MAAMtgC,KAAK6B,UAAY,EAG9B,IAAK,IAAImJ,EAAI,EAAGA,EAAIm2B,EAAIt/B,OAAQmJ,IAC9BhL,KAAKsgC,MAAMt1B,GAAKhL,KAAKsgC,MAAMt1B,GAAKm2B,EAAIb,MAAMt1B,GAG5C,OAAOhL,KAAK6hC,QACd,EAEAxZ,EAAGzd,UAAUi6B,IAAM,SAAc1D,GAE/B,OADAtB,EAA0C,KAAlC7/B,KAAKqgC,SAAWc,EAAId,WACrBrgC,KAAK4kC,KAAKzD,EACnB,EAGA9Y,EAAGzd,UAAUk6B,GAAK,SAAa3D,GAC7B,OAAInhC,KAAK6B,OAASs/B,EAAIt/B,OAAe7B,KAAKqS,QAAQwyB,IAAI1D,GAC/CA,EAAI9uB,QAAQwyB,IAAI7kC,KACzB,EAEAqoB,EAAGzd,UAAUm6B,IAAM,SAAc5D,GAC/B,OAAInhC,KAAK6B,OAASs/B,EAAIt/B,OAAe7B,KAAKqS,QAAQuyB,KAAKzD,GAChDA,EAAI9uB,QAAQuyB,KAAK5kC,KAC1B,EAGAqoB,EAAGzd,UAAUo6B,MAAQ,SAAgB7D,GAEnC,IAAIjwB,EAEFA,EADElR,KAAK6B,OAASs/B,EAAIt/B,OAChBs/B,EAEAnhC,KAGN,IAAK,IAAIgL,EAAI,EAAGA,EAAIkG,EAAErP,OAAQmJ,IAC5BhL,KAAKsgC,MAAMt1B,GAAKhL,KAAKsgC,MAAMt1B,GAAKm2B,EAAIb,MAAMt1B,GAK5C,OAFAhL,KAAK6B,OAASqP,EAAErP,OAET7B,KAAK6hC,QACd,EAEAxZ,EAAGzd,UAAUq6B,KAAO,SAAe9D,GAEjC,OADAtB,EAA0C,KAAlC7/B,KAAKqgC,SAAWc,EAAId,WACrBrgC,KAAKglC,MAAM7D,EACpB,EAGA9Y,EAAGzd,UAAUs6B,IAAM,SAAc/D,GAC/B,OAAInhC,KAAK6B,OAASs/B,EAAIt/B,OAAe7B,KAAKqS,QAAQ4yB,KAAK9D,GAChDA,EAAI9uB,QAAQ4yB,KAAKjlC,KAC1B,EAEAqoB,EAAGzd,UAAUu6B,KAAO,SAAehE,GACjC,OAAInhC,KAAK6B,OAASs/B,EAAIt/B,OAAe7B,KAAKqS,QAAQ2yB,MAAM7D,GACjDA,EAAI9uB,QAAQ2yB,MAAMhlC,KAC3B,EAGAqoB,EAAGzd,UAAUw6B,MAAQ,SAAgBjE,GAEnC,IAAI1wB,EACAS,EACAlR,KAAK6B,OAASs/B,EAAIt/B,QACpB4O,EAAIzQ,KACJkR,EAAIiwB,IAEJ1wB,EAAI0wB,EACJjwB,EAAIlR,MAGN,IAAK,IAAIgL,EAAI,EAAGA,EAAIkG,EAAErP,OAAQmJ,IAC5BhL,KAAKsgC,MAAMt1B,GAAKyF,EAAE6vB,MAAMt1B,GAAKkG,EAAEovB,MAAMt1B,GAGvC,GAAIhL,OAASyQ,EACX,KAAOzF,EAAIyF,EAAE5O,OAAQmJ,IACnBhL,KAAKsgC,MAAMt1B,GAAKyF,EAAE6vB,MAAMt1B,GAM5B,OAFAhL,KAAK6B,OAAS4O,EAAE5O,OAET7B,KAAK6hC,QACd,EAEAxZ,EAAGzd,UAAUy6B,KAAO,SAAelE,GAEjC,OADAtB,EAA0C,KAAlC7/B,KAAKqgC,SAAWc,EAAId,WACrBrgC,KAAKolC,MAAMjE,EACpB,EAGA9Y,EAAGzd,UAAU06B,IAAM,SAAcnE,GAC/B,OAAInhC,KAAK6B,OAASs/B,EAAIt/B,OAAe7B,KAAKqS,QAAQgzB,KAAKlE,GAChDA,EAAI9uB,QAAQgzB,KAAKrlC,KAC1B,EAEAqoB,EAAGzd,UAAU26B,KAAO,SAAepE,GACjC,OAAInhC,KAAK6B,OAASs/B,EAAIt/B,OAAe7B,KAAKqS,QAAQ+yB,MAAMjE,GACjDA,EAAI9uB,QAAQ+yB,MAAMplC,KAC3B,EAGAqoB,EAAGzd,UAAUy5B,MAAQ,SAAgBD,GACnCvE,EAAwB,kBAAVuE,GAAsBA,GAAS,GAE7C,IAAIoB,EAAsC,EAAxBp8B,KAAKwG,KAAKw0B,EAAQ,IAChCqB,EAAWrB,EAAQ,GAGvBpkC,KAAKoiC,QAAQoD,GAETC,EAAW,GACbD,IAIF,IAAK,IAAIx6B,EAAI,EAAGA,EAAIw6B,EAAax6B,IAC/BhL,KAAKsgC,MAAMt1B,GAAsB,UAAhBhL,KAAKsgC,MAAMt1B,GAS9B,OALIy6B,EAAW,IACbzlC,KAAKsgC,MAAMt1B,IAAMhL,KAAKsgC,MAAMt1B,GAAM,UAAc,GAAKy6B,GAIhDzlC,KAAK6hC,QACd,EAEAxZ,EAAGzd,UAAU65B,KAAO,SAAeL,GACjC,OAAOpkC,KAAKqS,QAAQgyB,MAAMD,EAC5B,EAGA/b,EAAGzd,UAAU86B,KAAO,SAAeC,EAAKh3B,GACtCkxB,EAAsB,kBAAR8F,GAAoBA,GAAO,GAEzC,IAAI/D,EAAO+D,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARA3lC,KAAKoiC,QAAQR,EAAM,GAGjB5hC,KAAKsgC,MAAMsB,GADTjzB,EACgB3O,KAAKsgC,MAAMsB,GAAQ,GAAKgE,EAExB5lC,KAAKsgC,MAAMsB,KAAS,GAAKgE,GAGtC5lC,KAAK6hC,QACd,EAGAxZ,EAAGzd,UAAUi7B,KAAO,SAAe1E,GACjC,IAAItwB,EAkBAJ,EAAGS,EAfP,GAAsB,IAAlBlR,KAAKqgC,UAAmC,IAAjBc,EAAId,SAI7B,OAHArgC,KAAKqgC,SAAW,EAChBxvB,EAAI7Q,KAAK8lC,KAAK3E,GACdnhC,KAAKqgC,UAAY,EACVrgC,KAAKqiC,YAGP,GAAsB,IAAlBriC,KAAKqgC,UAAmC,IAAjBc,EAAId,SAIpC,OAHAc,EAAId,SAAW,EACfxvB,EAAI7Q,KAAK8lC,KAAK3E,GACdA,EAAId,SAAW,EACRxvB,EAAEwxB,YAKPriC,KAAK6B,OAASs/B,EAAIt/B,QACpB4O,EAAIzQ,KACJkR,EAAIiwB,IAEJ1wB,EAAI0wB,EACJjwB,EAAIlR,MAIN,IADA,IAAI0Y,EAAQ,EACH1N,EAAI,EAAGA,EAAIkG,EAAErP,OAAQmJ,IAC5B6F,GAAkB,EAAbJ,EAAE6vB,MAAMt1B,KAAwB,EAAbkG,EAAEovB,MAAMt1B,IAAU0N,EAC1C1Y,KAAKsgC,MAAMt1B,GAAS,SAAJ6F,EAChB6H,EAAQ7H,IAAM,GAEhB,KAAiB,IAAV6H,GAAe1N,EAAIyF,EAAE5O,OAAQmJ,IAClC6F,GAAkB,EAAbJ,EAAE6vB,MAAMt1B,IAAU0N,EACvB1Y,KAAKsgC,MAAMt1B,GAAS,SAAJ6F,EAChB6H,EAAQ7H,IAAM,GAIhB,GADA7Q,KAAK6B,OAAS4O,EAAE5O,OACF,IAAV6W,EACF1Y,KAAKsgC,MAAMtgC,KAAK6B,QAAU6W,EAC1B1Y,KAAK6B,cAEA,GAAI4O,IAAMzQ,KACf,KAAOgL,EAAIyF,EAAE5O,OAAQmJ,IACnBhL,KAAKsgC,MAAMt1B,GAAKyF,EAAE6vB,MAAMt1B,GAI5B,OAAOhL,IACT,EAGAqoB,EAAGzd,UAAUrI,IAAM,SAAc4+B,GAC/B,IAAIvP,EACJ,OAAqB,IAAjBuP,EAAId,UAAoC,IAAlBrgC,KAAKqgC,UAC7Bc,EAAId,SAAW,EACfzO,EAAM5xB,KAAK+lC,IAAI5E,GACfA,EAAId,UAAY,EACTzO,GACmB,IAAjBuP,EAAId,UAAoC,IAAlBrgC,KAAKqgC,UACpCrgC,KAAKqgC,SAAW,EAChBzO,EAAMuP,EAAI4E,IAAI/lC,MACdA,KAAKqgC,SAAW,EACTzO,GAGL5xB,KAAK6B,OAASs/B,EAAIt/B,OAAe7B,KAAKqS,QAAQwzB,KAAK1E,GAEhDA,EAAI9uB,QAAQwzB,KAAK7lC,KAC1B,EAGAqoB,EAAGzd,UAAUk7B,KAAO,SAAe3E,GAEjC,GAAqB,IAAjBA,EAAId,SAAgB,CACtBc,EAAId,SAAW,EACf,IAAIxvB,EAAI7Q,KAAK6lC,KAAK1E,GAElB,OADAA,EAAId,SAAW,EACRxvB,EAAEwxB,WAGX,CAAO,GAAsB,IAAlBriC,KAAKqgC,SAId,OAHArgC,KAAKqgC,SAAW,EAChBrgC,KAAK6lC,KAAK1E,GACVnhC,KAAKqgC,SAAW,EACTrgC,KAAKqiC,YAId,IAWI5xB,EAAGS,EAXH6H,EAAM/Y,KAAK+Y,IAAIooB,GAGnB,GAAY,IAARpoB,EAIF,OAHA/Y,KAAKqgC,SAAW,EAChBrgC,KAAK6B,OAAS,EACd7B,KAAKsgC,MAAM,GAAK,EACTtgC,KAKL+Y,EAAM,GACRtI,EAAIzQ,KACJkR,EAAIiwB,IAEJ1wB,EAAI0wB,EACJjwB,EAAIlR,MAIN,IADA,IAAI0Y,EAAQ,EACH1N,EAAI,EAAGA,EAAIkG,EAAErP,OAAQmJ,IAE5B0N,GADA7H,GAAkB,EAAbJ,EAAE6vB,MAAMt1B,KAAwB,EAAbkG,EAAEovB,MAAMt1B,IAAU0N,IAC7B,GACb1Y,KAAKsgC,MAAMt1B,GAAS,SAAJ6F,EAElB,KAAiB,IAAV6H,GAAe1N,EAAIyF,EAAE5O,OAAQmJ,IAElC0N,GADA7H,GAAkB,EAAbJ,EAAE6vB,MAAMt1B,IAAU0N,IACV,GACb1Y,KAAKsgC,MAAMt1B,GAAS,SAAJ6F,EAIlB,GAAc,IAAV6H,GAAe1N,EAAIyF,EAAE5O,QAAU4O,IAAMzQ,KACvC,KAAOgL,EAAIyF,EAAE5O,OAAQmJ,IACnBhL,KAAKsgC,MAAMt1B,GAAKyF,EAAE6vB,MAAMt1B,GAU5B,OANAhL,KAAK6B,OAASuH,KAAKuI,IAAI3R,KAAK6B,OAAQmJ,GAEhCyF,IAAMzQ,OACRA,KAAKqgC,SAAW,GAGXrgC,KAAK6hC,QACd,EAGAxZ,EAAGzd,UAAUm7B,IAAM,SAAc5E,GAC/B,OAAOnhC,KAAKqS,QAAQyzB,KAAK3E,EAC3B,EA8CA,IAAI6E,EAAc,SAAsB/C,EAAM9B,EAAKp6B,GACjD,IAIIm8B,EACA+C,EACAhC,EANAxzB,EAAIwyB,EAAK3C,MACTpvB,EAAIiwB,EAAIb,MACR4F,EAAIn/B,EAAIu5B,MACRlvB,EAAI,EAIJ+0B,EAAY,EAAP11B,EAAE,GACP21B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP71B,EAAE,GACP81B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPh2B,EAAE,GACPi2B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPn2B,EAAE,GACPo2B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPt2B,EAAE,GACPu2B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPz2B,EAAE,GACP02B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP52B,EAAE,GACP62B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/2B,EAAE,GACPg3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPl3B,EAAE,GACPm3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPr3B,EAAE,GACPs3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/2B,EAAE,GACPg3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPl3B,EAAE,GACPm3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPr3B,EAAE,GACPs3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPx3B,EAAE,GACPy3B,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP33B,EAAE,GACP43B,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAP93B,EAAE,GACP+3B,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPj4B,EAAE,GACPk4B,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPp4B,EAAE,GACPq4B,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPv4B,EAAE,GACPw4B,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP14B,EAAE,GACP24B,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB7iC,EAAIs5B,SAAW4C,EAAK5C,SAAWc,EAAId,SACnCt5B,EAAIlF,OAAS,GAMb,IAAIkoC,IAAQ34B,GAJZ8xB,EAAK95B,KAAK4gC,KAAK5D,EAAK8B,IAIE,KAAa,MAFnCjC,GADAA,EAAM78B,KAAK4gC,KAAK5D,EAAK+B,IACR/+B,KAAK4gC,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrD92B,IAFA6yB,EAAK76B,KAAK4gC,KAAK3D,EAAK8B,KAEPlC,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAEN7G,EAAK95B,KAAK4gC,KAAKzD,EAAK2B,GAEpBjC,GADAA,EAAM78B,KAAK4gC,KAAKzD,EAAK4B,IACR/+B,KAAK4gC,KAAKxD,EAAK0B,GAAQ,EACpCjE,EAAK76B,KAAK4gC,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQ74B,GAJZ8xB,EAAMA,EAAK95B,KAAK4gC,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCpC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK5D,EAAKkC,GAAQ,GACvBl/B,KAAK4gC,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrDj3B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK3D,EAAKiC,GAAQ,IAErBrC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN/G,EAAK95B,KAAK4gC,KAAKtD,EAAKwB,GAEpBjC,GADAA,EAAM78B,KAAK4gC,KAAKtD,EAAKyB,IACR/+B,KAAK4gC,KAAKrD,EAAKuB,GAAQ,EACpCjE,EAAK76B,KAAK4gC,KAAKrD,EAAKwB,GACpBjF,EAAMA,EAAK95B,KAAK4gC,KAAKzD,EAAK8B,GAAQ,EAElCpC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKzD,EAAK+B,GAAQ,GACvBl/B,KAAK4gC,KAAKxD,EAAK6B,GAAQ,EACpCpE,EAAMA,EAAK76B,KAAK4gC,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQ94B,GAJZ8xB,EAAMA,EAAK95B,KAAK4gC,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCvC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK5D,EAAKqC,GAAQ,GACvBr/B,KAAK4gC,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrDp3B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK3D,EAAKoC,GAAQ,IAErBxC,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENhH,EAAK95B,KAAK4gC,KAAKnD,EAAKqB,GAEpBjC,GADAA,EAAM78B,KAAK4gC,KAAKnD,EAAKsB,IACR/+B,KAAK4gC,KAAKlD,EAAKoB,GAAQ,EACpCjE,EAAK76B,KAAK4gC,KAAKlD,EAAKqB,GACpBjF,EAAMA,EAAK95B,KAAK4gC,KAAKtD,EAAK2B,GAAQ,EAElCpC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKtD,EAAK4B,GAAQ,GACvBl/B,KAAK4gC,KAAKrD,EAAK0B,GAAQ,EACpCpE,EAAMA,EAAK76B,KAAK4gC,KAAKrD,EAAK2B,GAAQ,EAClCpF,EAAMA,EAAK95B,KAAK4gC,KAAKzD,EAAKiC,GAAQ,EAElCvC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKzD,EAAKkC,GAAQ,GACvBr/B,KAAK4gC,KAAKxD,EAAKgC,GAAQ,EACpCvE,EAAMA,EAAK76B,KAAK4gC,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQ/4B,GAJZ8xB,EAAMA,EAAK95B,KAAK4gC,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnC1C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK5D,EAAKwC,GAAQ,GACvBx/B,KAAK4gC,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrDv3B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK3D,EAAKuC,GAAQ,IAErB3C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENjH,EAAK95B,KAAK4gC,KAAKhD,EAAKkB,GAEpBjC,GADAA,EAAM78B,KAAK4gC,KAAKhD,EAAKmB,IACR/+B,KAAK4gC,KAAK/C,EAAKiB,GAAQ,EACpCjE,EAAK76B,KAAK4gC,KAAK/C,EAAKkB,GACpBjF,EAAMA,EAAK95B,KAAK4gC,KAAKnD,EAAKwB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKnD,EAAKyB,GAAQ,GACvBl/B,KAAK4gC,KAAKlD,EAAKuB,GAAQ,EACpCpE,EAAMA,EAAK76B,KAAK4gC,KAAKlD,EAAKwB,GAAQ,EAClCpF,EAAMA,EAAK95B,KAAK4gC,KAAKtD,EAAK8B,GAAQ,EAElCvC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKtD,EAAK+B,GAAQ,GACvBr/B,KAAK4gC,KAAKrD,EAAK6B,GAAQ,EACpCvE,EAAMA,EAAK76B,KAAK4gC,KAAKrD,EAAK8B,GAAQ,EAClCvF,EAAMA,EAAK95B,KAAK4gC,KAAKzD,EAAKoC,GAAQ,EAElC1C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKzD,EAAKqC,GAAQ,GACvBx/B,KAAK4gC,KAAKxD,EAAKmC,GAAQ,EACpC1E,EAAMA,EAAK76B,KAAK4gC,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQh5B,GAJZ8xB,EAAMA,EAAK95B,KAAK4gC,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC7C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK5D,EAAK2C,IAAQ,GACvB3/B,KAAK4gC,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrD13B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK3D,EAAK0C,IAAQ,IAErB9C,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENlH,EAAK95B,KAAK4gC,KAAK7C,EAAKe,GAEpBjC,GADAA,EAAM78B,KAAK4gC,KAAK7C,EAAKgB,IACR/+B,KAAK4gC,KAAK5C,EAAKc,GAAQ,EACpCjE,EAAK76B,KAAK4gC,KAAK5C,EAAKe,GACpBjF,EAAMA,EAAK95B,KAAK4gC,KAAKhD,EAAKqB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKhD,EAAKsB,GAAQ,GACvBl/B,KAAK4gC,KAAK/C,EAAKoB,GAAQ,EACpCpE,EAAMA,EAAK76B,KAAK4gC,KAAK/C,EAAKqB,GAAQ,EAClCpF,EAAMA,EAAK95B,KAAK4gC,KAAKnD,EAAK2B,GAAQ,EAElCvC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKnD,EAAK4B,GAAQ,GACvBr/B,KAAK4gC,KAAKlD,EAAK0B,GAAQ,EACpCvE,EAAMA,EAAK76B,KAAK4gC,KAAKlD,EAAK2B,GAAQ,EAClCvF,EAAMA,EAAK95B,KAAK4gC,KAAKtD,EAAKiC,GAAQ,EAElC1C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKtD,EAAKkC,GAAQ,GACvBx/B,KAAK4gC,KAAKrD,EAAKgC,GAAQ,EACpC1E,EAAMA,EAAK76B,KAAK4gC,KAAKrD,EAAKiC,GAAQ,EAClC1F,EAAMA,EAAK95B,KAAK4gC,KAAKzD,EAAKuC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKzD,EAAKwC,IAAQ,GACvB3/B,KAAK4gC,KAAKxD,EAAKsC,GAAQ,EACpC7E,EAAMA,EAAK76B,KAAK4gC,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQj5B,GAJZ8xB,EAAMA,EAAK95B,KAAK4gC,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnChD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK5D,EAAK8C,IAAQ,GACvB9/B,KAAK4gC,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrD73B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK3D,EAAK6C,IAAQ,IAErBjD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAK95B,KAAK4gC,KAAK1C,EAAKY,GAEpBjC,GADAA,EAAM78B,KAAK4gC,KAAK1C,EAAKa,IACR/+B,KAAK4gC,KAAKzC,EAAKW,GAAQ,EACpCjE,EAAK76B,KAAK4gC,KAAKzC,EAAKY,GACpBjF,EAAMA,EAAK95B,KAAK4gC,KAAK7C,EAAKkB,GAAQ,EAElCpC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK7C,EAAKmB,GAAQ,GACvBl/B,KAAK4gC,KAAK5C,EAAKiB,GAAQ,EACpCpE,EAAMA,EAAK76B,KAAK4gC,KAAK5C,EAAKkB,GAAQ,EAClCpF,EAAMA,EAAK95B,KAAK4gC,KAAKhD,EAAKwB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKhD,EAAKyB,GAAQ,GACvBr/B,KAAK4gC,KAAK/C,EAAKuB,GAAQ,EACpCvE,EAAMA,EAAK76B,KAAK4gC,KAAK/C,EAAKwB,GAAQ,EAClCvF,EAAMA,EAAK95B,KAAK4gC,KAAKnD,EAAK8B,GAAQ,EAElC1C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKnD,EAAK+B,GAAQ,GACvBx/B,KAAK4gC,KAAKlD,EAAK6B,GAAQ,EACpC1E,EAAMA,EAAK76B,KAAK4gC,KAAKlD,EAAK8B,GAAQ,EAClC1F,EAAMA,EAAK95B,KAAK4gC,KAAKtD,EAAKoC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKtD,EAAKqC,IAAQ,GACvB3/B,KAAK4gC,KAAKrD,EAAKmC,GAAQ,EACpC7E,EAAMA,EAAK76B,KAAK4gC,KAAKrD,EAAKoC,IAAQ,EAClC7F,EAAMA,EAAK95B,KAAK4gC,KAAKzD,EAAK0C,IAAQ,EAElChD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKzD,EAAK2C,IAAQ,GACvB9/B,KAAK4gC,KAAKxD,EAAKyC,IAAQ,EACpChF,EAAMA,EAAK76B,KAAK4gC,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQl5B,GAJZ8xB,EAAMA,EAAK95B,KAAK4gC,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnCnD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK5D,EAAKiD,IAAQ,GACvBjgC,KAAK4gC,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrDh4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK3D,EAAKgD,IAAQ,IAErBpD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENpH,EAAK95B,KAAK4gC,KAAKvC,EAAKS,GAEpBjC,GADAA,EAAM78B,KAAK4gC,KAAKvC,EAAKU,IACR/+B,KAAK4gC,KAAKtC,EAAKQ,GAAQ,EACpCjE,EAAK76B,KAAK4gC,KAAKtC,EAAKS,GACpBjF,EAAMA,EAAK95B,KAAK4gC,KAAK1C,EAAKe,GAAQ,EAElCpC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK1C,EAAKgB,GAAQ,GACvBl/B,KAAK4gC,KAAKzC,EAAKc,GAAQ,EACpCpE,EAAMA,EAAK76B,KAAK4gC,KAAKzC,EAAKe,GAAQ,EAClCpF,EAAMA,EAAK95B,KAAK4gC,KAAK7C,EAAKqB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK7C,EAAKsB,GAAQ,GACvBr/B,KAAK4gC,KAAK5C,EAAKoB,GAAQ,EACpCvE,EAAMA,EAAK76B,KAAK4gC,KAAK5C,EAAKqB,GAAQ,EAClCvF,EAAMA,EAAK95B,KAAK4gC,KAAKhD,EAAK2B,GAAQ,EAElC1C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKhD,EAAK4B,GAAQ,GACvBx/B,KAAK4gC,KAAK/C,EAAK0B,GAAQ,EACpC1E,EAAMA,EAAK76B,KAAK4gC,KAAK/C,EAAK2B,GAAQ,EAClC1F,EAAMA,EAAK95B,KAAK4gC,KAAKnD,EAAKiC,GAAQ,EAElC7C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKnD,EAAKkC,IAAQ,GACvB3/B,KAAK4gC,KAAKlD,EAAKgC,GAAQ,EACpC7E,EAAMA,EAAK76B,KAAK4gC,KAAKlD,EAAKiC,IAAQ,EAClC7F,EAAMA,EAAK95B,KAAK4gC,KAAKtD,EAAKuC,IAAQ,EAElChD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKtD,EAAKwC,IAAQ,GACvB9/B,KAAK4gC,KAAKrD,EAAKsC,IAAQ,EACpChF,EAAMA,EAAK76B,KAAK4gC,KAAKrD,EAAKuC,IAAQ,EAClChG,EAAMA,EAAK95B,KAAK4gC,KAAKzD,EAAK6C,IAAQ,EAElCnD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKzD,EAAK8C,IAAQ,GACvBjgC,KAAK4gC,KAAKxD,EAAK4C,IAAQ,EACpCnF,EAAMA,EAAK76B,KAAK4gC,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQn5B,GAJZ8xB,EAAMA,EAAK95B,KAAK4gC,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCtD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK5D,EAAKoD,IAAQ,GACvBpgC,KAAK4gC,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrDn4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK3D,EAAKmD,IAAQ,IAErBvD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENrH,EAAK95B,KAAK4gC,KAAKpC,EAAKM,GAEpBjC,GADAA,EAAM78B,KAAK4gC,KAAKpC,EAAKO,IACR/+B,KAAK4gC,KAAKnC,EAAKK,GAAQ,EACpCjE,EAAK76B,KAAK4gC,KAAKnC,EAAKM,GACpBjF,EAAMA,EAAK95B,KAAK4gC,KAAKvC,EAAKY,GAAQ,EAElCpC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKvC,EAAKa,GAAQ,GACvBl/B,KAAK4gC,KAAKtC,EAAKW,GAAQ,EACpCpE,EAAMA,EAAK76B,KAAK4gC,KAAKtC,EAAKY,GAAQ,EAClCpF,EAAMA,EAAK95B,KAAK4gC,KAAK1C,EAAKkB,GAAQ,EAElCvC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK1C,EAAKmB,GAAQ,GACvBr/B,KAAK4gC,KAAKzC,EAAKiB,GAAQ,EACpCvE,EAAMA,EAAK76B,KAAK4gC,KAAKzC,EAAKkB,GAAQ,EAClCvF,EAAMA,EAAK95B,KAAK4gC,KAAK7C,EAAKwB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK7C,EAAKyB,GAAQ,GACvBx/B,KAAK4gC,KAAK5C,EAAKuB,GAAQ,EACpC1E,EAAMA,EAAK76B,KAAK4gC,KAAK5C,EAAKwB,GAAQ,EAClC1F,EAAMA,EAAK95B,KAAK4gC,KAAKhD,EAAK8B,GAAQ,EAElC7C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKhD,EAAK+B,IAAQ,GACvB3/B,KAAK4gC,KAAK/C,EAAK6B,GAAQ,EACpC7E,EAAMA,EAAK76B,KAAK4gC,KAAK/C,EAAK8B,IAAQ,EAClC7F,EAAMA,EAAK95B,KAAK4gC,KAAKnD,EAAKoC,IAAQ,EAElChD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKnD,EAAKqC,IAAQ,GACvB9/B,KAAK4gC,KAAKlD,EAAKmC,IAAQ,EACpChF,EAAMA,EAAK76B,KAAK4gC,KAAKlD,EAAKoC,IAAQ,EAClChG,EAAMA,EAAK95B,KAAK4gC,KAAKtD,EAAK0C,IAAQ,EAElCnD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKtD,EAAK2C,IAAQ,GACvBjgC,KAAK4gC,KAAKrD,EAAKyC,IAAQ,EACpCnF,EAAMA,EAAK76B,KAAK4gC,KAAKrD,EAAK0C,IAAQ,EAClCnG,EAAMA,EAAK95B,KAAK4gC,KAAKzD,EAAKgD,IAAQ,EAElCtD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKzD,EAAKiD,IAAQ,GACvBpgC,KAAK4gC,KAAKxD,EAAK+C,IAAQ,EACpCtF,EAAMA,EAAK76B,KAAK4gC,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQp5B,GAJZ8xB,EAAMA,EAAK95B,KAAK4gC,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCzD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK5D,EAAKuD,IAAQ,GACvBvgC,KAAK4gC,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrDt4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK3D,EAAKsD,IAAQ,IAErB1D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENtH,EAAK95B,KAAK4gC,KAAKjC,EAAKG,GAEpBjC,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAKI,IACR/+B,KAAK4gC,KAAKhC,EAAKE,GAAQ,EACpCjE,EAAK76B,KAAK4gC,KAAKhC,EAAKG,GACpBjF,EAAMA,EAAK95B,KAAK4gC,KAAKpC,EAAKS,GAAQ,EAElCpC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKpC,EAAKU,GAAQ,GACvBl/B,KAAK4gC,KAAKnC,EAAKQ,GAAQ,EACpCpE,EAAMA,EAAK76B,KAAK4gC,KAAKnC,EAAKS,GAAQ,EAClCpF,EAAMA,EAAK95B,KAAK4gC,KAAKvC,EAAKe,GAAQ,EAElCvC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKvC,EAAKgB,GAAQ,GACvBr/B,KAAK4gC,KAAKtC,EAAKc,GAAQ,EACpCvE,EAAMA,EAAK76B,KAAK4gC,KAAKtC,EAAKe,GAAQ,EAClCvF,EAAMA,EAAK95B,KAAK4gC,KAAK1C,EAAKqB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK1C,EAAKsB,GAAQ,GACvBx/B,KAAK4gC,KAAKzC,EAAKoB,GAAQ,EACpC1E,EAAMA,EAAK76B,KAAK4gC,KAAKzC,EAAKqB,GAAQ,EAClC1F,EAAMA,EAAK95B,KAAK4gC,KAAK7C,EAAK2B,GAAQ,EAElC7C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK7C,EAAK4B,IAAQ,GACvB3/B,KAAK4gC,KAAK5C,EAAK0B,GAAQ,EACpC7E,EAAMA,EAAK76B,KAAK4gC,KAAK5C,EAAK2B,IAAQ,EAClC7F,EAAMA,EAAK95B,KAAK4gC,KAAKhD,EAAKiC,IAAQ,EAElChD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKhD,EAAKkC,IAAQ,GACvB9/B,KAAK4gC,KAAK/C,EAAKgC,IAAQ,EACpChF,EAAMA,EAAK76B,KAAK4gC,KAAK/C,EAAKiC,IAAQ,EAClChG,EAAMA,EAAK95B,KAAK4gC,KAAKnD,EAAKuC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKnD,EAAKwC,IAAQ,GACvBjgC,KAAK4gC,KAAKlD,EAAKsC,IAAQ,EACpCnF,EAAMA,EAAK76B,KAAK4gC,KAAKlD,EAAKuC,IAAQ,EAClCnG,EAAMA,EAAK95B,KAAK4gC,KAAKtD,EAAK6C,IAAQ,EAElCtD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKtD,EAAK8C,IAAQ,GACvBpgC,KAAK4gC,KAAKrD,EAAK4C,IAAQ,EACpCtF,EAAMA,EAAK76B,KAAK4gC,KAAKrD,EAAK6C,IAAQ,EAClCtG,EAAMA,EAAK95B,KAAK4gC,KAAKzD,EAAKmD,IAAQ,EAElCzD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKzD,EAAKoD,IAAQ,GACvBvgC,KAAK4gC,KAAKxD,EAAKkD,IAAQ,EACpCzF,EAAMA,EAAK76B,KAAK4gC,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQr5B,GAJZ8xB,EAAMA,EAAK95B,KAAK4gC,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC5D,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK5D,EAAK0D,IAAQ,GACvB1gC,KAAK4gC,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDz4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK3D,EAAKyD,IAAQ,IAErB7D,IAAQ,IAAO,IAAMwE,KAAO,IAAO,EAChDA,IAAM,SAENvH,EAAK95B,KAAK4gC,KAAKjC,EAAKM,GAEpBpC,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAKO,IACRl/B,KAAK4gC,KAAKhC,EAAKK,GAAQ,EACpCpE,EAAK76B,KAAK4gC,KAAKhC,EAAKM,GACpBpF,EAAMA,EAAK95B,KAAK4gC,KAAKpC,EAAKY,GAAQ,EAElCvC,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKpC,EAAKa,GAAQ,GACvBr/B,KAAK4gC,KAAKnC,EAAKW,GAAQ,EACpCvE,EAAMA,EAAK76B,KAAK4gC,KAAKnC,EAAKY,GAAQ,EAClCvF,EAAMA,EAAK95B,KAAK4gC,KAAKvC,EAAKkB,GAAQ,EAElC1C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKvC,EAAKmB,GAAQ,GACvBx/B,KAAK4gC,KAAKtC,EAAKiB,GAAQ,EACpC1E,EAAMA,EAAK76B,KAAK4gC,KAAKtC,EAAKkB,GAAQ,EAClC1F,EAAMA,EAAK95B,KAAK4gC,KAAK1C,EAAKwB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK1C,EAAKyB,IAAQ,GACvB3/B,KAAK4gC,KAAKzC,EAAKuB,GAAQ,EACpC7E,EAAMA,EAAK76B,KAAK4gC,KAAKzC,EAAKwB,IAAQ,EAClC7F,EAAMA,EAAK95B,KAAK4gC,KAAK7C,EAAK8B,IAAQ,EAElChD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK7C,EAAK+B,IAAQ,GACvB9/B,KAAK4gC,KAAK5C,EAAK6B,IAAQ,EACpChF,EAAMA,EAAK76B,KAAK4gC,KAAK5C,EAAK8B,IAAQ,EAClChG,EAAMA,EAAK95B,KAAK4gC,KAAKhD,EAAKoC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKhD,EAAKqC,IAAQ,GACvBjgC,KAAK4gC,KAAK/C,EAAKmC,IAAQ,EACpCnF,EAAMA,EAAK76B,KAAK4gC,KAAK/C,EAAKoC,IAAQ,EAClCnG,EAAMA,EAAK95B,KAAK4gC,KAAKnD,EAAK0C,IAAQ,EAElCtD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKnD,EAAK2C,IAAQ,GACvBpgC,KAAK4gC,KAAKlD,EAAKyC,IAAQ,EACpCtF,EAAMA,EAAK76B,KAAK4gC,KAAKlD,EAAK0C,IAAQ,EAClCtG,EAAMA,EAAK95B,KAAK4gC,KAAKtD,EAAKgD,IAAQ,EAElCzD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKtD,EAAKiD,IAAQ,GACvBvgC,KAAK4gC,KAAKrD,EAAK+C,IAAQ,EACpCzF,EAAMA,EAAK76B,KAAK4gC,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAASt5B,GAJb8xB,EAAMA,EAAK95B,KAAK4gC,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKzD,EAAKuD,IAAQ,GACvB1gC,KAAK4gC,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDz4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAKxD,EAAKsD,IAAQ,IAErB7D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPxH,EAAK95B,KAAK4gC,KAAKjC,EAAKS,GAEpBvC,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAKU,IACRr/B,KAAK4gC,KAAKhC,EAAKQ,GAAQ,EACpCvE,EAAK76B,KAAK4gC,KAAKhC,EAAKS,GACpBvF,EAAMA,EAAK95B,KAAK4gC,KAAKpC,EAAKe,GAAQ,EAElC1C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKpC,EAAKgB,GAAQ,GACvBx/B,KAAK4gC,KAAKnC,EAAKc,GAAQ,EACpC1E,EAAMA,EAAK76B,KAAK4gC,KAAKnC,EAAKe,GAAQ,EAClC1F,EAAMA,EAAK95B,KAAK4gC,KAAKvC,EAAKqB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKvC,EAAKsB,IAAQ,GACvB3/B,KAAK4gC,KAAKtC,EAAKoB,GAAQ,EACpC7E,EAAMA,EAAK76B,KAAK4gC,KAAKtC,EAAKqB,IAAQ,EAClC7F,EAAMA,EAAK95B,KAAK4gC,KAAK1C,EAAK2B,IAAQ,EAElChD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK1C,EAAK4B,IAAQ,GACvB9/B,KAAK4gC,KAAKzC,EAAK0B,IAAQ,EACpChF,EAAMA,EAAK76B,KAAK4gC,KAAKzC,EAAK2B,IAAQ,EAClChG,EAAMA,EAAK95B,KAAK4gC,KAAK7C,EAAKiC,IAAQ,EAElCnD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK7C,EAAKkC,IAAQ,GACvBjgC,KAAK4gC,KAAK5C,EAAKgC,IAAQ,EACpCnF,EAAMA,EAAK76B,KAAK4gC,KAAK5C,EAAKiC,IAAQ,EAClCnG,EAAMA,EAAK95B,KAAK4gC,KAAKhD,EAAKuC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKhD,EAAKwC,IAAQ,GACvBpgC,KAAK4gC,KAAK/C,EAAKsC,IAAQ,EACpCtF,EAAMA,EAAK76B,KAAK4gC,KAAK/C,EAAKuC,IAAQ,EAClCtG,EAAMA,EAAK95B,KAAK4gC,KAAKnD,EAAK6C,IAAQ,EAElCzD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKnD,EAAK8C,IAAQ,GACvBvgC,KAAK4gC,KAAKlD,EAAK4C,IAAQ,EACpCzF,EAAMA,EAAK76B,KAAK4gC,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAASv5B,GAJb8xB,EAAMA,EAAK95B,KAAK4gC,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKtD,EAAKoD,IAAQ,GACvB1gC,KAAK4gC,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDz4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAKrD,EAAKmD,IAAQ,IAErB7D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPzH,EAAK95B,KAAK4gC,KAAKjC,EAAKY,GAEpB1C,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAKa,IACRx/B,KAAK4gC,KAAKhC,EAAKW,GAAQ,EACpC1E,EAAK76B,KAAK4gC,KAAKhC,EAAKY,GACpB1F,EAAMA,EAAK95B,KAAK4gC,KAAKpC,EAAKkB,GAAQ,EAElC7C,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKpC,EAAKmB,IAAQ,GACvB3/B,KAAK4gC,KAAKnC,EAAKiB,GAAQ,EACpC7E,EAAMA,EAAK76B,KAAK4gC,KAAKnC,EAAKkB,IAAQ,EAClC7F,EAAMA,EAAK95B,KAAK4gC,KAAKvC,EAAKwB,IAAQ,EAElChD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKvC,EAAKyB,IAAQ,GACvB9/B,KAAK4gC,KAAKtC,EAAKuB,IAAQ,EACpChF,EAAMA,EAAK76B,KAAK4gC,KAAKtC,EAAKwB,IAAQ,EAClChG,EAAMA,EAAK95B,KAAK4gC,KAAK1C,EAAK8B,IAAQ,EAElCnD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK1C,EAAK+B,IAAQ,GACvBjgC,KAAK4gC,KAAKzC,EAAK6B,IAAQ,EACpCnF,EAAMA,EAAK76B,KAAK4gC,KAAKzC,EAAK8B,IAAQ,EAClCnG,EAAMA,EAAK95B,KAAK4gC,KAAK7C,EAAKoC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK7C,EAAKqC,IAAQ,GACvBpgC,KAAK4gC,KAAK5C,EAAKmC,IAAQ,EACpCtF,EAAMA,EAAK76B,KAAK4gC,KAAK5C,EAAKoC,IAAQ,EAClCtG,EAAMA,EAAK95B,KAAK4gC,KAAKhD,EAAK0C,IAAQ,EAElCzD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKhD,EAAK2C,IAAQ,GACvBvgC,KAAK4gC,KAAK/C,EAAKyC,IAAQ,EACpCzF,EAAMA,EAAK76B,KAAK4gC,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAASx5B,GAJb8xB,EAAMA,EAAK95B,KAAK4gC,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKnD,EAAKiD,IAAQ,GACvB1gC,KAAK4gC,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDz4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAKlD,EAAKgD,IAAQ,IAErB7D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEP1H,EAAK95B,KAAK4gC,KAAKjC,EAAKe,GAEpB7C,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAKgB,KACR3/B,KAAK4gC,KAAKhC,EAAKc,GAAQ,EACpC7E,EAAK76B,KAAK4gC,KAAKhC,EAAKe,IACpB7F,EAAMA,EAAK95B,KAAK4gC,KAAKpC,EAAKqB,IAAQ,EAElChD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKpC,EAAKsB,IAAQ,GACvB9/B,KAAK4gC,KAAKnC,EAAKoB,IAAQ,EACpChF,EAAMA,EAAK76B,KAAK4gC,KAAKnC,EAAKqB,IAAQ,EAClChG,EAAMA,EAAK95B,KAAK4gC,KAAKvC,EAAK2B,IAAQ,EAElCnD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKvC,EAAK4B,IAAQ,GACvBjgC,KAAK4gC,KAAKtC,EAAK0B,IAAQ,EACpCnF,EAAMA,EAAK76B,KAAK4gC,KAAKtC,EAAK2B,IAAQ,EAClCnG,EAAMA,EAAK95B,KAAK4gC,KAAK1C,EAAKiC,IAAQ,EAElCtD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK1C,EAAKkC,IAAQ,GACvBpgC,KAAK4gC,KAAKzC,EAAKgC,IAAQ,EACpCtF,EAAMA,EAAK76B,KAAK4gC,KAAKzC,EAAKiC,IAAQ,EAClCtG,EAAMA,EAAK95B,KAAK4gC,KAAK7C,EAAKuC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK7C,EAAKwC,IAAQ,GACvBvgC,KAAK4gC,KAAK5C,EAAKsC,IAAQ,EACpCzF,EAAMA,EAAK76B,KAAK4gC,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASz5B,GAJb8xB,EAAMA,EAAK95B,KAAK4gC,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKhD,EAAK8C,IAAQ,GACvB1gC,KAAK4gC,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDz4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK/C,EAAK6C,IAAQ,IAErB7D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEP3H,EAAK95B,KAAK4gC,KAAKjC,EAAKkB,IAEpBhD,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAKmB,KACR9/B,KAAK4gC,KAAKhC,EAAKiB,IAAQ,EACpChF,EAAK76B,KAAK4gC,KAAKhC,EAAKkB,IACpBhG,EAAMA,EAAK95B,KAAK4gC,KAAKpC,EAAKwB,IAAQ,EAElCnD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKpC,EAAKyB,IAAQ,GACvBjgC,KAAK4gC,KAAKnC,EAAKuB,IAAQ,EACpCnF,EAAMA,EAAK76B,KAAK4gC,KAAKnC,EAAKwB,IAAQ,EAClCnG,EAAMA,EAAK95B,KAAK4gC,KAAKvC,EAAK8B,IAAQ,EAElCtD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKvC,EAAK+B,IAAQ,GACvBpgC,KAAK4gC,KAAKtC,EAAK6B,IAAQ,EACpCtF,EAAMA,EAAK76B,KAAK4gC,KAAKtC,EAAK8B,IAAQ,EAClCtG,EAAMA,EAAK95B,KAAK4gC,KAAK1C,EAAKoC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK1C,EAAKqC,IAAQ,GACvBvgC,KAAK4gC,KAAKzC,EAAKmC,IAAQ,EACpCzF,EAAMA,EAAK76B,KAAK4gC,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAAS15B,GAJb8xB,EAAMA,EAAK95B,KAAK4gC,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK7C,EAAK2C,IAAQ,GACvB1gC,KAAK4gC,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDz4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAK5C,EAAK0C,IAAQ,IAErB7D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP5H,EAAK95B,KAAK4gC,KAAKjC,EAAKqB,IAEpBnD,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAKsB,KACRjgC,KAAK4gC,KAAKhC,EAAKoB,IAAQ,EACpCnF,EAAK76B,KAAK4gC,KAAKhC,EAAKqB,IACpBnG,EAAMA,EAAK95B,KAAK4gC,KAAKpC,EAAK2B,IAAQ,EAElCtD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKpC,EAAK4B,IAAQ,GACvBpgC,KAAK4gC,KAAKnC,EAAK0B,IAAQ,EACpCtF,EAAMA,EAAK76B,KAAK4gC,KAAKnC,EAAK2B,IAAQ,EAClCtG,EAAMA,EAAK95B,KAAK4gC,KAAKvC,EAAKiC,IAAQ,EAElCzD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKvC,EAAKkC,IAAQ,GACvBvgC,KAAK4gC,KAAKtC,EAAKgC,IAAQ,EACpCzF,EAAMA,EAAK76B,KAAK4gC,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAAS35B,GAJb8xB,EAAMA,EAAK95B,KAAK4gC,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAK1C,EAAKwC,IAAQ,GACvB1gC,KAAK4gC,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDz4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAKzC,EAAKuC,IAAQ,IAErB7D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP7H,EAAK95B,KAAK4gC,KAAKjC,EAAKwB,IAEpBtD,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAKyB,KACRpgC,KAAK4gC,KAAKhC,EAAKuB,IAAQ,EACpCtF,EAAK76B,KAAK4gC,KAAKhC,EAAKwB,IACpBtG,EAAMA,EAAK95B,KAAK4gC,KAAKpC,EAAK8B,IAAQ,EAElCzD,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKpC,EAAK+B,IAAQ,GACvBvgC,KAAK4gC,KAAKnC,EAAK6B,IAAQ,EACpCzF,EAAMA,EAAK76B,KAAK4gC,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAAS55B,GAJb8xB,EAAMA,EAAK95B,KAAK4gC,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKvC,EAAKqC,IAAQ,GACvB1gC,KAAK4gC,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDz4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAKtC,EAAKoC,IAAQ,IAErB7D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEP9H,EAAK95B,KAAK4gC,KAAKjC,EAAK2B,IAEpBzD,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAK4B,KACRvgC,KAAK4gC,KAAKhC,EAAK0B,IAAQ,EACpCzF,EAAK76B,KAAK4gC,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAAS75B,GAJb8xB,EAAMA,EAAK95B,KAAK4gC,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC5D,GADAA,EAAOA,EAAM78B,KAAK4gC,KAAKpC,EAAKkC,IAAQ,GACvB1gC,KAAK4gC,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDz4B,IAFA6yB,EAAMA,EAAK76B,KAAK4gC,KAAKnC,EAAKiC,IAAQ,IAErB7D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAS95B,GAJb8xB,EAAK95B,KAAK4gC,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC5D,GADAA,EAAM78B,KAAK4gC,KAAKjC,EAAK+B,KACR1gC,KAAK4gC,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAz4B,IAFA6yB,EAAK76B,KAAK4gC,KAAKhC,EAAK8B,MAEP7D,IAAQ,IAAO,IAAMiF,KAAQ,IAAO,EACjDA,IAAO,SACPhF,EAAE,GAAK6D,GACP7D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,GACR5E,EAAE,IAAM6E,GACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,GACR/E,EAAE,IAAMgF,GACE,IAAN95B,IACF80B,EAAE,IAAM90B,EACRrK,EAAIlF,UAECkF,CACT,EAOA,SAASokC,EAAUlI,EAAM9B,EAAKp6B,GAC5BA,EAAIs5B,SAAWc,EAAId,SAAW4C,EAAK5C,SACnCt5B,EAAIlF,OAASohC,EAAKphC,OAASs/B,EAAIt/B,OAI/B,IAFA,IAAI6W,EAAQ,EACR0yB,EAAU,EACL95B,EAAI,EAAGA,EAAIvK,EAAIlF,OAAS,EAAGyP,IAAK,CAGvC,IAAI6xB,EAASiI,EACbA,EAAU,EAGV,IAFA,IAAIhI,EAAgB,SAAR1qB,EACR2qB,EAAOj6B,KAAKsI,IAAIJ,EAAG6vB,EAAIt/B,OAAS,GAC3B+O,EAAIxH,KAAKuI,IAAI,EAAGL,EAAI2xB,EAAKphC,OAAS,GAAI+O,GAAKyyB,EAAMzyB,IAAK,CAC7D,IAAI5F,EAAIsG,EAAIV,EAGRC,GAFoB,EAAhBoyB,EAAK3C,MAAMt1B,KACI,EAAfm2B,EAAIb,MAAM1vB,IAGdsyB,EAAS,SAAJryB,EAGTuyB,EAAa,UADbF,EAAMA,EAAKE,EAAS,GAIpBgI,IAFAjI,GAHAA,EAAUA,GAAWtyB,EAAI,SAAa,GAAM,IAGxBqyB,IAAO,IAAO,KAEZ,GACtBC,GAAU,QACZ,CACAp8B,EAAIu5B,MAAMhvB,GAAK8xB,EACf1qB,EAAQyqB,EACRA,EAASiI,CACX,CAOA,OANc,IAAV1yB,EACF3R,EAAIu5B,MAAMhvB,GAAKoH,EAEf3R,EAAIlF,SAGCkF,EAAI86B,QACb,CAEA,SAASwJ,EAAYpI,EAAM9B,EAAKp6B,GAI9B,OAAOokC,EAASlI,EAAM9B,EAAKp6B,EAC7B,CAqBA,SAASukC,EAAMt6B,EAAGC,GAChBjR,KAAKgR,EAAIA,EACThR,KAAKiR,EAAIA,CACX,CA1EK7H,KAAK4gC,OACRhE,EAAchD,GAmDhB3a,EAAGzd,UAAU2gC,MAAQ,SAAgBpK,EAAKp6B,GACxC,IACIoL,EAAMnS,KAAK6B,OAASs/B,EAAIt/B,OAW5B,OAVoB,KAAhB7B,KAAK6B,QAAgC,KAAfs/B,EAAIt/B,OACtBmkC,EAAYhmC,KAAMmhC,EAAKp6B,GACpBoL,EAAM,GACT6wB,EAAWhjC,KAAMmhC,EAAKp6B,GACnBoL,EAAM,KACTg5B,EAASnrC,KAAMmhC,EAAKp6B,GAEpBskC,EAAWrrC,KAAMmhC,EAAKp6B,EAIhC,EAUAukC,EAAK1gC,UAAU4gC,QAAU,SAAkBC,GAGzC,IAFA,IAAIlvB,EAAI,IAAIpS,MAAMshC,GACdj6B,EAAI6W,EAAGzd,UAAUk5B,WAAW2H,GAAK,EAC5BzgC,EAAI,EAAGA,EAAIygC,EAAGzgC,IACrBuR,EAAEvR,GAAKhL,KAAK0rC,OAAO1gC,EAAGwG,EAAGi6B,GAG3B,OAAOlvB,CACT,EAGA+uB,EAAK1gC,UAAU8gC,OAAS,SAAiB16B,EAAGQ,EAAGi6B,GAC7C,GAAU,IAANz6B,GAAWA,IAAMy6B,EAAI,EAAG,OAAOz6B,EAGnC,IADA,IAAI26B,EAAK,EACA3gC,EAAI,EAAGA,EAAIwG,EAAGxG,IACrB2gC,IAAW,EAAJ36B,IAAWQ,EAAIxG,EAAI,EAC1BgG,IAAM,EAGR,OAAO26B,CACT,EAIAL,EAAK1gC,UAAUghC,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GACpE,IAAK,IAAIzgC,EAAI,EAAGA,EAAIygC,EAAGzgC,IACrBghC,EAAKhhC,GAAK8gC,EAAID,EAAI7gC,IAClBihC,EAAKjhC,GAAK+gC,EAAIF,EAAI7gC,GAEtB,EAEAsgC,EAAK1gC,UAAUshC,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMR,EAAGI,GACtE7rC,KAAK4rC,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GAExC,IAAK,IAAI/6B,EAAI,EAAGA,EAAI+6B,EAAG/6B,IAAM,EAM3B,IALA,IAAIc,EAAId,GAAK,EAETy7B,EAAQ/iC,KAAKgjC,IAAI,EAAIhjC,KAAKijC,GAAK76B,GAC/B86B,EAAQljC,KAAKmjC,IAAI,EAAInjC,KAAKijC,GAAK76B,GAE1B+E,EAAI,EAAGA,EAAIk1B,EAAGl1B,GAAK/E,EAI1B,IAHA,IAAIg7B,EAASL,EACTM,EAASH,EAEJ17B,EAAI,EAAGA,EAAIF,EAAGE,IAAK,CAC1B,IAAI87B,EAAKV,EAAKz1B,EAAI3F,GACd+7B,EAAKV,EAAK11B,EAAI3F,GAEdg8B,EAAKZ,EAAKz1B,EAAI3F,EAAIF,GAClBm8B,EAAKZ,EAAK11B,EAAI3F,EAAIF,GAElBo8B,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELd,EAAKz1B,EAAI3F,GAAK87B,EAAKE,EACnBX,EAAK11B,EAAI3F,GAAK+7B,EAAKE,EAEnBb,EAAKz1B,EAAI3F,EAAIF,GAAKg8B,EAAKE,EACvBX,EAAK11B,EAAI3F,EAAIF,GAAKi8B,EAAKE,EAGnBj8B,IAAMY,IACRs7B,EAAKX,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASM,EAEb,CAGN,EAEAxB,EAAK1gC,UAAUmiC,YAAc,SAAsBx8B,EAAG+H,GACpD,IAAImzB,EAAqB,EAAjBriC,KAAKuI,IAAI2G,EAAG/H,GAChBy8B,EAAU,EAAJvB,EACNzgC,EAAI,EACR,IAAKygC,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BzgC,IAGF,OAAO,GAAKA,EAAI,EAAIgiC,CACtB,EAEA1B,EAAK1gC,UAAUqiC,UAAY,SAAoBnB,EAAKC,EAAKN,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIzgC,EAAI,EAAGA,EAAIygC,EAAI,EAAGzgC,IAAK,CAC9B,IAAIuR,EAAIuvB,EAAI9gC,GAEZ8gC,EAAI9gC,GAAK8gC,EAAIL,EAAIzgC,EAAI,GACrB8gC,EAAIL,EAAIzgC,EAAI,GAAKuR,EAEjBA,EAAIwvB,EAAI/gC,GAER+gC,EAAI/gC,IAAM+gC,EAAIN,EAAIzgC,EAAI,GACtB+gC,EAAIN,EAAIzgC,EAAI,IAAMuR,CACpB,CACF,EAEA+uB,EAAK1gC,UAAUsiC,aAAe,SAAuBC,EAAI1B,GAEvD,IADA,IAAI/yB,EAAQ,EACH1N,EAAI,EAAGA,EAAIygC,EAAI,EAAGzgC,IAAK,CAC9B,IAAI22B,EAAoC,KAAhCv4B,KAAKqL,MAAM04B,EAAG,EAAIniC,EAAI,GAAKygC,GACjCriC,KAAKqL,MAAM04B,EAAG,EAAIniC,GAAKygC,GACvB/yB,EAEFy0B,EAAGniC,GAAS,SAAJ22B,EAGNjpB,EADEipB,EAAI,SACE,EAEAA,EAAI,SAAY,CAE5B,CAEA,OAAOwL,CACT,EAEA7B,EAAK1gC,UAAUwiC,WAAa,SAAqBD,EAAIh7B,EAAK25B,EAAKL,GAE7D,IADA,IAAI/yB,EAAQ,EACH1N,EAAI,EAAGA,EAAImH,EAAKnH,IACvB0N,GAAyB,EAARy0B,EAAGniC,GAEpB8gC,EAAI,EAAI9gC,GAAa,KAAR0N,EAAgBA,KAAkB,GAC/CozB,EAAI,EAAI9gC,EAAI,GAAa,KAAR0N,EAAgBA,KAAkB,GAIrD,IAAK1N,EAAI,EAAImH,EAAKnH,EAAIygC,IAAKzgC,EACzB8gC,EAAI9gC,GAAK,EAGX60B,EAAiB,IAAVnnB,GACPmnB,EAA6B,MAAb,KAARnnB,GACV,EAEA4yB,EAAK1gC,UAAUyiC,KAAO,SAAe5B,GAEnC,IADA,IAAI6B,EAAK,IAAInjC,MAAMshC,GACVzgC,EAAI,EAAGA,EAAIygC,EAAGzgC,IACrBsiC,EAAGtiC,GAAK,EAGV,OAAOsiC,CACT,EAEAhC,EAAK1gC,UAAU2iC,KAAO,SAAev8B,EAAGC,EAAGlK,GACzC,IAAI0kC,EAAI,EAAIzrC,KAAK+sC,YAAY/7B,EAAEnP,OAAQoP,EAAEpP,QAErCgqC,EAAM7rC,KAAKwrC,QAAQC,GAEnBhM,EAAIz/B,KAAKqtC,KAAK5B,GAEdK,EAAM,IAAI3hC,MAAMshC,GAChB+B,EAAO,IAAIrjC,MAAMshC,GACjBgC,EAAO,IAAItjC,MAAMshC,GAEjBiC,EAAO,IAAIvjC,MAAMshC,GACjBkC,EAAQ,IAAIxjC,MAAMshC,GAClBmC,EAAQ,IAAIzjC,MAAMshC,GAElBoC,EAAO9mC,EAAIu5B,MACfuN,EAAKhsC,OAAS4pC,EAEdzrC,KAAKotC,WAAWp8B,EAAEsvB,MAAOtvB,EAAEnP,OAAQiqC,EAAKL,GACxCzrC,KAAKotC,WAAWn8B,EAAEqvB,MAAOrvB,EAAEpP,OAAQ6rC,EAAMjC,GAEzCzrC,KAAKksC,UAAUJ,EAAKrM,EAAG+N,EAAMC,EAAMhC,EAAGI,GACtC7rC,KAAKksC,UAAUwB,EAAMjO,EAAGkO,EAAOC,EAAOnC,EAAGI,GAEzC,IAAK,IAAI7gC,EAAI,EAAGA,EAAIygC,EAAGzgC,IAAK,CAC1B,IAAI8hC,EAAKU,EAAKxiC,GAAK2iC,EAAM3iC,GAAKyiC,EAAKziC,GAAK4iC,EAAM5iC,GAC9CyiC,EAAKziC,GAAKwiC,EAAKxiC,GAAK4iC,EAAM5iC,GAAKyiC,EAAKziC,GAAK2iC,EAAM3iC,GAC/CwiC,EAAKxiC,GAAK8hC,CACZ,CASA,OAPA9sC,KAAKitC,UAAUO,EAAMC,EAAMhC,GAC3BzrC,KAAKksC,UAAUsB,EAAMC,EAAMI,EAAMpO,EAAGgM,EAAGI,GACvC7rC,KAAKitC,UAAUY,EAAMpO,EAAGgM,GACxBzrC,KAAKktC,aAAaW,EAAMpC,GAExB1kC,EAAIs5B,SAAWrvB,EAAEqvB,SAAWpvB,EAAEovB,SAC9Bt5B,EAAIlF,OAASmP,EAAEnP,OAASoP,EAAEpP,OACnBkF,EAAI86B,QACb,EAGAxZ,EAAGzd,UAAUo2B,IAAM,SAAcG,GAC/B,IAAIp6B,EAAM,IAAIshB,EAAG,MAEjB,OADAthB,EAAIu5B,MAAQ,IAAIn2B,MAAMnK,KAAK6B,OAASs/B,EAAIt/B,QACjC7B,KAAKurC,MAAMpK,EAAKp6B,EACzB,EAGAshB,EAAGzd,UAAUkjC,KAAO,SAAe3M,GACjC,IAAIp6B,EAAM,IAAIshB,EAAG,MAEjB,OADAthB,EAAIu5B,MAAQ,IAAIn2B,MAAMnK,KAAK6B,OAASs/B,EAAIt/B,QACjCwpC,EAAWrrC,KAAMmhC,EAAKp6B,EAC/B,EAGAshB,EAAGzd,UAAUo/B,KAAO,SAAe7I,GACjC,OAAOnhC,KAAKqS,QAAQk5B,MAAMpK,EAAKnhC,KACjC,EAEAqoB,EAAGzd,UAAUq3B,MAAQ,SAAgBd,GACnC,IAAI4M,EAAW5M,EAAM,EACjB4M,IAAU5M,GAAOA,GAErBtB,EAAsB,kBAARsB,GACdtB,EAAOsB,EAAM,UAIb,IADA,IAAIzoB,EAAQ,EACH1N,EAAI,EAAGA,EAAIhL,KAAK6B,OAAQmJ,IAAK,CACpC,IAAI22B,GAAqB,EAAhB3hC,KAAKsgC,MAAMt1B,IAAUm2B,EAC1B+B,GAAU,SAAJvB,IAA0B,SAARjpB,GAC5BA,IAAU,GACVA,GAAUipB,EAAI,SAAa,EAE3BjpB,GAASwqB,IAAO,GAChBljC,KAAKsgC,MAAMt1B,GAAU,SAALk4B,CAClB,CAOA,OALc,IAAVxqB,IACF1Y,KAAKsgC,MAAMt1B,GAAK0N,EAChB1Y,KAAK6B,UAGAksC,EAAW/tC,KAAK0kC,OAAS1kC,IAClC,EAEAqoB,EAAGzd,UAAUojC,KAAO,SAAe7M,GACjC,OAAOnhC,KAAKqS,QAAQ4vB,MAAMd,EAC5B,EAGA9Y,EAAGzd,UAAUqjC,IAAM,WACjB,OAAOjuC,KAAKghC,IAAIhhC,KAClB,EAGAqoB,EAAGzd,UAAUsjC,KAAO,WAClB,OAAOluC,KAAKgqC,KAAKhqC,KAAKqS,QACxB,EAGAgW,EAAGzd,UAAUsN,IAAM,SAAcipB,GAC/B,IAAIQ,EA7xCN,SAAqBR,GAGnB,IAFA,IAAIQ,EAAI,IAAIx3B,MAAMg3B,EAAI6C,aAEb2B,EAAM,EAAGA,EAAMhE,EAAE9/B,OAAQ8jC,IAAO,CACvC,IAAI/D,EAAO+D,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBhE,EAAEgE,GAAQxE,EAAIb,MAAMsB,KAASgE,EAAQ,CACvC,CAEA,OAAOjE,CACT,CAkxCUwM,CAAWhN,GACnB,GAAiB,IAAbQ,EAAE9/B,OAAc,OAAO,IAAIwmB,EAAG,GAIlC,IADA,IAAIuJ,EAAM5xB,KACDgL,EAAI,EAAGA,EAAI22B,EAAE9/B,QACP,IAAT8/B,EAAE32B,GADsBA,IAAK4mB,EAAMA,EAAIqc,OAI7C,KAAMjjC,EAAI22B,EAAE9/B,OACV,IAAK,IAAIuX,EAAIwY,EAAIqc,MAAOjjC,EAAI22B,EAAE9/B,OAAQmJ,IAAKoO,EAAIA,EAAE60B,MAClC,IAATtM,EAAE32B,KAEN4mB,EAAMA,EAAIoP,IAAI5nB,IAIlB,OAAOwY,CACT,EAGAvJ,EAAGzd,UAAUwjC,OAAS,SAAiBtX,GACrC+I,EAAuB,kBAAT/I,GAAqBA,GAAQ,GAC3C,IAGI9rB,EAHA6F,EAAIimB,EAAO,GACXpmB,GAAKomB,EAAOjmB,GAAK,GACjBw9B,EAAa,WAAe,GAAKx9B,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAI6H,EAAQ,EAEZ,IAAK1N,EAAI,EAAGA,EAAIhL,KAAK6B,OAAQmJ,IAAK,CAChC,IAAIsjC,EAAWtuC,KAAKsgC,MAAMt1B,GAAKqjC,EAC3Bj9B,GAAsB,EAAhBpR,KAAKsgC,MAAMt1B,IAAUsjC,GAAaz9B,EAC5C7Q,KAAKsgC,MAAMt1B,GAAKoG,EAAIsH,EACpBA,EAAQ41B,IAAc,GAAKz9B,CAC7B,CAEI6H,IACF1Y,KAAKsgC,MAAMt1B,GAAK0N,EAChB1Y,KAAK6B,SAET,CAEA,GAAU,IAAN6O,EAAS,CACX,IAAK1F,EAAIhL,KAAK6B,OAAS,EAAGmJ,GAAK,EAAGA,IAChChL,KAAKsgC,MAAMt1B,EAAI0F,GAAK1Q,KAAKsgC,MAAMt1B,GAGjC,IAAKA,EAAI,EAAGA,EAAI0F,EAAG1F,IACjBhL,KAAKsgC,MAAMt1B,GAAK,EAGlBhL,KAAK6B,QAAU6O,CACjB,CAEA,OAAO1Q,KAAK6hC,QACd,EAEAxZ,EAAGzd,UAAU2jC,MAAQ,SAAgBzX,GAGnC,OADA+I,EAAyB,IAAlB7/B,KAAKqgC,UACLrgC,KAAKouC,OAAOtX,EACrB,EAKAzO,EAAGzd,UAAU4jC,OAAS,SAAiB1X,EAAM2X,EAAMC,GAEjD,IAAIld,EADJqO,EAAuB,kBAAT/I,GAAqBA,GAAQ,GAGzCtF,EADEid,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAI59B,EAAIimB,EAAO,GACXpmB,EAAItH,KAAKsI,KAAKolB,EAAOjmB,GAAK,GAAI7Q,KAAK6B,QACnC8sC,EAAO,SAAc,WAAc99B,GAAMA,EACzC+9B,EAAcF,EAMlB,GAJAld,GAAK9gB,EACL8gB,EAAIpoB,KAAKuI,IAAI,EAAG6f,GAGZod,EAAa,CACf,IAAK,IAAI5jC,EAAI,EAAGA,EAAI0F,EAAG1F,IACrB4jC,EAAYtO,MAAMt1B,GAAKhL,KAAKsgC,MAAMt1B,GAEpC4jC,EAAY/sC,OAAS6O,CACvB,CAEA,GAAU,IAANA,QAEG,GAAI1Q,KAAK6B,OAAS6O,EAEvB,IADA1Q,KAAK6B,QAAU6O,EACV1F,EAAI,EAAGA,EAAIhL,KAAK6B,OAAQmJ,IAC3BhL,KAAKsgC,MAAMt1B,GAAKhL,KAAKsgC,MAAMt1B,EAAI0F,QAGjC1Q,KAAKsgC,MAAM,GAAK,EAChBtgC,KAAK6B,OAAS,EAGhB,IAAI6W,EAAQ,EACZ,IAAK1N,EAAIhL,KAAK6B,OAAS,EAAGmJ,GAAK,IAAgB,IAAV0N,GAAe1N,GAAKwmB,GAAIxmB,IAAK,CAChE,IAAIg3B,EAAuB,EAAhBhiC,KAAKsgC,MAAMt1B,GACtBhL,KAAKsgC,MAAMt1B,GAAM0N,GAAU,GAAK7H,EAAOmxB,IAASnxB,EAChD6H,EAAQspB,EAAO2M,CACjB,CAYA,OATIC,GAAyB,IAAVl2B,IACjBk2B,EAAYtO,MAAMsO,EAAY/sC,UAAY6W,GAGxB,IAAhB1Y,KAAK6B,SACP7B,KAAKsgC,MAAM,GAAK,EAChBtgC,KAAK6B,OAAS,GAGT7B,KAAK6hC,QACd,EAEAxZ,EAAGzd,UAAUikC,MAAQ,SAAgB/X,EAAM2X,EAAMC,GAG/C,OADA7O,EAAyB,IAAlB7/B,KAAKqgC,UACLrgC,KAAKwuC,OAAO1X,EAAM2X,EAAMC,EACjC,EAGArmB,EAAGzd,UAAUkkC,KAAO,SAAehY,GACjC,OAAO92B,KAAKqS,QAAQk8B,MAAMzX,EAC5B,EAEAzO,EAAGzd,UAAUmkC,MAAQ,SAAgBjY,GACnC,OAAO92B,KAAKqS,QAAQ+7B,OAAOtX,EAC7B,EAGAzO,EAAGzd,UAAUokC,KAAO,SAAelY,GACjC,OAAO92B,KAAKqS,QAAQw8B,MAAM/X,EAC5B,EAEAzO,EAAGzd,UAAUqkC,MAAQ,SAAgBnY,GACnC,OAAO92B,KAAKqS,QAAQm8B,OAAO1X,EAC7B,EAGAzO,EAAGzd,UAAU45B,MAAQ,SAAgBmB,GACnC9F,EAAsB,kBAAR8F,GAAoBA,GAAO,GACzC,IAAI90B,EAAI80B,EAAM,GACVj1B,GAAKi1B,EAAM90B,GAAK,GAChBuI,EAAI,GAAKvI,EAGb,QAAI7Q,KAAK6B,QAAU6O,OAGX1Q,KAAKsgC,MAAM5vB,GAEL0I,EAChB,EAGAiP,EAAGzd,UAAUskC,OAAS,SAAiBpY,GACrC+I,EAAuB,kBAAT/I,GAAqBA,GAAQ,GAC3C,IAAIjmB,EAAIimB,EAAO,GACXpmB,GAAKomB,EAAOjmB,GAAK,GAIrB,GAFAgvB,EAAyB,IAAlB7/B,KAAKqgC,SAAgB,2CAExBrgC,KAAK6B,QAAU6O,EACjB,OAAO1Q,KAQT,GALU,IAAN6Q,GACFH,IAEF1Q,KAAK6B,OAASuH,KAAKsI,IAAIhB,EAAG1Q,KAAK6B,QAErB,IAANgP,EAAS,CACX,IAAI89B,EAAO,SAAc,WAAc99B,GAAMA,EAC7C7Q,KAAKsgC,MAAMtgC,KAAK6B,OAAS,IAAM8sC,CACjC,CAEA,OAAO3uC,KAAK6hC,QACd,EAGAxZ,EAAGzd,UAAUukC,MAAQ,SAAgBrY,GACnC,OAAO92B,KAAKqS,QAAQ68B,OAAOpY,EAC7B,EAGAzO,EAAGzd,UAAU05B,MAAQ,SAAgBnD,GAGnC,OAFAtB,EAAsB,kBAARsB,GACdtB,EAAOsB,EAAM,UACTA,EAAM,EAAUnhC,KAAKovC,OAAOjO,GAGV,IAAlBnhC,KAAKqgC,SACa,IAAhBrgC,KAAK6B,SAAiC,EAAhB7B,KAAKsgC,MAAM,KAAWa,GAC9CnhC,KAAKsgC,MAAM,GAAKa,GAAuB,EAAhBnhC,KAAKsgC,MAAM,IAClCtgC,KAAKqgC,SAAW,EACTrgC,OAGTA,KAAKqgC,SAAW,EAChBrgC,KAAKovC,MAAMjO,GACXnhC,KAAKqgC,SAAW,EACTrgC,MAIFA,KAAKkiC,OAAOf,EACrB,EAEA9Y,EAAGzd,UAAUs3B,OAAS,SAAiBf,GACrCnhC,KAAKsgC,MAAM,IAAMa,EAGjB,IAAK,IAAIn2B,EAAI,EAAGA,EAAIhL,KAAK6B,QAAU7B,KAAKsgC,MAAMt1B,IAAM,SAAWA,IAC7DhL,KAAKsgC,MAAMt1B,IAAM,SACbA,IAAMhL,KAAK6B,OAAS,EACtB7B,KAAKsgC,MAAMt1B,EAAI,GAAK,EAEpBhL,KAAKsgC,MAAMt1B,EAAI,KAKnB,OAFAhL,KAAK6B,OAASuH,KAAKuI,IAAI3R,KAAK6B,OAAQmJ,EAAI,GAEjChL,IACT,EAGAqoB,EAAGzd,UAAUwkC,MAAQ,SAAgBjO,GAGnC,GAFAtB,EAAsB,kBAARsB,GACdtB,EAAOsB,EAAM,UACTA,EAAM,EAAG,OAAOnhC,KAAKskC,OAAOnD,GAEhC,GAAsB,IAAlBnhC,KAAKqgC,SAIP,OAHArgC,KAAKqgC,SAAW,EAChBrgC,KAAKskC,MAAMnD,GACXnhC,KAAKqgC,SAAW,EACTrgC,KAKT,GAFAA,KAAKsgC,MAAM,IAAMa,EAEG,IAAhBnhC,KAAK6B,QAAgB7B,KAAKsgC,MAAM,GAAK,EACvCtgC,KAAKsgC,MAAM,IAAMtgC,KAAKsgC,MAAM,GAC5BtgC,KAAKqgC,SAAW,OAGhB,IAAK,IAAIr1B,EAAI,EAAGA,EAAIhL,KAAK6B,QAAU7B,KAAKsgC,MAAMt1B,GAAK,EAAGA,IACpDhL,KAAKsgC,MAAMt1B,IAAM,SACjBhL,KAAKsgC,MAAMt1B,EAAI,IAAM,EAIzB,OAAOhL,KAAK6hC,QACd,EAEAxZ,EAAGzd,UAAUykC,KAAO,SAAelO,GACjC,OAAOnhC,KAAKqS,QAAQiyB,MAAMnD,EAC5B,EAEA9Y,EAAGzd,UAAU0kC,KAAO,SAAenO,GACjC,OAAOnhC,KAAKqS,QAAQ+8B,MAAMjO,EAC5B,EAEA9Y,EAAGzd,UAAU2kC,KAAO,WAGlB,OAFAvvC,KAAKqgC,SAAW,EAETrgC,IACT,EAEAqoB,EAAGzd,UAAU4P,IAAM,WACjB,OAAOxa,KAAKqS,QAAQk9B,MACtB,EAEAlnB,EAAGzd,UAAU4kC,aAAe,SAAuBrO,EAAKH,EAAKjzB,GAC3D,IACI/C,EAIA22B,EALAxvB,EAAMgvB,EAAIt/B,OAASkM,EAGvB/N,KAAKoiC,QAAQjwB,GAGb,IAAIuG,EAAQ,EACZ,IAAK1N,EAAI,EAAGA,EAAIm2B,EAAIt/B,OAAQmJ,IAAK,CAC/B22B,GAA6B,EAAxB3hC,KAAKsgC,MAAMt1B,EAAI+C,IAAc2K,EAClC,IAAI2oB,GAAwB,EAAfF,EAAIb,MAAMt1B,IAAUg2B,EAEjCtoB,IADAipB,GAAa,SAARN,IACS,KAAQA,EAAQ,SAAa,GAC3CrhC,KAAKsgC,MAAMt1B,EAAI+C,GAAa,SAAJ4zB,CAC1B,CACA,KAAO32B,EAAIhL,KAAK6B,OAASkM,EAAO/C,IAE9B0N,GADAipB,GAA6B,EAAxB3hC,KAAKsgC,MAAMt1B,EAAI+C,IAAc2K,IACrB,GACb1Y,KAAKsgC,MAAMt1B,EAAI+C,GAAa,SAAJ4zB,EAG1B,GAAc,IAAVjpB,EAAa,OAAO1Y,KAAK6hC,SAK7B,IAFAhC,GAAkB,IAAXnnB,GACPA,EAAQ,EACH1N,EAAI,EAAGA,EAAIhL,KAAK6B,OAAQmJ,IAE3B0N,GADAipB,IAAsB,EAAhB3hC,KAAKsgC,MAAMt1B,IAAU0N,IACd,GACb1Y,KAAKsgC,MAAMt1B,GAAS,SAAJ22B,EAIlB,OAFA3hC,KAAKqgC,SAAW,EAETrgC,KAAK6hC,QACd,EAEAxZ,EAAGzd,UAAU6kC,SAAW,SAAmBtO,EAAK12B,GAC9C,IAAIsD,GAAQ/N,KAAK6B,OAASs/B,EAAIt/B,QAE1B4O,EAAIzQ,KAAKqS,QACTnB,EAAIiwB,EAGJuO,EAA8B,EAAxBx+B,EAAEovB,MAAMpvB,EAAErP,OAAS,GAGf,KADdkM,EAAQ,GADM/N,KAAK8jC,WAAW4L,MAG5Bx+B,EAAIA,EAAE69B,MAAMhhC,GACZ0C,EAAE29B,OAAOrgC,GACT2hC,EAA8B,EAAxBx+B,EAAEovB,MAAMpvB,EAAErP,OAAS,IAI3B,IACIuX,EADAd,EAAI7H,EAAE5O,OAASqP,EAAErP,OAGrB,GAAa,QAAT4I,EAAgB,EAClB2O,EAAI,IAAIiP,EAAG,OACTxmB,OAASyW,EAAI,EACfc,EAAEknB,MAAQ,IAAIn2B,MAAMiP,EAAEvX,QACtB,IAAK,IAAImJ,EAAI,EAAGA,EAAIoO,EAAEvX,OAAQmJ,IAC5BoO,EAAEknB,MAAMt1B,GAAK,CAEjB,CAEA,IAAI2kC,EAAOl/B,EAAE4B,QAAQm9B,aAAat+B,EAAG,EAAGoH,GAClB,IAAlBq3B,EAAKtP,WACP5vB,EAAIk/B,EACAv2B,IACFA,EAAEknB,MAAMhoB,GAAK,IAIjB,IAAK,IAAI1H,EAAI0H,EAAI,EAAG1H,GAAK,EAAGA,IAAK,CAC/B,IAAIg/B,EAAmC,UAAL,EAAxBn/B,EAAE6vB,MAAMpvB,EAAErP,OAAS+O,KACE,EAA5BH,EAAE6vB,MAAMpvB,EAAErP,OAAS+O,EAAI,IAO1B,IAHAg/B,EAAKxmC,KAAKsI,IAAKk+B,EAAKF,EAAO,EAAG,UAE9Bj/B,EAAE++B,aAAat+B,EAAG0+B,EAAIh/B,GACA,IAAfH,EAAE4vB,UACPuP,IACAn/B,EAAE4vB,SAAW,EACb5vB,EAAE++B,aAAat+B,EAAG,EAAGN,GAChBH,EAAE4L,WACL5L,EAAE4vB,UAAY,GAGdjnB,IACFA,EAAEknB,MAAM1vB,GAAKg/B,EAEjB,CAWA,OAVIx2B,GACFA,EAAEyoB,SAEJpxB,EAAEoxB,SAGW,QAATp3B,GAA4B,IAAVsD,GACpB0C,EAAE+9B,OAAOzgC,GAGJ,CACLwE,IAAK6G,GAAK,KACViC,IAAK5K,EAET,EAMA4X,EAAGzd,UAAUilC,OAAS,SAAiB1O,EAAK12B,EAAMqlC,GAGhD,OAFAjQ,GAAQsB,EAAI9kB,UAERrc,KAAKqc,SACA,CACL9J,IAAK,IAAI8V,EAAG,GACZhN,IAAK,IAAIgN,EAAG,IAKM,IAAlBroB,KAAKqgC,UAAmC,IAAjBc,EAAId,UAC7BzO,EAAM5xB,KAAK2kC,MAAMkL,OAAO1O,EAAK12B,GAEhB,QAATA,IACF8H,EAAMqf,EAAIrf,IAAIoyB,OAGH,QAATl6B,IACF4Q,EAAMuW,EAAIvW,IAAIspB,MACVmL,GAA6B,IAAjBz0B,EAAIglB,UAClBhlB,EAAIwqB,KAAK1E,IAIN,CACL5uB,IAAKA,EACL8I,IAAKA,IAIa,IAAlBrb,KAAKqgC,UAAmC,IAAjBc,EAAId,UAC7BzO,EAAM5xB,KAAK6vC,OAAO1O,EAAIwD,MAAOl6B,GAEhB,QAATA,IACF8H,EAAMqf,EAAIrf,IAAIoyB,OAGT,CACLpyB,IAAKA,EACL8I,IAAKuW,EAAIvW,MAI0B,KAAlCrb,KAAKqgC,SAAWc,EAAId,WACvBzO,EAAM5xB,KAAK2kC,MAAMkL,OAAO1O,EAAIwD,MAAOl6B,GAEtB,QAATA,IACF4Q,EAAMuW,EAAIvW,IAAIspB,MACVmL,GAA6B,IAAjBz0B,EAAIglB,UAClBhlB,EAAIyqB,KAAK3E,IAIN,CACL5uB,IAAKqf,EAAIrf,IACT8I,IAAKA,IAOL8lB,EAAIt/B,OAAS7B,KAAK6B,QAAU7B,KAAK+Y,IAAIooB,GAAO,EACvC,CACL5uB,IAAK,IAAI8V,EAAG,GACZhN,IAAKrb,MAKU,IAAfmhC,EAAIt/B,OACO,QAAT4I,EACK,CACL8H,IAAKvS,KAAK+vC,KAAK5O,EAAIb,MAAM,IACzBjlB,IAAK,MAII,QAAT5Q,EACK,CACL8H,IAAK,KACL8I,IAAK,IAAIgN,EAAGroB,KAAK8iC,MAAM3B,EAAIb,MAAM,MAI9B,CACL/tB,IAAKvS,KAAK+vC,KAAK5O,EAAIb,MAAM,IACzBjlB,IAAK,IAAIgN,EAAGroB,KAAK8iC,MAAM3B,EAAIb,MAAM,MAI9BtgC,KAAKyvC,SAAStO,EAAK12B,GAlF1B,IAAI8H,EAAK8I,EAAKuW,CAmFhB,EAGAvJ,EAAGzd,UAAU2H,IAAM,SAAc4uB,GAC/B,OAAOnhC,KAAK6vC,OAAO1O,EAAK,OAAO,GAAO5uB,GACxC,EAGA8V,EAAGzd,UAAUyQ,IAAM,SAAc8lB,GAC/B,OAAOnhC,KAAK6vC,OAAO1O,EAAK,OAAO,GAAO9lB,GACxC,EAEAgN,EAAGzd,UAAUolC,KAAO,SAAe7O,GACjC,OAAOnhC,KAAK6vC,OAAO1O,EAAK,OAAO,GAAM9lB,GACvC,EAGAgN,EAAGzd,UAAUqlC,SAAW,SAAmB9O,GACzC,IAAI+O,EAAKlwC,KAAK6vC,OAAO1O,GAGrB,GAAI+O,EAAG70B,IAAIgB,SAAU,OAAO6zB,EAAG39B,IAE/B,IAAI8I,EAA0B,IAApB60B,EAAG39B,IAAI8tB,SAAiB6P,EAAG70B,IAAIyqB,KAAK3E,GAAO+O,EAAG70B,IAEpDN,EAAOomB,EAAI8N,MAAM,GACjBkB,EAAKhP,EAAIiP,MAAM,GACfr3B,EAAMsC,EAAItC,IAAIgC,GAGlB,OAAIhC,EAAM,GAAa,IAAPo3B,GAAoB,IAARp3B,EAAmBm3B,EAAG39B,IAGvB,IAApB29B,EAAG39B,IAAI8tB,SAAiB6P,EAAG39B,IAAI68B,MAAM,GAAKc,EAAG39B,IAAI+xB,MAAM,EAChE,EAEAjc,EAAGzd,UAAUk4B,MAAQ,SAAgB3B,GACnC,IAAI4M,EAAW5M,EAAM,EACjB4M,IAAU5M,GAAOA,GAErBtB,EAAOsB,GAAO,UAId,IAHA,IAAI5qB,GAAK,GAAK,IAAM4qB,EAEhBpW,EAAM,EACD/f,EAAIhL,KAAK6B,OAAS,EAAGmJ,GAAK,EAAGA,IACpC+f,GAAOxU,EAAIwU,GAAuB,EAAhB/qB,KAAKsgC,MAAMt1B,KAAWm2B,EAG1C,OAAO4M,GAAYhjB,EAAMA,CAC3B,EAGA1C,EAAGzd,UAAUylC,KAAO,SAAelP,GACjC,OAAOnhC,KAAK8iC,MAAM3B,EACpB,EAGA9Y,EAAGzd,UAAUm4B,MAAQ,SAAgB5B,GACnC,IAAI4M,EAAW5M,EAAM,EACjB4M,IAAU5M,GAAOA,GAErBtB,EAAOsB,GAAO,UAGd,IADA,IAAIzoB,EAAQ,EACH1N,EAAIhL,KAAK6B,OAAS,EAAGmJ,GAAK,EAAGA,IAAK,CACzC,IAAI22B,GAAqB,EAAhB3hC,KAAKsgC,MAAMt1B,IAAkB,SAAR0N,EAC9B1Y,KAAKsgC,MAAMt1B,GAAM22B,EAAIR,EAAO,EAC5BzoB,EAAQipB,EAAIR,CACd,CAGA,OADAnhC,KAAK6hC,SACEkM,EAAW/tC,KAAK0kC,OAAS1kC,IAClC,EAEAqoB,EAAGzd,UAAUmlC,KAAO,SAAe5O,GACjC,OAAOnhC,KAAKqS,QAAQ0wB,MAAM5B,EAC5B,EAEA9Y,EAAGzd,UAAU0lC,KAAO,SAAe/5B,GACjCspB,EAAsB,IAAftpB,EAAE8pB,UACTR,GAAQtpB,EAAE8F,UAEV,IAAIrL,EAAIhR,KACJiR,EAAIsF,EAAElE,QAGRrB,EADiB,IAAfA,EAAEqvB,SACArvB,EAAEg/B,KAAKz5B,GAEPvF,EAAEqB,QAaR,IATA,IAAIk+B,EAAI,IAAIloB,EAAG,GACXmoB,EAAI,IAAInoB,EAAG,GAGXooB,EAAI,IAAIpoB,EAAG,GACXqoB,EAAI,IAAIroB,EAAG,GAEXsoB,EAAI,EAED3/B,EAAE4/B,UAAY3/B,EAAE2/B,UACrB5/B,EAAEw9B,OAAO,GACTv9B,EAAEu9B,OAAO,KACPmC,EAMJ,IAHA,IAAIE,EAAK5/B,EAAEoB,QACPy+B,EAAK9/B,EAAEqB,SAEHrB,EAAEqL,UAAU,CAClB,IAAK,IAAIrR,EAAI,EAAG+lC,EAAK,EAAyB,KAArB//B,EAAEsvB,MAAM,GAAKyQ,IAAa/lC,EAAI,KAAMA,EAAG+lC,IAAO,GACvE,GAAI/lC,EAAI,EAEN,IADAgG,EAAEw9B,OAAOxjC,GACFA,KAAM,IACPulC,EAAEz+B,SAAW0+B,EAAE1+B,WACjBy+B,EAAE1K,KAAKgL,GACPL,EAAE1K,KAAKgL,IAGTP,EAAE/B,OAAO,GACTgC,EAAEhC,OAAO,GAIb,IAAK,IAAI59B,EAAI,EAAGogC,EAAK,EAAyB,KAArB//B,EAAEqvB,MAAM,GAAK0Q,IAAapgC,EAAI,KAAMA,EAAGogC,IAAO,GACvE,GAAIpgC,EAAI,EAEN,IADAK,EAAEu9B,OAAO59B,GACFA,KAAM,IACP6/B,EAAE3+B,SAAW4+B,EAAE5+B,WACjB2+B,EAAE5K,KAAKgL,GACPH,EAAE5K,KAAKgL,IAGTL,EAAEjC,OAAO,GACTkC,EAAElC,OAAO,GAITx9B,EAAE+H,IAAI9H,IAAM,GACdD,EAAE80B,KAAK70B,GACPs/B,EAAEzK,KAAK2K,GACPD,EAAE1K,KAAK4K,KAEPz/B,EAAE60B,KAAK90B,GACPy/B,EAAE3K,KAAKyK,GACPG,EAAE5K,KAAK0K,GAEX,CAEA,MAAO,CACL//B,EAAGggC,EACHv/B,EAAGw/B,EACHO,IAAKhgC,EAAEm9B,OAAOuC,GAElB,EAKAtoB,EAAGzd,UAAUsmC,OAAS,SAAiB36B,GACrCspB,EAAsB,IAAftpB,EAAE8pB,UACTR,GAAQtpB,EAAE8F,UAEV,IAAI5L,EAAIzQ,KACJkR,EAAIqF,EAAElE,QAGR5B,EADiB,IAAfA,EAAE4vB,SACA5vB,EAAEu/B,KAAKz5B,GAEP9F,EAAE4B,QAQR,IALA,IAuCIuf,EAvCAuf,EAAK,IAAI9oB,EAAG,GACZ+oB,EAAK,IAAI/oB,EAAG,GAEZgpB,EAAQngC,EAAEmB,QAEP5B,EAAE6gC,KAAK,GAAK,GAAKpgC,EAAEogC,KAAK,GAAK,GAAG,CACrC,IAAK,IAAItmC,EAAI,EAAG+lC,EAAK,EAAyB,KAArBtgC,EAAE6vB,MAAM,GAAKyQ,IAAa/lC,EAAI,KAAMA,EAAG+lC,IAAO,GACvE,GAAI/lC,EAAI,EAEN,IADAyF,EAAE+9B,OAAOxjC,GACFA,KAAM,GACPmmC,EAAGr/B,SACLq/B,EAAGtL,KAAKwL,GAGVF,EAAG3C,OAAO,GAId,IAAK,IAAI59B,EAAI,EAAGogC,EAAK,EAAyB,KAArB9/B,EAAEovB,MAAM,GAAK0Q,IAAapgC,EAAI,KAAMA,EAAGogC,IAAO,GACvE,GAAIpgC,EAAI,EAEN,IADAM,EAAEs9B,OAAO59B,GACFA,KAAM,GACPwgC,EAAGt/B,SACLs/B,EAAGvL,KAAKwL,GAGVD,EAAG5C,OAAO,GAIV/9B,EAAEsI,IAAI7H,IAAM,GACdT,EAAEq1B,KAAK50B,GACPigC,EAAGrL,KAAKsL,KAERlgC,EAAE40B,KAAKr1B,GACP2gC,EAAGtL,KAAKqL,GAEZ,CAaA,OATEvf,EADgB,IAAdnhB,EAAE6gC,KAAK,GACHH,EAEAC,GAGAE,KAAK,GAAK,GAChB1f,EAAIiU,KAAKtvB,GAGJqb,CACT,EAEAvJ,EAAGzd,UAAUqmC,IAAM,SAAc9P,GAC/B,GAAInhC,KAAKqc,SAAU,OAAO8kB,EAAI3mB,MAC9B,GAAI2mB,EAAI9kB,SAAU,OAAOrc,KAAKwa,MAE9B,IAAI/J,EAAIzQ,KAAKqS,QACTnB,EAAIiwB,EAAI9uB,QACZ5B,EAAE4vB,SAAW,EACbnvB,EAAEmvB,SAAW,EAGb,IAAK,IAAItyB,EAAQ,EAAG0C,EAAEmgC,UAAY1/B,EAAE0/B,SAAU7iC,IAC5C0C,EAAE+9B,OAAO,GACTt9B,EAAEs9B,OAAO,GAGX,OAAG,CACD,KAAO/9B,EAAEmgC,UACPngC,EAAE+9B,OAAO,GAEX,KAAOt9B,EAAE0/B,UACP1/B,EAAEs9B,OAAO,GAGX,IAAI39B,EAAIJ,EAAEsI,IAAI7H,GACd,GAAIL,EAAI,EAAG,CAET,IAAI0L,EAAI9L,EACRA,EAAIS,EACJA,EAAIqL,CACN,MAAO,GAAU,IAAN1L,GAAyB,IAAdK,EAAEogC,KAAK,GAC3B,MAGF7gC,EAAEq1B,KAAK50B,EACT,CAEA,OAAOA,EAAEk9B,OAAOrgC,EAClB,EAGAsa,EAAGzd,UAAU2mC,KAAO,SAAepQ,GACjC,OAAOnhC,KAAKswC,KAAKnP,GAAK1wB,EAAEu/B,KAAK7O,EAC/B,EAEA9Y,EAAGzd,UAAUgmC,OAAS,WACpB,OAA+B,KAAP,EAAhB5wC,KAAKsgC,MAAM,GACrB,EAEAjY,EAAGzd,UAAUkH,MAAQ,WACnB,OAA+B,KAAP,EAAhB9R,KAAKsgC,MAAM,GACrB,EAGAjY,EAAGzd,UAAUwlC,MAAQ,SAAgBjP,GACnC,OAAOnhC,KAAKsgC,MAAM,GAAKa,CACzB,EAGA9Y,EAAGzd,UAAU4mC,MAAQ,SAAgB7L,GACnC9F,EAAsB,kBAAR8F,GACd,IAAI90B,EAAI80B,EAAM,GACVj1B,GAAKi1B,EAAM90B,GAAK,GAChBuI,EAAI,GAAKvI,EAGb,GAAI7Q,KAAK6B,QAAU6O,EAGjB,OAFA1Q,KAAKoiC,QAAQ1xB,EAAI,GACjB1Q,KAAKsgC,MAAM5vB,IAAM0I,EACVpZ,KAKT,IADA,IAAI0Y,EAAQU,EACHpO,EAAI0F,EAAa,IAAVgI,GAAe1N,EAAIhL,KAAK6B,OAAQmJ,IAAK,CACnD,IAAI22B,EAAoB,EAAhB3hC,KAAKsgC,MAAMt1B,GAEnB0N,GADAipB,GAAKjpB,KACS,GACdipB,GAAK,SACL3hC,KAAKsgC,MAAMt1B,GAAK22B,CAClB,CAKA,OAJc,IAAVjpB,IACF1Y,KAAKsgC,MAAMt1B,GAAK0N,EAChB1Y,KAAK6B,UAEA7B,IACT,EAEAqoB,EAAGzd,UAAUyR,OAAS,WACpB,OAAuB,IAAhBrc,KAAK6B,QAAkC,IAAlB7B,KAAKsgC,MAAM,EACzC,EAEAjY,EAAGzd,UAAU0mC,KAAO,SAAenQ,GACjC,IAOIvP,EAPAyO,EAAWc,EAAM,EAErB,GAAsB,IAAlBnhC,KAAKqgC,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlBrgC,KAAKqgC,UAAkBA,EAAU,OAAO,EAK5C,GAHArgC,KAAK6hC,SAGD7hC,KAAK6B,OAAS,EAChB+vB,EAAM,MACD,CACDyO,IACFc,GAAOA,GAGTtB,EAAOsB,GAAO,SAAW,qBAEzB,IAAIQ,EAAoB,EAAhB3hC,KAAKsgC,MAAM,GACnB1O,EAAM+P,IAAMR,EAAM,EAAIQ,EAAIR,GAAO,EAAI,CACvC,CACA,OAAsB,IAAlBnhC,KAAKqgC,SAA8B,GAANzO,EAC1BA,CACT,EAMAvJ,EAAGzd,UAAUmO,IAAM,SAAcooB,GAC/B,GAAsB,IAAlBnhC,KAAKqgC,UAAmC,IAAjBc,EAAId,SAAgB,OAAQ,EACvD,GAAsB,IAAlBrgC,KAAKqgC,UAAmC,IAAjBc,EAAId,SAAgB,OAAO,EAEtD,IAAIzO,EAAM5xB,KAAKyxC,KAAKtQ,GACpB,OAAsB,IAAlBnhC,KAAKqgC,SAA8B,GAANzO,EAC1BA,CACT,EAGAvJ,EAAGzd,UAAU6mC,KAAO,SAAetQ,GAEjC,GAAInhC,KAAK6B,OAASs/B,EAAIt/B,OAAQ,OAAO,EACrC,GAAI7B,KAAK6B,OAASs/B,EAAIt/B,OAAQ,OAAQ,EAGtC,IADA,IAAI+vB,EAAM,EACD5mB,EAAIhL,KAAK6B,OAAS,EAAGmJ,GAAK,EAAGA,IAAK,CACzC,IAAIyF,EAAoB,EAAhBzQ,KAAKsgC,MAAMt1B,GACfkG,EAAmB,EAAfiwB,EAAIb,MAAMt1B,GAElB,GAAIyF,IAAMS,EAAV,CACIT,EAAIS,EACN0gB,GAAO,EACEnhB,EAAIS,IACb0gB,EAAM,GAER,KANqB,CAOvB,CACA,OAAOA,CACT,EAEAvJ,EAAGzd,UAAU8mC,IAAM,SAAcvQ,GAC/B,OAA0B,IAAnBnhC,KAAKsxC,KAAKnQ,EACnB,EAEA9Y,EAAGzd,UAAUgR,GAAK,SAAaulB,GAC7B,OAAyB,IAAlBnhC,KAAK+Y,IAAIooB,EAClB,EAEA9Y,EAAGzd,UAAU+mC,KAAO,SAAexQ,GACjC,OAAOnhC,KAAKsxC,KAAKnQ,IAAQ,CAC3B,EAEA9Y,EAAGzd,UAAUkR,IAAM,SAAcqlB,GAC/B,OAAOnhC,KAAK+Y,IAAIooB,IAAQ,CAC1B,EAEA9Y,EAAGzd,UAAUgnC,IAAM,SAAczQ,GAC/B,OAA2B,IAApBnhC,KAAKsxC,KAAKnQ,EACnB,EAEA9Y,EAAGzd,UAAUoR,GAAK,SAAamlB,GAC7B,OAA0B,IAAnBnhC,KAAK+Y,IAAIooB,EAClB,EAEA9Y,EAAGzd,UAAUinC,KAAO,SAAe1Q,GACjC,OAAOnhC,KAAKsxC,KAAKnQ,IAAQ,CAC3B,EAEA9Y,EAAGzd,UAAUsR,IAAM,SAAcilB,GAC/B,OAAOnhC,KAAK+Y,IAAIooB,IAAQ,CAC1B,EAEA9Y,EAAGzd,UAAUknC,IAAM,SAAc3Q,GAC/B,OAA0B,IAAnBnhC,KAAKsxC,KAAKnQ,EACnB,EAEA9Y,EAAGzd,UAAU6Q,GAAK,SAAa0lB,GAC7B,OAAyB,IAAlBnhC,KAAK+Y,IAAIooB,EAClB,EAMA9Y,EAAGkY,IAAM,SAAcY,GACrB,OAAO,IAAI4Q,EAAI5Q,EACjB,EAEA9Y,EAAGzd,UAAUonC,MAAQ,SAAgBC,GAGnC,OAFApS,GAAQ7/B,KAAKugC,IAAK,yCAClBV,EAAyB,IAAlB7/B,KAAKqgC,SAAgB,iCACrB4R,EAAIC,UAAUlyC,MAAMmyC,UAAUF,EACvC,EAEA5pB,EAAGzd,UAAUwnC,QAAU,WAErB,OADAvS,EAAO7/B,KAAKugC,IAAK,wDACVvgC,KAAKugC,IAAI8R,YAAYryC,KAC9B,EAEAqoB,EAAGzd,UAAUunC,UAAY,SAAoBF,GAE3C,OADAjyC,KAAKugC,IAAM0R,EACJjyC,IACT,EAEAqoB,EAAGzd,UAAU0nC,SAAW,SAAmBL,GAEzC,OADApS,GAAQ7/B,KAAKugC,IAAK,yCACXvgC,KAAKmyC,UAAUF,EACxB,EAEA5pB,EAAGzd,UAAU2nC,OAAS,SAAiBpR,GAErC,OADAtB,EAAO7/B,KAAKugC,IAAK,sCACVvgC,KAAKugC,IAAIh+B,IAAIvC,KAAMmhC,EAC5B,EAEA9Y,EAAGzd,UAAU4nC,QAAU,SAAkBrR,GAEvC,OADAtB,EAAO7/B,KAAKugC,IAAK,uCACVvgC,KAAKugC,IAAIsF,KAAK7lC,KAAMmhC,EAC7B,EAEA9Y,EAAGzd,UAAU6nC,OAAS,SAAiBtR,GAErC,OADAtB,EAAO7/B,KAAKugC,IAAK,sCACVvgC,KAAKugC,IAAIwF,IAAI/lC,KAAMmhC,EAC5B,EAEA9Y,EAAGzd,UAAU8nC,QAAU,SAAkBvR,GAEvC,OADAtB,EAAO7/B,KAAKugC,IAAK,uCACVvgC,KAAKugC,IAAIuF,KAAK9lC,KAAMmhC,EAC7B,EAEA9Y,EAAGzd,UAAU+nC,OAAS,SAAiBxR,GAErC,OADAtB,EAAO7/B,KAAKugC,IAAK,sCACVvgC,KAAKugC,IAAIqS,IAAI5yC,KAAMmhC,EAC5B,EAEA9Y,EAAGzd,UAAUioC,OAAS,SAAiB1R,GAGrC,OAFAtB,EAAO7/B,KAAKugC,IAAK,sCACjBvgC,KAAKugC,IAAIuS,SAAS9yC,KAAMmhC,GACjBnhC,KAAKugC,IAAIS,IAAIhhC,KAAMmhC,EAC5B,EAEA9Y,EAAGzd,UAAUmoC,QAAU,SAAkB5R,GAGvC,OAFAtB,EAAO7/B,KAAKugC,IAAK,sCACjBvgC,KAAKugC,IAAIuS,SAAS9yC,KAAMmhC,GACjBnhC,KAAKugC,IAAIyJ,KAAKhqC,KAAMmhC,EAC7B,EAEA9Y,EAAGzd,UAAUooC,OAAS,WAGpB,OAFAnT,EAAO7/B,KAAKugC,IAAK,sCACjBvgC,KAAKugC,IAAI0S,SAASjzC,MACXA,KAAKugC,IAAI0N,IAAIjuC,KACtB,EAEAqoB,EAAGzd,UAAUsoC,QAAU,WAGrB,OAFArT,EAAO7/B,KAAKugC,IAAK,uCACjBvgC,KAAKugC,IAAI0S,SAASjzC,MACXA,KAAKugC,IAAI2N,KAAKluC,KACvB,EAGAqoB,EAAGzd,UAAUuoC,QAAU,WAGrB,OAFAtT,EAAO7/B,KAAKugC,IAAK,uCACjBvgC,KAAKugC,IAAI0S,SAASjzC,MACXA,KAAKugC,IAAIhjB,KAAKvd,KACvB,EAEAqoB,EAAGzd,UAAUwoC,QAAU,WAGrB,OAFAvT,EAAO7/B,KAAKugC,IAAK,uCACjBvgC,KAAKugC,IAAI0S,SAASjzC,MACXA,KAAKugC,IAAIgR,KAAKvxC,KACvB,EAGAqoB,EAAGzd,UAAUyoC,OAAS,WAGpB,OAFAxT,EAAO7/B,KAAKugC,IAAK,sCACjBvgC,KAAKugC,IAAI0S,SAASjzC,MACXA,KAAKugC,IAAIoE,IAAI3kC,KACtB,EAEAqoB,EAAGzd,UAAU0oC,OAAS,SAAiBnS,GAGrC,OAFAtB,EAAO7/B,KAAKugC,MAAQY,EAAIZ,IAAK,qBAC7BvgC,KAAKugC,IAAI0S,SAASjzC,MACXA,KAAKugC,IAAIroB,IAAIlY,KAAMmhC,EAC5B,EAGA,IAAIoS,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQhiC,EAAM2E,GAErBvW,KAAK4R,KAAOA,EACZ5R,KAAKuW,EAAI,IAAI8R,EAAG9R,EAAG,IACnBvW,KAAKuQ,EAAIvQ,KAAKuW,EAAEytB,YAChBhkC,KAAKsR,EAAI,IAAI+W,EAAG,GAAG+lB,OAAOpuC,KAAKuQ,GAAGu1B,KAAK9lC,KAAKuW,GAE5CvW,KAAK6zC,IAAM7zC,KAAK8zC,MAClB,CAgDA,SAASC,IACPH,EAAO98B,KACL9W,KACA,OACA,0EACJ,CA8DA,SAASg0C,IACPJ,EAAO98B,KACL9W,KACA,OACA,iEACJ,CAGA,SAASi0C,IACPL,EAAO98B,KACL9W,KACA,OACA,wDACJ,CAGA,SAASk0C,IAEPN,EAAO98B,KACL9W,KACA,QACA,sEACJ,CA6CA,SAAS+xC,EAAKz5B,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI67B,EAAQ9rB,EAAG+rB,OAAO97B,GACtBtY,KAAKsY,EAAI67B,EAAM59B,EACfvW,KAAKm0C,MAAQA,CACf,MACEtU,EAAOvnB,EAAEo5B,IAAI,GAAI,kCACjB1xC,KAAKsY,EAAIA,EACTtY,KAAKm0C,MAAQ,IAEjB,CAkOA,SAASE,EAAM/7B,GACby5B,EAAIj7B,KAAK9W,KAAMsY,GAEftY,KAAK+N,MAAQ/N,KAAKsY,EAAE0rB,YAChBhkC,KAAK+N,MAAQ,KAAO,IACtB/N,KAAK+N,OAAS,GAAM/N,KAAK+N,MAAQ,IAGnC/N,KAAK6Q,EAAI,IAAIwX,EAAG,GAAG+lB,OAAOpuC,KAAK+N,OAC/B/N,KAAKmwC,GAAKnwC,KAAKs0C,KAAKt0C,KAAK6Q,EAAEo9B,OAC3BjuC,KAAKu0C,KAAOv0C,KAAK6Q,EAAEqgC,OAAOlxC,KAAKsY,GAE/BtY,KAAKw0C,KAAOx0C,KAAKu0C,KAAKvT,IAAIhhC,KAAK6Q,GAAGu+B,MAAM,GAAG78B,IAAIvS,KAAKsY,GACpDtY,KAAKw0C,KAAOx0C,KAAKw0C,KAAKxE,KAAKhwC,KAAK6Q,GAChC7Q,KAAKw0C,KAAOx0C,KAAK6Q,EAAEk1B,IAAI/lC,KAAKw0C,KAC9B,CA/aAZ,EAAOhpC,UAAUkpC,KAAO,WACtB,IAAID,EAAM,IAAIxrB,EAAG,MAEjB,OADAwrB,EAAIvT,MAAQ,IAAIn2B,MAAMf,KAAKwG,KAAK5P,KAAKuQ,EAAI,KAClCsjC,CACT,EAEAD,EAAOhpC,UAAU6pC,QAAU,SAAkBtT,GAG3C,IACIuT,EADA7jC,EAAIswB,EAGR,GACEnhC,KAAKuI,MAAMsI,EAAG7Q,KAAK6zC,KAGnBa,GADA7jC,GADAA,EAAI7Q,KAAK20C,MAAM9jC,IACTg1B,KAAK7lC,KAAK6zC,MACP7P,kBACF0Q,EAAO10C,KAAKuQ,GAErB,IAAIwI,EAAM27B,EAAO10C,KAAKuQ,GAAK,EAAIM,EAAE4gC,KAAKzxC,KAAKuW,GAgB3C,OAfY,IAARwC,GACFlI,EAAEyvB,MAAM,GAAK,EACbzvB,EAAEhP,OAAS,GACFkX,EAAM,EACflI,EAAEi1B,KAAK9lC,KAAKuW,QAEIzU,IAAZ+O,EAAE+jC,MAEJ/jC,EAAE+jC,QAGF/jC,EAAEgxB,SAIChxB,CACT,EAEA+iC,EAAOhpC,UAAUrC,MAAQ,SAAgBtI,EAAO8G,GAC9C9G,EAAMuuC,OAAOxuC,KAAKuQ,EAAG,EAAGxJ,EAC1B,EAEA6sC,EAAOhpC,UAAU+pC,MAAQ,SAAgBxT,GACvC,OAAOA,EAAI6I,KAAKhqC,KAAKsR,EACvB,EAQAgtB,EAASyV,EAAMH,GAEfG,EAAKnpC,UAAUrC,MAAQ,SAAgBtI,EAAOI,GAK5C,IAHA,IAAIsuC,EAAO,QAEPhd,EAASvoB,KAAKsI,IAAIzR,EAAM4B,OAAQ,GAC3BmJ,EAAI,EAAGA,EAAI2mB,EAAQ3mB,IAC1B3K,EAAOigC,MAAMt1B,GAAK/K,EAAMqgC,MAAMt1B,GAIhC,GAFA3K,EAAOwB,OAAS8vB,EAEZ1xB,EAAM4B,QAAU,EAGlB,OAFA5B,EAAMqgC,MAAM,GAAK,OACjBrgC,EAAM4B,OAAS,GAKjB,IAAIgzC,EAAO50C,EAAMqgC,MAAM,GAGvB,IAFAjgC,EAAOigC,MAAMjgC,EAAOwB,UAAYgzC,EAAOlG,EAElC3jC,EAAI,GAAIA,EAAI/K,EAAM4B,OAAQmJ,IAAK,CAClC,IAAIysB,EAAwB,EAAjBx3B,EAAMqgC,MAAMt1B,GACvB/K,EAAMqgC,MAAMt1B,EAAI,KAAQysB,EAAOkX,IAAS,EAAMkG,IAAS,GACvDA,EAAOpd,CACT,CACAod,KAAU,GACV50C,EAAMqgC,MAAMt1B,EAAI,IAAM6pC,EACT,IAATA,GAAc50C,EAAM4B,OAAS,GAC/B5B,EAAM4B,QAAU,GAEhB5B,EAAM4B,QAAU,CAEpB,EAEAkyC,EAAKnpC,UAAU+pC,MAAQ,SAAgBxT,GAErCA,EAAIb,MAAMa,EAAIt/B,QAAU,EACxBs/B,EAAIb,MAAMa,EAAIt/B,OAAS,GAAK,EAC5Bs/B,EAAIt/B,QAAU,EAId,IADA,IAAIqhC,EAAK,EACAl4B,EAAI,EAAGA,EAAIm2B,EAAIt/B,OAAQmJ,IAAK,CACnC,IAAI22B,EAAmB,EAAfR,EAAIb,MAAMt1B,GAClBk4B,GAAU,IAAJvB,EACNR,EAAIb,MAAMt1B,GAAU,SAALk4B,EACfA,EAAS,GAAJvB,GAAauB,EAAK,SAAa,EACtC,CASA,OANkC,IAA9B/B,EAAIb,MAAMa,EAAIt/B,OAAS,KACzBs/B,EAAIt/B,SAC8B,IAA9Bs/B,EAAIb,MAAMa,EAAIt/B,OAAS,IACzBs/B,EAAIt/B,UAGDs/B,CACT,EAQA7C,EAAS0V,EAAMJ,GAQftV,EAAS2V,EAAML,GASftV,EAAS4V,EAAQN,GAEjBM,EAAOtpC,UAAU+pC,MAAQ,SAAgBxT,GAGvC,IADA,IAAIzoB,EAAQ,EACH1N,EAAI,EAAGA,EAAIm2B,EAAIt/B,OAAQmJ,IAAK,CACnC,IAAIi5B,EAA0B,IAAL,EAAf9C,EAAIb,MAAMt1B,IAAiB0N,EACjCwqB,EAAU,SAALe,EACTA,KAAQ,GAER9C,EAAIb,MAAMt1B,GAAKk4B,EACfxqB,EAAQurB,CACV,CAIA,OAHc,IAAVvrB,IACFyoB,EAAIb,MAAMa,EAAIt/B,UAAY6W,GAErByoB,CACT,EAGA9Y,EAAG+rB,OAAS,SAAgBxiC,GAE1B,GAAI2hC,EAAO3hC,GAAO,OAAO2hC,EAAO3hC,GAEhC,IAAIuiC,EACJ,GAAa,SAATviC,EACFuiC,EAAQ,IAAIJ,OACP,GAAa,SAATniC,EACTuiC,EAAQ,IAAIH,OACP,GAAa,SAATpiC,EACTuiC,EAAQ,IAAIF,MACP,IAAa,WAATriC,EAGT,MAAM,IAAI/N,MAAM,iBAAmB+N,GAFnCuiC,EAAQ,IAAID,CAGd,CAGA,OAFAX,EAAO3hC,GAAQuiC,EAERA,CACT,EAiBApC,EAAInnC,UAAUqoC,SAAW,SAAmBxiC,GAC1CovB,EAAsB,IAAfpvB,EAAE4vB,SAAgB,iCACzBR,EAAOpvB,EAAE8vB,IAAK,kCAChB,EAEAwR,EAAInnC,UAAUkoC,SAAW,SAAmBriC,EAAGS,GAC7C2uB,EAAqC,KAA7BpvB,EAAE4vB,SAAWnvB,EAAEmvB,UAAiB,iCACxCR,EAAOpvB,EAAE8vB,KAAO9vB,EAAE8vB,MAAQrvB,EAAEqvB,IAC1B,kCACJ,EAEAwR,EAAInnC,UAAU0pC,KAAO,SAAe7jC,GAClC,OAAIzQ,KAAKm0C,MAAcn0C,KAAKm0C,MAAMM,QAAQhkC,GAAG0hC,UAAUnyC,OAEvDihC,EAAKxwB,EAAGA,EAAEu/B,KAAKhwC,KAAKsY,GAAG65B,UAAUnyC,OAC1ByQ,EACT,EAEAshC,EAAInnC,UAAU+5B,IAAM,SAAcl0B,GAChC,OAAIA,EAAE4L,SACG5L,EAAE4B,QAGJrS,KAAKsY,EAAEytB,IAAIt1B,GAAG0hC,UAAUnyC,KACjC,EAEA+xC,EAAInnC,UAAUrI,IAAM,SAAckO,EAAGS,GACnClR,KAAK8yC,SAASriC,EAAGS,GAEjB,IAAI0gB,EAAMnhB,EAAElO,IAAI2O,GAIhB,OAHI0gB,EAAI7Y,IAAI/Y,KAAKsY,IAAM,GACrBsZ,EAAIkU,KAAK9lC,KAAKsY,GAETsZ,EAAIugB,UAAUnyC,KACvB,EAEA+xC,EAAInnC,UAAUi7B,KAAO,SAAep1B,EAAGS,GACrClR,KAAK8yC,SAASriC,EAAGS,GAEjB,IAAI0gB,EAAMnhB,EAAEo1B,KAAK30B,GAIjB,OAHI0gB,EAAI7Y,IAAI/Y,KAAKsY,IAAM,GACrBsZ,EAAIkU,KAAK9lC,KAAKsY,GAETsZ,CACT,EAEAmgB,EAAInnC,UAAUm7B,IAAM,SAAct1B,EAAGS,GACnClR,KAAK8yC,SAASriC,EAAGS,GAEjB,IAAI0gB,EAAMnhB,EAAEs1B,IAAI70B,GAIhB,OAHI0gB,EAAI0f,KAAK,GAAK,GAChB1f,EAAIiU,KAAK7lC,KAAKsY,GAETsZ,EAAIugB,UAAUnyC,KACvB,EAEA+xC,EAAInnC,UAAUk7B,KAAO,SAAer1B,EAAGS,GACrClR,KAAK8yC,SAASriC,EAAGS,GAEjB,IAAI0gB,EAAMnhB,EAAEq1B,KAAK50B,GAIjB,OAHI0gB,EAAI0f,KAAK,GAAK,GAChB1f,EAAIiU,KAAK7lC,KAAKsY,GAETsZ,CACT,EAEAmgB,EAAInnC,UAAUgoC,IAAM,SAAcniC,EAAG0wB,GAEnC,OADAnhC,KAAKizC,SAASxiC,GACPzQ,KAAKs0C,KAAK7jC,EAAEs+B,MAAM5N,GAC3B,EAEA4Q,EAAInnC,UAAUo/B,KAAO,SAAev5B,EAAGS,GAErC,OADAlR,KAAK8yC,SAASriC,EAAGS,GACVlR,KAAKs0C,KAAK7jC,EAAEu5B,KAAK94B,GAC1B,EAEA6gC,EAAInnC,UAAUo2B,IAAM,SAAcvwB,EAAGS,GAEnC,OADAlR,KAAK8yC,SAASriC,EAAGS,GACVlR,KAAKs0C,KAAK7jC,EAAEuwB,IAAI9vB,GACzB,EAEA6gC,EAAInnC,UAAUsjC,KAAO,SAAez9B,GAClC,OAAOzQ,KAAKgqC,KAAKv5B,EAAGA,EAAE4B,QACxB,EAEA0/B,EAAInnC,UAAUqjC,IAAM,SAAcx9B,GAChC,OAAOzQ,KAAKghC,IAAIvwB,EAAGA,EACrB,EAEAshC,EAAInnC,UAAU2S,KAAO,SAAe9M,GAClC,GAAIA,EAAE4L,SAAU,OAAO5L,EAAE4B,QAEzB,IAAIyiC,EAAO90C,KAAKsY,EAAE83B,MAAM,GAIxB,GAHAvQ,EAAOiV,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAI58B,EAAMlY,KAAKsY,EAAE/V,IAAI,IAAI8lB,EAAG,IAAImmB,OAAO,GACvC,OAAOxuC,KAAKkY,IAAIzH,EAAGyH,EACrB,CAOA,IAFA,IAAIkB,EAAIpZ,KAAKsY,EAAEg3B,KAAK,GAChB5+B,EAAI,GACA0I,EAAEiD,UAA2B,IAAfjD,EAAEg3B,MAAM,IAC5B1/B,IACA0I,EAAEo1B,OAAO,GAEX3O,GAAQzmB,EAAEiD,UAEV,IAAI04B,EAAM,IAAI1sB,EAAG,GAAG2pB,MAAMhyC,MACtBg1C,EAAOD,EAAI1B,SAIX4B,EAAOj1C,KAAKsY,EAAEg3B,KAAK,GAAGd,OAAO,GAC7B79B,EAAI3Q,KAAKsY,EAAE0rB,YAGf,IAFArzB,EAAI,IAAI0X,EAAG,EAAI1X,EAAIA,GAAGqhC,MAAMhyC,MAEW,IAAhCA,KAAKkY,IAAIvH,EAAGskC,GAAMl8B,IAAIi8B,IAC3BrkC,EAAE6hC,QAAQwC,GAOZ,IAJA,IAAI5jC,EAAIpR,KAAKkY,IAAIvH,EAAGyI,GAChBvI,EAAI7Q,KAAKkY,IAAIzH,EAAG2I,EAAEi2B,KAAK,GAAGb,OAAO,IACjCjyB,EAAIvc,KAAKkY,IAAIzH,EAAG2I,GAChBd,EAAI5H,EACc,IAAf6L,EAAExD,IAAIg8B,IAAY,CAEvB,IADA,IAAIlB,EAAMt3B,EACDvR,EAAI,EAAoB,IAAjB6oC,EAAI96B,IAAIg8B,GAAY/pC,IAClC6oC,EAAMA,EAAIb,SAEZnT,EAAO70B,EAAIsN,GACX,IAAIpH,EAAIlR,KAAKkY,IAAI9G,EAAG,IAAIiX,EAAG,GAAG+lB,OAAO91B,EAAItN,EAAI,IAE7C6F,EAAIA,EAAEgiC,OAAO3hC,GACbE,EAAIF,EAAE8hC,SACNz2B,EAAIA,EAAEs2B,OAAOzhC,GACbkH,EAAItN,CACN,CAEA,OAAO6F,CACT,EAEAkhC,EAAInnC,UAAU2mC,KAAO,SAAe9gC,GAClC,IAAIykC,EAAMzkC,EAAEygC,OAAOlxC,KAAKsY,GACxB,OAAqB,IAAjB48B,EAAI7U,UACN6U,EAAI7U,SAAW,EACRrgC,KAAKs0C,KAAKY,GAAK7B,UAEfrzC,KAAKs0C,KAAKY,EAErB,EAEAnD,EAAInnC,UAAUsN,IAAM,SAAczH,EAAG0wB,GACnC,GAAIA,EAAI9kB,SAAU,OAAO,IAAIgM,EAAG,GAAG2pB,MAAMhyC,MACzC,GAAoB,IAAhBmhC,EAAImQ,KAAK,GAAU,OAAO7gC,EAAE4B,QAEhC,IACI8iC,EAAM,IAAIhrC,MAAM,IACpBgrC,EAAI,GAAK,IAAI9sB,EAAG,GAAG2pB,MAAMhyC,MACzBm1C,EAAI,GAAK1kC,EACT,IAAK,IAAIzF,EAAI,EAAGA,EAAImqC,EAAItzC,OAAQmJ,IAC9BmqC,EAAInqC,GAAKhL,KAAKghC,IAAImU,EAAInqC,EAAI,GAAIyF,GAGhC,IAAImhB,EAAMujB,EAAI,GACVC,EAAU,EACVC,EAAa,EACbnmC,EAAQiyB,EAAI6C,YAAc,GAK9B,IAJc,IAAV90B,IACFA,EAAQ,IAGLlE,EAAIm2B,EAAIt/B,OAAS,EAAGmJ,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIg3B,EAAOb,EAAIb,MAAMt1B,GACZ4F,EAAI1B,EAAQ,EAAG0B,GAAK,EAAGA,IAAK,CACnC,IAAI+0B,EAAO3D,GAAQpxB,EAAK,EACpBghB,IAAQujB,EAAI,KACdvjB,EAAM5xB,KAAKiuC,IAAIrc,IAGL,IAAR+T,GAAyB,IAAZyP,GAKjBA,IAAY,EACZA,GAAWzP,GA9BE,MA+Bb0P,GACwC,IAANrqC,GAAiB,IAAN4F,KAE7CghB,EAAM5xB,KAAKghC,IAAIpP,EAAKujB,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,CAYjB,CACAnmC,EAAQ,EACV,CAEA,OAAO0iB,CACT,EAEAmgB,EAAInnC,UAAUsnC,UAAY,SAAoB/Q,GAC5C,IAAItwB,EAAIswB,EAAI6O,KAAKhwC,KAAKsY,GAEtB,OAAOzH,IAAMswB,EAAMtwB,EAAEwB,QAAUxB,CACjC,EAEAkhC,EAAInnC,UAAUynC,YAAc,SAAsBlR,GAChD,IAAIvP,EAAMuP,EAAI9uB,QAEd,OADAuf,EAAI2O,IAAM,KACH3O,CACT,EAMAvJ,EAAGitB,KAAO,SAAenU,GACvB,OAAO,IAAIkT,EAAKlT,EAClB,EAkBA7C,EAAS+V,EAAMtC,GAEfsC,EAAKzpC,UAAUsnC,UAAY,SAAoB/Q,GAC7C,OAAOnhC,KAAKs0C,KAAKnT,EAAI4N,MAAM/uC,KAAK+N,OAClC,EAEAsmC,EAAKzpC,UAAUynC,YAAc,SAAsBlR,GACjD,IAAItwB,EAAI7Q,KAAKs0C,KAAKnT,EAAIH,IAAIhhC,KAAKu0C,OAE/B,OADA1jC,EAAE0vB,IAAM,KACD1vB,CACT,EAEAwjC,EAAKzpC,UAAUo/B,KAAO,SAAev5B,EAAGS,GACtC,GAAIT,EAAE4L,UAAYnL,EAAEmL,SAGlB,OAFA5L,EAAE6vB,MAAM,GAAK,EACb7vB,EAAE5O,OAAS,EACJ4O,EAGT,IAAI8L,EAAI9L,EAAEu5B,KAAK94B,GACXE,EAAImL,EAAE4yB,MAAMnvC,KAAK+N,OAAOizB,IAAIhhC,KAAKw0C,MAAMtF,OAAOlvC,KAAK+N,OAAOizB,IAAIhhC,KAAKsY,GACnEi9B,EAAIh5B,EAAEupB,KAAK10B,GAAGo9B,OAAOxuC,KAAK+N,OAC1B6jB,EAAM2jB,EAQV,OANIA,EAAEx8B,IAAI/Y,KAAKsY,IAAM,EACnBsZ,EAAM2jB,EAAEzP,KAAK9lC,KAAKsY,GACTi9B,EAAEjE,KAAK,GAAK,IACrB1f,EAAM2jB,EAAE1P,KAAK7lC,KAAKsY,IAGbsZ,EAAIugB,UAAUnyC,KACvB,EAEAq0C,EAAKzpC,UAAUo2B,IAAM,SAAcvwB,EAAGS,GACpC,GAAIT,EAAE4L,UAAYnL,EAAEmL,SAAU,OAAO,IAAIgM,EAAG,GAAG8pB,UAAUnyC,MAEzD,IAAIuc,EAAI9L,EAAEuwB,IAAI9vB,GACVE,EAAImL,EAAE4yB,MAAMnvC,KAAK+N,OAAOizB,IAAIhhC,KAAKw0C,MAAMtF,OAAOlvC,KAAK+N,OAAOizB,IAAIhhC,KAAKsY,GACnEi9B,EAAIh5B,EAAEupB,KAAK10B,GAAGo9B,OAAOxuC,KAAK+N,OAC1B6jB,EAAM2jB,EAOV,OANIA,EAAEx8B,IAAI/Y,KAAKsY,IAAM,EACnBsZ,EAAM2jB,EAAEzP,KAAK9lC,KAAKsY,GACTi9B,EAAEjE,KAAK,GAAK,IACrB1f,EAAM2jB,EAAE1P,KAAK7lC,KAAKsY,IAGbsZ,EAAIugB,UAAUnyC,KACvB,EAEAq0C,EAAKzpC,UAAU2mC,KAAO,SAAe9gC,GAGnC,OADUzQ,KAAKs0C,KAAK7jC,EAAEygC,OAAOlxC,KAAKsY,GAAG0oB,IAAIhhC,KAAKmwC,KACnCgC,UAAUnyC,KACvB,CACD,CA19GD,YA09G4CA,mCCz9G5CgD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmM,kBAAe,EACvB,MAAMupC,EAAU10C,EAAQ,OAClBmE,EAASnE,EAAQ,OACjB20C,EAAW30C,EAAQ,OACzB,MAAMmL,UAAqBupC,EAAQE,MAC/BznC,WAAAA,CAAY0nC,EAASC,GACjBxvC,MAAMuvC,EAASC,EACnB,CAKAC,mBAAAA,GAC2B,MAAnB71C,KAAK81C,aACL91C,KAAK81C,WAAa91C,KAAK+1C,QAAU/1C,KAAK4F,WAAWowC,UAAYh2C,KAAKi2C,0BAExB,MAA1Cj2C,KAAKk2C,YAAYC,wBACjBn2C,KAAKk2C,YAAcl2C,KAAK21C,QAAQl0B,OAAO20B,0BAA0Bp2C,KAAKshB,gBAAiBthB,KAAK4F,WAAWowC,UAAWh2C,KAAKk2C,YAAYG,YAAar2C,KAAKk2C,YAAYI,OAAQt2C,KAAKu2C,cAAcC,YAAax2C,KAAKu2C,cAAcE,YAEpO,CACAF,WAAAA,GACI,OAAOv2C,KAAK2D,IAChB,CAGA,sBAAM+yC,GACF,GAAwB,MAApB12C,KAAKk2C,YACL,OAAO,KACX,MAAMS,QAAkB32C,KAAK21C,QAAQl0B,OAAO4C,qBAAqBrkB,KAAKshB,gBAAiBthB,KAAK4F,WAAWowC,UAAWh2C,KAAKk2C,YAAYG,YAAar2C,KAAKk2C,YAAYI,OAAQt2C,KAAKu2C,cAAcC,YAAax2C,KAAKu2C,cAAcE,YAE5N,OADAz2C,KAAKk2C,YAAcS,EACZA,CACX,CACAC,YAAAA,GACI,OAAOznB,OAAOnvB,KAAKk2C,YAAYC,uBAAyB,IAC5D,CACAU,cAAAA,GACI,OAAO1nB,OAAOnvB,KAAKk2C,YAAYY,uBAAyB,IAC5D,CACAC,2BAAAA,GAEI,OAA2B,UADD/2C,KAAK81C,WAAa91C,KAAKk2C,YAAYG,aACvBr2C,KAAKg3C,qBAAqBhB,SACpE,CACAiB,aAAAA,GACI,OAAOj3C,KAAKilB,SAChB,CACAiyB,eAAAA,GACI,OAAOl3C,KAAKm3C,YAChB,CACAC,gBAAAA,GACI,OAAOp3C,KAAKq3C,cAChB,CACAC,YAAAA,GACI,OAAOt3C,KAAKu3C,aAChB,CAGAtB,sBAAAA,GACI,OAAOj2C,KAAKu2C,cAAcC,YAAcx2C,KAAK+1C,OACjD,CACAyB,mBAAAA,GACI,OAAO,EAAI/B,EAASgC,eAAez3C,KAAKu2C,cAAcC,YAAcx2C,KAAK+1C,QAAS/1C,KAAK21C,QAAQj0B,OAAO1hB,KAAKu2C,cAAcE,YAAaz2C,KAAK21C,QAAQl0B,OACvJ,CACAza,SAAAA,GACI,OAAO,EAAIyuC,EAASgC,eAAez3C,KAAKu2C,cAAcC,YAAax2C,KAAK21C,QAAQj0B,OAAO1hB,KAAKu2C,cAAcE,YAAaz2C,KAAK21C,QAAQl0B,OACxI,CACAu1B,kBAAAA,GACI,OAAO,EAAIvB,EAASgC,eAAez3C,KAAK4F,WAAWowC,UAAYh2C,KAAK81C,WAAY91C,KAAK03C,WAAY13C,KAAK21C,QAAQl0B,OAClH,CACAk2B,UAAAA,GACI,MAAO,CACHC,kBAAkB,EAAInC,EAASgC,eAAez3C,KAAK81C,WAAY91C,KAAK03C,WAAY13C,KAAK21C,QAAQl0B,QAC7Fo2B,kBAAkB,EAAIpC,EAASgC,eAAez3C,KAAK+1C,QAAS/1C,KAAK21C,QAAQj0B,OAAO1hB,KAAKu2C,cAAcE,YAAaz2C,KAAK21C,QAAQl0B,QAC7Hq2B,SAAUA,CAAC1vC,EAAa2vC,IAAuB/3C,KAAK21C,QAAQl0B,OAAOu2B,eAAeh4C,KAAK81C,WAAY1tC,EAAa2vC,GAExH,CACAE,kBAAAA,GACI,OAAO,EAAIxC,EAASgC,eAAez3C,KAAKu2C,cAAc0B,qBAAsBj4C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,OAC5H,CACAy2B,eAAAA,GACI,OAAO,EAAIzC,EAASgC,eAAez3C,KAAKu2C,cAAc2B,kBAAmBl4C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,OACzH,CACA41B,YAAAA,GACI,OAAOr3C,KAAKu2C,cAAc4B,YAC9B,CACAC,WAAAA,GACI,OAAOp4C,KAAK21C,QAAQn0B,SAAS42B,YAAYp4C,KAAKq3C,eAAgBr3C,KAAKu2C,cACvE,CACA,wBAAM8B,GACF,MAAOC,EAASC,SAAmBl0C,QAAQoE,IAAI,CAC3CzI,KAAK21C,QAAQn0B,SAASg3B,WAAWx4C,KAAKq3C,eAAgBr3C,KAAK21C,QAAQn0B,SAASqG,4BAA4B,GACxG7nB,KAAKy4C,iBAEHC,EAAWH,EAAYv4C,KAAKu2C,cAAc2B,kBAChD,MAAO,CACHS,cAAeL,GAAWI,EAC1BJ,SAAS,EAAI7C,EAASgC,eAAea,EAASt4C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,QAC1Fm3B,UAAU,EAAInD,EAASgC,eAAeiB,EAAU14C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,QAEpG,CASA,eAAMo3B,CAAU3sC,GACZ,IAAKlM,KAAK84C,YACN,MAAM,IAAIj1C,MAAM,6BAKpB,OAJK7D,KAAK+4C,YACN/4C,KAAK+4C,WAAY,QACX/4C,KAAKulB,sBAEFvlB,KAAK21C,QAAQn0B,SAASw3B,QAAQh5C,KAAK2D,KAAM3D,KAAKi5C,cAAe/sC,EAAYlM,KAAKwG,SAASoc,OAAMrR,GAAKlN,QAAQkkB,OAAOhX,aAAatM,EAAOse,2BAA6B,IAAI1f,MAAM,qBAAuB0N,IACpN,EAEJzR,EAAQmM,aAAeA,oPCvHvB,MAAA6S,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OAkHA,SAAgBo4C,EAAsC/5B,GAI7B,IAJ8B,UACnDnd,EACAod,MAAOoT,EAASlxB,EAAaoB,KAAcf,GAAa,KACxDgC,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAlxB,cACAoB,YACAf,gBAEJgC,KAAM7D,EAAAq5C,4BAA4B15B,OAAO9b,GAEjD,CAzHa7D,EAAAA,6BAA8B,EAAAgf,EAAAY,QAAoC,EAAC,EAAAZ,EAAAa,IAAG,iBAanF7f,EAAAA,8BAAA,SACI0yB,EACAlxB,EACAoB,GAE4B,IAD5Bf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQxe,EAAaye,UAAU,EAAOC,YAAY,IAExDtd,EACAf,GAGEgC,EAAOY,EAAO0b,MAAMngB,EAAAq5C,4BAA4Bj5B,MAGtD,OAFApgB,EAAAq5C,4BAA4Bh5B,OAAO,CAAEd,YAAaJ,EAAAmB,iBAAiBg5B,cAAgBz1C,GAE5E,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAwBA7D,EAAAA,8BAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAq5C,4BAA4Bj5B,KAAM,MAAM,IAAIlB,EAAAyB,iCAE5E,MACIrB,MAAM,QAAEoT,EAAO,YAAElxB,EAAW,UAAEoB,EAAS,aAAEf,GAAc,KACvDgC,GACAu1C,EAAuC75B,GAC3C,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBg5B,aAAc,MAAM,IAAIp6B,EAAA0B,iCAClE,IAAK8R,IAAYlxB,IAAgBoB,EAAW,MAAM,IAAIsc,EAAA2B,iCAItD,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAlxB,cACAoB,YACAf,gBAEJgC,OAER,EAuBA7D,EAAAA,uCAAAo5C,6BCxHAp5C,EAAQ,OAAqB,EAkB7BA,EAAQ,EAjBiB,CACvB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,kBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,mPAEP,SAAY,oBCnBhBA,EAAQu5C,KAAO,SAAUhpB,EAAQ0G,EAAQ9G,EAAMqpB,EAAMC,GACnD,IAAIhoC,EAAG+G,EACHkhC,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACT3uC,EAAIilB,EAAQspB,EAAS,EAAK,EAC1BhkC,EAAI0a,GAAQ,EAAI,EAChBvf,EAAI2f,EAAO0G,EAAS/rB,GAOxB,IALAA,GAAKuK,EAELhE,EAAIb,GAAM,IAAOipC,GAAU,EAC3BjpC,KAAQipC,EACRA,GAASH,EACFG,EAAQ,EAAGpoC,EAAS,IAAJA,EAAW8e,EAAO0G,EAAS/rB,GAAIA,GAAKuK,EAAGokC,GAAS,GAKvE,IAHArhC,EAAI/G,GAAM,IAAOooC,GAAU,EAC3BpoC,KAAQooC,EACRA,GAASL,EACFK,EAAQ,EAAGrhC,EAAS,IAAJA,EAAW+X,EAAO0G,EAAS/rB,GAAIA,GAAKuK,EAAGokC,GAAS,GAEvE,GAAU,IAANpoC,EACFA,EAAI,EAAImoC,MACH,IAAInoC,IAAMkoC,EACf,OAAOnhC,EAAIwB,IAAsB8/B,KAAdlpC,GAAK,EAAI,GAE5B4H,GAAQlP,KAAK8O,IAAI,EAAGohC,GACpB/nC,GAAQmoC,CACV,CACA,OAAQhpC,GAAK,EAAI,GAAK4H,EAAIlP,KAAK8O,IAAI,EAAG3G,EAAI+nC,EAC5C,EAEAx5C,EAAQgL,MAAQ,SAAUulB,EAAQntB,EAAO6zB,EAAQ9G,EAAMqpB,EAAMC,GAC3D,IAAIhoC,EAAG+G,EAAGlH,EACNooC,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBI,EAAe,KAATP,EAAclwC,KAAK8O,IAAI,GAAI,IAAM9O,KAAK8O,IAAI,GAAI,IAAM,EAC1DlN,EAAIilB,EAAO,EAAKspB,EAAS,EACzBhkC,EAAI0a,EAAO,GAAK,EAChBvf,EAAIxN,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQkG,KAAKoR,IAAItX,GAEbkX,MAAMlX,IAAUA,IAAU02C,KAC5BthC,EAAI8B,MAAMlX,GAAS,EAAI,EACvBqO,EAAIkoC,IAEJloC,EAAInI,KAAKC,MAAMD,KAAK0wC,IAAI52C,GAASkG,KAAK2wC,KAClC72C,GAASkO,EAAIhI,KAAK8O,IAAI,GAAI3G,IAAM,IAClCA,IACAH,GAAK,IAGLlO,GADEqO,EAAImoC,GAAS,EACNG,EAAKzoC,EAELyoC,EAAKzwC,KAAK8O,IAAI,EAAG,EAAIwhC,IAEpBtoC,GAAK,IACfG,IACAH,GAAK,GAGHG,EAAImoC,GAASD,GACfnhC,EAAI,EACJ/G,EAAIkoC,GACKloC,EAAImoC,GAAS,GACtBphC,GAAMpV,EAAQkO,EAAK,GAAKhI,KAAK8O,IAAI,EAAGohC,GACpC/nC,GAAQmoC,IAERphC,EAAIpV,EAAQkG,KAAK8O,IAAI,EAAGwhC,EAAQ,GAAKtwC,KAAK8O,IAAI,EAAGohC,GACjD/nC,EAAI,IAID+nC,GAAQ,EAAGjpB,EAAO0G,EAAS/rB,GAAS,IAAJsN,EAAUtN,GAAKuK,EAAG+C,GAAK,IAAKghC,GAAQ,GAI3E,IAFA/nC,EAAKA,GAAK+nC,EAAQhhC,EAClBkhC,GAAQF,EACDE,EAAO,EAAGnpB,EAAO0G,EAAS/rB,GAAS,IAAJuG,EAAUvG,GAAKuK,EAAGhE,GAAK,IAAKioC,GAAQ,GAE1EnpB,EAAO0G,EAAS/rB,EAAIuK,IAAU,IAAJ7E,CAC5B,2aCnFA,MAAA7P,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAk5C,EAAAl5C,EAAA,OACAC,EAAAD,EAAA,KAgBAhB,EAAAA,YAAA,SACIoB,EACAC,EACAqxB,EACAnxB,EACAqB,GAG4B,IAF5Bf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOhwB,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAy3C,EAAAC,8BAA6BznB,EAASnxB,EAAMsB,EAAoBhB,EAAcK,IAGlF,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,6gBCrCAyN,EAAA1O,EAAA,MAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,2bCFA,MAAAe,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAo5C,EAAAp5C,EAAA,MACAq5C,EAAAr5C,EAAA,OACAs5C,EAAAt5C,EAAA,OACAu5C,EAAAv5C,EAAA,OACAw5C,EAAAx5C,EAAA,OACAy5C,EAAAz5C,EAAA,OAeAhB,EAAAA,2BAAA,SACIoB,EACAC,EACAI,EACAC,EACAoC,EACA7B,GAEwB,IADxBC,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBACZ6nB,EAAU54C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAy5C,qDAGb,IAAKj5C,EAAQ,aAAa,EAAA+4C,EAAAG,eAAcx5C,EAAYC,EAAOq5C,EAAYj5C,EAAOqC,EAAS7B,EAAgBC,GAGvG,IAAK4B,EAAS,CACV,MAAMw3B,GAAkB,EAAAkf,EAAAK,+BACpBH,EACAj5C,GACA,EACAS,EACAhB,EAAAu6B,6BAGEl5B,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAA23C,EAAAU,yCACIz5C,EAAMwD,UACNy2B,EACA75B,EACAi5C,EACAx4C,EACAhB,EAAAu6B,6BAEJ16B,EAAA26B,cAAcqf,SAAS,CACnBC,WAAY35C,EAAMwD,UAClBo2C,SAAU3f,EACV4f,SAAUx5C,KAEd,EAAA44C,EAAAa,6BAA4B7f,EAAiBp5B,IAKjD,aAFM,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,GAAQY,GAE3Dq5B,EAIX,MAAM4f,QAAiB,EAAAX,EAAAa,uCAAsCh6C,GAEvDmB,GAAc,IAAIxB,EAAAyB,aAAcC,IAClC1B,EAAA26B,cAAckf,cAAc,CACxBI,WAAY35C,EAAMwD,UAClBw2C,iBAAkBv3C,EAAQe,UAC1By2C,MAAOf,EAAAgB,aACPL,WACAh5C,cAEJnB,EAAA26B,cAAcqf,SAAS,CACnBC,WAAY35C,EAAMwD,UAClBo2C,SAAUn3C,EAAQe,UAClBq2C,SAAUx5C,KAEd,EAAA24C,EAAAmB,oCAAmC13C,EAAQe,UAAW61C,EAAYj5C,EAAOS,IAK7E,aAFM,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,EAAOyC,GAAU7B,GAEpE6B,EAAQe,SACnB,iVC1FA,MAAAma,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OAEA,IAAYy6C,GAAZ,SAAYA,GACRA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,0BACH,CAHD,CAAYA,IAA8Bz7C,EAAAA,+BAA9By7C,EAA8B,KAkB7Bz7C,EAAAA,8CAA+C,EAAAgf,EAAAY,QAAqD,EAC7G,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,mCAEH,EAAAZ,EAAApa,WAAU,kBACV,EAAAma,EAAA08B,KAAI,UAGK17C,EAAAA,8CAA+C,EAAAgf,EAAAY,QAAqD,EAC7G,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,mCACH,EAAAb,EAAA08B,KAAI,UAaR17C,EAAAA,+CAAA,SACIuB,EACAo6C,EACAC,GACiC,IAAjC15C,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,MAAMmd,EAAO,CAAC,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IACrDrc,EAAOY,EAAO0b,MAAMngB,EAAA67C,6CAA6Cz7B,MAUvE,OATApgB,EAAA67C,6CAA6Cx7B,OACzC,CACId,YAAaJ,EAAAmB,iBAAiBw7B,6BAC9BC,+BAAgCN,EAA+BO,WAC/DL,gBACAC,QAEJ/3C,GAEG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAaA7D,EAAAA,+CAAA,SACIuB,EACAo6C,EACAC,GAEiC,IADjC/5C,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,MAAMmd,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQ27B,EAAe17B,UAAWpe,EAAaE,OAAQme,YAAY,IAEzEy7B,EACA95C,GAEEgC,EAAOY,EAAO0b,MAAMngB,EAAAi8C,6CAA6C77B,MASvE,OARApgB,EAAAi8C,6CAA6C57B,OACzC,CACId,YAAaJ,EAAAmB,iBAAiBw7B,6BAC9BC,+BAAgCN,EAA+BS,WAC/DN,QAEJ/3C,GAEG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,6aCzGA,MAAA9C,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAm7C,EAAAn7C,EAAA,OACAC,EAAAD,EAAA,KAkBAhB,EAAAA,cAAA,SACIoB,EACAC,EACAE,EACAC,EACAoB,EACAlB,EACAC,GAG4B,IAF5BE,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOhwB,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAA05C,EAAAC,gCAA+B76C,EAAMC,EAAaqB,EAAoBnB,EAAQC,EAAUE,EAAcK,IAG1G,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,yGCqPAjC,EAAAA,kBAAAq8C,EAohBAr8C,EAAAA,YAAA,SAA4B0J,GAC1B,MAAM4yC,EA5CR,SACEC,GAEA,MAAMpiB,GAAO,EAAAqiB,EAAAC,eAAcF,GAc3B,OAbAG,EAAGC,eACDxiB,EACA,CACEr1B,KAAM,OACNmF,KAAM,WACNO,YAAa,YAEf,CACEoyC,SAAU,WACVC,cAAe,WACfC,KAAM,YAGH55C,OAAO8J,OAAO,CAAE8vC,MAAM,KAAS3iB,GACxC,CA0BgB4iB,CAAarzC,IACrB,GAAEszC,EAAIvsC,EAAGwsC,GAAgBX,EACzBY,EAAgBF,EAAGG,MAAQ,EAC3BC,EAAkB,EAAIJ,EAAGG,MAAQ,EAEvC,SAASE,EAAK1sC,GACZ,OAAO,EAAA2sC,EAAA/hC,KAAI5K,EAAGssC,EAChB,CACA,SAASM,EAAK5sC,GACZ,OAAO,EAAA2sC,EAAAx0C,QAAO6H,EAAGssC,EACnB,CAEA,MACEO,gBAAiBC,EAAK,uBACtBC,EAAsB,oBACtBC,EAAmB,mBACnBC,GACEvB,EAAkB,IACjBC,EACH1rB,OAAAA,CAAQitB,EAAIC,EAAOC,GACjB,MAAMptC,EAAImtC,EAAME,WACV9sC,EAAI8rC,EAAGpsB,QAAQjgB,EAAEO,GACjB+sC,EAAMvB,EAAGnyC,YAEf,OADA,EAAAolB,EAAAuuB,OAAM,eAAgBH,GAClBA,EACKE,EAAIztB,WAAW9rB,KAAK,CAACo5C,EAAMK,WAAa,EAAO,IAAQjtC,GAEvD+sC,EAAIztB,WAAW9rB,KAAK,CAAC,IAAQwM,EAAG8rC,EAAGpsB,QAAQjgB,EAAEQ,GAExD,EACAitC,SAAAA,CAAUC,GACR,MAAMhsC,EAAMgsC,EAAMt8C,OACZ00B,EAAO4nB,EAAM,GACbC,EAAOD,EAAMvtB,SAAS,GAE5B,GAAIze,IAAQ6qC,GAA2B,IAATzmB,GAA0B,IAATA,EAgBxC,IAAIpkB,IAAQ+qC,GAA4B,IAAT3mB,EAAe,CAGnD,MAAO,CAAEvlB,EAFC8rC,EAAGoB,UAAUE,EAAKxtB,SAAS,EAAGksB,EAAGG,QAE/BhsC,EADF6rC,EAAGoB,UAAUE,EAAKxtB,SAASksB,EAAGG,MAAO,EAAIH,EAAGG,QAExD,CAGE,MAAM,IAAIp5C,MACR,qCAHSm5C,EAGmC,qBAFnCE,EAE+D,SAAW/qC,EAEvF,CA1B+D,CAC7D,MAAMnB,EAAIwrC,EAAG6B,gBAAgBD,GAC7B,IAAK5B,EAAG8B,QAAQttC,EAAGutC,EAAKzB,EAAG0B,OAAQ,MAAM,IAAI36C,MAAM,yBACnD,MAAM46C,EAAKhB,EAAoBzsC,GAC/B,IAAIC,EACJ,IACEA,EAAI6rC,EAAGv/B,KAAKkhC,EACd,CAAE,MAAOC,GACP,MAAM5qC,EAAS4qC,aAAqB76C,MAAQ,KAAO66C,EAAUzwB,QAAU,GACvE,MAAM,IAAIpqB,MAAM,wBAA0BiQ,EAC5C,CAKA,OAFiC,KAAP,EAAPyiB,OAFHtlB,EAAIstC,KAASA,KAGHttC,EAAI6rC,EAAGnY,IAAI1zB,IAC9B,CAAED,IAAGC,IACd,CAWF,IAEI0tC,EAAiBxd,GACrBqb,EAAGoC,WAAWpC,EAAGqC,gBAAgB1d,EAAKib,EAAM0C,cAE9C,SAASC,EAAsB7e,GAE7B,OAAOA,EADM6c,GAAewB,CAE9B,CAMA,MAAMS,EAASA,CAAC9tC,EAAe1M,EAAcutB,IAAeyqB,EAAG6B,gBAAgBntC,EAAExD,MAAMlJ,EAAMutB,IAK7F,MAAMktB,EACJhxC,WAAAA,CACW4C,EACAH,EACAwuC,GAFA,KAAAruC,EAAAA,EACA,KAAAH,EAAAA,EACA,KAAAwuC,SAAAA,EAETl/C,KAAKm/C,gBACP,CAGA,kBAAOC,CAAYt4C,GACjB,MAAM0K,EAAI4qC,EAAM0C,YAEhB,OADAh4C,GAAM,EAAA2oB,EAAA4vB,aAAY,mBAAoBv4C,EAAS,EAAJ0K,GACpC,IAAIytC,EAAUD,EAAOl4C,EAAK,EAAG0K,GAAIwtC,EAAOl4C,EAAK0K,EAAG,EAAIA,GAC7D,CAIA,cAAO8tC,CAAQx4C,GACb,MAAM,EAAE+J,EAAC,EAAEH,GAAM5Q,EAAAy/C,IAAIC,OAAM,EAAA/vB,EAAA4vB,aAAY,MAAOv4C,IAC9C,OAAO,IAAIm4C,EAAUpuC,EAAGH,EAC1B,CAEAyuC,cAAAA,GACE3C,EAAGiD,SAAS,IAAKz/C,KAAK6Q,EAAG0tC,EAAKxB,GAC9BP,EAAGiD,SAAS,IAAKz/C,KAAK0Q,EAAG6tC,EAAKxB,EAChC,CAEA2C,cAAAA,CAAeR,GACb,OAAO,IAAID,EAAUj/C,KAAK6Q,EAAG7Q,KAAK0Q,EAAGwuC,EACvC,CAEAS,gBAAAA,CAAiBC,GACf,MAAM,EAAE/uC,EAAC,EAAEH,EAAGwuC,SAAUW,GAAQ7/C,KAC1BwxB,EAAImrB,GAAc,EAAAltB,EAAA4vB,aAAY,UAAWO,IAC/C,GAAW,MAAPC,IAAgB,CAAC,EAAG,EAAG,EAAG,GAAGC,SAASD,GAAM,MAAM,IAAIh8C,MAAM,uBAChE,MAAMk8C,EAAe,IAARF,GAAqB,IAARA,EAAYhvC,EAAIurC,EAAM7rC,EAAIM,EACpD,GAAIkvC,GAAQjD,EAAG0B,MAAO,MAAM,IAAI36C,MAAM,8BACtC,MAAM0P,EAAuB,KAAP,EAANssC,GAAiB,KAAO,KAClCG,EAAIzC,EAAM0C,QAAQ1sC,EAASorC,EAAcoB,IACzCG,EAAK7C,EAAK0C,GACVI,EAAKhD,GAAM3rB,EAAI0uB,GACfE,EAAKjD,EAAKzsC,EAAIwvC,GACdG,EAAI9C,EAAMvtC,KAAKswC,qBAAqBN,EAAGG,EAAIC,GACjD,IAAKC,EAAG,MAAM,IAAIx8C,MAAM,qBAExB,OADAw8C,EAAElB,iBACKkB,CACT,CAGAE,QAAAA,GACE,OAAOxB,EAAsB/+C,KAAK0Q,EACpC,CAEA8vC,UAAAA,GACE,OAAOxgD,KAAKugD,WAAa,IAAItB,EAAUj/C,KAAK6Q,EAAGssC,GAAMn9C,KAAK0Q,GAAI1Q,KAAKk/C,UAAYl/C,IACjF,CAGAygD,aAAAA,GACE,OAAOjE,EAAGkE,WAAW1gD,KAAK2gD,WAC5B,CACAA,QAAAA,GACE,OAAO7gD,EAAAy/C,IAAIqB,WAAW,CAAE/vC,EAAG7Q,KAAK6Q,EAAGH,EAAG1Q,KAAK0Q,GAC7C,CAGAmwC,iBAAAA,GACE,OAAOrE,EAAGkE,WAAW1gD,KAAK8gD,eAC5B,CACAA,YAAAA,GACE,OAAOnC,EAAc3+C,KAAK6Q,GAAK8tC,EAAc3+C,KAAK0Q,EACpD,EAIF,MAAM2rB,EAAQ,CACZ0kB,iBAAAA,CAAkBC,GAChB,IAEE,OADAxD,EAAuBwD,IAChB,CACT,CAAE,MAAOn+B,GACP,OAAO,CACT,CACF,EACA26B,uBAAwBA,EAMxByD,iBAAkBA,KAChB,MAAMp/C,GAAS,EAAAu7C,EAAA8D,kBAAiB9E,EAAM7rC,GACtC,OAAO,EAAA6sC,EAAA+D,gBAAe/E,EAAM9xC,YAAYzI,GAASu6C,EAAM7rC,EAAE,EAW3D6wC,UAAAA,GAA6C,IAAlCC,EAAUz/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGg8C,EAAKh8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG27C,EAAMvtC,KAGvC,OAFA4tC,EAAM0D,eAAeD,GACrBzD,EAAMxlC,SAAS1S,OAAO,IACfk4C,CACT,GAgBF,SAAS2D,EAAUhuB,GACjB,MAAMvb,EAAMwkC,EAAGgF,QAAQjuB,GACjBvhB,EAAsB,kBAATuhB,EACbphB,GAAO6F,GAAOhG,IAASuhB,EAAa1xB,OAC1C,OAAImW,EAAY7F,IAAQ6qC,GAAiB7qC,IAAQ+qC,EAC7ClrC,EAAYG,IAAQ,EAAI6qC,GAAiB7qC,IAAQ,EAAI+qC,EACrD3pB,aAAgBgqB,CAEtB,CAuBA,MAAMb,EACJN,EAAMM,UACN,SAAUyB,GAER,GAAIA,EAAMt8C,OAAS,KAAM,MAAM,IAAIgC,MAAM,sBAGzC,MAAMs9B,EAAMqb,EAAG6B,gBAAgBF,GACzB9M,EAAuB,EAAf8M,EAAMt8C,OAAau6C,EAAMqF,WACvC,OAAOpQ,EAAQ,EAAIlQ,GAAOz7B,OAAO2rC,GAASlQ,CAC5C,EACIwb,EACJP,EAAMO,eACN,SAAUwB,GACR,OAAOhB,EAAKT,EAASyB,GACvB,EAEIuD,EAAalF,EAAGmF,QAAQvF,EAAMqF,YAIpC,SAASG,EAAWzgB,GAGlB,OAFAqb,EAAGiD,SAAS,WAAarD,EAAMqF,WAAYtgB,EAAK0gB,EAAKH,GAE9ClF,EAAGqC,gBAAgB1d,EAAKib,EAAM0C,YACvC,CAOA,SAASgD,EAAQlC,EAAcoB,GAA0C,IAArB/mB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGmgD,EACzD,GAAI,CAAC,YAAa,aAAazuB,MAAMhiB,GAAMA,KAAK2oB,IAC9C,MAAM,IAAIp2B,MAAM,uCAClB,MAAM,KAAEe,EAAI,YAAE0F,GAAgB8xC,EAC9B,IAAI,KAAEQ,EAAI,QAAEoF,EAASC,aAAcC,GAAQjoB,EAC/B,MAAR2iB,IAAcA,GAAO,GACzBgD,GAAU,EAAAnwB,EAAA4vB,aAAY,UAAWO,GACjCuC,EAAmBloB,GACf+nB,IAASpC,GAAU,EAAAnwB,EAAA4vB,aAAY,oBAAqBz6C,EAAKg7C,KAK7D,MAAMwC,EAAQzF,EAAciD,GACtBrqC,EAAIioC,EAAuBwD,GAC3BqB,EAAW,CAACT,EAAWrsC,GAAIqsC,EAAWQ,IAE5C,GAAW,MAAPF,IAAuB,IAARA,EAAe,CAEhC,MAAM3wC,GAAY,IAAR2wC,EAAe53C,EAAYwyC,EAAGG,OAASiF,EACjDG,EAAS/6C,MAAK,EAAAmoB,EAAA4vB,aAAY,eAAgB9tC,GAC5C,CACA,MAAM+wC,EAAO9F,EAAGnyC,eAAeg4C,GACzB/pC,EAAI8pC,EAuBV,MAAO,CAAEE,OAAMC,MArBf,SAAeC,GAEb,MAAMlxC,EAAIorC,EAAS8F,GACnB,IAAK9E,EAAmBpsC,GAAI,OAC5B,MAAMmxC,EAAKpF,EAAK/rC,GACV8H,EAAImkC,EAAMvtC,KAAKoI,SAAS9G,GAAGwsC,WAC3BjtC,EAAIssC,EAAK/jC,EAAEpI,GACjB,GAAIH,IAAMgxC,EAAK,OAIf,MAAMnxC,EAAIysC,EAAKsF,EAAKtF,EAAK7kC,EAAIzH,EAAI0E,IACjC,GAAI7E,IAAMmxC,EAAK,OACf,IAAI3C,GAAY9lC,EAAEpI,IAAMH,EAAI,EAAI,GAAKse,OAAO/V,EAAEnI,EAAIstC,GAC9CmE,EAAQhyC,EAKZ,OAJIksC,GAAQmC,EAAsBruC,KAChCgyC,EA7ON,SAAoBhyC,GAClB,OAAOquC,EAAsBruC,GAAKysC,GAAMzsC,GAAKA,CAC/C,CA2Oc8vC,CAAW9vC,GACnBwuC,GAAY,GAEP,IAAID,EAAUpuC,EAAG6xC,EAAOxD,EACjC,EAEF,CACA,MAAM6C,EAA2B,CAAEnF,KAAMR,EAAMQ,KAAMoF,SAAS,GACxDW,EAA0B,CAAE/F,KAAMR,EAAMQ,KAAMoF,SAAS,GAiG7D,OA1EAzE,EAAMvtC,KAAKsxC,eAAe,GA0EnB,CACLlF,QACAwG,aA1NF,SAAsB5B,GAAwC,IAAnBnD,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACrD,OAAO27C,EAAMsF,eAAe7B,GAAY8B,WAAWjF,EACrD,EAyNEkF,gBAhMF,SAAyBC,EAAmBC,GAAiC,IAAnBpF,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACpE,GAAI2/C,EAAUyB,GAAW,MAAM,IAAIn/C,MAAM,iCACzC,IAAK09C,EAAU0B,GAAU,MAAM,IAAIp/C,MAAM,iCAEzC,OADU05C,EAAM0C,QAAQgD,GACf7qC,SAASolC,EAAuBwF,IAAWF,WAAWjF,EACjE,EA4LE35C,KAtFF,SAAc07C,EAAcsD,GAAuC,IAArBjpB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGmgD,EACnD,MAAM,KAAEO,EAAI,MAAEC,GAAUT,EAAQlC,EAASsD,EAASjpB,GAC5CwW,EAAI2L,EAEV,OADaI,EAAG2G,eAAmC1S,EAAE7rC,KAAKmrB,UAAW0gB,EAAEqO,YAAarO,EAAE1mC,KAC/Eq5C,CAAKd,EAAMC,EACpB,EAkFE19C,OA/DF,SACEZ,EACA27C,EACAj7C,GACqB,IAArBs1B,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG+gD,EAEP,MAAMU,EAAKp/C,EACX27C,GAAU,EAAAnwB,EAAA4vB,aAAY,UAAWO,GACjCj7C,GAAY,EAAA8qB,EAAA4vB,aAAY,YAAa16C,GACrC,MAAM,KAAEi4C,EAAI,QAAEoF,EAAO,OAAEntC,GAAWolB,EAIlC,GADAkoB,EAAmBloB,GACf,WAAYA,EAAM,MAAM,IAAIp2B,MAAM,sCACtC,QAAe/B,IAAX+S,GAAmC,YAAXA,GAAmC,QAAXA,EAClD,MAAM,IAAIhR,MAAM,iCAClB,MAAMy/C,EAAsB,kBAAPD,GAAmB7G,EAAGgF,QAAQ6B,GAC7CE,GACHD,IACAzuC,GACa,kBAAPwuC,GACA,OAAPA,GACgB,kBAATA,EAAGxyC,GACM,kBAATwyC,EAAG3yC,EACZ,IAAK4yC,IAAUC,EACb,MAAM,IAAI1/C,MAAM,4EAElB,IAAI2/C,EACA9wC,EACJ,IAEE,GADI6wC,IAAOC,EAAO,IAAIvE,EAAUoE,EAAGxyC,EAAGwyC,EAAG3yC,IACrC4yC,EAAO,CAGT,IACiB,YAAXzuC,IAAsB2uC,EAAOvE,EAAUK,QAAQ+D,GACrD,CAAE,MAAOI,GACP,KAAMA,aAAoB3jD,EAAAy/C,IAAImE,KAAM,MAAMD,CAC5C,CACKD,GAAmB,QAAX3uC,IAAkB2uC,EAAOvE,EAAUG,YAAYiE,GAC9D,CACA3wC,EAAI6qC,EAAM0C,QAAQt7C,EACpB,CAAE,MAAOke,GACP,OAAO,CACT,CACA,IAAK2gC,EAAM,OAAO,EAClB,GAAI5G,GAAQ4G,EAAKjD,WAAY,OAAO,EAChCyB,IAASpC,EAAUxD,EAAMx3C,KAAKg7C,IAClC,MAAM,EAAE/uC,EAAC,EAAEH,GAAM8yC,EACXhyB,EAAImrB,EAAciD,GAClB+D,EAAKtG,EAAK3sC,GACVyvC,EAAKhD,EAAK3rB,EAAImyB,GACdvD,EAAKjD,EAAKtsC,EAAI8yC,GACd3D,EAAIzC,EAAMvtC,KAAKswC,qBAAqB5tC,EAAGytC,EAAIC,IAAKtC,WACtD,IAAKkC,EAAG,OAAO,EAEf,OADU7C,EAAK6C,EAAEhvC,KACJH,CACf,EAOEysC,gBAAiBC,EACjB0B,YACA5iB,QAEJ,EAWAv8B,EAAAA,eAAA8jD,EA2EA9jD,EAAAA,oBAAA,SACEg9C,EACA7iB,GAOA,IADA,EAAAmjB,EAAAyG,eAAc/G,IACTA,EAAGx4B,QAAQ2V,EAAKsW,KAAOuM,EAAGx4B,QAAQ2V,EAAKuW,KAAOsM,EAAGx4B,QAAQ2V,EAAK6pB,GACjE,MAAM,IAAIjgD,MAAM,qCAClB,MAAMkgD,EAAYH,EAAe9G,EAAI7iB,EAAK6pB,GAC1C,IAAKhH,EAAGhrC,MAAO,MAAM,IAAIjO,MAAM,gCAG/B,OAAQ0xC,IAEN,IAAIyO,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKrzC,EAAGC,EACrC+yC,EAAMlH,EAAG7O,IAAIsH,GACbyO,EAAMlH,EAAG9b,IAAIgjB,EAAK/pB,EAAK6pB,GACvBG,EAAMnH,EAAG7O,IAAI+V,GACbC,EAAMnH,EAAGv6C,IAAI0hD,EAAKD,GAClBE,EAAMpH,EAAGv6C,IAAI0hD,EAAKnH,EAAGlqC,KACrBsxC,EAAMpH,EAAG9b,IAAIkjB,EAAKjqB,EAAKuW,GACvB2T,EAAMrH,EAAGwH,KAAKrqB,EAAK6pB,EAAGhH,EAAGnY,IAAIsf,IAAOnH,EAAGyH,IAAIN,EAAKnH,EAAG0H,OACnDL,EAAMrH,EAAG9b,IAAImjB,EAAKlqB,EAAKsW,GACvB0T,EAAMnH,EAAG7O,IAAIiW,GACbG,EAAMvH,EAAG7O,IAAIkW,GACbC,EAAMtH,EAAG9b,IAAIqjB,EAAKpqB,EAAKsW,GACvB0T,EAAMnH,EAAGv6C,IAAI0hD,EAAKG,GAClBH,EAAMnH,EAAG9b,IAAIijB,EAAKC,GAClBG,EAAMvH,EAAG9b,IAAIqjB,EAAKF,GAClBC,EAAMtH,EAAG9b,IAAIqjB,EAAKpqB,EAAKuW,GACvByT,EAAMnH,EAAGv6C,IAAI0hD,EAAKG,GAClBpzC,EAAI8rC,EAAG9b,IAAIgjB,EAAKE,GAChB,MAAM,QAAE5/B,EAAO,MAAEphB,GAAU6gD,EAAUE,EAAKI,GAC1CpzC,EAAI6rC,EAAG9b,IAAIgjB,EAAKzO,GAChBtkC,EAAI6rC,EAAG9b,IAAI/vB,EAAG/N,GACd8N,EAAI8rC,EAAGwH,KAAKtzC,EAAGkzC,EAAK5/B,GACpBrT,EAAI6rC,EAAGwH,KAAKrzC,EAAG/N,EAAOohB,GACtB,MAAMmgC,EAAK3H,EAAGhrC,MAAOyjC,KAAOuH,EAAGhrC,MAAOb,GAGtC,OAFAA,EAAI6rC,EAAGwH,KAAKxH,EAAGnY,IAAI1zB,GAAIA,EAAGwzC,GAC1BzzC,EAAI8rC,EAAGvqC,IAAIvB,EAAGmzC,GACP,CAAEnzC,IAAGC,IAAG,CAEnB,EAn0CA,MAAAqrC,EAAAx7C,EAAA,OASAs8C,EAAAt8C,EAAA,OASA07C,EAAA17C,EAAA,OACA2uB,EAAA3uB,EAAA,OA4BA,SAASqhD,EAAmBloB,QACRn4B,IAAdm4B,EAAK2iB,OAAoB,EAAAntB,EAAAuuB,OAAM,OAAQ/jB,EAAK2iB,WAC3B96C,IAAjBm4B,EAAK+nB,UAAuB,EAAAvyB,EAAAuuB,OAAM,UAAW/jB,EAAK+nB,QACxD,CAoFA,MAAQ3D,gBAAiBqG,EAAKhE,WAAYiE,GAAQnI,EAElD,MAAaoI,UAAe/gD,MAC1BoK,WAAAA,GACE7H,MADWxE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAEhB,EAHF9B,EAAAA,OAAA8kD,EAgCa9kD,EAAAA,IAAY,CAEvB4jD,IAAKkB,EAELC,KAAM,CACJ1kC,OAAQA,CAAC2kC,EAAanhD,KACpB,MAAQ+/C,IAAKqB,GAAMjlD,EAAAy/C,IACnB,GAAIuF,EAAM,GAAKA,EAAM,IAAK,MAAM,IAAIC,EAAE,yBACtC,GAAkB,EAAdphD,EAAK9B,OAAY,MAAM,IAAIkjD,EAAE,6BACjC,MAAMC,EAAUrhD,EAAK9B,OAAS,EACxBsQ,EAAMqqC,EAAGyI,oBAAoBD,GACnC,GAAK7yC,EAAItQ,OAAS,EAAK,IAAa,MAAM,IAAIkjD,EAAE,wCAEhD,MAAMG,EAASF,EAAU,IAAMxI,EAAGyI,oBAAqB9yC,EAAItQ,OAAS,EAAK,KAAe,GAExF,OADU26C,EAAGyI,oBAAoBH,GACtBI,EAAS/yC,EAAMxO,CAAI,EAGhC8b,MAAAA,CAAOqlC,EAAanhD,GAClB,MAAQ+/C,IAAKqB,GAAMjlD,EAAAy/C,IACnB,IAAIpvB,EAAM,EACV,GAAI20B,EAAM,GAAKA,EAAM,IAAK,MAAM,IAAIC,EAAE,yBACtC,GAAIphD,EAAK9B,OAAS,GAAK8B,EAAKwsB,OAAW20B,EAAK,MAAM,IAAIC,EAAE,yBACxD,MAAMI,EAAQxhD,EAAKwsB,KAEnB,IAAItuB,EAAS,EACb,MAF0B,IAARsjD,GAGb,CAEH,MAAMD,EAAiB,IAARC,EACf,IAAKD,EAAQ,MAAM,IAAIH,EAAE,qDACzB,GAAIG,EAAS,EAAG,MAAM,IAAIH,EAAE,4CAC5B,MAAMK,EAAczhD,EAAKitB,SAAST,EAAKA,EAAM+0B,GAC7C,GAAIE,EAAYvjD,SAAWqjD,EAAQ,MAAM,IAAIH,EAAE,yCAC/C,GAAuB,IAAnBK,EAAY,GAAU,MAAM,IAAIL,EAAE,wCACtC,IAAK,MAAM7zC,KAAKk0C,EAAavjD,EAAUA,GAAU,EAAKqP,EAEtD,GADAif,GAAO+0B,EACHrjD,EAAS,IAAK,MAAM,IAAIkjD,EAAE,yCAChC,MAZaljD,EAASsjD,EAatB,MAAMlxC,EAAItQ,EAAKitB,SAAST,EAAKA,EAAMtuB,GACnC,GAAIoS,EAAEpS,SAAWA,EAAQ,MAAM,IAAIkjD,EAAE,kCACrC,MAAO,CAAE9wC,IAAGzC,EAAG7N,EAAKitB,SAAST,EAAMtuB,GACrC,GAMFwjD,KAAM,CACJllC,MAAAA,CAAOghB,GACL,MAAQuiB,IAAKqB,GAAMjlD,EAAAy/C,IACnB,GAAIpe,EAAM0gB,EAAK,MAAM,IAAIkD,EAAE,8CAC3B,IAAIj+C,EAAM01C,EAAGyI,oBAAoB9jB,GAGjC,GADkC,EAA9BhS,OAAOhkB,SAASrE,EAAI,GAAI,MAAcA,EAAM,KAAOA,GACtC,EAAbA,EAAIjF,OAAY,MAAM,IAAIkjD,EAAE,kDAChC,OAAOj+C,CACT,EACA2Y,MAAAA,CAAO9b,GACL,MAAQ+/C,IAAKqB,GAAMjlD,EAAAy/C,IACnB,GAAc,IAAV57C,EAAK,GAAkB,MAAM,IAAIohD,EAAE,uCACvC,GAAgB,IAAZphD,EAAK,MAA2B,IAAVA,EAAK,IAC7B,MAAM,IAAIohD,EAAE,uDACd,OAAOL,EAAI/gD,EACb,GAEF67C,KAAAA,CAAM14C,GAEJ,MAAQ48C,IAAKqB,EAAGM,KAAMC,EAAKT,KAAMU,GAAQzlD,EAAAy/C,IACnC57C,EAAsB,kBAARmD,EAAmB69C,EAAI79C,GAAOA,EAClD01C,EAAGgJ,OAAO7hD,GACV,MAAQsQ,EAAGwxC,EAAUj0C,EAAGk0C,GAAiBH,EAAI9lC,OAAO,GAAM9b,GAC1D,GAAI+hD,EAAa7jD,OAAQ,MAAM,IAAIkjD,EAAE,+CACrC,MAAQ9wC,EAAG0xC,EAAQn0C,EAAGo0C,GAAeL,EAAI9lC,OAAO,EAAMgmC,IAC9CxxC,EAAG4xC,EAAQr0C,EAAGs0C,GAAeP,EAAI9lC,OAAO,EAAMmmC,GACtD,GAAIE,EAAWjkD,OAAQ,MAAM,IAAIkjD,EAAE,+CACnC,MAAO,CAAEl0C,EAAGy0C,EAAI7lC,OAAOkmC,GAASj1C,EAAG40C,EAAI7lC,OAAOomC,GAChD,EACAjF,UAAAA,CAAWmF,GACT,MAAQlB,KAAMU,EAAKF,KAAMC,GAAQxlD,EAAAy/C,IAG3ByG,EAFKT,EAAIplC,OAAO,EAAMmlC,EAAInlC,OAAO4lC,EAAIl1C,IAChC00C,EAAIplC,OAAO,EAAMmlC,EAAInlC,OAAO4lC,EAAIr1C,IAE3C,OAAO60C,EAAIplC,OAAO,GAAM6lC,EAC1B,GAKF,MAAMnE,EAAMn8C,OAAO,GAAI64C,EAAM74C,OAAO,GAAIugD,EAAMvgD,OAAO,GAAIwgD,EAAMxgD,OAAO,GAAIygD,EAAMzgD,OAAO,GAEvF,SAAgBy2C,EAAqBliB,GACnC,MAAMmiB,EAxKR,SAA8BC,GAC5B,MAAMpiB,GAAO,EAAAqiB,EAAAC,eAAcF,GAC3BG,EAAGC,eACDxiB,EACA,CACExpB,EAAG,QACHS,EAAG,SAEL,CACEk1C,yBAA0B,QAC1BC,eAAgB,UAChBC,cAAe,WACfC,cAAe,WACfC,mBAAoB,UACpBtI,UAAW,WACXxtB,QAAS,aAGb,MAAM,KAAE+1B,EAAI,GAAE3J,EAAE,EAAErsC,GAAMwpB,EACxB,GAAIwsB,EAAM,CACR,IAAK3J,EAAGyH,IAAI9zC,EAAGqsC,EAAG0H,MAChB,MAAM,IAAI3gD,MAAM,8EAElB,GACkB,kBAAT4iD,GACc,kBAAdA,EAAKC,MACgB,oBAArBD,EAAKE,YAEZ,MAAM,IAAI9iD,MAAM,wEAEpB,CACA,OAAOb,OAAO8J,OAAO,IAAKmtB,GAC5B,CAwIgB2sB,CAAkB3sB,IAC1B,GAAE6iB,GAAOV,EACTyK,GAAK,EAAAzJ,EAAA0J,OAAM1K,EAAM7rC,EAAG6rC,EAAMqF,YAE1B/wB,EACJ0rB,EAAM1rB,SAAO,EACXitB,EAAwBC,EAAyBmJ,KACjD,MAAMt2C,EAAImtC,EAAME,WAChB,OAAOtB,EAAGnyC,YAAYimB,WAAW9rB,KAAK,CAAC,IAAQs4C,EAAGpsB,QAAQjgB,EAAEO,GAAI8rC,EAAGpsB,QAAQjgB,EAAEQ,GAC9E,GACGitC,EACJ9B,EAAM8B,WAAS,CACbC,IAEA,MAAMC,EAAOD,EAAMvtB,SAAS,GAI5B,MAAO,CAAE5f,EAFC8rC,EAAGoB,UAAUE,EAAKxtB,SAAS,EAAGksB,EAAGG,QAE/BhsC,EADF6rC,EAAGoB,UAAUE,EAAKxtB,SAASksB,EAAGG,MAAO,EAAIH,EAAGG,QAEvD,GAMH,SAASQ,EAAoBzsC,GAC3B,MAAM,EAAEP,EAAC,EAAES,GAAMkrC,EACXhL,EAAK0L,EAAG7O,IAAIj9B,GACZg2C,EAAKlK,EAAG9b,IAAIoQ,EAAIpgC,GACtB,OAAO8rC,EAAGv6C,IAAIu6C,EAAGv6C,IAAIykD,EAAIlK,EAAG9b,IAAIhwB,EAAGP,IAAKS,EAC1C,CAKA,IAAK4rC,EAAGyH,IAAIzH,EAAG7O,IAAImO,EAAM6K,IAAKxJ,EAAoBrB,EAAM8K,KACtD,MAAM,IAAIrjD,MAAM,+CAQlB,SAAS25C,EAAuBxzC,GAC9B,MAAQo8C,yBAA0Be,EAAO,YAAErI,EAAW,eAAEuH,EAAgB91C,EAAGk7B,GAAM2Q,EACjF,GAAI+K,GAA0B,kBAARn9C,EAAkB,CAGtC,GAFIwyC,EAAGgF,QAAQx3C,KAAMA,EAAMwyC,EAAGoC,WAAW50C,IAEtB,kBAARA,IAAqBm9C,EAAQrH,SAAS91C,EAAInI,QACnD,MAAM,IAAIgC,MAAM,uBAClBmG,EAAMA,EAAIqhB,SAAuB,EAAdyzB,EAAiB,IACtC,CACA,IAAI3d,EACJ,IACEA,EACiB,kBAARn3B,EACHA,EACAwyC,EAAG6B,iBAAgB,EAAA5uB,EAAA4vB,aAAY,cAAer1C,EAAK80C,GAC3D,CAAE,MAAOj8B,GACP,MAAM,IAAIhf,MACR,wCAA0Ci7C,EAAc,sBAAwB90C,EAEpF,CAGA,OAFIq8C,IAAgBllB,GAAM,EAAAic,EAAA/hC,KAAI8lB,EAAKsK,IACnC+Q,EAAGiD,SAAS,cAAete,EAAKod,EAAK9S,GAC9BtK,CACT,CAEA,SAASimB,EAAeC,GACtB,KAAMA,aAAiB9J,GAAQ,MAAM,IAAI15C,MAAM,2BACjD,CAOA,MAAMyjD,GAAe,EAAA73B,EAAA83B,WAAS,CAAChxC,EAAUixC,KACvC,MAAQC,GAAIz2C,EAAG02C,GAAIz2C,EAAG02C,GAAIh3C,GAAM4F,EAEhC,GAAIumC,EAAGyH,IAAI5zC,EAAGmsC,EAAGlqC,KAAM,MAAO,CAAE5B,IAAGC,KACnC,MAAM22C,EAAMrxC,EAAEqxC,MAGJ,MAANJ,IAAYA,EAAKI,EAAM9K,EAAGlqC,IAAMkqC,EAAG5H,IAAIvkC,IAC3C,MAAMk3C,EAAK/K,EAAG9b,IAAIhwB,EAAGw2C,GACfM,EAAKhL,EAAG9b,IAAI/vB,EAAGu2C,GACfO,EAAKjL,EAAG9b,IAAIrwB,EAAG62C,GACrB,GAAII,EAAK,MAAO,CAAE52C,EAAG8rC,EAAG0H,KAAMvzC,EAAG6rC,EAAG0H,MACpC,IAAK1H,EAAGyH,IAAIwD,EAAIjL,EAAGlqC,KAAM,MAAM,IAAI/O,MAAM,oBACzC,MAAO,CAAEmN,EAAG62C,EAAI52C,EAAG62C,EAAI,IAInBE,GAAkB,EAAAv4B,EAAA83B,WAAUhxC,IAChC,GAAIA,EAAEqxC,MAAO,CAIX,GAAIxL,EAAMoK,qBAAuB1J,EAAG8K,IAAIrxC,EAAEmxC,IAAK,OAC/C,MAAM,IAAI7jD,MAAM,kBAClB,CAEA,MAAM,EAAEmN,EAAC,EAAEC,GAAMsF,EAAEunC,WAEnB,IAAKhB,EAAGx4B,QAAQtT,KAAO8rC,EAAGx4B,QAAQrT,GAAI,MAAM,IAAIpN,MAAM,4BACtD,MAAMw1B,EAAOyjB,EAAG7O,IAAIh9B,GACdowB,EAAQoc,EAAoBzsC,GAClC,IAAK8rC,EAAGyH,IAAIlrB,EAAMgI,GAAQ,MAAM,IAAIx9B,MAAM,qCAC1C,IAAK0S,EAAE+vC,gBAAiB,MAAM,IAAIziD,MAAM,0CACxC,OAAO,CAAI,IAQb,MAAM05C,EAIJtvC,WAAAA,CACWw5C,EACAC,EACAC,GAET,GAJS,KAAAF,GAAAA,EACA,KAAAC,GAAAA,EACA,KAAAC,GAAAA,EAEC,MAANF,IAAe3K,EAAGx4B,QAAQmjC,GAAK,MAAM,IAAI5jD,MAAM,cACnD,GAAU,MAAN6jD,IAAe5K,EAAGx4B,QAAQojC,GAAK,MAAM,IAAI7jD,MAAM,cACnD,GAAU,MAAN8jD,IAAe7K,EAAGx4B,QAAQqjC,GAAK,MAAM,IAAI9jD,MAAM,cACnDb,OAAO8J,OAAO9M,KAChB,CAIA,iBAAOioD,CAAW1xC,GAChB,MAAM,EAAEvF,EAAC,EAAEC,GAAMsF,GAAK,CAAC,EACvB,IAAKA,IAAMumC,EAAGx4B,QAAQtT,KAAO8rC,EAAGx4B,QAAQrT,GAAI,MAAM,IAAIpN,MAAM,wBAC5D,GAAI0S,aAAagnC,EAAO,MAAM,IAAI15C,MAAM,gCACxC,MAAM+jD,EAAO58C,GAAS8xC,EAAGyH,IAAIv5C,EAAG8xC,EAAG0H,MAEnC,OAAIoD,EAAI52C,IAAM42C,EAAI32C,GAAWssC,EAAMiH,KAC5B,IAAIjH,EAAMvsC,EAAGC,EAAG6rC,EAAGlqC,IAC5B,CAEA,KAAI5B,GACF,OAAOhR,KAAK89C,WAAW9sC,CACzB,CACA,KAAIC,GACF,OAAOjR,KAAK89C,WAAW7sC,CACzB,CAQA,iBAAOi3C,CAAWC,GAChB,MAAMC,EAAQtL,EAAGuL,YAAYF,EAAOz/C,KAAK6N,GAAMA,EAAEoxC,MACjD,OAAOQ,EAAOz/C,KAAI,CAAC6N,EAAGvL,IAAMuL,EAAEunC,SAASsK,EAAMp9C,MAAKtC,IAAI60C,EAAM0K,WAC9D,CAMA,cAAOhI,CAAQn5C,GACb,MAAM4L,EAAI6qC,EAAM0K,WAAW/J,GAAU,EAAAzuB,EAAA4vB,aAAY,WAAYv4C,KAE7D,OADA4L,EAAEysC,iBACKzsC,CACT,CAGA,qBAAOmwC,CAAe7B,GACpB,OAAOzD,EAAMvtC,KAAKoI,SAASolC,EAAuBwD,GACpD,CAGA,UAAOsH,CAAIH,EAAiBI,GAC1B,OAAO,EAAAjM,EAAAkM,WAAUjL,EAAOsJ,EAAIsB,EAAQI,EACtC,CAGAjH,cAAAA,CAAeD,GACboH,EAAKC,cAAc1oD,KAAMqhD,EAC3B,CAGAlC,cAAAA,GACE6I,EAAgBhoD,KAClB,CAEAi+C,QAAAA,GACE,MAAM,EAAEhtC,GAAMjR,KAAK89C,WACnB,GAAIhB,EAAGhrC,MAAO,OAAQgrC,EAAGhrC,MAAMb,GAC/B,MAAM,IAAIpN,MAAM,8BAClB,CAKA0c,MAAAA,CAAO8mC,GACLD,EAAeC,GACf,MAAQI,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,MAC3BynD,GAAIqB,EAAIpB,GAAIqB,EAAIpB,GAAIqB,GAAO3B,EAC7B4B,EAAKnM,EAAGyH,IAAIzH,EAAG9b,IAAI2nB,EAAIK,GAAKlM,EAAG9b,IAAI8nB,EAAID,IACvCK,EAAKpM,EAAGyH,IAAIzH,EAAG9b,IAAI4nB,EAAII,GAAKlM,EAAG9b,IAAI+nB,EAAIF,IAC7C,OAAOI,GAAMC,CACf,CAKAC,MAAAA,GACE,OAAO,IAAI5L,EAAMv9C,KAAKynD,GAAI3K,EAAGnY,IAAI3kC,KAAK0nD,IAAK1nD,KAAK2nD,GAClD,CAMAyB,MAAAA,GACE,MAAM,EAAE34C,EAAC,EAAES,GAAMkrC,EACX1T,EAAKoU,EAAG9b,IAAI9vB,EAAGg1C,IACbuB,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,KACnC,IAAIqpD,EAAKvM,EAAG0H,KAAM8E,EAAKxM,EAAG0H,KAAM+E,EAAKzM,EAAG0H,KACpCgF,EAAK1M,EAAG9b,IAAI2nB,EAAIA,GAChBc,EAAK3M,EAAG9b,IAAI4nB,EAAIA,GAChBc,EAAK5M,EAAG9b,IAAI6nB,EAAIA,GAChBc,EAAK7M,EAAG9b,IAAI2nB,EAAIC,GA4BpB,OA3BAe,EAAK7M,EAAGv6C,IAAIonD,EAAIA,GAChBJ,EAAKzM,EAAG9b,IAAI2nB,EAAIE,GAChBU,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GAChBF,EAAKvM,EAAG9b,IAAIvwB,EAAG84C,GACfD,EAAKxM,EAAG9b,IAAI0H,EAAIghB,GAChBJ,EAAKxM,EAAGv6C,IAAI8mD,EAAIC,GAChBD,EAAKvM,EAAG/W,IAAI0jB,EAAIH,GAChBA,EAAKxM,EAAGv6C,IAAIknD,EAAIH,GAChBA,EAAKxM,EAAG9b,IAAIqoB,EAAIC,GAChBD,EAAKvM,EAAG9b,IAAI2oB,EAAIN,GAChBE,EAAKzM,EAAG9b,IAAI0H,EAAI6gB,GAChBG,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfC,EAAK7M,EAAG/W,IAAIyjB,EAAIE,GAChBC,EAAK7M,EAAG9b,IAAIvwB,EAAGk5C,GACfA,EAAK7M,EAAGv6C,IAAIonD,EAAIJ,GAChBA,EAAKzM,EAAGv6C,IAAIinD,EAAIA,GAChBA,EAAK1M,EAAGv6C,IAAIgnD,EAAIC,GAChBA,EAAK1M,EAAGv6C,IAAIinD,EAAIE,GAChBF,EAAK1M,EAAG9b,IAAIwoB,EAAIG,GAChBL,EAAKxM,EAAGv6C,IAAI+mD,EAAIE,GAChBE,EAAK5M,EAAG9b,IAAI4nB,EAAIC,GAChBa,EAAK5M,EAAGv6C,IAAImnD,EAAIA,GAChBF,EAAK1M,EAAG9b,IAAI0oB,EAAIC,GAChBN,EAAKvM,EAAG/W,IAAIsjB,EAAIG,GAChBD,EAAKzM,EAAG9b,IAAI0oB,EAAID,GAChBF,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GAChBA,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GACT,IAAIhM,EAAM8L,EAAIC,EAAIC,EAC3B,CAMAhnD,GAAAA,CAAI8kD,GACFD,EAAeC,GACf,MAAQI,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,MAC3BynD,GAAIqB,EAAIpB,GAAIqB,EAAIpB,GAAIqB,GAAO3B,EACnC,IAAIgC,EAAKvM,EAAG0H,KAAM8E,EAAKxM,EAAG0H,KAAM+E,EAAKzM,EAAG0H,KACxC,MAAM/zC,EAAI2rC,EAAM3rC,EACVi4B,EAAKoU,EAAG9b,IAAIob,EAAMlrC,EAAGg1C,GAC3B,IAAIsD,EAAK1M,EAAG9b,IAAI2nB,EAAIG,GAChBW,EAAK3M,EAAG9b,IAAI4nB,EAAIG,GAChBW,EAAK5M,EAAG9b,IAAI6nB,EAAIG,GAChBW,EAAK7M,EAAGv6C,IAAIomD,EAAIC,GAChBgB,EAAK9M,EAAGv6C,IAAIumD,EAAIC,GACpBY,EAAK7M,EAAG9b,IAAI2oB,EAAIC,GAChBA,EAAK9M,EAAGv6C,IAAIinD,EAAIC,GAChBE,EAAK7M,EAAG/W,IAAI4jB,EAAIC,GAChBA,EAAK9M,EAAGv6C,IAAIomD,EAAIE,GAChB,IAAIgB,EAAK/M,EAAGv6C,IAAIumD,EAAIE,GA+BpB,OA9BAY,EAAK9M,EAAG9b,IAAI4oB,EAAIC,GAChBA,EAAK/M,EAAGv6C,IAAIinD,EAAIE,GAChBE,EAAK9M,EAAG/W,IAAI6jB,EAAIC,GAChBA,EAAK/M,EAAGv6C,IAAIqmD,EAAIC,GAChBQ,EAAKvM,EAAGv6C,IAAIwmD,EAAIC,GAChBa,EAAK/M,EAAG9b,IAAI6oB,EAAIR,GAChBA,EAAKvM,EAAGv6C,IAAIknD,EAAIC,GAChBG,EAAK/M,EAAG/W,IAAI8jB,EAAIR,GAChBE,EAAKzM,EAAG9b,IAAIvwB,EAAGm5C,GACfP,EAAKvM,EAAG9b,IAAI0H,EAAIghB,GAChBH,EAAKzM,EAAGv6C,IAAI8mD,EAAIE,GAChBF,EAAKvM,EAAG/W,IAAI0jB,EAAIF,GAChBA,EAAKzM,EAAGv6C,IAAIknD,EAAIF,GAChBD,EAAKxM,EAAG9b,IAAIqoB,EAAIE,GAChBE,EAAK3M,EAAGv6C,IAAIinD,EAAIA,GAChBC,EAAK3M,EAAGv6C,IAAIknD,EAAID,GAChBE,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfE,EAAK9M,EAAG9b,IAAI0H,EAAIkhB,GAChBH,EAAK3M,EAAGv6C,IAAIknD,EAAIC,GAChBA,EAAK5M,EAAG/W,IAAIyjB,EAAIE,GAChBA,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfE,EAAK9M,EAAGv6C,IAAIqnD,EAAIF,GAChBF,EAAK1M,EAAG9b,IAAIyoB,EAAIG,GAChBN,EAAKxM,EAAGv6C,IAAI+mD,EAAIE,GAChBA,EAAK1M,EAAG9b,IAAI6oB,EAAID,GAChBP,EAAKvM,EAAG9b,IAAI2oB,EAAIN,GAChBA,EAAKvM,EAAG/W,IAAIsjB,EAAIG,GAChBA,EAAK1M,EAAG9b,IAAI2oB,EAAIF,GAChBF,EAAKzM,EAAG9b,IAAI6oB,EAAIN,GAChBA,EAAKzM,EAAGv6C,IAAIgnD,EAAIC,GACT,IAAIjM,EAAM8L,EAAIC,EAAIC,EAC3B,CAEAvwC,QAAAA,CAASquC,GACP,OAAOrnD,KAAKuC,IAAI8kD,EAAM8B,SACxB,CAEAvB,GAAAA,GACE,OAAO5nD,KAAKugB,OAAOg9B,EAAMiH,KAC3B,CACQsF,IAAAA,CAAKv5C,GACX,OAAOk4C,EAAKsB,WAAW/pD,KAAMuQ,EAAGgtC,EAAM2K,WACxC,CAOA8B,cAAAA,CAAeC,GACb,MAAM,KAAExD,EAAMl2C,EAAGk7B,GAAM2Q,EACvBI,EAAGiD,SAAS,SAAUwK,EAAIpI,EAAKpW,GAC/B,MAAMye,EAAI3M,EAAMiH,KAChB,GAAIyF,IAAOpI,EAAK,OAAOqI,EACvB,GAAIlqD,KAAK4nD,OAASqC,IAAO1L,EAAK,OAAOv+C,KAGrC,IAAKymD,GAAQgC,EAAK0B,eAAenqD,MAC/B,OAAOyoD,EAAK2B,iBAAiBpqD,KAAMiqD,EAAI1M,EAAM2K,YAG/C,IAAI,MAAEmC,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYsD,GAC5CQ,EAAMP,EACNQ,EAAMR,EACN30C,EAAWvV,KACf,KAAOsqD,EAAKzI,GAAO2I,EAAK3I,GAClByI,EAAK/L,IAAKkM,EAAMA,EAAIloD,IAAIgT,IACxBi1C,EAAKjM,IAAKmM,EAAMA,EAAInoD,IAAIgT,IAC5BA,EAAIA,EAAE6zC,SACNkB,IAAO/L,EACPiM,IAAOjM,EAKT,OAHI8L,IAAOI,EAAMA,EAAItB,UACjBoB,IAAOG,EAAMA,EAAIvB,UACrBuB,EAAM,IAAInN,EAAMT,EAAG9b,IAAI0pB,EAAIjD,GAAIhB,EAAKC,MAAOgE,EAAIhD,GAAIgD,EAAI/C,IAChD8C,EAAIloD,IAAImoD,EACjB,CAWAtyC,QAAAA,CAASuyC,GACP,MAAM,KAAElE,EAAMl2C,EAAGk7B,GAAM2Q,EAEvB,IAAIwB,EAAcgN,EAClB,GAFApO,EAAGiD,SAAS,SAAUkL,EAAQpM,EAAK9S,GAE/Bgb,EAAM,CACR,MAAM,MAAE4D,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYgE,GAClD,IAAMp0C,EAAGk0C,EAAKI,EAAGC,GAAQ9qD,KAAK8pD,KAAKQ,IAC7B/zC,EAAGm0C,EAAKG,EAAGE,GAAQ/qD,KAAK8pD,KAAKU,GACnCC,EAAMhC,EAAKuC,gBAAgBX,EAAOI,GAClCC,EAAMjC,EAAKuC,gBAAgBT,EAAOG,GAClCA,EAAM,IAAInN,EAAMT,EAAG9b,IAAI0pB,EAAIjD,GAAIhB,EAAKC,MAAOgE,EAAIhD,GAAIgD,EAAI/C,IACvD/J,EAAQ6M,EAAIloD,IAAImoD,GAChBE,EAAOE,EAAIvoD,IAAIwoD,EACjB,KAAO,CACL,MAAM,EAAEx0C,EAAC,EAAEs0C,GAAM7qD,KAAK8pD,KAAKa,GAC3B/M,EAAQrnC,EACRq0C,EAAOC,CACT,CAEA,OAAOtN,EAAM2K,WAAW,CAACtK,EAAOgN,IAAO,EACzC,CAQAtK,oBAAAA,CAAqBD,EAAU5vC,EAAWS,GACxC,MAAM+5C,EAAI1N,EAAMvtC,KACVgxB,EAAMA,CACVtuB,EACAjC,IACIA,IAAMoxC,GAAOpxC,IAAM8tC,GAAQ7rC,EAAE6N,OAAO0qC,GAA2Bv4C,EAAE0F,SAAS3H,GAAjCiC,EAAEs3C,eAAev5C,GAC1DgH,EAAMupB,EAAIhhC,KAAMyQ,GAAGlO,IAAIy+B,EAAIqf,EAAGnvC,IACpC,OAAOuG,EAAImwC,WAAQ9lD,EAAY2V,CACjC,CAKAqmC,QAAAA,CAAS0J,GACP,OAAOF,EAAatnD,KAAMwnD,EAC5B,CACAlB,aAAAA,GACE,MAAQ90B,EAAG05B,EAAQ,cAAE5E,GAAkBlK,EACvC,GAAI8O,IAAa3M,EAAK,OAAO,EAC7B,GAAI+H,EAAe,OAAOA,EAAc/I,EAAOv9C,MAC/C,MAAM,IAAI6D,MAAM,+DAClB,CACA0iD,aAAAA,GACE,MAAQ/0B,EAAG05B,EAAQ,cAAE3E,GAAkBnK,EACvC,OAAI8O,IAAa3M,EAAYv+C,KACzBumD,EAAsBA,EAAchJ,EAAOv9C,MACxCA,KAAKgqD,eAAe5N,EAAM5qB,EACnC,CAEAsxB,UAAAA,GAA8B,IAAnBjF,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAGrB,OAFA,EAAA6tB,EAAAuuB,OAAM,eAAgBH,GACtB79C,KAAKm/C,iBACEzuB,EAAQ6sB,EAAOv9C,KAAM69C,EAC9B,CAEAsN,KAAAA,GAAyB,IAAnBtN,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAEhB,OADA,EAAA6tB,EAAAuuB,OAAM,eAAgBH,GACfrB,EAAGoC,WAAW5+C,KAAK8iD,WAAWjF,GACvC,EA5TgBN,EAAAvtC,KAAO,IAAIutC,EAAMnB,EAAM8K,GAAI9K,EAAM6K,GAAInK,EAAGlqC,KACxC2qC,EAAAiH,KAAO,IAAIjH,EAAMT,EAAG0H,KAAM1H,EAAGlqC,IAAKkqC,EAAG0H,MA6TvD,MAAM4G,EAAQhP,EAAMqF,WACdgH,GAAO,EAAAnM,EAAAwN,MAAKvM,EAAOnB,EAAMqK,KAAOr9C,KAAKwG,KAAKw7C,EAAQ,GAAKA,GAE7D,MAAO,CACLhP,QACAkB,gBAAiBC,EACjBC,yBACAC,sBACAC,mBAvZF,SAA4Bvc,GAC1B,OAAOqb,EAAG8B,QAAQnd,EAAKod,EAAKnC,EAAM7rC,EACpC,EAuZF,CAugBA,SAAgBqzC,EACd9G,EACAgH,GAGA,MAAM1qC,EAAI0jC,EAAG0B,MACb,IAAIhtC,EAAIqwC,EACR,IAAK,IAAI3b,EAAI9sB,EAAImlC,EAAKrY,EAAI+f,IAAQpE,EAAK3b,GAAK+f,EAAKz0C,GAAK+sC,EACtD,MAAM8M,EAAK75C,EAGL85C,EAAerF,GAAQoF,EAAK9M,EAAMA,EAClCgN,EAAaD,EAAerF,EAC5BuF,GAAMpyC,EAAImlC,GAAOgN,EACjBE,GAAMD,EAAKjN,GAAO0H,EAClByF,EAAKH,EAAahN,EAClBoN,EAAKL,EACLM,EAAK9O,EAAG5kC,IAAI4rC,EAAG0H,GACfK,EAAK/O,EAAG5kC,IAAI4rC,GAAI0H,EAAKjN,GAAO0H,GAClC,IAAIlC,EAAYA,CAACxO,EAAMthC,KACrB,IAAI+vC,EAAM4H,EACN3H,EAAMnH,EAAG5kC,IAAIjE,EAAGy3C,GAChBxH,EAAMpH,EAAG7O,IAAIgW,GACjBC,EAAMpH,EAAG9b,IAAIkjB,EAAKjwC,GAClB,IAAImwC,EAAMtH,EAAG9b,IAAIuU,EAAG2O,GACpBE,EAAMtH,EAAG5kC,IAAIksC,EAAKqH,GAClBrH,EAAMtH,EAAG9b,IAAIojB,EAAKH,GAClBA,EAAMnH,EAAG9b,IAAIojB,EAAKnwC,GAClBiwC,EAAMpH,EAAG9b,IAAIojB,EAAK7O,GAClB,IAAI4O,EAAMrH,EAAG9b,IAAIkjB,EAAKD,GACtBG,EAAMtH,EAAG5kC,IAAIisC,EAAKwH,GAClB,IAAIG,EAAOhP,EAAGyH,IAAIH,EAAKtH,EAAGlqC,KAC1BqxC,EAAMnH,EAAG9b,IAAIkjB,EAAK2H,GAClBzH,EAAMtH,EAAG9b,IAAImjB,EAAKH,GAClBE,EAAMpH,EAAGwH,KAAKL,EAAKC,EAAK4H,GACxB3H,EAAMrH,EAAGwH,KAAKF,EAAKD,EAAK2H,GAExB,IAAK,IAAI9gD,EAAIqgD,EAAIrgD,EAAIuzC,EAAKvzC,IAAK,CAC7B,IAAIo5C,EAAMp5C,EAAIi7C,EACd7B,EAAM6B,GAAQ7B,EAAM7F,EACpB,IAAIwN,EAAOjP,EAAG5kC,IAAIisC,EAAKC,GACvB,MAAMK,EAAK3H,EAAGyH,IAAIwH,EAAMjP,EAAGlqC,KAC3BqxC,EAAMnH,EAAG9b,IAAIkjB,EAAKF,GAClBA,EAAMlH,EAAG9b,IAAIgjB,EAAKA,GAClB+H,EAAOjP,EAAG9b,IAAImjB,EAAKH,GACnBE,EAAMpH,EAAGwH,KAAKL,EAAKC,EAAKO,GACxBN,EAAMrH,EAAGwH,KAAKyH,EAAM5H,EAAKM,EAC3B,CACA,MAAO,CAAEngC,QAASwnC,EAAM5oD,MAAOghD,EAAK,EAEtC,GAAIpH,EAAG0B,MAAQ2H,IAAQD,EAAK,CAE1B,MAAMmF,GAAMvO,EAAG0B,MAAQ0H,GAAOC,EACxBqF,EAAK1O,EAAGv/B,KAAKu/B,EAAGnY,IAAImf,IAC1BC,EAAYA,CAACxO,EAAMthC,KACjB,IAAI+vC,EAAMlH,EAAG7O,IAAIh6B,GACjB,MAAMgwC,EAAMnH,EAAG9b,IAAIuU,EAAGthC,GACtB+vC,EAAMlH,EAAG9b,IAAIgjB,EAAKC,GAClB,IAAI+H,EAAKlP,EAAG5kC,IAAI8rC,EAAKqH,GACrBW,EAAKlP,EAAG9b,IAAIgrB,EAAI/H,GAChB,MAAMxF,EAAK3B,EAAG9b,IAAIgrB,EAAIR,GAChBtH,EAAMpH,EAAG9b,IAAI8b,EAAG7O,IAAI+d,GAAK/3C,GACzB63C,EAAOhP,EAAGyH,IAAIL,EAAK3O,GAEzB,MAAO,CAAEjxB,QAASwnC,EAAM5oD,MADhB45C,EAAGwH,KAAK7F,EAAIuN,EAAIF,GACU,CAEtC,CAGA,OAAO/H,CACT,+BC3yCA/gD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmsD,eAAiBnsD,EAAQkM,WAAalM,EAAQosD,sBAAmB,EACzE,MAAM1W,EAAU10C,EAAQ,OAClBmE,EAASnE,EAAQ,OACjBqrD,EAAoBrrD,EAAQ,OAC5BugB,EAAsBvgB,EAAQ,OAC9BqE,EAAUrE,EAAQ,OAClB20C,EAAW30C,EAAQ,OACzB,SAASorD,EAAiBt9C,GACtB,MAAmC,kBAApBA,EAAIsV,aACO,MAArBtV,EAAIw9C,eAAwD,kBAAvBx9C,EAAIw9C,iBAC1C,EAAI5W,EAAQ6W,aAAaz9C,EACjC,CACA9O,EAAQosD,iBAAmBA,EAC3B,MAAMlgD,UAAmBwpC,EAAQE,MAC7BznC,WAAAA,CAAY0nC,EAAS2W,GACjBlmD,MAAMuvC,EAAS2W,GACXJ,EAAiBI,GACjBtsD,KAAKU,MAAQurD,EAAeM,SAG5BvsD,KAAKkkB,WAAwC,MAA3BooC,EAAapoC,WAAqB,KAAOxe,OAAO4mD,EAAapoC,YAC/ElkB,KAAKosD,cAA8C,MAA9BE,EAAaF,cAAwB,KAAO1mD,OAAO4mD,EAAaF,eAE7F,CACAI,cAAAA,GACI,GAAoB,MAAhBxsD,KAAKysD,QAAiB,CACtB,OAAQzsD,KAAKU,OACT,KAAM,EACFV,KAAKU,MAAQurD,EAAeS,SAC5B,MACJ,KAAM,EACF1sD,KAAKU,MAAQurD,EAAeU,cAC5B,MACJ,KAAK,EACD3sD,KAAKU,MAAQurD,EAAeM,QAC5B,MACJ,KAAK,EACDvsD,KAAKU,MAAQurD,EAAeW,SAC5B,MACJ,KAAK,EACD5sD,KAAKU,MAAQurD,EAAeY,QAC5B,MACJ,KAAK,EACD7sD,KAAKU,MAAQurD,EAAea,WAGpC9sD,KAAKysD,QAAU,CACnB,CACJ,CAKA5W,mBAAAA,GAC2B,MAAnB71C,KAAK81C,aACL91C,KAAK81C,WAAa91C,KAAK+1C,QAAU/1C,KAAKgH,YAAYgvC,UAAYh2C,KAAKg3C,qBAAqBhB,WAElE,MAAtBh2C,KAAKosD,gBACLpsD,KAAKosD,cAAgBpsD,KAAKkkB,WAAalkB,KAAKgH,YAAYgvC,UAAYh2C,KAAKg3C,qBAAqBhB,WAEpD,MAA1Ch2C,KAAKk2C,YAAYC,wBACjBn2C,KAAKk2C,YAAcl2C,KAAK21C,QAAQl0B,OAAOsrC,uBAAuB/sD,KAAKshB,gBAAiBthB,KAAKgH,YAAYgvC,UAAWh2C,KAAKk2C,YAAYG,YAAar2C,KAAKk2C,YAAYI,OAAQt2C,KAAK2D,KAAK6yC,YAAax2C,KAAK2D,KAAK8yC,YAEhN,CAKAuW,eAAAA,GACI,OAAOhtD,KAAKitD,cAChB,CAGA,sBAAMvW,GACF,GAAwB,MAApB12C,KAAKk2C,YACL,OAAO,KACX,MAAMS,QAAkB32C,KAAK21C,QAAQl0B,OAAO2C,kBAAkBpkB,KAAKshB,gBAAiBthB,KAAKgH,YAAYgvC,UAAWh2C,KAAKk2C,YAAYG,YAAar2C,KAAKk2C,YAAYI,OAAQt2C,KAAK2D,KAAK6yC,YAAax2C,KAAK2D,KAAK8yC,YAExM,OADAz2C,KAAKk2C,YAAcS,EACZA,CACX,CACAC,YAAAA,GACI,OAAO,KAAkBznB,OAAOnvB,KAAKk2C,YAAYC,sBACrD,CACAU,cAAAA,GACI,OAAO,KAAkB1nB,OAAOnvB,KAAKk2C,YAAYY,sBACrD,CACAC,2BAAAA,GAEI,OAA2B,UADD/2C,KAAK81C,WAAa91C,KAAKk2C,YAAYG,aACvBr2C,KAAKgH,YAAYgvC,SAC3D,CAGAkX,YAAAA,GACI,OAAOltD,KAAK8kB,UAChB,CACAoyB,eAAAA,GACI,OAAOl3C,KAAKq3C,cAChB,CACAD,gBAAAA,GACI,OAAOp3C,KAAKmtD,cAChB,CAIAC,UAAAA,GACI,OAAOptD,KAAKU,QAAUurD,EAAeY,SAAW7sD,KAAKU,QAAUurD,EAAeS,UAAY1sD,KAAKU,QAAUurD,EAAeU,aAC5H,CACArV,YAAAA,GACI,OAAOt3C,KAAKqtD,cAChB,CACAA,YAAAA,GACI,OAAOrtD,KAAKU,QAAUurD,EAAea,UACzC,CACAnmC,cAAAA,GACI,OAAO3mB,KAAKU,QAAUurD,EAAeU,aACzC,CACAW,kBAAAA,GACI,OAAOttD,KAAKU,QAAUurD,EAAeU,eAAiB3sD,KAAKU,QAAUurD,EAAesB,kBACxF,CACAC,YAAAA,GACI,OAAOxtD,KAAKU,QAAUurD,EAAeY,OACzC,CACAY,QAAAA,GACI,OAAOztD,KAAKU,QAAUurD,EAAeS,QACzC,CAIA5T,SAAAA,GACI,OAAO94C,KAAKU,QAAUurD,EAAeM,OACzC,CACAlV,YAAAA,GACI,OAAOr3C,KAAK2D,KAAK+pD,YACrB,CAGAC,MAAAA,GACI,MAAO,CACH/V,kBAAkB,EAAInC,EAASgC,eAAez3C,KAAK+1C,QAAU/1C,KAAKkkB,WAAYlkB,KAAK21C,QAAQj0B,OAAO1hB,KAAK2D,KAAK8yC,YAAaz2C,KAAK21C,QAAQl0B,QACtIo2B,kBAAkB,EAAIpC,EAASgC,eAAez3C,KAAK81C,WAAa91C,KAAKosD,cAAepsD,KAAK4tD,YAAa5tD,KAAK21C,QAAQl0B,QACnHq2B,SAAUA,CAAC1vC,EAAa2vC,IAAuB/3C,KAAK21C,QAAQl0B,OAAOu2B,eAAeh4C,KAAK81C,WAAa91C,KAAKosD,cAAehkD,EAAa2vC,GAE7I,CACAJ,UAAAA,GACI,MAAO,CACHC,kBAAkB,EAAInC,EAASgC,eAAez3C,KAAK+1C,QAAS/1C,KAAK21C,QAAQj0B,OAAO1hB,KAAK2D,KAAK8yC,YAAaz2C,KAAK21C,QAAQl0B,QACpHo2B,kBAAkB,EAAIpC,EAASgC,eAAez3C,KAAK81C,WAAY91C,KAAK4tD,YAAa5tD,KAAK21C,QAAQl0B,QAC9Fq2B,SAAUA,CAAC1vC,EAAa2vC,IAAuB/3C,KAAK21C,QAAQl0B,OAAOu2B,eAAeh4C,KAAK81C,WAAY1tC,EAAa2vC,GAExH,CAKA8V,aAAAA,GACI,MAAO,CACHjW,kBAAkB,EAAInC,EAASgC,eAAez3C,KAAKkkB,WAAYlkB,KAAK21C,QAAQj0B,OAAO1hB,KAAK2D,KAAK8yC,YAAaz2C,KAAK21C,QAAQl0B,QACvHo2B,kBAAkB,EAAIpC,EAASgC,eAAez3C,KAAKosD,cAAepsD,KAAK4tD,YAAa5tD,KAAK21C,QAAQl0B,QACjGq2B,SAAUA,CAAC1vC,EAAa2vC,IAAuB/3C,KAAK21C,QAAQl0B,OAAOu2B,eAAeh4C,KAAKosD,cAAehkD,EAAa2vC,GAE3H,CACAf,kBAAAA,GACI,OAAO,EAAIvB,EAASgC,eAAez3C,KAAK2D,KAAK6yC,aAAex2C,KAAK+1C,QAAU/1C,KAAKkkB,YAAalkB,KAAK21C,QAAQj0B,OAAO1hB,KAAK2D,KAAK8yC,YAAaz2C,KAAK21C,QAAQl0B,OACzJ,CACA7b,QAAAA,GACI,OAAO,EAAI6vC,EAASgC,eAAez3C,KAAK2D,KAAK6yC,YAAax2C,KAAK21C,QAAQj0B,OAAO1hB,KAAK2D,KAAK8yC,YAAaz2C,KAAK21C,QAAQl0B,OACtH,CAIAqsC,YAAAA,GACI,OAAO9tD,KAAK21C,QAAQn0B,SAASssC,aAAa9tD,KAAK2D,KACnD,CAIA,sBAAMoqD,GACF,MAAOzV,EAASC,SAAmBl0C,QAAQoE,IAAI,CAC3CzI,KAAK21C,QAAQn0B,SAASg3B,WAAWx4C,KAAKq3C,eAAgBr3C,KAAK2D,KAAK8yC,YAAY,GAC5Ez2C,KAAK2D,KAAK8yC,aAAez2C,KAAK21C,QAAQn0B,SAASqG,2BAA6B7nB,KAAKy4C,eAAiBp0C,QAAQC,QAAQ,QAEtH,IAAIs0C,EAAW54C,KAAK2D,KAAK6yC,YAGzB,OAFiB,MAAb+B,IACAK,GAAsBL,GACnB,CACHI,cAAeL,GAAWM,EAC1BN,SAAS,EAAI7C,EAASgC,eAAea,EAASt4C,KAAK21C,QAAQj0B,OAAO1hB,KAAK2D,KAAK8yC,YAAaz2C,KAAK21C,QAAQl0B,QACtGm3B,UAAU,EAAInD,EAASgC,eAAemB,EAAU54C,KAAK21C,QAAQj0B,OAAO1hB,KAAK2D,KAAK8yC,YAAaz2C,KAAK21C,QAAQl0B,QAEhH,CAIA,wBAAM42B,GACF,MAAOC,EAASC,SAAmBl0C,QAAQoE,IAAI,CAC3CzI,KAAK21C,QAAQn0B,SAASg3B,WAAWx4C,KAAKq3C,eAAgBr3C,KAAK21C,QAAQn0B,SAASqG,4BAA4B,GACxG7nB,KAAKy4C,iBAET,MAAO,CACHE,cAAeL,GAAWC,EAC1BD,SAAS,EAAI7C,EAASgC,eAAea,EAASt4C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,QAC1Fm3B,UAAU,EAAInD,EAASgC,eAAec,EAAWv4C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,QAErG,CAYA,YAAMtV,CAAOzI,EAAQ0E,EAAa8D,GAC9BlM,KAAKguD,YAAYtqD,GACjB,MAAMirB,QAAe3uB,KAAK21C,QAAQn0B,SAASysC,eAAevqD,QAAc1D,KAAK64C,UAAU3sC,IAAa,EAAM9D,GAK1G,OAJApI,KAAK8kB,WAAa6J,EAAO,GACrB3uB,KAAKU,QAAUurD,EAAeM,SAAWvsD,KAAKU,QAAUurD,EAAesB,oBAAsBvtD,KAAKU,QAAUurD,EAAeU,qBACrH3sD,KAAKulB,aAAa0mC,EAAeW,UAEpCj+B,EAAO,EAClB,CASA,eAAMkqB,CAAU3sC,GACZ,IAAKlM,KAAK84C,YACN,MAAM,IAAIj1C,MAAM,6BAKpB,OAJK7D,KAAK+4C,YACN/4C,KAAK+4C,WAAY,QACX/4C,KAAKulB,sBAEFvlB,KAAK21C,QAAQn0B,SAASw3B,QAAQh5C,KAAK2D,KAAM3D,KAAKi5C,cAAe/sC,EAAYlM,KAAKwG,SAASoc,OAAMrR,GAAKlN,QAAQkkB,OAAOhX,aAAatM,EAAOse,2BAA6B,IAAI1f,MAAM,qBAAuB0N,IACpN,CAOA,sBAAM28C,CAAiB9lD,GACnB,GAAIpI,KAAKU,QAAUurD,EAAeW,UAAY5sD,KAAKU,QAAUurD,EAAeY,QACxE,OAAOxoD,QAAQC,UACnB,GAAItE,KAAKU,QAAUurD,EAAeM,SAAWvsD,KAAKU,QAAUurD,EAAesB,mBACvE,MAAM,IAAI1pD,MAAM,+BACpB,MAAMypB,GAAkB,EAAInoB,EAAQooB,uBAAuBnlB,GACrDumB,QAAetqB,QAAQ8pD,KAAK,CAC9BnuD,KAAKouD,yBAAyB9gC,EAAgBb,QAC9CzsB,KAAKquD,cAAcpC,EAAeW,SAAU,MAAOt/B,EAAgBb,QAAQzjB,MAAK,IAAM,MAO1F,GALAskB,EAAgBI,QACD,IAAXiB,GACA3uB,KAAK6hB,OAAO0F,MAAM,mDACP,IAAXoH,GACA3uB,KAAK6hB,OAAO0F,MAAM,0DACP,IAAXoH,EAKA,OAJA3uB,KAAK6hB,OAAO0F,MAAM,sEACdvnB,KAAKU,QAAUurD,EAAesB,oBAAsBvtD,KAAKU,QAAUurD,EAAeM,eAC5EvsD,KAAKulB,aAAa0mC,EAAeU,gBAI3C3sD,KAAKU,QAAUurD,EAAesB,oBAAsBvtD,KAAKU,QAAUurD,EAAeM,SAAWvsD,KAAKU,QAAUurD,EAAeU,qBACrH3sD,KAAKulB,aAAa0mC,EAAeW,SAE/C,CAgBA,oBAAM0B,CAAelmD,EAAammD,GAC9B,GAAIvuD,KAAKU,QAAUurD,EAAeY,QAC9B,OAAOxoD,QAAQC,SAAQ,GAC3B,GAAItE,KAAKU,QAAUurD,EAAeW,UAAY5sD,KAAKU,QAAUurD,EAAeuC,aACxE,MAAM,IAAI3qD,MAAM,gCACpB,MAAMypB,GAAkB,EAAInoB,EAAQooB,uBAAuBnlB,GACrDumB,QAAetqB,QAAQ8pD,KAAK,CAC9BnuD,KAAKquD,cAAcpC,EAAeY,QAAS,MAAOv/B,EAAgBb,QAClEzsB,KAAKyuD,kCAAkCnhC,EAAgBb,OAAQ8hC,KAGnE,GADAjhC,EAAgBI,QACM,kBAAXiB,EAAqB,CAC5B,GAAI3uB,KAAKU,QAAUurD,EAAea,WAC9B,MAAM,IAAIjpD,MAAM,gBAEpB,OADA7D,KAAK6hB,OAAO0F,MAAM,mDACX,CACX,CAEA,OADAvnB,KAAK6hB,OAAO0F,MAAM,2DACVoH,EAAO+/B,MACX,KAAKvC,EAAkBwC,iCAAiCC,KACpD,OAAO,EACX,KAAKzC,EAAkBwC,iCAAiCE,YAGpD,aAFM,EAAI1pD,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAASstC,2BAA2B9uD,KAAK2D,KAAMgrB,EAAOhrB,OAAO,KAAMsB,EAAOse,2BAA4Bnb,SACrJpI,KAAKulB,aAAa0mC,EAAea,aAChC,EACX,KAAKX,EAAkBwC,iCAAiCI,QACpD,SAAU/uD,KAAK21C,QAAQn0B,SAASwtC,UAAUhvD,KAAKq3C,eAAgBr3C,KAAK2D,MAChE,MAAM,IAAIE,MAAM,gBACpB,MAAM,IAAIwd,EAAoBkD,kBAAkB,gBACpD,KAAK4nC,EAAkBwC,iCAAiCM,UACpD,GAAIjvD,KAAKU,QAAUurD,EAAeY,QAC9B,OAAO,EACX,MAAM,IAAIhpD,MAAM,+BAE5B,CACA,uCAAM4qD,CAAkCrmD,GAAuC,IAA1BmmD,EAAoB3sD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACpEksB,EAAO,CAAE4gC,KAAMvC,EAAkBwC,iCAAiCO,QAASzuD,IAAK,IACpF,MAAQ2H,EAAYyhB,UAAYiE,EAAK4gC,OAASvC,EAAkBwC,iCAAiCO,SAAWphC,EAAK4gC,OAASvC,EAAkBwC,iCAAiCM,YAAY,CAErL,GADAnhC,QAAaq+B,EAAkBgD,gBAAgBC,uBAAuBpvD,KAAKusB,IAAKvsB,KAAKgtD,kBAAmBhtD,KAAK2D,KAAK0rD,eAC9GvhC,EAAK4gC,OAASvC,EAAkBwC,iCAAiCC,KAAM,OAC3C5uD,KAAKsvD,kBAAkBxhC,EAAKnqB,MAAM,GAEtD3D,KAAKU,QAAUurD,EAAeW,UAAY5sD,KAAKU,QAAUurD,EAAea,kBAClE9sD,KAAKulB,aAAa0mC,EAAeuC,cAI3C1gC,EAAO,CAAE4gC,KAAMvC,EAAkBwC,iCAAiCO,QAASzuD,IAAK,GAExF,CACIqtB,EAAK4gC,OAASvC,EAAkBwC,iCAAiCO,SACjEphC,EAAK4gC,OAASvC,EAAkBwC,iCAAiCM,iBAC3D,EAAI9pD,EAAQijB,gBAAuC,IAAvBmmC,EAA6BnmD,EACvE,CACA,OAAO0lB,CACX,CAUA,oCAAMyhC,GAA4C,IAAbjoC,IAAI1lB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACrC,GAAI5B,KAAKU,QAAUurD,EAAeM,SAAWvsD,KAAKU,OAASurD,EAAeU,cACtE,OAAO,EACX,GAAI3sD,KAAKotD,cAAgBptD,KAAKqtD,eAC1B,OAAO,EAEX,MAAMv/B,QAAaq+B,EAAkBgD,gBAAgBC,uBAAuBpvD,KAAKusB,IAAKvsB,KAAKgtD,kBAAmBhtD,KAAK2D,KAAK0rD,eACxH,OAAQvhC,EAAK4gC,MACT,KAAKvC,EAAkBwC,iCAAiCC,KACpD,MAAMY,QAAkBxvD,KAAKsvD,kBAAkBxhC,EAAKnqB,MAAM,GAM1D,OALI6rD,IACAxvD,KAAKU,MAAQurD,EAAeuC,aACxBlnC,SACMtnB,KAAKulB,gBAEZiqC,EACX,KAAKrD,EAAkBwC,iCAAiCE,YAKpD,aAJM,EAAI1pD,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAASstC,2BAA2B9uD,KAAK2D,KAAMmqB,EAAKnqB,OAAO,KAAMsB,EAAOse,4BAC7HvjB,KAAKU,MAAQurD,EAAea,WACxBxlC,SACMtnB,KAAKulB,gBACR,EACX,QACI,OAAO,EAEnB,CAUA,YAAMnZ,CAAO1I,EAAQ0E,GACjB,MAAMumB,QAAe3uB,KAAK21C,QAAQn0B,SAASysC,eAAevqD,QAAc1D,KAAKyvD,UAAU/rD,EAAOyzC,eAAe,EAAM/uC,GAKnH,OAJApI,KAAKolB,WAAauJ,EAAO,GACrB3uB,KAAKU,QAAUurD,EAAeW,UAAY5sD,KAAKU,QAAUurD,EAAea,YAAc9sD,KAAKU,QAAUurD,EAAeuC,oBAC9GxuD,KAAKulB,aAAa0mC,EAAeS,UAEpC/9B,EAAO,EAClB,CAQA,eAAM8gC,CAAU/rD,GACZ,IAAK1D,KAAKqtD,eACN,MAAM,IAAIxpD,MAAM,2CAEpB,GADAH,IAAW1D,KAAKq3C,qBACNr3C,KAAK21C,QAAQn0B,SAASwtC,UAAUhvD,KAAKq3C,eAAgBr3C,KAAK2D,MAChE,aAAa3D,KAAK21C,QAAQn0B,SAASiuC,UAAU/rD,EAAQ1D,KAAK2D,MAAM,GAAM,GAErE,CACD,MAAMiuB,QAAYu6B,EAAkBgD,gBAAgBC,uBAAuBpvD,KAAKusB,IAAKvsB,KAAKgtD,kBAAmBhtD,KAAK2D,KAAK0rD,eACvH,GAAIz9B,EAAI88B,OAASvC,EAAkBwC,iCAAiCE,YAChE,aAAa7uD,KAAK21C,QAAQn0B,SAASkuC,2BAA2BhsD,EAAQ1D,KAAK2D,KAAMiuB,EAAIjuB,MAAM,GAAM,GAErG,MAAM,IAAI0d,EAAoBkD,kBAAkB,oDACpD,CACJ,CAQA,sBAAMorC,CAAiBvnD,GACnB,GAAIpI,KAAKU,QAAUurD,EAAeS,SAC9B,OAAOroD,QAAQC,UACnB,GAAItE,KAAKU,QAAUurD,EAAeW,UAAY5sD,KAAKU,QAAUurD,EAAeuC,aACxE,MAAM,IAAI3qD,MAAM,gCACpB,MAAMypB,EAAkB,IAAIsiC,gBACT,MAAfxnD,GACAA,EAAYsgB,iBAAiB,SAAS,IAAM4E,EAAgBI,MAAMtlB,EAAY4lB,UAClF,MAAM4D,QAAYvtB,QAAQ8pD,KAAK,CAC3BnuD,KAAK6vD,uBAAuBviC,EAAgBb,QAC5CzsB,KAAKquD,cAAcpC,EAAeS,SAAU,KAAMp/B,EAAgBb,QAAQzjB,MAAK,IAAM,IACrFhJ,KAAKquD,cAAcpC,EAAeY,QAAS,KAAMv/B,EAAgBb,QAAQzjB,MAAK,IAAM,MAGxF,GADAskB,EAAgBI,QACJ,IAARkE,EAAJ,CAIA,GAAY,IAARA,EAEA,MADA5xB,KAAK6hB,OAAO0F,MAAM,4DACZ,IAAI1jB,MAAM,iEAGpB,GADA7D,KAAK6hB,OAAO0F,MAAM,8CACdqK,IAAQ3sB,EAAO6qD,iBAAiBlB,KAEhC,YADM5uD,KAAKulB,aAAa0mC,EAAeY,SACjC,IAAIhpD,MAAM,iEAEhB+tB,IAAQ3sB,EAAO6qD,iBAAiBC,oBAC1B/vD,KAAKulB,aAAa0mC,EAAeS,SAX3C,MAFI1sD,KAAK6hB,OAAO0F,MAAM,4DAe1B,CAGAyoC,SAAAA,GAEI,MAAO,IADK5pD,MAAM4pD,YAGd9rC,WAA+B,MAAnBlkB,KAAKkkB,WAAqB,KAAOlkB,KAAKkkB,WAAWzf,SAAS,IACtE2nD,cAAqC,MAAtBpsD,KAAKosD,cAAwB,KAAOpsD,KAAKosD,cAAc3nD,SAAS,IAEvF,CASA,wBAAMwrD,GACF,GAAIjwD,KAAKU,QAAUurD,EAAeM,SAC9BvsD,KAAKU,QAAUurD,EAAesB,oBAC9BvtD,KAAKU,QAAUurD,EAAeW,UAC9B5sD,KAAKU,QAAUurD,EAAeuC,cAC9BxuD,KAAKU,QAAUurD,EAAea,WAAY,CAE1C,aADkB,EAAI3nD,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAAS0uC,gBAAgBlwD,KAAKq3C,eAAgBr3C,KAAK2D,SAEhH,KAAKsB,EAAO6qD,iBAAiBlB,KAEzB,OADA5uD,KAAKU,MAAQurD,EAAeY,SACrB,EACX,KAAK5nD,EAAO6qD,iBAAiBhD,WAEzB,OADA9sD,KAAKU,MAAQurD,EAAea,YACrB,EACX,KAAK7nD,EAAO6qD,iBAAiBf,QAEzB,OADA/uD,KAAKU,MAAQurD,EAAeU,eACrB,EACX,KAAK1nD,EAAO6qD,iBAAiBC,aACzB,GAAI/vD,KAAKU,QAAUurD,EAAeW,UAAY5sD,KAAKU,QAAUurD,EAAea,WAExE,OADA9sD,KAAKU,MAAQurD,EAAeS,UACrB,EAEX,MACJ,KAAKznD,EAAO6qD,iBAAiBlD,SACzB,GAAI5sD,KAAKU,QAAUurD,EAAeW,UAAY5sD,KAAKU,QAAUurD,EAAea,WAExE,OADA9sD,KAAKU,MAAQurD,EAAeW,UACrB,EAIvB,CACJ,CACA,WAAMnmC,CAAMa,GACR,IAAIZ,QAAgB1mB,KAAKiwD,qBAYzB,OAXKjwD,KAAKU,QAAUurD,EAAeM,SAAWvsD,KAAKU,QAAUurD,EAAesB,0BAA8BvtD,KAAKmwD,iBAE3GnwD,KAAKU,MAAQurD,EAAeU,cAC5BjmC,KAAY,GAEZ1mB,KAAKU,QAAUurD,EAAeW,UAAY5sD,KAAKU,QAAUurD,EAAeuC,eAExE9nC,UAAkB1mB,KAAKuvD,gCAA+B,IAEtDjoC,GAAQZ,SACF1mB,KAAKulB,eACRmB,CACX,CACA,WAAMO,CAAMK,GACR,OAAQtnB,KAAKU,OACT,KAAKurD,EAAeM,QAChB,GAAIvsD,KAAKowD,OAASvjC,KAAKC,MAInB,OAHA9sB,KAAKU,MAAQurD,EAAesB,mBACxBjmC,SACMtnB,KAAKulB,gBACR,EAEX,MACJ,KAAK0mC,EAAeW,SACpB,KAAKX,EAAeuC,aAEhB,SADsBxuD,KAAK21C,QAAQn0B,SAASwtC,UAAUhvD,KAAKq3C,eAAgBr3C,KAAK2D,MAK5E,OAHA3D,KAAKU,MAAQurD,EAAea,WACxBxlC,SACMtnB,KAAKulB,gBACR,EAInB,OAAO,CACX,EAGJ,IAAI0mC,EADJnsD,EAAQkM,WAAaA,EAErB,SAAWigD,GACPA,EAAeA,EAAyB,UAAK,GAAK,WAClDA,EAAeA,EAA8B,eAAK,GAAK,gBACvDA,EAAeA,EAAmC,oBAAK,GAAK,qBAC5DA,EAAeA,EAAwB,QAAI,GAAK,UAChDA,EAAeA,EAAyB,SAAI,GAAK,WACjDA,EAAeA,EAA6B,aAAI,GAAK,eACrDA,EAAeA,EAAwB,QAAI,GAAK,UAChDA,EAAeA,EAA2B,WAAI,GAAK,YACtD,CATD,CASGA,EAAiBnsD,EAAQmsD,iBAAmBnsD,EAAQmsD,eAAiB,CAAC,oBC9iBzE,IAAIoE,EAAYvvD,EAAQ,OACpBwvD,EAASxvD,EAAQ,OASrBf,EAAOD,QAAU,SAAUoD,EAAOqtD,EAAQC,GACxC,IAAI7hC,EAAS2hC,EAAOptD,EAAOqtD,GAQ3B,OALKC,IACH7hC,EAASA,EAAO3hB,QAAQ,WAAY,MAI/B2hB,EAAO3hB,QAAQ,SAAS,SAAUsL,EAAGm4C,GAC1C,OAAOJ,EAAUI,EAAIF,EACvB,GACF,6BCjBAzwD,EAAQ,OAA0B,EAkBlCA,EAAQ,EAjBsB,CAC5B,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,kBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,6KAEP,SAAY,iCCfhBA,EAAQ,OAAO,EAUfA,EAAQ,EATG,CACT,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,2OCiHXC,EAAOD,QAtHP,SAAeiU,GACb,GAAIA,EAASlS,QAAU,IAAO,MAAM,IAAIo9B,UAAU,qBAElD,IADA,IAAIyxB,EAAW,IAAIpgC,WAAW,KACrB1f,EAAI,EAAGA,EAAI8/C,EAAS7uD,OAAQ+O,IACnC8/C,EAAS9/C,GAAK,IAEhB,IAAK,IAAI5F,EAAI,EAAGA,EAAI+I,EAASlS,OAAQmJ,IAAK,CACxC,IAAIgG,EAAI+C,EAAS9B,OAAOjH,GACpBmG,EAAKH,EAAEF,WAAW,GACtB,GAAqB,MAAjB4/C,EAASv/C,GAAe,MAAM,IAAI8tB,UAAUjuB,EAAI,iBACpD0/C,EAASv/C,GAAMnG,CACjB,CACA,IAAIgF,EAAO+D,EAASlS,OAChB8uD,EAAS58C,EAAS9B,OAAO,GACzB2+C,EAASxnD,KAAK0wC,IAAI9pC,GAAQ5G,KAAK0wC,IAAI,KACnC+W,EAAUznD,KAAK0wC,IAAI,KAAO1wC,KAAK0wC,IAAI9pC,GA8CvC,SAAS8gD,EAAc1vD,GACrB,GAAsB,kBAAXA,EAAuB,MAAM,IAAI69B,UAAU,mBACtD,GAAsB,IAAlB79B,EAAOS,OAAgB,OAAO,IAAIyuB,WAKtC,IAJA,IAAIygC,EAAM,EAENC,EAAS,EACTnvD,EAAS,EACNT,EAAO2vD,KAASJ,GACrBK,IACAD,IAMF,IAHA,IAAI7mC,GAAU9oB,EAAOS,OAASkvD,GAAOH,EAAU,IAAO,EAClDK,EAAO,IAAI3gC,WAAWpG,GAEnB9oB,EAAO2vD,IAAM,CAElB,IAAIG,EAAW9vD,EAAO0P,WAAWigD,GAEjC,GAAIG,EAAW,IAAO,OAEtB,IAAIx4C,EAAQg4C,EAASQ,GAErB,GAAc,MAAVx4C,EAAiB,OAErB,IADA,IAAI1N,EAAI,EACCmmD,EAAMjnC,EAAO,GAAc,IAAVxR,GAAe1N,EAAInJ,KAAqB,IAATsvD,EAAaA,IAAOnmD,IAC3E0N,GAAU1I,EAAOihD,EAAKE,KAAU,EAChCF,EAAKE,GAAQz4C,EAAQ,MAAS,EAC9BA,EAASA,EAAQ,MAAS,EAE5B,GAAc,IAAVA,EAAe,MAAM,IAAI7U,MAAM,kBACnChC,EAASmJ,EACT+lD,GACF,CAGA,IADA,IAAIK,EAAMlnC,EAAOroB,EACVuvD,IAAQlnC,GAAsB,IAAd+mC,EAAKG,IAC1BA,IAIF,IAFA,IAAIC,EAAM,IAAI/gC,WAAW0gC,GAAU9mC,EAAOknC,IACtCxgD,EAAIogD,EACDI,IAAQlnC,GACbmnC,EAAIzgD,KAAOqgD,EAAKG,KAElB,OAAOC,CACT,CAMA,MAAO,CACLlxC,OAjGF,SAAiB/e,GAOf,GANIA,aAAkBkvB,aACXmO,YAAYC,OAAOt9B,GAC5BA,EAAS,IAAIkvB,WAAWlvB,EAAOivB,OAAQjvB,EAAO8vB,WAAY9vB,EAAO29B,YACxD50B,MAAMi3B,QAAQhgC,KACvBA,EAASkvB,WAAW9rB,KAAKpD,OAErBA,aAAkBkvB,YAAe,MAAM,IAAI2O,UAAU,uBAC3D,GAAsB,IAAlB79B,EAAOS,OAAgB,MAAO,GAMlC,IAJA,IAAImvD,EAAS,EACTnvD,EAAS,EACTyvD,EAAS,EACTC,EAAOnwD,EAAOS,OACXyvD,IAAWC,GAA2B,IAAnBnwD,EAAOkwD,IAC/BA,IACAN,IAMF,IAHA,IAAI9mC,GAASqnC,EAAOD,GAAUT,EAAU,IAAO,EAC3CW,EAAM,IAAIlhC,WAAWpG,GAElBonC,IAAWC,GAAM,CAItB,IAHA,IAAI74C,EAAQtX,EAAOkwD,GAEftmD,EAAI,EACCymD,EAAMvnC,EAAO,GAAc,IAAVxR,GAAe1N,EAAInJ,KAAqB,IAAT4vD,EAAaA,IAAOzmD,IAC3E0N,GAAU,IAAM84C,EAAIC,KAAU,EAC9BD,EAAIC,GAAQ/4C,EAAQ1I,IAAU,EAC9B0I,EAASA,EAAQ1I,IAAU,EAE7B,GAAc,IAAV0I,EAAe,MAAM,IAAI7U,MAAM,kBACnChC,EAASmJ,EACTsmD,GACF,CAGA,IADA,IAAII,EAAMxnC,EAAOroB,EACV6vD,IAAQxnC,GAAqB,IAAbsnC,EAAIE,IACzBA,IAIF,IADA,IAAI1/C,EAAM2+C,EAAOgB,OAAOX,GACjBU,EAAMxnC,IAAQwnC,EAAO1/C,GAAO+B,EAAS9B,OAAOu/C,EAAIE,IACvD,OAAO1/C,CACT,EAsDE8+C,aAAcA,EACdrxC,OARF,SAAiBkhB,GACf,IAAItQ,EAASygC,EAAanwB,GAC1B,GAAItQ,EAAU,OAAOA,EACrB,MAAM,IAAIxsB,MAAM,WAAamM,EAAO,aACtC,EAMF,mJC3HA,MAAA8O,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEA8wD,EAAA9wD,EAAA,OASahB,EAAAA,oBAAqB,EAAAgf,EAAAY,QAAqB,EAAC,EAAAX,EAAA8yC,MAAK,kCAEhD/xD,EAAAA,mBAAqBA,EAAAgyD,mBAAmB5xC,KAErDpgB,EAAAA,gBAAA,SAAgC0yB,GAC5B,MAAMu/B,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAcC,aAAc1/B,EAAQ2/B,SAC3E,OAAsB,OAAlBJ,EACOjyD,EAAAgyD,mBAAmBryC,OAAOsyC,GAE1B,IAEf,+BCrBA,MAAMK,EAAOtxD,EAAAA,OAAAA,GA4Dbf,EAAOD,QA7CiB,SAASqsB,EAAQkmC,EAAQt9C,EAAI6M,GACnD,GAAqB,kBAAXuK,EACR,MAAM,IAAI8S,UAAU9S,EAAS,qBAM/B,MAAMsgC,EAAqC,kBAH3C7qC,EAAUA,GAAW,CAAC,GAGS6qC,QAAuB7qC,EAAQ6qC,QAAU,EACxE,GAAgB,IAAZA,GAA6B,IAAZA,EACnB,MAAM,IAAIxtB,UAAUwtB,EAAU,mBAGhC,MAAMh5B,EAAU,CACdtH,OAAQA,GAOV,GAJe,IAAZsgC,IACDh5B,EAAQ6+B,QAAU,OAGjBD,EAAQ,CAET,GAAqB,kBAAXA,IAAwBloD,MAAMi3B,QAAQixB,GAC9C,MAAM,IAAIpzB,UAAUozB,EAAS,wCAE/B5+B,EAAQ4+B,OAASA,CACnB,CAGA,GAAkB,qBAARt9C,EAAqB,CAC7B,MAAMw9C,EAAyC,oBAAtB3wC,EAAQ2wC,UAA2B3wC,EAAQ2wC,UAAY,WAAa,OAAOH,GAAQ,EAC5G3+B,EAAQ1e,GAAKw9C,EAAU9+B,EAAS7R,EAClC,MAAuB,IAAZ6qC,GAAwB,OAAP13C,EAEtB6M,EAAQ4wC,qBACV/+B,EAAQ1e,GAAK,MAGf0e,EAAQ1e,GAAKA,EAGf,OAAO0e,CACT,gDCzDO,MAAMg/B,EAAwB,sDCFrCzvD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ4yD,uBAAoB,EAC5B,MAAMC,EAAyB7xD,EAAQ,OACjC8xD,EAA4B9xD,EAAQ,OACpC+xD,EAA8B/xD,EAAQ,OACtCgyD,EAAoChyD,EAAQ,KAClDhB,EAAQ4yD,kBAAoB,CACxBC,EAAuBI,qBACvBH,EAA0BI,wBAC1BH,EAA4BI,0BAC5BH,EAAkC9tD,8DCVtChC,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQozD,YAAcpzD,EAAQqzD,uBAAoB,EAClD,MAAMC,EAAWtyD,EAAQ,OACnByK,EAAezK,EAAQ,MACvBuyD,EAAavyD,EAAQ,OACrByC,EAAWzC,EAAQ,OACnBuC,EAAavC,EAAQ,OACrBugB,EAAsBvgB,EAAQ,OAC9BwyD,EAAUxyD,EAAQ,OAClB20C,EAAW30C,EAAQ,OACnBqE,EAAUrE,EAAQ,OACxB,SAASqyD,EAAkBvkD,GACvB,MAAmC,kBAApBA,EAAI2kD,YACK,kBAAZ3kD,EAAI4kD,KACE,MAAb5kD,EAAI6kD,OAAwC,kBAAf7kD,EAAI6kD,SACZ,MAArB7kD,EAAI8kD,gBAAyB,EAAIJ,EAAQK,yBAAyB/kD,EAAI8kD,kBACvE,EAAInoD,EAAa2gD,kBAAkBt9C,EAC3C,CACA9O,EAAQqzD,kBAAoBA,EAC5B,MAAMD,UAAoB3nD,EAAaS,WACnCiC,WAAAA,CAAY0nC,EAASC,GACbud,EAAkBvd,KAClBA,EAAUrpB,KAAO,YACrBnmB,MAAMuvC,EAASC,GACf51C,KAAK4tD,YAAcnY,EAASme,cAAcC,MAC1C7zD,KAAK4lB,KAAOytC,EAAWS,SAASC,SAC3BZ,EAAkBvd,KACnB51C,KAAKuzD,WAAa3d,EAAU2d,WAC5BvzD,KAAKwzD,GAAK5d,EAAU4d,GACpBxzD,KAAKyzD,MAAQ7d,EAAU6d,MACvBzzD,KAAK0zD,cAAgB9d,EAAU8d,cAC/B1zD,KAAKg0D,OAASpe,EAAUoe,QAE5Bh0D,KAAKmrB,YAAcnrB,KAAKi0D,iBAAiBxvD,SAAS,OAClDzE,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,WAAatF,KAAKslB,0BAA4B,OACnFtlB,KAAK61C,qBACT,CACAyZ,iBAAAA,CAAkB3gC,GAAuB,IAAf0H,EAAKz0B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC3B,GAAc,MAAV+sB,EACA,OAAOtqB,QAAQC,SAAQ,GAC3B,GAAqB,MAAjBqqB,EAAOqlC,OACP,MAAM,IAAI3yC,EAAoBkD,kBAAkB,+BACpD,GAAI8R,EAAO,CACP,MAAM69B,EAAe3wD,EAASgB,OAAOC,KAAKmqB,EAAOqlC,OAAQ,OAEzD,IADa3wD,EAAW,UAAUU,OAAOmwD,GAAclwD,SAC7Cuc,OAAOvgB,KAAKi0D,kBAClB,MAAM,IAAI5yC,EAAoBkD,kBAAkB,kCACxD,CAEA,OADAvkB,KAAKg0D,OAASrlC,EAAOqlC,OACd3vD,QAAQC,SAAQ,EAC3B,CAGA0C,SAAAA,GACI,MAAMmtD,GAAW,EAAIf,EAAS3zC,QAAQzf,KAAKwzD,IACrChyD,GAAUkE,OAAOyuD,EAASC,eAAiB,MAAQ,MACzD,OAAO,EAAI3e,EAASgC,eAAej2C,EAAQxB,KAAK4tD,YAAa5tD,KAAK21C,QAAQl0B,OAC9E,CAGAw1B,aAAAA,GACI,OAAOj3C,KAAKgtD,iBAChB,CAIAqH,mBAAAA,GACI,OAAOr0D,KAAKwzD,EAChB,CAIAc,SAAAA,GACI,OAAOt0D,KAAKg0D,MAChB,CAKAO,aAAAA,GACI,OAAOv0D,KAAKuzD,UAChB,CACAiB,iBAAAA,GACI,MAAMC,EAAoBz0D,KAAKi0D,iBAC/B,OAAwB,MAApBj0D,KAAK00D,YACED,EACJlxD,EAASgB,OAAO4T,OAAO,CAACs8C,EAAmBlxD,EAASgB,OAAOC,KAAKxE,KAAK00D,YAAa,QAC7F,CACAT,cAAAA,GACI,GAAe,MAAXj0D,KAAKwzD,GACL,OAAO,KACX,MAAMmB,GAAS,EAAIvB,EAAS3zC,QAAQzf,KAAKwzD,IACzC,OAAOjwD,EAASgB,OAAOC,KAAKmwD,EAAOC,WAAWC,aAAc,MAChE,CACA7H,eAAAA,GACI,GAAe,MAAXhtD,KAAKwzD,GACL,OAAO,KAEX,OADe,EAAIJ,EAAS3zC,QAAQzf,KAAKwzD,IAC3BoB,WAAWC,YAC7B,CACA1H,YAAAA,GACI,OAAOntD,KAAKyzD,OAASzzD,KAAKwzD,EAC9B,CAMAsB,OAAAA,GACI,OAAqB,MAAd90D,KAAKyzD,KAChB,CAIAsB,QAAAA,GACI,OAAO/0D,KAAKyzD,KAChB,CAIAuB,gBAAAA,GACI,OAA6B,MAAtBh1D,KAAK0zD,aAChB,CAIAuB,gBAAAA,GACI,OAAO3B,EAAQ4B,MAAMC,oBAAoBn1D,KAAK0zD,cAAe1zD,KAAKg0D,OACtE,CAGAhE,SAAAA,GACI,MAAO,IACA5pD,MAAM4pD,YACT7kC,YAAanrB,KAAKi0D,iBAAiBxvD,SAAS,OAC5C+uD,GAAIxzD,KAAKwzD,GACTD,WAAYvzD,KAAKuzD,WACjBS,OAAQh0D,KAAKg0D,OACbP,MAAOzzD,KAAKyzD,MACZC,cAAe1zD,KAAK0zD,cAE5B,EAEJ5zD,EAAQozD,YAAcA,qCC/ItB,IAAIkC,EAAmBp1D,MAAQA,KAAKo1D,kBAAqBpyD,OAAO0G,OAAU,SAASw8B,EAAG5tB,EAAGhH,EAAGk5C,QAC7E1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B,IAAI+jD,EAAOryD,OAAOsyD,yBAAyBh9C,EAAGhH,GACzC+jD,KAAS,QAASA,GAAQ/8C,EAAEi9C,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAE34B,YAAY,EAAM9wB,IAAK,WAAa,OAAO0M,EAAEhH,EAAI,IAE5DtO,OAAOC,eAAeijC,EAAGskB,EAAI6K,EACjC,EAAM,SAASnvB,EAAG5tB,EAAGhH,EAAGk5C,QACT1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B40B,EAAEskB,GAAMlyC,EAAEhH,EACd,GACI9B,EAAgBxP,MAAQA,KAAKwP,cAAiB,SAAS8I,EAAGxY,GAC1D,IAAK,IAAIyW,KAAK+B,EAAa,YAAN/B,GAAoBvT,OAAO4H,UAAU4L,eAAeM,KAAKhX,EAASyW,IAAI6+C,EAAgBt1D,EAASwY,EAAG/B,EAC3H,EACAvT,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDsM,EAAa1O,EAAQ,OAAahB,GAClC0P,EAAa1O,EAAQ,OAAehB,GACpC0P,EAAa1O,EAAQ,OAAahB,mBClBlC,MAAM41D,EAAgB50D,EAAAA,OAAAA,cAUtBhB,EAAQ61D,aAAe,SAAuBlJ,GAC5C,MAAMviC,EAAOwrC,EAAcjJ,GAE3B,MAAO,CAEL,CAAC,EAAG,GAEJ,CAACviC,EAhBuB,EAgBK,GAE7B,CAAC,EAAGA,EAlBoB,GAoB5B,+BCpBAlnB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ81D,0BAAuB,EAC/B,MAAMC,EAAgB/0D,EAAQ,MACxBuE,EAAevE,EAAQ,OACvBwJ,EAAcxJ,EAAQ,OACtByC,EAAWzC,EAAQ,OACnBqE,EAAUrE,EAAQ,OA8JxBhB,EAAQ81D,qBA7JR,MACI3nD,WAAAA,CAAY6nD,EAAYziC,GAA+B,IAAtB0iC,EAAan0D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAC7C5B,KAAK81D,WAAaA,EAClB91D,KAAKqzB,QAAUA,EACfrzB,KAAK+1D,cAAgBA,CACzB,CACA,iBAAMC,GACF,OAAkD,MAA9CnlC,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,wBAAAA,iDAAAA,0BAAAA,UAAAA,6BAAAA,4BAAAA,mBAAAA,+BAAAA,yBAAAA,UAAAA,yBAAAA,uDAAAA,6BAAAA,yBAAAA,oBAAAA,mCAAYolC,+BACL9qD,SAAS0lB,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,wBAAAA,iDAAAA,0BAAAA,UAAAA,6BAAAA,4BAAAA,mBAAAA,+BAAAA,yBAAAA,UAAAA,yBAAAA,uDAAAA,6BAAAA,yBAAAA,oBAAAA,mCAAYolC,gCAEzB7sD,KAAKC,aAAarJ,KAAK81D,WAAWI,WAAWC,WAAan2D,KAAK+1D,cAC1E,CACAK,gBAAAA,CAAiBC,GACb,OAAOr2D,KAAK81D,WAAWQ,gBAAgBD,EAC3C,CACAE,WAAAA,CAAY7vD,GACR,OAAO1G,KAAK81D,WAAWU,mBAAmB9vD,EAC9C,CACA,kBAAM+vD,CAAaC,EAAgBC,GAC/B,MAAMh6B,QAAc38B,KAAK81D,WAAWc,gBAAgBF,GACpD,IAAIG,EAAiB,EACrB,MAAM55B,GAAe,EAAI93B,EAAQ2xD,gBAAgB92D,KAAKqzB,QAASqjC,GACzDK,EAAW,GACjB,IAAK,IAAIv5B,KAAQb,EAAO,CACpB,MAAMz5B,EAAQisB,OAAOqO,EAAKt6B,OAC1B2zD,GAAkB3zD,EAClB6zD,EAASzvD,KAAK,CACVL,KAAMu2B,EAAKv2B,KACX4d,KAAM2Y,EAAKw5B,KACX9zD,MAAOA,EACPyE,KAAMgvD,EACN15B,aAAcA,EACdv2B,QAASgwD,EACTn6B,KAAOiB,EAAKtP,OAAO+oC,UAOd,WAPgCj3D,KAAK81D,WAAWoB,YAAY15B,EAAKw5B,MAAMhuD,MAAM2lB,GAC3C,MAA/BA,EAAOwoC,qBACA,KACJ,CACH16B,QAAS9N,EAAOyoC,cAChB56B,mBAAoB7N,EAAOwoC,wBAGnCF,UAAWz5B,EAAKtP,OAAO+oC,WAE/B,CAEA,OADAruC,QAAQkxB,IAAI,0BAA4B+c,EAAiB,eAAiBE,EAASl1D,QAC5Ek1D,CACX,CACA,cAAMM,CAASC,EAAiBC,EAAW/1D,EAAQgF,GAChC,MAAXA,IACAA,QAAgBxG,KAAKg2D,eACzB,MAAMe,SAAkB1yD,QAAQoE,IAAI6uD,EAAgB5uD,KAAIqiB,GAAO/qB,KAAKy2D,aAAa1rC,EAAIrkB,QAASqkB,EAAIysC,iBAAgBC,OAClH7uC,QAAQkxB,IAAI,cAAeid,GAC3B,MAAMW,EAAiB,CAAC,EACxBJ,EAAgBvoD,SAAQgc,GAAO2sC,EAAe3sC,EAAIrkB,SAAWqkB,EAAIjL,SACjE,MAAM63C,EAAU,CACZ,CACIjxD,QAAS6wD,EACTr0D,MAAO1B,EACP6F,QAAQ,EAAIlC,EAAQ2xD,gBAAgB92D,KAAKqzB,QAASkkC,KAG1D3uC,QAAQkxB,IAAI,uBAAwB6d,GACpC,IAAIC,GAAmB,EAAI/B,EAAc95B,YAAYg7B,EAAUY,EAASnxD,EAAS8wD,EAAgB,GAAGE,aAEpG,GADA5uC,QAAQkxB,IAAI,sBAAuB8d,GACJ,MAA3BA,EAAiB76B,QAA8C,MAA5B66B,EAAiBh7B,QACpD,MAAO,CACHi7B,KAAM,KACNn2D,IAAKk2D,EAAiBl2D,IACtBo2D,oBAAqB,MAG7B,MAAMD,EAAO,IAAIxyD,EAAa/C,YAAY,CAAEy1D,YAAa,IACnDD,EAAsB,CAAC,EAC7BF,EAAiB76B,OAAOhuB,SAAQ,CAAC9O,EAAO2gC,KACpCk3B,EAAoB73D,EAAMyG,WAAa,GACvCoxD,EAAoB73D,EAAMyG,SAASY,KAAKs5B,EAAM,IAElDhY,QAAQkxB,IAAI,WAAY8d,EAAiB76B,QAyDzC,aAxD8B14B,QAAQoE,IAAImvD,EAAiB76B,OAAOr0B,KAAI2G,UAClE,OAAQpP,EAAM0H,MACV,IAAK,OACD,MAAMgtD,GAAS,EAAItvD,EAAa2yD,MAAMz0D,EAASgB,OAAOC,KAAKkzD,EAAez3D,EAAMyG,SAAU,QAC1F,MAAO,CACHswD,KAAM/2D,EAAM4kB,KACZ+b,MAAO3gC,EAAMgH,KACbgxD,YAAa,CACT5wD,OAAQpH,EAAMg9B,aACdz7B,OAAQkE,OAAOzF,EAAMiD,QAEzBg1D,eAAgBvD,EAAOuD,eACvBC,cAAexD,EAAOwD,cACtBC,cAAezD,EAAOyD,eAE9B,IAAK,SACD,MAAO,CACHpB,KAAM/2D,EAAM4kB,KACZ+b,MAAO3gC,EAAMgH,KACbgxD,YAAa,CACT5wD,OAAQpH,EAAMg9B,aACdz7B,OAAQkE,OAAOzF,EAAMiD,QAEzBm1D,YAAa,GAErB,IAAK,cACD,MAAO,CACHrB,KAAM/2D,EAAM4kB,KACZ+b,MAAO3gC,EAAMgH,KACbgxD,YAAa,CACT5wD,OAAQpH,EAAMg9B,aACdz7B,OAAQkE,OAAOzF,EAAMiD,QAEzBo1D,cAAc,EAAIjzD,EAAakzD,QAAQh1D,EAASgB,OAAOC,KAAKkzD,EAAez3D,EAAMyG,SAAU,OAAQ1G,KAAKqzB,SAAShsB,OACjHgxD,YAAa,GAErB,IAAK,QACD,MAAO,CACHrB,KAAM/2D,EAAM4kB,KACZ+b,MAAO3gC,EAAMgH,KACbuxD,qBAAsBx4D,KAAK81D,WAAW2C,kBAAkBx4D,EAAM4kB,MAC9DwzC,YAAa,GAEzB,MAEYtpD,SAAQ9O,GAAS43D,EAAKa,SAASz4D,KAC/C43D,EAAKc,UAAU,CACXtxD,QAAQ,EAAIlC,EAAQ2xD,gBAAgB92D,KAAKqzB,QAASkkC,GAClD/1D,OAAQkE,OAAOlE,KAEfo2D,EAAiBh7B,QAAQ/6B,OAAS,GAClCg2D,EAAKc,UAAU,CACXtxD,QAAQ,EAAIlC,EAAQ2xD,gBAAgB92D,KAAKqzB,QAASikC,EAAgB,GAAG5wD,SACrElF,OAAQkE,OAAO0D,KAAKC,MAAMuuD,EAAiBh7B,QAAQ,GAAG15B,UAGvD,CACH20D,OACAn2D,IAAKk2D,EAAiBl2D,IACtBo2D,sBAER,CACA,0BAAMc,CAAqBtB,GACvB,MAAMuB,QAAmB74D,KAAKg2D,cACxBe,SAAkB1yD,QAAQoE,IAAI6uD,EAAgB5uD,KAAIqiB,GAAO/qB,KAAKy2D,aAAa1rC,EAAIrkB,QAASqkB,EAAIysC,iBAAgBC,OAClH7uC,QAAQkxB,IAAI,cAAeid,GAC3B,MAAMlrD,EAASxG,EAAayzD,UAAU34C,OAAO,CACzCxY,KAAM,MACN/C,KAAM0F,EAAY,MAEtB,IAAIstD,GAAmB,EAAI/B,EAAc/5B,aAAai7B,EAAUxzD,EAASgB,OAAOC,KAAKqH,GAAS,QAASgtD,GAEvG,OADAjwC,QAAQkxB,IAAI,yBAA0B8d,GAC/B,CACHpxD,QAASqyD,EACTvgB,QAAS5yC,OAAO0D,KAAKC,MAAMuuD,EAAiB10D,QAC5Cw1C,SAAUkf,EAAiBl2D,IAEnC,mBCnKJ,MAAM6I,EAAOzJ,EAAQ,OAWfi4D,EAAkB,CACtB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5D,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5D,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAG1C,SAASC,EAAkBr1D,GACzB3D,KAAKyK,KAAOF,EAAK0uD,aACjBj5D,KAAK2D,KAAOA,CACd,CAEAq1D,EAAiBruD,cAAgB,SAAwB9I,GACvD,OAAO,GAAKuH,KAAKC,MAAMxH,EAAS,GAAUA,EAAS,EAAd,CACvC,EAEAm3D,EAAiBpuD,UAAUC,UAAY,WACrC,OAAO7K,KAAK2D,KAAK9B,MACnB,EAEAm3D,EAAiBpuD,UAAUD,cAAgB,WACzC,OAAOquD,EAAiBruD,cAAc3K,KAAK2D,KAAK9B,OAClD,EAEAm3D,EAAiBpuD,UAAUE,MAAQ,SAAgBC,GACjD,IAAIC,EAIJ,IAAKA,EAAI,EAAGA,EAAI,GAAKhL,KAAK2D,KAAK9B,OAAQmJ,GAAK,EAAG,CAE7C,IAAI9H,EAAgD,GAAxC61D,EAAgBxkD,QAAQvU,KAAK2D,KAAKqH,IAG9C9H,GAAS61D,EAAgBxkD,QAAQvU,KAAK2D,KAAKqH,EAAI,IAG/CD,EAAUK,IAAIlI,EAAO,GACvB,CAIIlD,KAAK2D,KAAK9B,OAAS,GACrBkJ,EAAUK,IAAI2tD,EAAgBxkD,QAAQvU,KAAK2D,KAAKqH,IAAK,EAEzD,EAEAjL,EAAOD,QAAUk5D,yBCpCjB,MAAMrjC,EAAM,MAsCZ51B,EAAOD,QAAU,SAAsBi2B,EAAM7mB,GAC3C,IAAIoqB,EACAtD,EACAuD,EACA2/B,EACA1rC,EAEA4I,EAEAK,EACAC,EACAC,EAEAwiC,EACAtiC,EACAC,EACAsiC,EACAC,EACAC,EACAC,EACAx/B,EACAy/B,EAEArnD,EACA8mB,EACAz0B,EACAg1B,EAGAv5B,EAAOI,EAGX,MAAMK,EAAQq1B,EAAKr1B,MAEnB44B,EAAMvD,EAAK71B,QACXD,EAAQ81B,EAAK91B,MACb+1B,EAAOsD,GAAOvD,EAAK51B,SAAW,GAC9Bo5B,EAAOxD,EAAKz1B,SACZD,EAAS01B,EAAK11B,OACd64D,EAAM3/B,GAAQrqB,EAAQ6mB,EAAKx1B,WAC3BitB,EAAM+L,GAAQxD,EAAKx1B,UAAY,KAE/B61B,EAAO11B,EAAM01B,KAEbK,EAAQ/1B,EAAM+1B,MACdC,EAAQh2B,EAAMg2B,MACdC,EAAQj2B,EAAMi2B,MACdwiC,EAAWz4D,EAAMk2B,OACjBC,EAAOn2B,EAAMm2B,KACbC,EAAOp2B,EAAMo2B,KACbsiC,EAAQ14D,EAAMu2B,QACdoiC,EAAQ34D,EAAMw2B,SACdoiC,GAAS,GAAK54D,EAAMy2B,SAAW,EAC/BoiC,GAAS,GAAK74D,EAAM02B,UAAY,EAMhCqiC,EACA,EAAG,CACG3iC,EAAO,KACTD,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,EACRD,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,GAGViD,EAAOq/B,EAAMviC,EAAOyiC,GAEpBI,EACA,OAAS,CAKP,GAJAF,EAAKz/B,IAAS,GACdlD,KAAU2iC,EACV1iC,GAAQ0iC,EACRA,EAAMz/B,IAAS,GAAM,IACV,IAAPy/B,EAIFn5D,EAAOk5B,KAAiB,MAAPQ,MAEd,MAAS,GAALy/B,GAwKJ,IAAkB,KAAR,GAALA,GAAgB,CACxBz/B,EAAOq/B,GAAc,MAAPr/B,IAA8BlD,GAAS,GAAK2iC,GAAM,IAChE,SAASE,CACX,CACK,GAAS,GAALF,EAAS,CAEhB94D,EAAM+J,KArSD,MAsSL,MAAMgvD,CACR,CAEE1jC,EAAKt1B,IAAM,8BACXC,EAAM+J,KAAOkrB,EACb,MAAM8jC,CACR,CApLEtnD,EAAa,MAAP4nB,EACNy/B,GAAM,GACFA,IACE1iC,EAAO0iC,IACT3iC,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,GAEV3kB,GAAO0kB,GAAS,GAAK2iC,GAAM,EAC3B3iC,KAAU2iC,EACV1iC,GAAQ0iC,GAGN1iC,EAAO,KACTD,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,EACRD,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,GAEViD,EAAOs/B,EAAMxiC,EAAO0iC,GAEpBI,EACA,OAAS,CAMP,GALAH,EAAKz/B,IAAS,GACdlD,KAAU2iC,EACV1iC,GAAQ0iC,EACRA,EAAMz/B,IAAS,GAAM,MAEZ,GAALy/B,GA+HC,IAAkB,KAAR,GAALA,GAAgB,CACxBz/B,EAAOs/B,GAAc,MAAPt/B,IAA8BlD,GAAS,GAAK2iC,GAAM,IAChE,SAASG,CACX,CAEE5jC,EAAKt1B,IAAM,wBACXC,EAAM+J,KAAOkrB,EACb,MAAM8jC,CACR,CA1HE,GAZAxgC,EAAc,MAAPc,EACPy/B,GAAM,GACF1iC,EAAO0iC,IACT3iC,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,EACJA,EAAO0iC,IACT3iC,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,IAGZmC,GAAQpC,GAAS,GAAK2iC,GAAM,EAExBvgC,EAAO7C,EAAM,CACfL,EAAKt1B,IAAM,gCACXC,EAAM+J,KAAOkrB,EACb,MAAM8jC,CACR,CAMA,GAJA5iC,KAAU2iC,EACV1iC,GAAQ0iC,EAERA,EAAKjgC,EAAO2/B,EACRjgC,EAAOugC,EAAI,CAEb,GADAA,EAAKvgC,EAAOugC,EACRA,EAAK9iC,GACHh2B,EAAMq3B,KAAM,CACdhC,EAAKt1B,IAAM,gCACXC,EAAM+J,KAAOkrB,EACb,MAAM8jC,CACR,CA0BF,GAFAj1D,EAAO,EACPg1B,EAAc2/B,EACA,IAAVxiC,GAEF,GADAnyB,GAAQiyB,EAAQ+iC,EACZA,EAAKrnD,EAAK,CACZA,GAAOqnD,EACP,GACEn5D,EAAOk5B,KAAU4/B,EAAS30D,aACjBg1D,GACXh1D,EAAO+0B,EAAON,EACdO,EAAcn5B,CAChB,OAEG,GAAIs2B,EAAQ6iC,GAGf,GAFAh1D,GAAQiyB,EAAQE,EAAQ6iC,EACxBA,GAAM7iC,EACF6iC,EAAKrnD,EAAK,CACZA,GAAOqnD,EACP,GACEn5D,EAAOk5B,KAAU4/B,EAAS30D,aACjBg1D,GAEX,GADAh1D,EAAO,EACHmyB,EAAQxkB,EAAK,CACfqnD,EAAK7iC,EACLxkB,GAAOqnD,EACP,GACEn5D,EAAOk5B,KAAU4/B,EAAS30D,aACjBg1D,GACXh1D,EAAO+0B,EAAON,EACdO,EAAcn5B,CAChB,CACF,OAIA,GADAmE,GAAQmyB,EAAQ6iC,EACZA,EAAKrnD,EAAK,CACZA,GAAOqnD,EACP,GACEn5D,EAAOk5B,KAAU4/B,EAAS30D,aACjBg1D,GACXh1D,EAAO+0B,EAAON,EACdO,EAAcn5B,CAChB,CAEF,KAAO8R,EAAM,GACX9R,EAAOk5B,KAAUC,EAAYh1B,KAC7BnE,EAAOk5B,KAAUC,EAAYh1B,KAC7BnE,EAAOk5B,KAAUC,EAAYh1B,KAC7B2N,GAAO,EAELA,IACF9R,EAAOk5B,KAAUC,EAAYh1B,KACzB2N,EAAM,IACR9R,EAAOk5B,KAAUC,EAAYh1B,MAGnC,KACK,CACHA,EAAO+0B,EAAON,EACd,GACE54B,EAAOk5B,KAAUl5B,EAAOmE,KACxBnE,EAAOk5B,KAAUl5B,EAAOmE,KACxBnE,EAAOk5B,KAAUl5B,EAAOmE,KACxB2N,GAAO,QACAA,EAAM,GACXA,IACF9R,EAAOk5B,KAAUl5B,EAAOmE,KACpB2N,EAAM,IACR9R,EAAOk5B,KAAUl5B,EAAOmE,MAG9B,CAYF,KACF,CAeF,CAEA,KACF,CACF,OAAS80B,EAAMtD,GAAQuD,EAAO/L,GAG9Brb,EAAM2kB,GAAQ,EACdwC,GAAOnnB,EACP2kB,GAAQ3kB,GAAO,EACf0kB,IAAS,GAAKC,GAAQ,EAGtBf,EAAK71B,QAAUo5B,EACfvD,EAAKz1B,SAAWi5B,EAChBxD,EAAK51B,SAAYm5B,EAAMtD,EAAYA,EAAOsD,EAAZ,EAAmB,GAAKA,EAAMtD,GAC5DD,EAAKx1B,UAAag5B,EAAO/L,EAAaA,EAAM+L,EAAb,IAAqB,KAAOA,EAAO/L,GAClE9sB,EAAMm2B,KAAOA,EACbn2B,EAAMo2B,KAAOA,CAEf,gCCtVA9zB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ85D,6BAA0B,EAClC,MAAMz0D,EAAUrE,EAAQ,OACxB,SAAS+4D,EAAiB9yC,GACtB,GAAsB,IAAlBA,EAAOllB,OACP,MAAO,GACX,GAAsB,IAAlBklB,EAAOllB,OACP,OAAOklB,EAAO,GAEb,CACD,MAAM+yC,EAAiB,GACjBC,EAAchzC,EAAOhZ,QACrBisD,EAAaH,EAAiB9yC,GACpC,IAAK,IAAI7jB,KAAS62D,EACd,IAAK,IAAIE,KAAaD,EAClBF,EAAexyD,KAAK,CAACpE,GAAOiV,OAAO8hD,IAG3C,OAAOH,CACX,CACJ,CAiBA,MAAMI,EAAU,CACZ,WAAc,CAAElwD,IAAK,aAAcmwD,QAAQ,GAC3C,KAAQ,CAAEnwD,IAAK,OAAQmwD,QAAQ,GAC/B,UAAa,CAAEnwD,IAAK,YAAamwD,QAAQ,GACzC,gBAAiB,CAAEnwD,IAAK,CAAC,YAAa,MAAOmwD,QAAQ,GACrD,cAAe,CAAEnwD,IAAK,CAAC,OAAQ,SAAUmwD,QAAQ,GACjD,oBAAqB,CAAEnwD,IAAK,CAAC,OAAQ,eAAgBmwD,QAAQ,GAC7D,yBAA0B,CAAEnwD,IAAK,CAAC,OAAQ,YAAa,SAAUmwD,QAAQ,IAyN7Er6D,EAAQ85D,wBAvNR,MACI3rD,WAAAA,CAAYmsD,GACRp6D,KAAKo6D,WAAaA,EAClBp6D,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,2BAA6BtF,KAAKo6D,WAAa,MACxF,CAEA,4BAAMC,CAAuBD,EAAYE,EAAUzrD,GAC/C,MAAM0rD,EAAM3jC,OAAO4jC,aAAaC,QAAQL,GACxC,GAAW,MAAPG,EACA,OAAO,EACX,IAAI52D,EACJ,IACIA,EAAOgqB,KAAKwE,MAAMooC,EACtB,CACA,MAAOhpD,GAEH,OADAvR,KAAK6hB,OAAOgB,MAAM,cAAgBu3C,EAAa,0EACxC,CACX,CACA,IAAI7rD,EAAQvL,OAAOoc,KAAKzb,GAAM+E,KAAIqM,IAC9B,IAAIzO,EAAW3C,EAAKoR,GAEpB,OADAzO,EAASqB,KAAO2yD,EACTzrD,EAAQvI,EAAS,IAK5B,aAHMtG,KAAK6mB,QAAQtY,EAAM7F,KAAIgD,GAAQA,EAAKskD,eAC1Cp5B,OAAO4jC,aAAaE,WAAWN,GAC/Bp6D,KAAK6hB,OAAOwD,KAAK,cAAgB+0C,EAAa,6EACvC,CACX,CAEA,4BAAMO,CAAuBP,EAAYE,EAAUzrD,GAE/C,GAAsD,aAD9B+nB,OAAOgkC,UAAUC,aAC3BC,MAAKnsD,GAAOA,EAAIiD,OAASwoD,IAEnC,OADAp6D,KAAK6hB,OAAOwD,KAAK,0BAA4B+0C,EAAa,+BACnD,EAGX,IAAIW,EADJ/6D,KAAK6hB,OAAO0F,MAAM,0BAA4B6yC,EAAa,0BAE3D,IACIW,QAAW,IAAI12D,SAAQ,CAACC,EAASikB,KAC7B,MAAMkL,EAAUmD,OAAOgkC,UAAUI,KAAKZ,EAAY,GAClD3mC,EAAQwnC,QAAW1pD,GAAMgX,EAAOhX,GAChCkiB,EAAQynC,UAAa3pD,GAAMjN,EAAQiN,EAAE1F,OAAO8iB,OAAO,GAE3D,CACA,MAAOpd,GAEH,OADAvR,KAAK6hB,OAAOgB,MAAM,0BAA4Bu3C,EAAa,kCAAmC7oD,IACvF,CACX,CACAvR,KAAK6hB,OAAO0F,MAAM,0BAA4B6yC,EAAa,yBAC3D,IACI,MAAMz2D,QAAa,IAAIU,SAAQ,CAACC,EAASikB,KACrC,MAEM4yC,EAFKJ,EAAG14D,YAAY,QAAS,WAAY,CAAE+4D,WAAY,WAC5CC,YAAY,SACXC,SAClBH,EAAID,UAAazsD,GAAUnK,EAAQmK,EAAM5C,OAAO8iB,QAChDwsC,EAAIF,QAAWxsD,GAAU8Z,EAAO9Z,EAAM,IAE1CzO,KAAK6hB,OAAO0F,MAAM,0BAA4B6yC,EAAa,sBAC3D,IAAI7rD,EAAQ5K,EAAK+E,KAAIyW,IAAkB,IAAjB,GAAEpK,EAAE,KAAEpR,GAAMwb,EAE9B,OADAxb,EAAKgE,KAAO2yD,EACLzrD,EAAQlL,EAAK,IAcxB,OAZA3D,KAAK6hB,OAAO0F,MAAM,0BAA4B6yC,EAAa,0BACrDp6D,KAAK6mB,QAAQtY,EAAM7F,KAAIgD,GAAQA,EAAKskD,eAC1ChwD,KAAK6hB,OAAO0F,MAAM,0BAA4B6yC,EAAa,kBAE3DW,EAAGQ,QACHv7D,KAAK6hB,OAAO0F,MAAM,0BAA4B6yC,EAAa,kCACrD,IAAI/1D,SAAQ,CAACC,EAASikB,KACxB,MAAMqJ,EAAMgF,OAAOgkC,UAAUY,eAAepB,GAC5CxoC,EAAIspC,UAAY,IAAM52D,IACtBstB,EAAIqpC,QAAW1pD,GAAMgX,EAAOhX,EAAE,IAElCvR,KAAK6hB,OAAOwD,KAAK,0BAA4B+0C,EAAa,6EACnD,CACX,CACA,MAAO7oD,GAEH,OADAvR,KAAK6hB,OAAOgB,MAAM,0BAA4Bu3C,EAAa,mEAAoE7oD,IACxH,CACX,CACJ,CAEA,gBAAMkqD,CAAWC,EAAa7sD,GAC1B,IAAI8sD,GAAe,EACnB,IAAK,IAAIvB,KAAcsB,EACnB17D,KAAK6hB,OAAOwD,KAAK,qCAAsC+0C,SAC7Cp6D,KAAKq6D,uBAAuBD,EAAW,GAAIA,EAAW,GAAIvrD,KAChE8sD,GAAe,SACT37D,KAAK26D,uBAAuBP,EAAW,GAAIA,EAAW,GAAIvrD,KAChE8sD,GAAe,GAEvB,OAAOA,CACX,CACAC,kBAAAA,CAAmBC,EAAKC,GACpB,OAAO,IAAIz3D,SAAQ,CAACC,EAASikB,KACzB,MAAM1hB,EAAK7G,KAAK+6D,GAAG14D,YAAY,QAASy5D,EAAW,WAAa,YAAa,CAAEV,WAAY,WACrFD,EAAMU,EAAIh1D,EAAGw0D,YAAY,UAC/BF,EAAID,UAAazsD,GAAUnK,EAAQmK,EAAM5C,OAAO8iB,QAChDwsC,EAAIF,QAAWxsD,GAAU8Z,EAAO9Z,EAAM,GAE9C,CACAstD,qBAAAA,CAAsBF,EAAKC,GACvB,MACME,EAAOH,EADF77D,KAAK+6D,GAAG14D,YAAY,QAASy5D,EAAW,WAAa,YAAa,CAAEV,WAAY,WACvEC,YAAY,UAChC,OAAOh3D,QAAQoE,IAAIuzD,EAAKtzD,KAAIyyD,GAAO,IAAI92D,SAAQ,CAACC,EAASikB,KACrD4yC,EAAID,UAAazsD,GAAUnK,EAAQmK,EAAM5C,OAAO8iB,QAChDwsC,EAAIF,QAAWxsD,GAAU8Z,EAAO9Z,EAAM,MAE9C,CACAwtD,4BAAAA,CAA6BJ,EAAKK,GAC9B,OAAO,IAAI73D,SAAQ,CAACC,EAASikB,KACzB,MAAM1hB,EAAK7G,KAAK+6D,GAAG14D,YAAY,QAAS,WAAY,CAAE+4D,WAAY,WAC5De,EAAiBN,EAAIh1D,EAAGw0D,YAAY,UACpCe,EAAgB,GACtB,IAAK,IAAIC,KAAiBF,EACtBE,EAAcnB,UAAazsD,IACvB,MAAM6tD,EAAS7tD,EAAM5C,OAAO8iB,OAC5B,GAAc,MAAV2tC,EAAgB,CAChB,MAAMp5D,EAAQo5D,EAAOp5D,MACjBg5D,EAASh5D,IACTk5D,EAAc90D,KAAKpE,GACvBo5D,EAAOC,UACX,MAEIj4D,EAAQ83D,EACZ,EAEJC,EAAcpB,QAAWxsD,GAAU8Z,EAAO9Z,EAC9C,GAER,CACA,UAAMU,GACa,MAAXnP,KAAK+6D,KACL/6D,KAAK+6D,SAAW,IAAI12D,SAAQ,CAACC,EAASikB,KAClC,MAAMkL,EAAUmD,OAAOgkC,UAAUI,KAAKh7D,KAAKo6D,WAAY,GACvD3mC,EAAQ+oC,gBAAmB/tD,IACvB,MACM4sD,EADK5sD,EAAM5C,OAAO8iB,OACD8tC,kBAAkB,QAAS,CAAEC,QAAS,OAC7D15D,OAAOoc,KAAK86C,GAASnrD,SAAQ6C,IACzB,MAAMgvB,EAAQs5B,EAAQtoD,GACtBypD,EAAYsB,YAAY/qD,EAAMgvB,EAAM52B,IAAK,CAAEmwD,OAAQv5B,EAAMu5B,QAAS,GACpE,EAEN1mC,EAAQwnC,QAAW1pD,GAAMgX,EAAOhX,GAChCkiB,EAAQynC,UAAa3pD,GAAMjN,EAAQiN,EAAE1F,OAAO8iB,OAAO,IAG/D,CAQA,WAAMngB,CAAM6jD,GACR,GAAsB,IAAlBA,EAAOxwD,OACP,aAAa7B,KAAK48D,YAAY,IAClC,MAAMC,QAAgBx4D,QAAQoE,IAAI4pD,EAAO3pD,KAAIo0D,GAAe98D,KAAK48D,YAAYE,MACvEC,EAAY,IAAInyC,IAAIiyC,EAAQpF,QAClC,OAAOttD,MAAM3F,KAAKu4D,EACtB,CACA,iBAAMH,CAAYvK,GACd,GAAsB,IAAlBA,EAAOxwD,OACP,aAAa7B,KAAK47D,oBAAoBP,GAAgBA,EAAYC,WAAU,GAEhF,MACM0B,EADY3K,EAAO3pD,KAAIu0D,GAASA,EAAMjzD,MACZkzD,KAAK,MACrC,GAAsB,OAAlBF,EAAwB,CAExB,MAAMj2C,EAAS5c,MAAMi3B,QAAQixB,EAAO,GAAGnvD,OAASmvD,EAAO,GAAGnvD,MAAQ,CAACmvD,EAAO,GAAGnvD,OAI7E,aAHkBlD,KAAK+7D,uBAAuBV,GACnCt0C,EAAOre,KAAIiG,GAAO0sD,EAAYC,OAAO3sD,OAC7C,IACQ8oD,MACf,CACK,GAA8B,MAA1ByC,EAAQ8C,GAAwB,CAErC,MACMG,EAAwBtD,EADfxH,EAAO3pD,KAAIu0D,GAAS9yD,MAAMi3B,QAAQ67B,EAAM/5D,OAAS+5D,EAAM/5D,MAAQ,CAAC+5D,EAAM/5D,UAMrF,aAJmBlD,KAAK+7D,uBAAsBV,IAC1C,MAAMz6B,EAAQy6B,EAAYz6B,MAAMo8B,GAChC,OAAOG,EAAsBz0D,KAAI00D,GAAcx8B,EAAM06B,OAAO8B,IAAY,IACzE,IACS3F,MAChB,CACK,CAEDz3D,KAAK6hB,OAAOkH,KAAK,4DAA8Di0C,EAAgB,kBAAmB3K,GAClH,MAAMgL,EAAgChL,EA7MjC3pD,KAAIiG,IACN,CACH3E,IAAK2E,EAAI3E,IACT+c,OAAQ5c,MAAMi3B,QAAQzyB,EAAIzL,OAAS,IAAI0nB,IAAIjc,EAAIzL,OAAS,IAAI0nB,IAAI,CAACjc,EAAIzL,YA2MrE,aAAalD,KAAKi8D,8BAA6BZ,GAAe,CAACA,EAAYiC,gBAAgB3uD,GAvNvG,SAAiB4uD,EAAY3uD,GACzB,IAAK,IAAI4uD,KAAaD,EAAY,CAC9B,IAAIr6D,EAAQ0L,EAAI4uD,EAAUxzD,KAC1B,IAAKwzD,EAAUz2C,OAAOuF,IAAIppB,GACtB,OAAO,CACf,CACA,OAAO,CACX,CAgN+Gu6D,CAAQJ,EAAe1uD,IAC9H,CACJ,CACA,YAAM+Y,CAAOg2C,SACH19D,KAAK47D,oBAAmB+B,GAASA,EAAMv2C,OAAOs2C,EAAO3oD,MAAK,GAC3D6N,OAAM,IAAM,MACrB,CACA,eAAMgE,CAAU5O,GACO,IAAfA,EAAInW,cAEF7B,KAAK+7D,uBAAsB4B,GAAS3lD,EAAItP,KAAIg1D,GACvCC,EAAMv2C,OAAOs2C,EAAO3oD,QAC3B,EACR,CACA,UAAMuS,CAAKo2C,SACD19D,KAAK47D,oBAAmB+B,GAASA,EAAMvyD,IAAIsyD,KAAS,EAC9D,CACA,aAAM72C,CAAQ7O,GACS,IAAfA,EAAInW,cAEF7B,KAAK+7D,uBAAsB4B,GAAS3lD,EAAItP,KAAIg1D,GACvCC,EAAMvyD,IAAIsyD,OACjB,EACR,oIClQJ,MAAAtgB,EAAAt8C,EAAA,OAcA,SAAgB+7C,EAAa5iB,GAC3B,MAAM,GAAE6iB,EAAE,IAAE8gB,EAAKC,qBAAsBC,EAAKC,eAAgBC,GAAO/jC,GAC7D,WAAEgkC,EAAU,cAAEC,EAAa,UAAEC,EAAS,EAAE5hD,GAAM0d,GAEpD,EAAAmjB,EAAAyG,eAAc/G,GACd,IAAK,MAAM9xC,IAAK,CAAC,IAAK,aAAc,iBAClC,GAAuB,kBAAZivB,EAAKjvB,KAAoBmkB,OAAOivC,cAAcnkC,EAAKjvB,IAC5D,MAAM,IAAInH,MAAM,2BAA2BmH,KAAKivB,EAAKjvB,cAAcivB,EAAKjvB,OAI5E,IAAKb,MAAMi3B,QAAQw8B,IAAQA,EAAI/7D,SAAW0a,EAAG,MAAM,IAAI1Y,MAAM,8BAC7D,MAAMw6D,EAAOT,EAAIl1D,KAAK41D,IACpB,IAAKn0D,MAAMi3B,QAAQk9B,IAAWA,EAAOz8D,SAAW0a,EAC9C,MAAM,IAAI1Y,MAAM,4BAA4By6D,KAC9C,OAAOA,EAAO51D,KAAKsC,IACjB,GAAiB,kBAANA,EAAgB,MAAM,IAAInH,MAAM,6BAA6BmH,KACxE,OAAO8xC,EAAGpzC,OAAOsB,EAAE,GACnB,IAGJ,QAAYlJ,IAARg8D,GAAoC,mBAARA,EAC9B,MAAM,IAAIj6D,MAAM,gDAAgDi6D,KAElE,GAAIG,EAAa,IAAM,EAAG,MAAM,IAAIp6D,MAAM,oCAAoCo6D,KAC9E,MAAMM,EAASN,EAAaC,EAE5B,IAAK/zD,MAAMi3B,QAAQ48B,IAAOA,EAAGn8D,SAAW08D,EACtC,MAAM,IAAI16D,MAAM,mCAClB,MAAMk6D,EAAiBC,EAAGt1D,KAAKs1D,IAC7B,IAAK7zD,MAAMi3B,QAAQ48B,IAAOA,EAAGn8D,SAAW0a,EACtC,MAAM,IAAI1Y,MAAM,mCAAmCm6D,KACrD,OAAOA,EAAGt1D,KAAKsC,IACb,GAAiB,kBAANA,IAAmB8xC,EAAGx4B,QAAQtZ,GACvC,MAAM,IAAInH,MAAM,iCAAiCmH,KACnD,OAAO8xC,EAAGpzC,OAAOsB,EAAE,GACnB,IAGJ,IAAKmzD,IAAc,CAAC,EAAG,EAAG,GAAGre,SAASqe,GACpC,MAAM,IAAIt6D,MAAM,4BAA4Bs6D,KAC9C,MAAMK,EAAa94D,OAAOy4D,GAC1B,IAAIM,EAAUluD,IAAc,EAAA6sC,EAAAshB,OAAM5hB,EAAIvsC,EAAGiuD,GAKzC,OAHkB,IAAdL,EAAiBM,EAAUluD,GAAcusC,EAAG9b,IAAI8b,EAAG6hB,KAAKpuD,GAAIA,GACzC,IAAd4tD,IAAiBM,EAAUluD,GAAcusC,EAAG9b,IAAI8b,EAAG6hB,KAAK7hB,EAAG6hB,KAAKpuD,IAAKA,IAEvEvN,OAAO8J,OAAO,IAAKmtB,EAAMskC,SAAQE,SAAQV,iBAAgBH,IAAKS,GACvE,CAhDAv+D,EAAAA,aAAA+8C,EAkDA/8C,EAAAA,eAAA,SAA+Bk+D,EAAczhD,GAC3C,GAAiB,kBAANA,EAAgB,MAAM,IAAI1Y,MAAM,mCAC3C,IAAKsG,MAAMi3B,QAAQ48B,IAAOA,EAAGn8D,OAAS0a,EAAG,MAAM,IAAI1Y,MAAM,oCACzD,MAAM+tB,EAAM,GACZ,IAAIiiB,EAAM,GACV,IAAK,IAAI7oC,EAAI,EAAGA,EAAIgzD,EAAGn8D,OAAQmJ,IAC7B6oC,EAAIvsC,KAAK02D,EAAGhzD,IACR6oC,EAAIhyC,SAAW0a,IACjBqV,EAAItqB,KAAKusC,GACTA,EAAM,IAGV,OAAOjiB,CACT,EAEA9xB,EAAAA,SAAA,SAAyBm6B,GACvB,MAAM2kC,EAAQ/hB,EAAa5iB,IACrB,GAAE6iB,EAAE,IAAE8gB,EAAG,eAAEG,EAAc,OAAEQ,EAAM,cAAEL,EAAa,OAAEO,EAAM,EAAEliD,GAAMqiD,EAChEC,EAAiBD,EAAMX,WAAa,EACpCa,EAAaF,EAAMf,qBAAuBthD,EAAI,EAAI,EAClDwiD,EAAgBA,CAACh4C,EAAkBi4C,EAAiBC,KACxDl4C,EAASA,EAAOre,KAAI,CAACsC,EAAG4F,IAAMksC,EAAGv6C,IAAIyI,EAAG+yD,EAAekB,GAAKruD,MAExDouD,EAAQj4C,EAASA,EAAOre,KAAKsC,GAAMyzD,EAAOzzD,KACzC+b,EAAO+3C,GAAcL,EAAO13C,EAAO+3C,IAExC/3C,EAAS62C,EAAIl1D,KAAKsC,GAAMA,EAAE/B,QAAO,CAAC8hB,EAAK/f,EAAG4F,IAAMksC,EAAGv6C,IAAIwoB,EAAK+xB,EAAGoiB,KAAKl0D,EAAG+b,EAAOnW,MAAMksC,EAAG0H,SAGnF2a,EAAe,SAAsBp4C,GACzC,IAAK5c,MAAMi3B,QAAQra,IAAWA,EAAOllB,SAAW0a,EAC9C,MAAM,IAAI1Y,MAAM,iEAAiE0Y,MACnFwK,EAASA,EAAOre,KAAKsC,IACnB,GAAiB,kBAANA,EAAgB,MAAM,IAAInH,MAAM,yBAAyBmH,aAAaA,MACjF,OAAO8xC,EAAGpzC,OAAOsB,EAAE,IAErB,IAAIyJ,EAAQ,EAEZ,IAAK,IAAIzJ,EAAI,EAAGA,EAAI6zD,EAAgB7zD,IAAK+b,EAASg4C,EAAch4C,GAAQ,EAAMtS,KAE9E,IAAK,IAAIzJ,EAAI,EAAGA,EAAIkzD,EAAelzD,IAAK+b,EAASg4C,EAAch4C,GAAQ,EAAOtS,KAE9E,IAAK,IAAIzJ,EAAI,EAAGA,EAAI6zD,EAAgB7zD,IAAK+b,EAASg4C,EAAch4C,GAAQ,EAAMtS,KAE9E,GAAIA,IAAU8pD,EACZ,MAAM,IAAI16D,MAAM,gDAAgD4Q,YAAgB8pD,KAClF,OAAOx3C,CACT,EAGA,OADAo4C,EAAapB,eAAiBA,EACvBoB,CACT,gSC1FAr/D,EAAAA,UAAA,SAA0B8E,EAAao8C,GAA+B,IAAZoe,EAAIx9D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACxDmkD,EAAMsZ,EAAAC,UAAKp7D,KAAKU,EAAMo8C,GAC1B,GAAIoe,IAASG,EAAQxZ,GAAM,CACzB,MAAM9D,EAAe,IAAI3xB,WAAW,IACpC,IAAIlG,EAAU,EACd,MAAQm1C,EAAQxZ,IAGd,GAFA9D,EAAa3rC,IAAIkpD,EAAAC,MAAMt/C,OAAOiK,MAC9B27B,EAAMsZ,EAAAC,UAAKp7D,KAAKU,EAAMo8C,EAAY,CAAEiB,iBAChC73B,EAAU,WAAY,MAAM,IAAIvmB,MAAM,0CAE9C,CACA,OAAOkiD,EAAItF,eACb,EASA3gD,EAAAA,eAAA,SAA+B4/D,EAAY/3D,GACzC,MAAMwK,EAAMutD,EAAI79D,OAChB,GAAI8F,IAASg4D,EAAKC,MAAO,CACvB,GAAY,KAARztD,EAAY,MAAM,IAAItO,MAAM,4BAEhC,OADA05C,EAAM0C,QAAQyf,GACPA,CACT,CAAO,GAAI/3D,IAASg4D,EAAKE,QAAS,CAChC,GAAY,KAAR1tD,EAAY,MAAM,IAAItO,MAAM,gCAEhC,OADAw7D,EAAAQ,QAAQxjC,MAAMyjC,OAAOT,EAAAQ,QAAQxjC,MAAMgiB,gBAAgBqhB,IAC5CA,CACT,CACE,MAAM,IAAI77D,MAAM,mBAEpB,EAEA/D,EAAAA,SAAAigE,EAQAjgE,EAAAA,oBAAA,SAAoCojD,GAAoD,IAApC8c,EAAAp+D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAoB,IAAI0uB,WAC1E,MAAMilB,EAAI8pB,EAAAQ,QAAQxjC,MACZ4jC,EAAU1qB,EAAE8I,gBAAgB6E,GAC5BxwC,EAAI6qC,EAAMsF,eAAeod,GAEzBC,EAASxtD,EAAEurC,WAAagiB,EAAU1qB,EAAEl6B,KAAK4kD,EAASljB,GAGlDxgC,EAAIwjD,EAFCxqB,EAAE4qB,aAAaztD,GAEHstD,GAEvB,OAAOzqB,EAAEsJ,gBAAgBtJ,EAAEl6B,IAAI6kD,EAAS3jD,EAAGwgC,GAAc,GAC3D,EAEAj9C,EAAAA,mBAAA,SAAmCsgE,EAAe5uC,GAChD,MAAM+jB,EAAI8pB,EAAAQ,QAAQxjC,MACZ9f,EAAIwjD,EAASK,EAAQ5uC,GAErB6uB,EADI9K,EAAEuqB,OAAOvqB,EAAE8I,gBAAgB+hB,IACzB79D,IAAIg7C,EAAMsF,eAAetmC,IAC/B8jD,EAAShgB,EAAEpC,WAAa,EAAI,EAClC,MAAO,CAAC1I,EAAE4qB,aAAa9f,GAAIggB,EAC7B,EA+BAvgE,EAAAA,aAAA,SAA6B2Q,EAAUS,GACrC,IAAKswC,EAAQ/wC,KAAO+wC,EAAQtwC,GAAI,MAAM,IAAIrN,MAAM,4BAA4B4M,cAAcS,KAE1F,MAAMiB,EAAM/I,KAAKsI,IAAIjB,EAAE5O,OAAQqP,EAAErP,QACjC,IAAK,IAAImJ,EAAI,EAAGA,EAAImH,EAAKnH,IAAK,GAAIyF,EAAEzF,IAAMkG,EAAElG,GAAI,OAAO5B,KAAKlF,KAAKuM,EAAEzF,GAAKkG,EAAElG,IAC1E,OAAO5B,KAAKlF,KAAKuM,EAAE5O,OAASqP,EAAErP,OAChC,EAhIA,MAAAw9D,EAAAv+D,EAAA,OACAw/D,EAAAx/D,EAAA,OACAy/D,EAAAz/D,EAAA,OAW2CkC,OAAAA,eAAAA,EAAAA,SAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAXlC20D,EAAAC,MAAM,IACf,MAAAhB,EAAA1+D,EAAA,OAIMy8C,EAAQ8hB,EAAAC,UAAKhiB,gBACbP,EAAcsiB,EAAAC,UAAKljB,MAAM7rC,EAEzBixC,EAA2Cge,EAAAnjC,MAAYmlB,QAG3B1hD,EAAAA,QAAA0hD,EAFlC,MAAMn3C,EAAuDm1D,EAAAnjC,MAAYhyB,YAEhEvK,EAAAA,YAAAuK,EADT,MAAMo2D,EAAwDjB,EAAAnjC,MAAYokC,WACpD3gE,EAAAA,WAAA2gE,EAET3gE,EAAAA,QAAWW,IAAgC,EAAA6/D,EAAAI,YAAU,EAAAH,EAAAC,QAAO//D,IAC5DX,EAAAA,SAAW,kBAAuC,EAAAygE,EAAAC,SAAO,EAAAD,EAAAC,QAAOn2D,KAAYzI,YAAU,EACtF9B,EAAAA,sBAA0Cu/D,EAAAQ,QAAQxjC,MAAM4kB,iBACxDnhD,EAAAA,WAAau/D,EAAAQ,QAAQjd,aACrB9iD,EAAAA,SACXu/D,EAAAC,UAAK1c,aAMP,MAAM2c,EAAWxZ,GAAkCA,EAAIl1C,EAAIksC,EAAc,GAkBzE,IAAY4iB,EAmBZ,SAAgBI,EAAStvD,EAAUS,GACjC,MAAMqkC,EAAI8pB,EAAAQ,QAAQxjC,MACZ9f,EAAIg5B,EAAEorB,WAAW,WAAYlwD,EAAGS,GAChC0vD,EAAKrrB,EAAE8I,gBAAgB9hC,GAC7B,GAAIqkD,GAAM7jB,EAAa,MAAM,IAAIl5C,MAAM,iCACvC,OAAO+8D,CACT,CA5Ba9gE,EAAAA,YAAmCu/D,EAAAQ,QAAQ37D,KAC3CpE,EAAAA,WAA8Cu/D,EAAAQ,QAAQxjC,MAAMskC,WAEzE,SAAYhB,GACVA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,oBACD,CAHD,CAAYA,IAAI7/D,EAAAA,KAAJ6/D,EAAI,KAuDH7/D,EAAAA,yBAAiC,EAAAygE,EAAAC,QAAOjjB,EAAMvtC,KAAK8yC,YAAW,IAQ9DhjD,EAAAA,QAAuB,CAClC+gE,OAAQ,KACRC,WAAY,EACZC,WAAY,EACZC,IAAK,KAGMlhE,EAAAA,aAA4B,CACvC+gE,OAAQ,KACRC,WAAY,IACZC,WAAY,IACZC,IAAK,iCCrHPh+D,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmhE,cAAW,EACnB,MAAMA,EACF,kBAAOC,CAAYv9D,GACf,GAAyC,MAArCs9D,EAASE,cAAcx9D,EAAKgE,MAC5B,OAAO,IAAIs5D,EAASE,cAAcx9D,EAAKgE,MAAMhE,EAErD,EAEJ7D,EAAQmhE,SAAWA,EACnBA,EAASE,cAAgB,CAAC,gCCV1Bn+D,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQshE,sBAAmB,EAC3B,MAAMn8D,EAASnE,EAAQ,OACjBugE,EAA0BvgE,EAAQ,OAClCoE,EAAapE,EAAQ,OACrBqE,EAAUrE,EAAQ,OA8BxB,MAAMsgE,UAAyBn8D,EAAOg8D,SAClC,cAAOK,CAAQp+D,GACX,MAAMyL,GAAM,EAAIxJ,EAAQc,UAAU/C,GAClC,MAAO,CACH2C,SAAU8I,GAAO,IACjB4yD,OAlCS,SAkCA5yD,GACT6yD,MAlCQ,SAkCA7yD,GACR8yD,WAlCY,SAkCC9yD,GAErB,CACA+yD,QAAAA,GACI,OAAQ1hE,KAAK6F,UAAY,MACpB7F,KAAKuhE,OAzCG,GAyCqB,KAC7BvhE,KAAKwhE,MAzCE,GAyCoB,KAC3BxhE,KAAKyhE,WAzCM,GAyCyB,GAC7C,CACAxzD,WAAAA,CAAY0zD,EAAeC,EAASz5D,EAAO05D,EAAeC,EAAcP,EAAQC,EAAOC,EAAY57D,EAAUk8D,EAAWC,EAAYxgE,EAAQygE,EAAUC,EAAiBC,EAAeC,EAAMC,EAAW3O,GA6CnM,GA5CAttD,QACe,MAAXw7D,GAA4B,MAATz5D,GAAkC,MAAjB05D,GAAyC,MAAhBC,GACnD,MAAVP,GAA2B,MAATC,GAA+B,MAAdC,GAAkC,MAAZ57D,GAAiC,MAAbk8D,GAAmC,MAAdC,GACxF,MAAVxgE,GAA8B,MAAZygE,GAAuC,MAAnBC,GAA4C,MAAjBC,GACjEniE,KAAKsiE,QAAUX,EACf3hE,KAAK4hE,QAAUA,EACf5hE,KAAKmI,MAAQA,EACbnI,KAAK6hE,cAAgBA,EACrB7hE,KAAK8hE,aAAeA,EACpB9hE,KAAKuhE,OAASA,EACdvhE,KAAKwhE,MAAQA,EACbxhE,KAAKyhE,WAAaA,EAClBzhE,KAAK6F,SAAWA,EAChB7F,KAAK+hE,UAAYA,EACjB/hE,KAAKgiE,WAAaA,EAClBhiE,KAAKwB,OAASA,EACdxB,KAAKiiE,SAAWA,EAChBjiE,KAAKkiE,gBAAkBA,EACvBliE,KAAKmiE,cAAgBA,EACrBniE,KAAKoiE,KAAOA,EACZpiE,KAAKqiE,UAAYA,EACjBriE,KAAK0zD,cAAgBA,IAGrB1zD,KAAKsiE,QAAUX,EAAcW,QAC7BtiE,KAAK4hE,QAAUD,EAAcC,QAC7B5hE,KAAKmI,MAAQw5D,EAAcx5D,MAC3BnI,KAAK6hE,cAAgBF,EAAcE,cACnC7hE,KAAK8hE,aAAeH,EAAcG,aAClC9hE,KAAKuhE,OAASI,EAAcJ,OAC5BvhE,KAAKwhE,MAAQG,EAAcH,MAC3BxhE,KAAKyhE,WAAaE,EAAcF,WAChCzhE,KAAK6F,SAAqC,MAA1B87D,EAAc97D,SAAmB,KAAOH,OAAOi8D,EAAc97D,UAC7E7F,KAAK+hE,UAAYJ,EAAcI,UAC/B/hE,KAAKgiE,WAAaL,EAAcK,WAChChiE,KAAKwB,OAAiC,MAAxBmgE,EAAcngE,OAAiB,KAAOkE,OAAOi8D,EAAcngE,QACzExB,KAAKiiE,SAAWN,EAAcM,SAC9BjiE,KAAKkiE,gBAAmD,MAAjCP,EAAcO,gBAA0B,KAAOx8D,OAAOi8D,EAAcO,iBAC3FliE,KAAKmiE,cAA+C,MAA/BR,EAAcQ,cAAwB,KAAOz8D,OAAOi8D,EAAcQ,eACvFniE,KAAKoiE,KAAOT,EAAcS,KAC1BpiE,KAAKqiE,UAAYV,EAAcU,UAC/BriE,KAAK0zD,cAAgBiO,EAAcjO,eAGnC1zD,KAAK0zD,cAAc7xD,OAAS,EAC5B,MAAM,IAAIgC,MAAM,yCACxB,CACA6pD,UAAAA,GACI,OAAO1tD,KAAKsiE,OAChB,CACAC,UAAAA,CAAWC,GACPxiE,KAAKsiE,QAAUE,EACfxiE,KAAKwhE,OAAQ,CACjB,CACArpB,UAAAA,GACI,OAAOn4C,KAAK4hE,OAChB,CACAa,UAAAA,CAAWC,GACP1iE,KAAK4hE,QAAUc,EACf1iE,KAAKwhE,OAAQ,EACbxhE,KAAKuhE,QAAS,EACdvhE,KAAKyhE,YAAa,CACtB,CACAzR,SAAAA,GACI,MAAO,CACHroD,KAAM,OACN26D,QAAStiE,KAAKsiE,QACdV,QAAS5hE,KAAK4hE,QACdz5D,MAAOnI,KAAKmI,MACZ05D,cAAe7hE,KAAK6hE,cACpBC,aAAc9hE,KAAK8hE,aACnBP,OAAQvhE,KAAKuhE,OACbC,MAAOxhE,KAAKwhE,MACZC,WAAYzhE,KAAKyhE,WACjB57D,SAA2B,MAAjB7F,KAAK6F,SAAmB,KAAO7F,KAAK6F,SAASpB,SAAS,IAChEs9D,UAAW/hE,KAAK+hE,UAChBC,WAAYhiE,KAAKgiE,WACjBxgE,OAAuB,MAAfxB,KAAKwB,OAAiB,KAAOxB,KAAKwB,OAAOiD,SAAS,IAC1Dw9D,SAAUjiE,KAAKiiE,SACfC,gBAAyC,MAAxBliE,KAAKkiE,gBAA0B,KAAOliE,KAAKkiE,gBAAgBz9D,SAAS,IACrF09D,cAAqC,MAAtBniE,KAAKmiE,cAAwB,KAAOniE,KAAKmiE,cAAc19D,SAAS,IAC/E29D,KAAMpiE,KAAKoiE,KACXC,UAAWriE,KAAKqiE,UAChB3O,cAAe1zD,KAAK0zD,cAE5B,CACAld,SAAAA,GACI,OAAOx2C,KAAKwB,MAChB,CACAi1C,QAAAA,GACI,OAAOz2C,KAAKmI,KAChB,CACAw6D,OAAAA,CAAQx6D,GACJ,OAAOnI,KAAKmI,MAAMyM,gBAAkBzM,EAAMyM,aAC9C,CACAlN,OAAAA,GACI,OAAO1H,KAAKoiE,IAChB,CACAQ,SAAAA,GACI,OAAOvB,EAAwBwB,sBAAsBD,UAAU5iE,KACnE,CACA8iE,OAAAA,GACI,OAAO9iE,KAAKwhE,KAChB,CACAuB,QAAAA,GACI,OAAO/iE,KAAKuhE,MAChB,CACAvyD,aAAAA,GACI,MAAMg0D,EAAc99D,EAAW+9D,MAAMC,QAAQ,KAAOljE,KAAKwB,OAAOiD,SAAS,KACnE0+D,EAAuBj+D,EAAW+9D,MAAMC,QAAQ,KAAOljE,KAAKkiE,gBAAgBz9D,SAAS,KACrF2+D,EAAqBl+D,EAAW+9D,MAAMC,QAAQ,KAAOljE,KAAKmiE,cAAc19D,SAAS,KACvF,IAAIiK,EAAaxJ,EAAWN,KAAKoB,8BAA8B,CAC3DhG,KAAKsiE,QACLtiE,KAAK4hE,QACL5hE,KAAKmI,MACLnI,KAAK6hE,cACL7hE,KAAK8hE,aACL9hE,KAAK0hE,WACL1hE,KAAK+hE,UACL/hE,KAAKgiE,WACLgB,EAAYK,IACZL,EAAYM,KACZtjE,KAAKiiE,SACLkB,EAAqBE,IACrBF,EAAqBG,KACrBF,EAAmBC,IACnBD,EAAmBE,SAzJCC,EA0JMvjE,KAAK0zD,cA1JJxzC,EA0JmB,GAzJtDA,EAAK5Y,MAAK,EAAInC,EAAQgmD,OAAOoY,EAAM1hE,SACnC0hE,EAAMx0D,SAAS+H,IACXoJ,EAAK5Y,KAAKwP,EAAKpQ,SACfwZ,EAAK5Y,KAAKwP,EAAK0sD,YACftjD,EAAK5Y,MAAK,EAAInC,EAAQgmD,OAAOr0C,EAAK2sD,SAAS5hE,SAC3Cqe,EAAK5Y,QAAQwP,EAAK2sD,SAAS,IAExBvjD,GAkJmDxS,MAAM,KA1JpE,IAAgC61D,EAAOrjD,EA8J/B,OAFIxR,EAAW7F,WAAW,QACtB6F,EAAaA,EAAWhB,MAAM,IAC3BgB,EAAW2c,SAAS,GAAI,IACnC,CACA4hC,YAAAA,GACI,IAAIroD,EAAO5E,KAAK+hE,UAGhB,OAFIn9D,EAAKiE,WAAW,QAChBjE,EAAOA,EAAK8I,MAAM,IACf9I,EAAKymB,SAAS,GAAI,IAC7B,CACAgkC,WAAAA,GACI,OAAOrvD,KAAK6F,QAChB,CACA69D,oBAAAA,GACI,OAAsB,MAAlB1jE,KAAKqiE,WAEoB,IAAzBriE,KAAKqiE,UAAUxgE,OADR,KAGJsJ,SAASnL,KAAKqiE,UAAU30D,MAAM,IAAK,GAC9C,CACAi2D,YAAAA,GACI,OAAsB,MAAlB3jE,KAAKqiE,WAEoB,IAAzBriE,KAAKqiE,UAAUxgE,OADR,KAGJ6D,OAAO,KAAO1F,KAAKqiE,UAAU30D,MAAM,GAAI,IAClD,CACAk2D,cAAAA,GACI,OAAsB,MAAlB5jE,KAAKqiE,WAEoB,IAAzBriE,KAAKqiE,UAAUxgE,OADR,KAGJ7B,KAAKqiE,UAAU30D,MAAM,EAAG,GACnC,CACAm2D,YAAAA,GACI,OAAO7jE,KAAKqiE,SAChB,CACAyB,YAAAA,CAAazB,GACTriE,KAAKqiE,UAAYA,CACrB,CACApqB,kBAAAA,GACI,OAAOj4C,KAAKkiE,eAChB,CACA6B,gBAAAA,GACI,OAAO/jE,KAAKmiE,aAChB,CACAjqB,eAAAA,GACI,OAAOl4C,KAAKmiE,cAAgBniE,KAAKkiE,gBAAkBliE,KAAKkiE,gBAAkBliE,KAAKmiE,aACnF,CACA6B,eAAAA,GACI,OAAOhkE,KAAKiiE,QAChB,CACAgC,cAAAA,CAAe97D,GAGX,OAFKA,EAAMU,WAAW,QAClBV,EAAQ,KAAOA,IACZ,EAAIhD,EAAQgmD,OAAOnrD,KAAKiiE,aAAc,EAAI98D,EAAQgmD,OAAOhjD,EACpE,CACA+7D,SAAAA,CAAUx9D,GAGN,OAFKA,EAAQmC,WAAW,QACpBnC,EAAU,KAAOA,IACd,EAAIvB,EAAQgmD,OAAOnrD,KAAK4hE,YAAa,EAAIz8D,EAAQgmD,OAAOzkD,EACnE,CACAy9D,SAAAA,CAAUz9D,GAGN,OAFKA,EAAQmC,WAAW,QACpBnC,EAAU,KAAOA,IACd,EAAIvB,EAAQgmD,OAAOnrD,KAAKsiE,YAAa,EAAIn9D,EAAQgmD,OAAOzkD,EACnE,CACA09D,eAAAA,CAAgB19D,GAGZ,OAFKA,EAAQmC,WAAW,QACpBnC,EAAU,KAAOA,IACd,EAAIvB,EAAQgmD,OAAOnrD,KAAK6hE,kBAAmB,EAAI18D,EAAQgmD,OAAOzkD,EACzE,CACAD,cAAAA,CAAeC,GAGX,OAFKA,EAAQmC,WAAW,QACpBnC,EAAU,KAAOA,IACd,EAAIvB,EAAQgmD,OAAOnrD,KAAK8hE,iBAAkB,EAAI38D,EAAQgmD,OAAOzkD,EACxE,CACA29D,WAAAA,CAAY1gE,GAGR,OAFKA,EAAKkF,WAAW,QACjBlF,EAAO,KAAOA,IACX,EAAIwB,EAAQgmD,OAAOnrD,KAAK+hE,cAAe,EAAI58D,EAAQgmD,OAAOxnD,EACrE,CACA4c,MAAAA,CAAO8mC,GACH,OAAOA,EAAMib,QAAQ1tD,gBAAkB5U,KAAKsiE,QAAQ1tD,eAChDyyC,EAAMua,QAAQhtD,gBAAkB5U,KAAK4hE,QAAQhtD,eAC7CyyC,EAAMl/C,MAAMyM,gBAAkB5U,KAAKmI,MAAMyM,eACzCyyC,EAAMwa,cAAcjtD,gBAAkB5U,KAAK6hE,cAAcjtD,eACzDyyC,EAAMya,aAAaltD,gBAAkB5U,KAAK8hE,aAAaltD,eACvDyyC,EAAMma,QAAUxhE,KAAKwhE,OACrBna,EAAMka,SAAWvhE,KAAKuhE,QACtBla,EAAMoa,aAAezhE,KAAKyhE,YAC1BzhE,KAAK6F,WAAawhD,EAAMxhD,UACxBwhD,EAAM0a,UAAUntD,gBAAkB5U,KAAK+hE,UAAUntD,eACjDyyC,EAAM2a,WAAWptD,gBAAkB5U,KAAKgiE,WAAWptD,eACnDyyC,EAAM7lD,SAAWxB,KAAKwB,QACtB6lD,EAAM6a,kBAAoBliE,KAAKkiE,iBAC/B7a,EAAM8a,gBAAkBniE,KAAKmiE,aACrC,CACAmC,cAAAA,GACI,MAAO,CACHhC,QAAStiE,KAAKsiE,QACdV,QAAS5hE,KAAK4hE,QACdz5D,MAAOnI,KAAKmI,MACZo8D,eAAgBvkE,KAAK6hE,cACrB2C,cAAexkE,KAAK8hE,aACpB3rC,MAAOn2B,KAAK0hE,WACZ+C,WAAYzkE,KAAK+hE,UACjB2C,YAAa1kE,KAAKgiE,WAClBxgE,OAAQ0D,EAAW+9D,MAAMC,SAAQ,EAAI/9D,EAAQc,UAAUjG,KAAKwB,SAC5DmjE,UAAW3kE,KAAKiiE,SAChB2C,iBAAkB1/D,EAAW+9D,MAAMC,SAAQ,EAAI/9D,EAAQc,UAAUjG,KAAKkiE,kBACtE2C,eAAgB3/D,EAAW+9D,MAAMC,SAAQ,EAAI/9D,EAAQc,UAAUjG,KAAKmiE,gBACpE2C,eAAgB9kE,KAAK0zD,cAE7B,CACA,8BAAOqR,CAAwB7kD,EAAM8kD,GACjC,MAAM1C,GAAU,EAAIn9D,EAAQgmD,OAAOjrC,EAAKnS,SAClC6zD,GAAU,EAAIz8D,EAAQgmD,OAAOjrC,EAAKnS,SAClC5F,GAAQ,EAAIhD,EAAQgmD,OAAOjrC,EAAKnS,SAChC8zD,GAAgB,EAAI18D,EAAQgmD,OAAOjrC,EAAKnS,SACxC+zD,GAAe,EAAI38D,EAAQgmD,OAAOjrC,EAAKnS,UACvC,OAAEwzD,EAAM,MAAEC,EAAK,WAAEC,EAAU,SAAE57D,GAAau7D,EAAiBE,QAAQphD,EAAKnS,SACxEg0D,GAAY,EAAI58D,EAAQgmD,OAAOjrC,EAAKnS,SACpCi0D,GAAa,EAAI78D,EAAQgmD,OAAOjrC,EAAKnS,SACrCvM,GAAS,EAAI2D,EAAQc,UAAU,CAAEo9D,IAAKnjD,EAAKnS,QAASu1D,KAAMpjD,EAAKnS,UAC/Dk0D,GAAW,EAAI98D,EAAQgmD,OAAOjrC,EAAKnS,SACnCm0D,GAAkB,EAAI/8D,EAAQc,UAAU,CAAEo9D,IAAKnjD,EAAKnS,QAASu1D,KAAMpjD,EAAKnS,UACxEo0D,GAAgB,EAAIh9D,EAAQc,UAAU,CAAEo9D,IAAKnjD,EAAKnS,QAASu1D,KAAMpjD,EAAKnS,UACtEk3D,EA5Sd,SAAkC/kD,GAC9B,MAAMglD,EAAoB/1C,QAAO,EAAIhqB,EAAQc,UAAUia,EAAKnS,UACtDk3D,EAAiB,GACvB,IAAK,IAAIj6D,EAAI,EAAGA,EAAIk6D,EAAmBl6D,IAAK,CACxC,MAAMtE,GAAU,EAAIvB,EAAQgmD,OAAOjrC,EAAKnS,SAClCy1D,GAAa,EAAIr+D,EAAQgmD,OAAOjrC,EAAKnS,SACrCo3D,EAAch2C,QAAO,EAAIhqB,EAAQc,UAAUia,EAAKnS,UAChD01D,EAAWvjD,EAAK1I,OAAO,EAAG2tD,GAAaz8D,IAAIvD,EAAQgmD,OACzD8Z,EAAe39D,KAAK,CAChBZ,UACA88D,aACAC,YAER,CACA,OAAOwB,CACX,CA6R+BG,CAAyBllD,GAChD,OAAO,IAAIkhD,EAAiBkB,EAASV,EAASz5D,EAAO05D,EAAeC,EAAcP,EAAQC,EAAOC,EAAY57D,EAAUk8D,EAAWC,EAAYxgE,EAAQygE,EAAUC,EAAiBC,EAAe6C,EAAiBt9D,UAAW,KAAMu9D,EACtO,EAEJnlE,EAAQshE,iBAAmBA,EAC3Bn8D,EAAOg8D,SAASE,cAAoB,KAAIC,8BCzTxCp+D,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQulE,UA8MR,SAAmBC,GACf,IAAKA,EACD,OAMJ,MAAM5jD,EAAS4jD,EAAW/8D,MAAMg9D,GAChC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,IAAK,IAAI76D,EAAI,EAAGA,EAAI0W,EAAO7f,OAAQmJ,IAAK,CACpC,MAAM7C,GAASuZ,EAAO1W,IAAM,IAAIiC,OAChC,GAAK9E,EAAMtG,OAAX,CASA,QAAeC,IAAX4jE,EAAsB,CACtB,MAAM/2C,EAASm3C,EAAU39D,GACzB,GAAIwmB,EAAQ,CACR62C,EAAO72C,EAAO,GACd82C,EAAS92C,EAAO,GAChB+2C,EAAS/2C,EAAO,GAChB,QACJ,CACJ,CAMA,QAAmB7sB,IAAf6jE,EAA0B,CAE1B,MAAMh3C,EAASo3C,EAAY59D,EAAO,EAAG,GAAG,GACxC,QAAerG,IAAX6sB,EAAsB,CACtBg3C,EAAah3C,EACb,QACJ,CACJ,CAMA,QAAc7sB,IAAV8jE,EAAqB,CACrB,MAAMj3C,EAASq3C,EAAW79D,GAC1B,QAAerG,IAAX6sB,EAAsB,CACtBi3C,EAAQj3C,EACR,QACJ,CACJ,CAMA,QAAa7sB,IAAT+jE,EAAoB,CAEpB,MAAMl3C,EAASo3C,EAAY59D,EAAO,EAAG,GAAG,QACzBrG,IAAX6sB,IACAk3C,EAAOl3C,EAOHk3C,GAAQ,IAAMA,GAAQ,GACtBA,GAAQ,KAEHA,GAAQ,GAAKA,GAAQ,KAC1BA,GAAQ,KAGpB,CAhEA,CAiEJ,CAcA,QAAmB/jE,IAAf6jE,QACU7jE,IAAV8jE,QACS9jE,IAAT+jE,QACS/jE,IAAT0jE,QACW1jE,IAAX2jE,QACW3jE,IAAX4jE,GACAC,EAAa,GACbA,EAAa,IACbE,EAAO,MACPL,EAAO,IACPC,EAAS,IACTC,EAAS,GACT,OAEJ,OAAO,IAAI74C,KAAKA,KAAKo5C,IAAIJ,EAAMD,EAAOD,EAAYH,EAAMC,EAAQC,GACpE,EA7TA,MAAMH,EAAa,6CACbW,EAAe,CACjBC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,IAAK,GACLC,IAAK,IAYT,SAASf,EAAY59D,EAAO4+D,EAAWC,EAAWC,GAC9C,IAAIC,EAAQ,EACZ,KAAOA,EAAQ/+D,EAAMtG,QAAQ,CACzB,MAAMuP,EAAIjJ,EAAM2I,WAAWo2D,GAE3B,GAAI91D,GAAK,IAAQA,GAAK,GAClB,MAEJ81D,GACJ,CAEA,KAAIA,EAAQH,GAAaG,EAAQF,KAG5BC,GAAcC,GAAS/+D,EAAMtG,QAGlC,OAAOsJ,SAAShD,EAAMuF,MAAM,EAAGw5D,GAAQ,GAC3C,CACA,SAASpB,EAAU39D,GACf,MAAMwF,EAAQxF,EAAMI,MAAM,KACpBomB,EAAS,CAAC,EAAG,EAAG,GAMtB,GAAqB,IAAjBhhB,EAAM9L,OAAV,CAGA,IAAK,IAAImJ,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAIxB,MAAMi8D,EAAkB,GAALj8D,EACbm8D,EAAUx5D,EAAM3C,GACtB,QAAgBlJ,IAAZqlE,EACA,OAEJ,MAAMhmC,EAAM4kC,EAAYoB,EAAS,EAAG,EAAGF,GACvC,QAAYnlE,IAARq/B,EACA,OAEJxS,EAAO3jB,GAAKm2B,CAChB,CACA,OAAOxS,CAhBP,CAiBJ,CACA,SAASq3C,EAAW79D,GAEhB,OADAA,EAAQ0J,OAAO1J,GAAOuF,MAAM,EAAG,GAAGkH,eAE9B,IAAK,MACD,OAAOsxD,EAAaC,IACxB,IAAK,MACD,OAAOD,EAAaE,IACxB,IAAK,MACD,OAAOF,EAAaG,IACxB,IAAK,MACD,OAAOH,EAAaI,IACxB,IAAK,MACD,OAAOJ,EAAaK,IACxB,IAAK,MACD,OAAOL,EAAaM,IACxB,IAAK,MACD,OAAON,EAAaO,IACxB,IAAK,MACD,OAAOP,EAAaQ,IACxB,IAAK,MACD,OAAOR,EAAaS,IACxB,IAAK,MACD,OAAOT,EAAaU,IACxB,IAAK,MACD,OAAOV,EAAaW,IACxB,IAAK,MACD,OAAOX,EAAaY,IACxB,QACI,OAEZ,uECjEA,SAASM,EAAOC,GAAO,IAAIl1D,EAAMk1D,EAAIxlE,OAAQ,OAASsQ,GAAO,GAAKk1D,EAAIl1D,GAAO,CAAK,CAIlF,MAiBMm1D,EAAkB,IAGlBC,EAAkBD,IAGlBE,EAAkB,GASlBC,EAAkB,GA2BlBC,EACJ,IAAIp3C,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAEpEq3C,EACJ,IAAIr3C,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAE7Es3C,EACJ,IAAIt3C,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAEhDu3C,EACJ,IAAIv3C,WAAW,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAgBxDw3C,EAAgB,IAAI39D,MAAM,KAChCi9D,EAAOU,GAOP,MAAMC,EAAgB,IAAI59D,MAAMq9D,IAChCJ,EAAOW,GAKP,MAAMC,EAAgB,IAAI79D,MAjBJ,KAkBtBi9D,EAAOY,GAMP,MAAMC,EAAgB,IAAI99D,MAAM+9D,KAChCd,EAAOa,GAGP,MAAME,EAAgB,IAAIh+D,MAhGF,IAiGxBi9D,EAAOe,GAGP,MAAMC,EAAgB,IAAIj+D,MAAMq9D,GAKhC,SAASa,EAAeC,EAAaC,EAAYC,EAAYC,EAAOC,GAElE1oE,KAAKsoE,YAAeA,EACpBtoE,KAAKuoE,WAAeA,EACpBvoE,KAAKwoE,WAAeA,EACpBxoE,KAAKyoE,MAAeA,EACpBzoE,KAAK0oE,WAAeA,EAGpB1oE,KAAK2oE,UAAeL,GAAeA,EAAYzmE,MACjD,CAGA,IAAI+mE,EACAC,EACAC,EAGJ,SAASC,EAASC,EAAUC,GAC1BjpE,KAAKgpE,SAAWA,EAChBhpE,KAAKkpE,SAAW,EAChBlpE,KAAKipE,UAAYA,CACnB,CA1BA7B,EAAOgB,GA8BP,MAAMe,EAAUlwC,GAEPA,EAAO,IAAM+uC,EAAW/uC,GAAQ+uC,EAAW,KAAO/uC,IAAS,IAQ9DmwC,EAAYA,CAAC14D,EAAGixB,KAGpBjxB,EAAE24D,YAAY34D,EAAE44D,WAAmB,IAAL3nC,EAC9BjxB,EAAE24D,YAAY34D,EAAE44D,WAAc3nC,IAAM,EAAK,GAAI,EAQzC4nC,EAAYA,CAAC74D,EAAGxN,EAAOrB,KAEvB6O,EAAE84D,SAtIc,GAsIS3nE,GAC3B6O,EAAE+4D,QAAWvmE,GAASwN,EAAE84D,SAAY,MACpCJ,EAAU14D,EAAGA,EAAE+4D,QACf/4D,EAAE+4D,OAASvmE,GAzIO,GAyIcwN,EAAE84D,SAClC94D,EAAE84D,UAAY3nE,EA1II,KA4IlB6O,EAAE+4D,QAAWvmE,GAASwN,EAAE84D,SAAY,MACpC94D,EAAE84D,UAAY3nE,EAChB,EAII6nE,EAAYA,CAACh5D,EAAGU,EAAGu4D,KAEvBJ,EAAU74D,EAAGi5D,EAAS,EAAJv4D,GAAiBu4D,EAAS,EAAJv4D,EAAQ,GAAW,EASvDw4D,EAAaA,CAAClb,EAAMv8C,KAExB,IAAIyf,EAAM,EACV,GACEA,GAAc,EAAP88B,EACPA,KAAU,EACV98B,IAAQ,UACCzf,EAAM,GACjB,OAAOyf,IAAQ,CAAC,EAiIZi4C,EAAYA,CAACF,EAAMT,EAAUY,KAKjC,MAAMC,EAAY,IAAI5/D,MAAMs9D,IAC5B,IACI3wC,EACAvmB,EAFAm+C,EAAO,EAOX,IAAK53B,EAAO,EAAGA,GAAQ2wC,EAAY3wC,IACjC43B,EAAQA,EAAOob,EAAShzC,EAAO,IAAO,EACtCizC,EAAUjzC,GAAQ43B,EASpB,IAAKn+C,EAAI,EAAIA,GAAK24D,EAAU34D,IAAK,CAC/B,IAAI4B,EAAMw3D,EAAS,EAAJp5D,EAAQ,GACX,IAAR4B,IAEJw3D,EAAS,EAAJp5D,GAAkBq5D,EAAWG,EAAU53D,KAAQA,GAItD,GAgHI63D,EAAct5D,IAElB,IAAIH,EAGJ,IAAKA,EAAI,EAAGA,EAAIg3D,EAAYh3D,IAAOG,EAAEu5D,UAAc,EAAJ15D,GAAkB,EACjE,IAAKA,EAAI,EAAGA,EAAIi3D,EAAYj3D,IAAOG,EAAEw5D,UAAc,EAAJ35D,GAAkB,EACjE,IAAKA,EAAI,EAAGA,EAtcU,GAscMA,IAAOG,EAAEy5D,QAAY,EAAJ55D,GAAkB,EAE/DG,EAAEu5D,UAAUG,KAA0B,EACtC15D,EAAE25D,QAAU35D,EAAE45D,WAAa,EAC3B55D,EAAE65D,SAAW75D,EAAE+sD,QAAU,CAAC,EAOtB+M,EAAa95D,IAEbA,EAAE84D,SAAW,EACfJ,EAAU14D,EAAGA,EAAE+4D,QACN/4D,EAAE84D,SAAW,IAEtB94D,EAAE24D,YAAY34D,EAAE44D,WAAa54D,EAAE+4D,QAEjC/4D,EAAE+4D,OAAS,EACX/4D,EAAE84D,SAAW,CAAC,EAOViB,EAAUA,CAACd,EAAMp5D,EAAG+H,EAAGoyD,KAE3B,MAAMC,EAAU,EAAJp6D,EACNq6D,EAAU,EAAJtyD,EACZ,OAAQqxD,EAAKgB,GAAgBhB,EAAKiB,IAC1BjB,EAAKgB,KAAkBhB,EAAKiB,IAAiBF,EAAMn6D,IAAMm6D,EAAMpyD,EAAG,EAStEuyD,EAAaA,CAACn6D,EAAGi5D,EAAMr4D,KAK3B,MAAM2C,EAAIvD,EAAEo6D,KAAKx5D,GACjB,IAAIV,EAAIU,GAAK,EACb,KAAOV,GAAKF,EAAEq6D,WAERn6D,EAAIF,EAAEq6D,UACRN,EAAQd,EAAMj5D,EAAEo6D,KAAKl6D,EAAI,GAAIF,EAAEo6D,KAAKl6D,GAAIF,EAAEg6D,QAC1C95D,KAGE65D,EAAQd,EAAM11D,EAAGvD,EAAEo6D,KAAKl6D,GAAIF,EAAEg6D,SAGlCh6D,EAAEo6D,KAAKx5D,GAAKZ,EAAEo6D,KAAKl6D,GACnBU,EAAIV,EAGJA,IAAM,EAERF,EAAEo6D,KAAKx5D,GAAK2C,CAAC,EAUT+2D,EAAiBA,CAACt6D,EAAGu6D,EAAOC,KAKhC,IAAIjyC,EACAkyC,EAEAzc,EACA13B,EAFAo0C,EAAK,EAIT,GAAmB,IAAf16D,EAAE65D,SACJ,GACEtxC,EAAyC,IAAlCvoB,EAAE24D,YAAY34D,EAAE26D,QAAUD,KACjCnyC,IAA2C,IAAlCvoB,EAAE24D,YAAY34D,EAAE26D,QAAUD,OAAiB,EACpDD,EAAKz6D,EAAE24D,YAAY34D,EAAE26D,QAAUD,KAClB,IAATnyC,EACFywC,EAAUh5D,EAAGy6D,EAAIF,IAIjBvc,EAAOuZ,EAAakD,GACpBzB,EAAUh5D,EAAGg+C,EAAO4Y,EAAa,EAAG2D,GACpCj0C,EAAQ0wC,EAAYhZ,GACN,IAAV13B,IACFm0C,GAAMhD,EAAYzZ,GAClB6a,EAAU74D,EAAGy6D,EAAIn0C,IAEnBiC,IACAy1B,EAAOya,EAAOlwC,GAGdywC,EAAUh5D,EAAGg+C,EAAMwc,GACnBl0C,EAAQ2wC,EAAYjZ,GACN,IAAV13B,IACFiC,GAAQmvC,EAAU1Z,GAClB6a,EAAU74D,EAAGuoB,EAAMjC,WAOhBo0C,EAAK16D,EAAE65D,UAGlBb,EAAUh5D,EA1iBQ,IA0iBMu6D,EAAM,EAY1BK,EAAaA,CAAC56D,EAAG2kD,KAIrB,MAAMsU,EAAWtU,EAAK2T,SAChBuC,EAAWlW,EAAK4T,UAAUX,YAC1BK,EAAYtT,EAAK4T,UAAUN,UAC3BF,EAAWpT,EAAK4T,UAAUR,MAChC,IAAIl4D,EAAG+H,EAEHkzD,EADAtC,GAAY,EAUhB,IAHAx4D,EAAEq6D,SAAW,EACbr6D,EAAE+6D,SAxlBoB,IA0lBjBl7D,EAAI,EAAGA,EAAIk4D,EAAOl4D,IACQ,IAAzBo5D,EAAS,EAAJp5D,IACPG,EAAEo6D,OAAOp6D,EAAEq6D,UAAY7B,EAAW34D,EAClCG,EAAEg6D,MAAMn6D,GAAK,GAGbo5D,EAAS,EAAJp5D,EAAQ,GAAa,EAS9B,KAAOG,EAAEq6D,SAAW,GAClBS,EAAO96D,EAAEo6D,OAAOp6D,EAAEq6D,UAAa7B,EAAW,IAAMA,EAAW,EAC3DS,EAAY,EAAP6B,GAAqB,EAC1B96D,EAAEg6D,MAAMc,GAAQ,EAChB96D,EAAE25D,UAEE1B,IACFj4D,EAAE45D,YAAciB,EAAa,EAAPC,EAAW,IASrC,IALAnW,EAAK6T,SAAWA,EAKX34D,EAAKG,EAAEq6D,UAAY,EAAcx6D,GAAK,EAAGA,IAAOs6D,EAAWn6D,EAAGi5D,EAAMp5D,GAKzEi7D,EAAO/C,EACP,GAGEl4D,EAAIG,EAAEo6D,KAAK,GACXp6D,EAAEo6D,KAAK,GAAiBp6D,EAAEo6D,KAAKp6D,EAAEq6D,YACjCF,EAAWn6D,EAAGi5D,EAAM,GAGpBrxD,EAAI5H,EAAEo6D,KAAK,GAEXp6D,EAAEo6D,OAAOp6D,EAAE+6D,UAAYl7D,EACvBG,EAAEo6D,OAAOp6D,EAAE+6D,UAAYnzD,EAGvBqxD,EAAY,EAAP6B,GAAqB7B,EAAS,EAAJp5D,GAAkBo5D,EAAS,EAAJrxD,GACtD5H,EAAEg6D,MAAMc,IAAS96D,EAAEg6D,MAAMn6D,IAAMG,EAAEg6D,MAAMpyD,GAAK5H,EAAEg6D,MAAMn6D,GAAKG,EAAEg6D,MAAMpyD,IAAM,EACvEqxD,EAAS,EAAJp5D,EAAQ,GAAao5D,EAAS,EAAJrxD,EAAQ,GAAakzD,EAGpD96D,EAAEo6D,KAAK,GAAiBU,IACxBX,EAAWn6D,EAAGi5D,EAAM,SAEbj5D,EAAEq6D,UAAY,GAEvBr6D,EAAEo6D,OAAOp6D,EAAE+6D,UAAY/6D,EAAEo6D,KAAK,GA5cbY,EAACh7D,EAAG2kD,KAIrB,MAAMsU,EAAkBtU,EAAK2T,SACvBE,EAAkB7T,EAAK6T,SACvBqC,EAAkBlW,EAAK4T,UAAUX,YACjCK,EAAkBtT,EAAK4T,UAAUN,UACjC3xC,EAAkBq+B,EAAK4T,UAAUV,WACjClwD,EAAkBg9C,EAAK4T,UAAUT,WACjCE,EAAkBrT,EAAK4T,UAAUP,WACvC,IAAIl3C,EACAjhB,EAAG+H,EACHwe,EACA60C,EACA9gB,EACA+gB,EAAW,EAEf,IAAK90C,EAAO,EAAGA,GAAQ2wC,EAAY3wC,IACjCpmB,EAAEo5D,SAAShzC,GAAQ,EAQrB,IAFA6yC,EAA0B,EAArBj5D,EAAEo6D,KAAKp6D,EAAE+6D,UAAgB,GAAa,EAEtCj6C,EAAI9gB,EAAE+6D,SAAW,EAAGj6C,EAtOH,IAsOoBA,IACxCjhB,EAAIG,EAAEo6D,KAAKt5C,GACXsF,EAAO6yC,EAA+B,EAA1BA,EAAS,EAAJp5D,EAAQ,GAAiB,GAAa,EACnDumB,EAAO4xC,IACT5xC,EAAO4xC,EACPkD,KAEFjC,EAAS,EAAJp5D,EAAQ,GAAaumB,EAGtBvmB,EAAI24D,IAERx4D,EAAEo5D,SAAShzC,KACX60C,EAAQ,EACJp7D,GAAK8H,IACPszD,EAAQ30C,EAAMzmB,EAAI8H,IAEpBwyC,EAAI8e,EAAS,EAAJp5D,GACTG,EAAE25D,SAAWxf,GAAK/zB,EAAO60C,GACrBhD,IACFj4D,EAAE45D,YAAczf,GAAK0gB,EAAU,EAAJh7D,EAAQ,GAAao7D,KAGpD,GAAiB,IAAbC,EAAJ,CAMA,EAAG,CAED,IADA90C,EAAO4xC,EAAa,EACQ,IAArBh4D,EAAEo5D,SAAShzC,IAAeA,IACjCpmB,EAAEo5D,SAAShzC,KACXpmB,EAAEo5D,SAAShzC,EAAO,IAAM,EACxBpmB,EAAEo5D,SAASpB,KAIXkD,GAAY,CACd,OAASA,EAAW,GAOpB,IAAK90C,EAAO4xC,EAAqB,IAAT5xC,EAAYA,IAElC,IADAvmB,EAAIG,EAAEo5D,SAAShzC,GACF,IAANvmB,GACL+H,EAAI5H,EAAEo6D,OAAOt5C,GACTlZ,EAAI4wD,IACJS,EAAS,EAAJrxD,EAAQ,KAAewe,IAE9BpmB,EAAE25D,UAAYvzC,EAAO6yC,EAAS,EAAJrxD,EAAQ,IAAcqxD,EAAS,EAAJrxD,GACrDqxD,EAAS,EAAJrxD,EAAQ,GAAawe,GAE5BvmB,IAjC0B,CAmC9B,EA4XAm7D,CAAWh7D,EAAG2kD,GAGdwU,EAAUF,EAAMT,EAAUx4D,EAAEo5D,SAAS,EAQjC+B,EAAYA,CAACn7D,EAAGi5D,EAAMT,KAK1B,IAAI34D,EAEAu7D,EADAC,GAAW,EAGXC,EAAUrC,EAAK,GAEfzC,EAAQ,EACR+E,EAAY,EACZC,EAAY,EAQhB,IANgB,IAAZF,IACFC,EAAY,IACZC,EAAY,GAEdvC,EAAsB,GAAhBT,EAAW,GAAS,GAAa,MAElC34D,EAAI,EAAGA,GAAK24D,EAAU34D,IACzBu7D,EAASE,EACTA,EAAUrC,EAAe,GAATp5D,EAAI,GAAS,KAEvB22D,EAAQ+E,GAAaH,IAAWE,IAG3B9E,EAAQgF,EACjBx7D,EAAEy5D,QAAiB,EAAT2B,IAAwB5E,EAEd,IAAX4E,GAELA,IAAWC,GAAWr7D,EAAEy5D,QAAiB,EAAT2B,KACpCp7D,EAAEy5D,QAAQgC,OAEDjF,GAAS,GAClBx2D,EAAEy5D,QAAQiC,MAGV17D,EAAEy5D,QAAQkC,MAGZnF,EAAQ,EACR6E,EAAUD,EAEM,IAAZE,GACFC,EAAY,IACZC,EAAY,GAEHJ,IAAWE,GACpBC,EAAY,EACZC,EAAY,IAGZD,EAAY,EACZC,EAAY,GAEhB,EAQII,EAAYA,CAAC57D,EAAGi5D,EAAMT,KAK1B,IAAI34D,EAEAu7D,EADAC,GAAW,EAGXC,EAAUrC,EAAK,GAEfzC,EAAQ,EACR+E,EAAY,EACZC,EAAY,EAQhB,IALgB,IAAZF,IACFC,EAAY,IACZC,EAAY,GAGT37D,EAAI,EAAGA,GAAK24D,EAAU34D,IAIzB,GAHAu7D,EAASE,EACTA,EAAUrC,EAAe,GAATp5D,EAAI,GAAS,OAEvB22D,EAAQ+E,GAAaH,IAAWE,GAAtC,CAGO,GAAI9E,EAAQgF,EACjB,GAAKxC,EAAUh5D,EAAGo7D,EAAQp7D,EAAEy5D,eAA+B,MAAVjD,QAE7B,IAAX4E,GACLA,IAAWC,IACbrC,EAAUh5D,EAAGo7D,EAAQp7D,EAAEy5D,SACvBjD,KAGFwC,EAAUh5D,EA1vBI,GA0vBQA,EAAEy5D,SACxBZ,EAAU74D,EAAGw2D,EAAQ,EAAG,IAEfA,GAAS,IAClBwC,EAAUh5D,EA3vBI,GA2vBUA,EAAEy5D,SAC1BZ,EAAU74D,EAAGw2D,EAAQ,EAAG,KAGxBwC,EAAUh5D,EA5vBI,GA4vBYA,EAAEy5D,SAC5BZ,EAAU74D,EAAGw2D,EAAQ,GAAI,IAG3BA,EAAQ,EACR6E,EAAUD,EACM,IAAZE,GACFC,EAAY,IACZC,EAAY,GAEHJ,IAAWE,GACpBC,EAAY,EACZC,EAAY,IAGZD,EAAY,EACZC,EAAY,EAdd,CAgBF,EAsHF,IAAIK,GAAmB,EAKvB,MAuBMC,EAAqBA,CAAC97D,EAAG22D,EAAKoF,EAAYz2C,KAM9CuzC,EAAU74D,EAAG,GAAuBslB,EAAO,EAAI,GAAI,GACnDw0C,EAAU95D,GACV04D,EAAU14D,EAAG+7D,GACbrD,EAAU14D,GAAI+7D,GACVA,GACF/7D,EAAE24D,YAAY/yD,IAAI5F,EAAEkmB,OAAOhG,SAASy2C,EAAKA,EAAMoF,GAAa/7D,EAAE44D,SAEhE54D,EAAE44D,SAAWmD,CAAU,EAoIzB,IAEIC,EAnHsBC,CAACj8D,EAAG22D,EAAKoF,EAAYz2C,KAM7C,IAAI42C,EAAUC,EACVC,EAAc,EAGdp8D,EAAEq8D,MAAQ,GA1gCgB,IA6gCxBr8D,EAAEqlB,KAAKp1B,YACT+P,EAAEqlB,KAAKp1B,UA3Ga+P,KAKxB,IACIH,EADAy8D,EAAa,WAIjB,IAAKz8D,EAAI,EAAGA,GAAK,GAAIA,IAAKy8D,KAAgB,EACxC,GAAkB,EAAbA,GAAoD,IAAhCt8D,EAAEu5D,UAAc,EAAJ15D,GACnC,OAj7BwB,EAs7B5B,GAAoC,IAAhCG,EAAEu5D,UAAU,KAA0D,IAAjCv5D,EAAEu5D,UAAU,KAChB,IAAjCv5D,EAAEu5D,UAAU,IACd,OAv7B0B,EAy7B5B,IAAK15D,EAAI,GAAIA,EAAI+2D,EAAY/2D,IAC3B,GAAoC,IAAhCG,EAAEu5D,UAAc,EAAJ15D,GACd,OA37BwB,EAk8B5B,OAn8B4B,CAm8Bb,EA8EQ08D,CAAiBv8D,IAItC46D,EAAW56D,EAAGA,EAAEw8D,QAIhB5B,EAAW56D,EAAGA,EAAEy8D,QAUhBL,EA1MmBp8D,KAErB,IAAIo8D,EAgBJ,IAbAjB,EAAUn7D,EAAGA,EAAEu5D,UAAWv5D,EAAEw8D,OAAOhE,UACnC2C,EAAUn7D,EAAGA,EAAEw5D,UAAWx5D,EAAEy8D,OAAOjE,UAGnCoC,EAAW56D,EAAGA,EAAE08D,SASXN,EAAcO,GAAgBP,GAAe,GACS,IAArDp8D,EAAEy5D,QAAgC,EAAxBtC,EAASiF,GAAmB,GADSA,KAUrD,OAJAp8D,EAAE25D,SAAW,GAAKyC,EAAc,GAAK,EAAI,EAAI,EAItCA,CAAW,EA8KFQ,CAAc58D,GAG5Bk8D,EAAYl8D,EAAE25D,QAAU,EAAI,IAAO,EACnCwC,EAAen8D,EAAE45D,WAAa,EAAI,IAAO,EAMrCuC,GAAeD,IAAYA,EAAWC,IAI1CD,EAAWC,EAAcJ,EAAa,EAGnCA,EAAa,GAAKG,IAAuB,IAATvF,EASnCmF,EAAmB97D,EAAG22D,EAAKoF,EAAYz2C,GAjkCX,IAmkCnBtlB,EAAE68D,UAA0BV,IAAgBD,GAErDrD,EAAU74D,EAAG,GAAuBslB,EAAO,EAAI,GAAI,GACnDg1C,EAAet6D,EAAGo3D,EAAcC,KAGhCwB,EAAU74D,EAAG,GAAoBslB,EAAO,EAAI,GAAI,GAvM7Bw3C,EAAC98D,EAAG+8D,EAAQC,EAAQC,KAIzC,IAAIC,EASJ,IAHArE,EAAU74D,EAAG+8D,EAAS,IAAK,GAC3BlE,EAAU74D,EAAGg9D,EAAS,EAAK,GAC3BnE,EAAU74D,EAAGi9D,EAAU,EAAI,GACtBC,EAAO,EAAGA,EAAOD,EAASC,IAE7BrE,EAAU74D,EAAGA,EAAEy5D,QAAyB,EAAjBtC,EAAS+F,GAAY,GAAY,GAI1DtB,EAAU57D,EAAGA,EAAEu5D,UAAWwD,EAAS,GAGnCnB,EAAU57D,EAAGA,EAAEw5D,UAAWwD,EAAS,EAAE,EAkLnCF,CAAe98D,EAAGA,EAAEw8D,OAAOhE,SAAW,EAAGx4D,EAAEy8D,OAAOjE,SAAW,EAAG4D,EAAc,GAC9E9B,EAAet6D,EAAGA,EAAEu5D,UAAWv5D,EAAEw5D,YAMnCF,EAAWt5D,GAEPslB,GACFw0C,EAAU95D,EACZ,EAyCEm9D,EAAQ,CACXC,SA/KmBp9D,IAGb67D,IAnlBgBwB,MAErB,IAAIx9D,EACAumB,EACAj1B,EACA6sD,EACAz1B,EACJ,MAAM6wC,EAAW,IAAI3/D,MAAMs9D,IAiB3B,IADA5lE,EAAS,EACJ6sD,EAAO,EAAGA,EAAOsf,GAAoBtf,IAExC,IADAyZ,EAAYzZ,GAAQ7sD,EACf0O,EAAI,EAAGA,EAAK,GAAKm3D,EAAYhZ,GAAQn+C,IACxC03D,EAAapmE,KAAY6sD,EAY7B,IAJAuZ,EAAapmE,EAAS,GAAK6sD,EAG3Bz1B,EAAO,EACFy1B,EAAO,EAAGA,EAAO,GAAIA,IAExB,IADA0Z,EAAU1Z,GAAQz1B,EACb1oB,EAAI,EAAGA,EAAK,GAAKo3D,EAAYjZ,GAAQn+C,IACxCy3D,EAAW/uC,KAAUy1B,EAKzB,IADAz1B,IAAS,EACFy1B,EAAO8Y,EAAW9Y,IAEvB,IADA0Z,EAAU1Z,GAAQz1B,GAAQ,EACrB1oB,EAAI,EAAGA,EAAK,GAAMo3D,EAAYjZ,GAAQ,EAAKn+C,IAC9Cy3D,EAAW,IAAM/uC,KAAUy1B,EAM/B,IAAK53B,EAAO,EAAGA,GAAQ2wC,EAAY3wC,IACjCgzC,EAAShzC,GAAQ,EAInB,IADAvmB,EAAI,EACGA,GAAK,KACVu3D,EAAiB,EAAJv3D,EAAQ,GAAa,EAClCA,IACAu5D,EAAS,KAEX,KAAOv5D,GAAK,KACVu3D,EAAiB,EAAJv3D,EAAQ,GAAa,EAClCA,IACAu5D,EAAS,KAEX,KAAOv5D,GAAK,KACVu3D,EAAiB,EAAJv3D,EAAQ,GAAa,EAClCA,IACAu5D,EAAS,KAEX,KAAOv5D,GAAK,KACVu3D,EAAiB,EAAJv3D,EAAQ,GAAa,EAClCA,IACAu5D,EAAS,KASX,IAHAD,EAAU/B,EAAcP,IAAeuC,GAGlCv5D,EAAI,EAAGA,EAAIi3D,EAAWj3D,IACzBw3D,EAAiB,EAAJx3D,EAAQ,GAAa,EAClCw3D,EAAiB,EAAJx3D,GAAkBq5D,EAAWr5D,EAAG,GAI/Cq4D,EAAgB,IAAIP,EAAeP,EAAcJ,EAAaJ,IAAgBC,EAAWE,GACzFoB,EAAgB,IAAIR,EAAeN,EAAcJ,EAAa,EAAYH,EAAWC,GACrFqB,EAAiB,IAAIT,EAAe,IAAIl+D,MAAM,GAAIy9D,EAAc,EAtb1C,GAiBJ,EAqaiF,EAofjGmG,GACAxB,GAAmB,GAGrB77D,EAAEw8D,OAAU,IAAInE,EAASr4D,EAAEu5D,UAAWrB,GACtCl4D,EAAEy8D,OAAU,IAAIpE,EAASr4D,EAAEw5D,UAAWrB,GACtCn4D,EAAE08D,QAAU,IAAIrE,EAASr4D,EAAEy5D,QAASrB,GAEpCp4D,EAAE+4D,OAAS,EACX/4D,EAAE84D,SAAW,EAGbQ,EAAWt5D,EAAE,EAgKdu9D,iBAPwBzB,EAQxB0B,gBAAiBxB,EACjByB,UApCmBC,CAAC19D,EAAGuoB,EAAMkyC,KAK5Bz6D,EAAE24D,YAAY34D,EAAE26D,QAAU36D,EAAE65D,YAActxC,EAC1CvoB,EAAE24D,YAAY34D,EAAE26D,QAAU36D,EAAE65D,YAActxC,GAAQ,EAClDvoB,EAAE24D,YAAY34D,EAAE26D,QAAU36D,EAAE65D,YAAcY,EAC7B,IAATlyC,EAEFvoB,EAAEu5D,UAAe,EAALkB,MAEZz6D,EAAE+sD,UAEFxkC,IAKAvoB,EAAEu5D,UAAgD,GAArChC,EAAakD,GAAM7D,EAAa,MAC7C52D,EAAEw5D,UAAyB,EAAff,EAAOlwC,OAGbvoB,EAAE65D,WAAa75D,EAAE29D,SAc1BC,UAvIoB59D,IACnB64D,EAAU74D,EAAG69D,EAAmB,GAChC7E,EAAUh5D,EAh8BQ,IAg8BMo3D,GA/xBRp3D,KAEG,KAAfA,EAAE84D,UACJJ,EAAU14D,EAAGA,EAAE+4D,QACf/4D,EAAE+4D,OAAS,EACX/4D,EAAE84D,SAAW,GAEJ94D,EAAE84D,UAAY,IACvB94D,EAAE24D,YAAY34D,EAAE44D,WAAwB,IAAX54D,EAAE+4D,OAC/B/4D,EAAE+4D,SAAW,EACb/4D,EAAE84D,UAAY,EAChB,EAqxBAgF,CAAS99D,EAAE,GAuLb,IAAI+9D,EAzBYp6C,CAACzzB,EAAOymE,EAAKl1D,EAAKge,KAChC,IAAIu+C,EAAc,MAAR9tE,EACN+tE,EAAO/tE,IAAU,GAAM,MACvB2P,EAAI,EAER,KAAe,IAAR4B,GAAW,CAIhB5B,EAAI4B,EAAM,IAAO,IAAOA,EACxBA,GAAO5B,EAEP,GACEm+D,EAAMA,EAAKrH,EAAIl3C,KAAS,EACxBw+C,EAAMA,EAAKD,EAAK,UACPn+D,GAEXm+D,GAAM,MACNC,GAAM,KACR,CAEA,OAAQD,EAAMC,GAAM,EAAO,EA8B7B,MAeMC,EAAW,IAAIt3D,YAfHu3D,MAChB,IAAIz9D,EAAG09D,EAAQ,GAEf,IAAK,IAAIv+D,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5Ba,EAAIb,EACJ,IAAK,IAAIe,EAAI,EAAGA,EAAI,EAAGA,IACrBF,EAAU,EAAJA,EAAU,WAAcA,IAAM,EAAOA,IAAM,EAEnD09D,EAAMv+D,GAAKa,CACb,CAEA,OAAO09D,CAAK,EAImBD,IAiBjC,IAAIE,EAdUz6C,CAAC06C,EAAK3H,EAAKl1D,EAAKge,KAC5B,MAAM5T,EAAIqyD,EACJphD,EAAM2C,EAAMhe,EAElB68D,IAAQ,EAER,IAAK,IAAIhkE,EAAImlB,EAAKnlB,EAAIwiB,EAAKxiB,IACzBgkE,EAAOA,IAAQ,EAAKzyD,EAAmB,KAAhByyD,EAAM3H,EAAIr8D,KAGnC,OAAQgkE,CAAU,EAyBhBC,EAAW,CACb,EAAQ,kBACR,EAAQ,aACR,EAAQ,GACR,KAAQ,aACR,KAAQ,eACR,KAAQ,aACR,KAAQ,sBACR,KAAQ,eACR,KAAQ,wBAsBNC,EAAc,CAGhBC,WAAoB,EACpBC,gBAAoB,EACpBC,aAAoB,EACpBC,aAAoB,EACpB76C,SAAoB,EACpBC,QAAoB,EACpBC,QAAoB,EAKpBC,KAAoB,EACpBC,aAAoB,EACpBC,YAAoB,EACpBy6C,SAAoB,EACpBx6C,gBAAoB,EACpBC,cAAoB,EACpBC,aAAoB,EACpBC,aAAoB,EAIpBs6C,iBAA0B,EAC1BC,aAA0B,EAC1BC,mBAA0B,EAC1BC,uBAA0B,EAG1BC,WAA0B,EAC1BC,eAA0B,EAC1BC,MAA0B,EAC1BC,QAA0B,EAC1BC,mBAA0B,EAG1BC,SAA0B,EAC1BC,OAA0B,EAE1BC,UAA0B,EAG1Bh7C,WAA0B,GAuB5B,MAAM,SAAE24C,EAAQ,iBAAEG,EAAgB,gBAAEC,EAAe,UAAEC,EAAS,UAAEG,GAAcT,GAS5EsB,WAAYiB,EAAY,gBAAEhB,EAAiBE,aAAce,EAAgB57C,SAAU67C,GAAY57C,QAAS67C,GACxG37C,KAAM47C,GAAQ37C,aAAc47C,GAAgB17C,eAAgB27C,GAAkB17C,aAAc27C,GAAgBz7C,YAAa07C,GACzHjB,sBAAuBkB,GAAuB,WAC9CjB,GAAU,eAAEC,GAAc,MAAEC,GAAK,QAAEC,GAASC,mBAAoBc,GAAoB,UACpFX,GACAh7C,WAAY47C,IACV7B,EA4BE8B,GAAY,IACZC,GAAiBD,IAIjBE,GAAiB,GAQjBC,GAAgB,IAChBC,GAAgB,IAShBxnD,GAAMA,CAACmM,EAAMs7C,KACjBt7C,EAAKt1B,IAAMwuE,EAASoC,GACbA,GAGHzD,GAAQ/iB,GACE,EAALA,GAAYA,EAAK,EAAI,EAAI,GAG9BymB,GAAQjK,IACZ,IAAIl1D,EAAMk1D,EAAIxlE,OAAQ,OAASsQ,GAAO,GAAKk1D,EAAIl1D,GAAO,CAAG,EAQrDo/D,GAAc7gE,IAClB,IAAIH,EAAG+H,EACH/B,EACAkgB,EAAQ/lB,EAAE8gE,OAEdjhE,EAAIG,EAAE+gE,UACNl7D,EAAIhG,EACJ,GACE+H,EAAI5H,EAAE6lB,OAAOhgB,GACb7F,EAAE6lB,KAAKhgB,GAAM+B,GAAKme,EAAQne,EAAIme,EAAQ,UAC7BlmB,GACXA,EAAIkmB,EAEJlgB,EAAIhG,EACJ,GACE+H,EAAI5H,EAAEmkC,OAAOt+B,GACb7F,EAAEmkC,KAAKt+B,GAAM+B,GAAKme,EAAQne,EAAIme,EAAQ,UAI7BlmB,EAAE,EAKf,IAIImhE,GAJYC,CAACjhE,EAAGmkC,EAAMlxC,KAAWkxC,GAAQnkC,EAAEkhE,WAAcjuE,GAAQ+M,EAAEmhE,UAavE,MAAMC,GAAiB/7C,IACrB,MAAMrlB,EAAIqlB,EAAKr1B,MAGf,IAAIyR,EAAMzB,EAAE44D,QACRn3D,EAAM4jB,EAAKx1B,YACb4R,EAAM4jB,EAAKx1B,WAED,IAAR4R,IAEJ4jB,EAAK11B,OAAOiW,IAAI5F,EAAE24D,YAAYz4C,SAASlgB,EAAEqhE,YAAarhE,EAAEqhE,YAAc5/D,GAAM4jB,EAAKz1B,UACjFy1B,EAAKz1B,UAAa6R,EAClBzB,EAAEqhE,aAAgB5/D,EAClB4jB,EAAKv1B,WAAa2R,EAClB4jB,EAAKx1B,WAAa4R,EAClBzB,EAAE44D,SAAgBn3D,EACA,IAAdzB,EAAE44D,UACJ54D,EAAEqhE,YAAc,GAClB,EAIIC,GAAmBA,CAACthE,EAAGslB,KAC3Bk4C,EAAgBx9D,EAAIA,EAAEuhE,aAAe,EAAIvhE,EAAEuhE,aAAe,EAAIvhE,EAAEwhE,SAAWxhE,EAAEuhE,YAAaj8C,GAC1FtlB,EAAEuhE,YAAcvhE,EAAEwhE,SAClBJ,GAAcphE,EAAEqlB,KAAK,EAIjBo8C,GAAWA,CAACzhE,EAAGQ,KACnBR,EAAE24D,YAAY34D,EAAE44D,WAAap4D,CAAC,EAS1BkhE,GAAcA,CAAC1hE,EAAGQ,KAItBR,EAAE24D,YAAY34D,EAAE44D,WAAcp4D,IAAM,EAAK,IACzCR,EAAE24D,YAAY34D,EAAE44D,WAAiB,IAAJp4D,CAAQ,EAWjCmhE,GAAWA,CAACt8C,EAAMsxC,EAAKn4D,EAAOgb,KAElC,IAAI/X,EAAM4jB,EAAK51B,SAGf,OADIgS,EAAM+X,IAAQ/X,EAAM+X,GACZ,IAAR/X,EAAoB,GAExB4jB,EAAK51B,UAAYgS,EAGjBk1D,EAAI/wD,IAAIyf,EAAK91B,MAAM2wB,SAASmF,EAAK71B,QAAS61B,EAAK71B,QAAUiS,GAAMjD,GACvC,IAApB6mB,EAAKr1B,MAAMu1B,KACbF,EAAKn1B,MAAQ6tE,EAAU14C,EAAKn1B,MAAOymE,EAAKl1D,EAAKjD,GAGlB,IAApB6mB,EAAKr1B,MAAMu1B,OAClBF,EAAKn1B,MAAQmuE,EAAQh5C,EAAKn1B,MAAOymE,EAAKl1D,EAAKjD,IAG7C6mB,EAAK71B,SAAWiS,EAChB4jB,EAAK31B,UAAY+R,EAEVA,EAAG,EAaNmgE,GAAgBA,CAAC5hE,EAAG6hE,KAExB,IAEIC,EACArgE,EAHAsgE,EAAe/hE,EAAEgiE,iBACjBC,EAAOjiE,EAAEwhE,SAGTU,EAAWliE,EAAEmiE,YACbC,EAAapiE,EAAEoiE,WACnB,MAAMC,EAASriE,EAAEwhE,SAAYxhE,EAAE8gE,OAASP,GACpCvgE,EAAEwhE,UAAYxhE,EAAE8gE,OAASP,IAAiB,EAExC+B,EAAOtiE,EAAEkmB,OAETq8C,EAAQviE,EAAEwiE,OACVr+B,EAAQnkC,EAAEmkC,KAMVs+B,EAASziE,EAAEwhE,SAAWlB,GAC5B,IAAIoC,EAAaJ,EAAKL,EAAOC,EAAW,GACpCS,EAAaL,EAAKL,EAAOC,GAQzBliE,EAAEmiE,aAAeniE,EAAE4iE,aACrBb,IAAiB,GAKfK,EAAapiE,EAAE6iE,YAAaT,EAAapiE,EAAE6iE,WAI/C,GAaE,GAXAf,EAAQD,EAWJS,EAAKR,EAAQI,KAAkBS,GAC/BL,EAAKR,EAAQI,EAAW,KAAOQ,GAC/BJ,EAAKR,KAA0BQ,EAAKL,IACpCK,IAAOR,KAAwBQ,EAAKL,EAAO,GAH/C,CAaAA,GAAQ,EACRH,IAMA,UAESQ,IAAOL,KAAUK,IAAOR,IAAUQ,IAAOL,KAAUK,IAAOR,IAC1DQ,IAAOL,KAAUK,IAAOR,IAAUQ,IAAOL,KAAUK,IAAOR,IAC1DQ,IAAOL,KAAUK,IAAOR,IAAUQ,IAAOL,KAAUK,IAAOR,IAC1DQ,IAAOL,KAAUK,IAAOR,IAAUQ,IAAOL,KAAUK,IAAOR,IAC1DG,EAAOQ,GAOhB,GAHAhhE,EAAM6+D,IAAamC,EAASR,GAC5BA,EAAOQ,EAASnC,GAEZ7+D,EAAMygE,EAAU,CAGlB,GAFAliE,EAAE8iE,YAAcjB,EAChBK,EAAWzgE,EACPA,GAAO2gE,EACT,MAEFM,EAAaJ,EAAKL,EAAOC,EAAW,GACpCS,EAAaL,EAAKL,EAAOC,EAC3B,CApCA,SAqCQL,EAAY19B,EAAK09B,EAAYU,IAAUF,GAA4B,MAAjBN,GAE5D,OAAIG,GAAYliE,EAAE6iE,UACTX,EAEFliE,EAAE6iE,SAAS,EAcdE,GAAe/iE,IAEnB,MAAMgjE,EAAUhjE,EAAE8gE,OAClB,IAAIjhE,EAAG0I,EAAMjH,EAIb,EAAG,CAkCD,GAjCAiH,EAAOvI,EAAEijE,YAAcjjE,EAAE6iE,UAAY7iE,EAAEwhE,SAoBnCxhE,EAAEwhE,UAAYwB,GAAWA,EAAUzC,MAErCvgE,EAAEkmB,OAAOtgB,IAAI5F,EAAEkmB,OAAOhG,SAAS8iD,EAASA,EAAUA,EAAUz6D,GAAO,GACnEvI,EAAE8iE,aAAeE,EACjBhjE,EAAEwhE,UAAYwB,EAEdhjE,EAAEuhE,aAAeyB,EACbhjE,EAAEkjE,OAASljE,EAAEwhE,WACfxhE,EAAEkjE,OAASljE,EAAEwhE,UAEfX,GAAW7gE,GACXuI,GAAQy6D,GAEc,IAApBhjE,EAAEqlB,KAAK51B,SACT,MAmBF,GAJAoQ,EAAI8hE,GAAS3hE,EAAEqlB,KAAMrlB,EAAEkmB,OAAQlmB,EAAEwhE,SAAWxhE,EAAE6iE,UAAWt6D,GACzDvI,EAAE6iE,WAAahjE,EAGXG,EAAE6iE,UAAY7iE,EAAEkjE,QAzVN,EAkWZ,IARA5hE,EAAMtB,EAAEwhE,SAAWxhE,EAAEkjE,OACrBljE,EAAEmjE,MAAQnjE,EAAEkmB,OAAO5kB,GAGnBtB,EAAEmjE,MAAQnC,GAAKhhE,EAAGA,EAAEmjE,MAAOnjE,EAAEkmB,OAAO5kB,EAAM,IAInCtB,EAAEkjE,SAEPljE,EAAEmjE,MAAQnC,GAAKhhE,EAAGA,EAAEmjE,MAAOnjE,EAAEkmB,OAAO5kB,EApW1B,EAoW4C,IAEtDtB,EAAEmkC,KAAK7iC,EAAMtB,EAAEwiE,QAAUxiE,EAAE6lB,KAAK7lB,EAAEmjE,OAClCnjE,EAAE6lB,KAAK7lB,EAAEmjE,OAAS7hE,EAClBA,IACAtB,EAAEkjE,WACEljE,EAAE6iE,UAAY7iE,EAAEkjE,OA1WV,MAmXhB,OAASljE,EAAE6iE,UAAYtC,IAAqC,IAApBvgE,EAAEqlB,KAAK51B,SAAe,EAuD1D2zE,GAAiBA,CAACpjE,EAAG0oB,KAMzB,IAMIjnB,EAAKknB,EAAM7B,EANXu8C,EAAYrjE,EAAEsjE,iBAAmB,EAAItjE,EAAE8gE,OAAS9gE,EAAE8gE,OAAS9gE,EAAEsjE,iBAAmB,EAM/Dh+C,EAAO,EACxBi+C,EAAOvjE,EAAEqlB,KAAK51B,SAClB,EAAG,CAOD,GAFAgS,EAAM,MACNqlB,EAAQ9mB,EAAE84D,SAAW,IAAO,EACxB94D,EAAEqlB,KAAKx1B,UAAYi3B,EACrB,MAiBF,GAdAA,EAAO9mB,EAAEqlB,KAAKx1B,UAAYi3B,EAC1B6B,EAAO3oB,EAAEwhE,SAAWxhE,EAAEuhE,YAClB9/D,EAAMknB,EAAO3oB,EAAEqlB,KAAK51B,WACtBgS,EAAMknB,EAAO3oB,EAAEqlB,KAAK51B,UAElBgS,EAAMqlB,IACRrlB,EAAMqlB,GAQJrlB,EAAM4hE,IAAuB,IAAR5hE,GAAainB,IAAUk3C,IAC5Bl3C,IAAUg3C,GACVj+D,IAAQknB,EAAO3oB,EAAEqlB,KAAK51B,UACxC,MAMF61B,EAAOoD,IAAUk3C,IAAcn+D,IAAQknB,EAAO3oB,EAAEqlB,KAAK51B,SAAW,EAAI,EACpE8tE,EAAiBv9D,EAAG,EAAG,EAAGslB,GAG1BtlB,EAAE24D,YAAY34D,EAAE44D,QAAU,GAAKn3D,EAC/BzB,EAAE24D,YAAY34D,EAAE44D,QAAU,GAAKn3D,GAAO,EACtCzB,EAAE24D,YAAY34D,EAAE44D,QAAU,IAAMn3D,EAChCzB,EAAE24D,YAAY34D,EAAE44D,QAAU,IAAMn3D,GAAO,EAGvC2/D,GAAcphE,EAAEqlB,MASZsD,IACEA,EAAOlnB,IACTknB,EAAOlnB,GAGTzB,EAAEqlB,KAAK11B,OAAOiW,IAAI5F,EAAEkmB,OAAOhG,SAASlgB,EAAEuhE,YAAavhE,EAAEuhE,YAAc54C,GAAO3oB,EAAEqlB,KAAKz1B,UACjFoQ,EAAEqlB,KAAKz1B,UAAY+4B,EACnB3oB,EAAEqlB,KAAKx1B,WAAa84B,EACpB3oB,EAAEqlB,KAAKv1B,WAAa64B,EACpB3oB,EAAEuhE,aAAe54C,EACjBlnB,GAAOknB,GAMLlnB,IACFkgE,GAAS3hE,EAAEqlB,KAAMrlB,EAAEqlB,KAAK11B,OAAQqQ,EAAEqlB,KAAKz1B,SAAU6R,GACjDzB,EAAEqlB,KAAKz1B,UAAY6R,EACnBzB,EAAEqlB,KAAKx1B,WAAa4R,EACpBzB,EAAEqlB,KAAKv1B,WAAa2R,EAExB,OAAkB,IAAT6jB,GA6CT,OArCAi+C,GAAQvjE,EAAEqlB,KAAK51B,SACX8zE,IAIEA,GAAQvjE,EAAE8gE,QACZ9gE,EAAE+sD,QAAU,EAEZ/sD,EAAEkmB,OAAOtgB,IAAI5F,EAAEqlB,KAAK91B,MAAM2wB,SAASlgB,EAAEqlB,KAAK71B,QAAUwQ,EAAE8gE,OAAQ9gE,EAAEqlB,KAAK71B,SAAU,GAC/EwQ,EAAEwhE,SAAWxhE,EAAE8gE,OACf9gE,EAAEkjE,OAASljE,EAAEwhE,WAGTxhE,EAAEijE,YAAcjjE,EAAEwhE,UAAY+B,IAEhCvjE,EAAEwhE,UAAYxhE,EAAE8gE,OAEhB9gE,EAAEkmB,OAAOtgB,IAAI5F,EAAEkmB,OAAOhG,SAASlgB,EAAE8gE,OAAQ9gE,EAAE8gE,OAAS9gE,EAAEwhE,UAAW,GAC7DxhE,EAAE+sD,QAAU,GACd/sD,EAAE+sD,UAEA/sD,EAAEkjE,OAASljE,EAAEwhE,WACfxhE,EAAEkjE,OAASljE,EAAEwhE,WAIjBxhE,EAAEkmB,OAAOtgB,IAAI5F,EAAEqlB,KAAK91B,MAAM2wB,SAASlgB,EAAEqlB,KAAK71B,QAAU+zE,EAAMvjE,EAAEqlB,KAAK71B,SAAUwQ,EAAEwhE,UAC7ExhE,EAAEwhE,UAAY+B,EACdvjE,EAAEkjE,QAAUK,EAAOvjE,EAAE8gE,OAAS9gE,EAAEkjE,OAASljE,EAAE8gE,OAAS9gE,EAAEkjE,OAASK,GAEjEvjE,EAAEuhE,YAAcvhE,EAAEwhE,UAEhBxhE,EAAEwjE,WAAaxjE,EAAEwhE,WACnBxhE,EAAEwjE,WAAaxjE,EAAEwhE,UAIfl8C,EA5hBoB,EAiiBpBoD,IAAUg3C,GAAgBh3C,IAAUk3C,IAClB,IAApB5/D,EAAEqlB,KAAK51B,UAAkBuQ,EAAEwhE,WAAaxhE,EAAEuhE,YApiBpB,GAyiBxBz6C,EAAO9mB,EAAEijE,YAAcjjE,EAAEwhE,SACrBxhE,EAAEqlB,KAAK51B,SAAWq3B,GAAQ9mB,EAAEuhE,aAAevhE,EAAE8gE,SAE/C9gE,EAAEuhE,aAAevhE,EAAE8gE,OACnB9gE,EAAEwhE,UAAYxhE,EAAE8gE,OAEhB9gE,EAAEkmB,OAAOtgB,IAAI5F,EAAEkmB,OAAOhG,SAASlgB,EAAE8gE,OAAQ9gE,EAAE8gE,OAAS9gE,EAAEwhE,UAAW,GAC7DxhE,EAAE+sD,QAAU,GACd/sD,EAAE+sD,UAEJjmC,GAAQ9mB,EAAE8gE,OACN9gE,EAAEkjE,OAASljE,EAAEwhE,WACfxhE,EAAEkjE,OAASljE,EAAEwhE,WAGb16C,EAAO9mB,EAAEqlB,KAAK51B,WAChBq3B,EAAO9mB,EAAEqlB,KAAK51B,UAEZq3B,IACF66C,GAAS3hE,EAAEqlB,KAAMrlB,EAAEkmB,OAAQlmB,EAAEwhE,SAAU16C,GACvC9mB,EAAEwhE,UAAY16C,EACd9mB,EAAEkjE,QAAUp8C,EAAO9mB,EAAE8gE,OAAS9gE,EAAEkjE,OAASljE,EAAE8gE,OAAS9gE,EAAEkjE,OAASp8C,GAE7D9mB,EAAEwjE,WAAaxjE,EAAEwhE,WACnBxhE,EAAEwjE,WAAaxjE,EAAEwhE,UAQnB16C,EAAQ9mB,EAAE84D,SAAW,IAAO,EAE5BhyC,EAAO9mB,EAAEsjE,iBAAmBx8C,EAAO,MAAwB,MAAwB9mB,EAAEsjE,iBAAmBx8C,EACxGu8C,EAAYv8C,EAAO9mB,EAAE8gE,OAAS9gE,EAAE8gE,OAASh6C,EACzC6B,EAAO3oB,EAAEwhE,SAAWxhE,EAAEuhE,aAClB54C,GAAQ06C,IACP16C,GAAQD,IAAUk3C,KAAel3C,IAAUg3C,GACzB,IAApB1/D,EAAEqlB,KAAK51B,UAAkBk5B,GAAQ7B,KAClCrlB,EAAMknB,EAAO7B,EAAOA,EAAO6B,EAC3BrD,EAAOoD,IAAUk3C,IAAkC,IAApB5/D,EAAEqlB,KAAK51B,UACjCgS,IAAQknB,EAAO,EAAI,EACxB40C,EAAiBv9D,EAAGA,EAAEuhE,YAAa9/D,EAAK6jB,GACxCtlB,EAAEuhE,aAAe9/D,EACjB2/D,GAAcphE,EAAEqlB,OAIXC,EAzlBiB,EAFA,EA2lBsB,EAW1Cm+C,GAAeA,CAACzjE,EAAG0oB,KAEvB,IAAIg7C,EACAC,EAEJ,OAAS,CAMP,GAAI3jE,EAAE6iE,UAAYtC,GAAe,CAE/B,GADAwC,GAAY/iE,GACRA,EAAE6iE,UAAYtC,IAAiB73C,IAAUg3C,EAC3C,OApnBkB,EAsnBpB,GAAoB,IAAhB1/D,EAAE6iE,UACJ,KAEJ,CAyBA,GApBAa,EAAY,EACR1jE,EAAE6iE,WAhpBQ,IAkpBZ7iE,EAAEmjE,MAAQnC,GAAKhhE,EAAGA,EAAEmjE,MAAOnjE,EAAEkmB,OAAOlmB,EAAEwhE,SAlpB1B,EAkpBiD,IAC7DkC,EAAY1jE,EAAEmkC,KAAKnkC,EAAEwhE,SAAWxhE,EAAEwiE,QAAUxiE,EAAE6lB,KAAK7lB,EAAEmjE,OACrDnjE,EAAE6lB,KAAK7lB,EAAEmjE,OAASnjE,EAAEwhE,UAOJ,IAAdkC,GAA4B1jE,EAAEwhE,SAAWkC,GAAe1jE,EAAE8gE,OAASP,KAKrEvgE,EAAE4jE,aAAehC,GAAc5hE,EAAG0jE,IAGhC1jE,EAAE4jE,cAnqBQ,EA+qBZ,GAPAD,EAASlG,EAAUz9D,EAAGA,EAAEwhE,SAAWxhE,EAAE8iE,YAAa9iE,EAAE4jE,aAxqBxC,GA0qBZ5jE,EAAE6iE,WAAa7iE,EAAE4jE,aAKb5jE,EAAE4jE,cAAgB5jE,EAAE6jE,gBAAuC7jE,EAAE6iE,WA/qBrD,EA+qB6E,CACvF7iE,EAAE4jE,eACF,GACE5jE,EAAEwhE,WAEFxhE,EAAEmjE,MAAQnC,GAAKhhE,EAAGA,EAAEmjE,MAAOnjE,EAAEkmB,OAAOlmB,EAAEwhE,SAprB9B,EAorBqD,IAC7DkC,EAAY1jE,EAAEmkC,KAAKnkC,EAAEwhE,SAAWxhE,EAAEwiE,QAAUxiE,EAAE6lB,KAAK7lB,EAAEmjE,OACrDnjE,EAAE6lB,KAAK7lB,EAAEmjE,OAASnjE,EAAEwhE,eAKQ,MAAnBxhE,EAAE4jE,cACb5jE,EAAEwhE,UACJ,MAEExhE,EAAEwhE,UAAYxhE,EAAE4jE,aAChB5jE,EAAE4jE,aAAe,EACjB5jE,EAAEmjE,MAAQnjE,EAAEkmB,OAAOlmB,EAAEwhE,UAErBxhE,EAAEmjE,MAAQnC,GAAKhhE,EAAGA,EAAEmjE,MAAOnjE,EAAEkmB,OAAOlmB,EAAEwhE,SAAW,SAanDmC,EAASlG,EAAUz9D,EAAG,EAAGA,EAAEkmB,OAAOlmB,EAAEwhE,WAEpCxhE,EAAE6iE,YACF7iE,EAAEwhE,WAEJ,GAAImC,IAEFrC,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,WACT,OAxsBkB,CA4sBxB,CAEA,OADAmQ,EAAEkjE,OAAWljE,EAAEwhE,SAAYsC,EAAkB9jE,EAAEwhE,SAAWsC,EACtDp7C,IAAUk3C,IAEZ0B,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,UA/sBW,EACA,GAotBpBmQ,EAAE65D,WAEJyH,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,WA1tBW,EACA,CA8tBJ,EAQhBk0E,GAAeA,CAAC/jE,EAAG0oB,KAEvB,IAAIg7C,EACAC,EAEAK,EAGJ,OAAS,CAMP,GAAIhkE,EAAE6iE,UAAYtC,GAAe,CAE/B,GADAwC,GAAY/iE,GACRA,EAAE6iE,UAAYtC,IAAiB73C,IAAUg3C,EAC3C,OAxvBkB,EA0vBpB,GAAoB,IAAhB1/D,EAAE6iE,UAAmB,KAC3B,CAyCA,GApCAa,EAAY,EACR1jE,EAAE6iE,WAlxBQ,IAoxBZ7iE,EAAEmjE,MAAQnC,GAAKhhE,EAAGA,EAAEmjE,MAAOnjE,EAAEkmB,OAAOlmB,EAAEwhE,SApxB1B,EAoxBiD,IAC7DkC,EAAY1jE,EAAEmkC,KAAKnkC,EAAEwhE,SAAWxhE,EAAEwiE,QAAUxiE,EAAE6lB,KAAK7lB,EAAEmjE,OACrDnjE,EAAE6lB,KAAK7lB,EAAEmjE,OAASnjE,EAAEwhE,UAMtBxhE,EAAEmiE,YAAcniE,EAAE4jE,aAClB5jE,EAAEikE,WAAajkE,EAAE8iE,YACjB9iE,EAAE4jE,aAAeE,EAEC,IAAdJ,GAA0B1jE,EAAEmiE,YAAcniE,EAAE6jE,gBAC5C7jE,EAAEwhE,SAAWkC,GAAc1jE,EAAE8gE,OAASP,KAKxCvgE,EAAE4jE,aAAehC,GAAc5hE,EAAG0jE,GAG9B1jE,EAAE4jE,cAAgB,IAClB5jE,EAAE68D,WAAaqC,IA1yBP,IA0yBsBl/D,EAAE4jE,cAA8B5jE,EAAEwhE,SAAWxhE,EAAE8iE,YAAc,QAK7F9iE,EAAE4jE,aAAeE,IAMjB9jE,EAAEmiE,aArzBQ,GAqzBoBniE,EAAE4jE,cAAgB5jE,EAAEmiE,YAAa,CACjE6B,EAAahkE,EAAEwhE,SAAWxhE,EAAE6iE,UAtzBhB,EA6zBZc,EAASlG,EAAUz9D,EAAGA,EAAEwhE,SAAW,EAAIxhE,EAAEikE,WAAYjkE,EAAEmiE,YA7zB3C,GAm0BZniE,EAAE6iE,WAAa7iE,EAAEmiE,YAAc,EAC/BniE,EAAEmiE,aAAe,EACjB,KACQniE,EAAEwhE,UAAYwC,IAElBhkE,EAAEmjE,MAAQnC,GAAKhhE,EAAGA,EAAEmjE,MAAOnjE,EAAEkmB,OAAOlmB,EAAEwhE,SAx0B9B,EAw0BqD,IAC7DkC,EAAY1jE,EAAEmkC,KAAKnkC,EAAEwhE,SAAWxhE,EAAEwiE,QAAUxiE,EAAE6lB,KAAK7lB,EAAEmjE,OACrDnjE,EAAE6lB,KAAK7lB,EAAEmjE,OAASnjE,EAAEwhE,gBAGK,MAAlBxhE,EAAEmiE,aAKb,GAJAniE,EAAEkkE,gBAAkB,EACpBlkE,EAAE4jE,aAAeE,EACjB9jE,EAAEwhE,WAEEmC,IAEFrC,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,WACT,OAr0BgB,CA00BtB,MAAO,GAAImQ,EAAEkkE,iBAgBX,GATAP,EAASlG,EAAUz9D,EAAG,EAAGA,EAAEkmB,OAAOlmB,EAAEwhE,SAAW,IAE3CmC,GAEFrC,GAAiBthE,GAAG,GAGtBA,EAAEwhE,WACFxhE,EAAE6iE,YACuB,IAArB7iE,EAAEqlB,KAAKx1B,UACT,OA31BkB,OAi2BpBmQ,EAAEkkE,gBAAkB,EACpBlkE,EAAEwhE,WACFxhE,EAAE6iE,WAEN,CAUA,OARI7iE,EAAEkkE,kBAGJP,EAASlG,EAAUz9D,EAAG,EAAGA,EAAEkmB,OAAOlmB,EAAEwhE,SAAW,IAE/CxhE,EAAEkkE,gBAAkB,GAEtBlkE,EAAEkjE,OAASljE,EAAEwhE,SAAWsC,EAAgB9jE,EAAEwhE,SAAWsC,EACjDp7C,IAAUk3C,IAEZ0B,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,UAh3BW,EACA,GAq3BpBmQ,EAAE65D,WAEJyH,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,WA33BW,EACA,CAg4BJ,EAmKtB,SAASs0E,GAAOC,EAAaC,EAAUC,EAAaC,EAAW3rD,GAE7DtpB,KAAK80E,YAAcA,EACnB90E,KAAK+0E,SAAWA,EAChB/0E,KAAKg1E,YAAcA,EACnBh1E,KAAKi1E,UAAYA,EACjBj1E,KAAKspB,KAAOA,CACd,CAEA,MAAM4rD,GAAsB,CAE1B,IAAIL,GAAO,EAAG,EAAG,EAAG,EAAGf,IACvB,IAAIe,GAAO,EAAG,EAAG,EAAG,EAAGV,IACvB,IAAIU,GAAO,EAAG,EAAG,GAAI,EAAGV,IACxB,IAAIU,GAAO,EAAG,EAAG,GAAI,GAAIV,IAEzB,IAAIU,GAAO,EAAG,EAAG,GAAI,GAAIJ,IACzB,IAAII,GAAO,EAAG,GAAI,GAAI,GAAIJ,IAC1B,IAAII,GAAO,EAAG,GAAI,IAAK,IAAKJ,IAC5B,IAAII,GAAO,EAAG,GAAI,IAAK,IAAKJ,IAC5B,IAAII,GAAO,GAAI,IAAK,IAAK,KAAMJ,IAC/B,IAAII,GAAO,GAAI,IAAK,IAAK,KAAMJ,KA+BjC,SAASU,KACPn1E,KAAK+1B,KAAO,KACZ/1B,KAAKkuB,OAAS,EACdluB,KAAKqpE,YAAc,KACnBrpE,KAAKg0E,iBAAmB,EACxBh0E,KAAK+xE,YAAc,EACnB/xE,KAAKspE,QAAU,EACftpE,KAAKi2B,KAAO,EACZj2B,KAAKo1E,OAAS,KACdp1E,KAAKq1E,QAAU,EACfr1E,KAAKmsB,OAAS4kD,GACd/wE,KAAKs1E,YAAc,EAEnBt1E,KAAKwxE,OAAS,EACdxxE,KAAKu1E,OAAS,EACdv1E,KAAKkzE,OAAS,EAEdlzE,KAAK42B,OAAS,KAQd52B,KAAK2zE,YAAc,EAKnB3zE,KAAK60C,KAAO,KAMZ70C,KAAKu2B,KAAO,KAEZv2B,KAAK6zE,MAAQ,EACb7zE,KAAKyxE,UAAY,EACjBzxE,KAAKw1E,UAAY,EACjBx1E,KAAK6xE,UAAY,EAEjB7xE,KAAK4xE,WAAa,EAOlB5xE,KAAKiyE,YAAc,EAKnBjyE,KAAKs0E,aAAe,EACpBt0E,KAAK20E,WAAa,EAClB30E,KAAK40E,gBAAkB,EACvB50E,KAAKkyE,SAAW,EAChBlyE,KAAKwzE,YAAc,EACnBxzE,KAAKuzE,UAAY,EAEjBvzE,KAAK6yE,YAAc,EAKnB7yE,KAAK0yE,iBAAmB,EAMxB1yE,KAAKu0E,eAAiB,EAYtBv0E,KAAK+sE,MAAQ,EACb/sE,KAAKutE,SAAW,EAEhBvtE,KAAKszE,WAAa,EAGlBtzE,KAAK8yE,WAAa,EAYlB9yE,KAAKiqE,UAAa,IAAItyC,YAAY89C,MAClCz1E,KAAKkqE,UAAa,IAAIvyC,YAAY,KAClC33B,KAAKmqE,QAAa,IAAIxyC,YAAY,IAClC25C,GAAKtxE,KAAKiqE,WACVqH,GAAKtxE,KAAKkqE,WACVoH,GAAKtxE,KAAKmqE,SAEVnqE,KAAKktE,OAAW,KAChBltE,KAAKmtE,OAAW,KAChBntE,KAAKotE,QAAW,KAGhBptE,KAAK8pE,SAAW,IAAInyC,YAAY+9C,IAIhC11E,KAAK8qE,KAAO,IAAInzC,YAAY,KAC5B25C,GAAKtxE,KAAK8qE,MAEV9qE,KAAK+qE,SAAW,EAChB/qE,KAAKyrE,SAAW,EAKhBzrE,KAAK0qE,MAAQ,IAAI/yC,YAAY,KAC7B25C,GAAKtxE,KAAK0qE,OAIV1qE,KAAKqrE,QAAU,EAEfrrE,KAAK21E,YAAc,EAoBnB31E,KAAKuqE,SAAW,EAChBvqE,KAAKquE,QAAU,EAEfruE,KAAKqqE,QAAU,EACfrqE,KAAKsqE,WAAa,EAClBtqE,KAAKy9D,QAAU,EACfz9D,KAAK4zE,OAAS,EAGd5zE,KAAKypE,OAAS,EAIdzpE,KAAKwpE,SAAW,CAalB,CAMA,MAAMoM,GAAqB7/C,IAEzB,IAAKA,EACH,OAAO,EAET,MAAMrlB,EAAIqlB,EAAKr1B,MACf,OAAKgQ,GAAKA,EAAEqlB,OAASA,GAASrlB,EAAEwd,SAAWgjD,IAlyCtB,KAoyCSxgE,EAAEwd,QAlyCX,KAoyCSxd,EAAEwd,QAnyCX,KAoyCSxd,EAAEwd,QAnyCX,KAoyCSxd,EAAEwd,QAnyCZ,MAoyCUxd,EAAEwd,QACFxd,EAAEwd,SAAWijD,IACbzgE,EAAEwd,SAAWkjD,GAClC,EAEF,CAAC,EAIJyE,GAAoB9/C,IAExB,GAAI6/C,GAAkB7/C,GACpB,OAAOnM,GAAImM,EAAM26C,IAGnB36C,EAAK31B,SAAW21B,EAAKv1B,UAAY,EACjCu1B,EAAKp1B,UAAYwvE,GAEjB,MAAMz/D,EAAIqlB,EAAKr1B,MAmBf,OAlBAgQ,EAAE44D,QAAU,EACZ54D,EAAEqhE,YAAc,EAEZrhE,EAAEulB,KAAO,IACXvlB,EAAEulB,MAAQvlB,EAAEulB,MAGdvlB,EAAEwd,OAEW,IAAXxd,EAAEulB,KAr0CiB,GAu0CnBvlB,EAAEulB,KAAOi7C,GAAaC,GACxBp7C,EAAKn1B,MAAoB,IAAX8P,EAAEulB,KACd,EAEA,EACFvlB,EAAE4kE,YAAc,EAChBxH,EAASp9D,GACF8/D,EAAM,EAITsF,GAAgB//C,IAEpB,MAAM0C,EAAMo9C,GAAiB9/C,GA3QdrlB,MA+Qf,OAHI+nB,IAAQ+3C,MA5QG9/D,EA6QLqlB,EAAKr1B,OA3QbizE,YAAc,EAAIjjE,EAAE8gE,OAGtBF,GAAK5gE,EAAE6lB,MAIP7lB,EAAE6jE,eAAiBW,GAAoBxkE,EAAEq8D,OAAOgI,SAChDrkE,EAAE4iE,WAAa4B,GAAoBxkE,EAAEq8D,OAAO+H,YAC5CpkE,EAAEoiE,WAAaoC,GAAoBxkE,EAAEq8D,OAAOiI,YAC5CtkE,EAAEgiE,iBAAmBwC,GAAoBxkE,EAAEq8D,OAAOkI,UAElDvkE,EAAEwhE,SAAW,EACbxhE,EAAEuhE,YAAc,EAChBvhE,EAAE6iE,UAAY,EACd7iE,EAAEkjE,OAAS,EACXljE,EAAE4jE,aAAe5jE,EAAEmiE,YAAc2B,EACjC9jE,EAAEkkE,gBAAkB,EACpBlkE,EAAEmjE,MAAQ,GA2PHp7C,CAAG,EAcNs9C,GAAeA,CAAChgD,EAAMg3C,EAAO5gD,EAAQoM,EAAYy9C,EAAUzI,KAE/D,IAAKx3C,EACH,OAAO26C,GAET,IAAIz6C,EAAO,EAiBX,GAfI82C,IAAU8D,KACZ9D,EAAQ,GAGNx0C,EAAa,GACftC,EAAO,EACPsC,GAAcA,GAGPA,EAAa,KACpBtC,EAAO,EACPsC,GAAc,IAIZy9C,EAAW,GAAKA,EA15CA,GA05C4B7pD,IAAW4kD,IACzDx4C,EAAa,GAAKA,EAAa,IAAMw0C,EAAQ,GAAKA,EAAQ,GAC1DQ,EAAW,GAAKA,EAAWwC,IAA2B,IAAfx3C,GAA6B,IAATtC,EAC3D,OAAOrM,GAAImM,EAAM26C,IAIA,IAAfn4C,IACFA,EAAa,GAIf,MAAM7nB,EAAI,IAAIykE,GAmFd,OAjFAp/C,EAAKr1B,MAAQgQ,EACbA,EAAEqlB,KAAOA,EACTrlB,EAAEwd,OAASgjD,GAEXxgE,EAAEulB,KAAOA,EACTvlB,EAAE0kE,OAAS,KACX1kE,EAAE6kE,OAASh9C,EACX7nB,EAAE8gE,OAAS,GAAK9gE,EAAE6kE,OAClB7kE,EAAEwiE,OAASxiE,EAAE8gE,OAAS,EAEtB9gE,EAAE8kE,UAAYQ,EAAW,EACzBtlE,EAAE+gE,UAAY,GAAK/gE,EAAE8kE,UACrB9kE,EAAEmhE,UAAYnhE,EAAE+gE,UAAY,EAC5B/gE,EAAEkhE,eAAiBlhE,EAAE8kE,UA/5CL,EA+5C6B,GA/5C7B,GAi6ChB9kE,EAAEkmB,OAAS,IAAItG,WAAsB,EAAX5f,EAAE8gE,QAC5B9gE,EAAE6lB,KAAO,IAAIoB,YAAYjnB,EAAE+gE,WAC3B/gE,EAAEmkC,KAAO,IAAIld,YAAYjnB,EAAE8gE,QAK3B9gE,EAAEilE,YAAc,GAAMK,EAAW,EAyCjCtlE,EAAEsjE,iBAAmC,EAAhBtjE,EAAEilE,YACvBjlE,EAAE24D,YAAc,IAAI/4C,WAAW5f,EAAEsjE,kBAIjCtjE,EAAE26D,QAAU36D,EAAEilE,YAGdjlE,EAAE29D,QAAgC,GAArB39D,EAAEilE,YAAc,GAM7BjlE,EAAEq8D,MAAQA,EACVr8D,EAAE68D,SAAWA,EACb78D,EAAEyb,OAASA,EAEJ2pD,GAAa//C,EAAK,EA2c3B,IAoBIkgD,GAAc,CACjBC,YA7dmBA,CAACngD,EAAMg3C,IAElBgJ,GAAahgD,EAAMg3C,EAAOgE,GA5/Cf,GAEE,EA0/CuDD,IA4d5EiF,aArBoBA,GAsBpBD,aArBoBA,GAsBpBD,iBArBwBA,GAsBxBM,iBAnmBwBA,CAACpgD,EAAMQ,IAE1Bq/C,GAAkB7/C,IAA6B,IAApBA,EAAKr1B,MAAMu1B,KACjCy6C,IAET36C,EAAKr1B,MAAM00E,OAAS7+C,EACbi6C,IA8lBR4F,QA3diBC,CAACtgD,EAAMqD,KAEvB,GAAIw8C,GAAkB7/C,IAASqD,EAAQm3C,IAAan3C,EAAQ,EAC1D,OAAOrD,EAAOnM,GAAImM,EAAM26C,IAAoBA,GAG9C,MAAMhgE,EAAIqlB,EAAKr1B,MAEf,IAAKq1B,EAAK11B,QACa,IAAlB01B,EAAK51B,WAAmB41B,EAAK91B,OAC7ByQ,EAAEwd,SAAWkjD,IAAgBh4C,IAAUk3C,GAC1C,OAAO1mD,GAAImM,EAA0B,IAAnBA,EAAKx1B,UAAmBqwE,GAAgBF,IAG5D,MAAM4F,EAAY5lE,EAAE4kE,WAIpB,GAHA5kE,EAAE4kE,WAAal8C,EAGG,IAAd1oB,EAAE44D,SAEJ,GADAwI,GAAc/7C,GACS,IAAnBA,EAAKx1B,UAQP,OADAmQ,EAAE4kE,YAAc,EACT9E,QAOJ,GAAsB,IAAlBz6C,EAAK51B,UAAkBytE,GAAKx0C,IAAUw0C,GAAK0I,IACpDl9C,IAAUk3C,GACV,OAAO1mD,GAAImM,EAAM66C,IAInB,GAAIlgE,EAAEwd,SAAWkjD,IAAkC,IAAlBr7C,EAAK51B,SACpC,OAAOypB,GAAImM,EAAM66C,IAOnB,GAHIlgE,EAAEwd,SAAWgjD,IAAyB,IAAXxgE,EAAEulB,OAC/BvlB,EAAEwd,OAASijD,IAETzgE,EAAEwd,SAAWgjD,GAAY,CAE3B,IAAIh/C,EAAU6+C,IAAiBrgE,EAAE6kE,OAAS,GAAM,IAAO,EACnDgB,GAAe,EA2BnB,GAxBEA,EADE7lE,EAAE68D,UAAYsC,IAAkBn/D,EAAEq8D,MAAQ,EAC9B,EACLr8D,EAAEq8D,MAAQ,EACL,EACO,IAAZr8D,EAAEq8D,MACG,EAEA,EAEhB76C,GAAWqkD,GAAe,EACP,IAAf7lE,EAAEwhE,WAAkBhgD,GAziDR,IA0iDhBA,GAAU,GAAMA,EAAS,GAEzBkgD,GAAY1hE,EAAGwhB,GAGI,IAAfxhB,EAAEwhE,WACJE,GAAY1hE,EAAGqlB,EAAKn1B,QAAU,IAC9BwxE,GAAY1hE,EAAgB,MAAbqlB,EAAKn1B,QAEtBm1B,EAAKn1B,MAAQ,EACb8P,EAAEwd,OAASijD,GAGXW,GAAc/7C,GACI,IAAdrlB,EAAE44D,QAEJ,OADA54D,EAAE4kE,YAAc,EACT9E,EAEX,CAEA,GA1jDqB,KA0jDjB9/D,EAAEwd,OAMJ,GAJA6H,EAAKn1B,MAAQ,EACbuxE,GAASzhE,EAAG,IACZyhE,GAASzhE,EAAG,KACZyhE,GAASzhE,EAAG,GACPA,EAAE0kE,OAoBLjD,GAASzhE,GAAIA,EAAE0kE,OAAOhnD,KAAO,EAAI,IACpB1d,EAAE0kE,OAAOz6C,KAAO,EAAI,IACnBjqB,EAAE0kE,OAAOp+C,MAAY,EAAJ,IACjBtmB,EAAE0kE,OAAOxjE,KAAW,EAAJ,IAChBlB,EAAE0kE,OAAO16C,QAAc,GAAJ,IAEjCy3C,GAASzhE,EAAmB,IAAhBA,EAAE0kE,OAAO/6C,MACrB83C,GAASzhE,EAAIA,EAAE0kE,OAAO/6C,MAAQ,EAAK,KACnC83C,GAASzhE,EAAIA,EAAE0kE,OAAO/6C,MAAQ,GAAM,KACpC83C,GAASzhE,EAAIA,EAAE0kE,OAAO/6C,MAAQ,GAAM,KACpC83C,GAASzhE,EAAe,IAAZA,EAAEq8D,MAAc,EACfr8D,EAAE68D,UAAYsC,IAAkBn/D,EAAEq8D,MAAQ,EAC1C,EAAI,GACjBoF,GAASzhE,EAAiB,IAAdA,EAAE0kE,OAAO76C,IACjB7pB,EAAE0kE,OAAOp+C,OAAStmB,EAAE0kE,OAAOp+C,MAAMn1B,SACnCswE,GAASzhE,EAA2B,IAAxBA,EAAE0kE,OAAOp+C,MAAMn1B,QAC3BswE,GAASzhE,EAAIA,EAAE0kE,OAAOp+C,MAAMn1B,QAAU,EAAK,MAEzC6O,EAAE0kE,OAAOz6C,OACX5E,EAAKn1B,MAAQmuE,EAAQh5C,EAAKn1B,MAAO8P,EAAE24D,YAAa34D,EAAE44D,QAAS,IAE7D54D,EAAE2kE,QAAU,EACZ3kE,EAAEwd,OAxmDe,QA4kDjB,GAbAikD,GAASzhE,EAAG,GACZyhE,GAASzhE,EAAG,GACZyhE,GAASzhE,EAAG,GACZyhE,GAASzhE,EAAG,GACZyhE,GAASzhE,EAAG,GACZyhE,GAASzhE,EAAe,IAAZA,EAAEq8D,MAAc,EACfr8D,EAAE68D,UAAYsC,IAAkBn/D,EAAEq8D,MAAQ,EAC1C,EAAI,GACjBoF,GAASzhE,EA3jDC,GA4jDVA,EAAEwd,OAASijD,GAGXW,GAAc/7C,GACI,IAAdrlB,EAAE44D,QAEJ,OADA54D,EAAE4kE,YAAc,EACT9E,GA6Bb,GA3mDqB,KA2mDjB9/D,EAAEwd,OAAwB,CAC5B,GAAIxd,EAAE0kE,OAAOp+C,MAAqB,CAChC,IAAIkiC,EAAMxoD,EAAE44D,QACRjwC,GAAgC,MAAxB3oB,EAAE0kE,OAAOp+C,MAAMn1B,QAAmB6O,EAAE2kE,QAChD,KAAO3kE,EAAE44D,QAAUjwC,EAAO3oB,EAAEsjE,kBAAkB,CAC5C,IAAIz8D,EAAO7G,EAAEsjE,iBAAmBtjE,EAAE44D,QAYlC,GATA54D,EAAE24D,YAAY/yD,IAAI5F,EAAE0kE,OAAOp+C,MAAMpG,SAASlgB,EAAE2kE,QAAS3kE,EAAE2kE,QAAU99D,GAAO7G,EAAE44D,SAC1E54D,EAAE44D,QAAU54D,EAAEsjE,iBAEVtjE,EAAE0kE,OAAOz6C,MAAQjqB,EAAE44D,QAAUpQ,IAC/BnjC,EAAKn1B,MAAQmuE,EAAQh5C,EAAKn1B,MAAO8P,EAAE24D,YAAa34D,EAAE44D,QAAUpQ,EAAKA,IAGnExoD,EAAE2kE,SAAW99D,EACbu6D,GAAc/7C,GACI,IAAdrlB,EAAE44D,QAEJ,OADA54D,EAAE4kE,YAAc,EACT9E,GAETtX,EAAM,EACN7/B,GAAQ9hB,CACV,CAGA,IAAIi/D,EAAe,IAAIlmD,WAAW5f,EAAE0kE,OAAOp+C,OAG3CtmB,EAAE24D,YAAY/yD,IAAIkgE,EAAa5lD,SAASlgB,EAAE2kE,QAAS3kE,EAAE2kE,QAAUh8C,GAAO3oB,EAAE44D,SACxE54D,EAAE44D,SAAWjwC,EAET3oB,EAAE0kE,OAAOz6C,MAAQjqB,EAAE44D,QAAUpQ,IAC/BnjC,EAAKn1B,MAAQmuE,EAAQh5C,EAAKn1B,MAAO8P,EAAE24D,YAAa34D,EAAE44D,QAAUpQ,EAAKA,IAGnExoD,EAAE2kE,QAAU,CACd,CACA3kE,EAAEwd,OAhpDiB,EAipDrB,CACA,GAlpDqB,KAkpDjBxd,EAAEwd,OAAuB,CAC3B,GAAIxd,EAAE0kE,OAAOxjE,KAAoB,CAC/B,IACIjD,EADAuqD,EAAMxoD,EAAE44D,QAEZ,EAAG,CACD,GAAI54D,EAAE44D,UAAY54D,EAAEsjE,iBAAkB,CAOpC,GALItjE,EAAE0kE,OAAOz6C,MAAQjqB,EAAE44D,QAAUpQ,IAC/BnjC,EAAKn1B,MAAQmuE,EAAQh5C,EAAKn1B,MAAO8P,EAAE24D,YAAa34D,EAAE44D,QAAUpQ,EAAKA,IAGnE4Y,GAAc/7C,GACI,IAAdrlB,EAAE44D,QAEJ,OADA54D,EAAE4kE,YAAc,EACT9E,GAETtX,EAAM,CACR,CAGEvqD,EADE+B,EAAE2kE,QAAU3kE,EAAE0kE,OAAOxjE,KAAK/P,OACkB,IAAxC6O,EAAE0kE,OAAOxjE,KAAKd,WAAWJ,EAAE2kE,WAE3B,EAERlD,GAASzhE,EAAG/B,EACd,OAAiB,IAARA,GAEL+B,EAAE0kE,OAAOz6C,MAAQjqB,EAAE44D,QAAUpQ,IAC/BnjC,EAAKn1B,MAAQmuE,EAAQh5C,EAAKn1B,MAAO8P,EAAE24D,YAAa34D,EAAE44D,QAAUpQ,EAAKA,IAGnExoD,EAAE2kE,QAAU,CACd,CACA3kE,EAAEwd,OAlrDiB,EAmrDrB,CACA,GAprDqB,KAorDjBxd,EAAEwd,OAA0B,CAC9B,GAAIxd,EAAE0kE,OAAO16C,QAAuB,CAClC,IACI/rB,EADAuqD,EAAMxoD,EAAE44D,QAEZ,EAAG,CACD,GAAI54D,EAAE44D,UAAY54D,EAAEsjE,iBAAkB,CAOpC,GALItjE,EAAE0kE,OAAOz6C,MAAQjqB,EAAE44D,QAAUpQ,IAC/BnjC,EAAKn1B,MAAQmuE,EAAQh5C,EAAKn1B,MAAO8P,EAAE24D,YAAa34D,EAAE44D,QAAUpQ,EAAKA,IAGnE4Y,GAAc/7C,GACI,IAAdrlB,EAAE44D,QAEJ,OADA54D,EAAE4kE,YAAc,EACT9E,GAETtX,EAAM,CACR,CAGEvqD,EADE+B,EAAE2kE,QAAU3kE,EAAE0kE,OAAO16C,QAAQ74B,OACkB,IAA3C6O,EAAE0kE,OAAO16C,QAAQ5pB,WAAWJ,EAAE2kE,WAE9B,EAERlD,GAASzhE,EAAG/B,EACd,OAAiB,IAARA,GAEL+B,EAAE0kE,OAAOz6C,MAAQjqB,EAAE44D,QAAUpQ,IAC/BnjC,EAAKn1B,MAAQmuE,EAAQh5C,EAAKn1B,MAAO8P,EAAE24D,YAAa34D,EAAE44D,QAAUpQ,EAAKA,GAGrE,CACAxoD,EAAEwd,OAntDgB,GAotDpB,CACA,GArtDoB,MAqtDhBxd,EAAEwd,OAAuB,CAC3B,GAAIxd,EAAE0kE,OAAOz6C,KAAM,CACjB,GAAIjqB,EAAE44D,QAAU,EAAI54D,EAAEsjE,mBACpBlC,GAAc/7C,GACI,IAAdrlB,EAAE44D,SAEJ,OADA54D,EAAE4kE,YAAc,EACT9E,GAGX2B,GAASzhE,EAAgB,IAAbqlB,EAAKn1B,OACjBuxE,GAASzhE,EAAIqlB,EAAKn1B,OAAS,EAAK,KAChCm1B,EAAKn1B,MAAQ,CACf,CAKA,GAJA8P,EAAEwd,OAASijD,GAGXW,GAAc/7C,GACI,IAAdrlB,EAAE44D,QAEJ,OADA54D,EAAE4kE,YAAc,EACT9E,EAEX,CAKA,GAAsB,IAAlBz6C,EAAK51B,UAAkC,IAAhBuQ,EAAE6iE,WAC1Bn6C,IAAUg3C,GAAgB1/D,EAAEwd,SAAWkjD,GAAe,CACvD,IAAIqF,EAAqB,IAAZ/lE,EAAEq8D,MAAc+G,GAAepjE,EAAG0oB,GAClC1oB,EAAE68D,WAAasC,GApwBX6G,EAAChmE,EAAG0oB,KAEvB,IAAIi7C,EAEJ,OAAS,CAEP,GAAoB,IAAhB3jE,EAAE6iE,YACJE,GAAY/iE,GACQ,IAAhBA,EAAE6iE,WAAiB,CACrB,GAAIn6C,IAAUg3C,EACZ,OAp/BgB,EAs/BlB,KACF,CAUF,GANA1/D,EAAE4jE,aAAe,EAGjBD,EAASlG,EAAUz9D,EAAG,EAAGA,EAAEkmB,OAAOlmB,EAAEwhE,WACpCxhE,EAAE6iE,YACF7iE,EAAEwhE,WACEmC,IAEFrC,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,WACT,OArgCkB,CAygCxB,CAEA,OADAmQ,EAAEkjE,OAAS,EACPx6C,IAAUk3C,IAEZ0B,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,UA5gCW,EACA,GAihCpBmQ,EAAE65D,WAEJyH,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,WAvhCW,EACA,CA2hCJ,EAktB2Bm2E,CAAahmE,EAAG0oB,GAChD1oB,EAAE68D,WAAauC,GAr2BZ6G,EAACjmE,EAAG0oB,KAEtB,IAAIi7C,EACAx/B,EACA89B,EAAMQ,EAEV,MAAMH,EAAOtiE,EAAEkmB,OAEf,OAAS,CAKP,GAAIlmB,EAAE6iE,WAAavC,GAAW,CAE5B,GADAyC,GAAY/iE,GACRA,EAAE6iE,WAAavC,IAAa53C,IAAUg3C,EACxC,OA15BkB,EA45BpB,GAAoB,IAAhB1/D,EAAE6iE,UAAmB,KAC3B,CAIA,GADA7iE,EAAE4jE,aAAe,EACb5jE,EAAE6iE,WAl7BQ,GAk7BkB7iE,EAAEwhE,SAAW,IAC3CS,EAAOjiE,EAAEwhE,SAAW,EACpBr9B,EAAOm+B,EAAKL,GACR99B,IAASm+B,IAAOL,IAAS99B,IAASm+B,IAAOL,IAAS99B,IAASm+B,IAAOL,IAAO,CAC3EQ,EAASziE,EAAEwhE,SAAWlB,GACtB,UAESn8B,IAASm+B,IAAOL,IAAS99B,IAASm+B,IAAOL,IACzC99B,IAASm+B,IAAOL,IAAS99B,IAASm+B,IAAOL,IACzC99B,IAASm+B,IAAOL,IAAS99B,IAASm+B,IAAOL,IACzC99B,IAASm+B,IAAOL,IAAS99B,IAASm+B,IAAOL,IACzCA,EAAOQ,GAChBziE,EAAE4jE,aAAetD,IAAamC,EAASR,GACnCjiE,EAAE4jE,aAAe5jE,EAAE6iE,YACrB7iE,EAAE4jE,aAAe5jE,EAAE6iE,UAEvB,CAuBF,GAlBI7iE,EAAE4jE,cAv8BQ,GA28BZD,EAASlG,EAAUz9D,EAAG,EAAGA,EAAE4jE,aA38Bf,GA68BZ5jE,EAAE6iE,WAAa7iE,EAAE4jE,aACjB5jE,EAAEwhE,UAAYxhE,EAAE4jE,aAChB5jE,EAAE4jE,aAAe,IAKjBD,EAASlG,EAAUz9D,EAAG,EAAGA,EAAEkmB,OAAOlmB,EAAEwhE,WAEpCxhE,EAAE6iE,YACF7iE,EAAEwhE,YAEAmC,IAEFrC,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,WACT,OA58BkB,CAg9BxB,CAEA,OADAmQ,EAAEkjE,OAAS,EACPx6C,IAAUk3C,IAEZ0B,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,UAn9BW,EACA,GAw9BpBmQ,EAAE65D,WAEJyH,GAAiBthE,GAAG,GACK,IAArBA,EAAEqlB,KAAKx1B,WA99BW,EACA,CAk+BJ,EA4wBkBo2E,CAAYjmE,EAAG0oB,GACtC87C,GAAoBxkE,EAAEq8D,OAAOzjD,KAAK5Y,EAAG0oB,GAKlD,GAnvDsB,IAgvDlBq9C,GA/uDkB,IA+uDcA,IAClC/lE,EAAEwd,OAASkjD,IAnvDS,IAqvDlBqF,GAnvDkB,IAmvDSA,EAK7B,OAJuB,IAAnB1gD,EAAKx1B,YACPmQ,EAAE4kE,YAAc,GAGX9E,GAST,GAlwDsB,IAkwDlBiG,IACEr9C,IAAUg2C,EACZd,EAAU59D,GAEH0oB,IAAUm3C,KAEjBtC,EAAiBv9D,EAAG,EAAG,GAAG,GAItB0oB,IAAUi3C,IAEZiB,GAAK5gE,EAAE6lB,MAEa,IAAhB7lB,EAAE6iE,YACJ7iE,EAAEwhE,SAAW,EACbxhE,EAAEuhE,YAAc,EAChBvhE,EAAEkjE,OAAS,KAIjB9B,GAAc/7C,GACS,IAAnBA,EAAKx1B,WAEP,OADAmQ,EAAE4kE,YAAc,EACT9E,EAGb,CAEA,OAAIp3C,IAAUk3C,GAAqBE,GAC/B9/D,EAAEulB,MAAQ,EAAYw6C,IAGX,IAAX//D,EAAEulB,MACJk8C,GAASzhE,EAAgB,IAAbqlB,EAAKn1B,OACjBuxE,GAASzhE,EAAIqlB,EAAKn1B,OAAS,EAAK,KAChCuxE,GAASzhE,EAAIqlB,EAAKn1B,OAAS,GAAM,KACjCuxE,GAASzhE,EAAIqlB,EAAKn1B,OAAS,GAAM,KACjCuxE,GAASzhE,EAAmB,IAAhBqlB,EAAK31B,UACjB+xE,GAASzhE,EAAIqlB,EAAK31B,UAAY,EAAK,KACnC+xE,GAASzhE,EAAIqlB,EAAK31B,UAAY,GAAM,KACpC+xE,GAASzhE,EAAIqlB,EAAK31B,UAAY,GAAM,OAIpCgyE,GAAY1hE,EAAGqlB,EAAKn1B,QAAU,IAC9BwxE,GAAY1hE,EAAgB,MAAbqlB,EAAKn1B,QAGtBkxE,GAAc/7C,GAIVrlB,EAAEulB,KAAO,IAAKvlB,EAAEulB,MAAQvlB,EAAEulB,MAET,IAAdvlB,EAAE44D,QAAgBkH,GAASC,GAAc,EA8HjDmG,WA1HmB7gD,IAElB,GAAI6/C,GAAkB7/C,GACpB,OAAO26C,GAGT,MAAMxiD,EAAS6H,EAAKr1B,MAAMwtB,OAI1B,OAFA6H,EAAKr1B,MAAQ,KAENwtB,IAAWijD,GAAavnD,GAAImM,EAAM46C,IAAkBH,EAAM,EAiHlEqG,qBAzG4BA,CAAC9gD,EAAMgF,KAElC,IAAIC,EAAaD,EAAWl5B,OAE5B,GAAI+zE,GAAkB7/C,GACpB,OAAO26C,GAGT,MAAMhgE,EAAIqlB,EAAKr1B,MACTu1B,EAAOvlB,EAAEulB,KAEf,GAAa,IAATA,GAAwB,IAATA,GAAcvlB,EAAEwd,SAAWgjD,IAAexgE,EAAE6iE,UAC7D,OAAO7C,GAYT,GARa,IAATz6C,IAEFF,EAAKn1B,MAAQ6tE,EAAU14C,EAAKn1B,MAAOm6B,EAAYC,EAAY,IAG7DtqB,EAAEulB,KAAO,EAGL+E,GAActqB,EAAE8gE,OAAQ,CACb,IAATv7C,IAEFq7C,GAAK5gE,EAAE6lB,MACP7lB,EAAEwhE,SAAW,EACbxhE,EAAEuhE,YAAc,EAChBvhE,EAAEkjE,OAAS,GAIb,IAAIkD,EAAU,IAAIxmD,WAAW5f,EAAE8gE,QAC/BsF,EAAQxgE,IAAIykB,EAAWnK,SAASoK,EAAatqB,EAAE8gE,OAAQx2C,GAAa,GACpED,EAAa+7C,EACb97C,EAAatqB,EAAE8gE,MACjB,CAEA,MAAMuF,EAAQhhD,EAAK51B,SACbs3B,EAAO1B,EAAK71B,QACZD,EAAQ81B,EAAK91B,MAKnB,IAJA81B,EAAK51B,SAAW66B,EAChBjF,EAAK71B,QAAU,EACf61B,EAAK91B,MAAQ86B,EACb04C,GAAY/iE,GACLA,EAAE6iE,WAh5DO,GAg5DiB,CAC/B,IAAIvhE,EAAMtB,EAAEwhE,SACR3hE,EAAIG,EAAE6iE,UAAY,EACtB,GAEE7iE,EAAEmjE,MAAQnC,GAAKhhE,EAAGA,EAAEmjE,MAAOnjE,EAAEkmB,OAAO5kB,EAr5DxB,EAq5D0C,IAEtDtB,EAAEmkC,KAAK7iC,EAAMtB,EAAEwiE,QAAUxiE,EAAE6lB,KAAK7lB,EAAEmjE,OAElCnjE,EAAE6lB,KAAK7lB,EAAEmjE,OAAS7hE,EAClBA,YACSzB,GACXG,EAAEwhE,SAAWlgE,EACbtB,EAAE6iE,UAAYiB,EACdf,GAAY/iE,EACd,CAWA,OAVAA,EAAEwhE,UAAYxhE,EAAE6iE,UAChB7iE,EAAEuhE,YAAcvhE,EAAEwhE,SAClBxhE,EAAEkjE,OAASljE,EAAE6iE,UACb7iE,EAAE6iE,UAAY,EACd7iE,EAAE4jE,aAAe5jE,EAAEmiE,YAAc2B,EACjC9jE,EAAEkkE,gBAAkB,EACpB7+C,EAAK71B,QAAUu3B,EACf1B,EAAK91B,MAAQA,EACb81B,EAAK51B,SAAW42E,EAChBrmE,EAAEulB,KAAOA,EACFu6C,EAAM,EAiCdwG,YArBiB,sCAwBlB,MAAMC,GAAOA,CAACroE,EAAK5E,IACVhH,OAAO4H,UAAU4L,eAAeM,KAAKlI,EAAK5E,GAGnD,IA0CIktE,GA1CS,SAAUtoE,GACrB,MAAM/L,EAAUsH,MAAMS,UAAU8C,MAAMoJ,KAAKlV,UAAW,GACtD,KAAOiB,EAAQhB,QAAQ,CACrB,MAAMT,EAASyB,EAAQkL,QACvB,GAAK3M,EAAL,CAEA,GAAsB,kBAAXA,EACT,MAAM,IAAI69B,UAAU79B,EAAS,sBAG/B,IAAK,MAAMmV,KAAKnV,EACV61E,GAAK71E,EAAQmV,KACf3H,EAAI2H,GAAKnV,EAAOmV,GARK,CAW3B,CAEA,OAAO3H,CACT,EAwBIsoE,GApBiBC,IAEnB,IAAIhlE,EAAM,EAEV,IAAK,IAAInH,EAAI,EAAGwG,EAAI2lE,EAAOt1E,OAAQmJ,EAAIwG,EAAGxG,IACxCmH,GAAOglE,EAAOnsE,GAAGnJ,OAInB,MAAM8sB,EAAS,IAAI2B,WAAWne,GAE9B,IAAK,IAAInH,EAAI,EAAGmlB,EAAM,EAAG3e,EAAI2lE,EAAOt1E,OAAQmJ,EAAIwG,EAAGxG,IAAK,CACtD,IAAIkpB,EAAQijD,EAAOnsE,GACnB2jB,EAAOrY,IAAI4d,EAAO/D,GAClBA,GAAO+D,EAAMryB,MACf,CAEA,OAAO8sB,CAAM,EAgBf,IAAIyoD,IAAmB,EAEvB,IAAMvlE,OAAO4oB,aAAa48C,MAAM,KAAM,IAAI/mD,WAAW,GAAK,CAAE,MAAOgnD,IAAMF,IAAmB,CAAO,CAMnG,MAAMG,GAAW,IAAIjnD,WAAW,KAChC,IAAK,IAAIlX,GAAI,EAAGA,GAAI,IAAKA,KACvBm+D,GAASn+D,IAAMA,IAAK,IAAM,EAAIA,IAAK,IAAM,EAAIA,IAAK,IAAM,EAAIA,IAAK,IAAM,EAAIA,IAAK,IAAM,EAAI,EAE5Fm+D,GAAS,KAAOA,GAAS,KAAO,EAiFhC,IAyEIC,GAtJcxlE,IAChB,GAA2B,oBAAhBylE,aAA8BA,YAAY7sE,UAAUuV,OAC7D,OAAO,IAAIs3D,aAAct3D,OAAOnO,GAGlC,IAAIq1D,EAAKj2D,EAAGo6C,EAAIksB,EAAO1sE,EAAG2sE,EAAU3lE,EAAInQ,OAAQ+1E,EAAU,EAG1D,IAAKF,EAAQ,EAAGA,EAAQC,EAASD,IAC/BtmE,EAAIY,EAAIlB,WAAW4mE,GACE,SAAZ,MAAJtmE,IAA2BsmE,EAAQ,EAAIC,IAC1CnsB,EAAKx5C,EAAIlB,WAAW4mE,EAAQ,GACN,SAAZ,MAALlsB,KACHp6C,EAAI,OAAYA,EAAI,OAAW,KAAOo6C,EAAK,OAC3CksB,MAGJE,GAAWxmE,EAAI,IAAO,EAAIA,EAAI,KAAQ,EAAIA,EAAI,MAAU,EAAI,EAO9D,IAHAi2D,EAAM,IAAI/2C,WAAWsnD,GAGhB5sE,EAAI,EAAG0sE,EAAQ,EAAG1sE,EAAI4sE,EAASF,IAClCtmE,EAAIY,EAAIlB,WAAW4mE,GACE,SAAZ,MAAJtmE,IAA2BsmE,EAAQ,EAAIC,IAC1CnsB,EAAKx5C,EAAIlB,WAAW4mE,EAAQ,GACN,SAAZ,MAALlsB,KACHp6C,EAAI,OAAYA,EAAI,OAAW,KAAOo6C,EAAK,OAC3CksB,MAGAtmE,EAAI,IAENi2D,EAAIr8D,KAAOoG,EACFA,EAAI,MAEbi2D,EAAIr8D,KAAO,IAAQoG,IAAM,EACzBi2D,EAAIr8D,KAAO,IAAY,GAAJoG,GACVA,EAAI,OAEbi2D,EAAIr8D,KAAO,IAAQoG,IAAM,GACzBi2D,EAAIr8D,KAAO,IAAQoG,IAAM,EAAI,GAC7Bi2D,EAAIr8D,KAAO,IAAY,GAAJoG,IAGnBi2D,EAAIr8D,KAAO,IAAQoG,IAAM,GACzBi2D,EAAIr8D,KAAO,IAAQoG,IAAM,GAAK,GAC9Bi2D,EAAIr8D,KAAO,IAAQoG,IAAM,EAAI,GAC7Bi2D,EAAIr8D,KAAO,IAAY,GAAJoG,GAIvB,OAAOi2D,CAAG,EAgGRmQ,GAzEaK,CAACxQ,EAAK11D,KACrB,MAAMQ,EAAMR,GAAO01D,EAAIxlE,OAEvB,GAA2B,oBAAhBi2E,aAA8BA,YAAYltE,UAAU6U,OAC7D,OAAO,IAAIq4D,aAAcr4D,OAAO4nD,EAAIz2C,SAAS,EAAGjf,IAGlD,IAAI3G,EAAGjE,EAKP,MAAMgxE,EAAW,IAAI5tE,MAAY,EAANgI,GAE3B,IAAKpL,EAAM,EAAGiE,EAAI,EAAGA,EAAImH,GAAM,CAC7B,IAAIf,EAAIi2D,EAAIr8D,KAEZ,GAAIoG,EAAI,IAAM,CAAE2mE,EAAShxE,KAASqK,EAAG,QAAU,CAE/C,IAAI4mE,EAAQT,GAASnmE,GAErB,GAAI4mE,EAAQ,EAAKD,EAAShxE,KAAS,MAAQiE,GAAKgtE,EAAQ,MAAxD,CAKA,IAFA5mE,GAAe,IAAV4mE,EAAc,GAAiB,IAAVA,EAAc,GAAO,EAExCA,EAAQ,GAAKhtE,EAAImH,GACtBf,EAAKA,GAAK,EAAiB,GAAXi2D,EAAIr8D,KACpBgtE,IAIEA,EAAQ,EAAKD,EAAShxE,KAAS,MAE/BqK,EAAI,MACN2mE,EAAShxE,KAASqK,GAElBA,GAAK,MACL2mE,EAAShxE,KAAS,MAAWqK,GAAK,GAAM,KACxC2mE,EAAShxE,KAAS,MAAc,KAAJqK,EAlBuC,CAoBvE,CAEA,MA9DoB6mE,EAAC5Q,EAAKl1D,KAI1B,GAAIA,EAAM,OACJk1D,EAAIz2C,UAAYwmD,GAClB,OAAOvlE,OAAO4oB,aAAa48C,MAAM,KAAMhQ,EAAIxlE,SAAWsQ,EAAMk1D,EAAMA,EAAIz2C,SAAS,EAAGze,IAItF,IAAIwc,EAAS,GACb,IAAK,IAAI3jB,EAAI,EAAGA,EAAImH,EAAKnH,IACvB2jB,GAAU9c,OAAO4oB,aAAa4sC,EAAIr8D,IAEpC,OAAO2jB,CAAM,EAgDNspD,CAAcF,EAAUhxE,EAAI,EA8BjCywE,GApBaU,CAAC7Q,EAAK11D,MAErBA,EAAMA,GAAO01D,EAAIxlE,QACPwlE,EAAIxlE,SAAU8P,EAAM01D,EAAIxlE,QAGlC,IAAIsuB,EAAMxe,EAAM,EAChB,KAAOwe,GAAO,GAA2B,OAAV,IAAXk3C,EAAIl3C,KAAyBA,IAIjD,OAAIA,EAAM,GAIE,IAARA,EAJkBxe,EAMdwe,EAAMonD,GAASlQ,EAAIl3C,IAAQxe,EAAOwe,EAAMxe,CAAG,EAqDrD,IAAIwmE,GAzBJ,WAEEn4E,KAAKC,MAAQ,KACbD,KAAKE,QAAU,EAEfF,KAAKG,SAAW,EAEhBH,KAAKI,SAAW,EAEhBJ,KAAKK,OAAS,KACdL,KAAKM,SAAW,EAEhBN,KAAKO,UAAY,EAEjBP,KAAKQ,UAAY,EAEjBR,KAAKS,IAAM,GAEXT,KAAKU,MAAQ,KAEbV,KAAKW,UAAY,EAEjBX,KAAKY,MAAQ,CACf,EAIA,MAAMw3E,GAAap1E,OAAO4H,UAAUnG,UAMlC0qE,WAAYkJ,GAAY,aAAEhJ,GAAY,aAAEC,GAAc76C,SAAU6jD,GAChE1jD,KAAM2jD,GAAQ1jD,aAAc2jD,GAAc,sBAC1C7I,GAAqB,mBACrBK,GACA76C,WAAYsjD,IACVvJ,EA0FJ,SAASwJ,GAAU92D,GACjB5hB,KAAK4hB,QAAUs1D,GAAc,CAC3BnK,MAAO4C,GACPxjD,OAAQssD,GACRE,UAAW,MACXpgD,WAAY,GACZy9C,SAAU,EACVzI,SAAUyC,IACTpuD,GAAW,CAAC,GAEf,IAAIg3D,EAAM54E,KAAK4hB,QAEXg3D,EAAIC,KAAQD,EAAIrgD,WAAa,EAC/BqgD,EAAIrgD,YAAcqgD,EAAIrgD,WAGfqgD,EAAIE,MAASF,EAAIrgD,WAAa,GAAOqgD,EAAIrgD,WAAa,KAC7DqgD,EAAIrgD,YAAc,IAGpBv4B,KAAK4pB,IAAS,EACd5pB,KAAKS,IAAS,GACdT,KAAK+4E,OAAS,EACd/4E,KAAKm3E,OAAS,GAEdn3E,KAAK+1B,KAAO,IAAIoiD,GAChBn4E,KAAK+1B,KAAKx1B,UAAY,EAEtB,IAAI2tB,EAAS+nD,GAAYF,aACvB/1E,KAAK+1B,KACL6iD,EAAI7L,MACJ6L,EAAIzsD,OACJysD,EAAIrgD,WACJqgD,EAAI5C,SACJ4C,EAAIrL,UAGN,GAAIr/C,IAAWqqD,GACb,MAAM,IAAI10E,MAAMorE,EAAS/gD,IAO3B,GAJI0qD,EAAI1mD,QACN+jD,GAAYE,iBAAiBn2E,KAAK+1B,KAAM6iD,EAAI1mD,QAG1C0mD,EAAI79C,WAAY,CAClB,IAAIi+C,EAaJ,GATEA,EAF4B,kBAAnBJ,EAAI79C,WAENy8C,GAAmBoB,EAAI79C,YACe,yBAApCq9C,GAAWthE,KAAK8hE,EAAI79C,YACtB,IAAIzK,WAAWsoD,EAAI79C,YAEnB69C,EAAI79C,WAGb7M,EAAS+nD,GAAYY,qBAAqB72E,KAAK+1B,KAAMijD,GAEjD9qD,IAAWqqD,GACb,MAAM,IAAI10E,MAAMorE,EAAS/gD,IAG3BluB,KAAKi5E,WAAY,CACnB,CACF,CA8JA,SAASC,GAAUj5E,EAAO2hB,GACxB,MAAMu3D,EAAW,IAAIT,GAAU92D,GAK/B,GAHAu3D,EAAS7xE,KAAKrH,GAAO,GAGjBk5E,EAASvvD,IAAO,MAAMuvD,EAAS14E,KAAOwuE,EAASkK,EAASvvD,KAE5D,OAAOuvD,EAASxqD,MAClB,CA/IA+pD,GAAU9tE,UAAUtD,KAAO,SAAU3D,EAAMy1E,GACzC,MAAMrjD,EAAO/1B,KAAK+1B,KACZ4iD,EAAY34E,KAAK4hB,QAAQ+2D,UAC/B,IAAIzqD,EAAQmrD,EAEZ,GAAIr5E,KAAK+4E,MAAS,OAAO,EAkBzB,IAhBiCM,EAA7BD,MAAiBA,EAA0BA,GACb,IAAfA,EAAsBd,GAAaD,GAGlC,kBAAT10E,EAEToyB,EAAK91B,MAAQu3E,GAAmB7zE,GACG,yBAA1By0E,GAAWthE,KAAKnT,GACzBoyB,EAAK91B,MAAQ,IAAIqwB,WAAW3sB,GAE5BoyB,EAAK91B,MAAQ0D,EAGfoyB,EAAK71B,QAAU,EACf61B,EAAK51B,SAAW41B,EAAK91B,MAAM4B,SAUzB,GAPuB,IAAnBk0B,EAAKx1B,YACPw1B,EAAK11B,OAAS,IAAIiwB,WAAWqoD,GAC7B5iD,EAAKz1B,SAAW,EAChBy1B,EAAKx1B,UAAYo4E,IAIdU,IAAgBhK,IAAgBgK,IAAgB/J,KAAiBv5C,EAAKx1B,WAAa,EACtFP,KAAKs5E,OAAOvjD,EAAK11B,OAAOuwB,SAAS,EAAGmF,EAAKz1B,WACzCy1B,EAAKx1B,UAAY,MAFnB,CASA,GAHA2tB,EAAS+nD,GAAYG,QAAQrgD,EAAMsjD,GAG/BnrD,IAAWsqD,GAOb,OANIziD,EAAKz1B,SAAW,GAClBN,KAAKs5E,OAAOvjD,EAAK11B,OAAOuwB,SAAS,EAAGmF,EAAKz1B,WAE3C4tB,EAAS+nD,GAAYW,WAAW52E,KAAK+1B,MACrC/1B,KAAKu5E,MAAMrrD,GACXluB,KAAK+4E,OAAQ,EACN7qD,IAAWqqD,GAIpB,GAAuB,IAAnBxiD,EAAKx1B,WAMT,GAAI84E,EAAc,GAAKtjD,EAAKz1B,SAAW,EACrCN,KAAKs5E,OAAOvjD,EAAK11B,OAAOuwB,SAAS,EAAGmF,EAAKz1B,WACzCy1B,EAAKx1B,UAAY,OAInB,GAAsB,IAAlBw1B,EAAK51B,SAAgB,WAXvBH,KAAKs5E,OAAOvjD,EAAK11B,OAjBnB,CA+BF,OAAO,CACT,EAUAq4E,GAAU9tE,UAAU0uE,OAAS,SAAUplD,GACrCl0B,KAAKm3E,OAAO7vE,KAAK4sB,EACnB,EAYAwkD,GAAU9tE,UAAU2uE,MAAQ,SAAUrrD,GAEhCA,IAAWqqD,KACbv4E,KAAK2uB,OAASuoD,GAAqBl3E,KAAKm3E,SAE1Cn3E,KAAKm3E,OAAS,GACdn3E,KAAK4pB,IAAMsE,EACXluB,KAAKS,IAAMT,KAAK+1B,KAAKt1B,GACvB,EA6EA,IAMI+4E,GAAc,CACjBC,QAPiBf,GAQjBtC,QAPe8C,GAQfQ,WA/BD,SAAsBz5E,EAAO2hB,GAG3B,OAFAA,EAAUA,GAAW,CAAC,GACdi3D,KAAM,EACPK,GAAUj5E,EAAO2hB,EAC1B,EA4BCk3D,KAjBD,SAAgB74E,EAAO2hB,GAGrB,OAFAA,EAAUA,GAAW,CAAC,GACdk3D,MAAO,EACRI,GAAUj5E,EAAO2hB,EAC1B,EAcC+3D,UAPiBzK,GA8BlB,MAAM0K,GAAQ,MAsCd,IAAIC,GAAU,SAAsB9jD,EAAM7mB,GACxC,IAAIoqB,EACAtD,EACAuD,EACA2/B,EACA1rC,EAEA4I,EAEAK,EACAC,EACAC,EAEAwiC,EACAtiC,EACAC,EACAsiC,EACAC,EACAC,EACAC,EACAx/B,EACAy/B,EAEArnD,EACA8mB,EACAz0B,EACAg1B,EAGAv5B,EAAOI,EAGX,MAAMK,EAAQq1B,EAAKr1B,MAEnB44B,EAAMvD,EAAK71B,QACXD,EAAQ81B,EAAK91B,MACb+1B,EAAOsD,GAAOvD,EAAK51B,SAAW,GAC9Bo5B,EAAOxD,EAAKz1B,SACZD,EAAS01B,EAAK11B,OACd64D,EAAM3/B,GAAQrqB,EAAQ6mB,EAAKx1B,WAC3BitB,EAAM+L,GAAQxD,EAAKx1B,UAAY,KAE/B61B,EAAO11B,EAAM01B,KAEbK,EAAQ/1B,EAAM+1B,MACdC,EAAQh2B,EAAMg2B,MACdC,EAAQj2B,EAAMi2B,MACdwiC,EAAWz4D,EAAMk2B,OACjBC,EAAOn2B,EAAMm2B,KACbC,EAAOp2B,EAAMo2B,KACbsiC,EAAQ14D,EAAMu2B,QACdoiC,EAAQ34D,EAAMw2B,SACdoiC,GAAS,GAAK54D,EAAMy2B,SAAW,EAC/BoiC,GAAS,GAAK74D,EAAM02B,UAAY,EAMhCqiC,EACA,EAAG,CACG3iC,EAAO,KACTD,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,EACRD,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,GAGViD,EAAOq/B,EAAMviC,EAAOyiC,GAEpBI,EACA,OAAS,CAKP,GAJAF,EAAKz/B,IAAS,GACdlD,KAAU2iC,EACV1iC,GAAQ0iC,EACRA,EAAMz/B,IAAS,GAAM,IACV,IAAPy/B,EAIFn5D,EAAOk5B,KAAiB,MAAPQ,MAEd,MAAS,GAALy/B,GAwKJ,IAAkB,KAAR,GAALA,GAAgB,CACxBz/B,EAAOq/B,GAAc,MAAPr/B,IAA8BlD,GAAS,GAAK2iC,GAAM,IAChE,SAASE,CACX,CACK,GAAS,GAALF,EAAS,CAEhB94D,EAAM+J,KArSC,MAsSP,MAAMgvD,CACR,CAEE1jC,EAAKt1B,IAAM,8BACXC,EAAM+J,KAAOmvE,GACb,MAAMngB,CACR,CApLEtnD,EAAa,MAAP4nB,EACNy/B,GAAM,GACFA,IACE1iC,EAAO0iC,IACT3iC,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,GAEV3kB,GAAO0kB,GAAS,GAAK2iC,GAAM,EAC3B3iC,KAAU2iC,EACV1iC,GAAQ0iC,GAGN1iC,EAAO,KACTD,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,EACRD,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,GAEViD,EAAOs/B,EAAMxiC,EAAO0iC,GAEpBI,EACA,OAAS,CAMP,GALAH,EAAKz/B,IAAS,GACdlD,KAAU2iC,EACV1iC,GAAQ0iC,EACRA,EAAMz/B,IAAS,GAAM,MAEZ,GAALy/B,GA+HC,IAAkB,KAAR,GAALA,GAAgB,CACxBz/B,EAAOs/B,GAAc,MAAPt/B,IAA8BlD,GAAS,GAAK2iC,GAAM,IAChE,SAASG,CACX,CAEE5jC,EAAKt1B,IAAM,wBACXC,EAAM+J,KAAOmvE,GACb,MAAMngB,CACR,CA1HE,GAZAxgC,EAAc,MAAPc,EACPy/B,GAAM,GACF1iC,EAAO0iC,IACT3iC,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,EACJA,EAAO0iC,IACT3iC,GAAQ52B,EAAMq5B,MAAUxC,EACxBA,GAAQ,IAGZmC,GAAQpC,GAAS,GAAK2iC,GAAM,EAExBvgC,EAAO7C,EAAM,CACfL,EAAKt1B,IAAM,gCACXC,EAAM+J,KAAOmvE,GACb,MAAMngB,CACR,CAMA,GAJA5iC,KAAU2iC,EACV1iC,GAAQ0iC,EAERA,EAAKjgC,EAAO2/B,EACRjgC,EAAOugC,EAAI,CAEb,GADAA,EAAKvgC,EAAOugC,EACRA,EAAK9iC,GACHh2B,EAAMq3B,KAAM,CACdhC,EAAKt1B,IAAM,gCACXC,EAAM+J,KAAOmvE,GACb,MAAMngB,CACR,CA0BF,GAFAj1D,EAAO,EACPg1B,EAAc2/B,EACA,IAAVxiC,GAEF,GADAnyB,GAAQiyB,EAAQ+iC,EACZA,EAAKrnD,EAAK,CACZA,GAAOqnD,EACP,GACEn5D,EAAOk5B,KAAU4/B,EAAS30D,aACjBg1D,GACXh1D,EAAO+0B,EAAON,EACdO,EAAcn5B,CAChB,OAEG,GAAIs2B,EAAQ6iC,GAGf,GAFAh1D,GAAQiyB,EAAQE,EAAQ6iC,EACxBA,GAAM7iC,EACF6iC,EAAKrnD,EAAK,CACZA,GAAOqnD,EACP,GACEn5D,EAAOk5B,KAAU4/B,EAAS30D,aACjBg1D,GAEX,GADAh1D,EAAO,EACHmyB,EAAQxkB,EAAK,CACfqnD,EAAK7iC,EACLxkB,GAAOqnD,EACP,GACEn5D,EAAOk5B,KAAU4/B,EAAS30D,aACjBg1D,GACXh1D,EAAO+0B,EAAON,EACdO,EAAcn5B,CAChB,CACF,OAIA,GADAmE,GAAQmyB,EAAQ6iC,EACZA,EAAKrnD,EAAK,CACZA,GAAOqnD,EACP,GACEn5D,EAAOk5B,KAAU4/B,EAAS30D,aACjBg1D,GACXh1D,EAAO+0B,EAAON,EACdO,EAAcn5B,CAChB,CAEF,KAAO8R,EAAM,GACX9R,EAAOk5B,KAAUC,EAAYh1B,KAC7BnE,EAAOk5B,KAAUC,EAAYh1B,KAC7BnE,EAAOk5B,KAAUC,EAAYh1B,KAC7B2N,GAAO,EAELA,IACF9R,EAAOk5B,KAAUC,EAAYh1B,KACzB2N,EAAM,IACR9R,EAAOk5B,KAAUC,EAAYh1B,MAGnC,KACK,CACHA,EAAO+0B,EAAON,EACd,GACE54B,EAAOk5B,KAAUl5B,EAAOmE,KACxBnE,EAAOk5B,KAAUl5B,EAAOmE,KACxBnE,EAAOk5B,KAAUl5B,EAAOmE,KACxB2N,GAAO,QACAA,EAAM,GACXA,IACF9R,EAAOk5B,KAAUl5B,EAAOmE,KACpB2N,EAAM,IACR9R,EAAOk5B,KAAUl5B,EAAOmE,MAG9B,CAYF,KACF,CAeF,CAEA,KACF,CACF,OAAS80B,EAAMtD,GAAQuD,EAAO/L,GAG9Brb,EAAM2kB,GAAQ,EACdwC,GAAOnnB,EACP2kB,GAAQ3kB,GAAO,EACf0kB,IAAS,GAAKC,GAAQ,EAGtBf,EAAK71B,QAAUo5B,EACfvD,EAAKz1B,SAAWi5B,EAChBxD,EAAK51B,SAAYm5B,EAAMtD,EAAYA,EAAOsD,EAAZ,EAAmB,GAAKA,EAAMtD,GAC5DD,EAAKx1B,UAAag5B,EAAO/L,EAAaA,EAAM+L,EAAb,IAAqB,KAAOA,EAAO/L,GAClE9sB,EAAMm2B,KAAOA,EACbn2B,EAAMo2B,KAAOA,CAEf,EAqBA,MAAMgjD,GAAU,GASVC,GAAQ,IAAIpiD,YAAY,CAC5B,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAGzDqiD,GAAO,IAAI1pD,WAAW,CAC1B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAGpD2pD,GAAQ,IAAItiD,YAAY,CAC5B,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IACtD,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAClD,KAAM,MAAO,MAAO,MAAO,EAAG,IAG1BuiD,GAAO,IAAI5pD,WAAW,CAC1B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,KAkStB,IAAI6pD,GA/RkB3lD,CAAC7sB,EAAM+vB,EAAM0iD,EAAYC,EAAOvL,EAAOwL,EAAa1iD,EAAMqC,KAE9E,MAAMnD,EAAOmD,EAAKnD,KAGlB,IASIyjD,EACAtpD,EACAoyC,EACA10B,EACAlX,EAGA+6C,EAhBArgE,EAAM,EACN2mB,EAAM,EACNpnB,EAAM,EAAGC,EAAM,EACf6oE,EAAO,EACPC,EAAO,EACPC,EAAO,EACPrhD,EAAO,EACP46C,EAAO,EACP0G,EAAO,EAMPtiE,EAAO,KAGX,MAAM6uD,EAAQ,IAAIvvC,YAAYmiD,IACxBc,EAAO,IAAIjjD,YAAYmiD,IAC7B,IAEIrgD,EAAWC,EAASC,EAFpB3C,EAAQ,KAoCZ,IAAK7kB,EAAM,EAAGA,GAAO2nE,GAAS3nE,IAC5B+0D,EAAM/0D,GAAO,EAEf,IAAK2mB,EAAM,EAAGA,EAAMuhD,EAAOvhD,IACzBouC,EAAMxvC,EAAK0iD,EAAathD,MAK1B,IADA0hD,EAAO1jD,EACFnlB,EAAMmoE,GAASnoE,GAAO,GACN,IAAfu1D,EAAMv1D,GADkBA,KAM9B,GAHI6oE,EAAO7oE,IACT6oE,EAAO7oE,GAEG,IAARA,EAaF,OATAm9D,EAAMwL,KAAkB,SAMxBxL,EAAMwL,KAAkB,SAExBrgD,EAAKnD,KAAO,EACL,EAET,IAAKplB,EAAM,EAAGA,EAAMC,GACC,IAAfu1D,EAAMx1D,GADaA,KASzB,IANI8oE,EAAO9oE,IACT8oE,EAAO9oE,GAIT2nB,EAAO,EACFlnB,EAAM,EAAGA,GAAO2nE,GAAS3nE,IAG5B,GAFAknB,IAAS,EACTA,GAAQ6tC,EAAM/0D,GACVknB,EAAO,EACT,OAAQ,EAGZ,GAAIA,EAAO,IApIG,IAoIG1xB,GAA4B,IAARgK,GACnC,OAAQ,EAKV,IADAipE,EAAK,GAAK,EACLzoE,EAAM,EAAGA,EAAM2nE,GAAS3nE,IAC3ByoE,EAAKzoE,EAAM,GAAKyoE,EAAKzoE,GAAO+0D,EAAM/0D,GAIpC,IAAK2mB,EAAM,EAAGA,EAAMuhD,EAAOvhD,IACM,IAA3BpB,EAAK0iD,EAAathD,KACpBlB,EAAKgjD,EAAKljD,EAAK0iD,EAAathD,OAAWA,GAiE3C,GAlNc,IAuLVnxB,GACF0Q,EAAO2e,EAAQY,EACf46C,EAAQ,IAxLG,IA0LF7qE,GACT0Q,EAAO0hE,GACP/iD,EAAQgjD,GACRxH,EAAQ,MAGRn6D,EAAO4hE,GACPjjD,EAAQkjD,GACR1H,EAAQ,GAIVmI,EAAO,EACP7hD,EAAM,EACN3mB,EAAMT,EACN+lB,EAAO6iD,EACPG,EAAOD,EACPE,EAAO,EACPrX,GAAO,EACP4Q,EAAO,GAAKuG,EACZ7rC,EAAOslC,EAAO,EA9MD,IAiNRtsE,GAAmBssE,EAtNJ,KAMN,IAiNXtsE,GAAoBssE,EAtNF,IAuNnB,OAAO,EAIT,OAAS,CAEPx6C,EAAYtnB,EAAMuoE,EACd9iD,EAAKkB,GAAO,EAAI05C,GAClB94C,EAAU,EACVC,EAAW/B,EAAKkB,IAETlB,EAAKkB,IAAQ05C,GACpB94C,EAAU1C,EAAMY,EAAKkB,GAAO05C,GAC5B74C,EAAWthB,EAAKuf,EAAKkB,GAAO05C,KAG5B94C,EAAU,GACVC,EAAW,GAIb4gD,EAAO,GAAMpoE,EAAMuoE,EACnBzpD,EAAO,GAAKwpD,EACZ/oE,EAAMuf,EACN,GACEA,GAAQspD,EACRzL,EAAMr3C,GAAQkjD,GAAQD,GAAQzpD,GAASwI,GAAa,GAAOC,GAAW,GAAMC,QAC5D,IAAT1I,GAIT,IADAspD,EAAO,GAAMpoE,EAAM,EACZwoE,EAAOJ,GACZA,IAAS,EAWX,GATa,IAATA,GACFI,GAAQJ,EAAO,EACfI,GAAQJ,GAERI,EAAO,EAIT7hD,IACqB,MAAfouC,EAAM/0D,GAAY,CACtB,GAAIA,IAAQR,EAAO,MACnBQ,EAAMulB,EAAK0iD,EAAaxiD,EAAKkB,GAC/B,CAGA,GAAI3mB,EAAMqoE,IAASG,EAAOhsC,KAAU00B,EAAK,CAYvC,IAVa,IAATqX,IACFA,EAAOF,GAIT/iD,GAAQ/lB,EAGR+oE,EAAOtoE,EAAMuoE,EACbrhD,EAAO,GAAKohD,EACLA,EAAOC,EAAO/oE,IACnB0nB,GAAQ6tC,EAAMuT,EAAOC,KACjBrhD,GAAQ,KACZohD,IACAphD,IAAS,EAKX,GADA46C,GAAQ,GAAKwG,EAxRJ,IAyRJ9yE,GAAmBssE,EA9RR,KAMN,IAyRPtsE,GAAoBssE,EA9RN,IA+Rf,OAAO,EAIT5Q,EAAMsX,EAAOhsC,EAIbmgC,EAAMzL,GAAQmX,GAAQ,GAAOC,GAAQ,GAAOhjD,EAAO6iD,CACrD,CACF,CAeA,OAVa,IAATK,IAIF7L,EAAMr3C,EAAOkjD,GAAUxoE,EAAMuoE,GAAS,GAAO,IAAM,IAKrDzgD,EAAKnD,KAAO0jD,EACL,CAAC,EA8BV,MAQE/lD,SAAUomD,GAAU,QAAEnmD,GAAO,QAAEC,GAC/BC,KAAMkmD,GAAQjmD,aAAckmD,GAAgBjmD,YAAakmD,GAAejmD,eAAgBkmD,GAAkBjmD,aAAckmD,GAAgBjmD,YAAakmD,GAAa,YAAEjmD,GAAW,WAC/KC,IACE+5C,EAOK95C,GAAO,MAUPC,GAAO,MACHzP,GAAO,MACP0P,GAAS,MAETC,GAAQ,MAKJC,GAAO,MACPC,GAAM,MAMdC,GAAQ,MAGRC,GAAM,MAiBTE,GAAWzc,IAEJA,IAAM,GAAM,MACbA,IAAM,EAAK,SACP,MAAJA,IAAe,KACX,IAAJA,IAAa,IAIzB,SAAS0c,KACP91B,KAAK+1B,KAAO,KACZ/1B,KAAKyK,KAAO,EACZzK,KAAKg2B,MAAO,EACZh2B,KAAKi2B,KAAO,EAEZj2B,KAAKk2B,UAAW,EAChBl2B,KAAKm2B,MAAQ,EAEbn2B,KAAKo2B,KAAO,EACZp2B,KAAKq2B,MAAQ,EACbr2B,KAAKs2B,MAAQ,EAEbt2B,KAAKu2B,KAAO,KAGZv2B,KAAKw2B,MAAQ,EACbx2B,KAAKy2B,MAAQ,EACbz2B,KAAK02B,MAAQ,EACb12B,KAAK22B,MAAQ,EACb32B,KAAK42B,OAAS,KAGd52B,KAAK62B,KAAO,EACZ72B,KAAK82B,KAAO,EAGZ92B,KAAK6B,OAAS,EACd7B,KAAK+2B,OAAS,EAGd/2B,KAAKg3B,MAAQ,EAGbh3B,KAAKi3B,QAAU,KACfj3B,KAAKk3B,SAAW,KAChBl3B,KAAKm3B,QAAU,EACfn3B,KAAKo3B,SAAW,EAGhBp3B,KAAKq3B,MAAQ,EACbr3B,KAAKs3B,KAAO,EACZt3B,KAAKu3B,MAAQ,EACbv3B,KAAKw3B,KAAO,EACZx3B,KAAKy3B,KAAO,KAEZz3B,KAAK03B,KAAO,IAAIC,YAAY,KAC5B33B,KAAK43B,KAAO,IAAID,YAAY,KAO5B33B,KAAK63B,OAAS,KACd73B,KAAK83B,QAAU,KACf93B,KAAK+3B,KAAO,EACZ/3B,KAAKg4B,KAAO,EACZh4B,KAAKi4B,IAAM,CACb,CAGA,MAAMC,GAAqBnC,IAEzB,IAAKA,EACH,OAAO,EAET,MAAMr1B,EAAQq1B,EAAKr1B,MACnB,OAAKA,GAASA,EAAMq1B,OAASA,GAC3Br1B,EAAM+J,KAAO2qB,IAAQ10B,EAAM+J,KA7Ff,MA8FL,EAEF,CAAC,EAIJ0tB,GAAoBpC,IAExB,GAAImC,GAAkBnC,GAAS,OAAOklD,GACtC,MAAMv6E,EAAQq1B,EAAKr1B,MAqBnB,OApBAq1B,EAAK31B,SAAW21B,EAAKv1B,UAAYE,EAAM41B,MAAQ,EAC/CP,EAAKt1B,IAAM,GACPC,EAAMu1B,OACRF,EAAKn1B,MAAqB,EAAbF,EAAMu1B,MAErBv1B,EAAM+J,KAAO2qB,GACb10B,EAAMs1B,KAAO,EACbt1B,EAAMw1B,SAAW,EACjBx1B,EAAMy1B,OAAS,EACfz1B,EAAM01B,KAAO,MACb11B,EAAM61B,KAAO,KACb71B,EAAMm2B,KAAO,EACbn2B,EAAMo2B,KAAO,EAEbp2B,EAAMu2B,QAAUv2B,EAAMm3B,OAAS,IAAIO,WAhHjB,KAiHlB13B,EAAMw2B,SAAWx2B,EAAMo3B,QAAU,IAAIM,WAhHlB,KAkHnB13B,EAAMq3B,KAAO,EACbr3B,EAAMs3B,MAAQ,EAEP8iD,EAAM,EAITziD,GAAgBtC,IAEpB,GAAImC,GAAkBnC,GAAS,OAAOklD,GACtC,MAAMv6E,EAAQq1B,EAAKr1B,MAInB,OAHAA,EAAM+1B,MAAQ,EACd/1B,EAAMg2B,MAAQ,EACdh2B,EAAMi2B,MAAQ,EACPwB,GAAiBpC,EAAK,EAKzBuC,GAAgBA,CAACvC,EAAMwC,KAC3B,IAAItC,EAGJ,GAAIiC,GAAkBnC,GAAS,OAAOklD,GACtC,MAAMv6E,EAAQq1B,EAAKr1B,MAenB,OAZI63B,EAAa,GACftC,EAAO,EACPsC,GAAcA,IAGdtC,EAA2B,GAAnBsC,GAAc,GAClBA,EAAa,KACfA,GAAc,KAKdA,IAAeA,EAAa,GAAKA,EAAa,IACzC0iD,IAEY,OAAjBv6E,EAAMk2B,QAAmBl2B,EAAM81B,QAAU+B,IAC3C73B,EAAMk2B,OAAS,MAIjBl2B,EAAMu1B,KAAOA,EACbv1B,EAAM81B,MAAQ+B,EACPF,GAAatC,GAAK,EAIrByC,GAAeA,CAACzC,EAAMwC,KAE1B,IAAKxC,EAAQ,OAAOklD,GAGpB,MAAMv6E,EAAQ,IAAIo1B,GAIlBC,EAAKr1B,MAAQA,EACbA,EAAMq1B,KAAOA,EACbr1B,EAAMk2B,OAAS,KACfl2B,EAAM+J,KAAO2qB,GACb,MAAMqD,EAAMH,GAAcvC,EAAMwC,GAIhC,OAHIE,IAAQqiD,KACV/kD,EAAKr1B,MAAQ,MAER+3B,CAAG,EAoBZ,IAEIC,GAAQC,GAFRC,IAAS,EAKb,MAAMC,GAAen4B,IAGnB,GAAIk4B,GAAQ,CACVF,GAAS,IAAIN,WAAW,KACxBO,GAAU,IAAIP,WAAW,IAGzB,IAAIU,EAAM,EACV,KAAOA,EAAM,KAAOp4B,EAAMg3B,KAAKoB,KAAS,EACxC,KAAOA,EAAM,KAAOp4B,EAAMg3B,KAAKoB,KAAS,EACxC,KAAOA,EAAM,KAAOp4B,EAAMg3B,KAAKoB,KAAS,EACxC,KAAOA,EAAM,KAAOp4B,EAAMg3B,KAAKoB,KAAS,EAMxC,IAJAqhD,GAtRS,EAsROz5E,EAAMg3B,KAAM,EAAG,IAAKgB,GAAU,EAAGh4B,EAAMk3B,KAAM,CAAEd,KAAM,IAGrEgC,EAAM,EACCA,EAAM,IAAMp4B,EAAMg3B,KAAKoB,KAAS,EAEvCqhD,GA3RU,EA2RMz5E,EAAMg3B,KAAM,EAAG,GAAMiB,GAAS,EAAGj4B,EAAMk3B,KAAM,CAAEd,KAAM,IAGrE8B,IAAS,CACX,CAEAl4B,EAAMu2B,QAAUyB,GAChBh4B,EAAMy2B,QAAU,EAChBz2B,EAAMw2B,SAAWyB,GACjBj4B,EAAM02B,SAAW,CAAC,EAkBd2B,GAAeA,CAAChD,EAAMiD,EAAKxL,EAAKjW,KAEpC,IAAI0hB,EACJ,MAAMv4B,EAAQq1B,EAAKr1B,MAqCnB,OAlCqB,OAAjBA,EAAMk2B,SACRl2B,EAAM+1B,MAAQ,GAAK/1B,EAAM81B,MACzB91B,EAAMi2B,MAAQ,EACdj2B,EAAMg2B,MAAQ,EAEdh2B,EAAMk2B,OAAS,IAAItG,WAAW5vB,EAAM+1B,QAIlClf,GAAQ7W,EAAM+1B,OAChB/1B,EAAMk2B,OAAOtgB,IAAI0iB,EAAIpI,SAASpD,EAAM9sB,EAAM+1B,MAAOjJ,GAAM,GACvD9sB,EAAMi2B,MAAQ,EACdj2B,EAAMg2B,MAAQh2B,EAAM+1B,QAGpBwC,EAAOv4B,EAAM+1B,MAAQ/1B,EAAMi2B,MACvBsC,EAAO1hB,IACT0hB,EAAO1hB,GAGT7W,EAAMk2B,OAAOtgB,IAAI0iB,EAAIpI,SAASpD,EAAMjW,EAAMiW,EAAMjW,EAAO0hB,GAAOv4B,EAAMi2B,QACpEpf,GAAQ0hB,IAGNv4B,EAAMk2B,OAAOtgB,IAAI0iB,EAAIpI,SAASpD,EAAMjW,EAAMiW,GAAM,GAChD9sB,EAAMi2B,MAAQpf,EACd7W,EAAMg2B,MAAQh2B,EAAM+1B,QAGpB/1B,EAAMi2B,OAASsC,EACXv4B,EAAMi2B,QAAUj2B,EAAM+1B,QAAS/1B,EAAMi2B,MAAQ,GAC7Cj2B,EAAMg2B,MAAQh2B,EAAM+1B,QAAS/1B,EAAMg2B,OAASuC,KAG7C,CAAC,EAipCV,IAuBImiD,GAAc,CACjB/iD,aAxBoBA,GAyBpBC,cAxBqBA,GAyBrBH,iBAxBwBA,GAyBxBe,YAxxCoBnD,GAEZyC,GAAazC,EA3LJ,IAk9CjByC,aAxBoBA,GAyBpBW,QA1qCiBkiD,CAACtlD,EAAMqD,KAEvB,IAAI14B,EACAT,EAAOI,EACPo3B,EACArsB,EACAosB,EAAM6B,EACNxC,EACAC,EACAwC,EAAKC,EACLhiB,EACA/S,EACAg1B,EAEAC,EAAWC,EAASC,EAEpBC,EAAWC,EAASC,EACpB3nB,EACAsmB,EALAsB,EAAO,EAMX,MAAMC,EAAO,IAAI1J,WAAW,GAC5B,IAAI2J,EAEA1pB,EAEJ,MAAM2pB,EACJ,IAAI5J,WAAW,CAAE,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,KAGjF,GAAI4H,GAAkBnC,KAAUA,EAAK11B,SAC/B01B,EAAK91B,OAA2B,IAAlB81B,EAAK51B,SACvB,OAAO86E,GAGTv6E,EAAQq1B,EAAKr1B,MACTA,EAAM+J,OAASmb,KAAQllB,EAAM+J,KAAO6qB,IAIxClqB,EAAM2qB,EAAKz1B,SACXD,EAAS01B,EAAK11B,OACdg5B,EAAOtD,EAAKx1B,UACZk3B,EAAO1B,EAAK71B,QACZD,EAAQ81B,EAAK91B,MACbu3B,EAAOzB,EAAK51B,SACZ02B,EAAOn2B,EAAMm2B,KACbC,EAAOp2B,EAAMo2B,KAGbwC,EAAM9B,EACN+B,EAAOF,EACPZ,EAAMqiD,GAEN3gD,EACA,OACE,OAAQz5B,EAAM+J,MACZ,KAAK2qB,GACH,GAAmB,IAAf10B,EAAMu1B,KAAY,CACpBv1B,EAAM+J,KAAO6qB,GACb,KACF,CAEA,KAAOwB,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEA,GAAkB,EAAbp2B,EAAMu1B,MAAsB,QAATY,EAAiB,CACnB,IAAhBn2B,EAAM81B,QACR91B,EAAM81B,MAAQ,IAEhB91B,EAAM21B,MAAQ,EAEd2D,EAAK,GAAY,IAAPnD,EACVmD,EAAK,GAAMnD,IAAS,EAAK,IACzBn2B,EAAM21B,MAAQ04C,EAAQruE,EAAM21B,MAAO2D,EAAM,EAAG,GAI5CnD,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KApaC,MAqaP,KACF,CAIA,GAHI/J,EAAM61B,OACR71B,EAAM61B,KAAK6D,MAAO,KAED,EAAb15B,EAAMu1B,UACA,IAAPY,IAA2B,IAAMA,GAAQ,IAAM,GAAI,CACtDd,EAAKt1B,IAAM,yBACXC,EAAM+J,KAAOkrB,GACb,KACF,CACA,IAAY,GAAPkB,KAA4B1B,GAAY,CAC3CY,EAAKt1B,IAAM,6BACXC,EAAM+J,KAAOkrB,GACb,KACF,CASA,GAPAkB,KAAU,EACVC,GAAQ,EAER3kB,EAAiC,GAAnB,GAAP0kB,GACa,IAAhBn2B,EAAM81B,QACR91B,EAAM81B,MAAQrkB,GAEZA,EAAM,IAAMA,EAAMzR,EAAM81B,MAAO,CACjCT,EAAKt1B,IAAM,sBACXC,EAAM+J,KAAOkrB,GACb,KACF,CAIAj1B,EAAM01B,KAAO,GAAK11B,EAAM81B,MAGxB91B,EAAMy1B,MAAQ,EAEdJ,EAAKn1B,MAAQF,EAAM21B,MAAQ,EAC3B31B,EAAM+J,KAAc,IAAPosB,EAncH,MAmc2BjR,GAErCiR,EAAO,EACPC,EAAO,EAEP,MACF,KAjdW,MAmdT,KAAOA,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAGA,GADAp2B,EAAMy1B,MAAQU,GACK,IAAdn2B,EAAMy1B,SAAkBhB,GAAY,CACvCY,EAAKt1B,IAAM,6BACXC,EAAM+J,KAAOkrB,GACb,KACF,CACA,GAAkB,MAAdj1B,EAAMy1B,MAAgB,CACxBJ,EAAKt1B,IAAM,2BACXC,EAAM+J,KAAOkrB,GACb,KACF,CACIj1B,EAAM61B,OACR71B,EAAM61B,KAAKnI,KAASyI,GAAQ,EAAK,GAEhB,IAAdn2B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OAEnC+D,EAAK,GAAY,IAAPnD,EACVmD,EAAK,GAAMnD,IAAS,EAAK,IACzBn2B,EAAM21B,MAAQ04C,EAAQruE,EAAM21B,MAAO2D,EAAM,EAAG,IAI9CnD,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KAlfE,MAofV,KApfU,MAsfR,KAAOqsB,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEIp2B,EAAM61B,OACR71B,EAAM61B,KAAK8D,KAAOxD,GAED,IAAdn2B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OAEnC+D,EAAK,GAAY,IAAPnD,EACVmD,EAAK,GAAMnD,IAAS,EAAK,IACzBmD,EAAK,GAAMnD,IAAS,GAAM,IAC1BmD,EAAK,GAAMnD,IAAS,GAAM,IAC1Bn2B,EAAM21B,MAAQ04C,EAAQruE,EAAM21B,MAAO2D,EAAM,EAAG,IAI9CnD,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KA5gBA,MA8gBR,KA9gBQ,MAghBN,KAAOqsB,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEIp2B,EAAM61B,OACR71B,EAAM61B,KAAK+D,OAAiB,IAAPzD,EACrBn2B,EAAM61B,KAAKgE,GAAM1D,GAAQ,GAER,IAAdn2B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OAEnC+D,EAAK,GAAY,IAAPnD,EACVmD,EAAK,GAAMnD,IAAS,EAAK,IACzBn2B,EAAM21B,MAAQ04C,EAAQruE,EAAM21B,MAAO2D,EAAM,EAAG,IAI9CnD,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KAriBG,MAuiBX,KAviBW,MAwiBT,GAAkB,KAAd/J,EAAMy1B,MAAgB,CAExB,KAAOW,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAp2B,EAAMmB,OAASg1B,EACXn2B,EAAM61B,OACR71B,EAAM61B,KAAKiE,UAAY3D,GAEN,IAAdn2B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OAEnC+D,EAAK,GAAY,IAAPnD,EACVmD,EAAK,GAAMnD,IAAS,EAAK,IACzBn2B,EAAM21B,MAAQ04C,EAAQruE,EAAM21B,MAAO2D,EAAM,EAAG,IAI9CnD,EAAO,EACPC,EAAO,CAET,MACSp2B,EAAM61B,OACb71B,EAAM61B,KAAKS,MAAQ,MAErBt2B,EAAM+J,KAnkBG,MAqkBX,KArkBW,MAskBT,GAAkB,KAAd/J,EAAMy1B,QACR5e,EAAO7W,EAAMmB,OACT0V,EAAOigB,IAAQjgB,EAAOigB,GACtBjgB,IACE7W,EAAM61B,OACRpkB,EAAMzR,EAAM61B,KAAKiE,UAAY95B,EAAMmB,OAC9BnB,EAAM61B,KAAKS,QAEdt2B,EAAM61B,KAAKS,MAAQ,IAAI1G,WAAW5vB,EAAM61B,KAAKiE,YAE/C95B,EAAM61B,KAAKS,MAAM1gB,IACfrW,EAAM2wB,SACJ6G,EAGAA,EAAOlgB,GAGTpF,IAMe,IAAdzR,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OACnCv1B,EAAM21B,MAAQ04C,EAAQruE,EAAM21B,MAAOp2B,EAAOsX,EAAMkgB,IAElDD,GAAQjgB,EACRkgB,GAAQlgB,EACR7W,EAAMmB,QAAU0V,GAEd7W,EAAMmB,QAAU,MAAMs4B,EAE5Bz5B,EAAMmB,OAAS,EACfnB,EAAM+J,KAvmBE,MAymBV,KAzmBU,MA0mBR,GAAkB,KAAd/J,EAAMy1B,MAAgB,CACxB,GAAa,IAATqB,EAAc,MAAM2C,EACxB5iB,EAAO,EACP,GAEEpF,EAAMlS,EAAMw3B,EAAOlgB,KAEf7W,EAAM61B,MAAQpkB,GACbzR,EAAMmB,OAAS,QAClBnB,EAAM61B,KAAK3kB,MAAQC,OAAO4oB,aAAatoB,UAElCA,GAAOoF,EAAOigB,GAOvB,GALmB,IAAd92B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OACnCv1B,EAAM21B,MAAQ04C,EAAQruE,EAAM21B,MAAOp2B,EAAOsX,EAAMkgB,IAElDD,GAAQjgB,EACRkgB,GAAQlgB,EACJpF,EAAO,MAAMgoB,CACnB,MACSz5B,EAAM61B,OACb71B,EAAM61B,KAAK3kB,KAAO,MAEpBlR,EAAMmB,OAAS,EACfnB,EAAM+J,KAjoBK,MAmoBb,KAnoBa,MAooBX,GAAkB,KAAd/J,EAAMy1B,MAAgB,CACxB,GAAa,IAATqB,EAAc,MAAM2C,EACxB5iB,EAAO,EACP,GACEpF,EAAMlS,EAAMw3B,EAAOlgB,KAEf7W,EAAM61B,MAAQpkB,GACbzR,EAAMmB,OAAS,QAClBnB,EAAM61B,KAAKmE,SAAW7oB,OAAO4oB,aAAatoB,UAErCA,GAAOoF,EAAOigB,GAMvB,GALmB,IAAd92B,EAAMy1B,OAAiC,EAAbz1B,EAAMu1B,OACnCv1B,EAAM21B,MAAQ04C,EAAQruE,EAAM21B,MAAOp2B,EAAOsX,EAAMkgB,IAElDD,GAAQjgB,EACRkgB,GAAQlgB,EACJpF,EAAO,MAAMgoB,CACnB,MACSz5B,EAAM61B,OACb71B,EAAM61B,KAAKmE,QAAU,MAEvBh6B,EAAM+J,KAxpBE,MA0pBV,KA1pBU,MA2pBR,GAAkB,IAAd/J,EAAMy1B,MAAgB,CAExB,KAAOW,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEA,GAAkB,EAAbp2B,EAAMu1B,MAAaY,KAAwB,MAAdn2B,EAAM21B,OAAiB,CACvDN,EAAKt1B,IAAM,sBACXC,EAAM+J,KAAOkrB,GACb,KACF,CAEAkB,EAAO,EACPC,EAAO,CAET,CACIp2B,EAAM61B,OACR71B,EAAM61B,KAAKoE,KAASj6B,EAAMy1B,OAAS,EAAK,EACxCz1B,EAAM61B,KAAK6D,MAAO,GAEpBrE,EAAKn1B,MAAQF,EAAM21B,MAAQ,EAC3B31B,EAAM+J,KAAOmb,GACb,MACF,KAprBY,MAsrBV,KAAOkR,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAf,EAAKn1B,MAAQF,EAAM21B,MAAQR,GAAQgB,GAEnCA,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KAAO4qB,GAEf,KAAKA,GACH,GAAuB,IAAnB30B,EAAMw1B,SASR,OAPAH,EAAKz1B,SAAW8K,EAChB2qB,EAAKx1B,UAAY84B,EACjBtD,EAAK71B,QAAUu3B,EACf1B,EAAK51B,SAAWq3B,EAChB92B,EAAMm2B,KAAOA,EACbn2B,EAAMo2B,KAAOA,EAENkkD,GAETjlD,EAAKn1B,MAAQF,EAAM21B,MAAQ,EAC3B31B,EAAM+J,KAAOmb,GAEf,KAAKA,GACH,GAAIwT,IAAU1E,IAAW0E,IAAUzE,GAAW,MAAMwF,EAEtD,KAAK7E,GACH,GAAI50B,EAAMs1B,KAAM,CAEda,KAAiB,EAAPC,EACVA,GAAe,EAAPA,EAERp2B,EAAM+J,KAAOirB,GACb,KACF,CAEA,KAAOoB,EAAO,GAAG,CACf,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAQA,OANAp2B,EAAMs1B,KAAe,EAAPa,EAEdA,KAAU,EACVC,GAAQ,EAGQ,EAAPD,GACP,KAAK,EAGHn2B,EAAM+J,KA7uBI,MA8uBV,MACF,KAAK,EAKH,GAJAouB,GAAYn4B,GAGZA,EAAM+J,KAAO+qB,GACT4D,IAAUzE,GAAS,CAErBkC,KAAU,EACVC,GAAQ,EAER,MAAMqD,CACR,CACA,MACF,KAAK,EAGHz5B,EAAM+J,KA5vBG,MA6vBT,MACF,KAAK,EACHsrB,EAAKt1B,IAAM,qBACXC,EAAM+J,KAAOkrB,GAGjBkB,KAAU,EACVC,GAAQ,EAER,MACF,KA1wBgB,MAgxBd,IAJAD,KAAiB,EAAPC,EACVA,GAAe,EAAPA,EAGDA,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEA,IAAY,MAAPD,MAAqBA,IAAS,GAAM,OAAS,CAChDd,EAAKt1B,IAAM,+BACXC,EAAM+J,KAAOkrB,GACb,KACF,CASA,GARAj1B,EAAMmB,OAAgB,MAAPg1B,EAIfA,EAAO,EACPC,EAAO,EAEPp2B,EAAM+J,KAAO8qB,GACT6D,IAAUzE,GAAW,MAAMwF,EAEjC,KAAK5E,GACH70B,EAAM+J,KAryBM,MAuyBd,KAvyBc,MAyyBZ,GADA8M,EAAO7W,EAAMmB,OACT0V,EAAM,CAGR,GAFIA,EAAOigB,IAAQjgB,EAAOigB,GACtBjgB,EAAO8hB,IAAQ9hB,EAAO8hB,GACb,IAAT9hB,EAAc,MAAM4iB,EAExB95B,EAAOiW,IAAIrW,EAAM2wB,SAAS6G,EAAMA,EAAOlgB,GAAOnM,GAE9CosB,GAAQjgB,EACRkgB,GAAQlgB,EACR8hB,GAAQ9hB,EACRnM,GAAOmM,EACP7W,EAAMmB,QAAU0V,EAChB,KACF,CAEA7W,EAAM+J,KAAOmb,GACb,MACF,KAzzBe,MA2zBb,KAAOkR,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAkBA,GAhBAp2B,EAAM42B,KAAkC,KAAnB,GAAPT,GAEdA,KAAU,EACVC,GAAQ,EAERp2B,EAAM62B,MAAmC,GAAnB,GAAPV,GAEfA,KAAU,EACVC,GAAQ,EAERp2B,EAAM22B,MAAmC,GAAnB,GAAPR,GAEfA,KAAU,EACVC,GAAQ,EAGJp2B,EAAM42B,KAAO,KAAO52B,EAAM62B,MAAQ,GAAI,CACxCxB,EAAKt1B,IAAM,sCACXC,EAAM+J,KAAOkrB,GACb,KACF,CAGAj1B,EAAM82B,KAAO,EACb92B,EAAM+J,KAz1BS,MA21BjB,KA31BiB,MA41Bf,KAAO/J,EAAM82B,KAAO92B,EAAM22B,OAAO,CAE/B,KAAOP,EAAO,GAAG,CACf,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAp2B,EAAMg3B,KAAKwC,EAAMx5B,EAAM82B,SAAmB,EAAPX,EAEnCA,KAAU,EACVC,GAAQ,CAEV,CACA,KAAOp2B,EAAM82B,KAAO,IAClB92B,EAAMg3B,KAAKwC,EAAMx5B,EAAM82B,SAAW,EAapC,GAPA92B,EAAMu2B,QAAUv2B,EAAMm3B,OACtBn3B,EAAMy2B,QAAU,EAEhB8C,EAAO,CAAEnD,KAAMp2B,EAAMy2B,SACrBsB,EAAM0hD,GAz5BA,EAy5BgBz5E,EAAMg3B,KAAM,EAAG,GAAIh3B,EAAMu2B,QAAS,EAAGv2B,EAAMk3B,KAAMqC,GACvEv5B,EAAMy2B,QAAU8C,EAAKnD,KAEjB2B,EAAK,CACP1C,EAAKt1B,IAAM,2BACXC,EAAM+J,KAAOkrB,GACb,KACF,CAEAj1B,EAAM82B,KAAO,EACb92B,EAAM+J,KA/3BU,MAi4BlB,KAj4BkB,MAk4BhB,KAAO/J,EAAM82B,KAAO92B,EAAM42B,KAAO52B,EAAM62B,OAAO,CAC5C,KACEwC,EAAOr5B,EAAMu2B,QAAQJ,GAAS,GAAKn2B,EAAMy2B,SAAW,GACpDsC,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAENN,GAAc3C,IANZ,CAQP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CACA,GAAI6C,EAAW,GAEb9C,KAAU4C,EACV3C,GAAQ2C,EAER/4B,EAAMg3B,KAAKh3B,EAAM82B,QAAUmC,MAExB,CACH,GAAiB,KAAbA,EAAiB,CAGnB,IADAppB,EAAIkpB,EAAY,EACT3C,EAAOvmB,GAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAMA,GAHAD,KAAU4C,EACV3C,GAAQ2C,EAEW,IAAf/4B,EAAM82B,KAAY,CACpBzB,EAAKt1B,IAAM,4BACXC,EAAM+J,KAAOkrB,GACb,KACF,CACAxjB,EAAMzR,EAAMg3B,KAAKh3B,EAAM82B,KAAO,GAC9BjgB,EAAO,GAAY,EAAPsf,GAEZA,KAAU,EACVC,GAAQ,CAEV,MACK,GAAiB,KAAb6C,EAAiB,CAGxB,IADAppB,EAAIkpB,EAAY,EACT3C,EAAOvmB,GAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAGAD,KAAU4C,EACV3C,GAAQ2C,EAERtnB,EAAM,EACNoF,EAAO,GAAY,EAAPsf,GAEZA,KAAU,EACVC,GAAQ,CAEV,KACK,CAGH,IADAvmB,EAAIkpB,EAAY,EACT3C,EAAOvmB,GAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAGAD,KAAU4C,EACV3C,GAAQ2C,EAERtnB,EAAM,EACNoF,EAAO,IAAa,IAAPsf,GAEbA,KAAU,EACVC,GAAQ,CAEV,CACA,GAAIp2B,EAAM82B,KAAOjgB,EAAO7W,EAAM42B,KAAO52B,EAAM62B,MAAO,CAChDxB,EAAKt1B,IAAM,4BACXC,EAAM+J,KAAOkrB,GACb,KACF,CACA,KAAOpe,KACL7W,EAAMg3B,KAAKh3B,EAAM82B,QAAUrlB,CAE/B,CACF,CAGA,GAAIzR,EAAM+J,OAASkrB,GAAO,MAG1B,GAAwB,IAApBj1B,EAAMg3B,KAAK,KAAY,CACzB3B,EAAKt1B,IAAM,uCACXC,EAAM+J,KAAOkrB,GACb,KACF,CAcA,GATAj1B,EAAMy2B,QAAU,EAEhB8C,EAAO,CAAEnD,KAAMp2B,EAAMy2B,SACrBsB,EAAM0hD,GA3hCD,EA2hCgBz5E,EAAMg3B,KAAM,EAAGh3B,EAAM42B,KAAM52B,EAAMu2B,QAAS,EAAGv2B,EAAMk3B,KAAMqC,GAG9Ev5B,EAAMy2B,QAAU8C,EAAKnD,KAGjB2B,EAAK,CACP1C,EAAKt1B,IAAM,8BACXC,EAAM+J,KAAOkrB,GACb,KACF,CAaA,GAXAj1B,EAAM02B,SAAW,EAGjB12B,EAAMw2B,SAAWx2B,EAAMo3B,QACvBmC,EAAO,CAAEnD,KAAMp2B,EAAM02B,UACrBqB,EAAM0hD,GA3iCA,EA2iCgBz5E,EAAMg3B,KAAMh3B,EAAM42B,KAAM52B,EAAM62B,MAAO72B,EAAMw2B,SAAU,EAAGx2B,EAAMk3B,KAAMqC,GAG1Fv5B,EAAM02B,SAAW6C,EAAKnD,KAGlB2B,EAAK,CACP1C,EAAKt1B,IAAM,wBACXC,EAAM+J,KAAOkrB,GACb,KACF,CAGA,GADAj1B,EAAM+J,KAAO+qB,GACT4D,IAAUzE,GAAW,MAAMwF,EAEjC,KAAK3E,GACH90B,EAAM+J,KAAOgrB,GAEf,KAAKA,GACH,GAAI+B,GAAQ,GAAK6B,GAAQ,IAAK,CAE5BtD,EAAKz1B,SAAW8K,EAChB2qB,EAAKx1B,UAAY84B,EACjBtD,EAAK71B,QAAUu3B,EACf1B,EAAK51B,SAAWq3B,EAChB92B,EAAMm2B,KAAOA,EACbn2B,EAAMo2B,KAAOA,EAEb+iD,GAAQ9jD,EAAMwD,GAEdnuB,EAAM2qB,EAAKz1B,SACXD,EAAS01B,EAAK11B,OACdg5B,EAAOtD,EAAKx1B,UACZk3B,EAAO1B,EAAK71B,QACZD,EAAQ81B,EAAK91B,MACbu3B,EAAOzB,EAAK51B,SACZ02B,EAAOn2B,EAAMm2B,KACbC,EAAOp2B,EAAMo2B,KAGTp2B,EAAM+J,OAASmb,KACjBllB,EAAMs3B,MAAQ,GAEhB,KACF,CAEA,IADAt3B,EAAMs3B,KAAO,EAEX+B,EAAOr5B,EAAMu2B,QAAQJ,GAAS,GAAKn2B,EAAMy2B,SAAW,GACpDsC,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAEPN,GAAa3C,IANV,CAQP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CACA,GAAI4C,GAAgC,KAAV,IAAVA,GAAuB,CAIrC,IAHAE,EAAYH,EACZI,EAAUH,EACVI,EAAWH,EAETI,EAAOr5B,EAAMu2B,QAAQ6C,IACXjD,GAAS,GAAM+C,EAAYC,GAAY,IAAoCD,IACrFH,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAENH,EAAYH,GAAc3C,IAPxB,CASP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CAEAD,KAAU+C,EACV9C,GAAQ8C,EAERl5B,EAAMs3B,MAAQ4B,CAChB,CAOA,GALA/C,KAAU4C,EACV3C,GAAQ2C,EAER/4B,EAAMs3B,MAAQyB,EACd/4B,EAAMmB,OAAS83B,EACC,IAAZD,EAAe,CAIjBh5B,EAAM+J,KAjmCO,MAkmCb,KACF,CACA,GAAc,GAAVivB,EAAc,CAEhBh5B,EAAMs3B,MAAQ,EACdt3B,EAAM+J,KAAOmb,GACb,KACF,CACA,GAAc,GAAV8T,EAAc,CAChB3D,EAAKt1B,IAAM,8BACXC,EAAM+J,KAAOkrB,GACb,KACF,CACAj1B,EAAMs2B,MAAkB,GAAV0C,EACdh5B,EAAM+J,KApnCY,MAsnCpB,KAtnCoB,MAunClB,GAAI/J,EAAMs2B,MAAO,CAGf,IADAzmB,EAAI7P,EAAMs2B,MACHF,EAAOvmB,GAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAp2B,EAAMmB,QAAUg1B,GAAS,GAAKn2B,EAAMs2B,OAAS,EAE7CH,KAAUn2B,EAAMs2B,MAChBF,GAAQp2B,EAAMs2B,MAEdt2B,EAAMs3B,MAAQt3B,EAAMs2B,KACtB,CAEAt2B,EAAMu3B,IAAMv3B,EAAMmB,OAClBnB,EAAM+J,KAzoCU,MA2oClB,KA3oCkB,MA4oChB,KACEsvB,EAAOr5B,EAAMw2B,SAASL,GAAS,GAAKn2B,EAAM02B,UAAY,GACtDqC,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAENN,GAAc3C,IANZ,CAQP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CACA,GAAyB,KAAV,IAAV4C,GAAuB,CAI1B,IAHAE,EAAYH,EACZI,EAAUH,EACVI,EAAWH,EAETI,EAAOr5B,EAAMw2B,SAAS4C,IACZjD,GAAS,GAAM+C,EAAYC,GAAY,IAAoCD,IACrFH,EAAYM,IAAS,GACrBL,EAAWK,IAAS,GAAM,IAC1BJ,EAAkB,MAAPI,IAENH,EAAYH,GAAc3C,IAPxB,CASP,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CAEV,CAEAD,KAAU+C,EACV9C,GAAQ8C,EAERl5B,EAAMs3B,MAAQ4B,CAChB,CAMA,GAJA/C,KAAU4C,EACV3C,GAAQ2C,EAER/4B,EAAMs3B,MAAQyB,EACA,GAAVC,EAAc,CAChB3D,EAAKt1B,IAAM,wBACXC,EAAM+J,KAAOkrB,GACb,KACF,CACAj1B,EAAMq2B,OAAS4C,EACfj5B,EAAMs2B,MAAoB,GAAX0C,EACfh5B,EAAM+J,KA9rCa,MAgsCrB,KAhsCqB,MAisCnB,GAAI/J,EAAMs2B,MAAO,CAGf,IADAzmB,EAAI7P,EAAMs2B,MACHF,EAAOvmB,GAAG,CACf,GAAa,IAATinB,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEAp2B,EAAMq2B,QAAUF,GAAS,GAAKn2B,EAAMs2B,OAAS,EAE7CH,KAAUn2B,EAAMs2B,MAChBF,GAAQp2B,EAAMs2B,MAEdt2B,EAAMs3B,MAAQt3B,EAAMs2B,KACtB,CAEA,GAAIt2B,EAAMq2B,OAASr2B,EAAM01B,KAAM,CAC7BL,EAAKt1B,IAAM,gCACXC,EAAM+J,KAAOkrB,GACb,KACF,CAGAj1B,EAAM+J,KAztCW,MA2tCnB,KA3tCmB,MA4tCjB,GAAa,IAAT4uB,EAAc,MAAMc,EAExB,GADA5iB,EAAOgiB,EAAOF,EACV34B,EAAMq2B,OAASxf,EAAM,CAEvB,GADAA,EAAO7W,EAAMq2B,OAASxf,EAClBA,EAAO7W,EAAMg2B,OACXh2B,EAAMq3B,KAAM,CACdhC,EAAKt1B,IAAM,gCACXC,EAAM+J,KAAOkrB,GACb,KACF,CAiBEpe,EAAO7W,EAAMi2B,OACfpf,GAAQ7W,EAAMi2B,MACdnyB,EAAO9D,EAAM+1B,MAAQlf,GAGrB/S,EAAO9D,EAAMi2B,MAAQpf,EAEnBA,EAAO7W,EAAMmB,SAAU0V,EAAO7W,EAAMmB,QACxC23B,EAAc94B,EAAMk2B,MACtB,MAEE4C,EAAcn5B,EACdmE,EAAO4G,EAAM1K,EAAMq2B,OACnBxf,EAAO7W,EAAMmB,OAEX0V,EAAO8hB,IAAQ9hB,EAAO8hB,GAC1BA,GAAQ9hB,EACR7W,EAAMmB,QAAU0V,EAChB,GACElX,EAAO+K,KAASouB,EAAYh1B,aACnB+S,GACU,IAAjB7W,EAAMmB,SAAgBnB,EAAM+J,KAAOgrB,IACvC,MACF,KA5wCiB,MA6wCf,GAAa,IAAT4D,EAAc,MAAMc,EACxB95B,EAAO+K,KAAS1K,EAAMmB,OACtBw3B,IACA34B,EAAM+J,KAAOgrB,GACb,MACF,KAAKC,GACH,GAAIh1B,EAAMu1B,KAAM,CAEd,KAAOa,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IAEAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAaA,GAXAyC,GAAQF,EACRtD,EAAKv1B,WAAa+4B,EAClB74B,EAAM41B,OAASiD,EACG,EAAb74B,EAAMu1B,MAAasD,IACtBxD,EAAKn1B,MAAQF,EAAM21B,MAEd31B,EAAMy1B,MAAQ44C,EAAQruE,EAAM21B,MAAOh2B,EAAQk5B,EAAMnuB,EAAMmuB,GAAQk1C,EAAU/tE,EAAM21B,MAAOh2B,EAAQk5B,EAAMnuB,EAAMmuB,IAGjHA,EAAOF,EAEW,EAAb34B,EAAMu1B,OAAcv1B,EAAMy1B,MAAQU,EAAOhB,GAAQgB,MAAWn2B,EAAM21B,MAAO,CAC5EN,EAAKt1B,IAAM,uBACXC,EAAM+J,KAAOkrB,GACb,KACF,CAEAkB,EAAO,EACPC,EAAO,CAGT,CACAp2B,EAAM+J,KAjzCI,MAmzCZ,KAnzCY,MAozCV,GAAI/J,EAAMu1B,MAAQv1B,EAAMy1B,MAAO,CAE7B,KAAOW,EAAO,IAAI,CAChB,GAAa,IAATU,EAAc,MAAM2C,EACxB3C,IACAX,GAAQ52B,EAAMw3B,MAAWX,EACzBA,GAAQ,CACV,CAEA,GAAkB,EAAbp2B,EAAMu1B,MAAaY,KAAwB,WAAdn2B,EAAM41B,OAAqB,CAC3DP,EAAKt1B,IAAM,yBACXC,EAAM+J,KAAOkrB,GACb,KACF,CAEAkB,EAAO,EACPC,EAAO,CAGT,CACAp2B,EAAM+J,KAv0CE,MAy0CV,KAz0CU,MA00CRguB,EAAMsiD,GACN,MAAM5gD,EACR,KAAKxE,GACH8C,EAAMyiD,GACN,MAAM/gD,EACR,KA70CS,MA80CP,OAAOghD,GAGT,QACE,OAAOF,GAyCb,OA3BAllD,EAAKz1B,SAAW8K,EAChB2qB,EAAKx1B,UAAY84B,EACjBtD,EAAK71B,QAAUu3B,EACf1B,EAAK51B,SAAWq3B,EAChB92B,EAAMm2B,KAAOA,EACbn2B,EAAMo2B,KAAOA,GAGTp2B,EAAM+1B,OAAU8C,IAASxD,EAAKx1B,WAAaG,EAAM+J,KAAOkrB,KACvCj1B,EAAM+J,KAAOirB,IAAS0D,IAAUyhD,MAC/C9hD,GAAahD,EAAMA,EAAK11B,OAAQ01B,EAAKz1B,SAAUi5B,EAAOxD,EAAKx1B,WAEjE+4B,GAAOvD,EAAK51B,SACZo5B,GAAQxD,EAAKx1B,UACbw1B,EAAK31B,UAAYk5B,EACjBvD,EAAKv1B,WAAa+4B,EAClB74B,EAAM41B,OAASiD,EACG,EAAb74B,EAAMu1B,MAAasD,IACtBxD,EAAKn1B,MAAQF,EAAM21B,MAChB31B,EAAMy1B,MAAQ44C,EAAQruE,EAAM21B,MAAOh2B,EAAQk5B,EAAMxD,EAAKz1B,SAAWi5B,GAAQk1C,EAAU/tE,EAAM21B,MAAOh2B,EAAQk5B,EAAMxD,EAAKz1B,SAAWi5B,IAEnIxD,EAAKp1B,UAAYD,EAAMo2B,MAAQp2B,EAAMs1B,KAAO,GAAK,IAC9Bt1B,EAAM+J,OAASmb,GAAO,IAAM,IAC5BllB,EAAM+J,OAAS+qB,IAAQ90B,EAAM+J,OAAS8qB,GAAQ,IAAM,IACzD,IAAR+D,GAAsB,IAATC,GAAeH,IAAUyhD,KAAepiD,IAAQqiD,KACjEriD,EAAMvD,IAEDuD,CAAG,EAoGXmC,WAhGmB7E,IAElB,GAAImC,GAAkBnC,GACpB,OAAOklD,GAGT,IAAIv6E,EAAQq1B,EAAKr1B,MAKjB,OAJIA,EAAMk2B,SACRl2B,EAAMk2B,OAAS,MAEjBb,EAAKr1B,MAAQ,KACNo6E,EAAM,EAsFdjgD,iBAlFwBA,CAAC9E,EAAMQ,KAG9B,GAAI2B,GAAkBnC,GAAS,OAAOklD,GACtC,MAAMv6E,EAAQq1B,EAAKr1B,MACnB,OAAyB,KAAP,EAAbA,EAAMu1B,MAA0BglD,IAGrCv6E,EAAM61B,KAAOA,EACbA,EAAK6D,MAAO,EACL0gD,GAAM,EAyEdhgD,qBArE4BA,CAAC/E,EAAMgF,KAClC,MAAMC,EAAaD,EAAWl5B,OAE9B,IAAInB,EACAu6B,EACAxC,EAGJ,OAAIP,GAAkBnC,GAAgBklD,IACtCv6E,EAAQq1B,EAAKr1B,MAEM,IAAfA,EAAMu1B,MAAcv1B,EAAM+J,OAAS4qB,GAC9B4lD,GAILv6E,EAAM+J,OAAS4qB,KACjB4F,EAAS,EAETA,EAASwzC,EAAUxzC,EAAQF,EAAYC,EAAY,GAC/CC,IAAWv6B,EAAM21B,OACZ6kD,IAKXziD,EAAMM,GAAahD,EAAMgF,EAAYC,EAAYA,GAC7CvC,GACF/3B,EAAM+J,KAx7CK,MAy7CJ0wE,KAETz6E,EAAMw1B,SAAW,EAEV4kD,KAAM,EAqCd5/C,YAxBiB,sCAkFlB,IAAIogD,GApCJ,WAEEt7E,KAAKouB,KAAa,EAElBpuB,KAAKq6B,KAAa,EAElBr6B,KAAKs6B,OAAa,EAElBt6B,KAAKu6B,GAAa,EAElBv6B,KAAKg3B,MAAa,KAElBh3B,KAAKw6B,UAAa,EAWlBx6B,KAAK4R,KAAa,GAIlB5R,KAAK06B,QAAa,GAIlB16B,KAAK26B,KAAa,EAElB36B,KAAKo6B,MAAa,CACpB,EAIA,MAAM31B,GAAWzB,OAAO4H,UAAUnG,UAK5B,WACJ0qE,GAAU,SAAE16C,GAAQ,KACpBG,GAAI,aAAEC,GAAY,YAAEC,GAAW,eAAEC,GAAc,aAAEC,GAAY,YAAEC,IAC7Di6C,EAkFJ,SAASqM,GAAU35D,GACjB5hB,KAAK4hB,QAAUs1D,GAAc,CAC3ByB,UAAW,MACXpgD,WAAY,GACZxG,GAAI,IACHnQ,GAAW,CAAC,GAEf,MAAMg3D,EAAM54E,KAAK4hB,QAIbg3D,EAAIC,KAAQD,EAAIrgD,YAAc,GAAOqgD,EAAIrgD,WAAa,KACxDqgD,EAAIrgD,YAAcqgD,EAAIrgD,WACC,IAAnBqgD,EAAIrgD,aAAoBqgD,EAAIrgD,YAAc,OAI3CqgD,EAAIrgD,YAAc,GAAOqgD,EAAIrgD,WAAa,KACzC3W,GAAWA,EAAQ2W,aACvBqgD,EAAIrgD,YAAc,IAKfqgD,EAAIrgD,WAAa,IAAQqgD,EAAIrgD,WAAa,IAGf,KAAR,GAAjBqgD,EAAIrgD,cACPqgD,EAAIrgD,YAAc,IAItBv4B,KAAK4pB,IAAS,EACd5pB,KAAKS,IAAS,GACdT,KAAK+4E,OAAS,EACd/4E,KAAKm3E,OAAS,GAEdn3E,KAAK+1B,KAAS,IAAIoiD,GAClBn4E,KAAK+1B,KAAKx1B,UAAY,EAEtB,IAAI2tB,EAAUktD,GAAY5iD,aACxBx4B,KAAK+1B,KACL6iD,EAAIrgD,YAGN,GAAIrK,IAAW0G,GACb,MAAM,IAAI/wB,MAAMorE,EAAS/gD,IAQ3B,GALAluB,KAAKkyB,OAAS,IAAIopD,GAElBF,GAAYvgD,iBAAiB76B,KAAK+1B,KAAM/1B,KAAKkyB,QAGzC0mD,EAAI79C,aAEwB,kBAAnB69C,EAAI79C,WACb69C,EAAI79C,WAAay8C,GAAmBoB,EAAI79C,YACG,yBAAlCt2B,GAASqS,KAAK8hE,EAAI79C,cAC3B69C,EAAI79C,WAAa,IAAIzK,WAAWsoD,EAAI79C,aAElC69C,EAAIC,MACN3qD,EAASktD,GAAYtgD,qBAAqB96B,KAAK+1B,KAAM6iD,EAAI79C,YACrD7M,IAAW0G,KACb,MAAM,IAAI/wB,MAAMorE,EAAS/gD,GAIjC,CAiNA,SAASstD,GAAUv7E,EAAO2hB,GACxB,MAAM65D,EAAW,IAAIF,GAAU35D,GAK/B,GAHA65D,EAASn0E,KAAKrH,GAGVw7E,EAAS7xD,IAAK,MAAM6xD,EAASh7E,KAAOwuE,EAASwM,EAAS7xD,KAE1D,OAAO6xD,EAAS9sD,MAClB,CA/LA4sD,GAAU3wE,UAAUtD,KAAO,SAAU3D,EAAMy1E,GACzC,MAAMrjD,EAAO/1B,KAAK+1B,KACZ4iD,EAAY34E,KAAK4hB,QAAQ+2D,UACzB59C,EAAa/6B,KAAK4hB,QAAQmZ,WAChC,IAAI7M,EAAQmrD,EAAaqC,EAEzB,GAAI17E,KAAK+4E,MAAO,OAAO,EAevB,IAbiCM,EAA7BD,MAAiBA,EAA0BA,GACb,IAAfA,EAAsB3kD,GAAW06C,GAGxB,yBAAxB1qE,GAASqS,KAAKnT,GAChBoyB,EAAK91B,MAAQ,IAAIqwB,WAAW3sB,GAE5BoyB,EAAK91B,MAAQ0D,EAGfoyB,EAAK71B,QAAU,EACf61B,EAAK51B,SAAW41B,EAAK91B,MAAM4B,SAElB,CAqBP,IApBuB,IAAnBk0B,EAAKx1B,YACPw1B,EAAK11B,OAAS,IAAIiwB,WAAWqoD,GAC7B5iD,EAAKz1B,SAAW,EAChBy1B,EAAKx1B,UAAYo4E,GAGnBzqD,EAASktD,GAAYjiD,QAAQpD,EAAMsjD,GAE/BnrD,IAAW4G,IAAeiG,IAC5B7M,EAASktD,GAAYtgD,qBAAqB/E,EAAMgF,GAE5C7M,IAAW0G,GACb1G,EAASktD,GAAYjiD,QAAQpD,EAAMsjD,GAC1BnrD,IAAW8G,KAEpB9G,EAAS4G,KAKNiB,EAAK51B,SAAW,GAChB+tB,IAAW2G,IACXkB,EAAKr1B,MAAMu1B,KAAO,GACK,IAAvBtyB,EAAKoyB,EAAK71B,UAEfk7E,GAAY/iD,aAAatC,GACzB7H,EAASktD,GAAYjiD,QAAQpD,EAAMsjD,GAGrC,OAAQnrD,GACN,KAAK6G,GACL,KAAKC,GACL,KAAKF,GACL,KAAKG,GAGH,OAFAj1B,KAAKu5E,MAAMrrD,GACXluB,KAAK+4E,OAAQ,GACN,EAOX,GAFA2C,EAAiB3lD,EAAKx1B,UAElBw1B,EAAKz1B,WACgB,IAAnBy1B,EAAKx1B,WAAmB2tB,IAAW2G,IAErC,GAAwB,WAApB70B,KAAK4hB,QAAQmQ,GAAiB,CAEhC,IAAI4pD,EAAgBnE,GAAmBzhD,EAAK11B,OAAQ01B,EAAKz1B,UAErD89C,EAAOroB,EAAKz1B,SAAWq7E,EACvBC,EAAUpE,GAAmBzhD,EAAK11B,OAAQs7E,GAG9C5lD,EAAKz1B,SAAW89C,EAChBroB,EAAKx1B,UAAYo4E,EAAYv6B,EACzBA,GAAMroB,EAAK11B,OAAOiW,IAAIyf,EAAK11B,OAAOuwB,SAAS+qD,EAAeA,EAAgBv9B,GAAO,GAErFp+C,KAAKs5E,OAAOsC,EAEd,MACE57E,KAAKs5E,OAAOvjD,EAAK11B,OAAOwB,SAAWk0B,EAAKz1B,SAAWy1B,EAAK11B,OAAS01B,EAAK11B,OAAOuwB,SAAS,EAAGmF,EAAKz1B,WAMpG,GAAI4tB,IAAW0G,IAA2B,IAAnB8mD,EAAvB,CAGA,GAAIxtD,IAAW2G,GAIb,OAHA3G,EAASktD,GAAYxgD,WAAW56B,KAAK+1B,MACrC/1B,KAAKu5E,MAAMrrD,GACXluB,KAAK+4E,OAAQ,GACN,EAGT,GAAsB,IAAlBhjD,EAAK51B,SAAgB,KAV4B,CAWvD,CAEA,OAAO,CACT,EAWAo7E,GAAU3wE,UAAU0uE,OAAS,SAAUplD,GACrCl0B,KAAKm3E,OAAO7vE,KAAK4sB,EACnB,EAYAqnD,GAAU3wE,UAAU2uE,MAAQ,SAAUrrD,GAEhCA,IAAW0G,KACW,WAApB50B,KAAK4hB,QAAQmQ,GACf/xB,KAAK2uB,OAAS3uB,KAAKm3E,OAAOja,KAAK,IAE/Bl9D,KAAK2uB,OAASuoD,GAAqBl3E,KAAKm3E,SAG5Cn3E,KAAKm3E,OAAS,GACdn3E,KAAK4pB,IAAMsE,EACXluB,KAAKS,IAAMT,KAAK+1B,KAAKt1B,GACvB,EA+EA,IAMIo7E,GAAc,CACjBC,QAPiBP,GAQjBpiD,QAPeqiD,GAQfO,WA1BD,SAAsB97E,EAAO2hB,GAG3B,OAFAA,EAAUA,GAAW,CAAC,GACdi3D,KAAM,EACP2C,GAAUv7E,EAAO2hB,EAC1B,EAuBCo6D,OAPcR,GAQd7B,UAPezK,GAUhB,MAAM,QAAEuK,GAAO,QAAErD,GAAO,WAAEsD,GAAU,KAAEZ,IAASU,IAEzC,QAAEsC,GAAO,QAAE3iD,GAAO,WAAE4iD,GAAU,OAAEC,IAAWH,GAIjD,IAGII,GAASnD,GAEToD,GAAY/iD,GAEZgjD,GAAWH,kDC7pNf,IACEtsE,EAAY,6CACZC,EAAWvG,KAAKwG,KAChBC,EAAYzG,KAAKC,MAEjByG,EAAiB,qBACjBC,EAAgBD,EAAiB,yDAEjCE,EAAO,KACPC,EAAW,GACXC,EAAmB,iBAEnBC,EAAW,CAAC,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAC7EC,EAAY,IAKZC,EAAM,IA0pFR,SAASC,EAASC,GAChB,IAAIvF,EAAQ,EAAJuF,EACR,OAAOA,EAAI,GAAKA,IAAMvF,EAAIA,EAAIA,EAAI,CACpC,CAIA,SAASwF,EAAcC,GAMrB,IALA,IAAIC,EAAGC,EACL3F,EAAI,EACJ4F,EAAIH,EAAE5O,OACNgP,EAAIJ,EAAE,GAAK,GAENzF,EAAI4F,GAAI,CAGb,IAFAF,EAAID,EAAEzF,KAAO,GACb2F,EAAIV,EAAWS,EAAE7O,OACV8O,IAAKD,EAAI,IAAMA,GACtBG,GAAKH,CACP,CAGA,IAAKE,EAAIC,EAAEhP,OAA8B,KAAtBgP,EAAEC,aAAaF,KAElC,OAAOC,EAAEnD,MAAM,EAAGkD,EAAI,GAAK,EAC7B,CAIA,SAASG,EAAQC,EAAGC,GAClB,IAAIR,EAAGS,EACLC,EAAKH,EAAEI,EACPC,EAAKJ,EAAEG,EACPpG,EAAIgG,EAAEN,EACNE,EAAIK,EAAEP,EACNY,EAAIN,EAAEO,EACNC,EAAIP,EAAEM,EAGR,IAAKvG,IAAM4F,EAAG,OAAO,KAMrB,GAJAH,EAAIU,IAAOA,EAAG,GACdD,EAAIG,IAAOA,EAAG,GAGVZ,GAAKS,EAAG,OAAOT,EAAIS,EAAI,GAAKN,EAAI5F,EAGpC,GAAIA,GAAK4F,EAAG,OAAO5F,EAMnB,GAJAyF,EAAIzF,EAAI,EACRkG,EAAII,GAAKE,GAGJL,IAAOE,EAAI,OAAOH,EAAI,GAAKC,EAAKV,EAAI,GAAK,EAG9C,IAAKS,EAAG,OAAOI,EAAIE,EAAIf,EAAI,GAAK,EAKhC,IAHAG,GAAKU,EAAIH,EAAGtP,SAAW2P,EAAIH,EAAGxP,QAAUyP,EAAIE,EAGvCxG,EAAI,EAAGA,EAAI4F,EAAG5F,IAAK,GAAImG,EAAGnG,IAAMqG,EAAGrG,GAAI,OAAOmG,EAAGnG,GAAKqG,EAAGrG,GAAKyF,EAAI,GAAK,EAG5E,OAAOa,GAAKE,EAAI,EAAIF,EAAIE,EAAIf,EAAI,GAAK,CACvC,CAMA,SAASgB,EAASlB,EAAGmB,EAAKC,EAAKC,GAC7B,GAAIrB,EAAImB,GAAOnB,EAAIoB,GAAOpB,IAAMV,EAAUU,GACxC,MAAM1M,MACJiM,GAAkB8B,GAAQ,aAA2B,iBAALrB,EAC7CA,EAAImB,GAAOnB,EAAIoB,EAAM,kBAAoB,oBACzC,6BAA+BE,OAAOtB,GAE/C,CAIA,SAASuB,EAAMvB,GACb,IAAIe,EAAIf,EAAEa,EAAEvP,OAAS,EACrB,OAAOyO,EAASC,EAAEgB,EAAItB,IAAaqB,GAAKf,EAAEa,EAAEE,GAAK,GAAK,CACxD,CAGA,SAASS,EAAcC,EAAKT,GAC1B,OAAQS,EAAInQ,OAAS,EAAImQ,EAAIC,OAAO,GAAK,IAAMD,EAAItE,MAAM,GAAKsE,IAC5DT,EAAI,EAAI,IAAM,MAAQA,CAC1B,CAGA,SAASW,EAAaF,EAAKT,EAAGZ,GAC5B,IAAIwB,EAAKC,EAGT,GAAIb,EAAI,EAAG,CAGT,IAAKa,EAAKzB,EAAI,MAAOY,EAAGa,GAAMzB,GAC9BqB,EAAMI,EAAKJ,CAGb,MAIE,KAAMT,GAHNY,EAAMH,EAAInQ,QAGK,CACb,IAAKuQ,EAAKzB,EAAGY,GAAKY,IAAOZ,EAAGa,GAAMzB,GAClCqB,GAAOI,CACT,MAAWb,EAAIY,IACbH,EAAMA,EAAItE,MAAM,EAAG6D,GAAK,IAAMS,EAAItE,MAAM6D,IAI5C,OAAOS,CACT,CAMO,IAAIvC,EAhxFX,SAAS4C,EAAMC,GACb,IAAIC,EAAKC,EAAaC,EACpBC,EAAIjD,EAAU7E,UAAY,CAAEqD,YAAawB,EAAWhL,SAAU,KAAMkO,QAAS,MAC7EC,EAAM,IAAInD,EAAU,GAUpBoD,EAAiB,GAajBC,EAAgB,EAMhBC,GAAc,EAIdC,EAAa,GAMbC,GAAW,IAKXC,EAAU,IAGVC,GAAS,EAkBTC,EAAc,EAIdC,EAAgB,EAGhBC,EAAS,CACPC,OAAQ,GACRC,UAAW,EACXC,mBAAoB,EACpBC,eAAgB,IAChBC,iBAAkB,IAClBC,kBAAmB,EACnBC,uBAAwB,OACxBC,OAAQ,IAMVC,EAAW,uCACXC,GAAiC,EAgBnC,SAASvE,EAAUwE,EAAG/C,GACpB,IAAIgD,EAAU9C,EAAG+C,EAAa5C,EAAGvG,EAAGoJ,EAAOjC,EAAKH,EAC9ChB,EAAIhR,KAGN,KAAMgR,aAAavB,GAAY,OAAO,IAAIA,EAAUwE,EAAG/C,GAEvD,GAAS,MAALA,EAAW,CAEb,GAAI+C,IAAwB,IAAnBA,EAAEI,aAYT,OAXArD,EAAEN,EAAIuD,EAAEvD,QAEHuD,EAAE7C,GAAK6C,EAAE1C,EAAI2B,EAChBlC,EAAEI,EAAIJ,EAAEO,EAAI,KACH0C,EAAE1C,EAAI0B,EACfjC,EAAEI,EAAI,CAACJ,EAAEO,EAAI,IAEbP,EAAEO,EAAI0C,EAAE1C,EACRP,EAAEI,EAAI6C,EAAE7C,EAAE1D,UAMd,IAAK0G,EAAoB,iBAALH,IAAsB,EAAJA,GAAS,EAAG,CAMhD,GAHAjD,EAAEN,EAAI,EAAIuD,EAAI,GAAKA,GAAKA,GAAI,GAAK,EAG7BA,MAAQA,EAAG,CACb,IAAK1C,EAAI,EAAGvG,EAAIiJ,EAAGjJ,GAAK,GAAIA,GAAK,GAAIuG,KASrC,YAPIA,EAAI2B,EACNlC,EAAEI,EAAIJ,EAAEO,EAAI,MAEZP,EAAEO,EAAIA,EACNP,EAAEI,EAAI,CAAC6C,IAIX,CAEAjC,EAAMH,OAAOoC,EACf,KAAO,CAEL,IAAKvE,EAAU4E,KAAKtC,EAAMH,OAAOoC,IAAK,OAAOxB,EAAazB,EAAGgB,EAAKoC,GAElEpD,EAAEN,EAAyB,IAArBsB,EAAIlB,WAAW,IAAYkB,EAAMA,EAAItE,MAAM,IAAK,GAAK,CAC7D,EAGK6D,EAAIS,EAAIuC,QAAQ,OAAS,IAAGvC,EAAMA,EAAIhF,QAAQ,IAAK,MAGnDhC,EAAIgH,EAAIwC,OAAO,OAAS,GAGvBjD,EAAI,IAAGA,EAAIvG,GACfuG,IAAMS,EAAItE,MAAM1C,EAAI,GACpBgH,EAAMA,EAAIlJ,UAAU,EAAGkC,IACduG,EAAI,IAGbA,EAAIS,EAAInQ,OAGZ,KAAO,CAOL,GAJA4P,EAASP,EAAG,EAAG6C,EAASlS,OAAQ,QAIvB,IAALqP,GAAW8C,EAEb,OAAOS,EADPzD,EAAI,IAAIvB,EAAUwE,GACFpB,EAAiB7B,EAAEO,EAAI,EAAGuB,GAK5C,GAFAd,EAAMH,OAAOoC,GAETG,EAAoB,iBAALH,EAAe,CAGhC,GAAQ,EAAJA,GAAS,EAAG,OAAOxB,EAAazB,EAAGgB,EAAKoC,EAAOlD,GAKnD,GAHAF,EAAEN,EAAI,EAAIuD,EAAI,GAAKjC,EAAMA,EAAItE,MAAM,IAAK,GAAK,EAGzC+B,EAAUiF,OAAS1C,EAAIhF,QAAQ,YAAa,IAAInL,OAAS,GAC3D,MAAMgC,MACJkM,EAAgBkE,EAEtB,MACEjD,EAAEN,EAA0B,KAAtBsB,EAAIlB,WAAW,IAAakB,EAAMA,EAAItE,MAAM,IAAK,GAAK,EAQ9D,IALAwG,EAAWH,EAASrG,MAAM,EAAGwD,GAC7BK,EAAIvG,EAAI,EAIHmH,EAAMH,EAAInQ,OAAQmJ,EAAImH,EAAKnH,IAC9B,GAAIkJ,EAASK,QAAQnD,EAAIY,EAAIC,OAAOjH,IAAM,EAAG,CAC3C,GAAS,KAALoG,GAGF,GAAIpG,EAAIuG,EAAG,CACTA,EAAIY,EACJ,QACF,OACK,IAAKgC,IAGNnC,GAAOA,EAAI2C,gBAAkB3C,EAAMA,EAAI4C,gBACvC5C,GAAOA,EAAI4C,gBAAkB5C,EAAMA,EAAI2C,gBAAgB,CACzDR,GAAc,EACdnJ,GAAK,EACLuG,EAAI,EACJ,QACF,CAGF,OAAOkB,EAAazB,EAAGa,OAAOoC,GAAIG,EAAOlD,EAC3C,CAIFkD,GAAQ,GAIH7C,GAHLS,EAAMQ,EAAYR,EAAKd,EAAG,GAAIF,EAAEN,IAGnB6D,QAAQ,OAAS,EAAGvC,EAAMA,EAAIhF,QAAQ,IAAK,IACnDuE,EAAIS,EAAInQ,MACf,CAGA,IAAKmJ,EAAI,EAAyB,KAAtBgH,EAAIlB,WAAW9F,GAAWA,KAGtC,IAAKmH,EAAMH,EAAInQ,OAAkC,KAA1BmQ,EAAIlB,aAAaqB,KAExC,GAAIH,EAAMA,EAAItE,MAAM1C,IAAKmH,GAAM,CAI7B,GAHAA,GAAOnH,EAGHoJ,GAAS3E,EAAUiF,OACrBvC,EAAM,KAAO8B,EAAI/D,GAAoB+D,IAAMpE,EAAUoE,IACnD,MAAMpQ,MACJkM,EAAiBiB,EAAEN,EAAIuD,GAI7B,IAAK1C,EAAIA,EAAIvG,EAAI,GAAKkI,EAGpBlC,EAAEI,EAAIJ,EAAEO,EAAI,UAGP,GAAIA,EAAI0B,EAGbjC,EAAEI,EAAI,CAACJ,EAAEO,EAAI,OACR,CAWL,GAVAP,EAAEO,EAAIA,EACNP,EAAEI,EAAI,GAMNpG,GAAKuG,EAAI,GAAKtB,EACVsB,EAAI,IAAGvG,GAAKiF,GAEZjF,EAAImH,EAAK,CAGX,IAFInH,GAAGgG,EAAEI,EAAE9J,MAAM0K,EAAItE,MAAM,EAAG1C,IAEzBmH,GAAOlC,EAAUjF,EAAImH,GACxBnB,EAAEI,EAAE9J,MAAM0K,EAAItE,MAAM1C,EAAGA,GAAKiF,IAG9BjF,EAAIiF,GAAY+B,EAAMA,EAAItE,MAAM1C,IAAInJ,MACtC,MACEmJ,GAAKmH,EAGP,KAAOnH,IAAKgH,GAAO,KACnBhB,EAAEI,EAAE9J,MAAM0K,EACZ,CACF,MAGEhB,EAAEI,EAAI,CAACJ,EAAEO,EAAI,EAEjB,CA21BA,SAASsD,EAAOtE,EAAGvF,EAAG8J,EAAIC,GACxB,IAAIC,EAAIzD,EAAG0D,EAAI9C,EAAKH,EAKpB,GAHU,MAAN8C,EAAYA,EAAKhC,EAChBrB,EAASqD,EAAI,EAAG,IAEhBvE,EAAEa,EAAG,OAAOb,EAAE9L,WAKnB,GAHAuQ,EAAKzE,EAAEa,EAAE,GACT6D,EAAK1E,EAAEgB,EAEE,MAALvG,EACFgH,EAAMxB,EAAcD,EAAEa,GACtBY,EAAY,GAAN+C,GAAiB,GAANA,IAAYE,GAAMlC,GAAckC,GAAMjC,GACpDjB,EAAcC,EAAKiD,GACnB/C,EAAaF,EAAKiD,EAAI,UAezB,GAVA1D,GAHAhB,EAAIkE,EAAM,IAAIhF,EAAUc,GAAIvF,EAAG8J,IAGzBvD,EAGNY,GADAH,EAAMxB,EAAcD,EAAEa,IACZvP,OAOA,GAANkT,GAAiB,GAANA,IAAY/J,GAAKuG,GAAKA,GAAKwB,GAAa,CAGrD,KAAOZ,EAAMnH,EAAGgH,GAAO,IAAKG,KAC5BH,EAAMD,EAAcC,EAAKT,EAG3B,MAKE,GAJAvG,GAAKiK,EACLjD,EAAME,EAAaF,EAAKT,EAAG,KAGvBA,EAAI,EAAIY,GACV,KAAMnH,EAAI,EAAG,IAAKgH,GAAO,IAAKhH,IAAKgH,GAAO,WAG1C,IADAhH,GAAKuG,EAAIY,GACD,EAEN,IADIZ,EAAI,GAAKY,IAAKH,GAAO,KAClBhH,IAAKgH,GAAO,KAM3B,OAAOzB,EAAEG,EAAI,GAAKsE,EAAK,IAAMhD,EAAMA,CACrC,CAKA,SAASkD,EAASC,EAAM5E,GAKtB,IAJA,IAAIe,EAAGL,EACLjG,EAAI,EACJgG,EAAI,IAAIvB,EAAU0F,EAAK,IAElBnK,EAAImK,EAAKtT,OAAQmJ,OACtBiG,EAAI,IAAIxB,EAAU0F,EAAKnK,KAChB0F,IAAMY,EAAIP,EAAQC,EAAGC,MAAQV,GAAW,IAANe,GAAWN,EAAEN,IAAMH,KAC1DS,EAAIC,GAIR,OAAOD,CACT,CAOA,SAASoE,EAAU7E,EAAGa,EAAGG,GAKvB,IAJA,IAAIvG,EAAI,EACN4F,EAAIQ,EAAEvP,QAGAuP,IAAIR,GAAIQ,EAAEiE,OAGlB,IAAKzE,EAAIQ,EAAE,GAAIR,GAAK,GAAIA,GAAK,GAAI5F,KAkBjC,OAfKuG,EAAIvG,EAAIuG,EAAItB,EAAW,GAAKiD,EAG/B3C,EAAEa,EAAIb,EAAEgB,EAAI,KAGHA,EAAI0B,EAGb1C,EAAEa,EAAI,CAACb,EAAEgB,EAAI,IAEbhB,EAAEgB,EAAIA,EACNhB,EAAEa,EAAIA,GAGDb,CACT,CAyDA,SAASkE,EAAMzD,EAAGsE,EAAIR,EAAIjE,GACxB,IAAI0E,EAAGvK,EAAG4F,EAAGU,EAAGf,EAAGiF,EAAIC,EACrBtE,EAAKH,EAAEI,EACPsE,EAASvF,EAGX,GAAIgB,EAAI,CAQNpK,EAAK,CAGH,IAAKwO,EAAI,EAAGjE,EAAIH,EAAG,GAAIG,GAAK,GAAIA,GAAK,GAAIiE,KAIzC,IAHAvK,EAAIsK,EAAKC,GAGD,EACNvK,GAAKiF,EACLW,EAAI0E,EACJ/E,EAAIY,EAAGqE,EAAK,GAGZC,EAAK5F,EAAUU,EAAImF,EAAOH,EAAI3E,EAAI,GAAK,SAIvC,IAFA4E,EAAK7F,GAAU3E,EAAI,GAAKiF,KAEdkB,EAAGtP,OAAQ,CAEnB,IAAIgP,EASF,MAAM9J,EANN,KAAOoK,EAAGtP,QAAU2T,EAAIrE,EAAG7J,KAAK,IAChCiJ,EAAIkF,EAAK,EACTF,EAAI,EAEJ3E,GADA5F,GAAKiF,GACGA,EAAW,CAIvB,KAAO,CAIL,IAHAM,EAAIe,EAAIH,EAAGqE,GAGND,EAAI,EAAGjE,GAAK,GAAIA,GAAK,GAAIiE,KAU9BE,GAHA7E,GAJA5F,GAAKiF,GAIGA,EAAWsF,GAGV,EAAI,EAAI1F,EAAUU,EAAImF,EAAOH,EAAI3E,EAAI,GAAK,GACrD,CAkBF,GAfAC,EAAIA,GAAKyE,EAAK,GAKC,MAAdnE,EAAGqE,EAAK,KAAe5E,EAAI,EAAIL,EAAIA,EAAImF,EAAOH,EAAI3E,EAAI,IAEvDC,EAAIiE,EAAK,GACLW,GAAM5E,KAAa,GAANiE,GAAWA,IAAO9D,EAAEN,EAAI,EAAI,EAAI,IAC9C+E,EAAK,GAAW,GAANA,IAAkB,GAANX,GAAWjE,GAAW,GAANiE,IAGrC9J,EAAI,EAAI4F,EAAI,EAAIL,EAAImF,EAAOH,EAAI3E,GAAK,EAAIO,EAAGqE,EAAK,IAAM,GAAM,GAC7DV,IAAO9D,EAAEN,EAAI,EAAI,EAAI,IAEpB4E,EAAK,IAAMnE,EAAG,GAiBhB,OAhBAA,EAAGtP,OAAS,EAERgP,GAGFyE,GAAMtE,EAAEO,EAAI,EAGZJ,EAAG,GAAKuE,GAAQzF,EAAWqF,EAAKrF,GAAYA,GAC5Ce,EAAEO,GAAK+D,GAAM,GAIbnE,EAAG,GAAKH,EAAEO,EAAI,EAGTP,EAkBT,GAdS,GAALhG,GACFmG,EAAGtP,OAAS2T,EACZlE,EAAI,EACJkE,MAEArE,EAAGtP,OAAS2T,EAAK,EACjBlE,EAAIoE,EAAOzF,EAAWjF,GAItBmG,EAAGqE,GAAM5E,EAAI,EAAIf,EAAUU,EAAImF,EAAOH,EAAI3E,GAAK8E,EAAO9E,IAAMU,EAAI,GAI9DT,EAEF,OAAU,CAGR,GAAU,GAAN2E,EAAS,CAGX,IAAKxK,EAAI,EAAG4F,EAAIO,EAAG,GAAIP,GAAK,GAAIA,GAAK,GAAI5F,KAEzC,IADA4F,EAAIO,EAAG,IAAMG,EACRA,EAAI,EAAGV,GAAK,GAAIA,GAAK,GAAIU,KAG1BtG,GAAKsG,IACPN,EAAEO,IACEJ,EAAG,IAAMnB,IAAMmB,EAAG,GAAK,IAG7B,KACF,CAEE,GADAA,EAAGqE,IAAOlE,EACNH,EAAGqE,IAAOxF,EAAM,MACpBmB,EAAGqE,KAAQ,EACXlE,EAAI,CAER,CAIF,IAAKtG,EAAImG,EAAGtP,OAAoB,IAAZsP,IAAKnG,GAAUmG,EAAGkE,OACxC,CAGIrE,EAAEO,EAAI2B,EACRlC,EAAEI,EAAIJ,EAAEO,EAAI,KAGHP,EAAEO,EAAI0B,IACfjC,EAAEI,EAAI,CAACJ,EAAEO,EAAI,GAEjB,CAEA,OAAOP,CACT,CAGA,SAAS2B,EAAQpC,GACf,IAAIyB,EACFT,EAAIhB,EAAEgB,EAER,OAAU,OAANA,EAAmBhB,EAAE9L,YAEzBuN,EAAMxB,EAAcD,EAAEa,GAEtBY,EAAMT,GAAKwB,GAAcxB,GAAKyB,EAC1BjB,EAAcC,EAAKT,GACnBW,EAAaF,EAAKT,EAAG,KAElBhB,EAAEG,EAAI,EAAI,IAAMsB,EAAMA,EAC/B,CAorCA,OAx1EAvC,EAAU4C,MAAQA,EAElB5C,EAAUkG,SAAW,EACrBlG,EAAUmG,WAAa,EACvBnG,EAAUoG,WAAa,EACvBpG,EAAUqG,YAAc,EACxBrG,EAAUsG,cAAgB,EAC1BtG,EAAUuG,gBAAkB,EAC5BvG,EAAUwG,gBAAkB,EAC5BxG,EAAUyG,gBAAkB,EAC5BzG,EAAU0G,iBAAmB,EAC7B1G,EAAU2G,OAAS,EAqCnB3G,EAAU4G,OAAS5G,EAAU6G,IAAM,SAAU1H,GAC3C,IAAI2H,EAAGtC,EAEP,GAAW,MAAPrF,EAAa,CAEf,GAAkB,iBAAPA,EA4HT,MAAM/K,MACJiM,EAAiB,oBAAsBlB,GAvFzC,GAlCIA,EAAI4H,eAAeD,EAAI,oBAEzB9E,EADAwC,EAAIrF,EAAI2H,GACI,EAAGlG,EAAKkG,GACpB1D,EAAiBoB,GAKfrF,EAAI4H,eAAeD,EAAI,mBAEzB9E,EADAwC,EAAIrF,EAAI2H,GACI,EAAG,EAAGA,GAClBzD,EAAgBmB,GAOdrF,EAAI4H,eAAeD,EAAI,qBACzBtC,EAAIrF,EAAI2H,KACCtC,EAAEoB,KACT5D,EAASwC,EAAE,IAAK5D,EAAK,EAAGkG,GACxB9E,EAASwC,EAAE,GAAI,EAAG5D,EAAKkG,GACvBxD,EAAakB,EAAE,GACfjB,EAAaiB,EAAE,KAEfxC,EAASwC,GAAI5D,EAAKA,EAAKkG,GACvBxD,IAAeC,EAAaiB,EAAI,GAAKA,EAAIA,KAOzCrF,EAAI4H,eAAeD,EAAI,SAEzB,IADAtC,EAAIrF,EAAI2H,KACCtC,EAAEoB,IACT5D,EAASwC,EAAE,IAAK5D,GAAM,EAAGkG,GACzB9E,EAASwC,EAAE,GAAI,EAAG5D,EAAKkG,GACvBtD,EAAUgB,EAAE,GACZf,EAAUe,EAAE,OACP,CAEL,GADAxC,EAASwC,GAAI5D,EAAKA,EAAKkG,IACnBtC,EAGF,MAAMpQ,MACJiM,EAAiByG,EAAI,oBAAsBtC,GAH7ChB,IAAYC,EAAUe,EAAI,GAAKA,EAAIA,EAKvC,CAMF,GAAIrF,EAAI4H,eAAeD,EAAI,UAAW,CAEpC,IADAtC,EAAIrF,EAAI2H,QACItC,EAcV,MAAMpQ,MACJiM,EAAiByG,EAAI,uBAAyBtC,GAdhD,GAAIA,EAAG,CACL,GAAqB,oBAAVwC,SAAyBA,SAClCA,OAAOC,kBAAmBD,OAAOnM,YAIjC,MADA6I,GAAUc,EACJpQ,MACJiM,EAAiB,sBAJnBqD,EAASc,CAMb,MACEd,EAASc,CAMf,CAoBA,GAhBIrF,EAAI4H,eAAeD,EAAI,iBAEzB9E,EADAwC,EAAIrF,EAAI2H,GACI,EAAG,EAAGA,GAClBnD,EAAca,GAKZrF,EAAI4H,eAAeD,EAAI,mBAEzB9E,EADAwC,EAAIrF,EAAI2H,GACI,EAAGlG,EAAKkG,GACpBlD,EAAgBY,GAKdrF,EAAI4H,eAAeD,EAAI,UAAW,CAEpC,GAAgB,iBADhBtC,EAAIrF,EAAI2H,IAEH,MAAM1S,MACTiM,EAAiByG,EAAI,mBAAqBtC,GAFlBX,EAASW,CAGrC,CAIA,GAAIrF,EAAI4H,eAAeD,EAAI,YAAa,CAKtC,GAAgB,iBAJhBtC,EAAIrF,EAAI2H,KAIqB,wBAAwBjC,KAAKL,GAIxD,MAAMpQ,MACJiM,EAAiByG,EAAI,aAAetC,GAJtCD,EAAmD,cAAlBC,EAAEvG,MAAM,EAAG,IAC5CqG,EAAWE,CAKf,CAQJ,CAEA,MAAO,CACLpB,eAAgBA,EAChBC,cAAeA,EACf6D,eAAgB,CAAC5D,EAAYC,GAC7B4D,MAAO,CAAC3D,EAASC,GACjBC,OAAQA,EACRC,YAAaA,EACbC,cAAeA,EACfC,OAAQA,EACRS,SAAUA,EAEd,EAYAtE,EAAUoH,YAAc,SAAU5C,GAChC,IAAKA,IAAwB,IAAnBA,EAAEI,aAAuB,OAAO,EAC1C,IAAK5E,EAAUiF,MAAO,OAAO,EAE7B,IAAI1J,EAAGuF,EACLa,EAAI6C,EAAE7C,EACNG,EAAI0C,EAAE1C,EACNb,EAAIuD,EAAEvD,EAER3J,EAAK,GAA2B,kBAAvB,CAAC,EAAEtC,SAASqS,KAAK1F,IAExB,IAAW,IAANV,IAAkB,IAAPA,IAAaa,IAAMlB,GAAOkB,GAAKlB,GAAOkB,IAAM1B,EAAU0B,GAAI,CAGxE,GAAa,IAATH,EAAE,GAAU,CACd,GAAU,IAANG,GAAwB,IAAbH,EAAEvP,OAAc,OAAO,EACtC,MAAMkF,CACR,CAQA,IALAiE,GAAKuG,EAAI,GAAKtB,GACN,IAAGjF,GAAKiF,GAIZ4B,OAAOT,EAAE,IAAIvP,QAAUmJ,EAAG,CAE5B,IAAKA,EAAI,EAAGA,EAAIoG,EAAEvP,OAAQmJ,IAExB,IADAuF,EAAIa,EAAEpG,IACE,GAAKuF,GAAKP,GAAQO,IAAMV,EAAUU,GAAI,MAAMxJ,EAItD,GAAU,IAANwJ,EAAS,OAAO,CACtB,CACF,OAGK,GAAU,OAANa,GAAoB,OAANG,IAAqB,OAANb,GAAoB,IAANA,IAAkB,IAAPA,GAC/D,OAAO,EAGT,MAAM7M,MACHiM,EAAiB,sBAAwBmE,EAC9C,EAQAxE,EAAUsH,QAAUtH,EAAUkC,IAAM,WAClC,OAAOuD,EAAStT,WAAY,EAC9B,EAQA6N,EAAUuH,QAAUvH,EAAUiC,IAAM,WAClC,OAAOwD,EAAStT,UAAW,EAC7B,EAaA6N,EAAUwH,OAAU,WAClB,IAAIC,EAAU,iBAMVC,EAAkB/N,KAAK6N,SAAWC,EAAW,QAC9C,WAAc,OAAOrH,EAAUzG,KAAK6N,SAAWC,EAAU,EACzD,WAAc,OAA2C,SAAlB,WAAhB9N,KAAK6N,SAAwB,IACnC,QAAhB7N,KAAK6N,SAAsB,EAAI,EAEnC,OAAO,SAAUG,GACf,IAAI3G,EAAGS,EAAGK,EAAGD,EAAG2C,EACdjJ,EAAI,EACJoG,EAAI,GACJiG,EAAO,IAAI5H,EAAUmD,GAOvB,GALU,MAANwE,EAAYA,EAAKvE,EAChBpB,EAAS2F,EAAI,EAAG/G,GAErBiB,EAAI3B,EAASyH,EAAKnH,GAEdkD,EAGF,GAAIsD,OAAOC,gBAAiB,CAI1B,IAFAjG,EAAIgG,OAAOC,gBAAgB,IAAIY,YAAYhG,GAAK,IAEzCtG,EAAIsG,IAQT2C,EAAW,OAAPxD,EAAEzF,IAAgByF,EAAEzF,EAAI,KAAO,MAM1B,MACPkG,EAAIuF,OAAOC,gBAAgB,IAAIY,YAAY,IAC3C7G,EAAEzF,GAAKkG,EAAE,GACTT,EAAEzF,EAAI,GAAKkG,EAAE,KAKbE,EAAE9J,KAAK2M,EAAI,MACXjJ,GAAK,GAGTA,EAAIsG,EAAI,CAGV,KAAO,KAAImF,OAAOnM,YA2BhB,MADA6I,GAAS,EACHtP,MACJiM,EAAiB,sBAvBnB,IAFAW,EAAIgG,OAAOnM,YAAYgH,GAAK,GAErBtG,EAAIsG,IAMT2C,EAAmB,iBAAN,GAAPxD,EAAEzF,IAA0C,cAAXyF,EAAEzF,EAAI,GAC9B,WAAXyF,EAAEzF,EAAI,GAAgC,SAAXyF,EAAEzF,EAAI,IACjCyF,EAAEzF,EAAI,IAAM,KAAOyF,EAAEzF,EAAI,IAAM,GAAKyF,EAAEzF,EAAI,KAErC,KACPyL,OAAOnM,YAAY,GAAGiN,KAAK9G,EAAGzF,IAI9BoG,EAAE9J,KAAK2M,EAAI,MACXjJ,GAAK,GAGTA,EAAIsG,EAAI,CAKV,CAIF,IAAK6B,EAEH,KAAOnI,EAAIsG,IACT2C,EAAIkD,KACI,OAAM/F,EAAEpG,KAAOiJ,EAAI,MAc/B,IAVA3C,EAAIF,IAAIpG,GACRoM,GAAMnH,EAGFqB,GAAK8F,IACPnD,EAAI9D,EAASF,EAAWmH,GACxBhG,EAAEpG,GAAK6E,EAAUyB,EAAI2C,GAAKA,GAIZ,IAAT7C,EAAEpG,GAAUoG,EAAEiE,MAAOrK,KAG5B,GAAIA,EAAI,EACNoG,EAAI,CAACG,EAAI,OACJ,CAGL,IAAKA,GAAK,EAAa,IAATH,EAAE,GAAUA,EAAEoG,OAAO,EAAG,GAAIjG,GAAKtB,GAG/C,IAAKjF,EAAI,EAAGiJ,EAAI7C,EAAE,GAAI6C,GAAK,GAAIA,GAAK,GAAIjJ,KAGpCA,EAAIiF,IAAUsB,GAAKtB,EAAWjF,EACpC,CAIA,OAFAqM,EAAK9F,EAAIA,EACT8F,EAAKjG,EAAIA,EACFiG,CACT,CACF,CAnIoB,GA2IpB5H,EAAUgI,IAAM,WAId,IAHA,IAAIzM,EAAI,EACNmK,EAAOvT,UACP6V,EAAM,IAAIhI,EAAU0F,EAAK,IACpBnK,EAAImK,EAAKtT,QAAS4V,EAAMA,EAAIC,KAAKvC,EAAKnK,MAC7C,OAAOyM,CACT,EAOAjF,EAAe,WACb,IAAImF,EAAU,aAOd,SAASC,EAAU5F,EAAK6F,EAAQC,EAAS5D,GAOvC,IANA,IAAItD,EAEFmH,EADAC,EAAM,CAAC,GAEPhN,EAAI,EACJmH,EAAMH,EAAInQ,OAELmJ,EAAImH,GAAM,CACf,IAAK4F,EAAOC,EAAInW,OAAQkW,IAAQC,EAAID,IAASF,GAI7C,IAFAG,EAAI,IAAM9D,EAASK,QAAQvC,EAAIC,OAAOjH,MAEjC4F,EAAI,EAAGA,EAAIoH,EAAInW,OAAQ+O,IAEtBoH,EAAIpH,GAAKkH,EAAU,IACH,MAAdE,EAAIpH,EAAI,KAAYoH,EAAIpH,EAAI,GAAK,GACrCoH,EAAIpH,EAAI,IAAMoH,EAAIpH,GAAKkH,EAAU,EACjCE,EAAIpH,IAAMkH,EAGhB,CAEA,OAAOE,EAAIpK,SACb,CAKA,OAAO,SAAUoE,EAAK6F,EAAQC,EAAS5T,EAAM+T,GAC3C,IAAI/D,EAAUqB,EAAGhE,EAAGD,EAAGT,EAAGG,EAAGG,EAAIF,EAC/BjG,EAAIgH,EAAIuC,QAAQ,KAChB6C,EAAKvE,EACLiC,EAAKhC,EA+BP,IA5BI9H,GAAK,IACPsG,EAAI+B,EAGJA,EAAgB,EAChBrB,EAAMA,EAAIhF,QAAQ,IAAK,IAEvBgE,GADAC,EAAI,IAAIxB,EAAUoI,IACZK,IAAIlG,EAAInQ,OAASmJ,GACvBqI,EAAgB/B,EAKhBL,EAAEG,EAAIwG,EAAU1F,EAAa1B,EAAcQ,EAAEI,GAAIJ,EAAEO,EAAG,KACrD,GAAIuG,EAASH,GACd1G,EAAEM,EAAIN,EAAEG,EAAEvP,QAUZ0P,EAAID,GALJH,EAAKyG,EAAU5F,EAAK6F,EAAQC,EAASG,GACjC/D,EAAWH,EAAU4D,IACrBzD,EAAWyD,EAAS5D,KAGblS,OAGO,GAAXsP,IAAKG,GAASH,EAAGkE,OAGxB,IAAKlE,EAAG,GAAI,OAAO+C,EAASjC,OAAO,GAqCnC,GAlCIjH,EAAI,IACJuG,GAEFP,EAAEI,EAAID,EACNH,EAAEO,EAAIA,EAGNP,EAAEN,EAAIxM,EAENiN,GADAH,EAAIuB,EAAIvB,EAAGC,EAAGmG,EAAItC,EAAIgD,IACf1G,EACPP,EAAIG,EAAEH,EACNU,EAAIP,EAAEO,GASRvG,EAAImG,EAHJoE,EAAIhE,EAAI6F,EAAK,GAOb9F,EAAIwG,EAAU,EACdjH,EAAIA,GAAK0E,EAAI,GAAkB,MAAbpE,EAAGoE,EAAI,GAEzB1E,EAAIiE,EAAK,GAAU,MAAL9J,GAAa6F,KAAa,GAANiE,GAAWA,IAAO9D,EAAEN,EAAI,EAAI,EAAI,IAC1D1F,EAAIsG,GAAKtG,GAAKsG,IAAW,GAANwD,GAAWjE,GAAW,GAANiE,GAAuB,EAAZ3D,EAAGoE,EAAI,IACtDT,IAAO9D,EAAEN,EAAI,EAAI,EAAI,IAKxB6E,EAAI,IAAMpE,EAAG,GAGfa,EAAMnB,EAAIqB,EAAagC,EAASjC,OAAO,IAAKmF,EAAIlD,EAASjC,OAAO,IAAMiC,EAASjC,OAAO,OACjF,CAML,GAHAd,EAAGtP,OAAS0T,EAGR1E,EAGF,MAAOiH,IAAW3G,IAAKoE,GAAKuC,GAC1B3G,EAAGoE,GAAK,EAEHA,MACDhE,EACFJ,EAAK,CAAC,GAAGgH,OAAOhH,IAMtB,IAAKG,EAAIH,EAAGtP,QAASsP,IAAKG,KAG1B,IAAKtG,EAAI,EAAGgH,EAAM,GAAIhH,GAAKsG,EAAGU,GAAOkC,EAASjC,OAAOd,EAAGnG,OAGxDgH,EAAME,EAAaF,EAAKT,EAAG2C,EAASjC,OAAO,GAC7C,CAGA,OAAOD,CACT,CACF,CAnJe,GAuJfO,EAAO,WAGL,SAAS6F,EAASpH,EAAGM,EAAG+G,GACtB,IAAIC,EAAGC,EAAMC,EAAKC,EAChBC,EAAQ,EACR1N,EAAIgG,EAAEnP,OACN8W,EAAMrH,EAAIlB,EACVwI,EAAMtH,EAAIlB,EAAY,EAExB,IAAKY,EAAIA,EAAEtD,QAAS1C,KAKlB0N,IADAH,EAAOI,GAHPH,EAAMxH,EAAEhG,GAAKoF,IAEbkI,EAAIM,EAAMJ,GADVC,EAAMzH,EAAEhG,GAAKoF,EAAY,GACHuI,GACGvI,EAAaA,EAAasI,GACnCL,EAAO,IAAMC,EAAIlI,EAAY,GAAKwI,EAAMH,EACxDzH,EAAEhG,GAAKuN,EAAOF,EAKhB,OAFIK,IAAO1H,EAAI,CAAC0H,GAAOP,OAAOnH,IAEvBA,CACT,CAEA,SAASD,EAAQN,EAAGS,EAAG2H,EAAIC,GACzB,IAAI9N,EAAG+N,EAEP,GAAIF,GAAMC,EACRC,EAAMF,EAAKC,EAAK,GAAK,OAGrB,IAAK9N,EAAI+N,EAAM,EAAG/N,EAAI6N,EAAI7N,IAExB,GAAIyF,EAAEzF,IAAMkG,EAAElG,GAAI,CAChB+N,EAAMtI,EAAEzF,GAAKkG,EAAElG,GAAK,GAAK,EACzB,KACF,CAIJ,OAAO+N,CACT,CAEA,SAASC,EAASvI,EAAGS,EAAG2H,EAAIR,GAI1B,IAHA,IAAIrN,EAAI,EAGD6N,KACLpI,EAAEoI,IAAO7N,EACTA,EAAIyF,EAAEoI,GAAM3H,EAAE2H,GAAM,EAAI,EACxBpI,EAAEoI,GAAM7N,EAAIqN,EAAO5H,EAAEoI,GAAM3H,EAAE2H,GAI/B,MAAQpI,EAAE,IAAMA,EAAE5O,OAAS,EAAG4O,EAAE+G,OAAO,EAAG,IAC5C,CAGA,OAAO,SAAUxG,EAAGC,EAAGmG,EAAItC,EAAIuD,GAC7B,IAAIU,EAAKxH,EAAGvG,EAAGiO,EAAM1I,EAAG2I,EAAMC,EAAOC,EAAGC,EAAIC,EAAKC,EAAMC,EAAMC,EAAIC,EAAIC,EACnEC,EAAIC,EACJnJ,EAAIM,EAAEN,GAAKO,EAAEP,EAAI,GAAK,EACtBS,EAAKH,EAAEI,EACPC,EAAKJ,EAAEG,EAGT,IAAKD,IAAOA,EAAG,KAAOE,IAAOA,EAAG,GAE9B,OAAO,IAAI5B,EAGTuB,EAAEN,GAAMO,EAAEP,IAAMS,GAAKE,GAAMF,EAAG,IAAME,EAAG,GAAMA,GAG7CF,GAAe,GAATA,EAAG,KAAYE,EAAS,EAAJX,EAAQA,EAAI,EAHaoJ,KAoBvD,IAZAT,GADAD,EAAI,IAAI3J,EAAUiB,IACXU,EAAI,GAEXV,EAAI0G,GADJ7F,EAAIP,EAAEO,EAAIN,EAAEM,GACC,EAER8G,IACHA,EAAOrI,EACPuB,EAAIjB,EAASU,EAAEO,EAAItB,GAAYK,EAASW,EAAEM,EAAItB,GAC9CS,EAAIA,EAAIT,EAAW,GAKhBjF,EAAI,EAAGqG,EAAGrG,KAAOmG,EAAGnG,IAAM,GAAIA,KAInC,GAFIqG,EAAGrG,IAAMmG,EAAGnG,IAAM,IAAIuG,IAEtBb,EAAI,EACN2I,EAAG/R,KAAK,GACR2R,GAAO,MACF,CAwBL,IAvBAS,EAAKvI,EAAGtP,OACR+X,EAAKvI,EAAGxP,OACRmJ,EAAI,EACJ0F,GAAK,GAILH,EAAIV,EAAUwI,GAAQhH,EAAG,GAAK,KAItB,IACNA,EAAK+G,EAAS/G,EAAId,EAAG8H,GACrBlH,EAAKiH,EAASjH,EAAIZ,EAAG8H,GACrBuB,EAAKvI,EAAGxP,OACR6X,EAAKvI,EAAGtP,QAGV4X,EAAKG,EAELL,GADAD,EAAMnI,EAAGzD,MAAM,EAAGkM,IACP/X,OAGJ0X,EAAOK,EAAIN,EAAIC,KAAU,GAChCM,EAAKxI,EAAG3D,QACRmM,EAAK,CAAC,GAAG1B,OAAO0B,GAChBF,EAAMtI,EAAG,GACLA,EAAG,IAAMgH,EAAO,GAAGsB,IAIvB,EAAG,CAOD,GANApJ,EAAI,GAGJwI,EAAMhI,EAAQM,EAAIiI,EAAKM,EAAIL,IAGjB,EAAG,CAqBX,GAjBAC,EAAOF,EAAI,GACPM,GAAML,IAAMC,EAAOA,EAAOnB,GAAQiB,EAAI,IAAM,KAGhD/I,EAAIV,EAAU2J,EAAOG,IAab,EAcN,IAXIpJ,GAAK8H,IAAM9H,EAAI8H,EAAO,GAI1Bc,GADAD,EAAOd,EAAS/G,EAAId,EAAG8H,IACVxW,OACb0X,EAAOD,EAAIzX,OAM+B,GAAnCkP,EAAQmI,EAAMI,EAAKH,EAAOI,IAC/BhJ,IAGAyI,EAASE,EAAMU,EAAKT,EAAQU,EAAKxI,EAAI8H,EAAOd,GAC5Cc,EAAQD,EAAKrX,OACbkX,EAAM,OAQC,GAALxI,IAGFwI,EAAMxI,EAAI,GAKZ4I,GADAD,EAAO7H,EAAG3D,SACG7L,OAUf,GAPIsX,EAAQI,IAAML,EAAO,CAAC,GAAGf,OAAOe,IAGpCF,EAASM,EAAKJ,EAAMK,EAAMlB,GAC1BkB,EAAOD,EAAIzX,QAGC,GAARkX,EAMF,KAAOhI,EAAQM,EAAIiI,EAAKM,EAAIL,GAAQ,GAClChJ,IAGAyI,EAASM,EAAKM,EAAKL,EAAOM,EAAKxI,EAAIkI,EAAMlB,GACzCkB,EAAOD,EAAIzX,MAGjB,MAAmB,IAARkX,IACTxI,IACA+I,EAAM,CAAC,IAITD,EAAGrO,KAAOuF,EAGN+I,EAAI,GACNA,EAAIC,KAAUpI,EAAGsI,IAAO,GAExBH,EAAM,CAACnI,EAAGsI,IACVF,EAAO,EAEX,QAAUE,IAAOC,GAAgB,MAAVJ,EAAI,KAAe5I,KAE1CuI,EAAiB,MAAVK,EAAI,GAGND,EAAG,IAAIA,EAAG7B,OAAO,EAAG,EAC3B,CAEA,GAAIa,GAAQrI,EAAM,CAGhB,IAAKhF,EAAI,EAAG0F,EAAI2I,EAAG,GAAI3I,GAAK,GAAIA,GAAK,GAAI1F,KAEzCyJ,EAAM2E,EAAGhC,GAAMgC,EAAE7H,EAAIvG,EAAIuG,EAAItB,EAAW,GAAK,EAAG6E,EAAImE,EAGtD,MACEG,EAAE7H,EAAIA,EACN6H,EAAEvI,GAAKoI,EAGT,OAAOG,CACT,CACF,CAhQO,GA2XP3G,EAAgB,WACd,IAAIsH,EAAa,8BACfC,EAAW,cACXC,EAAY,cACZC,EAAkB,qBAClBC,EAAmB,6BAErB,OAAO,SAAUnJ,EAAGgB,EAAKoC,EAAOlD,GAC9B,IAAImH,EACF3H,EAAI0D,EAAQpC,EAAMA,EAAIhF,QAAQmN,EAAkB,IAGlD,GAAID,EAAgB5F,KAAK5D,GACvBM,EAAEN,EAAI0J,MAAM1J,GAAK,KAAOA,EAAI,GAAK,EAAI,MAChC,CACL,IAAK0D,IAGH1D,EAAIA,EAAE1D,QAAQ+M,GAAY,SAAUzB,EAAG+B,EAAIC,GAEzC,OADAjC,EAAkC,MAA1BiC,EAAKA,EAAG1F,eAAwB,GAAW,KAAN0F,EAAY,EAAI,EACrDpJ,GAAKA,GAAKmH,EAAYC,EAAL+B,CAC3B,IAEInJ,IACFmH,EAAOnH,EAGPR,EAAIA,EAAE1D,QAAQgN,EAAU,MAAMhN,QAAQiN,EAAW,SAG/CjI,GAAOtB,GAAG,OAAO,IAAIjB,EAAUiB,EAAG2H,GAKxC,GAAI5I,EAAUiF,MACZ,MAAM7Q,MACHiM,EAAiB,SAAWoB,EAAI,SAAWA,EAAI,IAAM,YAAcc,GAIxEhB,EAAEN,EAAI,IACR,CAEAM,EAAEI,EAAIJ,EAAEO,EAAI,IACd,CACF,CA9CgB,GAyOhBmB,EAAE6H,cAAgB7H,EAAE8H,IAAM,WACxB,IAAIxJ,EAAI,IAAIvB,EAAUzP,MAEtB,OADIgR,EAAEN,EAAI,IAAGM,EAAEN,EAAI,GACZM,CACT,EAUA0B,EAAE+H,WAAa,SAAUxJ,EAAGC,GAC1B,OAAOH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,GACxC,EAgBAwB,EAAEgI,cAAgBhI,EAAE0E,GAAK,SAAUA,EAAItC,GACrC,IAAI1D,EAAGb,EAAG0D,EACRjD,EAAIhR,KAEN,GAAU,MAANoX,EAKF,OAJA3F,EAAS2F,EAAI,EAAG/G,GACN,MAANyE,EAAYA,EAAKhC,EAChBrB,EAASqD,EAAI,EAAG,GAEdL,EAAM,IAAIhF,EAAUuB,GAAIoG,EAAKpG,EAAEO,EAAI,EAAGuD,GAG/C,KAAM1D,EAAIJ,EAAEI,GAAI,OAAO,KAIvB,GAHAb,IAAM0D,EAAI7C,EAAEvP,OAAS,GAAKyO,EAAStQ,KAAKuR,EAAItB,IAAaA,EAGrDgE,EAAI7C,EAAE6C,GAAI,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAI1D,KAG3C,OAFIA,EAAI,IAAGA,EAAI,GAERA,CACT,EAuBAmC,EAAEiI,UAAYjI,EAAEH,IAAM,SAAUtB,EAAGC,GACjC,OAAOqB,EAAIvS,KAAM,IAAIyP,EAAUwB,EAAGC,GAAI2B,EAAgBC,EACxD,EAOAJ,EAAEkI,mBAAqBlI,EAAEmI,KAAO,SAAU5J,EAAGC,GAC3C,OAAOqB,EAAIvS,KAAM,IAAIyP,EAAUwB,EAAGC,GAAI,EAAG,EAC3C,EAkBAwB,EAAEoI,gBAAkBpI,EAAEwF,IAAM,SAAU3H,EAAG+H,GACvC,IAAIyC,EAAMC,EAAUhQ,EAAGsG,EAAS2J,EAAQC,EAAQC,EAAQlK,EACtDD,EAAIhR,KAKN,IAHAuQ,EAAI,IAAId,EAAUc,IAGZa,IAAMb,EAAE6K,YACZ,MAAMvX,MACHiM,EAAiB,4BAA8B6C,EAAQpC,IAS5D,GANS,MAAL+H,IAAWA,EAAI,IAAI7I,EAAU6I,IAGjC2C,EAAS1K,EAAEgB,EAAI,IAGVP,EAAEI,IAAMJ,EAAEI,EAAE,IAAgB,GAAVJ,EAAEI,EAAE,KAAYJ,EAAEO,GAAmB,GAAdP,EAAEI,EAAEvP,SAAgB0O,EAAEa,IAAMb,EAAEa,EAAE,GAK5E,OADAH,EAAI,IAAIxB,EAAUrG,KAAK8O,KAAKvF,EAAQ3B,GAAIiK,EAAS1K,EAAEG,GAAK,EAAIoB,EAAMvB,KAAOoC,EAAQpC,KAC1E+H,EAAIrH,EAAEoK,IAAI/C,GAAKrH,EAKxB,GAFAiK,EAAS3K,EAAEG,EAAI,EAEX4H,EAAG,CAGL,GAAIA,EAAElH,GAAKkH,EAAElH,EAAE,IAAMkH,EAAE5H,EAAG,OAAO,IAAIjB,EAAUqK,MAE/CkB,GAAYE,GAAUlK,EAAEoK,aAAe9C,EAAE8C,eAE3BpK,EAAIA,EAAEqK,IAAI/C,GAI1B,KAAO,IAAI/H,EAAEgB,EAAI,IAAMP,EAAEO,EAAI,GAAKP,EAAEO,GAAK,IAAa,GAAPP,EAAEO,EAE7CP,EAAEI,EAAE,GAAK,GAAK6J,GAAUjK,EAAEI,EAAE,IAAM,KAElCJ,EAAEI,EAAE,GAAK,MAAQ6J,GAAUjK,EAAEI,EAAE,IAAM,YASvC,OANAE,EAAIN,EAAEN,EAAI,GAAKoB,EAAMvB,IAAM,EAAI,EAG3BS,EAAEO,GAAK,IAAGD,EAAI,EAAIA,GAGf,IAAI7B,EAAUyL,EAAS,EAAI5J,EAAIA,GAE7B+B,IAKT/B,EAAI3B,EAAS0D,EAAgBpD,EAAW,GAC1C,CAcA,IAZIgL,GACFF,EAAO,IAAItL,EAAU,IACjByL,IAAQ3K,EAAEG,EAAI,GAClByK,EAASrJ,EAAMvB,IAGf4K,GADAnQ,EAAI5B,KAAKoR,KAAK7H,EAAQpC,KACT,EAGfU,EAAI,IAAIxB,EAAUmD,KAGR,CAER,GAAIuI,EAAQ,CAEV,KADAlK,EAAIA,EAAEqK,MAAMtK,IACLI,EAAG,MAENE,EACEL,EAAEG,EAAEvP,OAASyP,IAAGL,EAAEG,EAAEvP,OAASyP,GACxB0J,IACT/J,EAAIA,EAAEoK,IAAI/C,GAEd,CAEA,GAAItN,EAAG,CAEL,GAAU,KADVA,EAAI6E,EAAU7E,EAAI,IACL,MACbmQ,EAASnQ,EAAI,CACf,MAIE,GAFAyJ,EADAlE,EAAIA,EAAE+K,MAAMP,GACHxK,EAAEgB,EAAI,EAAG,GAEdhB,EAAEgB,EAAI,GACR4J,EAASrJ,EAAMvB,OACV,CAEL,GAAU,KADVvF,GAAK2H,EAAQpC,IACA,MACb4K,EAASnQ,EAAI,CACf,CAGFgG,EAAIA,EAAEsK,MAAMtK,GAERM,EACEN,EAAEI,GAAKJ,EAAEI,EAAEvP,OAASyP,IAAGN,EAAEI,EAAEvP,OAASyP,GAC/B0J,IACThK,EAAIA,EAAEqK,IAAI/C,GAEd,CAEA,OAAI0C,EAAiB/J,GACjBiK,IAAQjK,EAAI2B,EAAIL,IAAItB,IAEjBqH,EAAIrH,EAAEoK,IAAI/C,GAAKhH,EAAImD,EAAMxD,EAAGoC,EAAeP,EAnHxBmG,WAmH+ChI,EAC3E,EAWAyB,EAAE6I,aAAe,SAAUzG,GACzB,IAAIvE,EAAI,IAAId,EAAUzP,MAGtB,OAFU,MAAN8U,EAAYA,EAAKhC,EAChBrB,EAASqD,EAAI,EAAG,GACdL,EAAMlE,EAAGA,EAAEgB,EAAI,EAAGuD,EAC3B,EAOApC,EAAE8I,UAAY9I,EAAE+I,GAAK,SAAUxK,EAAGC,GAChC,OAA8C,IAAvCH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,GACxC,EAMAwB,EAAEgJ,SAAW,WACX,QAAS1b,KAAKoR,CAChB,EAOAsB,EAAEiJ,cAAgBjJ,EAAEkJ,GAAK,SAAU3K,EAAGC,GACpC,OAAOH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,IAAM,CAC9C,EAOAwB,EAAEmJ,uBAAyBnJ,EAAEoJ,IAAM,SAAU7K,EAAGC,GAC9C,OAAoD,KAA5CA,EAAIH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,MAAoB,IAANA,CAE3D,EAMAwB,EAAE0I,UAAY,WACZ,QAASpb,KAAKoR,GAAKd,EAAStQ,KAAKuR,EAAItB,GAAYjQ,KAAKoR,EAAEvP,OAAS,CACnE,EAOA6Q,EAAEqJ,WAAarJ,EAAEsJ,GAAK,SAAU/K,EAAGC,GACjC,OAAOH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,IAAM,CAC9C,EAOAwB,EAAEuJ,oBAAsBvJ,EAAEwJ,IAAM,SAAUjL,EAAGC,GAC3C,OAAqD,KAA7CA,EAAIH,EAAQ/Q,KAAM,IAAIyP,EAAUwB,EAAGC,MAAqB,IAANA,CAC5D,EAMAwB,EAAE0H,MAAQ,WACR,OAAQpa,KAAK0Q,CACf,EAMAgC,EAAEyJ,WAAa,WACb,OAAOnc,KAAK0Q,EAAI,CAClB,EAMAgC,EAAE0J,WAAa,WACb,OAAOpc,KAAK0Q,EAAI,CAClB,EAMAgC,EAAE2J,OAAS,WACT,QAASrc,KAAKoR,GAAkB,GAAbpR,KAAKoR,EAAE,EAC5B,EAuBAsB,EAAE4J,MAAQ,SAAUrL,EAAGC,GACrB,IAAIlG,EAAG4F,EAAG2L,EAAGC,EACXxL,EAAIhR,KACJyQ,EAAIO,EAAEN,EAMR,GAHAQ,GADAD,EAAI,IAAIxB,EAAUwB,EAAGC,IACfR,GAGDD,IAAMS,EAAG,OAAO,IAAIzB,EAAUqK,KAGnC,GAAIrJ,GAAKS,EAEP,OADAD,EAAEP,GAAKQ,EACAF,EAAE0G,KAAKzG,GAGhB,IAAIwL,EAAKzL,EAAEO,EAAItB,EACbyM,EAAKzL,EAAEM,EAAItB,EACXkB,EAAKH,EAAEI,EACPC,EAAKJ,EAAEG,EAET,IAAKqL,IAAOC,EAAI,CAGd,IAAKvL,IAAOE,EAAI,OAAOF,GAAMF,EAAEP,GAAKQ,EAAGD,GAAK,IAAIxB,EAAU4B,EAAKL,EAAI8I,KAGnE,IAAK3I,EAAG,KAAOE,EAAG,GAGhB,OAAOA,EAAG,IAAMJ,EAAEP,GAAKQ,EAAGD,GAAK,IAAIxB,EAAU0B,EAAG,GAAKH,EAGnC,GAAjB8B,GAAsB,EAAI,EAE/B,CAOA,GALA2J,EAAKnM,EAASmM,GACdC,EAAKpM,EAASoM,GACdvL,EAAKA,EAAGzD,QAGJ+C,EAAIgM,EAAKC,EAAI,CAaf,KAXIF,EAAO/L,EAAI,IACbA,GAAKA,EACL8L,EAAIpL,IAEJuL,EAAKD,EACLF,EAAIlL,GAGNkL,EAAE3O,UAGGsD,EAAIT,EAAGS,IAAKqL,EAAEjV,KAAK,IACxBiV,EAAE3O,SACJ,MAKE,IAFAgD,GAAK4L,GAAQ/L,EAAIU,EAAGtP,SAAWqP,EAAIG,EAAGxP,SAAW4O,EAAIS,EAEhDT,EAAIS,EAAI,EAAGA,EAAIN,EAAGM,IAErB,GAAIC,EAAGD,IAAMG,EAAGH,GAAI,CAClBsL,EAAOrL,EAAGD,GAAKG,EAAGH,GAClB,KACF,CAgBJ,GAXIsL,IACFD,EAAIpL,EACJA,EAAKE,EACLA,EAAKkL,EACLtL,EAAEP,GAAKO,EAAEP,IAGXQ,GAAKN,EAAIS,EAAGxP,SAAWmJ,EAAImG,EAAGtP,SAItB,EAAG,KAAOqP,IAAKC,EAAGnG,KAAO,GAIjC,IAHAkG,EAAIlB,EAAO,EAGJY,EAAIH,GAAI,CAEb,GAAIU,IAAKP,GAAKS,EAAGT,GAAI,CACnB,IAAK5F,EAAI4F,EAAG5F,IAAMmG,IAAKnG,GAAImG,EAAGnG,GAAKkG,KACjCC,EAAGnG,GACLmG,EAAGP,IAAMZ,CACX,CAEAmB,EAAGP,IAAMS,EAAGT,EACd,CAGA,KAAgB,GAATO,EAAG,GAASA,EAAGqG,OAAO,EAAG,KAAMkF,GAGtC,OAAKvL,EAAG,GAWDiE,EAAUnE,EAAGE,EAAIuL,IAPtBzL,EAAEP,EAAqB,GAAjBoC,GAAsB,EAAI,EAChC7B,EAAEG,EAAI,CAACH,EAAEM,EAAI,GACNN,EAMX,EAwBAyB,EAAEiK,OAASjK,EAAE2I,IAAM,SAAUpK,EAAGC,GAC9B,IAAIkI,EAAG1I,EACLM,EAAIhR,KAKN,OAHAiR,EAAI,IAAIxB,EAAUwB,EAAGC,IAGhBF,EAAEI,IAAMH,EAAEP,GAAKO,EAAEG,IAAMH,EAAEG,EAAE,GACvB,IAAI3B,EAAUqK,MAGX7I,EAAEG,GAAKJ,EAAEI,IAAMJ,EAAEI,EAAE,GACtB,IAAI3B,EAAUuB,IAGJ,GAAfoC,GAIF1C,EAAIO,EAAEP,EACNO,EAAEP,EAAI,EACN0I,EAAI7G,EAAIvB,EAAGC,EAAG,EAAG,GACjBA,EAAEP,EAAIA,EACN0I,EAAE1I,GAAKA,GAEP0I,EAAI7G,EAAIvB,EAAGC,EAAG,EAAGmC,IAGnBnC,EAAID,EAAEsL,MAAMlD,EAAEkC,MAAMrK,KAGbG,EAAE,IAAqB,GAAfgC,IAAkBnC,EAAEP,EAAIM,EAAEN,GAElCO,EACT,EAuBAyB,EAAEkK,aAAelK,EAAE4I,MAAQ,SAAUrK,EAAGC,GACtC,IAAIE,EAAGG,EAAGvG,EAAG4F,EAAGU,EAAGgH,EAAGuE,EAAKrE,EAAKC,EAAKqE,EAAKC,EAAKC,EAAKC,EAClD5E,EAAM6E,EACNlM,EAAIhR,KACJmR,EAAKH,EAAEI,EACPC,GAAMJ,EAAI,IAAIxB,EAAUwB,EAAGC,IAAIE,EAGjC,IAAKD,IAAOE,IAAOF,EAAG,KAAOE,EAAG,GAmB9B,OAhBKL,EAAEN,IAAMO,EAAEP,GAAKS,IAAOA,EAAG,KAAOE,GAAMA,IAAOA,EAAG,KAAOF,EAC1DF,EAAEG,EAAIH,EAAEM,EAAIN,EAAEP,EAAI,MAElBO,EAAEP,GAAKM,EAAEN,EAGJS,GAAOE,GAKVJ,EAAEG,EAAI,CAAC,GACPH,EAAEM,EAAI,GALNN,EAAEG,EAAIH,EAAEM,EAAI,MASTN,EAmBT,IAhBAM,EAAIjB,EAASU,EAAEO,EAAItB,GAAYK,EAASW,EAAEM,EAAItB,GAC9CgB,EAAEP,GAAKM,EAAEN,GACTmM,EAAM1L,EAAGtP,SACTib,EAAMzL,EAAGxP,UAIPob,EAAK9L,EACLA,EAAKE,EACLA,EAAK4L,EACLjS,EAAI6R,EACJA,EAAMC,EACNA,EAAM9R,GAIHA,EAAI6R,EAAMC,EAAKG,EAAK,GAAIjS,IAAKiS,EAAG3V,KAAK,IAK1C,IAHA+Q,EAAOrI,EACPkN,EAAW9M,EAENpF,EAAI8R,IAAO9R,GAAK,GAAI,CAKvB,IAJAoG,EAAI,EACJ2L,EAAM1L,EAAGrG,GAAKkS,EACdF,EAAM3L,EAAGrG,GAAKkS,EAAW,EAEXtM,EAAI5F,GAAbsG,EAAIuL,GAAgBjM,EAAI5F,GAK3BoG,IADAoH,EAAMuE,GAHNvE,EAAMrH,IAAKG,GAAK4L,IAEhB5E,EAAI0E,EAAMxE,GADVC,EAAMtH,EAAGG,GAAK4L,EAAW,GACHH,GACEG,EAAYA,EAAYD,EAAGrM,GAAKQ,GAC7CiH,EAAO,IAAMC,EAAI4E,EAAW,GAAKF,EAAMvE,EAClDwE,EAAGrM,KAAO4H,EAAMH,EAGlB4E,EAAGrM,GAAKQ,CACV,CAQA,OANIA,IACAG,EAEF0L,EAAGzF,OAAO,EAAG,GAGRpC,EAAUnE,EAAGgM,EAAI1L,EAC1B,EAOAmB,EAAEyK,QAAU,WACV,IAAInM,EAAI,IAAIvB,EAAUzP,MAEtB,OADAgR,EAAEN,GAAKM,EAAEN,GAAK,KACPM,CACT,EAuBA0B,EAAEgF,KAAO,SAAUzG,EAAGC,GACpB,IAAIqL,EACFvL,EAAIhR,KACJyQ,EAAIO,EAAEN,EAMR,GAHAQ,GADAD,EAAI,IAAIxB,EAAUwB,EAAGC,IACfR,GAGDD,IAAMS,EAAG,OAAO,IAAIzB,EAAUqK,KAGlC,GAAIrJ,GAAKS,EAER,OADAD,EAAEP,GAAKQ,EACAF,EAAEsL,MAAMrL,GAGjB,IAAIwL,EAAKzL,EAAEO,EAAItB,EACbyM,EAAKzL,EAAEM,EAAItB,EACXkB,EAAKH,EAAEI,EACPC,EAAKJ,EAAEG,EAET,IAAKqL,IAAOC,EAAI,CAGd,IAAKvL,IAAOE,EAAI,OAAO,IAAI5B,EAAUgB,EAAI,GAIzC,IAAKU,EAAG,KAAOE,EAAG,GAAI,OAAOA,EAAG,GAAKJ,EAAI,IAAIxB,EAAU0B,EAAG,GAAKH,EAAQ,EAAJP,EACrE,CAOA,GALAgM,EAAKnM,EAASmM,GACdC,EAAKpM,EAASoM,GACdvL,EAAKA,EAAGzD,QAGJ+C,EAAIgM,EAAKC,EAAI,CAUf,IATIjM,EAAI,GACNiM,EAAKD,EACLF,EAAIlL,IAEJZ,GAAKA,EACL8L,EAAIpL,GAGNoL,EAAE3O,UACK6C,IAAK8L,EAAEjV,KAAK,IACnBiV,EAAE3O,SACJ,CAcA,KAZA6C,EAAIU,EAAGtP,SACPqP,EAAIG,EAAGxP,QAGK,IACV0a,EAAIlL,EACJA,EAAKF,EACLA,EAAKoL,EACLrL,EAAIT,GAIDA,EAAI,EAAGS,GACVT,GAAKU,IAAKD,GAAKC,EAAGD,GAAKG,EAAGH,GAAKT,GAAKT,EAAO,EAC3CmB,EAAGD,GAAKlB,IAASmB,EAAGD,GAAK,EAAIC,EAAGD,GAAKlB,EAUvC,OAPIS,IACFU,EAAK,CAACV,GAAG0H,OAAOhH,KACduL,GAKGtH,EAAUnE,EAAGE,EAAIuL,EAC1B,EAkBAhK,EAAE0K,UAAY1K,EAAE4C,GAAK,SAAUA,EAAIR,GACjC,IAAI1D,EAAGb,EAAG0D,EACRjD,EAAIhR,KAEN,GAAU,MAANsV,GAAcA,MAASA,EAKzB,OAJA7D,EAAS6D,EAAI,EAAGjF,GACN,MAANyE,EAAYA,EAAKhC,EAChBrB,EAASqD,EAAI,EAAG,GAEdL,EAAM,IAAIhF,EAAUuB,GAAIsE,EAAIR,GAGrC,KAAM1D,EAAIJ,EAAEI,GAAI,OAAO,KAIvB,GAFAb,GADA0D,EAAI7C,EAAEvP,OAAS,GACPoO,EAAW,EAEfgE,EAAI7C,EAAE6C,GAAI,CAGZ,KAAOA,EAAI,IAAM,EAAGA,GAAK,GAAI1D,KAG7B,IAAK0D,EAAI7C,EAAE,GAAI6C,GAAK,GAAIA,GAAK,GAAI1D,KACnC,CAIA,OAFI+E,GAAMtE,EAAEO,EAAI,EAAIhB,IAAGA,EAAIS,EAAEO,EAAI,GAE1BhB,CACT,EAWAmC,EAAE2K,UAAY,SAAU/L,GAEtB,OADAG,EAASH,GAAG,iBAAmBpB,GACxBlQ,KAAKsb,MAAM,KAAOhK,EAC3B,EAcAoB,EAAE4K,WAAa5K,EAAE6K,KAAO,WACtB,IAAIjF,EAAG/H,EAAGM,EAAG2M,EAAKjB,EAChBvL,EAAIhR,KACJoR,EAAIJ,EAAEI,EACNV,EAAIM,EAAEN,EACNa,EAAIP,EAAEO,EACN6F,EAAKvE,EAAiB,EACtBkI,EAAO,IAAItL,EAAU,OAGvB,GAAU,IAANiB,IAAYU,IAAMA,EAAE,GACtB,OAAO,IAAI3B,GAAWiB,GAAKA,EAAI,KAAOU,GAAKA,EAAE,IAAM0I,IAAM1I,EAAIJ,EAAI,KA8BnE,GAtBS,IAJTN,EAAItH,KAAKmU,MAAM5K,EAAQ3B,MAITN,GAAK,OACjBH,EAAIC,EAAcY,IACXvP,OAAS0P,GAAK,GAAK,IAAGhB,GAAK,KAClCG,EAAItH,KAAKmU,MAAMhN,GACfgB,EAAIjB,GAAUiB,EAAI,GAAK,IAAMA,EAAI,GAAKA,EAAI,GAS1CV,EAAI,IAAIpB,EANNc,EADEG,GAAK,IACH,KAAOa,GAEXhB,EAAIG,EAAEqB,iBACArE,MAAM,EAAG6C,EAAEgE,QAAQ,KAAO,GAAKhD,IAKvCV,EAAI,IAAIpB,EAAUiB,EAAI,IAOpBG,EAAEO,EAAE,GAMN,KAJAV,GADAa,EAAIV,EAAEU,GACE6F,GACA,IAAG1G,EAAI,KAOb,GAHA6L,EAAI1L,EACJA,EAAIkK,EAAKO,MAAMiB,EAAE7E,KAAKnF,EAAIvB,EAAGuL,EAAGnF,EAAI,KAEhC5G,EAAc+L,EAAEnL,GAAG1D,MAAM,EAAGgD,MAAQH,EAAIC,EAAcK,EAAEO,IAAI1D,MAAM,EAAGgD,GAAI,CAW3E,GANIG,EAAEU,EAAIA,KAAKb,EAMN,SALTH,EAAIA,EAAE7C,MAAMgD,EAAI,EAAGA,EAAI,MAKH8M,GAAY,QAALjN,GAgBpB,EAICA,KAAOA,EAAE7C,MAAM,IAAqB,KAAf6C,EAAE0B,OAAO,MAGlCwC,EAAM5D,EAAGA,EAAEU,EAAIsB,EAAiB,EAAG,GACnCyF,GAAKzH,EAAEyK,MAAMzK,GAAG4K,GAAGzK,IAGrB,KACF,CAxBE,IAAKwM,IACH/I,EAAM8H,EAAGA,EAAEhL,EAAIsB,EAAiB,EAAG,GAE/B0J,EAAEjB,MAAMiB,GAAGd,GAAGzK,IAAI,CACpBH,EAAI0L,EACJ,KACF,CAGFnF,GAAM,EACN1G,GAAK,EACL8M,EAAM,CAcV,CAIJ,OAAO/I,EAAM5D,EAAGA,EAAEU,EAAIsB,EAAiB,EAAGC,EAAewF,EAC3D,EAYA5F,EAAEX,cAAgB,SAAUqF,EAAItC,GAK9B,OAJU,MAANsC,IACF3F,EAAS2F,EAAI,EAAG/G,GAChB+G,KAEKvC,EAAO7U,KAAMoX,EAAItC,EAAI,EAC9B,EAeApC,EAAE+K,QAAU,SAAUrG,EAAItC,GAKxB,OAJU,MAANsC,IACF3F,EAAS2F,EAAI,EAAG/G,GAChB+G,EAAKA,EAAKpX,KAAKuR,EAAI,GAEdsD,EAAO7U,KAAMoX,EAAItC,EAC1B,EA4BApC,EAAEgL,SAAW,SAAUtG,EAAItC,EAAID,GAC7B,IAAI7C,EACFhB,EAAIhR,KAEN,GAAc,MAAV6U,EACQ,MAANuC,GAActC,GAAmB,iBAANA,GAC7BD,EAASC,EACTA,EAAK,MACIsC,GAAmB,iBAANA,GACtBvC,EAASuC,EACTA,EAAKtC,EAAK,MAEVD,EAASvB,OAEN,GAAqB,iBAAVuB,EAChB,MAAMhR,MACHiM,EAAiB,2BAA6B+E,GAKnD,GAFA7C,EAAMhB,EAAEyM,QAAQrG,EAAItC,GAEhB9D,EAAEI,EAAG,CACP,IAAIpG,EACFgN,EAAMhG,EAAIzJ,MAAM,KAChBoV,GAAM9I,EAAOrB,UACboK,GAAM/I,EAAOpB,mBACbC,EAAiBmB,EAAOnB,gBAAkB,GAC1CmK,EAAU7F,EAAI,GACd8F,EAAe9F,EAAI,GACnB+F,EAAQ/M,EAAEN,EAAI,EACdsN,EAAYD,EAAQF,EAAQnQ,MAAM,GAAKmQ,EACvC1L,EAAM6L,EAAUnc,OASlB,GAPI+b,IACF5S,EAAI2S,EACJA,EAAKC,EACLA,EAAK5S,EACLmH,GAAOnH,GAGL2S,EAAK,GAAKxL,EAAM,EAAG,CAGrB,IAFAnH,EAAImH,EAAMwL,GAAMA,EAChBE,EAAUG,EAAU9S,OAAO,EAAGF,GACvBA,EAAImH,EAAKnH,GAAK2S,EAAIE,GAAWnK,EAAiBsK,EAAU9S,OAAOF,EAAG2S,GACrEC,EAAK,IAAGC,GAAWnK,EAAiBsK,EAAUtQ,MAAM1C,IACpD+S,IAAOF,EAAU,IAAMA,EAC7B,CAEA7L,EAAM8L,EACHD,GAAWhJ,EAAOlB,kBAAoB,MAAQiK,GAAM/I,EAAOjB,mBAC1DkK,EAAa9Q,QAAQ,IAAIE,OAAO,OAAS0Q,EAAK,OAAQ,KACvD,MAAQ/I,EAAOhB,wBAA0B,KACxCiK,GACDD,CACL,CAEA,OAAQhJ,EAAOtB,QAAU,IAAMvB,GAAO6C,EAAOf,QAAU,GACzD,EAcApB,EAAEuL,WAAa,SAAUC,GACvB,IAAI3I,EAAG4I,EAAIC,EAAIC,EAAI9M,EAAG+M,EAAK/N,EAAGgO,EAAIC,EAAIpF,EAAGvI,EAAGH,EAC1CM,EAAIhR,KACJmR,EAAKH,EAAEI,EAET,GAAU,MAAN8M,MACF3N,EAAI,IAAId,EAAUyO,IAGX9C,cAAgB7K,EAAEa,GAAa,IAARb,EAAEG,IAAYH,EAAEyL,GAAGpJ,IAC/C,MAAM/O,MACHiM,EAAiB,aACfS,EAAE6K,YAAc,iBAAmB,oBAAsBzI,EAAQpC,IAI1E,IAAKY,EAAI,OAAO,IAAI1B,EAAUuB,GAoB9B,IAlBAuE,EAAI,IAAI9F,EAAUmD,GAClB4L,EAAKL,EAAK,IAAI1O,EAAUmD,GACxBwL,EAAKG,EAAK,IAAI9O,EAAUmD,GACxBlC,EAAIF,EAAcW,GAIlBI,EAAIgE,EAAEhE,EAAIb,EAAE7O,OAASmP,EAAEO,EAAI,EAC3BgE,EAAEnE,EAAE,GAAKjB,GAAUmO,EAAM/M,EAAItB,GAAY,EAAIA,EAAWqO,EAAMA,GAC9DJ,GAAMA,GAAM3N,EAAEkK,WAAWlF,GAAK,EAAKhE,EAAI,EAAIgE,EAAIiJ,EAAMjO,EAErD+N,EAAMpL,EACNA,EAAU,IACV3C,EAAI,IAAId,EAAUiB,GAGlB6N,EAAGnN,EAAE,GAAK,EAGRgI,EAAI7G,EAAIhC,EAAGgF,EAAG,EAAG,GAEQ,IADzB8I,EAAKF,EAAGzG,KAAK0B,EAAEkC,MAAM8C,KACd3D,WAAWyD,IAClBC,EAAKC,EACLA,EAAKC,EACLG,EAAKD,EAAG7G,KAAK0B,EAAEkC,MAAM+C,EAAKG,IAC1BD,EAAKF,EACL9I,EAAIhF,EAAE+L,MAAMlD,EAAEkC,MAAM+C,EAAK9I,IACzBhF,EAAI8N,EAeN,OAZAA,EAAK9L,EAAI2L,EAAG5B,MAAM6B,GAAKC,EAAI,EAAG,GAC9BG,EAAKA,EAAG7G,KAAK2G,EAAG/C,MAAMkD,IACtBL,EAAKA,EAAGzG,KAAK2G,EAAG/C,MAAM8C,IACtBG,EAAG7N,EAAI8N,EAAG9N,EAAIM,EAAEN,EAIhBG,EAAI0B,EAAIiM,EAAIJ,EAHZ7M,GAAQ,EAGWuB,GAAewJ,MAAMtL,GAAGwJ,MAAMC,WAC7ClI,EAAIgM,EAAIJ,EAAI5M,EAAGuB,GAAewJ,MAAMtL,GAAGwJ,OAAS,EAAI,CAACgE,EAAIJ,GAAM,CAACG,EAAIJ,GAExEjL,EAAUoL,EAEHzN,CACT,EAMA6B,EAAE+L,SAAW,WACX,OAAQ9L,EAAQ3S,KAClB,EAcA0S,EAAEgM,YAAc,SAAUpJ,EAAIR,GAE5B,OADU,MAANQ,GAAY7D,EAAS6D,EAAI,EAAGjF,GACzBwE,EAAO7U,KAAMsV,EAAIR,EAAI,EAC9B,EAcApC,EAAEjO,SAAW,SAAUyM,GACrB,IAAIc,EACFzB,EAAIvQ,KACJ0Q,EAAIH,EAAEG,EACNa,EAAIhB,EAAEgB,EA0BR,OAvBU,OAANA,EACEb,GACFsB,EAAM,WACFtB,EAAI,IAAGsB,EAAM,IAAMA,IAEvBA,EAAM,OAGC,MAALd,EACFc,EAAMT,GAAKwB,GAAcxB,GAAKyB,EAC3BjB,EAAcvB,EAAcD,EAAEa,GAAIG,GAClCW,EAAa1B,EAAcD,EAAEa,GAAIG,EAAG,KACxB,KAANL,GAAY8C,EAErBhC,EAAME,EAAa1B,GADnBD,EAAIkE,EAAM,IAAIhF,EAAUc,GAAIsC,EAAiBtB,EAAI,EAAGuB,IACjB1B,GAAIb,EAAEgB,EAAG,MAE5CE,EAASP,EAAG,EAAG6C,EAASlS,OAAQ,QAChCmQ,EAAMQ,EAAYN,EAAa1B,EAAcD,EAAEa,GAAIG,EAAG,KAAM,GAAIL,EAAGR,GAAG,IAGpEA,EAAI,GAAKH,EAAEa,EAAE,KAAIY,EAAM,IAAMA,IAG5BA,CACT,EAOAU,EAAEC,QAAUD,EAAEiM,OAAS,WACrB,OAAOhM,EAAQ3S,KACjB,EAGA0S,EAAE2B,cAAe,EAEjB3B,EAAE4vB,OAAO85C,aAAe,YAGxB1pE,EAAE4vB,OAAOC,IAAI,+BAAiC7vB,EAAEC,QAE5B,MAAhBL,GAAsB7C,EAAU6G,IAAIhE,GAEjC7C,CACT,CAqIuB4C,GAEvB,sCCz1FArP,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQu8E,eAAiBv8E,EAAQw8E,oBAAiB,EAOlDx8E,EAAQw8E,eANR,SAAwB7rE,EAAGS,GACvB,MAAO,CACHpJ,IAAK2I,GAAG3I,IAAM,IAAMoJ,GAAGpJ,IAAM,GAC7By0E,IAAK9rE,GAAG8rE,IAAM,IAAMrrE,GAAGqrE,IAAM,GAErC,EAgEAz8E,EAAQu8E,eA9DR,MACIpuE,WAAAA,CAAYuuE,EAAYhC,GAA4C,IAAtClwD,EAAY1oB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAI66E,EAAQ76E,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAE0E,EAAO5E,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC9D9B,KAAKw8E,WAAaA,EAClBx8E,KAAKw6E,KAAOA,EACZx6E,KAAKsqB,aAAengB,MAAMi3B,QAAQ9W,GAAgBA,EAAe,CAACA,GAClEtqB,KAAK08E,WAAaD,GAAU30E,IAAM,EAClC9H,KAAK28E,WAAaF,GAAUF,IAAM,EAClCv8E,KAAKwG,QAAUA,CACnB,CACAo2E,eAAAA,GACI,OAAO58E,KAAKw6E,KAAKqC,KAAKC,YAC1B,CACAC,KAAAA,CAAM19D,EAAao9D,GACfz8E,KAAKsqB,aAAahjB,KAAK+X,GACvBrf,KAAK08E,YAAcD,GAAU30E,IAAM,EACnC9H,KAAK28E,YAAcF,GAAUF,IAAM,CACvC,CACAh6E,GAAAA,CAAIy6E,GACA,OAAOh9E,KAAKi9E,UAAUD,EAC1B,CACAC,SAAAA,CAAUD,GAA0C,IAAlCp8C,EAAKh/B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG5B,KAAKsqB,aAAazoB,OACxC,GAAIm7E,EAAOR,aAAex8E,KAAKw8E,WAC3B,MAAM,IAAI34E,MAAM,yCAYpB,OAXuB,MAAnB7D,KAAK08E,YAA2C,MAArBM,EAAON,aAClC18E,KAAK08E,WAAaM,EAAON,YACN,MAAnB18E,KAAK28E,YAA2C,MAArBK,EAAOL,aAClC38E,KAAK28E,WAAaK,EAAOL,YACN,MAAnB38E,KAAK08E,YAA2C,MAArBM,EAAON,aAClC18E,KAAK08E,YAAcM,EAAON,YACP,MAAnB18E,KAAK28E,YAA2C,MAArBK,EAAOL,aAClC38E,KAAK28E,YAAcK,EAAOL,YAC9B38E,KAAKsqB,aAAa9S,OAAOopB,EAAO,KAAMo8C,EAAO1yD,cACzB,MAAhBtqB,KAAKwG,UACLxG,KAAKwG,QAAUw2E,EAAOx2E,SACnBxG,IACX,CACA,QAAM6G,CAAGL,GAKL,OAJe,MAAXA,IACAA,EAAUxG,KAAKwG,SACJ,MAAXA,IACAA,QAAgBxG,KAAK48E,mBAClB,CACHj1E,KAAM,SACNd,GAAI7G,KAAKsqB,aACT4yD,QAAS,IACFl9E,KAAKw6E,KAAKqC,KAAKM,cAAcn9E,KAAK08E,WAAY18E,KAAK28E,WAAYn2E,GAClE42E,cAAep9E,KAAKw8E,WACpBa,aAAc,IACd96D,QAASviB,KAAKw6E,KAAK8C,gBACnBp3E,MAAO,KACPq3E,sBAAuB,GACvBC,cAAc,GAG1B,CACA,cAAMC,CAASC,EAAKl3E,GAChBk3E,EAAIp2E,WAAWtH,KAAK6G,GAAGL,GAC3B,CACAm3E,SAAAA,GACI,OAAO39E,KAAKsqB,aAAazoB,MAC7B,sHCpEJ,SAAY+7E,GACVA,EAAA,oBACAA,EAAA,kBACAA,EAAA,eACD,CAJD,CAAY99E,EAAA89E,iBAAA99E,EAAAA,eAAc,KAW1B,SAAY+9E,GACVA,EAAA,cACAA,EAAA,YACAA,EAAA,gBACAA,EAAA,cACAA,EAAA,YACAA,EAAA,eACD,CAPD,CAAY/9E,EAAA+9E,cAAA/9E,EAAAA,YAAW,mCCZvBkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQg+E,iCAA8B,EACtC,MAAM34E,EAAUrE,EAAQ,OAClB+gB,GAAS,EAAI1c,EAAQG,WAAW,iCAyFtCxF,EAAQg+E,4BAxFR,MACI7vE,WAAAA,CAAY8vE,EAAUC,GAClBh+E,KAAK+9E,SAAWA,EAChB/9E,KAAKg+E,WAAaA,CACtB,CACA,qBAAMC,CAAgBv6E,EAAQ8C,GAC1B,MAAM03E,QAAgBl+E,KAAK+9E,SAASI,aACpC,IAAIC,EAAY,CACZC,OAAQ,EACRC,iBAAkB,KAClBz3E,GAAI,KACJ03E,wBAAyB,MAE7B,MAAM,mBAAEC,EAAkB,oBAAEC,SAA8Bz+E,KAAK+9E,SAASW,8BACxEN,EAAUE,iBAAmBE,EACzBA,EAAmBG,iBAAmBT,EAAQU,cAC9CR,EAAUC,QAAU,GACxB,IAAIQ,EAAoBJ,EACxB,MAAMK,EAAuBD,EAAkBt1E,UAC/CsY,EAAO0F,MAAM,4CAA6C62D,EAAUE,kBACpEz8D,EAAO0F,MAAM,qCAAsCs3D,GACnD,IAAIE,EAAoBF,EAAkBG,OAC1C,MAAMC,EAAU,GACVC,EAAiB,CACnB,CAACT,EAAoBU,aAAcV,GAEjCW,EAAoB,CACtB,CAACZ,EAAmBG,kBAAmBH,GAE3C,IAAIa,EAAc,KACdC,EAAU94E,EACV+4E,EAAU/4E,EACd,MAAMg5E,EAAcnwE,WACU,IAAtB+uE,EAAUC,QACK,MAAXkB,IACAA,QAAgBv/E,KAAK+9E,SAAS0B,eAAe/7E,IACjD06E,QAAkBp+E,KAAK+9E,SAAS2B,mBAAmBh8E,EAAQi8E,EAAavB,EAAUE,iBAAkBJ,EAAQ0B,UAAWL,IAE7F,IAArBnB,EAAUC,QACA,MAAXkB,IACAA,QAAgBv/E,KAAK+9E,SAAS0B,eAAe/7E,IACjD06E,QAAkBp+E,KAAK+9E,SAAS8B,gBAAgBn8E,EAAQi8E,EAAavB,EAAUE,iBAAkBiB,KAGlF,MAAXD,IACAA,QAAgBt/E,KAAK+9E,SAAS+B,eAAep8E,EAAQ06E,EAAUC,SACnED,QAAkBp+E,KAAK+9E,SAASgC,gBAAgBr8E,EAAQi8E,EAAavB,EAAUE,iBAAkBF,EAAUC,OAAQH,EAAQ0B,UAAWN,KAEhH,IAAtBlB,EAAUC,QAAsC,IAArBD,EAAUC,SACrCgB,EAAcjB,EAAUC,QAC5BY,EAAQ33E,KAAK82E,EAAUv3E,IACvB,IAAK,IAAIm5E,KAAgB5B,EAAUG,wBAC/Ba,EAAkBY,EAAarB,kBAAoBqB,CACvD,EAEJ,IAAIC,EAAmB,KACnBN,EAAc,GAClB,KAA2B,MAApBM,GAA4BA,EAAiBp+E,OAAS,GAAG,CAC5Do+E,QAAyBjgF,KAAKg+E,WAAWkC,gBAAgBnB,EAAoB,IAC7E,IAAK,IAAI/zE,EAAIi1E,EAAiBp+E,OAAS,EAAGmJ,GAAK,EAAGA,IAAK,CACnD,MAAMknB,EAAS+tD,EAAiBj1E,GAChCk0E,EAAehtD,EAAO8sD,QAAU9sD,EAChCytD,EAAYr4E,KAAK4qB,IACQ,IAArBksD,EAAUC,OACVsB,EAAY99E,QAAU7B,KAAK+9E,SAASoC,gBACpCR,EAAY99E,QAAU7B,KAAK+9E,SAASqC,6BAC9BZ,EAAYG,GAClBA,EAAc,GAEtB,CACIM,EAAiBp+E,OAAS,IAC1Bk9E,EAAoBkB,EAAiB,GAAGjB,aAClC,EAAI75E,EAAQijB,gBAAgB,KAE1C,CAGA,OAFIu3D,EAAY99E,OAAS,SACf29E,EAAYG,GACf,CACHjC,IAAKuB,EACLoB,qBAAsBjC,EAAUE,iBAChCY,iBACAE,oBACAN,qBAAsBA,EACtBwB,kBAAmBzB,EACnBQ,cAER,+BC1FJr8E,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,+aCAtD,MAAArC,EAAAC,EAAA,OACAE,EAAAF,EAAA,OAEAy/E,EAAAz/E,EAAA,OACAC,EAAAD,EAAA,KAiBAhB,EAAAA,aAAA,SACIoB,EACAC,EACAqxB,EACAguD,EACAC,EACAC,GAG4B,IAF5B/+E,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOguD,EAA2Bx+E,IAAW,EAAApB,EAAAqB,YAAWo+E,EAAkB7+E,GAEpEU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAg+E,EAAAK,+BACIpuD,EACAmuD,EACAF,EACAC,EACA/+E,EACAK,IAIR,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,sGC/CajC,EAAAA,WAAa,CACxB+gF,SAAU,wCCIZ/gF,EAAQ,OAAkB,EAoB1BA,EAAQ,EAnBc,CACpB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,gBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,SACR,QAAW,CACT,GAAM,KACN,GAAM,KACN,EAAK,MAEP,SAAY,scCrBhB,MAAAe,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAo5C,EAAAp5C,EAAA,MAEAu5C,EAAAv5C,EAAA,OACAw5C,EAAAx5C,EAAA,OAiBAhB,EAAAA,kCAAA,SACIoB,EACAC,EACAE,EACAE,GAKsD,IAJtDu/E,EAAkBl/E,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAClBm/E,EAAuBn/E,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACvBC,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBACZ2I,EAAwB15B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAu6B,qEAE3B,MAAMH,GAAkB,EAAAkf,EAAAK,+BACpBt5C,EACAE,EACAu/E,EACA9+E,EACAs5B,GAKJ,IAAI9I,EACJ,IACIA,QAAgB,EAAA6nB,EAAA2mC,YAAW9/E,EAAYk6B,EAAiB2lD,EAAY/+E,GACtE,MAAO6gB,GAIL,KAAIA,aAAiB7D,EAAAiiE,2BAA6Bp+D,aAAiB7D,EAAAkiE,+BAuB/D,MAAMr+D,EArBN,IACI,MAAMxgB,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAA23C,EAAAU,yCACIz5C,EAAMwD,UACNy2B,EACA75B,EACAF,EACAW,EACAs5B,UAIF,EAAAz6B,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,GAAQY,GACpE,MAAO8gB,GAEL,CAIJ2P,QAAgB,EAAA6nB,EAAA2mC,YAAW9/E,EAAYk6B,EAAiB2lD,EAAY/+E,GAM5E,IAAKwwB,EAAQnxB,KAAKkf,OAAOlf,GAAO,MAAM,IAAI2d,EAAAmiE,sBAC1C,IAAK3uD,EAAQjxB,MAAMgf,OAAOhf,GAAQ,MAAM,IAAIyd,EAAAoiE,uBAE5C,OAAO5uD,CACX,iCCnFA1yB,EAAQ,OAAoB,EAkB5BA,EAAQ,EAjBgB,CACtB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,kBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,kEAEP,SAAY,kCCfhBA,EAAQ,OAAqC,EAkB7CA,EAAQ,EAjBiC,CACvC,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,kBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,8NAEP,SAAY,oCCnBhBkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQuhF,kBAAe,EACvB,MAAMj+E,EAAiBtC,EAAQ,OAC/B,MAAMugF,UAAqBj+E,EAAeI,aACtCyK,WAAAA,GACI7H,SAASxE,WACT5B,KAAKshF,WAAa,IAAIv/D,GAC1B,CAOAw/D,uBAAAA,CAAwBC,GACpB,MAAMC,EAAiBzhF,KAAKkB,WAAWwgF,eAAeF,EAAM,CACxDG,mBAAoB,OACpBZ,WAAY,YACZa,SAAS,IAQb,OANA5hF,KAAKshF,WAAWhrE,IAAIkrE,EAAMC,GAC1BA,EAAe7+D,OAAMrR,IAGjB,MAFIvR,KAAKshF,WAAW11E,IAAI41E,IAASC,GAC7BzhF,KAAKshF,WAAWl6D,OAAOo6D,GACrBjwE,CAAC,IAEJkwE,CACX,CASA,2BAAMI,CAAsBd,GACxB,IAAIS,QAAaxhF,KAAKw6E,KAAKsH,MAAMC,QAAQhB,GACzC,IAAK,IAAI/1E,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAMg3E,QAAchiF,KAAK0hF,eAAeF,GAAM5+D,OAAMrR,IAChD,GAAIA,EAAE9M,WAAWoE,WAAW,yEACxB,OAAO,KAEX,MAAM0I,CAAC,IAEX,GAAa,MAATywE,EAGA,OAFAhiF,KAAK6hB,OAAO0F,MAAM,qDAAuDi6D,EACrE,eAAiBQ,EAAMC,UAAY,WAAaj3E,GAC7C,CACHg3E,QACAR,QAGRA,GACJ,CACA,MAAM,IAAI39E,MAAM,gDACpB,CAMA69E,cAAAA,CAAeF,GACX,IAAIC,EAAiBzhF,KAAKshF,WAAW11E,IAAI41E,GAIzC,OAHsB,MAAlBC,IACAA,EAAiBzhF,KAAKuhF,wBAAwBC,IAE3CC,CACX,EAEJ3hF,EAAQuhF,aAAeA,iPCvEvB,MAAAviE,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OAuIA,SAAgBohF,EAAqC/iE,GAI5B,IAJ6B,UAClDnd,EACAod,MAAOoT,EAASnxB,EAAME,KAAUI,GAAa,KAC7CgC,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAnxB,OACAE,QACAI,gBAEJgC,KAAM7D,EAAAqiF,2BAA2B1iE,OAAO9b,GAEhD,CA5Ia7D,EAAAA,4BAA6B,EAAAgf,EAAAY,QAAmC,EACzE,EAAAZ,EAAAa,IAAG,gBACH,EAAAZ,EAAA2T,KAAI,WACJ,EAAA5T,EAAAa,IAAG,cAgBP7f,EAAAA,6BAAA,SACI0yB,EACAnxB,EACAE,EACAC,EACAC,GAE4B,IAD5BE,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAEjDze,EACAI,GAGEgC,EAAOY,EAAO0b,MAAMngB,EAAAqiF,2BAA2BjiE,MAUrD,OATApgB,EAAAqiF,2BAA2BhiE,OACvB,CACId,YAAaJ,EAAAmB,iBAAiBgiE,YAC9B5gF,OAAQkE,OAAOlE,GACfC,YAEJkC,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EA0BA7D,EAAAA,6BAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAqiF,2BAA2BjiE,KAAM,MAAM,IAAIlB,EAAAyB,iCAE3E,MACIrB,MAAM,QAAEoT,EAAO,KAAEnxB,EAAI,MAAEE,EAAK,aAAEI,GAAc,KAC5CgC,GACAu+E,EAAsC7iE,GAC1C,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBgiE,YAAa,MAAM,IAAIpjE,EAAA0B,iCACjE,IAAK8R,IAAYnxB,IAASE,EAAO,MAAM,IAAIyd,EAAA2B,iCAI3C,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAnxB,OACAE,QACAI,gBAEJgC,OAER,EAyBA7D,EAAAA,sCAAAoiF,0BCxIAniF,EAAOD,QAFoB,6ECR3BkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQuiF,wBAAqB,EAC7B,MAAMh/E,EAAavC,EAAQ,OACrBwhF,EAAmBxhF,EAAQ,OAC3BoE,EAAapE,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClByhF,EAAiB,CACnB,CAAE3wE,KAAM,OAAQjK,KAAM,eACtB,CAAEiK,KAAM,UAAWjK,KAAM,eACzB,CAAEiK,KAAM,UAAWjK,KAAM,eACzB,CAAEiK,KAAM,WAAYjK,KAAM,gBAExB66E,EAAW,CACb,CAAE5wE,KAAM,YAAajK,KAAM,SAE/B,MAAM06E,UAA2BC,EAAiBG,eAC9Cx0E,WAAAA,CAAYusE,GAAsC,IAAhCkI,EAAU9gF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,kBAC3BwE,MAAMo0E,GACNx6E,KAAKqN,OAAS,CACVuE,KAAM8wE,EACNj2B,QAAS,IACTlqC,QAASrd,EAAWy9E,YAAYC,kBAAkBpI,EAAK8C,iBACvDuF,SAAU,IAElB,CACAC,eAAAA,CAAgBn7E,EAAMo7E,EAAU90D,GAC5B,MAAO,CACH+0D,MAAO,CACHT,iBACA,CAACQ,GAAWp7E,GAEhBs7E,YAAaF,EACb11E,OAAQrN,KAAKqN,OACb4gB,UAER,CACA,sBAAMi1D,CAAiBx/E,EAAQiE,EAAMo7E,EAAU90D,GAC3C,MAAMhqB,QAAkBP,EAAO8uB,QAAQ2wD,YAAYnjF,KAAK8iF,gBAAgBn7E,EAAMo7E,EAAU90D,IACxF,OAAON,KAAKC,UAAU1oB,EAAWk+E,MAAMC,gBAAgBp/E,GAC3D,CACA,sBAAMq/E,CAAiBr/E,EAAWyC,EAASiB,EAAMo7E,EAAU90D,GACvD,OAAO,IAAI/oB,EAAWq+E,QAAQvjF,KAAKgzB,SAAUtsB,EAAS,MAAM88E,cAAcxjF,KAAK8iF,gBAAgBn7E,EAAMo7E,EAAU90D,GAAUN,KAAKwE,MAAMluB,GACxI,CAUAR,gBAAAA,CAAiBC,EAAQC,GACrB,MAAMG,EAAOT,EAAW,UAAUU,OAAOJ,GAAMK,SAC/C,OAAOhE,KAAKkjF,iBAAiBx/E,EAAQ8+E,EAAU,WAAY,CAAE,YAAat9E,EAAW+9D,MAAMC,SAAQ,EAAI/9D,EAAQgmD,OAAOrnD,KAC1H,CASAY,oBAAAA,CAAqBf,EAAMM,EAAWyC,GAClC,MAAM5C,EAAOT,EAAW,UAAUU,OAAOJ,GAAMK,SAC/C,OAAOhE,KAAKsjF,iBAAiBr/E,EAAWyC,EAAS87E,EAAU,WAAY,CAAE,YAAat9E,EAAW+9D,MAAMC,SAAQ,EAAI/9D,EAAQgmD,OAAOrnD,KACtI,EAEJhE,EAAQuiF,mBAAqBA,gCCrE7Br/E,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ2jF,oBAAiB,EACzB,MAAMt+E,EAAUrE,EAAQ,OA0CxBhB,EAAQ2jF,eAzCR,MACIx1E,WAAAA,CAAYukB,GACRxyB,KAAK0jF,WAAa,KAClB1jF,KAAKwyB,QAAUA,CACnB,CACAowB,YAAAA,GACI,OAAO5iD,KAAKwyB,QAAQ9uB,OAAOigF,WAC/B,CACAxsC,UAAAA,GACI,OAAO,EAAIhyC,EAAQgmD,OAAOnrD,KAAKwyB,QAAQ9rB,QAC3C,CACAk9E,eAAAA,GACI,OAAsC,MAA/B5jF,KAAKwyB,QAAQqxD,cACxB,CAEA,cAAMC,GACF,IACI,OAAOp+E,aAAa1F,KAAKwyB,QAAQuxD,mBAAmB/jF,KAAKm3C,cAC7D,CACA,MAAO5lC,GACH,GAAiB,MAAbA,EAAE0c,SAAmB1c,EAAE0c,QAAQ6xB,SAAS,0BACxC,OAAOp6C,OAAO,GAElB,MAAM6L,CACV,CACJ,CACA,8BAAMyyE,CAAyB99E,GAC3B,GAAIlG,KAAK0jF,WACL,OAAO,KACX,MAAMO,EAAWjkF,KAAKwyB,QACtB,OAAkC,MAA9ByxD,EAASC,oBAETh+E,IAAUA,EAAQR,aAAa1F,KAAK8jF,aACpC9jF,KAAK0jF,WAAax9E,GAASR,OAAO,GAC7B1F,KAAK0jF,YAIP,KAHQO,EAASC,mBAI5B,iCC1CJ,IAAIC,EAAWnhF,OAAO0G,OAClB06E,EAAYphF,OAAOC,eACnBohF,EAAmBrhF,OAAOsyD,yBAC1BgvB,EAAoBthF,OAAOuhF,oBAC3BC,EAAexhF,OAAOyhF,eACtBC,EAAe1hF,OAAO4H,UAAU4L,eAKhCmuE,EAAcA,CAAC5yD,EAAIvtB,EAAMogF,EAAQvvB,KACnC,GAAI7wD,GAAwB,kBAATA,GAAqC,oBAATA,EAC7C,IAAK,IAAIwF,KAAOs6E,EAAkB9/E,GAC3BkgF,EAAa5tE,KAAKib,EAAI/nB,IAAQA,IAAQ46E,GACzCR,EAAUryD,EAAI/nB,EAAK,CAAE4B,IAAKA,IAAMpH,EAAKwF,GAAM0yB,aAAc24B,EAAOgvB,EAAiB7/E,EAAMwF,KAASqrD,EAAK34B,aAE3G,OAAO3K,CAAE,EAWP8yD,EAAc,CAAC,EArBJC,EAACj5E,EAAQpD,KACtB,IAAK,IAAImJ,KAAQnJ,EACf27E,EAAUv4E,EAAQ+F,EAAM,CAAEhG,IAAKnD,EAAImJ,GAAO8qB,YAAY,GAAO,EAoBjEooD,CAASD,EAAa,CACpBE,QAASA,IAAMC,IAEjBjlF,EAAOD,QALaub,IAAQspE,EAAYP,EAAU,CAAC,EAAG,aAAc,CAAElhF,OAAO,IAASmY,GAKrE4pE,CAAaJ,GAC9B,IAAIK,EAdUC,EAAC9pE,EAAK+pE,EAAYv5E,KAAYA,EAAgB,MAAPwP,EAAc8oE,EAASK,EAAanpE,IAAQ,CAAC,EAAGspE,GAKnGS,GAAe/pE,GAAQA,EAAIk6C,WAA8E1pD,EAAjEu4E,EAAUv4E,EAAQ,UAAW,CAAE3I,MAAOmY,EAAKqhB,YAAY,IAC/FrhB,IAQU8pE,CAAQrkF,EAAQ,OAAiB,GACzCukF,EAA2BvkF,EAAQ,OAMvC,MAAMwkF,EAAiC,IAAI16D,IAAI,CAC7C,GACA,cACA,6BACA,cACA,SACA,gBACA,2BACA,kCACA,eAYF,SAAS26D,EAAUp2E,EAAMyC,GACzB,CACA,SAAS4zE,EAAiBr2E,EAAMyC,GAC9BzC,EAAKkd,QAAQjF,OAAOxV,EACtB,CACA,SAAS6zE,EAAiBt2E,EAAMyC,GAC9B,MAAMya,EAAUld,EAAKkd,QACrB,IAAK,MAAMriB,KAAOhH,OAAOoc,KAAKiN,GACxBriB,EAAI4K,gBAAkBhD,UACjBya,EAAQriB,EAGrB,CAUA,MAAM07E,EAAiC,IAAI96D,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,MAIpEvb,eAAes2E,EAAeC,EAAWz2E,EAAMwkB,GAC7C,OAAQxkB,EAAK02E,UAAY,UACvB,IAAK,QACH,MAAM,IAAI5mD,UAAU,8EAA8EtL,EAASpH,OAC7G,IAAK,SACH,OAAOoH,EACT,IAAK,SACH,MACF,QACE,MAAM,IAAIsL,UAAU,4BAA4B9vB,EAAK02E,YAEzD,MAAMC,EAAcnyD,EAAStH,QAAQzgB,IAAI,YACzC,GAAoB,OAAhBk6E,EACF,OAAOnyD,EAET,MAAMoyD,EAAapyD,EAASpH,IACtBy5D,EAAc,IAAIC,IAAIH,EAAaC,GAAYthF,WAC/CyhF,EAAgB/2E,EAAK+2E,eAAiB,EACtCC,EAAch3E,EAAKg3E,aAAe,GACxC,GAAID,GAAiBC,EACnB,MAAM,IAAIlnD,UAAU,+BAA+BknD,cAAwBJ,KAM7E,MAAMK,EAvCR,SAA8Bj3E,GAC5B,OAAoB,MAAhBA,EAAKkd,QACAk5D,EAE0B,oBAAxBp2E,EAAKkd,QAAQjF,OACfo+D,EAEFC,CACT,CA+BuBY,CAJrBl3E,EAAO,IACFA,EACH+2E,cAAeA,EAAgB,IAGjC,IA/EF,SAA6B5kF,EAAaglF,GACxC,MAAMC,EAAO,IAAIN,IAAIK,GAAUE,SACzBtlD,EAAO,IAAI+kD,IAAI3kF,GAAaklF,SAClC,OAAOD,IAASrlD,GAAQqlD,EAAKE,SAAS,IAAIvlD,IAC5C,CA2EOwlD,CAAoBX,EAAYC,GACnC,IAAK,MAAMp0E,IAAQ,CAAC,gBAAiB,mBAAoB,SAAU,WACjEw0E,EAAaj3E,EAAMyC,GAGvB,MAAM+0E,EAAsBx3E,EAAK8c,KAC3B26D,EAAkBz3E,EAAK8c,KAC7B,GAAwB,MAApB0H,EAASzF,QAA+B,MAAb/e,EAAK8c,OAAqD,oBAA7B06D,EAAoBE,MAAyD,oBAA3BD,EAAgBE,QAC5H,MAAM,IAAI7nD,UAAU,4DAWtB,OATwB,MAApBtL,EAASzF,SAAuC,MAApByF,EAASzF,QAAsC,MAApByF,EAASzF,QAAmC,SAAhB/e,EAAKgd,UAC1Fhd,EAAKgd,OAAS,MACdhd,EAAK8c,UAAO,EACZm6D,EAAaj3E,EAAM,mBAEjBwkB,EAAStH,QAAQC,IAAI,qBACvBnd,EAAKm2E,eA/ET,SAA6ByB,GAC3B,MAAMC,EAAeD,EAAax+E,MAAM,UACxC,IAAI0+E,EAAS,GACb,IAAK,MAAM9+E,KAAS6+E,EACJ,KAAV7+E,GAAgBm9E,EAAeh5D,IAAInkB,KACrC8+E,EAAS9+E,GAGb,OAAO8+E,CACT,CAsE0BC,CAAoBvzD,EAAStH,QAAQzgB,IAAI,qBAEjEw6E,EAAaj3E,EAAM,cACNy2E,EAAUI,EAAa72E,EACtC,CA2CA,SAAS61E,EAAYj3D,EAAOo5D,GAAyB,IAApBC,IAAWxlF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC1C,MAAMylF,EAAct5D,EACdu5D,EAAYH,GAAO,IAAIjC,EAAMqC,UACnCl4E,eAAem4E,EAAmBvnF,EAAOkP,GACvC,MAAMs4E,EAAet4E,GAAQ,CAAC,EAC9BA,EAAO,IAAKA,EAAM02E,SAAU,UAC5B,MAAME,EAA8B,kBAAV9lF,EAAqBA,EAAQ,SAAUA,EAAQA,EAAMynF,KAAOznF,EAAMssB,IAE5Fpd,EAlDJ,SAA6BlP,EAAOkP,EAAMw4E,GACxC,GAAe,KAAXA,EACF,OAAOx4E,EAET,MAAMy4E,EAAe3nF,EACf4nF,EAAe14E,EAAKkd,QAC1B,GAAIu7D,EAAav7D,SAAkD,oBAAhCu7D,EAAav7D,QAAQy7D,OACtDF,EAAav7D,QAAQy7D,OAAO,SAAUH,QACjC,GAAIE,GAA+C,oBAAxBA,EAAaC,OAC7CD,EAAaC,OAAO,SAAUH,QACzB,GAAIx9E,MAAMi3B,QAAQjyB,EAAKkd,SAAU,CACtC,MAAMA,EAAU,IAAIld,EAAKkd,SACnB07D,EAAoB17D,EAAQ27D,WAAW91D,GAAuC,WAA5BA,EAAO,GAAGtd,iBACvC,IAAvBmzE,EACF17D,EAAQ/kB,KAAK,CAAC,SAAUqgF,IAExBt7D,EAAQ07D,GAAqB,CAAC,SAAUJ,GAE1Cx4E,EAAO,IAAKA,EAAMkd,UACpB,MACEld,EAAO,IAAKA,EAAMkd,QAAS,IAAKld,EAAKkd,QAASs7D,WAEhD,OAAOx4E,CACT,CA2BW84E,CAAoBhoF,EAAOkP,QADbm4E,EAAUY,gBAAgBnC,IAE/C,MAAMpyD,QAAiB0zD,EAAYpnF,EAAOkP,GACpCg5E,EA5BV,SAAgCx0D,GAC9B,MAAMy0D,EAAwBz0D,EAAStH,QACvC,GAA4C,oBAAjC+7D,EAAsB9sB,OAC/B,OAAO8sB,EAAsB9sB,OAAO,cAEtC,GAAyC,oBAA9B8sB,EAAsBvP,IAAoB,CACnD,MAAMxsD,EAAU+7D,EAAsBvP,MACtC,OAAI1uE,MAAMi3B,QAAQ/U,EAAQ,eACjBA,EAAQ,cAEV,EACT,CACA,MAAMg8D,EAAe10D,EAAStH,QAAQzgB,IAAI,cAC1C,OAAqB,OAAjBy8E,GACK,EAAIhD,EAAyBiD,oBAAoBD,GAEnD,EACT,CAWoBE,CAAuB50D,GAKvC,aAJMtvB,QAAQoE,IAAI0/E,EAAQz/E,KAAI2G,eAAyBi4E,EAAUkB,UAAUC,EAAS90D,EAASpH,IAAK,CAAE66D,oBAC/Fj4E,EAAK+2E,eAAiB,GAAK,GAC9BljF,OAAOC,eAAe0wB,EAAU,aAAc,CAAEzwB,OAAO,IA1GzCgrB,EA4GAyF,EAASzF,OA3GpBw3D,EAAep5D,IAAI4B,SA8GXy3D,EAAe6B,EAAoBC,EAAc9zD,GAFrDA,EA7Gb,IAAoBzF,CAgHlB,CAGA,OAFAs5D,EAAmBkB,YAAcxD,EACjCsC,EAAmBmB,UAAYrB,EACxBE,CACT,CACAxC,EAAY0D,YAAcxD,8BCxM1BliF,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,kCCAtDF,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ8oF,oBAAsB9oF,EAAQ+oF,mBAAqB/oF,EAAQgpF,oBAAiB,EACpF,MAAM5jF,EAAapE,EAAQ,OACrBioF,EAAiBjoF,EAAQ,OACzBkoF,EAAqBloF,EAAQ,OAC7BmoF,EAAyBnoF,EAAQ,OACjCooF,EAA+BpoF,EAAQ,OACvCmE,EAASnE,EAAQ,OACjBqoF,EAAqBroF,EAAQ,OAanC,SAAS+nF,EAAmBjnE,EAASo8D,EAAY3qD,GAC7C,MAAML,EAAuC,kBAApBpR,EAAQwnE,OAC7B,IAAIlkF,EAAWmkF,YAAY,CAAEC,QAAS1nE,EAAQwnE,SAC9CxnE,EAAQwnE,OACNvM,EAAOj7D,EAAQ2nE,MAAQ,IAAIR,EAAeS,aAAax2D,EAAU,OACjEzQ,EAAUX,EAAQW,UACnB8Q,IAAYpuB,EAAO4b,eAAeK,QAAUhc,EAAWy0E,UAAU8P,gBAAgBC,QAAUxkF,EAAWy0E,UAAU8P,gBAAgBE,YAC/H5L,EAAW,IAAIiL,EAAmBY,iBAAiBrnE,EAASyQ,EAAUgrD,EAAYp8D,EAAQX,iBAAkBW,EAAQ2H,YAAaszD,GACjI77D,EAAe,IAAIioE,EAAuBY,qBAAqBtnE,EAASyQ,EAAU+qD,EAAUn8D,EAAQZ,aAAcY,EAAQ2H,YAAaszD,GAE7I,MAAO,CACHt6D,QAAS,WACTw7D,WACA/8D,eACA8oE,YALgB,IAAIZ,EAA6Ba,2BAA2B/oE,GAM5EgpE,oBAAqBb,EAAmB/nB,iBAEhD,CA7BAthE,EAAQgpF,eAAiB,CACrBmB,IAAK,CACDvjF,QAAS,qEACTjF,SAAU,GACVghB,gBAAiB,GAErBynE,KAAM,CACFxjF,QAAS,qEACTjF,SAAU,GACVghB,gBAAiB,IAqBzB3iB,EAAQ+oF,mBAAqBA,EAE7B/oF,EAAQ8oF,oBAAsB,CAC1BrmE,QAAS,WACT4nE,UAAW,KACXC,YAAavB,EACbnnE,OAAQ5hB,EAAQgpF,eAChBlnE,QAAS,kCCtCA,IAAIpQ,EAAE8wB,OAAOC,IAAI,iBAAiBhyB,EAAE+xB,OAAOC,IAAI,gBAAgBhsB,EAAE+rB,OAAOC,IAAI,kBAAkBnpB,EAAEkpB,OAAOC,IAAI,qBAAqB1xB,EAAEyxB,OAAOC,IAAI,kBAAkBhmB,EAAE+lB,OAAOC,IAAI,kBAAkBgT,EAAEjT,OAAOC,IAAI,iBAAiBtuB,EAAEquB,OAAOC,IAAI,qBAAqBZ,EAAEW,OAAOC,IAAI,kBAAkBvxB,EAAEsxB,OAAOC,IAAI,cAActxB,EAAEqxB,OAAOC,IAAI,cAAc5xB,EAAE2xB,OAAO+nD,SACzW,IAAI75C,EAAE,CAAC85C,UAAU,WAAW,OAAM,CAAE,EAAEC,mBAAmB,WAAW,EAAEC,oBAAoB,WAAW,EAAEC,gBAAgB,WAAW,GAAGh6C,EAAEztC,OAAO0nF,OAAOh6C,EAAE,CAAC,EAAE,SAASqU,EAAEt0C,EAAES,EAAEK,GAAGvR,KAAK2qF,MAAMl6E,EAAEzQ,KAAK4qF,QAAQ15E,EAAElR,KAAK6qF,KAAKn6C,EAAE1wC,KAAK8qF,QAAQv5E,GAAGi/B,CAAC,CACwI,SAASu6C,IAAI,CAAyB,SAAS9/B,EAAEx6C,EAAES,EAAEK,GAAGvR,KAAK2qF,MAAMl6E,EAAEzQ,KAAK4qF,QAAQ15E,EAAElR,KAAK6qF,KAAKn6C,EAAE1wC,KAAK8qF,QAAQv5E,GAAGi/B,CAAC,CADxPuU,EAAEn6C,UAAUogF,iBAAiB,CAAC,EACpQjmC,EAAEn6C,UAAUqgF,SAAS,SAASx6E,EAAES,GAAG,GAAG,kBAAkBT,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAM5M,MAAM,yHAAyH7D,KAAK8qF,QAAQL,gBAAgBzqF,KAAKyQ,EAAES,EAAE,WAAW,EAAE6zC,EAAEn6C,UAAUsgF,YAAY,SAASz6E,GAAGzQ,KAAK8qF,QAAQP,mBAAmBvqF,KAAKyQ,EAAE,cAAc,EAAgBs6E,EAAEngF,UAAUm6C,EAAEn6C,UAAsF,IAAIugF,EAAElgC,EAAErgD,UAAU,IAAImgF,EACrfI,EAAEl9E,YAAYg9C,EAAExa,EAAE06C,EAAEpmC,EAAEn6C,WAAWugF,EAAEC,sBAAqB,EAAG,IAAIlhC,EAAE//C,MAAMi3B,QAAQiqD,EAAEroF,OAAO4H,UAAU4L,eAAe80E,EAAE,CAACl2C,QAAQ,MAAMm2C,EAAE,CAACvhF,KAAI,EAAGwhF,KAAI,EAAGC,QAAO,EAAGC,UAAS,GACtK,SAASC,EAAEl7E,EAAES,EAAEK,GAAG,IAAIgE,EAAEnE,EAAE,CAAC,EAAEE,EAAE,KAAKkgB,EAAE,KAAK,GAAG,MAAMtgB,EAAE,IAAIqE,UAAK,IAASrE,EAAEs6E,MAAMh6D,EAAEtgB,EAAEs6E,UAAK,IAASt6E,EAAElH,MAAMsH,EAAE,GAAGJ,EAAElH,KAAKkH,EAAEm6E,EAAEv0E,KAAK5F,EAAEqE,KAAKg2E,EAAE/0E,eAAejB,KAAKnE,EAAEmE,GAAGrE,EAAEqE,IAAI,IAAIo7B,EAAE/uC,UAAUC,OAAO,EAAE,GAAG,IAAI8uC,EAAEv/B,EAAEw6E,SAASr6E,OAAO,GAAG,EAAEo/B,EAAE,CAAC,IAAI,IAAIka,EAAE1gD,MAAMwmC,GAAGr4B,EAAE,EAAEA,EAAEq4B,EAAEr4B,IAAIuyC,EAAEvyC,GAAG1W,UAAU0W,EAAE,GAAGlH,EAAEw6E,SAAS/gC,CAAC,CAAC,GAAGp6C,GAAGA,EAAEo7E,aAAa,IAAIt2E,KAAKo7B,EAAElgC,EAAEo7E,kBAAe,IAASz6E,EAAEmE,KAAKnE,EAAEmE,GAAGo7B,EAAEp7B,IAAI,MAAM,CAACu2E,SAASt6E,EAAE7J,KAAK8I,EAAEzG,IAAIsH,EAAEk6E,IAAIh6D,EAAEm5D,MAAMv5E,EAAE26E,OAAOT,EAAEl2C,QAAQ,CAChV,SAAS42C,EAAEv7E,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEq7E,WAAWt6E,CAAC,CAAoG,IAAIkB,EAAE,OAAO,SAAS2tC,EAAE5vC,EAAES,GAAG,MAAM,kBAAkBT,GAAG,OAAOA,GAAG,MAAMA,EAAEzG,IAA7K,SAAgByG,GAAG,IAAIS,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAIT,EAAEzD,QAAQ,SAAQ,SAASyD,GAAG,OAAOS,EAAET,EAAE,GAAE,CAA+Ew7E,CAAO,GAAGx7E,EAAEzG,KAAKkH,EAAEzM,SAAS,GAAG,CAC/W,SAASu7C,EAAEvvC,EAAES,EAAEK,EAAEgE,EAAEnE,GAAG,IAAIE,SAASb,EAAK,cAAca,GAAG,YAAYA,IAAEb,EAAE,MAAK,IAAI+gB,GAAE,EAAG,GAAG,OAAO/gB,EAAE+gB,GAAE,OAAQ,OAAOlgB,GAAG,IAAK,SAAS,IAAK,SAASkgB,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO/gB,EAAEq7E,UAAU,KAAKt6E,EAAE,KAAKjB,EAAEihB,GAAE,GAAI,GAAGA,EAAE,OAAWpgB,EAAEA,EAANogB,EAAE/gB,GAASA,EAAE,KAAK8E,EAAE,IAAI8qC,EAAE7uB,EAAE,GAAGjc,EAAE20C,EAAE94C,IAAIG,EAAE,GAAG,MAAMd,IAAIc,EAAEd,EAAEzD,QAAQ0F,EAAE,OAAO,KAAKstC,EAAE5uC,EAAEF,EAAEK,EAAE,IAAG,SAASd,GAAG,OAAOA,CAAC,KAAI,MAAMW,IAAI46E,EAAE56E,KAAKA,EADnW,SAAWX,EAAES,GAAG,MAAM,CAAC46E,SAASt6E,EAAE7J,KAAK8I,EAAE9I,KAAKqC,IAAIkH,EAAEs6E,IAAI/6E,EAAE+6E,IAAIb,MAAMl6E,EAAEk6E,MAAMoB,OAAOt7E,EAAEs7E,OAAO,CACyQtgD,CAAEr6B,EAAEG,IAAIH,EAAEpH,KAAKwnB,GAAGA,EAAExnB,MAAMoH,EAAEpH,IAAI,IAAI,GAAGoH,EAAEpH,KAAKgD,QAAQ0F,EAAE,OAAO,KAAKjC,IAAIS,EAAE5J,KAAK8J,IAAI,EAAyB,GAAvBogB,EAAE,EAAEjc,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAO20C,EAAEz5C,GAAG,IAAI,IAAIkgC,EAAE,EAAEA,EAAElgC,EAAE5O,OAAO8uC,IAAI,CAC/e,IAAIka,EAAEt1C,EAAE8qC,EADwe/uC,EACrfb,EAAEkgC,GAAeA,GAAGnf,GAAGwuB,EAAE1uC,EAAEJ,EAAEK,EAAEs5C,EAAEz5C,EAAE,MAAM,GAAGy5C,EAPsU,SAAWp6C,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAEE,GAAGF,EAAEE,IAAIF,EAAE,eAA0CA,EAAE,IAAI,CAO5b8/B,CAAE9/B,GAAG,oBAAoBo6C,EAAE,IAAIp6C,EAAEo6C,EAAE/zC,KAAKrG,GAAGkgC,EAAE,IAAIr/B,EAAEb,EAAEgnB,QAAQ2C,MAA6B5I,GAAGwuB,EAA1B1uC,EAAEA,EAAEpO,MAA0BgO,EAAEK,EAAtBs5C,EAAEt1C,EAAE8qC,EAAE/uC,EAAEq/B,KAAkBv/B,QAAQ,GAAG,WAAWE,EAAE,MAAMJ,EAAEW,OAAOpB,GAAG5M,MAAM,mDAAmD,oBAAoBqN,EAAE,qBAAqBlO,OAAOoc,KAAK3O,GAAGysD,KAAK,MAAM,IAAIhsD,GAAG,6EAA6E,OAAOsgB,CAAC,CACzZ,SAAS06D,EAAEz7E,EAAES,EAAEK,GAAG,GAAG,MAAMd,EAAE,OAAOA,EAAE,IAAI8E,EAAE,GAAGnE,EAAE,EAAmD,OAAjD4uC,EAAEvvC,EAAE8E,EAAE,GAAG,IAAG,SAAS9E,GAAG,OAAOS,EAAE4F,KAAKvF,EAAEd,EAAEW,IAAI,IAAUmE,CAAC,CAAC,SAAS42E,EAAE17E,GAAG,IAAI,IAAIA,EAAE27E,QAAQ,CAAC,IAAIl7E,EAAET,EAAE47E,SAAQn7E,EAAEA,KAAMlI,MAAK,SAASkI,GAAM,IAAIT,EAAE27E,UAAU,IAAI37E,EAAE27E,UAAQ37E,EAAE27E,QAAQ,EAAE37E,EAAE47E,QAAQn7E,EAAC,IAAE,SAASA,GAAM,IAAIT,EAAE27E,UAAU,IAAI37E,EAAE27E,UAAQ37E,EAAE27E,QAAQ,EAAE37E,EAAE47E,QAAQn7E,EAAC,KAAI,IAAIT,EAAE27E,UAAU37E,EAAE27E,QAAQ,EAAE37E,EAAE47E,QAAQn7E,EAAE,CAAC,GAAG,IAAIT,EAAE27E,QAAQ,OAAO37E,EAAE47E,QAAQtH,QAAQ,MAAMt0E,EAAE47E,OAAQ,CAC5Z,IAAIC,EAAE,CAACl3C,QAAQ,MAAMm3C,EAAE,CAACC,WAAW,MAAMC,EAAE,CAACC,uBAAuBJ,EAAEK,wBAAwBJ,EAAEK,kBAAkBtB,GAAG,SAASuB,IAAI,MAAMhpF,MAAM,2DAA4D,CACzM/D,EAAQgtF,SAAS,CAACpkF,IAAIwjF,EAAEn9E,QAAQ,SAAS0B,EAAES,EAAEK,GAAG26E,EAAEz7E,GAAE,WAAWS,EAAEmmE,MAAMr3E,KAAK4B,UAAU,GAAE2P,EAAE,EAAE21D,MAAM,SAASz2D,GAAG,IAAIS,EAAE,EAAuB,OAArBg7E,EAAEz7E,GAAE,WAAWS,GAAG,IAAUA,CAAC,EAAEwwB,QAAQ,SAASjxB,GAAG,OAAOy7E,EAAEz7E,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAEs8E,KAAK,SAASt8E,GAAG,IAAIu7E,EAAEv7E,GAAG,MAAM5M,MAAM,yEAAyE,OAAO4M,CAAC,GAAG3Q,EAAQktF,UAAUjoC,EAAEjlD,EAAQmtF,SAAS12E,EAAEzW,EAAQotF,SAASr8E,EAAE/Q,EAAQqtF,cAAcliC,EAAEnrD,EAAQstF,WAAWh0E,EAAEtZ,EAAQutF,SAAS1rD,EAClc7hC,EAAQwtF,mDAAmDb,EAAE3sF,EAAQytF,IAAIV,EACzE/sF,EAAQ0tF,aAAa,SAAS/8E,EAAES,EAAEK,GAAG,GAAG,OAAOd,QAAG,IAASA,EAAE,MAAM5M,MAAM,iFAAiF4M,EAAE,KAAK,IAAI8E,EAAEk7B,EAAE,CAAC,EAAEhgC,EAAEk6E,OAAOv5E,EAAEX,EAAEzG,IAAIsH,EAAEb,EAAE+6E,IAAIh6D,EAAE/gB,EAAEs7E,OAAO,GAAG,MAAM76E,EAAE,CAAoE,QAAnE,IAASA,EAAEs6E,MAAMl6E,EAAEJ,EAAEs6E,IAAIh6D,EAAE85D,EAAEl2C,cAAS,IAASlkC,EAAElH,MAAMoH,EAAE,GAAGF,EAAElH,KAAQyG,EAAE9I,MAAM8I,EAAE9I,KAAKkkF,aAAa,IAAIl7C,EAAElgC,EAAE9I,KAAKkkF,aAAa,IAAIhhC,KAAK35C,EAAEm6E,EAAEv0E,KAAK5F,EAAE25C,KAAK0gC,EAAE/0E,eAAeq0C,KAAKt1C,EAAEs1C,QAAG,IAAS35C,EAAE25C,SAAI,IAASla,EAAEA,EAAEka,GAAG35C,EAAE25C,GAAG,CAAC,IAAIA,EAAEjpD,UAAUC,OAAO,EAAE,GAAG,IAAIgpD,EAAEt1C,EAAEq2E,SAASr6E,OAAO,GAAG,EAAEs5C,EAAE,CAACla,EAAExmC,MAAM0gD,GACrf,IAAI,IAAIvyC,EAAE,EAAEA,EAAEuyC,EAAEvyC,IAAIq4B,EAAEr4B,GAAG1W,UAAU0W,EAAE,GAAG/C,EAAEq2E,SAASj7C,CAAC,CAAC,MAAM,CAACm7C,SAASt6E,EAAE7J,KAAK8I,EAAE9I,KAAKqC,IAAIoH,EAAEo6E,IAAIl6E,EAAEq5E,MAAMp1E,EAAEw2E,OAAOv6D,EAAE,EAAE1xB,EAAQ2tF,cAAc,SAASh9E,GAAqK,OAAlKA,EAAE,CAACq7E,SAASv2C,EAAEm4C,cAAcj9E,EAAEk9E,eAAel9E,EAAEm9E,aAAa,EAAEC,SAAS,KAAKC,SAAS,KAAKC,cAAc,KAAKC,YAAY,OAAQH,SAAS,CAAC/B,SAASvvE,EAAE0xE,SAASx9E,GAAUA,EAAEq9E,SAASr9E,CAAC,EAAE3Q,EAAQouF,cAAcvC,EAAE7rF,EAAQquF,cAAc,SAAS19E,GAAG,IAAIS,EAAEy6E,EAAE5lE,KAAK,KAAKtV,GAAY,OAATS,EAAEvJ,KAAK8I,EAASS,CAAC,EAAEpR,EAAQsuF,UAAU,WAAW,MAAM,CAACh5C,QAAQ,KAAK,EAC9dt1C,EAAQuuF,WAAW,SAAS59E,GAAG,MAAM,CAACq7E,SAAS73E,EAAEq6E,OAAO79E,EAAE,EAAE3Q,EAAQyuF,eAAevC,EAAElsF,EAAQ0uF,KAAK,SAAS/9E,GAAG,MAAM,CAACq7E,SAAS76E,EAAEw9E,SAAS,CAACrC,SAAS,EAAEC,QAAQ57E,GAAG+vB,MAAM2rD,EAAE,EAAErsF,EAAQ4uF,KAAK,SAASj+E,EAAES,GAAG,MAAM,CAAC46E,SAAS96E,EAAErJ,KAAK8I,EAAEM,aAAQ,IAASG,EAAE,KAAKA,EAAE,EAAEpR,EAAQ6uF,gBAAgB,SAASl+E,GAAG,IAAIS,EAAEq7E,EAAEC,WAAWD,EAAEC,WAAW,CAAC,EAAE,IAAI/7E,GAAG,CAAC,QAAQ87E,EAAEC,WAAWt7E,CAAC,CAAC,EAAEpR,EAAQ8uF,aAAa/B,EAAE/sF,EAAQ+uF,YAAY,SAASp+E,EAAES,GAAG,OAAOo7E,EAAEl3C,QAAQy5C,YAAYp+E,EAAES,EAAE,EAAEpR,EAAQgvF,WAAW,SAASr+E,GAAG,OAAO67E,EAAEl3C,QAAQ05C,WAAWr+E,EAAE,EAC3f3Q,EAAQivF,cAAc,WAAW,EAAEjvF,EAAQkvF,iBAAiB,SAASv+E,GAAG,OAAO67E,EAAEl3C,QAAQ45C,iBAAiBv+E,EAAE,EAAE3Q,EAAQmvF,UAAU,SAASx+E,EAAES,GAAG,OAAOo7E,EAAEl3C,QAAQ65C,UAAUx+E,EAAES,EAAE,EAAEpR,EAAQovF,MAAM,WAAW,OAAO5C,EAAEl3C,QAAQ85C,OAAO,EAAEpvF,EAAQqvF,oBAAoB,SAAS1+E,EAAES,EAAEK,GAAG,OAAO+6E,EAAEl3C,QAAQ+5C,oBAAoB1+E,EAAES,EAAEK,EAAE,EAAEzR,EAAQsvF,mBAAmB,SAAS3+E,EAAES,GAAG,OAAOo7E,EAAEl3C,QAAQg6C,mBAAmB3+E,EAAES,EAAE,EAAEpR,EAAQuvF,gBAAgB,SAAS5+E,EAAES,GAAG,OAAOo7E,EAAEl3C,QAAQi6C,gBAAgB5+E,EAAES,EAAE,EACzdpR,EAAQwvF,QAAQ,SAAS7+E,EAAES,GAAG,OAAOo7E,EAAEl3C,QAAQk6C,QAAQ7+E,EAAES,EAAE,EAAEpR,EAAQyvF,WAAW,SAAS9+E,EAAES,EAAEK,GAAG,OAAO+6E,EAAEl3C,QAAQm6C,WAAW9+E,EAAES,EAAEK,EAAE,EAAEzR,EAAQ0vF,OAAO,SAAS/+E,GAAG,OAAO67E,EAAEl3C,QAAQo6C,OAAO/+E,EAAE,EAAE3Q,EAAQ2vF,SAAS,SAASh/E,GAAG,OAAO67E,EAAEl3C,QAAQq6C,SAASh/E,EAAE,EAAE3Q,EAAQ4vF,qBAAqB,SAASj/E,EAAES,EAAEK,GAAG,OAAO+6E,EAAEl3C,QAAQs6C,qBAAqBj/E,EAAES,EAAEK,EAAE,EAAEzR,EAAQ6vF,cAAc,WAAW,OAAOrD,EAAEl3C,QAAQu6C,eAAe,EAAE7vF,EAAQ2sD,QAAQ,uCCxBpazpD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ8vF,uBAAoB,EAC5B,MAAM3qF,EAASnE,EAAQ,OACjB+uF,EAAwB/uF,EAAQ,OAChCyC,EAAWzC,EAAQ,OACnBuC,EAAavC,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClBuE,EAAevE,EAAQ,OACvBgvF,EAAoB,IAE1B,MAAMF,EACF3hF,WAAAA,CAAY6nD,GACR91D,KAAK+vF,IAAMj6B,CACf,CAOA,iBAAOk6B,CAAW/oF,GACd,OAAO5D,EAAW,UAAUU,OAAOR,EAASgB,OAAO4T,OAAO,CACtDlT,EAAOgqB,kBAAkBlqB,SAASW,OAAOuB,EAAK/D,OAAQ,KAAM,GAC5DK,EAASgB,OAAOC,KAAKyC,EAAKgpF,aAAc,UACxCjsF,QACR,CAQA,6BAAMksF,CAAwB1pF,GAC1B,MAAM2pF,QAAsBnwF,KAAK+vF,IAAIK,mBAC/BC,EAAoBF,EAAcnI,WAAUhG,GAASA,EAAMsO,SAAS,IAAM9pF,IAChF,OAA2B,IAAvB6pF,GAIAA,EAAoB,IAAMF,EAActuF,QACxCsuF,EAAcA,EAActuF,OAAS,GAAG0uF,WAhC1B,SA4BN,GAMJF,EAAoB,GAAKP,CACrC,CAYA,0BAAMU,CAAqB3pF,EAAI4pF,GAC3B,GAAI5pF,EAAGukB,cAAgBqlE,EACnB,OAAO,EACX,GAAyB,IAArB5pF,EAAGukB,cAAqB,CAExB,MAAMslE,QAAiB1wF,KAAK+vF,IAAI74B,YAAYrwD,EAAGmwD,MAC/C,GAAqC,MAAjC05B,EAASv5B,qBAET,OAAO,KAEX,IAAIw5B,QAA2B3wF,KAAKkwF,wBAAwBQ,EAASv5B,sBAGrE,OAF2B,IAAvBw5B,IACAA,IAAsBF,EAAwB,GAAKX,GAChDa,CACX,CACA,OAASF,EAAwB5pF,EAAGukB,eAAiB0kE,CACzD,CAOA,aAAMc,CAAQ/pF,GACV,MAAMgqF,IADcjvF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,SACiB5B,KAAK+vF,IAAIt3B,kBAAkB5xD,EAAGmwD,MAA3C,KACxB,IAKI85B,EALA1lE,EAAgB,EACpB,GAAiB,MAAbvkB,EAAGqnB,QAAkBrnB,EAAGqnB,OAAO+oC,UAAW,CAE1C7rC,QAD0BprB,KAAK+vF,IAAIgB,oBACLlqF,EAAGqnB,OAAO8iE,aAAe,CAC3D,CAEA,GAAa,MAATH,EAAe,CAEf,MAAMrrF,EAAQH,EAAa/C,YAAYsE,QAAQiqF,GAC/CC,EAAgBvtF,EAASgB,OAAOC,KAAKgB,EAAMkrB,SAAQ,GAAM,IAAQjsB,SAAS,MAC9E,CACA,MAAO,CACHm6E,YAAa/3E,EAAGqnB,QAAQ8iE,aACxB/O,UAAWp7E,EAAGqnB,QAAQ+iE,WACtB7lE,gBACA4rC,KAAMnwD,EAAGmwD,KACTk6B,MAAOrqF,EAAGsqF,OAAS,EACnBrqF,IAAKgqF,EACLjY,IAAc,MAATgY,EAAgB,KAAOA,EAAMpsF,SAAS,OAC3C2sF,KAAMvqF,EAAGI,KAAKyB,KAAI,CAAC6I,EAAGqvB,KACX,CACH19B,MAAOqO,EAAErO,MACTqN,EAAGqwB,EACHywD,aAAc,CACVvqF,IAAKyK,EAAE0+E,aACPqB,IAAK//E,EAAEggF,sBAInBC,IAAK3qF,EAAG4qF,IAAI/oF,KAAI6I,IACL,CACHylD,KAAMzlD,EAAEylD,KACR/vD,KAAMsK,EAAEtK,KACRyqF,UAAW,CACP5qF,IAAKyK,EAAEogF,UACPL,IAAK//E,EAAEqgF,eAEX/rF,SAAU0L,EAAE1L,SACZgsF,YAAatgF,EAAEpK,YAI/B,CACA2qF,YAAAA,GACI,OAAO9xF,KAAK+vF,IAAIgB,mBACpB,CACA,oBAAMgB,CAAe9P,GACjB,OAAO,IAAI4N,EAAsBmC,0BAA0BhyF,KAAK+vF,IAAIgC,eAAe9P,GACvF,CACA,oBAAMgQ,CAAeptE,EAAMo9D,GACvB,MAAMiQ,QAAclyF,KAAK+vF,IAAIoC,oBAAoBttE,GACjD,MAAO,CACHutE,aAAc7uF,EAASgB,OAAOC,KAAKqgB,EAAM,OAAOjX,UAChDuiB,IAAK+hE,EAAM/hE,IACXkiE,OAAQH,EAAMG,OAAO3pF,KAAI6I,GAAKhO,EAASgB,OAAOC,KAAK+M,EAAG,OAAO3D,YAC7DgxE,YAAasT,EAAMlB,aAE3B,CACA,oBAAMsB,CAAeztE,GACjB,MAAMhe,QAAW7G,KAAK+vF,IAAIuC,eAAeztE,GACzC,OAAU,MAANhe,EACO,WACE7G,KAAK4wF,QAAQ/pF,EAC9B,CACA,mBAAM0rF,CAActQ,GAEhB,aAD0BjiF,KAAK+vF,IAAIyC,eAAevQ,IAC/BwQ,aACvB,CACAC,YAAAA,CAAa1T,GACT,OAAOh/E,KAAK+vF,IAAI4C,aAAa3T,EACjC,CACA4T,wBAAAA,CAAyB3Q,GACrB,MAAM,IAAIp+E,MAAM,eACpB,CACA,iBAAMgvF,GACF,MAAMC,QAAkB9yF,KAAK+vF,IAAIgB,oBACjC,MAAO,CACHgC,qBAAsB,EACtBC,OAAQF,EACRzmE,QAASymE,EACTG,KAAK,EAEb,CACA,qBAAM/S,CAAgBlB,GAClB,aAAch/E,KAAK+vF,IAAImD,sBAAsBlU,IAASt2E,KAAIyqF,GAAe,IAAItD,EAAsBmC,oBAAoBmB,IAC3H,CACA,sBAAMC,CAAiB1sF,EAAS2sF,GAC5B,MACMC,SADetzF,KAAK+vF,IAAIwD,uBAAuB7sF,IAEhDgC,KAAI7B,IACE,CACHA,KACAI,KAAMJ,EAAGI,KAAK+gF,WAAU/gF,GAAQ2oF,EAAkBI,WAAW/oF,GAAMsZ,OAAO8yE,SAG7EG,QAAO5kF,GAAOA,EAAI3H,MAAQ,IAC1B41B,MAAK,CAACpsB,EAAGS,IACNT,EAAE5J,GAAGqnB,OAAO+oC,YAAc/lD,EAAErK,GAAGqnB,OAAO+oC,WAC9B,GACPxmD,EAAE5J,GAAGqnB,OAAO+oC,WAAa/lD,EAAErK,GAAGqnB,OAAO+oC,UAC/B,EACPxmD,EAAE5J,GAAGqnB,OAAO+oC,WAAa/lD,EAAErK,GAAGqnB,OAAO+oC,UAC9BxmD,EAAE5J,GAAGqnB,OAAO8iE,aAAe9/E,EAAErK,GAAGqnB,OAAO8iE,aAC3C,IAEX,OAA2B,IAAvBsC,EAAYzxF,OACL,KACJ,CACHgF,SAAU7G,KAAK4wF,QAAQ0C,EAAY,GAAGzsF,IAAI,GAC1CI,KAAMqsF,EAAY,GAAGrsF,KAE7B,CAWA,uBAAMwsF,CAAkB/sF,EAAS2sF,EAAS5C,EAAuBiD,EAAgBtrF,EAAaurF,GAG1F,IAFmB,MAAfvrF,GACAA,EAAYylB,iBACM,MAAfzlB,IAAwBA,EAAYyhB,SAAS,OAC1C,EAAI1kB,EAAQijB,gBAAyC,KAAxBurE,GAAmB,GAAWvrF,GACjE,MAAMumB,QAAe3uB,KAAKozF,iBAAiB1sF,EAAS2sF,GACpD,GAAc,MAAV1kE,EAAgB,CAChB+kE,EAAe,KAAM,KAAM,KAAM,MACjC,QACJ,CACA,MAAM/C,QAA0B3wF,KAAKwwF,qBAAqB7hE,EAAO9nB,GAAI4pF,GACrE,GAAyB,MAArBE,IAEkB,MAAlB+C,GACAA,EAAe/kE,EAAO9nB,GAAGukB,cAAeuD,EAAO9nB,GAAGmwD,KAAMroC,EAAO1nB,KAAM0pF,GAC/C,IAAtBA,GACA,OAAOhiE,CACf,CACAvmB,EAAYylB,gBAChB,CACA,wBAAM+lE,CAAmB9zE,GACrB,MAAM+zE,QAAiB7zF,KAAK+vF,IAAI+D,cAAch0E,GAC9C,MAAO,CACHnb,UAAWkvF,EAASE,WACpBC,SAAUtuF,OAAOmuF,EAASG,UAC1BC,YAAaJ,EAASK,qBAE9B,CACAC,kBAAAA,CAAmBtD,GACf,OAAO7wF,KAAK+vF,IAAIz5B,gBAAgBu6B,EACpC,CACAuD,cAAAA,CAAevD,GACX,MAAM,IAAIhtF,MAAM,cACpB,EAEJ/D,EAAQ8vF,kBAAoBA,8BC1O5B9vF,EAAQ,OAAY,EAUpBA,EAAQ,EATQ,CACd,QAAW,eACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,uqBCXX,MAAAgf,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OA+EA,SAAgBuzF,EACZ3tF,EACA2e,GAC4B,IAA5BrjB,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtN,EAAM,MAAM,IAAIrG,EAAAiiE,0BACrB,IAAK57D,EAAK9jB,MAAMgf,OAAOve,GAAY,MAAM,IAAIgd,EAAAkiE,8BAC7C,GAAI77D,EAAK1hB,KAAK9B,QAAU/B,EAAAw0F,cAAe,MAAM,IAAIt1E,EAAAu1E,6BAEjD,MAAMC,EAAW10F,EAAA20F,eAAeh1E,OAAO4F,EAAK1hB,MAE5C,OAAAX,OAAA0nF,OAAA,CAAShkF,WAAY8tF,EACzB,CA7Da10F,EAAAA,gBAAiB,EAAAgf,EAAAY,QAAoB,EAC9C,EAAAZ,EAAAa,IAAG,MACH,EAAAb,EAAAa,IAAG,MACH,EAAAZ,EAAA8yC,MAAK,kBACL,EAAA9yC,EAAApa,WAAU,YACV,EAAAoa,EAAApa,WAAU,YACV,EAAAoa,EAAApa,WAAU,YACV,EAAAoa,EAAApa,WAAU,YACV,EAAAoa,EAAApa,WAAU,YACV,EAAAoa,EAAApa,WAAU,YACV,EAAAoa,EAAApa,WAAU,YACV,EAAAoa,EAAApa,WAAU,YACV,EAAAoa,EAAApa,WAAU,YACV,EAAAoa,EAAApa,WAAU,aACV,EAAAoa,EAAApa,WAAU,cAID7E,EAAAA,cAAgBA,EAAA20F,eAAev0E,KAY5CpgB,EAAAA,YAAA,SACIoB,EACAwF,EACAq6E,GAC4B,IAA5B/+E,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAMtN,QAAankB,EAAWwzF,eAAehuF,EAASq6E,GACtD,OAAOsT,EAAe3tF,EAAS2e,EAAMrjB,EACzC,KAWAlC,EAAAA,eAAAu0F,EAqBAv0F,EAAAA,uCAAA,SACIoB,EACA6/E,4CAEA,aAAa7/E,EAAWyzF,kCAAkC70F,EAAAw0F,cAAevT,EAC7E,wSC7GA,MAAAjiE,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAke,EAAAle,EAAA,OAMAme,EAAAne,EAAA,OAkGA,SAAgB8zF,EAAkDz1E,GAIzC,IAJ0C,UAC/Dnd,EACAod,MAAOoT,GAAQ,KACf7uB,GACqBwb,EACrB,MAAM,YAAEE,GAAgBvf,EAAA+0F,wCAAwCp1E,OAAO9b,GAEvE,MAAO,CACH3B,YACAod,KAAM,CACFoT,QAASA,GAEb7uB,KAAM,CACF0b,eAGZ,CA1Gavf,EAAAA,yCAA0C,EAAAgf,EAAAY,QAAgD,EACnG,EAAAZ,EAAAa,IAAG,iBAWP7f,EAAAA,0CAAA,SACI0yB,EACAxwB,GAEA,MAAMod,EAAO,CAAC,CAAEU,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,IAExDrc,EAAOY,EAAO0b,MAAMngB,EAAA+0F,wCAAwC30E,MAQlE,OAPApgB,EAAA+0F,wCAAwC10E,OACpC,CACId,YAAaJ,EAAAmB,iBAAiB00E,0BAElCnxF,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAqBA7D,EAAAA,0CAAA,SACIuf,EACArd,GAEA,IAAKqd,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAA+0F,wCAAwC30E,KACpE,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,QAAEoT,GAAS,KACjB7uB,GACAixF,EAAmDv1E,GACvD,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiB00E,yBAA0B,MAAM,IAAI91E,EAAA0B,iCAC9E,IAAK8R,EAAS,MAAM,IAAIxT,EAAA2B,iCAExB,MAAO,CACH3e,YACAod,KAAM,CACFoT,WAEJ7uB,OAER,EAoBA7D,EAAAA,mDAAA80F,8DClGO,MAAMG,EAA+B,iFCR5C,IAAI3/B,EAAmBp1D,MAAQA,KAAKo1D,kBAAqBpyD,OAAO0G,OAAU,SAASw8B,EAAG5tB,EAAGhH,EAAGk5C,QAC7E1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B,IAAI+jD,EAAOryD,OAAOsyD,yBAAyBh9C,EAAGhH,GACzC+jD,KAAS,QAASA,GAAQ/8C,EAAEi9C,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAE34B,YAAY,EAAM9wB,IAAK,WAAa,OAAO0M,EAAEhH,EAAI,IAE5DtO,OAAOC,eAAeijC,EAAGskB,EAAI6K,EACjC,EAAM,SAASnvB,EAAG5tB,EAAGhH,EAAGk5C,QACT1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B40B,EAAEskB,GAAMlyC,EAAEhH,EACd,GACI9B,EAAgBxP,MAAQA,KAAKwP,cAAiB,SAAS8I,EAAGxY,GAC1D,IAAK,IAAIyW,KAAK+B,EAAa,YAAN/B,GAAoBvT,OAAO4H,UAAU4L,eAAeM,KAAKhX,EAASyW,IAAI6+C,EAAgBt1D,EAASwY,EAAG/B,EAC3H,EACAvT,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDsM,EAAa1O,EAAQ,OAA2DhB,GAChF0P,EAAa1O,EAAQ,OAA6BhB,GAClD0P,EAAa1O,EAAQ,OAAoChB,GACzD0P,EAAa1O,EAAQ,OAAsChB,GAC3D0P,EAAa1O,EAAQ,OAAoChB,GACzD0P,EAAa1O,EAAQ,OAA8BhB,GACnD0P,EAAa1O,EAAQ,OAAgChB,GACrD0P,EAAa1O,EAAQ,MAAsChB,GAC3D0P,EAAa1O,EAAQ,MAAsBhB,GAC3C0P,EAAa1O,EAAQ,OAA+BhB,GACpD0P,EAAa1O,EAAQ,OAA8BhB,GACnD0P,EAAa1O,EAAQ,OAA0BhB,GAC/C0P,EAAa1O,EAAQ,OAAuBhB,GAC5C0P,EAAa1O,EAAQ,OAAkChB,GACvD0P,EAAa1O,EAAQ,OAA2ChB,GAChE0P,EAAa1O,EAAQ,OAAuChB,GAC5D0P,EAAa1O,EAAQ,OAAqChB,GAC1D0P,EAAa1O,EAAQ,OAAiChB,GACtD0P,EAAa1O,EAAQ,KAAsDhB,GAC3E0P,EAAa1O,EAAQ,OAAkDhB,GACvE0P,EAAa1O,EAAQ,OAA4ChB,GACjE0P,EAAa1O,EAAQ,OAA8ChB,GACnE0P,EAAa1O,EAAQ,OAAgDhB,GACrE0P,EAAa1O,EAAQ,OAAwChB,GAC7D0P,EAAa1O,EAAQ,OAAgChB,GACrD0P,EAAa1O,EAAQ,OAA6BhB,GAClD0P,EAAa1O,EAAQ,OAAgChB,GACrD0P,EAAa1O,EAAQ,OAAmBhB,GACxC0P,EAAa1O,EAAQ,OAAkBhB,GACvC0P,EAAa1O,EAAQ,MAAyBhB,GAC9C0P,EAAa1O,EAAQ,OAAoBhB,GACzC0P,EAAa1O,EAAQ,OAAqBhB,GAC1C0P,EAAa1O,EAAQ,OAA0BhB,GAC/C0P,EAAa1O,EAAQ,MAA6BhB,GAClD0P,EAAa1O,EAAQ,OAAgChB,GACrD0P,EAAa1O,EAAQ,MAAiChB,GACtD0P,EAAa1O,EAAQ,OAAoChB,GACzD0P,EAAa1O,EAAQ,OAAoChB,GACzD0P,EAAa1O,EAAQ,OAAuChB,GAC5D0P,EAAa1O,EAAQ,MAAiChB,GACtD0P,EAAa1O,EAAQ,OAAoChB,GACzD0P,EAAa1O,EAAQ,OAAqChB,GAC1D0P,EAAa1O,EAAQ,OAAwChB,GAC7D0P,EAAa1O,EAAQ,OAAwChB,GAC7D0P,EAAa1O,EAAQ,OAA2ChB,GAChE0P,EAAa1O,EAAQ,OAAuChB,GAC5D0P,EAAa1O,EAAQ,OAA0ChB,GAC/D0P,EAAa1O,EAAQ,OAAkBhB,GACvC0P,EAAa1O,EAAQ,OAA8BhB,GACnD0P,EAAa1O,EAAQ,OAA8ChB,2BCvCnE,MAeM8uE,EAAW,IAAIt3D,YAfHu3D,MAChB,IAAIz9D,EAAG09D,EAAQ,GAEf,IAAK,IAAIv+D,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5Ba,EAAIb,EACJ,IAAK,IAAIe,EAAI,EAAGA,EAAI,EAAGA,IACrBF,EAAU,EAAJA,EAAU,WAAcA,IAAM,EAAOA,IAAM,EAEnD09D,EAAMv+D,GAAKa,CACb,CAEA,OAAO09D,CAAK,EAImBD,IAiBjC9uE,EAAOD,QAdOw0B,CAAC06C,EAAK3H,EAAKl1D,EAAKge,KAC5B,MAAM5T,EAAIqyD,EACJphD,EAAM2C,EAAMhe,EAElB68D,IAAQ,EAER,IAAK,IAAIhkE,EAAImlB,EAAKnlB,EAAIwiB,EAAKxiB,IACzBgkE,EAAOA,IAAQ,EAAKzyD,EAAmB,KAAhByyD,EAAM3H,EAAIr8D,KAGnC,OAAQgkE,CAAU,aCtDpBjvE,EAAOD,QAAU,m0YCAjB,MAAAgf,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OACAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OACAie,EAAAje,EAAA,OACAk0F,EAAAl0F,EAAA,OACAG,EAAAH,EAAA,OACAw5C,EAAAx5C,EAAA,OACAm0F,EAAAn0F,EAAA,OAEA,IAAYo0F,EA0GZ,SAASC,EAAsBC,EAA0BC,GACrD,MAAMC,EAAyBD,EAC1B7B,QAAQxiF,GAAMA,EAAE8O,SAAWs1E,EAAYt1E,SACvC7W,QAA+D,CAAC8hB,EAAK/Z,IAC7D+Z,EACE,CAAEhL,SAAUgL,EAAIhL,UAAY/O,EAAE+O,SAAUC,WAAY+K,EAAI/K,YAAchP,EAAEgP,YAD9D,CAAED,SAAU/O,EAAE+O,SAAUC,WAAYhP,EAAEgP,kBAExDle,GACP,GAAIwzF,EAAwB,CACxB,MAAM,SAAEv1E,EAAQ,WAAEC,GAAes1E,EAC5Bv1E,GAAYA,IAAaq1E,EAAYr1E,WACtCq1E,EAAYr1E,UAAW,GAEtBC,GAAcA,IAAeo1E,EAAYp1E,aAC1Co1E,EAAYp1E,YAAa,GAGjC,OAAOo1E,CACX,CAYA,SAAsBG,EAClBr0F,EACAme,EACAhe,EACA0/E,GAC4B,IAA5B/+E,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,KAAK,EAAA3xB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAGd,MAAM21E,QAAiB,EAAAl7C,EAAAm7C,SAAQv0F,EAAYG,EAAM0/E,EAAY/+E,GACvD0zF,GAAe,EAAAT,EAAAU,iBAAgBH,GACrC,GAAoB,MAAhBE,EACA,OAAOr2E,EAGX,MAAMu2E,GAAuB,EAAAX,EAAAY,4BAA2Bx0F,EAAMq0F,EAAa1zF,WACrE8zF,QAA0B50F,EAAWwzF,eAAekB,EAAsB7U,GAChF,GAAyB,MAArB+U,EACA,OAAOz2E,EAGX,MAAM02E,GAAoB,EAAAd,EAAAe,sBAAqBF,GAEzCT,EAAeh2E,EAAYD,KAEjC,IAAK,MAAM62E,KAAoBF,EAAmB,CAC9C,MAOMX,EAAcD,QAPe,EAAAF,EAAAiB,yBAC/Bh1F,EACA+0F,EACAZ,EACAh2E,EAAY1b,KACZ+xF,EAAa1zF,WAE+CqzF,GAChEA,EAAa/tF,KAAK8tF,GAKtB,OAHAC,EAAa/tF,KAAK,CAAEwY,OAAQ41E,EAAa1zF,UAAW+d,UAAU,EAAOC,YAAY,IACjFq1E,EAAa/tF,KAAK,CAAEwY,OAAQ81E,EAAsB71E,UAAU,EAAOC,YAAY,IAExE,IAAInf,EAAAyf,uBAAuB,CAAElB,KAAMi2E,EAAcrzF,YAAW2B,KAAM0b,EAAY1b,MACzF,KAjLA,SAAYuxF,GACRA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,kBACH,CAHD,CAAYA,IAAuBp1F,EAAAA,wBAAvBo1F,EAAuB,KActBp1F,EAAAA,uCAAwC,EAAAgf,EAAAY,QAA8C,EAC/F,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,4BACH,EAAAZ,EAAApa,WAAU,cACV,EAAAoa,EAAApa,WAAU,2BAad7E,EAAAA,wCAAA,SACIuB,EACAqB,EACAyzF,EACAn0F,GAEA,KAAK,EAAAhB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMT,EAAO,CAAC,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAErDrc,EAAOY,EAAO0b,MAAMngB,EAAAs2F,sCAAsCl2E,MAWhE,OAVApgB,EAAAs2F,sCAAsCj2E,OAClC,CACId,YAAaJ,EAAAmB,iBAAiBi2E,sBAC9BC,wBAAyBpB,EAAwBp5C,WACjDp5C,YACAyzF,yBAEJxyF,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAUa7D,EAAAA,mCAAoC,EAAAgf,EAAAY,QAA0C,EACvF,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,4BACH,EAAAZ,EAAApa,WAAU,2BAcd7E,EAAAA,oCAAA,SACIuB,EACAqB,EACAyzF,GAEiC,IADjCx0F,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,KAAK,EAAAjB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAGd,MAAMT,GAAO,EAAAre,EAAA6xB,YAAW,CAAC,CAAE9S,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAAStd,EAAWf,GACpFgC,EAAOY,EAAO0b,MAAMngB,EAAAy2F,kCAAkCr2E,MAU5D,OATApgB,EAAAy2F,kCAAkCp2E,OAC9B,CACId,YAAaJ,EAAAmB,iBAAiBi2E,sBAC9BC,wBAAyBpB,EAAwBsB,OACjDL,yBAEJxyF,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EA+BA7D,EAAAA,8BAAAy1F,EA4DAz1F,EAAAA,iDAAA,SACIoB,EACAE,EACAC,EACAC,EACAoB,EACAlB,EACAC,GAG4B,IAF5BE,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCm/E,EAAuBn/E,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACvBE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAM8jE,GAAiB,EAAAzB,EAAA0B,kCACnBt1F,EACAC,EACAC,EACAoB,EACAlB,EACAC,EACAE,EACAK,GAWJ,aARkCuzF,EAC9Br0F,EACAu1F,EACAp1F,EACA0/E,EACA/+E,EAIR,KAmBAlC,EAAAA,uDAAA,SACIoB,EACAE,EACAC,EACAC,EACAoB,EACAlB,EACAC,EACAC,GAG4B,IAF5BC,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCm/E,EAAuBn/E,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACvBE,EAASJ,UAAAC,OAAA,SAAAC,IAAAF,UAAA,IAAAA,UAAA,IAAGZ,EAAA2xB,0DAEZ,MAAM8jE,GAAiB,EAAAx1F,EAAAuB,yCACnBpB,EACAC,EACAC,EACAoB,EACAlB,EACAC,EACAC,EACAC,EACAK,GAWJ,aARkCuzF,EAC9Br0F,EACAu1F,EACAp1F,EACA0/E,EACA/+E,EAIR,kDCjSI20F,EAAY,MAIZC,EAAa,WAMjB,IAAIryF,EAASzD,EAAAA,OAAAA,OACT2V,EAASogF,EAAAA,EAAOpgF,QAAUogF,EAAAA,EAAOC,SAEjCrgF,GAAUA,EAAOC,gBACnB3W,EAAOD,QAKT,SAAsBoqB,EAAMkK,GAE1B,GAAIlK,EAAO0sE,EAAY,MAAM,IAAIG,WAAW,mCAE5C,IAAI54C,EAAQ55C,EAAOi/B,YAAYtZ,GAE/B,GAAIA,EAAO,EACT,GAAIA,EAAOysE,EAET,IAAK,IAAIK,EAAY,EAAGA,EAAY9sE,EAAM8sE,GAAaL,EAGrDlgF,EAAOC,gBAAgBynC,EAAMzwC,MAAMspF,EAAWA,EAAYL,SAG5DlgF,EAAOC,gBAAgBynC,GAI3B,GAAkB,oBAAP/pB,EACT,OAAOvD,EAAQomE,UAAS,WACtB7iE,EAAG,KAAM+pB,EACX,IAGF,OAAOA,CACT,EA7BEp+C,EAAOD,QAVT,WACE,MAAM,IAAI+D,MAAM,iHAClB,gCCVAb,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQu8B,MAAQv8B,EAAQ+/D,QAAU//D,EAAQ+E,OAAS/E,EAAQo3F,SAAWp3F,EAAQoE,KAAOpE,EAAQijD,gBAAkBjjD,EAAQ6/C,iBAAmB7/C,EAAQ8iD,aAAe9iD,EAAQm/C,UAAYn/C,EAAQy9C,MAAQz9C,EAAQs8C,WAAQ,EACrN,MAAM+6C,EAAar2F,EAAQ,OACrB+gD,EAAMn8C,OAAO,GACb64C,EAAM74C,OAAO,GACbugD,EAAMvgD,OAAO,GACbwgD,EAAMxgD,OAAO,GACb0xF,EAAM1xF,OAAO,GACb02C,EAAQp5C,OAAO8J,OAAO,CACxB2D,EAAGoxC,EACH3wC,EAAGxL,OAAO,GACVgN,EAAGhN,OAAO,sEACV6K,EAAG7K,OAAO,sEACV8rB,EAAG+sB,EACH2I,GAAIxhD,OAAO,iFACXuhD,GAAIvhD,OAAO,iFACXghD,KAAMhhD,OAAO,wEAEjB5F,EAAQs8C,MAAQA,EAChB,MAAMi7C,EAAaA,CAAC5mF,EAAGS,KAAOT,EAAIS,EAAI+0C,GAAO/0C,EACvCu1C,EAAO,CACTC,KAAMhhD,OAAO,sEACbihD,WAAAA,CAAYr1C,GACR,MAAM,EAAEf,GAAM6rC,EACR9V,EAAK5gC,OAAO,sCACZ0iC,GAAMmW,EAAM74C,OAAO,sCACnB+gC,EAAK/gC,OAAO,uCACZ6iC,EAAKjC,EACLgxD,EAAY5xF,OAAO,uCACnB2lD,EAAKgsC,EAAW9uD,EAAKj3B,EAAGf,GACxBi7C,EAAK6rC,GAAYjvD,EAAK92B,EAAGf,GAC/B,IAAI+5C,EAAKjvC,EAAI/J,EAAI+5C,EAAK/kB,EAAKklB,EAAK/kB,EAAIl2B,GAChCi6C,EAAKnvC,GAAKgwC,EAAKjjB,EAAKojB,EAAKjjB,EAAIh4B,GACjC,MAAM85C,EAAQC,EAAKgtC,EACb/sC,EAAQC,EAAK8sC,EAKnB,GAJIjtC,IACAC,EAAK/5C,EAAI+5C,GACTC,IACAC,EAAKj6C,EAAIi6C,GACTF,EAAKgtC,GAAa9sC,EAAK8sC,EACvB,MAAM,IAAIzzF,MAAM,2CAA6CyN,GAEjE,MAAO,CAAE+4C,QAAOC,KAAIC,QAAOC,KAC/B,GAEE+sC,EAAW,GACXC,EAAW,GAIjB,SAAS5tF,EAAYoH,GACjB,MAAM,EAAEP,EAAC,EAAES,GAAMkrC,EACXhL,EAAK/1B,EAAIrK,EAAIA,GACbg2C,EAAK3rC,EAAI+1B,EAAKpgC,GACpB,OAAOqK,EAAI2rC,EAAKv2C,EAAIO,EAAIE,EAC5B,CACA,MAAMumF,EAAmBr7C,EAAM3rC,IAAMoxC,EACrC,MAAM61C,UAAiB7zF,MACnBoK,WAAAA,CAAYggB,GACR7nB,MAAM6nB,EACV,EAEJ,SAAS0pE,EAAetwC,GACpB,KAAMA,aAAiBuwC,GACnB,MAAM,IAAI34D,UAAU,yBAC5B,CACA,MAAM24D,EACF3pF,WAAAA,CAAY+C,EAAGC,EAAGN,GACd3Q,KAAKgR,EAAIA,EACThR,KAAKiR,EAAIA,EACTjR,KAAK2Q,EAAIA,CACb,CACA,iBAAOs3C,CAAW1xC,GACd,KAAMA,aAAagnC,GACf,MAAM,IAAIte,UAAU,4CAExB,OAAI1oB,EAAEgK,OAAOg9B,EAAMiH,MACRozC,EAAcpzC,KAClB,IAAIozC,EAAcrhF,EAAEvF,EAAGuF,EAAEtF,EAAGstC,EACvC,CACA,oBAAOs5C,CAAc1vC,GACjB,MAAMC,EAokBd,SAAqB0vC,GAAmB,IAAbvhF,EAAC3U,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGw6C,EAAM1pC,EACjC,MAAMqlF,EAAU,IAAI5tF,MAAM2tF,EAAKj2F,QAOzBm2F,EAAWpvF,EANMkvF,EAAK7uF,QAAO,CAAC8hB,EAAKoW,EAAKn2B,IACtCm2B,IAAQ0gB,EACD92B,GACXgtE,EAAQ/sF,GAAK+f,EACN1P,EAAI0P,EAAMoW,EAAK5qB,KACvBgoC,GACqChoC,GAOxC,OANAuhF,EAAKG,aAAY,CAACltE,EAAKoW,EAAKn2B,IACpBm2B,IAAQ0gB,EACD92B,GACXgtE,EAAQ/sF,GAAKqQ,EAAI0P,EAAMgtE,EAAQ/sF,GAAIuL,GAC5B8E,EAAI0P,EAAMoW,EAAK5qB,KACvByhF,GACID,CACX,CAplBsB1vC,CAAYF,EAAOz/C,KAAK6N,GAAMA,EAAE5F,KAC9C,OAAOw3C,EAAOz/C,KAAI,CAAC6N,EAAGvL,IAAMuL,EAAEunC,SAASsK,EAAMp9C,KACjD,CACA,iBAAOk9C,CAAWC,GACd,OAAOyvC,EAAcC,cAAc1vC,GAAQz/C,IAAIkvF,EAAc3vC,WACjE,CACA1nC,MAAAA,CAAO8mC,GACHswC,EAAetwC,GACf,MAAQr2C,EAAG23C,EAAI13C,EAAG23C,EAAIj4C,EAAGk4C,GAAO7oD,MACxBgR,EAAG83C,EAAI73C,EAAG83C,EAAIp4C,EAAGq4C,GAAO3B,EAC1B6wC,EAAO78E,EAAIwtC,EAAKA,GAChBsvC,EAAO98E,EAAI2tC,EAAKA,GAChBC,EAAK5tC,EAAIstC,EAAKwvC,GACdjvC,EAAK7tC,EAAIytC,EAAKovC,GACdE,EAAK/8E,EAAIA,EAAIutC,EAAKI,GAAMmvC,GACxBE,EAAKh9E,EAAIA,EAAI0tC,EAAKF,GAAMqvC,GAC9B,OAAOjvC,IAAOC,GAAMkvC,IAAOC,CAC/B,CACAlvC,MAAAA,GACI,OAAO,IAAIyuC,EAAc53F,KAAKgR,EAAGqK,GAAKrb,KAAKiR,GAAIjR,KAAK2Q,EACxD,CACAy4C,MAAAA,GACI,MAAQp4C,EAAG23C,EAAI13C,EAAG23C,EAAIj4C,EAAGk4C,GAAO7oD,KAC1BuwC,EAAIl1B,EAAIstC,EAAKA,GACbnY,EAAIn1B,EAAIutC,EAAKA,GACbnY,EAAIp1B,EAAIm1B,EAAIA,GACZ8nD,EAAM3vC,EAAKnY,EACXE,EAAIr1B,EAAI4qC,GAAO5qC,EAAIi9E,EAAMA,GAAO/nD,EAAIE,IACpCsU,EAAI1pC,EAAI6qC,EAAM3V,GACdw6C,EAAI1vE,EAAI0pC,EAAIA,GACZsE,EAAKhuC,EAAI0vE,EAAI9kC,EAAMvV,GACnB4Y,EAAKjuC,EAAI0pC,GAAKrU,EAAI2Y,GAAM+tC,EAAM3mD,GAC9B8Y,EAAKluC,EAAI4qC,EAAM2C,EAAKC,GAC1B,OAAO,IAAI+uC,EAAcvuC,EAAIC,EAAIC,EACrC,CACAhnD,GAAAA,CAAI8kD,GACAswC,EAAetwC,GACf,MAAQr2C,EAAG23C,EAAI13C,EAAG23C,EAAIj4C,EAAGk4C,GAAO7oD,MACxBgR,EAAG83C,EAAI73C,EAAG83C,EAAIp4C,EAAGq4C,GAAO3B,EAChC,GAAIyB,IAAOjH,GAAOkH,IAAOlH,EACrB,OAAO7hD,KACX,GAAI2oD,IAAO9G,GAAO+G,IAAO/G,EACrB,OAAOwF,EACX,MAAM6wC,EAAO78E,EAAIwtC,EAAKA,GAChBsvC,EAAO98E,EAAI2tC,EAAKA,GAChBC,EAAK5tC,EAAIstC,EAAKwvC,GACdjvC,EAAK7tC,EAAIytC,EAAKovC,GACdE,EAAK/8E,EAAIA,EAAIutC,EAAKI,GAAMmvC,GACxBE,EAAKh9E,EAAIA,EAAI0tC,EAAKF,GAAMqvC,GACxB/M,EAAI9vE,EAAI6tC,EAAKD,GACbp4C,EAAIwK,EAAIg9E,EAAKD,GACnB,GAAIjN,IAAMtpC,EACN,OAAIhxC,IAAMgxC,EACC7hD,KAAKopD,SAGLwuC,EAAcpzC,KAG7B,MAAM+zC,EAAKl9E,EAAI8vE,EAAIA,GACbqN,EAAMn9E,EAAI8vE,EAAIoN,GACdhM,EAAIlxE,EAAI4tC,EAAKsvC,GACblvC,EAAKhuC,EAAIxK,EAAIA,EAAI2nF,EAAMvyC,EAAMsmC,GAC7BjjC,EAAKjuC,EAAIxK,GAAK07E,EAAIljC,GAAM+uC,EAAKI,GAC7BjvC,EAAKluC,EAAIwtC,EAAKG,EAAKmiC,GACzB,OAAO,IAAIyM,EAAcvuC,EAAIC,EAAIC,EACrC,CACAvwC,QAAAA,CAASquC,GACL,OAAOrnD,KAAKuC,IAAI8kD,EAAM8B,SAC1B,CACAa,cAAAA,CAAeW,GACX,MAAM8tC,EAAKb,EAAcpzC,KACzB,GAAsB,kBAAXmG,GAAuBA,IAAW9I,EACzC,OAAO42C,EACX,IAAIloF,EAAImoF,EAAgB/tC,GACxB,GAAIp6C,IAAMguC,EACN,OAAOv+C,KACX,IAAKy3F,EAAkB,CACnB,IAAIlhF,EAAIkiF,EACJljF,EAAIvV,KACR,KAAOuQ,EAAIsxC,GACHtxC,EAAIguC,IACJhoC,EAAIA,EAAEhU,IAAIgT,IACdA,EAAIA,EAAE6zC,SACN74C,IAAMguC,EAEV,OAAOhoC,CACX,CACA,IAAI,MAAE8zC,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYp2C,GAC5Ck6C,EAAMguC,EACN/tC,EAAM+tC,EACNljF,EAAIvV,KACR,KAAOsqD,EAAKzI,GAAO2I,EAAK3I,GAChByI,EAAK/L,IACLkM,EAAMA,EAAIloD,IAAIgT,IACdi1C,EAAKjM,IACLmM,EAAMA,EAAInoD,IAAIgT,IAClBA,EAAIA,EAAE6zC,SACNkB,IAAO/L,EACPiM,IAAOjM,EAOX,OALI8L,IACAI,EAAMA,EAAItB,UACVoB,IACAG,EAAMA,EAAIvB,UACduB,EAAM,IAAIktC,EAAcv8E,EAAIqvC,EAAI15C,EAAIy1C,EAAKC,MAAOgE,EAAIz5C,EAAGy5C,EAAI/5C,GACpD85C,EAAIloD,IAAImoD,EACnB,CACAiuC,gBAAAA,CAAiBlM,GACb,MAAMmM,EAAUnB,EAAmB,IAAMhL,EAAI,EAAI,IAAMA,EAAI,EACrDtkC,EAAS,GACf,IAAI5xC,EAAIvW,KACJqY,EAAO9B,EACX,IAAK,IAAIqgB,EAAS,EAAGA,EAASgiE,EAAShiE,IAAU,CAC7Cve,EAAO9B,EACP4xC,EAAO7gD,KAAK+Q,GACZ,IAAK,IAAIrN,EAAI,EAAGA,EAAI,IAAMyhF,EAAI,GAAIzhF,IAC9BqN,EAAOA,EAAK9V,IAAIgU,GAChB4xC,EAAO7gD,KAAK+Q,GAEhB9B,EAAI8B,EAAK+wC,QACb,CACA,OAAOjB,CACX,CACA2B,IAAAA,CAAKv5C,EAAGsoF,IACCA,GAAe74F,KAAKugB,OAAOq3E,EAAc5nF,QAC1C6oF,EAAct7C,EAAMvtC,MACxB,MAAMy8E,EAAKoM,GAAeA,EAAYC,cAAiB,EACvD,GAAI,IAAMrM,EACN,MAAM,IAAI5oF,MAAM,iEAEpB,IAAIk1F,EAAcF,GAAeG,EAAiBptF,IAAIitF,GACjDE,IACDA,EAAc/4F,KAAK24F,iBAAiBlM,GAChCoM,GAAqB,IAANpM,IACfsM,EAAcnB,EAAc1vC,WAAW6wC,GACvCC,EAAiB1iF,IAAIuiF,EAAaE,KAG1C,IAAIxiF,EAAIqhF,EAAcpzC,KAClBqG,EAAI+sC,EAAc5nF,KACtB,MAAM4oF,EAAU,GAAKnB,EAAmB,IAAMhL,EAAI,IAAMA,GAClDprC,EAAa,IAAMorC,EAAI,GACvB99C,EAAOjpC,OAAO,GAAK+mF,EAAI,GACvBwM,EAAY,GAAKxM,EACjByM,EAAUxzF,OAAO+mF,GACvB,IAAK,IAAI71D,EAAS,EAAGA,EAASgiE,EAAShiE,IAAU,CAC7C,MAAMG,EAASH,EAASyqB,EACxB,IAAI7qB,EAAQrH,OAAO5e,EAAIo+B,GACvBp+B,IAAM2oF,EACF1iE,EAAQ6qB,IACR7qB,GAASyiE,EACT1oF,GAAKguC,GAET,MAAM46C,EAAUpiE,EACVqiE,EAAUriE,EAAS3tB,KAAKoR,IAAIgc,GAAS,EACrC6iE,EAAQziE,EAAS,IAAM,EACvB0iE,EAAQ9iE,EAAQ,EACR,IAAVA,EACAq0B,EAAIA,EAAEtoD,IAAIyoD,EAAgBquC,EAAON,EAAYI,KAG7C5iF,EAAIA,EAAEhU,IAAIyoD,EAAgBsuC,EAAOP,EAAYK,IAErD,CACA,MAAO,CAAE7iF,IAAGs0C,IAChB,CACAzyC,QAAAA,CAASuyC,EAAQkuC,GACb,IACIj7C,EACAgN,EAFAr6C,EAAImoF,EAAgB/tC,GAGxB,GAAI8sC,EAAkB,CAClB,MAAM,MAAEptC,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYp2C,GAClD,IAAMgG,EAAGk0C,EAAKI,EAAGC,GAAQ9qD,KAAK8pD,KAAKQ,EAAIuuC,IACjCtiF,EAAGm0C,EAAKG,EAAGE,GAAQ/qD,KAAK8pD,KAAKU,EAAIquC,GACvCpuC,EAAMO,EAAgBX,EAAOI,GAC7BC,EAAMM,EAAgBT,EAAOG,GAC7BA,EAAM,IAAIktC,EAAcv8E,EAAIqvC,EAAI15C,EAAIy1C,EAAKC,MAAOgE,EAAIz5C,EAAGy5C,EAAI/5C,GAC3DitC,EAAQ6M,EAAIloD,IAAImoD,GAChBE,EAAOE,EAAIvoD,IAAIwoD,EACnB,KACK,CACD,MAAM,EAAEx0C,EAAC,EAAEs0C,GAAM7qD,KAAK8pD,KAAKv5C,EAAGsoF,GAC9Bj7C,EAAQrnC,EACRq0C,EAAOC,CACX,CACA,OAAO+sC,EAAc1vC,WAAW,CAACtK,EAAOgN,IAAO,EACnD,CACA9M,QAAAA,CAASy7C,GACL,MAAM,EAAEvoF,EAAC,EAAEC,EAAC,EAAEN,GAAM3Q,KACd4nD,EAAM5nD,KAAKugB,OAAOq3E,EAAcpzC,MAC1B,MAAR+0C,IACAA,EAAO3xC,EAAMwvC,EAAMxuF,EAAO+H,IAC9B,MAAM6oF,EAAMD,EACNE,EAAMp+E,EAAIm+E,EAAMA,GAChBE,EAAMr+E,EAAIo+E,EAAMD,GAChB3xC,EAAKxsC,EAAIrK,EAAIyoF,GACb3xC,EAAKzsC,EAAIpK,EAAIyoF,GACb3xC,EAAK1sC,EAAI1K,EAAI6oF,GACnB,GAAI5xC,EACA,OAAOrK,EAAMiH,KACjB,GAAIuD,IAAOxJ,EACP,MAAM,IAAI16C,MAAM,oBACpB,OAAO,IAAI05C,EAAMsK,EAAIC,EACzB,EAIJ,SAASkD,EAAgBwS,EAAWjqC,GAChC,MAAMoR,EAAMpR,EAAK41B,SACjB,OAAOqU,EAAY74B,EAAMpR,CAC7B,CALAqkE,EAAc5nF,KAAO,IAAI4nF,EAAcx7C,EAAM8K,GAAI9K,EAAM6K,GAAI1I,GAC3Dq5C,EAAcpzC,KAAO,IAAIozC,EAAc/1C,EAAKtD,EAAKsD,GAKjD,MAAMm3C,EAAmB,IAAIW,QAC7B,MAAMp8C,EACFtvC,WAAAA,CAAY+C,EAAGC,GACXjR,KAAKgR,EAAIA,EACThR,KAAKiR,EAAIA,CACb,CACAqwC,cAAAA,CAAeD,GACXrhD,KAAK84F,aAAez3C,EACpB23C,EAAiB5xE,OAAOpnB,KAC5B,CACAi+C,QAAAA,GACI,OAAOj+C,KAAKiR,EAAIg1C,IAAQpE,CAC5B,CACA,wBAAO+3C,CAAkBz7C,GACrB,MAAM07C,EAA2B,KAAjB17C,EAAMt8C,OAChBmP,EAAI8oF,EAAcD,EAAU17C,EAAQA,EAAMvtB,SAAS,IACzD,IAAKmpE,EAAoB/oF,GACrB,MAAM,IAAInN,MAAM,yBAEpB,IAAIoN,EA+SZ,SAAiBD,GACb,MAAM,EAAE0B,GAAM0pC,EACR49C,EAAMt0F,OAAO,GACbu0F,EAAOv0F,OAAO,IACdw0F,EAAOx0F,OAAO,IACdy0F,EAAOz0F,OAAO,IACd00F,EAAO10F,OAAO,IACd20F,EAAO30F,OAAO,IACd6iC,EAAMv3B,EAAIA,EAAIA,EAAK0B,EACnBg2B,EAAMH,EAAKA,EAAKv3B,EAAK0B,EACrBy2B,EAAMmxD,EAAK5xD,EAAIwd,GAAOxd,EAAMh2B,EAC5Bk3B,EAAM0wD,EAAKnxD,EAAI+c,GAAOxd,EAAMh2B,EAC5B6nF,EAAOD,EAAK1wD,EAAIqc,GAAO1d,EAAM71B,EAC7B8nF,EAAOF,EAAKC,EAAKN,GAAQM,EAAO7nF,EAChC+nF,EAAOH,EAAKE,EAAKN,GAAQM,EAAO9nF,EAChCgoF,EAAOJ,EAAKG,EAAKL,GAAQK,EAAO/nF,EAChCioF,EAAQL,EAAKI,EAAKL,GAAQK,EAAOhoF,EACjCkoF,EAAQN,EAAKK,EAAMP,GAAQK,EAAO/nF,EAClCmoF,EAAQP,EAAKM,EAAM10C,GAAOxd,EAAMh2B,EAChC+2C,EAAM6wC,EAAKO,EAAMV,GAAQK,EAAO9nF,EAChCg3C,EAAM4wC,EAAK7wC,EAAIuwC,GAAOzxD,EAAM71B,EAC5BmnC,EAAKygD,EAAK5wC,EAAIzD,GAEpB,GADYpM,EAAKA,EAAMnnC,IACZ1B,EACP,MAAM,IAAInN,MAAM,2BACpB,OAAOg2C,CACX,CAzUgBihD,CADGlxF,EAAYoH,IAEvB,MAAM+pF,GAAU9pF,EAAIstC,KAASA,EAC7B,GAAIs7C,EACIkB,IACA9pF,EAAIoK,GAAKpK,QAEZ,CACyC,KAAP,EAAXktC,EAAM,MACP48C,IACnB9pF,EAAIoK,GAAKpK,GACjB,CACA,MAAM2sC,EAAQ,IAAIL,EAAMvsC,EAAGC,GAE3B,OADA2sC,EAAMuB,iBACCvB,CACX,CACA,0BAAOo9C,CAAoB78C,GACvB,MAAMntC,EAAI8oF,EAAc37C,EAAMvtB,SAAS,EAAG2mE,KACpCtmF,EAAI6oF,EAAc37C,EAAMvtB,SAAS2mE,GAAcA,KAC/C35C,EAAQ,IAAIL,EAAMvsC,EAAGC,GAE3B,OADA2sC,EAAMuB,iBACCvB,CACX,CACA,cAAOqC,CAAQn5C,GACX,MAAMq3C,EAAQkB,EAAYv4C,GACpBqL,EAAMgsC,EAAMt8C,OACZqwB,EAASisB,EAAM,GACrB,GAAIhsC,IAAQolF,EACR,OAAOv3F,KAAK45F,kBAAkBz7C,GAClC,GApSco5C,KAoSVplF,IAAqC,IAAX+f,GAA8B,IAAXA,GAC7C,OAAOlyB,KAAK45F,kBAAkBz7C,GAElC,GAtSgB,KAsSZhsC,GAAsC,IAAX+f,EAC3B,OAAOlyB,KAAKg7F,oBAAoB78C,GACpC,MAAM,IAAIt6C,MAAM,wGAAsIsO,IAC1J,CACA,qBAAO0wC,CAAe7B,GAClB,OAAOzD,EAAMvtC,KAAKoI,SAAS6iF,EAAoBj6C,GACnD,CACA,oBAAOk6C,CAAct7C,EAAS37C,EAAWi7C,GACrC,MAAM,EAAEruC,EAAC,EAAEH,GAAMyqF,EAAmBl3F,GACpC,IAAK,CAAC,EAAG,EAAG,EAAG,GAAG67C,SAASZ,GACvB,MAAM,IAAIr7C,MAAM,wCACpB,MAAM2tB,EAAI4pE,EAAa/7C,EAAYO,KAC7B,EAAErvC,GAAM6rC,EACR2D,EAAoB,IAAbb,GAA+B,IAAbA,EAAiBruC,EAAIN,EAAIM,EAClD0jC,EAAO3rC,EAAOm3C,EAAMxvC,GACpB4vC,EAAK9kC,GAAKmW,EAAI+iB,EAAMhkC,GACpB6vC,EAAK/kC,EAAI3K,EAAI6jC,EAAMhkC,GACnBgD,EAAoB,EAAX2rC,EAAe,KAAO,KAC/Bc,EAAIzC,EAAM0C,QAAQ1sC,EAAS8nF,EAAYt7C,IACvCM,EAAI9C,EAAMvtC,KAAKswC,qBAAqBN,EAAGG,EAAIC,GACjD,IAAKC,EACD,MAAM,IAAIx8C,MAAM,+CAEpB,OADAw8C,EAAElB,iBACKkB,CACX,CACAyC,UAAAA,GAAiC,IAAtBjF,EAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACnB,OAAO8+C,EAAW1gD,KAAKmrD,MAAMtN,GACjC,CACAsN,KAAAA,GAA4B,IAAtBtN,EAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACd,MAAMoP,EAAIqqF,EAAYr7F,KAAKgR,GAC3B,GAAI6sC,EAAc,CAEd,MAAO,GADQ79C,KAAKi+C,WAAa,KAAO,OACrBjtC,GACvB,CAEI,MAAO,KAAKA,IAAIqqF,EAAYr7F,KAAKiR,IAEzC,CACAqqF,MAAAA,GACI,OAAOt7F,KAAKmrD,OAAM,GAAMz9C,MAAM,EAClC,CACA6tF,MAAAA,GACI,OAAOv7F,KAAK8iD,YAAW,GAAMp1C,MAAM,EACvC,CACAyxC,cAAAA,GACI,MAAM1+C,EAAM,kCACN,EAAEuQ,EAAC,EAAEC,GAAMjR,KACjB,IAAK+5F,EAAoB/oF,KAAO+oF,EAAoB9oF,GAChD,MAAM,IAAIpN,MAAMpD,GACpB,MAAM44B,EAAOhe,EAAIpK,EAAIA,GAErB,GAAIoK,EAAIge,EADMzvB,EAAYoH,MACA6wC,EACtB,MAAM,IAAIh+C,MAAMpD,EACxB,CACA8f,MAAAA,CAAO8mC,GACH,OAAOrnD,KAAKgR,IAAMq2C,EAAMr2C,GAAKhR,KAAKiR,IAAMo2C,EAAMp2C,CAClD,CACAk4C,MAAAA,GACI,OAAO,IAAI5L,EAAMv9C,KAAKgR,EAAGqK,GAAKrb,KAAKiR,GACvC,CACAm4C,MAAAA,GACI,OAAOwuC,EAAc3vC,WAAWjoD,MAAMopD,SAAStL,UACnD,CACAv7C,GAAAA,CAAI8kD,GACA,OAAOuwC,EAAc3vC,WAAWjoD,MAAMuC,IAAIq1F,EAAc3vC,WAAWZ,IAAQvJ,UAC/E,CACA9kC,QAAAA,CAASquC,GACL,OAAOrnD,KAAKuC,IAAI8kD,EAAM8B,SAC1B,CACA/wC,QAAAA,CAASuyC,GACL,OAAOitC,EAAc3vC,WAAWjoD,MAAMoY,SAASuyC,EAAQ3qD,MAAM89C,UACjE,CACAwC,oBAAAA,CAAqBD,EAAG5vC,EAAGS,GACvB,MAAMwB,EAAIklF,EAAc3vC,WAAWjoD,MAC7Bw7F,EAAK/qF,IAAMoxC,GAAOpxC,IAAM8tC,GAAOv+C,OAASu9C,EAAMvtC,KAAO0C,EAAEs3C,eAAev5C,GAAKiC,EAAE0F,SAAS3H,GACtFgrF,EAAK7D,EAAc3vC,WAAW5H,GAAG2J,eAAe94C,GAChDuG,EAAM+jF,EAAGj5F,IAAIk5F,GACnB,OAAOhkF,EAAI8I,OAAOq3E,EAAcpzC,WAAQ1iD,EAAY2V,EAAIqmC,UAC5D,EAKJ,SAAS49C,EAAShrF,GACd,OAAOye,OAAOhkB,SAASuF,EAAE,GAAI,KAAO,EAAI,KAAOA,EAAIA,CACvD,CACA,SAASirF,EAAYh4F,GACjB,GAAIA,EAAK9B,OAAS,GAAiB,IAAZ8B,EAAK,GACxB,MAAM,IAAIE,MAAM,kCAAkC+6C,EAAWj7C,MAEjE,MAAMwO,EAAMxO,EAAK,GACXiuB,EAAMjuB,EAAKitB,SAAS,EAAGze,EAAM,GACnC,IAAKA,GAAOyf,EAAI/vB,SAAWsQ,EACvB,MAAM,IAAItO,MAAM,2CAEpB,GAAe,IAAX+tB,EAAI,IAAeA,EAAI,IAAM,IAC7B,MAAM,IAAI/tB,MAAM,8CAEpB,MAAO,CAAEF,KAAMm2F,EAAcloE,GAAMyH,KAAM11B,EAAKitB,SAASze,EAAM,GACjE,CAnBArS,EAAQy9C,MAAQA,EAChBA,EAAMvtC,KAAO,IAAIutC,EAAMnB,EAAM8K,GAAI9K,EAAM6K,IACvC1J,EAAMiH,KAAO,IAAIjH,EAAMsE,EAAKA,GAgC5B,MAAM5C,EACFhxC,WAAAA,CAAY4C,EAAGH,GACX1Q,KAAK6Q,EAAIA,EACT7Q,KAAK0Q,EAAIA,EACT1Q,KAAKm/C,gBACT,CACA,kBAAOC,CAAYt4C,GACf,MAAMkR,EAAMlR,aAAewpB,WACrB1e,EAAO,wBACb,GAAmB,kBAAR9K,IAAqBkR,EAC5B,MAAM,IAAIinB,UAAU,GAAGrtB,oCAC3B,MAAMI,EAAMgG,EAAM4mC,EAAW93C,GAAOA,EACpC,GAAmB,MAAfkL,EAAInQ,OACJ,MAAM,IAAIgC,MAAM,GAAG+N,2BACvB,OAAO,IAAIqtC,EAAU28C,EAAY5pF,EAAItE,MAAM,EAAG,KAAMkuF,EAAY5pF,EAAItE,MAAM,GAAI,MAClF,CACA,cAAO4xC,CAAQx4C,GACX,MAAMkR,EAAMlR,aAAewpB,WAC3B,GAAmB,kBAARxpB,IAAqBkR,EAC5B,MAAM,IAAIinB,UAAU,oDACxB,MAAM,EAAEpuB,EAAC,EAAEH,GAlCnB,SAA2B/M,GACvB,GAAIA,EAAK9B,OAAS,GAAgB,IAAX8B,EAAK,GACxB,MAAM,IAAIE,MAAM,0BAA0B+6C,EAAWj7C,MAEzD,GAAIA,EAAK,KAAOA,EAAK9B,OAAS,EAC1B,MAAM,IAAIgC,MAAM,uCAEpB,MAAQF,KAAMkN,EAAGwoB,KAAMwsB,GAAW81C,EAAYh4F,EAAKitB,SAAS,KACpDjtB,KAAM+M,EAAG2oB,KAAMwiE,GAAeF,EAAY91C,GAClD,GAAIg2C,EAAWh6F,OACX,MAAM,IAAIgC,MAAM,gDAAgD+6C,EAAWi9C,MAE/E,MAAO,CAAEhrF,IAAGH,IAChB,CAqByBorF,CAAkB9jF,EAAMlR,EAAM45C,EAAW55C,IAC1D,OAAO,IAAIm4C,EAAUpuC,EAAGH,EAC5B,CACA,cAAOuvC,CAAQn5C,GACX,OAAO9G,KAAKs/C,QAAQx4C,EACxB,CACAq4C,cAAAA,GACI,MAAM,EAAEtuC,EAAC,EAAEH,GAAM1Q,KACjB,IAAK09C,EAAmB7sC,GACpB,MAAM,IAAIhN,MAAM,0CACpB,IAAK65C,EAAmBhtC,GACpB,MAAM,IAAI7M,MAAM,yCACxB,CACA08C,QAAAA,GACI,MAAMw7C,EAAO3/C,EAAM7rC,GAAKguC,EACxB,OAAOv+C,KAAK0Q,EAAIqrF,CACpB,CACAv7C,UAAAA,GACI,OAAOxgD,KAAKugD,WAAa,IAAItB,EAAUj/C,KAAK6Q,EAAGwK,GAAKrb,KAAK0Q,EAAG0rC,EAAM7rC,IAAMvQ,IAC5E,CACAygD,aAAAA,GACI,OAAOC,EAAW1gD,KAAK2gD,WAC3B,CACAA,QAAAA,GACI,MAAMq7C,EAAON,EAASz2C,EAAoBjlD,KAAK0Q,IACzCurF,EAAOP,EAASz2C,EAAoBjlD,KAAK6Q,IACzCqrF,EAAQF,EAAKn6F,OAAS,EACtBs6F,EAAQF,EAAKp6F,OAAS,EACtBu6F,EAAOn3C,EAAoBi3C,GAC3BG,EAAOp3C,EAAoBk3C,GAEjC,MAAO,KADQl3C,EAAoBk3C,EAAQD,EAAQ,OAC5BG,IAAOJ,MAASG,IAAOJ,GAClD,CACAl5C,UAAAA,GACI,OAAO9iD,KAAKygD,eAChB,CACA0K,KAAAA,GACI,OAAOnrD,KAAK2gD,UAChB,CACAE,iBAAAA,GACI,OAAOH,EAAW1gD,KAAK8gD,eAC3B,CACAA,YAAAA,GACI,OAAOu6C,EAAYr7F,KAAK6Q,GAAKwqF,EAAYr7F,KAAK0Q,EAClD,EAGJ,SAASrG,IAAuB,QAAAJ,EAAArI,UAAAC,OAARy6F,EAAM,IAAAnyF,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAANkyF,EAAMlyF,GAAAxI,UAAAwI,GAC1B,IAAKkyF,EAAOC,OAAOrrF,GAAMA,aAAaof,aAClC,MAAM,IAAIzsB,MAAM,4BACpB,GAAsB,IAAlBy4F,EAAOz6F,OACP,OAAOy6F,EAAO,GAClB,MAAMz6F,EAASy6F,EAAOrzF,QAAO,CAACwH,EAAGuH,IAAQvH,EAAIuH,EAAInW,QAAQ,GACnD8sB,EAAS,IAAI2B,WAAWzuB,GAC9B,IAAK,IAAImJ,EAAI,EAAGwxF,EAAM,EAAGxxF,EAAIsxF,EAAOz6F,OAAQmJ,IAAK,CAC7C,MAAMgN,EAAMskF,EAAOtxF,GACnB2jB,EAAOrY,IAAI0B,EAAKwkF,GAChBA,GAAOxkF,EAAInW,MACf,CACA,OAAO8sB,CACX,CAdA7uB,EAAQm/C,UAAYA,EAepB,MAAMw9C,EAAQtyF,MAAM3F,KAAK,CAAE3C,OAAQ,MAAO,CAACoS,EAAGjJ,IAAMA,EAAEvG,SAAS,IAAI4mB,SAAS,EAAG,OAC/E,SAASuzB,EAAW89C,GAChB,KAAMA,aAAkBpsE,YACpB,MAAM,IAAIzsB,MAAM,uBACpB,IAAIiD,EAAM,GACV,IAAK,IAAIkE,EAAI,EAAGA,EAAI0xF,EAAO76F,OAAQmJ,IAC/BlE,GAAO21F,EAAMC,EAAO1xF,IAExB,OAAOlE,CACX,CACA,MAAM61F,EAAYj3F,OAAO,uEACzB,SAAS21F,EAAYl6D,GACjB,GAAmB,kBAARA,EACP,MAAM,IAAIt9B,MAAM,mBACpB,KAAMg+C,GAAO1gB,GAAOA,EAAMw7D,GACtB,MAAM,IAAI94F,MAAM,kCACpB,OAAOs9B,EAAI18B,SAAS,IAAI4mB,SAAS,GAAI,IACzC,CACA,SAASuxE,EAASz7D,GACd,MAAMjwB,EAAIwvC,EAAW26C,EAAYl6D,IACjC,GAAiB,KAAbjwB,EAAErP,OACF,MAAM,IAAIgC,MAAM,4BACpB,OAAOqN,CACX,CACA,SAAS+zC,EAAoB9jB,GACzB,MAAMr6B,EAAMq6B,EAAI18B,SAAS,IACzB,OAAoB,EAAbqC,EAAIjF,OAAa,IAAIiF,IAAQA,CACxC,CACA,SAAS80F,EAAY90F,GACjB,GAAmB,kBAARA,EACP,MAAM,IAAIm4B,UAAU,4CAA8Cn4B,GAEtE,OAAOpB,OAAO,KAAKoB,IACvB,CACA,SAAS45C,EAAW55C,GAChB,GAAmB,kBAARA,EACP,MAAM,IAAIm4B,UAAU,2CAA6Cn4B,GAErE,GAAIA,EAAIjF,OAAS,EACb,MAAM,IAAIgC,MAAM,4CAA8CiD,EAAIjF,QACtE,MAAMg7F,EAAQ,IAAIvsE,WAAWxpB,EAAIjF,OAAS,GAC1C,IAAK,IAAImJ,EAAI,EAAGA,EAAI6xF,EAAMh7F,OAAQmJ,IAAK,CACnC,MAAM4F,EAAQ,EAAJ5F,EACJ8xF,EAAUh2F,EAAI4G,MAAMkD,EAAGA,EAAI,GAC3B2e,EAAOJ,OAAOhkB,SAAS2xF,EAAS,IACtC,GAAI3tE,OAAO/U,MAAMmV,IAASA,EAAO,EAC7B,MAAM,IAAI1rB,MAAM,yBACpBg5F,EAAM7xF,GAAKukB,CACf,CACA,OAAOstE,CACX,CACA,SAAS/C,EAAc37C,GACnB,OAAOy9C,EAAYh9C,EAAWT,GAClC,CACA,SAASkB,EAAYv4C,GACjB,OAAOA,aAAewpB,WAAaA,WAAW9rB,KAAKsC,GAAO45C,EAAW55C,EACzE,CACA,SAAS4xF,EAAgBv3D,GACrB,GAAmB,kBAARA,GAAoBhS,OAAOivC,cAAcj9B,IAAQA,EAAM,EAC9D,OAAOz7B,OAAOy7B,GAClB,GAAmB,kBAARA,GAAoBuc,EAAmBvc,GAC9C,OAAOA,EACX,MAAM,IAAIlC,UAAU,sDACxB,CACA,SAAS5jB,EAAI5K,GAAgB,IAAbS,EAACtP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGw6C,EAAM1pC,EACtB,MAAMic,EAASle,EAAIS,EACnB,OAAOyd,GAAUkzB,EAAMlzB,EAASzd,EAAIyd,CACxC,CACA,SAAS2rE,EAAKtpF,EAAG+rF,GACb,MAAM,EAAErqF,GAAM0pC,EACd,IAAIxqB,EAAM5gB,EACV,KAAO+rF,KAAUl7C,GACbjwB,GAAOA,EACPA,GAAOlf,EAEX,OAAOkf,CACX,CA4BA,SAAShpB,EAAOs3B,GAA0B,IAAlBvjB,EAAM/a,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGw6C,EAAM1pC,EACnC,GAAIwtB,IAAW2hB,GAAOllC,GAAUklC,EAC5B,MAAM,IAAIh+C,MAAM,6CAA6Cq8B,SAAcvjB,KAE/E,IAAIlM,EAAI4K,EAAI6kB,EAAQvjB,GAChBzL,EAAIyL,EACJ3L,EAAI6wC,EAAK5wC,EAAIstC,EAAKhJ,EAAIgJ,EAAKtqC,EAAI4tC,EACnC,KAAOpxC,IAAMoxC,GAAK,CACd,MAAMzoC,EAAIlI,EAAIT,EACRI,EAAIK,EAAIT,EACR6H,EAAItH,EAAIukC,EAAIn8B,EACZ7I,EAAIU,EAAIgD,EAAImF,EAClBlI,EAAIT,EAAGA,EAAII,EAAGG,EAAIukC,EAAGtkC,EAAIgD,EAAGshC,EAAIj9B,EAAGrE,EAAI1D,CAC3C,CAEA,GADYW,IACAqtC,EACR,MAAM,IAAI16C,MAAM,0BACpB,OAAOwX,EAAIrK,EAAG2L,EAClB,CAuBA,SAASy+E,EAAax2F,GAA4B,IAAtBo4F,EAAYp7F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACpC,MAAM4vB,EANV,SAAoB2sB,GAChB,MAAM9M,EAAuB,EAAf8M,EAAMt8C,OAAa21F,IAC3Br2D,EAAM24D,EAAc37C,GAC1B,OAAO9M,EAAQ,EAAIlQ,GAAOz7B,OAAO2rC,GAASlQ,CAC9C,CAEc87D,CAAWr4F,GACrB,GAAIo4F,EACA,OAAOxrE,EACX,MAAM,EAAEjhB,GAAM6rC,EACd,OAAO5qB,GAAKjhB,EAAIihB,EAAIjhB,EAAIihB,CAC5B,CACA,IAAI0rE,EACAC,EACJ,MAAMC,EACFnvF,WAAAA,CAAYovF,EAASC,GAGjB,GAFAt9F,KAAKq9F,QAAUA,EACfr9F,KAAKs9F,SAAWA,EACO,kBAAZD,GAAwBA,EAAU,EACzC,MAAM,IAAIx5F,MAAM,4BACpB,GAAwB,kBAAby5F,GAAyBA,EAAW,EAC3C,MAAM,IAAIz5F,MAAM,6BACpB7D,KAAKiU,EAAI,IAAIqc,WAAW+sE,GAASpsE,KAAK,GACtCjxB,KAAKsR,EAAI,IAAIgf,WAAW+sE,GAASpsE,KAAK,GACtCjxB,KAAKoqB,QAAU,CACnB,CACArgB,IAAAA,GAAgB,QAAA8e,EAAAjnB,UAAAC,OAARklB,EAAM,IAAA5c,MAAA0e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAN/B,EAAM+B,GAAAlnB,UAAAknB,GACV,OAAOhpB,EAAQu8B,MAAMkhE,WAAWv9F,KAAKsR,KAAMyV,EAC/C,CACAy2E,QAAAA,GAAoB,QAAAx0E,EAAApnB,UAAAC,OAARklB,EAAM,IAAA5c,MAAA6e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANlC,EAAMkC,GAAArnB,UAAAqnB,GACd,OAAOk0E,EAAgBn9F,KAAKsR,KAAMyV,EACtC,CACA02E,SAAAA,GACI,GAA+B,oBAApBN,EACP,MAAM,IAAIzF,EAAS,iCAC3B,CACAnd,IAAAA,GACI,GAAIv6E,KAAKoqB,SAAW,IAChB,MAAM,IAAIvmB,MAAM,qDACpB7D,KAAKoqB,SAAW,CACpB,CACA,YAAMszE,GAAgC,IAAzBp7C,EAAI1gD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAI0uB,WACpBtwB,KAAKsR,QAAUtR,KAAK+J,KAAK/J,KAAKiU,EAAGqc,WAAW9rB,KAAK,CAAC,IAAQ89C,GAC1DtiD,KAAKiU,QAAUjU,KAAK+J,KAAK/J,KAAKiU,GACV,IAAhBquC,EAAKzgD,SAET7B,KAAKsR,QAAUtR,KAAK+J,KAAK/J,KAAKiU,EAAGqc,WAAW9rB,KAAK,CAAC,IAAQ89C,GAC1DtiD,KAAKiU,QAAUjU,KAAK+J,KAAK/J,KAAKiU,GAClC,CACA0pF,UAAAA,GAAoC,IAAzBr7C,EAAI1gD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAI0uB,WAClBtwB,KAAKy9F,YACLz9F,KAAKsR,EAAItR,KAAKw9F,SAASx9F,KAAKiU,EAAGqc,WAAW9rB,KAAK,CAAC,IAAQ89C,GACxDtiD,KAAKiU,EAAIjU,KAAKw9F,SAASx9F,KAAKiU,GACR,IAAhBquC,EAAKzgD,SAET7B,KAAKsR,EAAItR,KAAKw9F,SAASx9F,KAAKiU,EAAGqc,WAAW9rB,KAAK,CAAC,IAAQ89C,GACxDtiD,KAAKiU,EAAIjU,KAAKw9F,SAASx9F,KAAKiU,GAChC,CACA,cAAM2pF,GACF59F,KAAKu6E,OACL,IAAIpoE,EAAM,EACV,MAAMpL,EAAM,GACZ,KAAOoL,EAAMnS,KAAKs9F,UAAU,CACxBt9F,KAAKiU,QAAUjU,KAAK+J,KAAK/J,KAAKiU,GAC9B,MAAM4pF,EAAK79F,KAAKiU,EAAEvG,QAClB3G,EAAIO,KAAKu2F,GACT1rF,GAAOnS,KAAKiU,EAAEpS,MAClB,CACA,OAAOwI,KAAetD,EAC1B,CACA+2F,YAAAA,GACI99F,KAAKy9F,YACLz9F,KAAKu6E,OACL,IAAIpoE,EAAM,EACV,MAAMpL,EAAM,GACZ,KAAOoL,EAAMnS,KAAKs9F,UAAU,CACxBt9F,KAAKiU,EAAIjU,KAAKw9F,SAASx9F,KAAKiU,GAC5B,MAAM4pF,EAAK79F,KAAKiU,EAAEvG,QAClB3G,EAAIO,KAAKu2F,GACT1rF,GAAOnS,KAAKiU,EAAEpS,MAClB,CACA,OAAOwI,KAAetD,EAC1B,EAEJ,SAAS22C,EAAmBvc,GACxB,OAAO0gB,EAAM1gB,GAAOA,EAAMib,EAAM7rC,CACpC,CACA,SAASwpF,EAAoB54D,GACzB,OAAO0gB,EAAM1gB,GAAOA,EAAMib,EAAM1pC,CACpC,CACA,SAASqrF,EAASv7C,EAAQlqC,EAAG/C,GAAgB,IAAbqnC,IAAIh7C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAChC,MAAM,EAAE2O,GAAM6rC,EACR9qC,EAAI8pF,EAAa54C,GAAQ,GAC/B,IAAK9E,EAAmBpsC,GACpB,OACJ,MAAM0sF,EAAOp1F,EAAO0I,EAAGf,GACjB6I,EAAImkC,EAAMvtC,KAAKoI,SAAS9G,GACxBT,EAAIwK,EAAIjC,EAAEpI,EAAGT,GACnB,GAAIM,IAAMgxC,EACN,OACJ,MAAMnxC,EAAI2K,EAAI2iF,EAAO3iF,EAAI/C,EAAI/C,EAAI1E,EAAGN,GAAIA,GACxC,GAAIG,IAAMmxC,EACN,OACJ,IAAIkE,EAAM,IAAI9G,EAAUpuC,EAAGH,GACvBwuC,GAAY9lC,EAAEpI,IAAM+0C,EAAIl1C,EAAI,EAAI,GAAKse,OAAO/V,EAAEnI,EAAIstC,GAKtD,OAJI3B,GAAQmJ,EAAIxF,aACZwF,EAAMA,EAAIvF,aACVtB,GAAY,GAET,CAAE6G,MAAK7G,WAClB,CACA,SAAS+7C,EAAoBjxF,GACzB,IAAIm3B,EACJ,GAAmB,kBAARn3B,EACPm3B,EAAMn3B,OAEL,GAAmB,kBAARA,GAAoBmlB,OAAOivC,cAAcp0D,IAAQA,EAAM,EACnEm3B,EAAMz7B,OAAOsE,QAEZ,GAAmB,kBAARA,EAAkB,CAC9B,GAAmB,KAAfA,EAAInI,OACJ,MAAM,IAAIgC,MAAM,oCACpBs9B,EAAMy6D,EAAY5xF,EACtB,KACK,MAAIA,aAAesmB,YAMpB,MAAM,IAAI2O,UAAU,8BALpB,GAAIj1B,EAAInI,SAAW21F,EACf,MAAM,IAAI3zF,MAAM,oCACpBs9B,EAAM24D,EAAc9vF,EAIxB,CACA,IAAK0zC,EAAmBvc,GACpB,MAAM,IAAIt9B,MAAM,qCACpB,OAAOs9B,CACX,CACA,SAAS88D,EAAmBt5F,GACxB,OAAIA,aAAqB44C,GACrB54C,EAAUw6C,iBACHx6C,GAGA44C,EAAM0C,QAAQt7C,EAE7B,CACA,SAASw2F,EAAmBl3F,GACxB,GAAIA,aAAqBg7C,EAErB,OADAh7C,EAAUk7C,iBACHl7C,EAEX,IACI,OAAOg7C,EAAUK,QAAQr7C,EAC7B,CACA,MAAO4e,GACH,OAAOo8B,EAAUG,YAAYn7C,EACjC,CACJ,CASA,SAASs9C,EAAUhuB,GACf,MAAMvb,EAAMub,aAAgBjD,WACtBte,EAAsB,kBAATuhB,EACbphB,GAAO6F,GAAOhG,IAAQuhB,EAAK1xB,OACjC,OAAImW,EA/xBcu/E,KAgyBPplF,GA/xBS,KA+xBgBA,EAChCH,EACegrC,KAAR7qC,GAAqC+qC,MAAR/qC,EACpCohB,aAAgBgqB,CAGxB,CAWA,SAASb,EAASyB,GAEd,OAAO27C,EADO37C,EAAMt8C,OAAS01F,EAAWp5C,EAAMzwC,MAAM,EAAG6pF,GAAYp5C,EAEvE,CACA,SAAS+/C,EAAY//C,GACjB,MAAMggD,EAAKzhD,EAASyB,GACdigD,EAAK/iF,EAAI8iF,EAAI/hD,EAAM7rC,GACzB,OAAOqxC,EAAWw8C,EAAKv8C,EAAMs8C,EAAKC,EACtC,CACA,SAASx8C,EAAWzgB,GAChB,OAAOy7D,EAASz7D,EACpB,CACA,SAASk9D,GAAYz+C,EAASoB,EAAYiB,GACtC,GAAe,MAAXrC,EACA,MAAM,IAAI/7C,MAAM,2CAA2C+7C,MAC/D,MAAM0+C,EAAKj/C,EAAYO,GACjBrqC,EAAI0lF,EAAoBj6C,GACxBqB,EAAW,CAACT,EAAWrsC,GAAI2oF,EAAYI,IAC7C,GAAoB,MAAhBr8C,EAAsB,EACD,IAAjBA,IACAA,EAAeniD,EAAQu8B,MAAM/xB,YAAYitF,IAC7C,MAAMhmF,EAAI8tC,EAAY4C,GACtB,GAAI1wC,EAAE1P,SAAW01F,EACb,MAAM,IAAI1zF,MAAM,yCACpBw+C,EAAS/6C,KAAKiK,EAClB,CAGA,MAAO,CAAE+wC,KAFIj4C,KAAeg4C,GAEb/pC,EADLokC,EAAS4hD,GACD/oF,IACtB,CACA,SAASgpF,GAAYC,EAAQvkE,GACzB,MAAM,IAAE8rB,EAAG,SAAE7G,GAAas/C,GACpB,IAAEC,EAAG,UAAEC,GAAc17F,OAAO0nF,OAAO,CAAEiU,WAAW,EAAMF,KAAK,GAAQxkE,GACnE2kE,EAASH,EAAM14C,EAAItF,gBAAkBsF,EAAIlF,oBAC/C,OAAO69C,EAAY,CAACE,EAAQ1/C,GAAY0/C,CAC5C,CA9DA9+F,EAAQ8iD,aAHR,SAAsB5B,GAAkC,IAAtBnD,EAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC1C,OAAO27C,EAAMsF,eAAe7B,GAAY8B,WAAWjF,EACvD,EAKA/9C,EAAQ6/C,iBAHR,SAA0BC,EAAS37C,EAAWi7C,GAAgC,IAAtBrB,EAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAChE,OAAO27C,EAAM29C,cAAct7C,EAAS37C,EAAWi7C,GAAU4D,WAAWjF,EACxE,EAuBA/9C,EAAQijD,gBATR,SAAyBC,EAAUC,GAA+B,IAAtBpF,EAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACpD,GAAI2/C,EAAUyB,GACV,MAAM,IAAI/jB,UAAU,kDACxB,IAAKsiB,EAAU0B,GACX,MAAM,IAAIhkB,UAAU,kDACxB,MAAM/tB,EAAI+sF,EAAmBh7C,GAE7B,OADA/xC,EAAEiuC,iBACKjuC,EAAEkH,SAAS6iF,EAAoBj4C,IAAWF,WAAWjF,EAChE,EA+CA/9C,EAAQoE,KATRmL,eAAoBuwC,EAASsD,GAAoB,IAAXjpB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC1C,MAAM,KAAE0gD,EAAI,EAAEhqC,EAAC,EAAE/C,GAAM8oF,GAAYz+C,EAASsD,EAASjpB,EAAKgoB,cACpDmB,EAAO,IAAIg6C,EAx1BL,GAw1BuB5F,GAEnC,IAAIzxC,EACJ,UAFM3C,EAAKs6C,OAAOp7C,KAETyD,EAAMg4C,QAAe36C,EAAKw6C,WAAYtlF,EAAG/C,EAAG0kB,EAAK0kE,mBAChDv7C,EAAKs6C,SACf,OAAOa,GAAYx4C,EAAK9rB,EAC5B,EAWAn6B,EAAQo3F,SATR,SAAkBt3C,EAASsD,GAAoB,IAAXjpB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACxC,MAAM,KAAE0gD,EAAI,EAAEhqC,EAAC,EAAE/C,GAAM8oF,GAAYz+C,EAASsD,EAASjpB,EAAKgoB,cACpDmB,EAAO,IAAIg6C,EAl2BL,GAk2BuB5F,GAEnC,IAAIzxC,EACJ,IAFA3C,EAAKu6C,WAAWr7C,KAEPyD,EAAMg4C,EAAS36C,EAAK06C,eAAgBxlF,EAAG/C,EAAG0kB,EAAK0kE,aACpDv7C,EAAKu6C,aACT,OAAOY,GAAYx4C,EAAK9rB,EAC5B,EAEA,MAAM4kE,GAAQ,CAAEC,QAAQ,GAgCxB,SAASC,GAAyBC,GAC9B,OAAO3jF,EAAIy+E,EAAckF,GAAK5iD,EAAM7rC,EACxC,CAHAzQ,EAAQ+E,OA9BR,SAAgBZ,EAAW27C,EAASj7C,GAAyB,IACrDohD,EADuC9rB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGi9F,GAElD,IACI94C,EAAMo1C,EAAmBl3F,GACzB27C,EAAUP,EAAYO,EAC1B,CACA,MAAO/8B,GACH,OAAO,CACX,CACA,MAAM,EAAEhS,EAAC,EAAEH,GAAMq1C,EACjB,GAAI9rB,EAAK6kE,QAAU/4C,EAAIxF,WACnB,OAAO,EACX,MAAM/uB,EAAI4pE,EAAax7C,GACvB,IAAIltC,EACJ,IACIA,EAAIurF,EAAmBt5F,EAC3B,CACA,MAAOke,GACH,OAAO,CACX,CACA,MAAM,EAAEtS,GAAM6rC,EACR6iD,EAAOr2F,EAAO8H,EAAGH,GACjB4vC,EAAK9kC,EAAImW,EAAIytE,EAAM1uF,GACnB6vC,EAAK/kC,EAAIxK,EAAIouF,EAAM1uF,GACnByvC,EAAIzC,EAAMvtC,KAAKswC,qBAAqB5tC,EAAGytC,EAAIC,GACjD,QAAKJ,GAEK3kC,EAAI2kC,EAAEhvC,EAAGT,KACNM,CACjB,EAKA,MAAMquF,GACFjxF,WAAAA,CAAY4C,EAAGH,GACX1Q,KAAK6Q,EAAIA,EACT7Q,KAAK0Q,EAAIA,EACT1Q,KAAKm/C,gBACT,CACA,cAAOc,CAAQn5C,GACX,MAAMq3C,EAAQkB,EAAYv4C,GAC1B,GAAqB,KAAjBq3C,EAAMt8C,OACN,MAAM,IAAIo9B,UAAU,oDAAoDkf,EAAMt8C,UAClF,MAAMgP,EAAIipF,EAAc37C,EAAMvtB,SAAS,EAAG,KACpClgB,EAAIopF,EAAc37C,EAAMvtB,SAAS,GAAI,KAC3C,OAAO,IAAIsuE,GAAiBruF,EAAGH,EACnC,CACAyuC,cAAAA,GACI,MAAM,EAAEtuC,EAAC,EAAEH,GAAM1Q,KACjB,IAAK+5F,EAAoBlpF,KAAO6sC,EAAmBhtC,GAC/C,MAAM,IAAI7M,MAAM,oBACxB,CACAsnD,KAAAA,GACI,OAAOkwC,EAAYr7F,KAAK6Q,GAAKwqF,EAAYr7F,KAAK0Q,EAClD,CACAoyC,UAAAA,GACI,OAAOpC,EAAW1gD,KAAKmrD,QAC3B,EAKJ,MAAMg0C,GACFlxF,WAAAA,CAAYggB,EAAS+yB,GAAmD,IAAvCo+C,EAAOx9F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG9B,EAAQu8B,MAAM/xB,cACrD,GAAe,MAAX2jB,EACA,MAAM,IAAIgR,UAAU,sCAAsChR,MAC9DjuB,KAAKsY,EAAI+mC,EAAYpxB,GACrB,MAAM,EAAEjd,EAAC,OAAE25C,GAAW3qD,KAAKq/F,UAAUpE,EAAoBj6C,IAIzD,GAHAhhD,KAAKynD,GAAKz2C,EACVhR,KAAKuV,EAAIo1C,EACT3qD,KAAKqX,KAAOgoC,EAAY+/C,GACC,KAArBp/F,KAAKqX,KAAKxV,OACV,MAAM,IAAIo9B,UAAU,4CAC5B,CACAogE,SAAAA,CAAUC,GACN,MAAM1hD,EAAQL,EAAMsF,eAAey8C,GAC7B30C,EAAS/M,EAAMK,WAAaqhD,EAAOljD,EAAM7rC,EAAI+uF,EACnD,MAAO,CAAE1hD,QAAO+M,SAAQ35C,EAAG4sC,EAAM29C,SACrC,CACAgE,SAAAA,CAAUhqF,EAAGiqF,GACT,OAAO5C,EAASrnF,EAAIukF,EAAc0F,GACtC,CACAC,aAAAA,CAAcC,GACV,MAAMC,EAAKtkF,EAAIy+E,EAAc4F,GAAMtjD,EAAM7rC,GACzC,GAAIovF,IAAO99C,EACP,MAAM,IAAIh+C,MAAM,iDACpB,MAAQ+5C,MAAOoC,EAAGhvC,EAAG87B,EAAI6d,OAAQr5C,GAAMtR,KAAKq/F,UAAUM,GACtD,MAAO,CAAE3/C,IAAGlT,KAAIx7B,IACpB,CACAitF,WAAAA,CAAYv+C,EAAG1uC,EAAGC,EAAGgE,GACjB,OAAO,IAAI2pF,GAAiBl/C,EAAEhvC,EAAGqK,EAAI/J,EAAIC,EAAIgE,EAAG6mC,EAAM7rC,IAAIuyC,YAC9D,CACAjgC,KAAAA,GACI,MAAM,IAAIhf,MAAM,mCACpB,CACA,UAAM+7F,GACF,MAAM,EAAEtnF,EAAC,EAAE/C,EAAC,GAAEkyC,EAAE,KAAEpwC,GAASrX,KACrB8kD,EAAMhlD,EAAQu8B,MAAMskC,WACpBpkD,EAAIvc,KAAKu/F,UAAUhqF,QAASuvC,EAAI+6C,GAAKC,IAAKzoF,KAC1C,EAAE2oC,EAAC,GAAElT,EAAE,EAAEx7B,GAAMtR,KAAKy/F,oBAAoB36C,EAAI+6C,GAAK35F,MAAOqW,EAAGkrC,EAAInvC,IAC/D/G,EAAIwtF,SAA+Bj6C,EAAI+6C,GAAKE,UAAWjzD,EAAI2a,EAAInvC,IAC/DytC,EAAM/lD,KAAKu+F,YAAYv+C,EAAG1uC,EAAGC,EAAGgE,GAGtC,aAFYyqF,GAAcj6C,EAAKztC,EAAGmvC,IAC9BznD,KAAK6iB,QACFkjC,CACX,CACAk6C,QAAAA,GACI,MAAM,EAAE3nF,EAAC,EAAE/C,EAAC,GAAEkyC,EAAE,KAAEpwC,GAASrX,KACrB8kD,EAAMhlD,EAAQu8B,MAAM6jE,eACpB3jF,EAAIvc,KAAKu/F,UAAUhqF,EAAGuvC,EAAI+6C,GAAKC,IAAKzoF,KACpC,EAAE2oC,EAAC,GAAElT,EAAE,EAAEx7B,GAAMtR,KAAKy/F,cAAc36C,EAAI+6C,GAAK35F,MAAOqW,EAAGkrC,EAAInvC,IACzD/G,EAAIwtF,GAAyBj6C,EAAI+6C,GAAKE,UAAWjzD,EAAI2a,EAAInvC,IACzDytC,EAAM/lD,KAAKu+F,YAAYv+C,EAAG1uC,EAAGC,EAAGgE,GAGtC,OAFK4qF,GAAkBp6C,EAAKztC,EAAGmvC,IAC3BznD,KAAK6iB,QACFkjC,CACX,EAQJ,SAASq6C,GAAkBn8F,EAAWgqB,EAAStpB,GAC3C,MAAMk0E,EAAM50E,aAAqBi7F,GAC3Bn5C,EAAM8yB,EAAM50E,EAAYi7F,GAAiBj/C,QAAQh8C,GAGvD,OAFI40E,GACA9yB,EAAI5G,iBACD,IACA4G,EACHztC,EAAG+mC,EAAYpxB,GACfvb,EAAGurF,EAAmBt5F,GAE9B,CACA,SAAS07F,GAAsBxvF,EAAG6B,EAAGhC,EAAGa,GACpC,MAAMyuC,EAAIzC,EAAMvtC,KAAKswC,qBAAqB5tC,EAAGuoF,EAAoBvqF,GAAI2K,GAAK9J,EAAG6qC,EAAM7rC,IACnF,SAAKyvC,IAAMA,EAAE/B,YAAc+B,EAAEhvC,IAAMH,EAGvC,CACAxB,eAAe2wF,GAAc/7F,EAAWgqB,EAAStpB,GAC7C,IACI,MAAM,EAAEkM,EAAC,EAAEH,EAAC,EAAE4H,EAAC,EAAE5F,GAAM0tF,GAAkBn8F,EAAWgqB,EAAStpB,GACvD4M,EAAIwtF,SAA+Bj/F,EAAQu8B,MAAMskC,WAAWk/B,GAAKE,UAAWnD,EAAS/rF,GAAI6B,EAAE6oF,SAAUjjF,IAC3G,OAAO+nF,GAAsBxvF,EAAG6B,EAAGhC,EAAGa,EAC1C,CACA,MAAOsR,GACH,OAAO,CACX,CACJ,CACA,SAASs9E,GAAkBl8F,EAAWgqB,EAAStpB,GAC3C,IACI,MAAM,EAAEkM,EAAC,EAAEH,EAAC,EAAE4H,EAAC,EAAE5F,GAAM0tF,GAAkBn8F,EAAWgqB,EAAStpB,GACvD4M,EAAIwtF,GAAyBj/F,EAAQu8B,MAAM6jE,eAAeL,GAAKE,UAAWnD,EAAS/rF,GAAI6B,EAAE6oF,SAAUjjF,IACzG,OAAO+nF,GAAsBxvF,EAAG6B,EAAGhC,EAAGa,EAC1C,CACA,MAAOsR,GACH,GAAIA,aAAiB60E,EACjB,MAAM70E,EACV,OAAO,CACX,CACJ,CACA/iB,EAAQ+/D,QAAU,CACd5gB,UAAWigD,GACXt8C,aA1GJ,SAA6B5B,GACzB,OAAOzD,EAAMsF,eAAe7B,GAAYu6C,QAC5C,EAyGIr3F,KAhDJmL,eAA2B5O,EAAKyiD,EAASk8C,GACrC,OAAO,IAAID,GAAyB1+F,EAAKyiD,EAASk8C,GAASQ,MAC/D,EA+CI/6F,OAAQm7F,GACR9I,SA/CJ,SAAyBz2F,EAAKyiD,EAASk8C,GACnC,OAAO,IAAID,GAAyB1+F,EAAKyiD,EAASk8C,GAASa,UAC/D,EA8CIK,WAAYH,IAEhB5iD,EAAMvtC,KAAKsxC,eAAe,GAC1B,MAAM7qC,GAAS,CACX+0D,KAAM2rB,EACNoJ,IAAqB,kBAATt9D,MAAqB,WAAYA,KAAOA,KAAKxsB,YAAS3U,GAEhE+9F,GAAO,CACTE,UAAW,oBACXD,IAAK,cACL55F,MAAO,iBAELs6F,GAAuB,CAAC,EAC9B1gG,EAAQu8B,MAAQ,CACZuiB,aACA8B,aACAr2C,cACAgR,MACAzS,SACAm4C,iBAAAA,CAAkBC,GACd,IAEI,OADAi6C,EAAoBj6C,IACb,CACX,CACA,MAAOn+B,GACH,OAAO,CACX,CACJ,EACA49E,iBAAkB7D,EAClB8D,qBAAsBzF,EACtB0F,iBAAmB/7F,IAGf,IAFAA,EAAOy6C,EAAYz6C,IAEV/C,OADM21F,IACa5yF,EAAK/C,OAAS,KACtC,MAAM,IAAIgC,MAAM,uDAGpB,OAAO+4F,EADKvhF,EAAIy+E,EAAcl1F,GAAOw3C,EAAM7rC,EAAIguC,GAAOA,EAClC,EAExBj0C,YAAa,WAAsB,IAArBs2F,EAAWh/F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACxB,GAAI6U,GAAO8pF,IACP,OAAO9pF,GAAO8pF,IAAI7pF,gBAAgB,IAAI4Z,WAAWswE,IAEhD,GAAInqF,GAAO+0D,KAAM,CAClB,MAAM,YAAElhE,GAAgBmM,GAAO+0D,KAC/B,OAAOl7C,WAAW9rB,KAAK8F,EAAYs2F,GACvC,CAEI,MAAM,IAAI/8F,MAAM,oDAExB,EACAo9C,iBAAkBA,IAAMnhD,EAAQu8B,MAAMskE,iBAAiB7gG,EAAQu8B,MAAM/xB,YAAYktF,KACjFp2C,UAAAA,GAA+C,IAApCC,EAAUz/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGg8C,EAAKh8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG27C,EAAMvtC,KACrC,MAAM6wF,EAASjjD,IAAUL,EAAMvtC,KAAO4tC,EAAQ,IAAIL,EAAMK,EAAM5sC,EAAG4sC,EAAM3sC,GAGvE,OAFA4vF,EAAOv/C,eAAeD,GACtBw/C,EAAOzoF,SAAS8tC,GACT26C,CACX,EACArgC,OAAQnxD,iBAAuB,QAAA6Z,EAAAtnB,UAAAC,OAAbotE,EAAQ,IAAA9kE,MAAA+e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAR8lD,EAAQ9lD,GAAAvnB,UAAAunB,GACtB,GAAI1S,GAAO8pF,IAAK,CACZ,MAAMlwE,QAAe5Z,GAAO8pF,IAAIO,OAAO98F,OAAO,UAAWqG,KAAe4kE,IACxE,OAAO,IAAI3+C,WAAWD,EAC1B,CACK,GAAI5Z,GAAO+0D,KAAM,CAClB,MAAM,WAAEnoE,GAAeoT,GAAO+0D,KACxB5mE,EAAOvB,EAAW,UAExB,OADA4rE,EAASlgE,SAASuJ,GAAM1T,EAAKb,OAAOuU,KAC7BgY,WAAW9rB,KAAKI,EAAKZ,SAChC,CAEI,MAAM,IAAIH,MAAM,+CAExB,EACA05F,WAAYluF,eAAOrF,GAAqB,QAAA+2F,EAAAn/F,UAAAC,OAAbotE,EAAQ,IAAA9kE,MAAA42F,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAR/xB,EAAQ+xB,EAAA,GAAAp/F,UAAAo/F,GAC/B,GAAIvqF,GAAO8pF,IAAK,CACZ,MAAMU,QAAaxqF,GAAO8pF,IAAIO,OAAOI,UAAU,MAAOl3F,EAAK,CAAE4H,KAAM,OAAQhN,KAAM,CAAEgN,KAAM,aAAe,EAAO,CAAC,SAC1Gqc,EAAU5jB,KAAe4kE,GACzB5+C,QAAe5Z,GAAO8pF,IAAIO,OAAO58F,KAAK,OAAQ+8F,EAAMhzE,GAC1D,OAAO,IAAIqC,WAAWD,EAC1B,CACK,GAAI5Z,GAAO+0D,KAAM,CAClB,MAAM,WAAE21B,GAAe1qF,GAAO+0D,KACxB5mE,EAAOu8F,EAAW,SAAUn3F,GAElC,OADAilE,EAASlgE,SAASuJ,GAAM1T,EAAKb,OAAOuU,KAC7BgY,WAAW9rB,KAAKI,EAAKZ,SAChC,CAEI,MAAM,IAAIH,MAAM,oDAExB,EACAu9F,gBAAYt/F,EACZu/F,oBAAgBv/F,EAChB6+D,WAAYtxD,eAAOy1C,GACf,IAAIw8C,EAAOd,GAAqB17C,GAChC,QAAahjD,IAATw/F,EAAoB,CACpB,MAAMC,QAAazhG,EAAQu8B,MAAMmkC,OAAOlwC,WAAW9rB,KAAKsgD,GAAM1zC,GAAMA,EAAEN,WAAW,MACjFwwF,EAAOj3F,EAAYk3F,EAAMA,GACzBf,GAAqB17C,GAAOw8C,CAChC,CAAC,QAAAE,EAAA5/F,UAAAC,OANsBotE,EAAQ,IAAA9kE,MAAAq3F,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAARxyB,EAAQwyB,EAAA,GAAA7/F,UAAA6/F,GAO/B,OAAO3hG,EAAQu8B,MAAMmkC,OAAO8gC,KAASryB,EACzC,EACAixB,eAAgB,SAACp7C,GACb,GAA2B,oBAAhBo4C,EACP,MAAM,IAAIxF,EAAS,+CACvB,IAAI4J,EAAOd,GAAqB17C,GAChC,QAAahjD,IAATw/F,EAAoB,CACpB,MAAMC,EAAOrE,EAAY5sE,WAAW9rB,KAAKsgD,GAAM1zC,GAAMA,EAAEN,WAAW,MAClEwwF,EAAOj3F,EAAYk3F,EAAMA,GACzBf,GAAqB17C,GAAOw8C,CAChC,CAAC,QAAAI,EAAA9/F,UAAAC,OARoBotE,EAAQ,IAAA9kE,MAAAu3F,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAR1yB,EAAQ0yB,EAAA,GAAA//F,UAAA+/F,GAS7B,OAAOzE,EAAYoE,KAASryB,EAChC,EACA2yB,eAAgBhK,GAEpB50F,OAAO6+F,iBAAiB/hG,EAAQu8B,MAAO,CACnC+kE,WAAY,CACR3rC,cAAc,EACd7pD,IAAGA,IACQsxF,EAEX5mF,GAAAA,CAAI3H,GACKuuF,IACDA,EAAcvuF,EACtB,GAEJ0yF,eAAgB,CACZ5rC,cAAc,EACd7pD,IAAGA,IACQuxF,EAEX7mF,GAAAA,CAAI3H,GACKwuF,IACDA,EAAkBxuF,EAC1B,mCC1sCR3L,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ+pF,0BAAuB,EAC/B,MAAM5kF,EAASnE,EAAQ,OACjByC,EAAWzC,EAAQ,OACnBghG,EAAqBhhG,EAAQ,MAC7BihG,EAAyBjhG,EAAQ,OACjCkhG,EAAmBlhG,EAAQ,OAC3BoE,EAAapE,EAAQ,OACrBioF,EAAiBjoF,EAAQ,OACzBqoF,EAAqBroF,EAAQ,OAC7BqE,EAAUrE,EAAQ,OAClBugE,EAA0BvgE,EAAQ,OAClCmhG,EAA0BnhG,EAAQ,OAClCohG,EAAoBphG,EAAQ,OAC5BqhG,EAAqBrhG,EAAQ,OAC7BshG,EAAuBthG,EAAQ,OAC/BuhG,EAAkBvhG,EAAQ,MAC1BwhG,EAAsBxhG,EAAQ,OAC9BuC,EAAavC,EAAQ,OAIrByhG,EAAuB,CACzB,CAACr9F,EAAWy0E,UAAU8P,gBAAgBE,YAAa,qEACnD,CAACzkF,EAAWy0E,UAAU8P,gBAAgBC,SAAU,sEAE9C8Y,EAAwB,CAC1B,CAACt9F,EAAWy0E,UAAU8P,gBAAgBE,YAAa,CAC/C,CAAC1kF,EAAO2C,cAAc66F,MAAO,qEAC7B,CAACx9F,EAAO2C,cAAc86F,YAAa,qEACnC,CAACz9F,EAAO2C,cAAc+6F,OAAQ,qEAC9B,CAAC19F,EAAO2C,cAAcC,cAAe,sEAEzC,CAAC3C,EAAWy0E,UAAU8P,gBAAgBC,SAAU,CAC5C,CAACzkF,EAAO2C,cAAc66F,MAAO,qEAC7B,CAACx9F,EAAO2C,cAAc86F,YAAa,qEACnC,CAACz9F,EAAO2C,cAAc+6F,OAAQ,qEAC9B,CAAC19F,EAAO2C,cAAcC,cAAe,uEAGvC+6F,EAAyB,CAC3B,CAAC19F,EAAWy0E,UAAU8P,gBAAgBE,YAAa,CAC/CkZ,SAAU,sEAEd,CAAC39F,EAAWy0E,UAAU8P,gBAAgBC,SAAU,CAC5CmZ,SAAU,uEAGlB,MAAMhZ,UAA6BkY,EAAuBe,qBACtD70F,WAAAA,CAAYsU,EAASyQ,EAAU+qD,GAA0J,IAAhJglB,EAAenhG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG2gG,EAAqBhgF,GAAUgH,EAAW3nB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAEkhG,EAAkBphG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAImnF,EAAeS,aAAax2D,GAAWiwE,EAAgBrhG,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACnLsE,MAAMmc,EAASyQ,EAAU+vE,EAAiBjB,EAAmBjjF,iBAAkB0K,EAAay5E,GAG5FhjG,KAAKuiB,QAAU,WAGfviB,KAAKkjG,uBAAyB,IAC9BljG,KAAKmjG,uBAAyB,IAC9BnjG,KAAKojG,cAAgB,IACrBpjG,KAAKqjG,iBAAmB,IACxBrjG,KAAKsjG,kBAAoB,IACzBtjG,KAAKujG,gBAAkB,GAGvBvjG,KAAKwjG,uBAAyB,CAAC,EAC/BxjG,KAAKyjG,wBAA0B,CAAC,EAChCzjG,KAAK0jG,wBAA0B,CAAC,EAChC1jG,KAAK2jG,KAAO,IAAIxB,EAAmByB,iBAAiB5jG,MACpDA,KAAK6jG,OAAS,IAAIzB,EAAqB0B,mBAAmB9jG,MAC1DA,KAAK+jG,MAAQ,IAAIzB,EAAoB0B,kBAAkBhkG,MACvDA,KAAKikG,QAAU,IAAI/B,EAAkBgC,gBAAgBlkG,MACrDA,KAAK+9E,SAAWA,EAChBklB,IAAqBA,EAAmB,CAAC,GACzCA,EAAiB72F,SAAW62F,EAAiB72F,OAAS,CAAC,GACvD62F,EAAiB72F,OAAS,IAAKw2F,EAAuBrgF,MAAa0gF,EAAiB72F,QACpF62F,EAAiB52F,QAAU42F,EAAiB52F,MAAQ,CAAC,GACrD42F,EAAiB52F,MAAQ,IAAKm2F,EAAsBjgF,MAAa0gF,EAAiB52F,OAClFg2F,EAAgB3vC,kBAAkB3jD,SAAQo1F,IACtC,MAAMC,EAAU,IAAID,EAAYlB,EAAiB52F,MAAM83F,EAAYx8F,OACnE3H,KAAKwjG,uBAAuBY,EAAQ19F,SAAW09F,EAC/CpkG,KAAKyjG,wBAAwBU,EAAYx8F,MAAQy8F,CAAO,IAE5DpkG,KAAKqkG,sBAAwB,IAAIhjC,EAAwBwB,sBAAsBogC,EAAiB72F,OAAOy2F,UACvG7iG,KAAK0jG,wBAAwB1jG,KAAKqkG,sBAAsB39F,SAAW1G,KAAKqkG,qBAC5E,CACA,WAAMn1F,GACN,CAGA8T,oCAAAA,GACI,OAAOhjB,KAAK2jG,KAAK3gF,sCACrB,CACAshF,gBAAAA,CAAiB5gG,EAAQ4C,EAAUi+F,EAAsBC,EAAqBh+F,GAC1E,OAAOxG,KAAK2jG,KAAKc,uBAAuB/gG,EAAQ4C,EAAUi+F,EAC9D,CACAjhF,wBAAAA,CAAyBhd,EAAQ6Y,EAAkC3Y,EAASk+F,GAAgB,IAAzD,QAAEl8E,EAAO,OAAEjV,EAAM,UAAEtP,GAAWkb,EAC7D,OAAOnf,KAAK2jG,KAAKgB,iBAAiBr+F,EAAUkiB,EAASjV,EAAQtP,EAAWygG,EAC5E,CACAlhF,0BAAAA,CAA2Bld,EAAQs+F,EAAkCF,GAAgB,IAAhD,QAAEl8E,EAAO,OAAEjV,EAAM,UAAEtP,GAAW2gG,EAC/D,OAAO5kG,KAAK2jG,KAAKkB,mBAAmBr8E,EACxC,CACAs8E,0BAAAA,CAA2Bx+F,EAAQy+F,GAAkC,IAAhC,QAAEv8E,EAAO,OAAEjV,EAAM,UAAEtP,GAAW8gG,EAC/D,OAAO/kG,KAAK2jG,KAAKqB,mBAAmBx8E,EACxC,CACAy8E,kBAAAA,CAAmBvhG,EAAQ4C,EAAUi+F,GACjC,OAAOvkG,KAAK6jG,OAAOqB,eAAexhG,EAAQ4C,EAAUi+F,EACxD,CACAz1C,0BAAAA,CAA2BxoD,EAAQ6+F,GAAkC,IAAhC,QAAE38E,EAAO,OAAEjV,EAAM,UAAEtP,GAAWkhG,EAC/D,OAAOnlG,KAAK6jG,OAAOc,iBAAiBr+F,EAAUkiB,EAASjV,EAAQtP,EACnE,CACAR,gBAAAA,CAAiBC,EAAQC,GACrB,OAAO3D,KAAKolG,WAAW3hG,iBAAiBC,EAAQC,EACpD,CACAe,oBAAAA,CAAqBf,EAAMM,EAAWU,GAClC,OAAO3E,KAAKolG,WAAW1gG,qBAAqBf,EAAMM,EAAWU,EACjE,CASA,iBAAM4yC,CAAY7zC,EAAQC,GACtB,QAAKA,EAAKugE,UAAUxgE,YAEV1D,KAAKgvD,UAAUtrD,EAAQC,UAEpB3D,KAAKqlG,WAAW1hG,GACjC,CAMA,gBAAM0hG,CAAW/+F,GACb,MAAM3C,QAAa3D,KAAKwhB,SAAS8jF,eAAe,KAAOh/F,EAAS0I,iBAChE,OAvHuB,IAuHhBmgB,OAAOxrB,EAAKjD,MACvB,CAQAsuD,SAAAA,CAAUtrD,EAAQC,GACd,IAAI4hG,EAAmB7/F,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,MAKtD,OAJInpB,EAAKugE,UAAUxgE,KACf6hG,GAAsC7/F,OAAO1F,KAAKqjG,mBAClD1/F,EAAKwgE,UAAUzgE,KACf6hG,GAAsC7/F,OAAO1F,KAAKsjG,oBAC/Cj/F,QAAQC,QAAQX,EAAKi/D,YAAc2iC,EAC9C,CAQA,yBAAMC,CAAoB9hG,EAAQC,GAE9B,QAAKA,EAAKwgE,UAAUzgE,aAER1D,KAAKgvD,UAAUtrD,EAAQC,UAEtB3D,KAAKqlG,WAAW1hG,GACjC,CACA8hG,cAAAA,CAAe5gF,EAAMuG,GACjB,OAAO,EAAIjmB,EAAQugG,sBAAsB1lG,KAAKyjG,wBAAwBx+F,EAAO2C,cAAc86F,YAAYiD,cAAc,CACjH9gF,OACAuG,gBACA2yD,SAAU/9E,KAAK+9E,WACf,GACR,CASA6nB,iBAAAA,CAAkB3oE,EAAcz7B,EAAQ4pB,EAAellB,GACnD,IAAIyoB,EAkBJ,OAhBIA,EADS,MAATzoB,GAA2B,KAAVA,EACRlG,KAAKyjG,wBAAwBx+F,EAAO2C,cAAc+6F,OAAOgD,cAAc,CAC5EtlG,OAAQ48B,EACRz7B,SACA4pB,gBACA2yD,SAAU/9E,KAAK+9E,WAIV/9E,KAAKyjG,wBAAwBx+F,EAAO2C,cAAcC,cAAc89F,cAAc,CACnFtlG,OAAQ48B,EACRz7B,SACA0E,QACAklB,gBACA2yD,SAAU/9E,KAAK+9E,YAGhB,EAAI54E,EAAQugG,sBAAsB/2E,EAAQ,GACrD,CAMAk3E,cAAAA,CAAe16E,GACX,OAAO,EAAIhmB,EAAQugG,sBAAsB1lG,KAAKyjG,wBAAwBx+F,EAAO2C,cAAc66F,MAAMkD,cAAcx6E,GAAc,GACjI,CACA04C,YAAAA,CAAa5mC,EAAcz7B,EAAQ4pB,EAAellB,GACjC,MAATA,IACAA,EAAQ,IACZ,MAAMmtF,EAAUhwF,EAAW,UAAUU,OAAOR,EAASgB,OAAO4T,OAAO,CAC/DlT,EAAOgqB,kBAAkBlqB,SAASvD,EAAQ,KAAM,GAChDy7B,KACAj5B,SACJ,OAAOT,EAASgB,OAAO4T,OAAO,CAC1Bk7E,EACApuF,EAAOgqB,kBAAkBlqB,SAASmB,EAAO,KAAM,GAC/CjB,EAAOgqB,kBAAkBlqB,SAASW,OAAO0lB,GAAgB,KAAM,IAEvE,CAUA,qBAAM8kC,CAAgBxsD,EAAQC,GAC1B,MAAM+K,EAAa/K,EAAKqL,gBAClB82F,QAAkB9lG,KAAKwhB,SAAS8jF,eAAe,KAAO52F,GAE5D,OADcygB,OAAO22E,EAAUplG,QAE3B,KA9NmB,EA+Nf,OAAIiD,EAAKwgE,UAAUzgE,UAAiB1D,KAAKgvD,UAAUtrD,EAAQC,GAChDsB,EAAO6qD,iBAAiBhD,WAC5B7nD,EAAO6qD,iBAAiBlD,SACnC,KAjOiB,EAkOb,OAAO3nD,EAAO6qD,iBAAiBlB,KACnC,QACI,aAAU5uD,KAAKgvD,UAAUtrD,EAAQC,GACtBsB,EAAO6qD,iBAAiBf,QAC5B9pD,EAAO6qD,iBAAiBC,aAE3C,CAMA,0BAAMg2C,CAAqB56E,GAEvB,OAAOlmB,EAAO6qD,iBAAiBC,YACnC,CAOA,qBAAMi2C,CAAgBC,GAElB,OAAO,IACX,CAGAC,cAAAA,CAAev+F,EAAM26D,EAASV,EAASz5D,EAAO3G,EAAQ2pB,EAAatlB,EAAUuqD,EAAQoR,EAAOD,EAAQW,EAAiBC,GAAsE,IAAvDgkC,EAAYvkG,UAAAC,OAAA,SAAAC,IAAAF,UAAA,IAAAA,UAAA,IAAG5B,KAAKomG,OAAOv+E,2BAC3J,OAAOxjB,QAAQC,QAAQ,IAAI6kF,EAAmB/nB,iBAAiBkB,EAASV,EAASz5D,EAAOnI,KAAKqkG,sBAAsB39F,QAAS1G,KAAKyjG,0BAA0B97F,IAAOjB,QAAS66D,EAAQC,EAAOA,EAC1L37D,EAAU,KAAOslB,GAAa,EAAIhmB,EAAQgmD,OAAOiF,GAAS5uD,EAAQ2kG,EAAcjkC,EAAiBC,EAAex6D,EAAM,KAAM,IAChI,CAGA,gBAAM6wC,CAAW90C,EAAQ2iG,EAAcC,GACnC,OAAIA,QACatmG,KAAKumG,uBAAuB7iG,EAAQ2iG,SAExCrmG,KAAKomG,OAAOI,gBAAgB9iG,EAAQ2iG,EACrD,CACAI,mBAAAA,CAAoB//F,EAASyB,GACzB,OAAOnI,KAAKikG,QAAQwC,oBAAoB//F,EAASyB,EACrD,CACAu+F,yBAAAA,CAA0BhgG,EAASyB,GAC/B,OAAOnI,KAAKikG,QAAQyC,0BAA0BhgG,EAASyB,EAC3D,CACAo+F,sBAAAA,CAAuB7/F,EAASyB,GAC5B,OAAOnI,KAAKikG,QAAQsC,uBAAuB7/F,EAASyB,EACxD,CACAw+F,cAAAA,CAAejgG,GACX,OAAO1G,KAAK4mG,UAAUD,eAAejgG,EACzC,CACAmhB,wBAAAA,GACI,OAAO7nB,KAAKomG,OAAOv+E,0BACvB,CAGA,wBAAMg/E,CAAmBnjG,EAAQ4C,EAAU0tD,EAAQ8yC,EAAaC,EAASvgG,EAASwgG,GAC9E,OAAOhnG,KAAK+jG,MAAM8C,mBAAuC,kBAAZnjG,EAAuBA,EAASA,EAAOyzC,aAAc7wC,EAAU0tD,EAAQ8yC,EAAatgG,EACrI,CACA,wBAAMygG,CAAmBvjG,EAAQ4C,EAAUO,EAAI4pF,EAAuBxpF,EAAMigG,EAAgBC,EAAcJ,EAASvgG,GAC/G,OAAOxG,KAAK+jG,MAAMkD,mBAAuC,kBAAZvjG,EAAuBA,EAASA,EAAOyzC,aAAc7wC,EAAUO,EAAI4pF,EAAuBxpF,EAAMigG,EAAgBC,EAAc3gG,EAC/K,CACAipD,SAAAA,CAAU/rD,EAAQ4C,EAAU+vB,EAAO0wE,EAASvgG,GACxC,OAAOxG,KAAK6jG,OAAOp0C,UAAU/rD,EAAQ4C,EAAU+vB,EAAO7vB,EAC1D,CACAkpD,0BAAAA,CAA2BhsD,EAAQ4C,EAAQ8gG,EAAkC/wE,EAAO0wE,EAASvgG,GAAS,IAAzD,QAAEgiB,EAAO,OAAEjV,EAAM,UAAEtP,GAAWmjG,EACvE,OAAOpnG,KAAK6jG,OAAOn0C,2BAA2BhsD,EAAQ4C,EAAUkiB,EAASjV,EAAQtP,EAAWoyB,EAAO7vB,EACvG,CACAwyC,OAAAA,CAAQ1yC,EAAQ+gG,EAAkCn7F,EAAY1F,GAAS,IAArD,QAAEgiB,EAAO,OAAEjV,EAAM,UAAEtP,GAAWojG,EAC5C,OAAOrnG,KAAK2jG,KAAK3qD,QAAQ1yC,EAAUkiB,EAASjV,EAAQtP,EAAWiI,EAAY1F,EAC/E,CACA8gG,WAAAA,CAAY5jG,EAAQyE,EAAO3G,EAAQgF,GAC/B,OAAOxG,KAAKikG,QAAQqD,YAAY5jG,EAAQyE,EAAO3G,EAAQgF,EAC3D,CACA+gG,UAAAA,CAAW7jG,EAAQyE,EAAO3G,EAAQgF,GAC9B,OAAOxG,KAAKikG,QAAQsD,WAAW7jG,EAAQyE,EAAO3G,EAAQgF,EAC1D,CACAghG,WAAAA,CAAY9jG,EAAQyE,EAAO3G,EAAQimG,EAAYjhG,GAC3C,OAAOxG,KAAKomG,OAAOoB,YAAY9jG,EAAQyE,EAAO3G,EAAQimG,EAAYjhG,EACtE,CAGA,qBAAMkhG,CAAgBhkG,EAAQ4C,EAAU0tD,EAAQ8yC,EAAaC,EAASY,GAClE,MAAMh5E,QAAe3uB,KAAK+jG,MAAM8C,mBAAmBnjG,EAAOyzC,aAAc7wC,EAAU0tD,EAAQ8yC,EAAaa,GAAWnhG,UAC3GvC,SAAmBjE,KAAK4nG,aAAa35C,eAAevqD,EAAQirB,EAAQg5E,GAAWE,oBAAqBF,GAAWv/F,aACtH,OAAOnE,CACX,CACA,qBAAM6jG,CAAgBpkG,EAAQ4C,EAAUO,EAAI4pF,EAAuBxpF,EAAMigG,EAAgBC,EAAcJ,EAASY,GAC5G,MAAMjqB,QAAY19E,KAAK+jG,MAAMkD,mBAAmBvjG,EAAOyzC,aAAc7wC,EAAUO,EAAI4pF,EAAuBxpF,EAAMigG,EAAgBC,EAAcQ,GAAWnhG,SACzJ,GAAY,OAARk3E,EACA,MAAM,IAAI75E,MAAM,uDAEpB,MAAOI,SAAmBjE,KAAK4nG,aAAa35C,eAAevqD,EAAQg6E,EAAKiqB,GAAWE,oBAAqBF,GAAWv/F,aACnH,OAAOnE,CACX,CACA,YAAMmI,CAAO1I,EAAQ4C,EAAU+vB,EAAO0wE,EAASY,GAC3C,IAAIh5E,QAAe3uB,KAAKyvD,UAAU/rD,EAAOyzC,aAAc7wC,EAAU+vB,EAAO0wE,EAASY,GAAWnhG,SAC5F,MAAOvC,SAAmBjE,KAAK4nG,aAAa35C,eAAevqD,EAAQirB,EAAQg5E,GAAWE,oBAAqBF,GAAWv/F,aACtH,OAAOnE,CACX,CACA,6BAAM8jG,CAAwBrkG,EAAQ4C,EAAUrC,EAAWoyB,EAAO0wE,EAASY,GACvE,IAAIh5E,QAAe3uB,KAAK0vD,2BAA2BhsD,EAAOyzC,aAAc7wC,EAAUrC,EAAWoyB,EAAO0wE,EAASY,GAAWnhG,SACxH,MAAOwhG,SAAqBhoG,KAAK4nG,aAAa35C,eAAevqD,EAAQirB,EAAQg5E,GAAWE,oBAAqBF,GAAWv/F,aACxH,OAAO4/F,CACX,CACA,UAAM74F,CAAKzL,EAAQ4C,EAAUrC,EAAWiI,EAAYy7F,GAChD,GAAIrhG,EAASw8D,WACT,IAAKx8D,EAAS69D,UAAUzgE,EAAOyzC,cAC3B,MAAM,IAAItzC,MAAM,iCAGpB,IAAKyC,EAAS49D,UAAUxgE,EAAOyzC,cAC3B,MAAM,IAAItzC,MAAM,4BAExB,IAAI8qB,QAAe3uB,KAAKg5C,QAAQ1yC,EAAUrC,EAAWiI,EAAYy7F,GAAWnhG,SAC5E,MAAOwhG,SAAqBhoG,KAAK4nG,aAAa35C,eAAevqD,EAAQirB,EAAQg5E,GAAWE,oBAAqBF,GAAWv/F,aACxH,OAAO4/F,CACX,CACA,cAAMC,CAASvkG,EAAQyE,EAAO3G,EAAQmmG,GAClC,MAAMjqB,QAAY19E,KAAKikG,QAAQqD,YAAY5jG,EAAOyzC,aAAchvC,EAAO3G,EAAQmmG,GAAWnhG,UACnFqe,SAAc7kB,KAAK4nG,aAAa35C,eAAevqD,EAAQg6E,EAAKiqB,GAAWE,oBAAqBF,GAAWv/F,aAAa,GAC3H,OAAOyc,CACX,CACA,aAAMqjF,CAAQxkG,EAAQyE,EAAO3G,EAAQmmG,GACjC,MAAMjqB,QAAY19E,KAAKikG,QAAQsD,WAAW7jG,EAAOyzC,aAAchvC,EAAO3G,EAAQmmG,GAAWnhG,UAClFqe,SAAc7kB,KAAK4nG,aAAa35C,eAAevqD,EAAQg6E,EAAKiqB,GAAWE,oBAAqBF,GAAWv/F,aAAa,GAC3H,OAAOyc,CACX,CACA,cAAMg2B,CAASn3C,EAAQyE,EAAO3G,EAAQimG,EAAYE,GAC9C,MAAMjqB,QAAY19E,KAAKomG,OAAOoB,YAAY9jG,EAAOyzC,aAAchvC,EAAO3G,EAAQimG,EAAYE,GAAWnhG,UAC9Fqe,SAAc7kB,KAAK4nG,aAAa35C,eAAevqD,EAAQg6E,EAAKiqB,GAAWE,oBAAqBF,GAAWv/F,aAAa,GAC3H,OAAOyc,CACX,CAGAopC,cAAAA,CAAevqD,EAAQg6E,EAAKmqB,EAAqBz/F,EAAa+/F,EAAUC,GACpE,OAAOpoG,KAAK4nG,aAAa35C,eAAevqD,EAAQg6E,EAAKmqB,EAAqBz/F,EAAa+/F,EAAUC,EACrG,CACAC,WAAAA,CAAYxhG,GACR,OAAO7G,KAAK4nG,aAAaS,YAAYxhG,EACzC,CACAyhG,aAAAA,CAAcC,GACV,OAAOvoG,KAAK4nG,aAAaU,cAAcC,EAC3C,CACAC,aAAAA,CAAc3jF,GACV,OAAO7kB,KAAK4nG,aAAaY,cAAc3jF,EAC3C,CACA4jF,WAAAA,CAAY5hG,GACR,OAAO7G,KAAK4nG,aAAaa,YAAY5hG,EACzC,CAGA6hG,mBAAAA,CAAoBpmC,EAASV,EAASz5D,EAAOgjB,GACzC,OAAOnrB,KAAK68E,KAAKC,YACrB,CACA6rB,cAAAA,CAAermC,EAASV,EAASz5D,EAAOgjB,GACpC,OAAOnrB,KAAK68E,KAAKC,YACrB,CACA8rB,gBAAAA,CAAiBtiG,GACb,OAAOtG,KAAK68E,KAAKC,YACrB,CACA+rB,eAAAA,CAAgBnlG,EAAQ4C,GACpB,OAAOtG,KAAK68E,KAAKC,YACrB,CACA1kC,WAAAA,CAAY10C,EAAQ4C,EAAUE,GAC1B,OAAOxG,KAAK+jG,MAAM3rD,YAAY9xC,EAAUE,EAC5C,CAIAiyC,YAAAA,CAAanyC,EAAUE,GACnB,OAAOxG,KAAK2jG,KAAKmF,WAAWxiG,EAAUE,EAC1C,CAIAsnD,YAAAA,CAAaxnD,EAAUE,GACnB,OAAOxG,KAAK6jG,OAAO/1C,aAAaxnD,EAAUE,EAC9C,CAGAuiG,kBAAAA,CAAmBC,GACf,OAAO,CACX,CACAC,iBAAAA,CAAkBD,GAAY,CAC9BE,gBAAAA,CAAiBF,GACbhpG,KAAK4nG,aAAasB,iBAAiBF,EACvC,CACAG,iBAAAA,CAAkBH,GACd,OAAOhpG,KAAK4nG,aAAauB,kBAAkBH,EAC/C,CACAI,YAAAA,CAAaC,GACT,OAAOrpG,KAAKomG,OAAOgD,aAAaC,EACpC,CACAC,aAAAA,GACI,OAAOpkG,EAAWk+E,MAAMkmB,eAC5B,CACAC,YAAAA,GACI,MAAMvoD,EAAa,KAAOz9C,EAASgB,OAAOC,KAAKU,EAAWskG,GAAGC,WAAWptE,MAAM4kB,oBAAoBx8C,SAAS,OACrGilG,EAAS,IAAIzH,EAAwB0H,sBAAsB3pG,KAAKgzB,SAAUguB,GAChF,OAAO,IAAIghD,EAAiBve,eAAeimB,EAC/C,EAEJ5pG,EAAQ+pF,qBAAuBA,80HC9b/B,MAAM+f,EAAe,CAAC,EAChBzoC,EAAgB,CAAC,EAEV0oC,EAA6BA,CAACj4F,EAAck4F,KACvD3oC,EAAcvvD,GAAQk4F,CAAY,EAUvBC,EAIXn4F,IAEA,MAAMo4F,UAAyBnmG,MAE7BoK,WAAAA,CAAYggB,EAAkBg8E,EAAYroF,GAOxC,GAJAxb,MAAM6nB,GAAWrc,EAAMgQ,GAEvB5e,OAAOknG,eAAelqG,KAAMgqG,EAAiBp/F,WAC7C5K,KAAK4R,KAAOA,EACRq4F,EACF,IAAK,MAAM34F,KAAK24F,EAGdjqG,KAAKsR,GAAK24F,EAAO34F,GAGrB,GAAIsQ,GAkBgB,kBAlBIA,GAAY,UAAWA,KAAa,UAAW5hB,MAAO,CAG5E,MAAMmqG,EAAQvoF,EAAQuoF,MACtBnqG,KAAKmqG,MAAQA,EACT,UAAWA,IACbnqG,KAAKoqG,MAAQpqG,KAAKoqG,MAAQ,YAAcD,EAAMC,MAElD,CACF,EAKF,OAFAR,EAAah4F,GAAQo4F,EAEdA,CAAgC,EAQlC,MAAMK,EAAoB3sC,IAC/B,GAAIA,GAA4B,kBAAXA,EAAqB,CACxC,IACE,GAA8B,kBAAnBA,EAAOzvC,QAAsB,CACtC,MAAMxtB,EAAMktB,KAAKwE,MAAMurC,EAAOzvC,SAC1BxtB,EAAIwtB,SAAWxtB,EAAImR,OACrB8rD,EAASj9D,EAEb,CACF,CAAE,MAAO8Q,GACP,CAGF,IAAIsR,EACJ,GAA2B,kBAAhB66C,EAAO9rD,KAAmB,CACnC,MAAM,KAAEA,GAAS8rD,EACX4sC,EAAMnpC,EAAcvvD,GAC1B,GAAI04F,EACFznF,EAAQynF,EAAI5sC,OACP,CACL,IAAIzvD,EAAuB,UAAT2D,EAAmB/N,MAAQ+lG,EAAah4F,GAErD3D,IACH2a,QAAQG,KAAK,mCAAqCnX,EAAO,KACzD3D,EAAc87F,EAAuBn4F,IAGvCiR,EAAQ7f,OAAO0G,OAAOuE,EAAYrD,WAClC,IACE,IAAK,MAAMkB,KAAQ4xD,EACbA,EAAOlnD,eAAe1K,KACxB+W,EAAM/W,GAAQ4xD,EAAO5xD,GAG3B,CAAE,MAAOyF,GACP,CAEJ,CACF,KACgC,kBAAnBmsD,EAAOzvC,UAChBpL,EAAQ,IAAIhf,MAAM65D,EAAOzvC,UAO7B,OAHIpL,IAAUA,EAAMunF,OAASvmG,MAAM0mG,mBACjC1mG,MAAM0mG,kBAAkB1nF,EAAOwnF,GAE1BxnF,CACT,CACA,OAAO,IAAIhf,MAAMgO,OAAO6rD,GAAQ,EAIrB8sC,EACXtnG,GAEKA,EACgB,kBAAVA,EACFunG,EAAgBvnG,EAAO,IAEX,oBAAVA,EACF,cAAcA,EAAM0O,MAAQ,eAE9B1O,EAPYA,EAiBrB,SAASunG,EAAgBjmG,EAAUkmG,GACjC,MAAM34E,EAAS,CAAC,EAChB24E,EAAKpjG,KAAK9C,GACV,IAAK,MAAMwF,KAAOhH,OAAOoc,KAAK5a,GAAO,CACnC,MAAMtB,EAAQsB,EAAKwF,GACE,oBAAV9G,IAGNA,GAA0B,kBAAVA,GAIY,IAA7BwnG,EAAKn2F,QAAQ/P,EAAKwF,IAItB+nB,EAAG/nB,GAAO,aAHR+nB,EAAG/nB,GAAOygG,EAAgBjmG,EAAKwF,GAAM0gG,EAAKh9F,MAAM,IAJhDqkB,EAAG/nB,GAAO9G,EAQd,CAUA,MATyB,kBAAdsB,EAAKoN,OACdmgB,EAAGngB,KAAOpN,EAAKoN,MAEW,kBAAjBpN,EAAKypB,UACd8D,EAAG9D,QAAUzpB,EAAKypB,SAEM,kBAAfzpB,EAAK4lG,QACdr4E,EAAGq4E,MAAQ5lG,EAAK4lG,OAEXr4E,CACT,CC1JO,MAAM44E,EAA2BZ,EAAuB,uBAClDa,EAAsBb,EAAuB,uBAC7Cc,EAAuCd,EAClD,wCAEWe,EAAiBf,EAAuB,kBACxCgB,EAAoBhB,EAAuB,qBAC3CiB,EAAkBjB,EAAuB,mBACzCkB,EAAiBlB,EAAuB,kBACxCmB,EAAuBnB,EAAuB,wBAC9CoB,EAA0BpB,EAAuB,2BACjDqB,EAAuBrB,EAGlC,wBACWsB,EAA8BtB,EAAuB,+BACrDuB,EAAgCvB,EAC3C,iCAEWwB,EAAwBxB,EAAuB,oBAC/CyB,EAA4BzB,EAAuB,6BACnD0B,EAA8B1B,EAAuB,+BACrD2B,EAAsB3B,EAAuB,uBAC7C4B,EAAe5B,EAAuB,gBACtC6B,EAAoB7B,EAAuB,qBAC3C8B,EAAmB9B,EAAuB,oBAC1C+B,EAA2B/B,EAAuB,4BAClDgC,EAAqBhC,EAAuB,4BAC5CiC,EAA0BjC,EAAuB,2BACjDkC,EAAqBlC,EAAuB,sBAC5CmC,EAAoCnC,EAC/C,qCAEWoC,EAAoCpC,EAC/C,qCAEWqC,EAAoCrC,EAC/C,qCAEWsC,EAAqBtC,EAAuB,iBAC5CuC,EAAiCvC,EAC5C,kCAEWwC,EAAsBxC,EAAuB,uBAC7CyC,EAAwBzC,EAAuB,yBAC/C0C,EAAgB1C,EAAuB,iBACvC2C,EAAgB3C,EAAuB,iBACvC4C,EAAiB5C,EAAuB,kBACxC6C,EAAe7C,EAAuB,gBACtC8C,EAA+C9C,EAC1D,gDAEW+C,EAA0B/C,EAAuB,2BACjDgD,EAAahD,EAAuB,cACpCiD,EAAiBjD,EAAuB,kBACxCkD,EAA4BlD,EAAuB,6BACnDmD,EAAwBnD,EAAuB,yBAC/CoD,EAAkCpD,EAAuB,8BACzDqD,EAA2BrD,EAAuB,uBAClDsD,EAA+BtD,EAAuB,gCACtDuD,EAAiCvD,EAC5C,kCAEWwD,GAA2BxD,EAAuB,uBAClDyD,GAAqCzD,EAChD,iCAEW0D,GAA6B1D,EAAuB,yBACpD2D,GAAyB3D,EAAuB,0BAChD4D,GAAc5D,EAAuB,eACrC6D,GAAe7D,EAAuB,gBACtC8D,GAAmB9D,EAAuB,oBAC1C+D,GAAmB/D,EAAuB,oBAC1CgE,GAAuBhE,EAAuB,wBAC9CiE,GAA6BjE,EAAuB,8BACpDkE,GAAkClE,EAC7C,mCAEWmE,GAA4BnE,EAAuB,6BACnDoE,GAA+CpE,EAC1D,gDAEWqE,GAAmBrE,EAAuB,oBAC1CsE,GAAetE,EAAuB,gBAEtCuE,GAAmBvE,EAAuB,oBAC1CwE,GAAmBxE,EAAuB,oBAC1CyE,GAA4BzE,EAAuB,6BACnD0E,GAA4B1E,EAAuB,6BACnD2E,GAAsB3E,EAAuB,uBAC7C4E,GAAoB5E,EAAuB,qBAC3C6E,GAAqB7E,EAAuB,sBAC5C8E,GAA8B9E,EAAuB,+BACrD+E,GAAe/E,EAAuB,gBACtCgF,GAA0BhF,EAAuB,sBACjDiF,GAAyBjF,EAAuB,qBAChDkF,GAA8BlF,EAAuB,+BACrDmF,GAAwBnF,EAAuB,yBAC/CoF,GAAgBpF,EAAuB,iBACvCqF,GAAuBrF,EAAuB,wBAC9CsF,GAA2BtF,EAAuB,4BAClDuF,GAAoBvF,EAAuB,qBAC3CwF,GAA2CxF,EACtD,4CAEWyF,GAAwCzF,EACnD,yCAEW0F,GAAsB1F,EAAuB,uBAC7C2F,GAAsB3F,EAAuB,uBAC7C4F,GAAqB5F,EAAuB,sBAC5C6F,GAAgB7F,EAAuB,iBACvC8F,GAA8B9F,EAAuB,+BACrD+F,GAAqB/F,EAAuB,sBAC5CgG,GAA4BhG,EAAuB,6BACnDiG,GAA0BjG,EAAuB,2BACjDkG,GAAsBlG,EAAuB,uBAC7CmG,GAAYnG,EAAuB,aACnCoG,GAAqBpG,EAAuB,sBAC5CqG,GAA6BrG,EAAuB,8BACpDsG,GAAiCtG,EAC5C,kCAEWuG,GAAyBvG,EAAuB,0BAChDwG,GAAiCxG,EAC5C,kCAEWyG,GAAmCzG,EAC9C,oCAEW0G,GAAgC1G,EAC3C,iCAEW2G,GAAwB3G,EAAuB,yBAC/C4G,GAA2B5G,EAAuB,4BAClD6G,GAA4B7G,EAAuB,6BACnD8G,GAAwB9G,EAAuB,yBAC/C+G,GAA8B/G,EAAuB,+BACrDgH,GAA8BhH,EAAuB,+BACrDiH,GAAsBjH,EAAuB,uBAE7CkH,GAAmBlH,EAAuB,oBAC1CmH,GAAiBnH,EAAuB,kBACxCoH,GAAepH,EAAuB,gBACtCqH,GAAmBrH,EAAuB,oBAC1CsH,GAActH,EAAuB,eACrCuH,GAAavH,EAAuB,cACpCwH,GAAmBxH,EAAuB,oBAC1CyH,GAAYzH,EAAuB,aACnC0H,GAAgB1H,EAAuB,iBACvC2H,GAAqB3H,EAAuB,sBAC5C4H,GAAqB5H,EAAuB,sBAM5C6H,GAAe7H,EAG1B,gBACW8H,GAAe9H,EAG1B,gBACW+H,GAA8B/H,EAAuB,+BAGrDgI,GAAoChI,EAC/C,qCAIWiI,GAAwBjI,EAAuB,qBAC/CkI,GAAYlI,EAAuB,aAGnCmI,GAAmBnI,EAAuB,oBAG1CoI,GAAgBpI,EAAuB,iBACvCqI,GAAkBrI,EAAuB,mBACzCsI,GAAatI,EAAuB,cAEpCuI,GAAsBvI,EAAuB,uBAC7CwI,GAAoCxI,EAC/C,qCASK,IAAKyI,IAAZ,SAAYA,GACVA,EAAA,kBACAA,EAAA,oDACAA,EAAA,4DACAA,EAAA,mDACD,CALD,CAAYA,KAAAA,GAAoB,KAc1B,MAAOC,WAAyB5uG,MAGpCoK,WAAAA,CAAYtG,EAA4BsmB,GACtC7nB,MAAM6nB,GACNjuB,KAAK4R,KAAO,mBACZ5R,KAAK2H,KAAOA,EAGZ3E,OAAOknG,eAAelqG,KAAMyyG,GAAiB7nG,UAC/C,EAOI,MAAO8nG,WAAuB7uG,MAElCoK,WAAAA,CAAYggB,EAAiBlZ,GAC3B,MAAMnD,EAAO,iBACbxL,MAAM6nB,GAAWrc,GACjB5R,KAAK4R,KAAOA,EACZ5R,KAAKiuB,QAAUA,EACfjuB,KAAKoqG,MAAQ,IAAIvmG,MAAMoqB,GAASm8E,MAChCpqG,KAAK+U,GAAKA,CACZ,EAGF80F,EAA2B,kBAAkBt4F,GAAK,IAAImhG,GAAenhG,EAAE0c,QAAS1c,EAAEwD,MAE3E,MAAM49F,GAAc,CACzBC,+BAAgC,MAChCC,wBAAyB,MACzBC,kBAAmB,MACnBC,aAAc,MACdC,qBAAsB,MACtBC,oCAAqC,MACrCC,gCAAiC,MACjCC,2BAA4B,MAC5BC,iCAAkC,MAClCC,wBAAyB,MACzBC,mBAAoB,MACpBC,oBAAqB,MACrBC,eAAgB,MAChBC,eAAgB,MAChBC,OAAQ,MACRC,kBAAmB,MACnBC,eAAgB,MAChBC,iBAAkB,MAClBC,gBAAiB,MACjBC,kBAAmB,MACnBC,qBAAsB,MACtBC,uBAAwB,MACxBC,YAAa,MACbC,eAAgB,MAChBC,UAAW,MACXC,cAAe,MACfC,kBAAmB,MACnBC,eAAgB,MAChBC,2BAA4B,MAC5BC,eAAgB,MAChBC,wBAAyB,MACzBC,GAAI,MACJC,uBAAwB,MACxBC,0BAA2B,MAC3BC,8BAA+B,MAC/BC,kBAAmB,MACnBC,aAAc,MACdC,uBAAwB,MACxBC,iBAAkB,MAClBC,iCAAkC,MAClCC,wBAAyB,MACzBC,mBAAoB,MACpBC,iCAAkC,MAClCC,iCAAkC,MAClCC,2BAA4B,MAC5BC,qBAAsB,MACtBC,YAAa,MACbC,sBAAuB,MACvBC,sBAAuB,MACvBC,qBAAsB,MACtBC,sBAAuB,MAGvBC,sBAAuB,OAGnB,SAAUC,GAAoBtnD,GAClC,OAAQA,GAEN,KAAK,MACH,MAAO,mBACT,KAAK,MACH,MAAO,6BACT,KAAK,MACH,MAAO,uEACT,KAAK,MACH,MAAO,uDACT,KAAK,MACH,MAAO,wBACT,KAAK,MACH,MAAO,6BACT,KAAK,MACH,MAAO,gBAEX,GAAI,OAAUA,GAAQA,GAAQ,MAC5B,MAAO,+BAEX,CAMM,MAAOunD,WAA6BpyG,MAUxCoK,WAAAA,CACEioG,GAC8E,IAA9E,wBAAEC,GAA0B,GAAIv0G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA4C,CAAC,EAE7E,MAAM0sB,EACJtrB,OAAOoc,KAAKuzF,IAAa73C,MAAKxpD,GAAKqhG,GAAYrhG,KAAO4kG,KAAe,gBAGjEjoF,EAAU,kBAFH+nF,GAAoBE,IAAe5nF,QAC1B4nF,EAAWzxG,SAAS,OAY1C,GATA2B,MAAM6nB,GACNjuB,KAAK4R,KAAO,uBAEZ5R,KAAKk2G,WAAaA,EAClBl2G,KAAKsuB,WAAaA,EAElBtrB,OAAOknG,eAAelqG,KAAMi2G,GAAqBrrG,WAG7CurG,GAA2BD,IAAevD,GAAY0B,cACxD,OAAO,IAAI+B,GAAkBnoF,EAEjC,EAGI,MAAOmoF,WAA0BH,GACrChoG,WAAAA,CAAYggB,GACV7nB,MAAMusG,GAAY0B,cAAe,CAAE8B,yBAAyB,IACxDloF,IACFjuB,KAAKiuB,QAAUA,GAEjBjuB,KAAK4R,KAAO,oBACZ5O,OAAOknG,eAAelqG,KAAMo2G,GAAkBxrG,UAChD,EAMFi/F,EAA2B,wBAAwBt4F,GAAK,IAAI0kG,GAAqB1kG,EAAE2kG,kEC7XnFlzG,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IAmBtDpD,EAAQu2G,WAZR,SAAoBhvC,GAChB,CACI,MAAMivC,EAAW/xG,EAAOC,KAAK6iE,GAC7BivC,EAAS1oG,UACT,MAAM9G,EAAMwvG,EAAS7xG,SAAS,OAC9B,OAAmB,IAAfqC,EAAIjF,OACG6D,OAAO,GAEXA,OAAO,KAAKoB,IACvB,CAEJ,EAiBAhH,EAAQy2G,WAVR,SAAoBlvC,GAChB,CACI,MAAMvgE,EAAMugE,EAAI5iE,SAAS,OACzB,OAAmB,IAAfqC,EAAIjF,OACG6D,OAAO,GAEXA,OAAO,KAAKoB,IACvB,CAEJ,EAkBAhH,EAAQ02G,WAVR,SAAoBr1E,EAAKiD,GACrB,CACI,MAAMt9B,EAAMq6B,EAAI18B,SAAS,IACnB4rB,EAAS9rB,EAAOC,KAAKsC,EAAIukB,SAAiB,EAAR+Y,EAAW,KAAK12B,MAAM,EAAW,EAAR02B,GAAY,OAE7E,OADA/T,EAAOziB,UACAyiB,CACX,CAGJ,EAeAvwB,EAAQ22G,WAPR,SAAoBt1E,EAAKiD,GACrB,CACI,MAAMt9B,EAAMq6B,EAAI18B,SAAS,IACzB,OAAOF,EAAOC,KAAKsC,EAAIukB,SAAiB,EAAR+Y,EAAW,KAAK12B,MAAM,EAAW,EAAR02B,GAAY,MACzE,CAEJ,0HCnEA,MAAAi7B,EAAAv+D,EAAA,OASSkC,OAAAA,eAAAA,EAAAA,kBAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBATAyzD,EAAAq3C,eAAe,IAExB,MAAMC,EAGF,CACFC,OAAQv3C,EAAAq3C,iBAGgB52G,EAAAA,cAAA62G,0BCP1B,IAAIrqF,EAAMtpB,OAAO4H,UAAU4L,eACvBjD,EAAS,IASb,SAASsjG,IAAU,CA4BnB,SAASC,EAAGC,EAAInsB,EAASosB,GACvBh3G,KAAK+2G,GAAKA,EACV/2G,KAAK4qF,QAAUA,EACf5qF,KAAKg3G,KAAOA,IAAQ,CACtB,CAaA,SAASC,EAAYC,EAASzoG,EAAOsoG,EAAInsB,EAASosB,GAChD,GAAkB,oBAAPD,EACT,MAAM,IAAI93E,UAAU,mCAGtB,IAAIhwB,EAAW,IAAI6nG,EAAGC,EAAInsB,GAAWssB,EAASF,GAC1CG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAMpC,OAJKyoG,EAAQE,QAAQD,GACXD,EAAQE,QAAQD,GAAKJ,GAC1BG,EAAQE,QAAQD,GAAO,CAACD,EAAQE,QAAQD,GAAMloG,GADhBioG,EAAQE,QAAQD,GAAK7vG,KAAK2H,IADlCioG,EAAQE,QAAQD,GAAOloG,EAAUioG,EAAQG,gBAI7DH,CACT,CASA,SAASI,EAAWJ,EAASC,GACI,MAAzBD,EAAQG,aAAoBH,EAAQE,QAAU,IAAIP,SAC5CK,EAAQE,QAAQD,EAC9B,CASA,SAASj1F,IACPliB,KAAKo3G,QAAU,IAAIP,EACnB72G,KAAKq3G,aAAe,CACtB,CAzEIr0G,OAAO0G,SACTmtG,EAAOjsG,UAAY5H,OAAO0G,OAAO,OAM5B,IAAImtG,GAASU,YAAWhkG,GAAS,IA2ExC2O,EAAatX,UAAU4sG,WAAa,WAClC,IACIrpG,EACAyD,EAFA6lG,EAAQ,GAIZ,GAA0B,IAAtBz3G,KAAKq3G,aAAoB,OAAOI,EAEpC,IAAK7lG,KAASzD,EAASnO,KAAKo3G,QACtB9qF,EAAIxV,KAAK3I,EAAQyD,IAAO6lG,EAAMnwG,KAAKiM,EAAS3B,EAAKlE,MAAM,GAAKkE,GAGlE,OAAI5O,OAAO00G,sBACFD,EAAMt/F,OAAOnV,OAAO00G,sBAAsBvpG,IAG5CspG,CACT,EASAv1F,EAAatX,UAAUwD,UAAY,SAAmBK,GACpD,IAAI0oG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAChCkpG,EAAW33G,KAAKo3G,QAAQD,GAE5B,IAAKQ,EAAU,MAAO,GACtB,GAAIA,EAASZ,GAAI,MAAO,CAACY,EAASZ,IAElC,IAAK,IAAI/rG,EAAI,EAAGwG,EAAImmG,EAAS91G,OAAQ+1G,EAAK,IAAIztG,MAAMqH,GAAIxG,EAAIwG,EAAGxG,IAC7D4sG,EAAG5sG,GAAK2sG,EAAS3sG,GAAG+rG,GAGtB,OAAOa,CACT,EASA11F,EAAatX,UAAUitG,cAAgB,SAAuBppG,GAC5D,IAAI0oG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAChCL,EAAYpO,KAAKo3G,QAAQD,GAE7B,OAAK/oG,EACDA,EAAU2oG,GAAW,EAClB3oG,EAAUvM,OAFM,CAGzB,EASAqgB,EAAatX,UAAUktG,KAAO,SAAcrpG,EAAO63B,EAAIG,EAAIG,EAAIG,EAAIG,GACjE,IAAIiwE,EAAM5jG,EAASA,EAAS9E,EAAQA,EAEpC,IAAKzO,KAAKo3G,QAAQD,GAAM,OAAO,EAE/B,IAEIhiG,EACAnK,EAHAoD,EAAYpO,KAAKo3G,QAAQD,GACzBhlG,EAAMvQ,UAAUC,OAIpB,GAAIuM,EAAU2oG,GAAI,CAGhB,OAFI3oG,EAAU4oG,MAAMh3G,KAAK+3G,eAAetpG,EAAOL,EAAU2oG,QAAIj1G,GAAW,GAEhEqQ,GACN,KAAK,EAAG,OAAO/D,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,UAAU,EACrD,KAAK,EAAG,OAAOx8E,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,IAAK,EACzD,KAAK,EAAG,OAAOl4B,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,EAAIG,IAAK,EAC7D,KAAK,EAAG,OAAOr4B,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,EAAIG,EAAIG,IAAK,EACjE,KAAK,EAAG,OAAOx4B,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,EAAIG,EAAIG,EAAIG,IAAK,EACrE,KAAK,EAAG,OAAO34B,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,EAAIG,EAAIG,EAAIG,EAAIG,IAAK,EAG3E,IAAKl8B,EAAI,EAAGmK,EAAO,IAAIhL,MAAMgI,EAAK,GAAInH,EAAImH,EAAKnH,IAC7CmK,EAAKnK,EAAI,GAAKpJ,UAAUoJ,GAG1BoD,EAAU2oG,GAAG1/B,MAAMjpE,EAAUw8E,QAASz1E,EACxC,KAAO,CACL,IACIvE,EADA/O,EAASuM,EAAUvM,OAGvB,IAAKmJ,EAAI,EAAGA,EAAInJ,EAAQmJ,IAGtB,OAFIoD,EAAUpD,GAAGgsG,MAAMh3G,KAAK+3G,eAAetpG,EAAOL,EAAUpD,GAAG+rG,QAAIj1G,GAAW,GAEtEqQ,GACN,KAAK,EAAG/D,EAAUpD,GAAG+rG,GAAGjgG,KAAK1I,EAAUpD,GAAG4/E,SAAU,MACpD,KAAK,EAAGx8E,EAAUpD,GAAG+rG,GAAGjgG,KAAK1I,EAAUpD,GAAG4/E,QAAStkD,GAAK,MACxD,KAAK,EAAGl4B,EAAUpD,GAAG+rG,GAAGjgG,KAAK1I,EAAUpD,GAAG4/E,QAAStkD,EAAIG,GAAK,MAC5D,KAAK,EAAGr4B,EAAUpD,GAAG+rG,GAAGjgG,KAAK1I,EAAUpD,GAAG4/E,QAAStkD,EAAIG,EAAIG,GAAK,MAChE,QACE,IAAKzxB,EAAM,IAAKvE,EAAI,EAAGuE,EAAO,IAAIhL,MAAMgI,EAAK,GAAIvB,EAAIuB,EAAKvB,IACxDuE,EAAKvE,EAAI,GAAKhP,UAAUgP,GAG1BxC,EAAUpD,GAAG+rG,GAAG1/B,MAAMjpE,EAAUpD,GAAG4/E,QAASz1E,GAGpD,CAEA,OAAO,CACT,EAWA+M,EAAatX,UAAUotG,GAAK,SAAYvpG,EAAOsoG,EAAInsB,GACjD,OAAOqsB,EAAYj3G,KAAMyO,EAAOsoG,EAAInsB,GAAS,EAC/C,EAWA1oE,EAAatX,UAAUosG,KAAO,SAAcvoG,EAAOsoG,EAAInsB,GACrD,OAAOqsB,EAAYj3G,KAAMyO,EAAOsoG,EAAInsB,GAAS,EAC/C,EAYA1oE,EAAatX,UAAUmtG,eAAiB,SAAwBtpG,EAAOsoG,EAAInsB,EAASosB,GAClF,IAAIG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAEpC,IAAKzO,KAAKo3G,QAAQD,GAAM,OAAOn3G,KAC/B,IAAK+2G,EAEH,OADAO,EAAWt3G,KAAMm3G,GACVn3G,KAGT,IAAIoO,EAAYpO,KAAKo3G,QAAQD,GAE7B,GAAI/oG,EAAU2oG,GAEV3oG,EAAU2oG,KAAOA,GACfC,IAAQ5oG,EAAU4oG,MAClBpsB,GAAWx8E,EAAUw8E,UAAYA,GAEnC0sB,EAAWt3G,KAAMm3G,OAEd,CACL,IAAK,IAAInsG,EAAI,EAAGmD,EAAS,GAAItM,EAASuM,EAAUvM,OAAQmJ,EAAInJ,EAAQmJ,KAEhEoD,EAAUpD,GAAG+rG,KAAOA,GACnBC,IAAS5oG,EAAUpD,GAAGgsG,MACtBpsB,GAAWx8E,EAAUpD,GAAG4/E,UAAYA,IAErCz8E,EAAO7G,KAAK8G,EAAUpD,IAOtBmD,EAAOtM,OAAQ7B,KAAKo3G,QAAQD,GAAyB,IAAlBhpG,EAAOtM,OAAesM,EAAO,GAAKA,EACpEmpG,EAAWt3G,KAAMm3G,EACxB,CAEA,OAAOn3G,IACT,EASAkiB,EAAatX,UAAUqtG,mBAAqB,SAA4BxpG,GACtE,IAAI0oG,EAUJ,OARI1oG,GACF0oG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAC5BzO,KAAKo3G,QAAQD,IAAMG,EAAWt3G,KAAMm3G,KAExCn3G,KAAKo3G,QAAU,IAAIP,EACnB72G,KAAKq3G,aAAe,GAGfr3G,IACT,EAKAkiB,EAAatX,UAAUg3B,IAAM1f,EAAatX,UAAUmtG,eACpD71F,EAAatX,UAAUqsG,YAAc/0F,EAAatX,UAAUotG,GAK5D91F,EAAag2F,SAAW3kG,EAKxB2O,EAAaA,aAAeA,EAM1BniB,EAAOD,QAAUoiB,2gBC9UnB1S,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,mMCLA,MAAAq4G,EAAAC,EAAAt3G,EAAA,OACAmE,EAAAnE,EAAA,OACAu3G,EAAAv3G,EAAA,OAEahB,EAAAA,IAAM,IAAIq4G,EAAApzB,QAAU,SAEpBjlF,EAAAA,QAAWw4G,IACpB,MAAMC,GAAS,EAAAF,EAAAG,MAAKF,IACd,OAAEn4F,EAAM,OAAEV,IAAW,EAAAxa,EAAAwzG,cAAaF,GAElCG,EAAgBH,EAYtB,OAVAG,EAAcj5F,OAAS,CAAC4Q,EAAgB0G,KACpC,MAAMiC,EAAMvZ,EAAO4Q,EAAQ0G,GAAQtyB,WACnC,OAAO,IAAI0zG,EAAApzB,QAAU/rD,GAAKzmB,IAAIzS,EAAA64G,IAAI,EAGtCD,EAAcv4F,OAAS,CAACxI,EAAoB0Y,EAAgB0G,KACxD,MAAMiC,EAAMtzB,OAAOiS,EAAQ2D,MAAMxb,EAAA64G,KAAKp9F,eAAe9W,YACrD,OAAO0b,EAAO6Y,EAAK3I,EAAQ0G,EAAO,EAG/B2hF,CAAa,aCvBxB34G,EAAOD,QAAU,WACf,MAAM,IAAI+D,MAAM,gDAClB,gCCDAb,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQg9B,eAAY,EACpB,MAAMhzB,EAAUhJ,EAAQ,OAkCxBhB,EAAQg9B,UA/BR,SAAmBH,EAAOC,EAASp2B,EAASmB,GACxC,IAAK+T,SAAS5R,EAAQuyB,MAAMc,UAAU32B,IAClC,OAAO,KACX,IAAI42B,EAAatzB,EAAQuyB,MAAMgB,iBAAiB,GAAIT,EAASj1B,GACzD41B,EAAU,EACVD,EAAa,EACjB,MAAMP,EAAS,GACT67E,EAAW9uG,EAAQuyB,MAAMw8E,SAASj8E,GAClCk8E,EAAYhvG,EAAQuyB,MAAM08E,cAAc,CAAEpxG,SAChD,IAAK,IAAIqD,EAAI,EAAGA,EAAI2xB,EAAM96B,SAAUmJ,EAAG,CACnC,MAAM/K,EAAQ08B,EAAM3xB,GACdsxB,EAAaxyB,EAAQuyB,MAAMC,WAAWr8B,GAC5C,IAAI09B,EAAU,EACI,MAAd19B,EAAMs8B,MAAgBt8B,EAAMs8B,KAAKC,mBAAqBh2B,IACtDm3B,EAAU19B,EAAMs8B,KAAKE,SAAWj2B,EAAUvG,EAAMs8B,KAAKC,qBACzD,MAAM96B,EAAO8E,GAAW42B,EAAad,GAAegB,EAAaK,EAC3Dq7E,EAAalvG,EAAQuyB,MAAMc,UAAUl9B,EAAMiD,OAEjD,KAAKq6B,EAAUy7E,EAAeJ,EAAWl3G,EAAMo3G,KAE/C17E,GAAcd,EACdiB,GAAWy7E,EACX17E,GAAcK,EACdZ,EAAOz1B,KAAKrH,KAERs9B,EAAUq7E,EAAWl3G,IAEzB,OAAOoI,EAAQuyB,MAAM48E,SAASl8E,EAAQH,EAASp2B,EAASmB,EAAM21B,EAClE,CACA,MAAO,CAAE57B,IAAM8E,EAAU42B,EAAcE,EAC3C,gCCnCAt6B,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQo5G,sBAAmB,EAC3B,MAAM91G,EAAiBtC,EAAQ,OAC/B,MAAMo4G,UAAyB91G,EAAeI,aAC1CyK,WAAAA,CAAYusE,GACRp0E,MAAMo0E,GACNx6E,KAAKw6E,KAAOA,EACZx6E,KAAKm5G,QAAU3+B,EAAK2+B,OACxB,EAEJr5G,EAAQo5G,iBAAmBA,mBCP3Bp4G,EAAQ,OACRf,EAAOD,QAAUmjC,KAAKlV,MAAMhI,KAAKkd,kCCJjCjgC,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,mBCDtD,MAAMk2G,EAAU,SAEhB,IAAIC,EAAQ,mNAIZA,EAAQA,EAAMrsG,QAAQ,KAAM,OAE5B,MAAMuiB,EAAO,6BAA+B8pF,EAAQ,kBAEpDv5G,EAAQw5G,MAAQ,IAAIpsG,OAAOmsG,EAAO,KAClCv5G,EAAQy5G,WAAa,IAAIrsG,OAAO,wBAAyB,KACzDpN,EAAQ05G,KAAO,IAAItsG,OAAOqiB,EAAM,KAChCzvB,EAAQ4K,QAAU,IAAIwC,OAAOksG,EAAS,KACtCt5G,EAAQm5D,aAAe,IAAI/rD,OAbN,oBAa2B,KAEhD,MAAMusG,EAAa,IAAIvsG,OAAO,IAAMmsG,EAAQ,KACtCK,EAAe,IAAIxsG,OAAO,IAAMksG,EAAU,KAC1CO,EAAoB,IAAIzsG,OAAO,0BAErCpN,EAAQ85G,UAAY,SAAoB5nG,GACtC,OAAOynG,EAAWnlG,KAAKtC,EACzB,EAEAlS,EAAQ+5G,YAAc,SAAsB7nG,GAC1C,OAAO0nG,EAAaplG,KAAKtC,EAC3B,EAEAlS,EAAQg6G,iBAAmB,SAA2B9nG,GACpD,OAAO2nG,EAAkBrlG,KAAKtC,EAChC,gCC7BAhP,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQi6G,iBAAmBj6G,EAAQk6G,mBAAqBl6G,EAAQm6G,iBAAmBn6G,EAAQq/D,aAAer/D,EAAQo6G,cAAgBp6G,EAAQq6G,eAAiBr6G,EAAQs6G,cAAgBt6G,EAAQu6G,aAAev6G,EAAQw6G,MAAQx6G,EAAQy6G,OAASz6G,EAAQ06G,sBAAwB16G,EAAQ26G,SAAW36G,EAAQ46G,eAAiB56G,EAAQ66G,gBAAkB76G,EAAQ86G,YAAc96G,EAAQ+6G,SAAW/6G,EAAQu8B,MAAQv8B,EAAQm/C,UAAYn/C,EAAQw9C,gBAAkBx9C,EAAQs8C,MAAQt8C,EAAQ+E,OAAS/E,EAAQoE,KAAOpE,EAAQijD,gBAAkBjjD,EAAQ8iD,aAAe9iD,EAAQg7G,YAAch7G,EAAQi7G,eAAY,EACnkB,MAAMC,EAASl6G,EAAQ,OACjBy/D,EAAWz/D,EAAQ,OACnBgJ,EAAUhJ,EAAQ,OAClBm6G,EAAYn6G,EAAQ,OACpBo6G,EAAap6G,EAAQ,OACrBq6G,EAAgBr6G,EAAQ,OACxBy0C,EAAIz0C,EAAQ,OACZs6G,EAAkBt6G,EAAQ,OAC1Bi8C,EAAcr3C,OAAO,gFAC3B5F,EAAQi7G,UAAYr1G,OAAO,qEAE3B,SAASg3C,EAASyB,GACd,KAAoB,IAAbA,EAAM,IACTA,EAAQA,EAAMvtB,SAAS,GAC3B,MAAMygB,EAAuB,EAAf8M,EAAMt8C,OAJL,IAKTs/B,EAAMoU,EAAE8I,gBAAgBF,GAC9B,OAAO9M,EAAQ,EAAIlQ,GAAOz7B,OAAO2rC,GAASlQ,CAC9C,CACA,SAASk6E,EAAav0G,GAMlB,MALmB,kBAARA,GAEU,GADjBA,EAAMw0G,EAAQx0G,IACNjF,SACJiF,EAAM,IAAMA,GAEbyuC,EAAEmL,WAAW55C,EACxB,CACA,MAAMu1C,GAAQ,EAAI8+D,EAAcvxG,aAAa,CACzC6G,EAAG/K,OAAO,GACVwL,EAAGxL,OAAO,gFACVo3C,IAAI,EAAIm+D,EAAUn0D,OAAOphD,OAAO,sEAChC6K,EAAGwsC,EACH0E,WArBe,IAsBfyF,GAAIxhD,OAAO,+EACXuhD,GAAIvhD,OAAO,+EACX8rB,EAAG9rB,OAAO,GACVk3C,MAAM,MACH,EAAIw+D,EAAgB7xG,SAASg3D,EAASC,QACzC9jB,WACAC,cAAgBwB,IACZ,MAAMr3C,EAAMyuC,EAAE8I,gBAAgBF,GAAO15C,SAAS,IAG9C,OAFmB,KAAfqC,EAAIjF,SACJs8C,EAAQk9D,EAAav0G,EAAM,OACxB,EAAIm0G,EAAU5/F,KAAKqhC,EAASyB,GAAQpB,EAAY,IAI/D,SAASsC,EAAYv4C,GACjB,OAAOyuC,EAAE8J,YAAY,GAAmB,kBAARv4C,EAAmBu0G,EAAav0G,GAAOA,EAC3E,CACA,SAASy0G,EAAYr4D,GACjB,OAAO3N,EAAEqJ,WAAWS,EAAY6D,IAAU73B,SAAS,GAAI,IAC3D,CACA,SAASu3B,EAAaM,GAA+B,IAAtBrF,EAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACvC,OAAOy6C,EAAMuG,aAAa24D,EAAYr4D,GAAUrF,EACpD,CAMA,SAAS29D,EAAev3G,GACpB,MAAM,EAAE4M,EAAC,EAAEH,GAAMzM,EACjB,GAAI4M,EAAI,IAAMA,GAAK/Q,EAAQi7G,UACvB,MAAM,IAAIl3G,MAAM,6BAA6B/D,EAAQi7G,cACzD,MAAMp5E,GAAI,EAAIs5E,EAAUryG,QAAQ8H,EAAGqsC,GACnC,GAAIpb,EAAI,IAAMA,GAAK7hC,EAAQi7G,UACvB,MAAM,IAAIl3G,MAAM,kCAAkC/D,EAAQi7G,aAClE,CACA,SAASU,EAAa77D,GAClB,MAAMzB,EAAQkB,EAAYO,GAE1B,GADYrK,EAAE8I,gBAAgBF,IACnBr+C,EAAQi7G,UACf,MAAM,IAAIl3G,MAAM,yBAAyB/D,EAAQi7G,cACrD,OAAO58D,CACX,CA7BAr+C,EAAQg7G,YAAcz+D,EAUtBv8C,EAAQ8iD,aAAeA,EAIvB9iD,EAAQijD,gBAHR,SAAyB24D,EAAUC,GAC/B,OAAOt/D,EAAM0G,gBAAgBw4D,EAAYG,GAAWC,EACxD,EAsBA77G,EAAQoE,KALR,SAAc07C,EAASsD,EAASjpB,GAC5B,MAAM8rB,EAAM1J,EAAMn4C,KAAKu3G,EAAa77D,GAAU27D,EAAYr4D,GAAUjpB,GAEpE,OADAuhF,EAAez1D,GACRA,CACX,EAiBAjmD,EAAQ+E,OAfR,SAAgBZ,EAAW27C,EAASwgB,GAChC,KAAMn8D,aAAqBg7C,GAAY,CACnC,MAAMd,EAAQkB,EAAYp7C,GAC1B,IACIA,EAAYg7C,EAAUK,QAAQnB,EAClC,CACA,MAAOsF,GACH,KAAMA,aAAoB03D,EAAc57D,IAAImE,KACxC,MAAMD,EACVx/C,EAAYg7C,EAAUG,YAAYjB,EACtC,CACJ,CAEA,OADAq9D,EAAev3G,GACRo4C,EAAMx3C,OAAOZ,EAAWw3G,EAAa77D,GAAUP,EAAY+gB,GACtE,EAEA,MAAM,MAAEhkB,EAAK,gBAAEkB,EAAe,UAAE2B,EAAS,MAAE5iB,GAAUggB,EAKrD,SAASu/D,EAASz9D,GAGd,MAAO,KAFK5I,EAAEqJ,WAAWT,EAAMvtB,SAAS,IACnB5jB,QAAQ,QAAS,KAE1C,CACA,SAASsuG,EAAQx0G,GACb,OAAOA,EAAIkG,QAAQ,OAAQ,GAC/B,CACA,SAAS6tG,EAASv4D,GACd,MAAMu5D,EAAQx8D,EAAYiD,GACpBw5D,EAAa,IAAM,KACnB/oC,EAAQ+oC,GAAa,EAAIb,EAAU5/F,KAAKygG,EAAY/+D,GAC1D,IAAK,IAAI/xC,EAAI,GAAIA,IAAK,CAClB,MAAMhB,EAAM+xG,EAAUxmE,EAAElrC,YAAYwxG,EAAOtmE,EAAEymE,mBAAmBt2G,OAAOsF,MACvE,GAAIhB,EAAM+oE,EACN,OAAO,EAAIkoC,EAAU5/F,KAAKrR,EAAK+yC,GAAat4C,SAAS,IACzD,GAAU,MAANuG,EACA,MAAM,IAAInH,MAAM,sCACxB,CACJ,CAvBA/D,EAAQs8C,MAAQA,EAChBt8C,EAAQw9C,gBAAkBA,EAC1Bx9C,EAAQm/C,UAAYA,EACpBn/C,EAAQu8B,MAAQA,EAqBhBv8B,EAAQ+6G,SAAWA,EAInB/6G,EAAQ86G,YAHR,SAAqB55D,GACjB,OAAO46D,EAASh5D,EAAa5B,GAAY,GAC7C,EAQAlhD,EAAQ66G,gBANR,SAAyB12G,GAErB,GAAyB,OADzBA,EAAYq3G,EAAQr3G,IACNpC,OACV,MAAM,IAAIgC,MAAM,4BACpB,OAAOg3G,EAAS52G,EAAU6E,UAAU,EAAG,IAC3C,EAEA,MACMmzG,EAAS1rG,GAAM4e,OADL,YACY5e,GAO5BzQ,EAAQ46G,eANR,SAAwBwB,EAAOC,EAAaC,EAAiBx7E,GACzD,MAAMy7E,EAAWJ,EAAMF,EAAUG,IAC3BI,EAAiBL,EAAMF,EAAUI,IACjCI,EAAMhnE,EAAEqmD,YAAY0f,EAAQc,IAClC,MAAO,WAAWC,MAAaC,MAAmBL,EAAMM,OAASN,EAAMM,GAAO,SAAS37E,GAC3F,EAEA,MAAM47E,EAAkB,CACpB,IAAIl/D,EAAgB,8EAA+E,8EAA+E,IAClL,IAAIA,EAAgB,6EAA8E,8EAA+E,IACjL,IAAIA,EAAgB,8EAA+E,8EAA+E,IAClL,IAAIA,EAAgB,8EAA+E,6EAA8E,IACjL,IAAIA,EAAgB,8EAA+E,6EAA8E,KAErL,SAASm/D,EAAmBpiG,EAAIC,GAC5B,MAAMvT,EAAM,GACZ,IAAIwP,EAAI8D,EACR,IAAK,IAAIrP,EAAI,EAAGA,EAAI,IAAKA,IACrBjE,EAAIO,KAAKiP,GACTA,EAAIA,EAAE6yC,SAEV7yC,EAAI+D,EACJ,IAAK,IAAItP,EAAI,EAAGA,EAAI,EAAGA,IACnBjE,EAAIO,KAAKiP,GACTA,EAAIA,EAAE6yC,SAEV,OAAOriD,CACX,CACA,MAAM21G,EAAmBD,EAAmBD,EAAgB,GAAIA,EAAgB,IAC1EG,EAAmBF,EAAmBD,EAAgB,GAAIA,EAAgB,IAkBhF,SAASI,EAAeh/D,EAAO16C,EAAOy2E,GAClC,IAAI3oE,EAlBR,SAAqB6rG,GACjB,IAAI35G,EACJ,GAAmB,kBAAR25G,EACP35G,EAAQ25G,OAEP,GAAmB,kBAARA,EAAkB,CAC9B,IAAK1tF,OAAOivC,cAAcy+C,GACtB,MAAM,IAAIh5G,MAAM,wBAAwBg5G,KAC5C35G,EAAQwC,OAAOm3G,EACnB,MAEI35G,EAAQqyC,EAAE8I,gBAAgBgB,EAAYw9D,IAE1C,KAAM,IAAM35G,GAASA,EAAQm5C,EAAMD,MAAMU,GAAG0B,OACxC,MAAM,IAAI36C,MAAM,+CAA+CX,KACnE,OAAOA,CACX,CAEY45G,CAAY55G,GACpB,IAAK,IAAI0N,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC1B,MAAMmsG,EAAKpjC,EAAU/oE,GACrB,GAAImsG,EAAGx8F,OAAOq9B,GACV,MAAM,IAAI/5C,MAAM,cACH,MAAR,GAAJmN,KACD4sC,EAAQA,EAAMr7C,IAAIw6G,IACtB/rG,IAAM,EACV,CACA,OAAO4sC,CACX,CACA,SAAS68D,EAASzpG,EAAGC,GACjB,IAAI2sC,EAAQ4+D,EAAgB,GAG5B,OAFA5+D,EAAQg/D,EAAeh/D,EAAO5sC,EAAG0rG,GACjC9+D,EAAQg/D,EAAeh/D,EAAO3sC,EAAG0rG,GAC1Bf,EAASh+D,EAAMkF,YAAW,GACrC,CACAhjD,EAAQ26G,SAAWA,EAEnB36G,EAAQ06G,sBADsB,SAAC72G,GAAI,IAAEozG,EAAEn1G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG64G,EAAQ,MAAK,CAAC,KAAM92G,EAAMA,EAAK9B,QAAQoH,QAAO,CAAC+H,EAAGC,IAAM8lG,EAAG/lG,EAAGC,IAAG,EAE3G,MAAM+rG,EAAWznE,EAAEoM,QAAQ,KAE3B7hD,EAAQy6G,OADQ52G,GAAS4xC,EAAE8I,iBAAgB,EAAI28D,EAAOiC,YAAYt5G,IAASq5G,EAE3E,MAAMjB,EAAap4G,GAAS4xC,EAAE8I,iBAAgB,EAAIkiB,EAASC,QAAQ78D,IAEnE,SAASu5G,EAAsBpgE,EAAIlrC,EAAMqtD,GACrC,MAAMtwD,EAAMmuC,EAAGoB,WAAU,EAAIqiB,EAASC,SAAQ,EAAI12D,EAAQqzG,aAAa,GAAGvrG,IAAOqtD,OACjF,OAAOniB,EAAGpzC,OAAOiF,EACrB,CACA,SAAS0rG,EAAav9D,EAAIlrC,EAAM0G,GAAgB,IAAb8kG,EAAOx7G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACzC,MAAMy7G,EAAW,GACXC,EAAW,GACjB,IAAK,IAAItyG,EAAI,EAAGA,EAAIsN,EAAGtN,IACnBqyG,EAAS/1G,KAAK41G,EAAsBpgE,EAAI,GAAGlrC,KAASwrG,EAAU9kG,EAAItN,IAClEsyG,EAASh2G,KAAK41G,EAAsBpgE,EAAI,GAAGlrC,KAASwrG,EAAU9kG,EAAItN,IAEtE,GAAI,IAAI4f,IAAI,IAAIyyF,KAAaC,IAAWpzF,OAAS,EAAI5R,EACjD,MAAM,IAAIzU,MAAM,mCACpB,OAAOw5G,EAAS30G,KAAKsI,GAAMssG,EAAS50G,KAAKuI,GAAM6rC,EAAG5H,IAAI4H,EAAG/W,IAAI/0B,EAAGC,OACpE,CAfAnR,EAAQw6G,OAAQ,EAAIW,EAAUn0D,OAAOphD,OAAO,iFAgB5C5F,EAAQu6G,aAAeA,EACvB,MAAMkD,EAAY,CACd,CAAC,EAAG,EAAG,GACP,CAAC,GAAI,EAAG,GACR,CAAC,EAAG,GAAI,IACV70G,KAAKsC,GAAMA,EAAEtC,IAAIhD,UACnB,SAAS00G,EAAcngF,EAAM2jC,GAEzB,IADA,EAAIq9C,EAAUp3D,eAAe5pB,EAAK6iB,KAC7B3tB,OAAOivC,cAAcnkC,EAAKyhB,QAAUvsB,OAAOivC,cAAcnkC,EAAK+5D,UAC/D,MAAM,IAAInwF,MAAM,wBAAwBo2B,KAC5C,MAAM3hB,EAAI2hB,EAAKyhB,KAAOzhB,EAAK+5D,SACrBz1B,EAAStkC,EAAKgkC,WAAahkC,EAAKikC,cAChCH,EAAiB,GACvB,IAAK,IAAI/yD,EAAI,EAAGA,EAAIuzD,EAAQvzD,IAAK,CAC7B,MAAMwyG,EAAM,GACZ,IAAK,IAAI5sG,EAAI,EAAGA,EAAI0H,EAAG1H,IACnB4sG,EAAIl2G,KAAK41G,EAAsBjjF,EAAK6iB,GAAI,QAASxkC,EAAItN,EAAI4F,IAC7DmtD,EAAez2D,KAAKk2G,EACxB,CACA,MAAM5rF,GAAM,EAAIspF,EAAWuC,UAAU,IAC9BxjF,EACH1d,EAAGjE,EACH6lD,UAAW,EACXN,sBAAsB,EACtBD,MACAG,mBAKJ,OAHAnsC,EAAItZ,EAAIA,EACRsZ,EAAI8pB,KAAOzhB,EAAKyhB,KAChB9pB,EAAIoiE,SAAW/5D,EAAK+5D,SACbpiE,CACX,CAUA,SAASutC,EAAanuD,EAAGC,GACrB,OAD0BrP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG9B,EAAQo6G,eAC3B,CAAClpG,EAAGC,EAAG,KAAK,EAC1B,CAXAnR,EAAQs6G,cAAgBA,EAOxBt6G,EAAQq6G,eANR,SAAwBlgF,GAAsB,IAAhByjF,EAAU97G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACvC,MAAM0W,EAAI2hB,EAAKyhB,KAAOzhB,EAAK+5D,SAC3B,IAAK7kE,OAAOivC,cAAcs/C,GACtB,MAAM,IAAI75G,MAAM,oBAAoB65G,KACxC,OAAOtD,EAAcngF,EAAMogF,EAAapgF,EAAK6iB,GAAI,WAAYxkC,EAAGolG,GACpE,EAEA59G,EAAQo6G,cAAgBE,EAAc,CAAEt9D,GAAIh9C,EAAQw6G,MAAO5+D,KAAM,EAAGs4C,SAAU,EAAG/1B,WAAY,EAAGC,cAAe,IAAMq/C,GAIrHz9G,EAAQq/D,aAAeA,EAIvBr/D,EAAQm6G,iBAHR,SAA0BjpG,EAAGC,GAA+B,IAA5B8lG,EAAEn1G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG9B,EAAQo6G,cACzC,OAAO3kE,EAAEymE,mBAAmB78C,EAAa5pB,EAAE8I,gBAAgBrtC,GAAIukC,EAAE8I,gBAAgBptC,GAAI8lG,GACzF,EAKAj3G,EAAQk6G,mBAHR,SAA4BhpG,GACxB,OAD6BpP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG9B,EAAQo6G,eAC9B,CAAClpG,EAAG,GAAI,KAAK,EAC3B,EAkBAlR,EAAQi6G,iBAhBR,SAA0BhzF,GAAoC,IAA5BgwF,EAAEn1G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG9B,EAAQo6G,cAC3C,MAAM,EAAE5hG,EAAC,KAAEojC,GAASq7D,EACpB,IAAK5sG,MAAMi3B,QAAQra,GACf,MAAM,IAAIljB,MAAM,mCACpB,MAAM85G,EAASxzG,MAAM3F,KAAKuiB,GAE1B,IADA42F,EAAOr2G,KAAK,IACLq2G,EAAO97G,OAAS65C,IAAS,GAC5BiiE,EAAOr2G,KAAK,IAChB,IAAI5G,EAAQ,IAAIyJ,MAAMmO,GAAG2Y,KAAK,IAC9B,IAAK,IAAIjmB,EAAI,EAAGA,EAAI2yG,EAAO97G,OAAQmJ,GAAK0wC,EAAM,CAC1C,IAAK,IAAI9qC,EAAI,EAAGA,EAAI8qC,EAAM9qC,IACtBlQ,EAAMkQ,IAAM+sG,EAAO3yG,EAAI4F,GAC3BlQ,EAAQq2G,EAAGr2G,EACf,CACA,OAAOA,EAAM,EACjB,sCCtSA,IAAI00D,EAAmBp1D,MAAQA,KAAKo1D,kBAAqBpyD,OAAO0G,OAAU,SAASw8B,EAAG5tB,EAAGhH,EAAGk5C,QAC7E1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B,IAAI+jD,EAAOryD,OAAOsyD,yBAAyBh9C,EAAGhH,GACzC+jD,KAAS,QAASA,GAAQ/8C,EAAEi9C,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAE34B,YAAY,EAAM9wB,IAAK,WAAa,OAAO0M,EAAEhH,EAAI,IAE5DtO,OAAOC,eAAeijC,EAAGskB,EAAI6K,EACjC,EAAM,SAASnvB,EAAG5tB,EAAGhH,EAAGk5C,QACT1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B40B,EAAEskB,GAAMlyC,EAAEhH,EACd,GACI9B,EAAgBxP,MAAQA,KAAKwP,cAAiB,SAAS8I,EAAGxY,GAC1D,IAAK,IAAIyW,KAAK+B,EAAa,YAAN/B,GAAoBvT,OAAO4H,UAAU4L,eAAeM,KAAKhX,EAASyW,IAAI6+C,EAAgBt1D,EAASwY,EAAG/B,EAC3H,EACAvT,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDsM,EAAa1O,EAAQ,OAA8ChB,GACnE0P,EAAa1O,EAAQ,OAAoDhB,GACzE0P,EAAa1O,EAAQ,OAAqChB,GAC1D0P,EAAa1O,EAAQ,OAA0ChB,GAC/D0P,EAAa1O,EAAQ,OAAuChB,GAC5D0P,EAAa1O,EAAQ,OAAuChB,GAC5D0P,EAAa1O,EAAQ,OAAqChB,GAC1D0P,EAAa1O,EAAQ,KAA2ChB,GAChE0P,EAAa1O,EAAQ,OAAsChB,GAC3D0P,EAAa1O,EAAQ,OAAuChB,GAC5D0P,EAAa1O,EAAQ,OAA6ChB,GAClE0P,EAAa1O,EAAQ,OAA+BhB,GACpD0P,EAAa1O,EAAQ,OAA6BhB,GAClD0P,EAAa1O,EAAQ,OAA+BhB,GACpD0P,EAAa1O,EAAQ,OAAiDhB,GACtE0P,EAAa1O,EAAQ,OAAuChB,GAC5D0P,EAAa1O,EAAQ,OAAqChB,GAC1D0P,EAAa1O,EAAQ,OAAkChB,GACvD0P,EAAa1O,EAAQ,OAAoChB,GACzD0P,EAAa1O,EAAQ,OAA6ChB,GAClE0P,EAAa1O,EAAQ,OAAyChB,GAC9D0P,EAAa1O,EAAQ,OAAqChB,GAC1D0P,EAAa1O,EAAQ,OAAoChB,GACzD0P,EAAa1O,EAAQ,OAAsChB,GAC3D0P,EAAa1O,EAAQ,OAAwChB,GAC7D0P,EAAa1O,EAAQ,OAAiChB,GACtD0P,EAAa1O,EAAQ,OAA6BhB,GAClD0P,EAAa1O,EAAQ,OAA+BhB,GACpD0P,EAAa1O,EAAQ,MAAkBhB,cC5CvCC,EAAOD,QAAU,slRCKjBA,EAAQ,OAAa,EAkBrBA,EAAQ,EAjBS,CACf,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,gBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,8MAEP,SAAY,oCCnBhBkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ89G,sBAAmB,EAC3B,MAAMC,EAA0B/8G,EAAQ,KAClCqE,EAAUrE,EAAQ,OACxB,MAAM88G,UAAyBC,EAAwB91G,sBACnDkG,WAAAA,CAAY6vG,GACR13G,MAAM03G,EADel8G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,6BAAgDA,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAE5E,CACA,eAAMiH,CAAUJ,EAAMP,GAClB,MAAMurB,QAAiB,EAAIxuB,EAAQ44G,SAAS/9G,KAAKusB,IAAM,gCAAkC5jB,EAAM3I,KAAKg+G,mBAAoB51G,GACxH,OAAO61G,WAAWtqF,EAAShwB,KAAK,GAAGu6G,MACvC,CACA,mBAAMC,CAAc/1G,GAChB,MAAMurB,QAAiB,EAAIxuB,EAAQ44G,SAAS/9G,KAAKusB,IAAM,uCAAwCvsB,KAAKg+G,mBAAoB51G,GACxH,OAAO61G,WAAWtqF,EAAShwB,KAAK,GAAGu6G,OAAS,GAChD,EAEJp+G,EAAQ89G,iBAAmBA,uXCV3B,MAAAQ,EAAAt9G,EAAA,OACA0uB,EAAA1uB,EAAA,OAGAhB,EAAAA,QAAA,SAAwB2Q,GACtB,OACEA,aAAa6f,YACP,MAAL7f,GAA0B,kBAANA,GAAyC,eAAvBA,EAAExC,YAAY2D,IAEzD,EAOa9R,EAAAA,GAAMkY,GAAoB,IAAIsY,WAAWtY,EAAIqY,OAAQrY,EAAIkZ,WAAYlZ,EAAI+mB,YACzEj/B,EAAAA,IAAOkY,GAClB,IAAIV,YAAYU,EAAIqY,OAAQrY,EAAIkZ,WAAY9nB,KAAKC,MAAM2O,EAAI+mB,WAAa,IAG7Dj/B,EAAAA,WAAckY,GACzB,IAAIqmG,SAASrmG,EAAIqY,OAAQrY,EAAIkZ,WAAYlZ,EAAI+mB,YAGlCj/B,EAAAA,KAAOw+G,CAACt8E,EAAcj0B,IAAmBi0B,GAAS,GAAKj0B,EAAWi0B,IAASj0B,EAE3EjO,EAAAA,KAAOy+G,CAACv8E,EAAcj0B,IAChCi0B,GAAQj0B,EAAWi0B,IAAU,GAAKj0B,IAAY,EAEpCjO,EAAAA,KAAmE,KAA5D,IAAIwwB,WAAW,IAAIhZ,YAAY,CAAC,YAAa+Y,QAAQ,GAE5DvwB,EAAAA,SAAYkiC,GACrBA,GAAQ,GAAM,WACdA,GAAQ,EAAK,SACbA,IAAS,EAAK,MACdA,IAAS,GAAM,IAENliC,EAAAA,aAAeA,EAAAmwB,KAAQ1f,GAAcA,EAAKA,IAAc,EAAAzQ,EAAA0+G,UAASjuG,GAG9EzQ,EAAAA,WAAA,SAA2BkY,GACzB,IAAK,IAAIhN,EAAI,EAAGA,EAAIgN,EAAInW,OAAQmJ,IAC9BgN,EAAIhN,IAAK,EAAAlL,EAAA0+G,UAASxmG,EAAIhN,GAE1B,EAGA,MAAMyxF,EAAwBtyF,MAAM3F,KAAK,CAAE3C,OAAQ,MAAO,CAAC49B,EAAGz0B,IAC5DA,EAAEvG,SAAS,IAAI4mB,SAAS,EAAG,OAK7BvrB,EAAAA,WAAA,SAA2Bq+C,IACzB,EAAA3uB,EAAA2uB,OAAOA,GAEP,IAAIr3C,EAAM,GACV,IAAK,IAAIkE,EAAI,EAAGA,EAAImzC,EAAMt8C,OAAQmJ,IAChClE,GAAO21F,EAAMt+C,EAAMnzC,IAErB,OAAOlE,CACT,EAGA,MAAM23G,EAAe,GAAfA,EAAuB,GAAvBA,EAA+B,GAA/BA,EAAuC,GAAvCA,EAA+C,GAA/CA,EAAuD,IAC7D,SAASC,EAAcC,GACrB,OAAIA,GAAQF,GAAaE,GAAQF,EAAkBE,EAAOF,EACtDE,GAAQF,GAAaE,GAAQF,EAAkBE,GAAQF,EAAY,IACnEE,GAAQF,GAAaE,GAAQF,EAAkBE,GAAQF,EAAY,SAAvE,CAEF,CAKA3+G,EAAAA,WAAA,SAA2BgH,GACzB,GAAmB,kBAARA,EAAkB,MAAM,IAAIjD,MAAM,mCAAqCiD,GAClF,MAAM83G,EAAK93G,EAAIjF,OACTg9G,EAAKD,EAAK,EAChB,GAAIA,EAAK,EAAG,MAAM,IAAI/6G,MAAM,0DAA4D+6G,GACxF,MAAM/hB,EAAQ,IAAIvsE,WAAWuuF,GAC7B,IAAK,IAAIC,EAAK,EAAG76E,EAAK,EAAG66E,EAAKD,EAAIC,IAAM76E,GAAM,EAAG,CAC/C,MAAMzlB,EAAKkgG,EAAc53G,EAAIgK,WAAWmzB,IAClC86E,EAAKL,EAAc53G,EAAIgK,WAAWmzB,EAAK,IAC7C,QAAWniC,IAAP0c,QAA2B1c,IAAPi9G,EAAkB,CACxC,MAAMJ,EAAO73G,EAAIm9B,GAAMn9B,EAAIm9B,EAAK,GAChC,MAAM,IAAIpgC,MAAM,+CAAiD86G,EAAO,cAAgB16E,EAC1F,CACA44D,EAAMiiB,GAAW,GAALtgG,EAAUugG,CACxB,CACA,OAAOliB,CACT,EA2BA,SAAgBsgB,EAAYnrG,GAC1B,GAAmB,kBAARA,EAAkB,MAAM,IAAInO,MAAM,2CAA2CmO,GACxF,OAAO,IAAIse,YAAW,IAAImnD,aAAct3D,OAAOnO,GACjD,CAQA,SAAgB0e,EAAQ/sB,GAGtB,MAFoB,kBAATA,IAAmBA,EAAOw5G,EAAYx5G,KACjD,EAAA6rB,EAAA2uB,OAAOx6C,GACAA,CACT,CArCa7D,EAAAA,SAAWuP,YAGxBvP,EAAAA,UAAOuP,eAAyB2vG,EAAe54F,EAAcgO,GAC3D,IAAI6qF,EAAKpyF,KAAKC,MACd,IAAK,IAAI9hB,EAAI,EAAGA,EAAIg0G,EAAOh0G,IAAK,CAC9BopB,EAAGppB,GAEH,MAAM2kC,EAAO9iB,KAAKC,MAAQmyF,EACtBtvE,GAAQ,GAAKA,EAAOvpB,UAClB,EAAAtmB,EAAAm3F,YACNgoB,GAAMtvE,EACR,CACF,EASA7vC,EAAAA,YAAAq9G,EAWAr9G,EAAAA,QAAA4wB,EASA5wB,EAAAA,YAAA,WACE,IAAI2X,EAAM,EACV,IAAK,IAAIzM,EAAI,EAAGA,EAAIpJ,UAAOC,OAAQmJ,IAAK,CACtC,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,IACjB,EAAAwkB,EAAA2uB,OAAO1tC,GACPgH,GAAOhH,EAAE5O,MACX,CACA,MAAM+vB,EAAM,IAAItB,WAAW7Y,GAC3B,IAAK,IAAIzM,EAAI,EAAGwxF,EAAM,EAAGxxF,EAAIpJ,UAAOC,OAAQmJ,IAAK,CAC/C,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB4mB,EAAItb,IAAI7F,EAAG+rF,GACXA,GAAO/rF,EAAE5O,MACX,CACA,OAAO+vB,CACT,EAGA9xB,EAAAA,KAAA,MAsBEuS,KAAAA,GACE,OAAOrS,KAAK8xB,YACd,GAcF,MAAMotF,EAAQ,CAAC,EAAEz6G,SAEjB3E,EAAAA,UAAA,SACEq/G,EACAllF,GAEA,QAAan4B,IAATm4B,GAA2C,oBAArBilF,EAAMpoG,KAAKmjB,GACnC,MAAM,IAAIp2B,MAAM,yCAElB,OADeb,OAAO0nF,OAAOy0B,EAAUllF,EAEzC,EAIAn6B,EAAAA,gBAAA,SAAmDs/G,GACjD,MAAMC,EAAS5+G,GAA2B2+G,IAAWr7G,OAAO2sB,EAAQjwB,IAAMuD,SACpE6vC,EAAMurE,IAIZ,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAS,IAAM01G,IACdC,CACT,EAEAv/G,EAAAA,wBAAA,SACEs/G,GAEA,MAAMC,EAAQA,CAAC5+G,EAAYw5B,IAAyBmlF,EAASnlF,GAAMl2B,OAAO2sB,EAAQjwB,IAAMuD,SAClF6vC,EAAMurE,EAAS,CAAC,GAItB,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAUuwB,GAAYmlF,EAASnlF,GAC9BolF,CACT,EAEAv/G,EAAAA,2BAAA,SACEs/G,GAEA,MAAMC,EAAQA,CAAC5+G,EAAYw5B,IAAyBmlF,EAASnlF,GAAMl2B,OAAO2sB,EAAQjwB,IAAMuD,SAClF6vC,EAAMurE,EAAS,CAAC,GAItB,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAUuwB,GAAYmlF,EAASnlF,GAC9BolF,CACT,EAKAv/G,EAAAA,YAAA,WAA4C,IAAhB8gG,EAAWh/F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACxC,GAAIw8G,EAAA3nG,QAA4C,oBAA3B2nG,EAAA3nG,OAAOC,gBAC1B,OAAO0nG,EAAA3nG,OAAOC,gBAAgB,IAAI4Z,WAAWswE,IAE/C,MAAM,IAAI/8F,MAAM,yCAClB,wlBC9PA,MAAA4rB,EAAA3uB,EAAA,OAUA,IAAAw+G,EAAAx+G,EAAA,OACEkC,OAAAA,eAAAA,EAAAA,WAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAA9qB,QAAQ,IACRxxF,OAAAA,eAAAA,EAAAA,OAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAAC,IAAI,IAAEv8G,OAAAA,eAAAA,EAAAA,OAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAAE,IAAI,IAAEx8G,OAAAA,eAAAA,EAAAA,QAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAAG,KAAK,IAAEz8G,OAAAA,eAAAA,EAAAA,OAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAAI,IAAI,IAAE18G,OAAAA,eAAAA,EAAAA,OAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAAtnD,IAAI,IAAEh1D,OAAAA,eAAAA,EAAAA,UAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAAK,OAAO,IAAE38G,OAAAA,eAAAA,EAAAA,UAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAAM,OAAO,IAAE58G,OAAAA,eAAAA,EAAAA,UAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAAO,OAAO,IAAE78G,OAAAA,eAAAA,EAAAA,SAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAA/mD,MAAM,IAAEv1D,OAAAA,eAAAA,EAAAA,QAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA0zG,EAAAQ,KAAK,IAEzE,IAAAC,EAAAj/G,EAAA,OACEkC,OAAAA,eAAAA,EAAAA,cAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAm0G,EAAAC,WAAW,IACXh9G,OAAAA,eAAAA,EAAAA,yBAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAm0G,EAAAE,sBAAsB,IACtBj9G,OAAAA,eAAAA,EAAAA,KAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAm0G,EAAAG,EAAE,IACFl9G,OAAAA,eAAAA,EAAAA,QAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAm0G,EAAAI,KAAK,IACLn9G,OAAAA,eAAAA,EAAAA,aAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAm0G,EAAAK,UAAU,IACVp9G,OAAAA,eAAAA,EAAAA,SAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAm0G,EAAAM,MAAM,IACNr9G,OAAAA,eAAAA,EAAAA,YAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAm0G,EAAAO,SAAS,IAGX,IAAAC,EAAAz/G,EAAA,OAASkC,OAAAA,eAAAA,EAAAA,cAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA20G,EAAAj+G,WAAW,IACpB,IAAAk+G,EAAA1/G,EAAA,OAASkC,OAAAA,eAAAA,EAAAA,UAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA40G,EAAAC,OAAO,IAAEz9G,OAAAA,eAAAA,EAAAA,0BAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA40G,EAAAE,uBAAuB,IAAE19G,OAAAA,eAAAA,EAAAA,eAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA40G,EAAAG,YAAY,IACvD,IAAAC,EAAA9/G,EAAA,OAASkC,OAAAA,eAAAA,EAAAA,eAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAg1G,EAAAC,YAAY,IAAE79G,OAAAA,eAAAA,EAAAA,aAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAg1G,EAAAE,UAAU,IAEpBhhH,EAAAA,MAAQ,CACnB0hD,QAAA/xB,EAAA+xB,QACAn3C,YAAAolB,EAAAplB,YACA02G,aAAAtxF,EAAAsxF,aACAC,WAAAvxF,EAAAuxF,WACAC,sBAAAxxF,EAAAwxF,sBACAC,mBAAAzxF,EAAAyxF,oBAGF,IAAAC,EAAArgH,EAAA,OACEkC,OAAAA,eAAAA,EAAAA,eAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu1G,EAAAC,YAAY,IACZp+G,OAAAA,eAAAA,EAAAA,UAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu1G,EAAAE,OAAO,IACPr+G,OAAAA,eAAAA,EAAAA,eAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu1G,EAAAG,YAAY,IACZt+G,OAAAA,eAAAA,EAAAA,aAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu1G,EAAAhqE,UAAU,IACVn0C,OAAAA,eAAAA,EAAAA,YAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu1G,EAAAroD,SAAS,IACT91D,OAAAA,eAAAA,EAAAA,iBAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu1G,EAAAI,cAAc,IACdv+G,OAAAA,eAAAA,EAAAA,oBAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu1G,EAAAK,iBAAiB,IACjBx+G,OAAAA,eAAAA,EAAAA,MAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu1G,EAAAM,GAAG,IAIL,IAAAC,EAAA5gH,EAAA,OAASkC,OAAAA,eAAAA,EAAAA,aAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA81G,EAAAC,UAAU,IAAE3+G,OAAAA,eAAAA,EAAAA,sBAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAA81G,EAAAE,mBAAmB,IACxC,IAAAC,EAAA/gH,EAAA,OAASkC,OAAAA,eAAAA,EAAAA,YAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAi2G,EAAAC,SAAS,IAAE9+G,OAAAA,eAAAA,EAAAA,UAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAi2G,EAAAE,OAAO,IAAE/+G,OAAAA,eAAAA,EAAAA,mBAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAi2G,EAAAG,gBAAgB,IAAEh/G,OAAAA,eAAAA,EAAAA,cAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAi2G,EAAAI,WAAW,IAAEj/G,OAAAA,eAAAA,EAAAA,UAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAi2G,EAAAK,OAAO,IACnE,IAAAC,EAAArhH,EAAA,OAASkC,OAAAA,eAAAA,EAAAA,UAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu2G,EAAAC,OAAO,IAAEp/G,OAAAA,eAAAA,EAAAA,aAAAA,CAAA05B,YAAA,EAAA9wB,IAAA,kBAAAu2G,EAAAE,UAAU,kCCnD5Br/G,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQwiH,0BAAuB,EAC/B,MAAMhgC,EAAmBxhF,EAAQ,OAC3BqE,EAAUrE,EAAQ,OACxB,MAAMwhH,UAA6BhgC,EAAiBG,eAShD,wBAAM8/B,CAAmB17G,EAAIuB,GACzB,IAAI1H,EAAQ,UACZ,KAAiB,YAAVA,GAAiC,cAAVA,SACpB,EAAIyE,EAAQijB,gBAAgB,EAAGhgB,GACrC1H,QAAcV,KAAKwoG,cAAc3hG,EAAGge,MACtB,cAAVnkB,GAAsC,MAAbmG,EAAG27G,cACtBxiH,KAAKyiH,sBAAsB57G,OAAI/E,OAAWA,GAAW,GAAO8gB,OAAMrR,IACnD,MAAbA,EAAE0c,SAAmB1c,EAAE0c,QAAQ6xB,SAAS,uEAE5Cl3B,QAAQ/F,MAAM,iCAAkCtR,EAAE,IAG9D,GAAc,aAAV7Q,EACA,MAAM,IAAImD,MAAM,wBACxB,CAQA,yBAAM6+G,CAAoBh/G,EAAQg6E,GAC9B,IAAIx3E,QAAcxC,EAAOogF,WACrB59E,IAAUR,OAAO,IAAMhC,EAAOkgF,oBAE9B19E,EAAQR,OAAO,IAEnB,MAAMi9G,QAAsBj/G,EAAOsgF,yBAAyB99E,GACvC,MAAjBy8G,GACAjlC,EAAIklC,cAAc5iH,KAAKw6E,KAAKqoC,SAASC,4BAA4BH,IAErE,IAAK,IAAI33G,EAAI,EAAGA,EAAI0yE,EAAI77E,OAAQmJ,IAAK,CACjC,MAAMnE,EAAK62E,EAAI1yE,GACS,MAApBnE,EAAGq2E,QAAQh3E,QACXA,EAAQR,OAAOmB,EAAGq2E,QAAQh3E,QACjB,MAATA,IACAA,EAAQR,aAAa1F,KAAKw6E,KAAKxnD,SAAS+wD,mBAAmBrgF,EAAOyzC,gBAC9C,MAApBtwC,EAAGq2E,QAAQh3E,QACXW,EAAGq2E,QAAQh3E,MAAQA,GACvBlG,KAAK6hB,OAAO0F,MAAM,4CAA8Cvc,EAAI,GAAK,IAAM0yE,EAAI77E,OAAS,aAAegF,EAAGq2E,QAAQh3E,OACtHA,GAASR,OAAO,GACc,MAA1B1F,KAAK+iH,yBACC/iH,KAAK+iH,kBAAkBl8G,EACrC,CACJ,CAUA,2BAAM47G,CAAsB57G,EAAIuhG,EAAiB1kG,GAAyC,IAAjCs/G,IAAwBphH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAI7E,GAHuB,MAAnBwmG,SACMA,EAAgBvhG,EAAGge,WAAY7kB,KAAKqoG,YAAYxhG,IAC1D7G,KAAK6hB,OAAO0F,MAAM,iDAAkD1gB,GACnD,MAAbA,EAAG27G,OAAgB,CACnB,IAAIS,EACJ,OAAQp8G,EAAGc,MACP,IAAK,SACDs7G,SAAgBv/G,EAAO8uB,QAAQ0wF,QAAQr8G,EAAGA,GAAIA,EAAGq2E,UAAUimC,iBAC3D,MACJ,IAAK,iBACDF,SAAgBv/G,EAAO8uB,QAAQ4wF,cAAcv8G,EAAGA,GAAIA,EAAGq2E,UAAUimC,iBACjE,MACJ,QACI,MAAM,IAAIt/G,MAAM,wBAGxB,OADAgD,EAAGge,KAAOo+F,EACHA,CACX,CACA,MAAMI,QAAiB,EAAIl+G,EAAQke,iBAAgB,KAC/C,OAAQxc,EAAGc,MACP,IAAK,SACD,OAAO3H,KAAKgzB,SAASswF,QAAQC,OAAO18G,EAAG27G,OAAQ37G,EAAGq2E,SAASl0E,MAAK4oB,GAAOA,EAAIuxF,mBAC/E,IAAK,iBACD,OAAOnjH,KAAKgzB,SAASswF,QAAQF,cAAcv8G,EAAG27G,OAAQ37G,EAAGq2E,SAASl0E,MAAM4oB,GAAQA,EAAIuxF,mBACxF,QACI,MAAM,IAAIt/G,MAAM,wBACxB,GACDm/G,EAA2BhjH,KAAKupB,YAAc,CAAEE,WAAY,IAI/D,OAHI5iB,EAAGge,OAASw+F,GACZrjH,KAAK6hB,OAAOkH,KAAK,4EACrB/oB,KAAK6hB,OAAOwD,KAAK,sDAAwDxe,EAAGge,KAAO,aAAew+F,GAC3FA,CACX,CAcA,oBAAMp1D,CAAevqD,EAAQg6E,EAAKmqB,EAAqBz/F,EAAa+/F,EAAUC,GAE1E,SADMpoG,KAAK0iH,oBAAoBh/G,EAAQg6E,IAClCh6E,EAAOkgF,kBACR,IAAK,IAAI54E,EAAI,EAAGA,EAAI0yE,EAAI77E,OAAQmJ,IAAK,CACjC,MAAMnE,EAAK62E,EAAI1yE,GACf,OAAQnE,EAAGc,MACP,IAAK,SACDd,EAAG27G,aAAe9+G,EAAO8uB,QAAQgxF,gBAAgB38G,EAAGA,GAAIA,EAAGq2E,UAC3D,EAAI/3E,EAAQs+G,eAAe58G,GAC3B,MACJ,IAAK,iBACDA,EAAG27G,aAAe9+G,EAAO8uB,QAAQkxF,0BAA0B78G,EAAGA,GAAIA,EAAGq2E,UACrE,EAAI/3E,EAAQs+G,eAAe58G,GAC3B,MACJ,QACI,MAAM,IAAIhD,MAAM,wBAExB7D,KAAK6hB,OAAO0F,MAAM,0CAA4Cvc,EAAI,GAAK,IAAM0yE,EAAI77E,OAAS,MAAQgF,EAAGge,KACzG,CAEJ7kB,KAAK6hB,OAAO0F,MAAM,kDAAoDm2D,EAAI77E,OACtE,yBAA2BgmG,EAAsB,cAAgBM,GACrE,MAAMwb,EAAQ,GACd,GAAIxb,EAAU,CACV,MAAMn7E,EAAW,GACjB,IAAK,IAAIhiB,EAAI,EAAGA,EAAI0yE,EAAI77E,OAAQmJ,IAAK,CACjC,MAAM44G,EAAWlmC,EAAI1yE,GACf6Z,QAAa7kB,KAAKyiH,sBAAsBmB,EAAUxb,EAAiB1kG,GACrEmkG,GACA76E,EAAS1lB,KAAKtH,KAAKuiH,mBAAmBqB,EAAUx7G,IACpDu7G,EAAMr8G,KAAKud,GACX7kB,KAAK6hB,OAAO0F,MAAM,wCAA0Cvc,EAAI,GAAK,IAAM0yE,EAAI77E,OAAS,MAAQ+hH,EAAS/+F,KAC7G,CACImI,EAASnrB,OAAS,SACZwC,QAAQoE,IAAIukB,EAC1B,MAEI,IAAK,IAAIhiB,EAAI,EAAGA,EAAI0yE,EAAI77E,OAAQmJ,IAAK,CACjC,MAAM44G,EAAWlmC,EAAI1yE,GACf6Z,QAAa7kB,KAAKyiH,sBAAsBmB,EAAUxb,EAAiB1kG,GACnEmgH,EAAiB7jH,KAAKuiH,mBAAmBqB,EAAUx7G,GACzDpI,KAAK6hB,OAAO0F,MAAM,wCAA0Cvc,EAAI,GAAK,IAAM0yE,EAAI77E,OAAS,MAAQ+hH,EAAS/+F,OAErG7Z,EAAI0yE,EAAI77E,OAAS,GAAKgmG,UAChBgc,EACVF,EAAMr8G,KAAKud,EACf,CAIJ,OAFA7kB,KAAK6hB,OAAOwD,KAAK,+CAAiDq4D,EAAI77E,OAClE,yBAA2BgmG,EAAsB,cAAgBM,GAC9Dwb,CACX,CAMAtb,WAAAA,CAAYxhG,GACR,OAAOxC,QAAQC,QAAQqpB,KAAKC,UAAU/mB,GAAI,CAACmD,EAAK9G,IACrB,kBAAXA,GACD,EAAIiC,EAAQgmD,OAAOjoD,GACvBA,IAEf,CAMAolG,aAAAA,CAAcC,GACV,OAAOlkG,QAAQC,QAAQqpB,KAAKwE,MAAMo2E,GACtC,CAMA,iBAAME,CAAY5hG,GACd,MAAMi9G,QAAiB9jH,KAAKsoG,cAAczhG,GAC1C,aAAa7G,KAAKwoG,cAAcsb,EAASj/F,KAC7C,CAMA,mBAAM2jF,CAAc3jF,GAChB,MAAMqJ,QAAeluB,KAAKgzB,SAAS+wF,qBAAqBl/F,GAAMjC,OAAMrR,IAChE,GAAiB,MAAbA,EAAE0c,SAAmB1c,EAAE0c,QAAQ6xB,SAAS,kCACxC,OAAO,KACX,MAAMvuC,CAAC,IAEX,OAAc,MAAV2c,EACO,YACoB,aAA3BA,EAAO81F,gBACA,UACoB,aAA3B91F,EAAO81F,iBAA8D,cAA5B91F,EAAO+1F,iBACzC,UAEJ,UACX,CACA/a,gBAAAA,CAAiBF,GACbhpG,KAAK+iH,kBAAoB/Z,CAC7B,CACAG,iBAAAA,CAAkBH,GAEd,OADAhpG,KAAK+iH,kBAAoB,MAClB,CACX,EAEJjjH,EAAQwiH,qBAAuBA,4ECnN/B,MAAM4B,EAA2B,IAAI5sG,YAAY,CAC/C,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,aAKhF6sG,EAA4B,IAAI7sG,YAAY,CAChD,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,aAOhF8sG,EAA2B,IAAI9sG,YAAY,IAC3C,MAAO+sG,UAAez0F,EAAAA,GAY1B3hB,WAAAA,GACE7H,MAAM,GAAI,GAAI,GAAG,GAVT,KAAAmqC,EAA2B,EAAf4zE,EAAU,GACtB,KAAA3zE,EAA2B,EAAf2zE,EAAU,GACtB,KAAA1zE,EAA2B,EAAf0zE,EAAU,GACtB,KAAAzzE,EAA2B,EAAfyzE,EAAU,GACtB,KAAAp/D,EAA2B,EAAfo/D,EAAU,GACtB,KAAAp5B,EAA2B,EAAfo5B,EAAU,GACtB,KAAAl5D,EAA2B,EAAfk5D,EAAU,GACtB,KAAAh5B,EAA2B,EAAfg5B,EAAU,EAIhC,CACUv4G,GAAAA,GACR,MAAM,EAAE2kC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEqU,EAAC,EAAEgmC,EAAC,EAAE9/B,EAAC,EAAEkgC,GAAMnrF,KACnC,MAAO,CAACuwC,EAAGC,EAAGC,EAAGC,EAAGqU,EAAGgmC,EAAG9/B,EAAGkgC,EAC/B,CAEU70E,GAAAA,CACRi6B,EAAWC,EAAWC,EAAWC,EAAWqU,EAAWgmC,EAAW9/B,EAAWkgC,GAE7EnrF,KAAKuwC,EAAQ,EAAJA,EACTvwC,KAAKwwC,EAAQ,EAAJA,EACTxwC,KAAKywC,EAAQ,EAAJA,EACTzwC,KAAK0wC,EAAQ,EAAJA,EACT1wC,KAAK+kD,EAAQ,EAAJA,EACT/kD,KAAK+qF,EAAQ,EAAJA,EACT/qF,KAAKirD,EAAQ,EAAJA,EACTjrD,KAAKmrF,EAAQ,EAAJA,CACX,CACUt6D,OAAAA,CAAQN,EAAgBwG,GAEhC,IAAK,IAAI/rB,EAAI,EAAGA,EAAI,GAAIA,IAAK+rB,GAAU,EAAGqtF,EAASp5G,GAAKulB,EAAK+zF,UAAUvtF,GAAQ,GAC/E,IAAK,IAAI/rB,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAC5B,MAAMu5G,EAAMH,EAASp5G,EAAI,IACnBw5G,EAAKJ,EAASp5G,EAAI,GAClBy5G,GAAKnG,EAAAA,EAAAA,IAAKiG,EAAK,IAAKjG,EAAAA,EAAAA,IAAKiG,EAAK,IAAOA,IAAQ,EAC7C71C,GAAK4vC,EAAAA,EAAAA,IAAKkG,EAAI,KAAMlG,EAAAA,EAAAA,IAAKkG,EAAI,IAAOA,IAAO,GACjDJ,EAASp5G,GAAM0jE,EAAK01C,EAASp5G,EAAI,GAAKy5G,EAAKL,EAASp5G,EAAI,IAAO,CACjE,CAEA,IAAI,EAAEulC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEqU,EAAC,EAAEgmC,EAAC,EAAE9/B,EAAC,EAAEkgC,GAAMnrF,KACjC,IAAK,IAAIgL,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MACM05G,EAAMv5B,IADGmzB,EAAAA,EAAAA,IAAKv5D,EAAG,IAAKu5D,EAAAA,EAAAA,IAAKv5D,EAAG,KAAMu5D,EAAAA,EAAAA,IAAKv5D,EAAG,MACzBr1B,EAAAA,EAAAA,IAAIq1B,EAAGgmC,EAAG9/B,GAAKi5D,EAASl5G,GAAKo5G,EAASp5G,GAAM,EAE/D25G,IADSrG,EAAAA,EAAAA,IAAK/tE,EAAG,IAAK+tE,EAAAA,EAAAA,IAAK/tE,EAAG,KAAM+tE,EAAAA,EAAAA,IAAK/tE,EAAG,MAC7B5gB,EAAAA,EAAAA,IAAI4gB,EAAGC,EAAGC,GAAM,EACrC06C,EAAIlgC,EACJA,EAAI8/B,EACJA,EAAIhmC,EACJA,EAAKrU,EAAIg0E,EAAM,EACfh0E,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAKm0E,EAAKC,EAAM,CAClB,CAEAp0E,EAAKA,EAAIvwC,KAAKuwC,EAAK,EACnBC,EAAKA,EAAIxwC,KAAKwwC,EAAK,EACnBC,EAAKA,EAAIzwC,KAAKywC,EAAK,EACnBC,EAAKA,EAAI1wC,KAAK0wC,EAAK,EACnBqU,EAAKA,EAAI/kD,KAAK+kD,EAAK,EACnBgmC,EAAKA,EAAI/qF,KAAK+qF,EAAK,EACnB9/B,EAAKA,EAAIjrD,KAAKirD,EAAK,EACnBkgC,EAAKA,EAAInrF,KAAKmrF,EAAK,EACnBnrF,KAAKsW,IAAIi6B,EAAGC,EAAGC,EAAGC,EAAGqU,EAAGgmC,EAAG9/B,EAAGkgC,EAChC,CACUp6D,UAAAA,GACRqzF,EAASnzF,KAAK,EAChB,CACAY,OAAAA,GACE7xB,KAAKsW,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9BtW,KAAKqwB,OAAOY,KAAK,EACnB,EAsBK,MAAMuvC,GAAgCokD,EAAAA,EAAAA,KAAgB,IAAM,IAAIP,kCChIvE,IAAIQ,EAA6B/jH,EAAAA,OAAAA,EAAiC+jH,2BAYlE,SAASC,IAAQ,CAoEjB/kH,EAAOD,QAhEP,SAASilH,EAAIC,EAAQ/qF,EAAM+uE,GACzB,GAAoB,oBAAT/uE,EAAqB,OAAO8qF,EAAIC,EAAQ,KAAM/qF,GACpDA,IAAMA,EAAO,CAAC,GACnB+uE,EAlBF,SAAcA,GACZ,IAAIic,GAAS,EACb,OAAO,WACL,IAAIA,EAAJ,CACAA,GAAS,EACT,IAAK,IAAIh7G,EAAOrI,UAAUC,OAAQsT,EAAO,IAAIhL,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/E+K,EAAK/K,GAAQxI,UAAUwI,GAEzB4+F,EAAS3xB,MAAMr3E,KAAMmV,EALH,CAMpB,CACF,CAQa6hG,CAAKhO,GAAY8b,GAC5B,IAAII,EAAWjrF,EAAKirF,WAA8B,IAAlBjrF,EAAKirF,UAAsBF,EAAOE,SAC9D1vD,EAAWv7B,EAAKu7B,WAA8B,IAAlBv7B,EAAKu7B,UAAsBwvD,EAAOxvD,SAC9D2vD,EAAiB,WACdH,EAAOxvD,UAAU4vD,GACxB,EACIC,EAAgBL,EAAOM,gBAAkBN,EAAOM,eAAep1F,SAC/Dk1F,EAAW,WACb5vD,GAAW,EACX6vD,GAAgB,EACXH,GAAUlc,EAASlyF,KAAKkuG,EAC/B,EACIO,EAAgBP,EAAOQ,gBAAkBR,EAAOQ,eAAeC,WAC/DC,EAAQ,WACVR,GAAW,EACXK,GAAgB,EACX/vD,GAAUwzC,EAASlyF,KAAKkuG,EAC/B,EACI/pD,EAAU,SAAiBrxC,GAC7Bo/E,EAASlyF,KAAKkuG,EAAQp7F,EACxB,EACI+7F,EAAU,WACZ,IAAI/7F,EACJ,OAAIs7F,IAAaK,GACVP,EAAOQ,gBAAmBR,EAAOQ,eAAezsC,QAAOnvD,EAAM,IAAIi7F,GAC/D7b,EAASlyF,KAAKkuG,EAAQp7F,IAE3B4rC,IAAa6vD,GACVL,EAAOM,gBAAmBN,EAAOM,eAAevsC,QAAOnvD,EAAM,IAAIi7F,GAC/D7b,EAASlyF,KAAKkuG,EAAQp7F,SAF/B,CAIF,EACIg8F,EAAY,WACdZ,EAAO7pD,IAAI68C,GAAG,SAAUoN,EAC1B,EAcA,OAtDF,SAAmBJ,GACjB,OAAOA,EAAOa,WAAqC,oBAAjBb,EAAOt3F,KAC3C,CAuCMo4F,CAAUd,GAIHxvD,IAAawvD,EAAOM,iBAE7BN,EAAOhN,GAAG,MAAOmN,GACjBH,EAAOhN,GAAG,QAASmN,KANnBH,EAAOhN,GAAG,WAAYoN,GACtBJ,EAAOhN,GAAG,QAAS2N,GACfX,EAAO7pD,IAAKyqD,IAAiBZ,EAAOhN,GAAG,UAAW4N,IAMxDZ,EAAOhN,GAAG,MAAO0N,GACjBV,EAAOhN,GAAG,SAAUoN,IACD,IAAfnrF,EAAKpX,OAAiBmiG,EAAOhN,GAAG,QAAS/8C,GAC7C+pD,EAAOhN,GAAG,QAAS2N,GACZ,WACLX,EAAOjN,eAAe,WAAYqN,GAClCJ,EAAOjN,eAAe,QAAS4N,GAC/BX,EAAOjN,eAAe,UAAW6N,GAC7BZ,EAAO7pD,KAAK6pD,EAAO7pD,IAAI48C,eAAe,SAAUqN,GACpDJ,EAAOjN,eAAe,MAAOoN,GAC7BH,EAAOjN,eAAe,QAASoN,GAC/BH,EAAOjN,eAAe,SAAUqN,GAChCJ,EAAOjN,eAAe,MAAO2N,GAC7BV,EAAOjN,eAAe,QAAS98C,GAC/B+pD,EAAOjN,eAAe,QAAS4N,EACjC,CACF,mBCpFA,IAAI7lH,EAAUC,EAAOD,QAAU,SAAcimH,GAC3CA,EAAYA,EAAUnxG,cAEtB,IAAIoxG,EAAYlmH,EAAQimH,GACxB,IAAKC,EAAW,MAAM,IAAIniH,MAAMkiH,EAAY,+CAE5C,OAAO,IAAIC,CACb,EAEAlmH,EAAQmmH,IAAMnlH,EAAQ,OACtBhB,EAAQomH,KAAOplH,EAAQ,OACvBhB,EAAQqmH,OAASrlH,EAAQ,OACzBhB,EAAQ0gE,OAAS1/D,EAAQ,OACzBhB,EAAQsmH,OAAStlH,EAAQ,OACzBhB,EAAQumH,OAASvlH,EAAQ,qCCbzBkC,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQo1D,MAAQp1D,EAAQwmH,WAAaxmH,EAAQymH,aAAezmH,EAAQ6zD,wBAA0B7zD,EAAQ0mH,iBAAmB1mH,EAAQ2mH,sBAAwB3mH,EAAQ4mH,iBAAmB5mH,EAAQ6mH,aAAe7mH,EAAQ8mH,gBAAkB9mH,EAAQ+mH,gBAAa,EAC1P,MAAMn7F,EAAiB5qB,EAAQ,OACzBsyD,EAAWtyD,EAAQ,OACnBuC,EAAavC,EAAQ,OACrBgmH,EAAchmH,EAAQ,OACtBqE,EAAUrE,EAAQ,OAClBimH,EAAWjmH,EAAQ,OACnBkmH,EAAWlmH,EAAQ,OACnByC,EAAWzC,EAAQ,OAuBzB,SAAS6lH,EAAa/3G,GAClB,MAAsB,UAAfA,EAAIsf,SACQ,MAAdtf,EAAIof,QAAwC,kBAAfpf,EAAIof,OAC1C,CAEA,SAAS04F,EAAiB93G,GACtB,MAAmB,eAAZA,EAAIk2C,GACf,CAEA,SAAS2hE,EAAsB73G,GAC3B,MAAmB,oBAAZA,EAAIk2C,GACf,CAEA,SAAS0hE,EAAiB53G,EAAKvB,GAC3B,MAAyB,kBAAXuB,EAAI4kD,KACC,MAAd5kD,EAAIq4G,QAAkB98G,MAAMi3B,QAAQxyB,EAAIq4G,WACrB,OAAnBr4G,EAAIs4G,iBAA0CplH,IAAnB8M,EAAIs4G,YAAsD,mBAAnBt4G,EAAIs4G,cACjD,MAArBt4G,EAAI8kD,eAAyBC,EAAwB/kD,EAAI8kD,cAAermD,GACjF,CAEA,SAASsmD,EAAwB/kD,EAAKvB,GAClC,GAAW,MAAPuB,GAA8B,kBAARA,GAAuC,kBAAZA,EAAIk2C,IACrD,OAAO,EACX,OAAQl2C,EAAIk2C,KACR,IAAK,UACD,OAAsB,MAAfl2C,EAAIqf,SAAmBrf,EAAIqf,QAAQpsB,QAAU,IACxD,IAAK,MACD,OAA0B,MAAnB+M,EAAIu4G,aAAuBv4G,EAAIu4G,YAAYtlH,QAAU,KAC7C,MAAX+M,EAAI2d,MACO,MAAVlf,GAAkB,IAAI44E,IAAIr3E,EAAI2d,KAAKi6D,WAAan5E,GACzD,IAAK,MACD,OAA0B,MAAnBuB,EAAIu4G,aAAuBv4G,EAAIu4G,YAAYtlH,QAAU,KACtC,MAAlB+M,EAAIw4G,YAAsBx4G,EAAIw4G,WAAWvlH,QAAU,MAAQ/B,EAAQymH,aAAajyG,KAAK1F,EAAIw4G,aAC/E,MAAVx4G,EAAIy4G,IAAcz4G,EAAIy4G,GAAGxlH,QAAU,IAAM/B,EAAQymH,aAAajyG,KAAK1F,EAAIy4G,IAC/E,QAEI,OAAO,EAEnB,CAhDAvnH,EAAQ+mH,WAZR,SAAoB3jH,GAChB,MAAyB,kBAAVA,GACF,MAATA,GACe,QAAfA,EAAMyE,MACiB,kBAAfzE,EAAMwO,KACS,kBAAfxO,EAAMyO,KACoB,kBAA3BzO,EAAMokH,kBACqB,kBAA3BpkH,EAAMqkH,wBACczlH,IAA1BoB,EAAMskH,iBAAkE,kBAA1BtkH,EAAMskH,wBACrC1lH,IAAfoB,EAAMukH,MAA4C,kBAAfvkH,EAAMukH,OAC1Cf,EAAiBxjH,EAAMmvD,OAC/B,EAUAvyD,EAAQ8mH,gBARR,SAAyB1jH,GACrB,MAAyB,kBAAVA,GACF,MAATA,GACe,aAAfA,EAAMyE,MACiB,kBAAfzE,EAAMwO,KACS,kBAAfxO,EAAMyO,KACd80G,EAAsBvjH,EAAMmvD,OACpC,EAMAvyD,EAAQ6mH,aAAeA,EAIvB7mH,EAAQ4mH,iBAAmBA,EAI3B5mH,EAAQ2mH,sBAAwBA,EAOhC3mH,EAAQ0mH,iBAAmBA,EAoB3B1mH,EAAQ6zD,wBAA0BA,EAClC7zD,EAAQymH,aAAe,mEACvBzmH,EAAQwmH,WAAa,icACrB,MAAMpxD,EACF,sBAAOwyD,CAAgB11G,GACnB,MAAMgG,EAAM,sCAAsC2vG,KAAK31G,EAAI4C,eAC3D,OAAW,MAAPoD,EACO,KACJA,EAAI,EACf,CACA,oBAAO4vG,CAAc51G,GACjB,OAAoC,MAA7BhS,KAAK0nH,gBAAgB11G,EAChC,CAMA,kBAAO61G,CAAY71G,GACf,IACI,OAAOA,EAAInJ,WAAW,cAAgBmJ,EAAInJ,WAAW,YACzD,CACA,MAAO0I,GAAK,CACZ,OAAO,CACX,CAMA,yBAAOu2G,CAAmB91G,GACtB,OAAOlS,EAAQwmH,WAAWhyG,KAAKtC,EACnC,CAKA,cAAO8iD,CAAQ9iD,GACX,OAAOkjD,EAAM0yD,cAAc51G,IAAQkjD,EAAM4yD,mBAAmB91G,IAAQkjD,EAAM2yD,YAAY71G,EAC1F,CAOA,qBAAO+1G,CAAe/1G,GAClB,GAAIlS,EAAQwmH,WAAWhyG,KAAKtC,GAAM,CAE9B,MAAMgG,EAAMhG,EAAIzJ,MAAM,KAChBy/G,EAAWhwG,EAAI,GACf3K,EAAS2K,EAAI,GACnB,IAAIiwG,EAAS,QAIb,OAHI56G,EAAOo5E,SAAS,YAChBwhC,EAAS,QAENA,EAAS,MAAQ56G,EAAS,uBAAyB26G,CAC9D,CACK,GAAI9yD,EAAM2yD,YAAY71G,GAAM,CAE7B,MAAMrO,EAAOqO,EAAIlJ,UAAU,GAE3B,IAAIm/G,EAAS,QAIb,OALgB,IAAIhiC,IAAI,UAAYtiF,GAExB6iF,SAASC,SAAS,YAC1BwhC,EAAS,QAENA,EAAS,MAAQtkH,CAC5B,CACK,CACD,MAAM8vD,EAAQyB,EAAMwyD,gBAAgB11G,GACpC,GAAa,MAATyhD,EAAe,CACf,IAAMlgD,OAAQ20G,EAAK5nF,MAAO6nF,GAAapB,EAASlmD,OAAOphD,OAAOg0C,EAAO,KACjE20D,EAAmBrB,EAASlmD,OAAOwnD,UAAUF,GACjD,OAAO5kH,EAASgB,OAAOC,KAAK4jH,GAAkB3jH,UAClD,CACJ,CACA,OAAO,IACX,CASA,qBAAaswD,CAAS/iD,GAA+C,IAA1Cs2G,IAAW1mH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAAS4mB,EAAO5mB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAEsG,EAAWxG,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC5C,MAAfwmH,IACAA,GAAc,GAClB,MAAM/7F,EAAM2oC,EAAM6yD,eAAe/1G,GACjC,GAAW,MAAPua,EAAa,CACb,MAAMg8F,EAAcA,KAAM,EAAIpjH,EAAQ44G,SAASxxF,EAAK/D,EAASpgB,GAAa,GAC1E,IAAIurB,EAAW20F,QACL,EAAInjH,EAAQke,gBAAgBklG,EAAa,KAAM78F,EAAe2C,aAAcjmB,SAC5EmgH,IACV,GAAI5B,EAAahzF,GACb,OAAO,KACX,GAAqB,eAAjBA,EAASmxB,IACT,IACInxB,EAAS60F,gBAAkB76F,KAAKwE,MAAMwB,EAAS80F,SACnD,CACA,MAAO7+F,GACH+J,EAAS60F,gBAAkB,EAC/B,CACJ,OAAK9B,EAAiB/yF,IAAc8yF,EAAsB9yF,GAEnD,IACAA,EACHpH,IAAKva,GAHE,IAKf,CACJ,CASA,yBAAa02G,CAAa12G,EAAKs2G,EAAa9/F,EAASpgB,GACjD,IAAIwpB,QAAYsjC,EAAMH,SAAS/iD,EAAKs2G,EAAa9/F,EAASpgB,GAC1D,GAAgB,eAAZwpB,EAAIkzB,IAAsB,CAC1B,MAAM6jE,EAAa/2F,EACnB,IAAI21F,EACAC,EACAC,EAiBJ,OAhBAkB,EAAWH,gBAAgBz5G,SAAQpL,IAC/B,OAAQA,EAAK,IACT,IAAK,aACD4jH,EAAmB5jH,EAAK,GACxB,MACJ,IAAK,iBACD6jH,EAAkB7jH,EAAK,GACvB,MACJ,IAAK,mBAGL,IAAK,oBACD8jH,EAAO,QAAU9jH,EAAK,GAAK,IAAMA,EAAK,GAE9C,IAEG,CACHgE,KAAM,MACN+J,IAAKhM,OAAOijH,EAAWC,aAAe,MACtCj3G,IAAKjM,OAAOijH,EAAW7sF,aAAe,MACtCwrF,iBAAkBqB,EAAWE,gBAAkB,EAC/CtB,mBACAC,kBACAC,OACAp1D,OAAQs2D,EAEhB,CACA,GAAgB,oBAAZ/2F,EAAIkzB,IAA2B,CAC/B,MAAM6jE,EAAa/2F,EACnB,MAAO,CACHjqB,KAAM,WACN+J,IAAKhM,OAAOijH,EAAWG,iBAAmB,MAC1Cn3G,IAAKjM,OAAOijH,EAAWI,iBAAmB,MAC1C12D,OAAQs2D,EAEhB,CACA,OAAO,IACX,CAWA,wBAAaK,CAAYL,EAAYnnH,EAAQk5B,EAASlS,EAASpgB,GAC3D,MAAMiqD,EAAS,CAAC,WAAsB,MAAT7wD,GAAgBiD,SAAS,KACvC,MAAXi2B,GACA23B,EAAO/qD,KAAK,WAAa2hH,mBAAmBvuF,IAEhD,MAAMwuF,GAAeP,EAAW3f,SAASlpD,SAAS,KAAO,IAAM,KAAOuS,EAAO6K,KAAK,KAC5EvpC,QAAiB,EAAIxuB,EAAQke,iBAAgB,KAAM,EAAIle,EAAQ44G,SAAS4K,EAAW3f,SAAWkgB,EAAa1gG,EAASpgB,GAAa,IAAO,KAAMsjB,EAAe2C,aAAcjmB,GACjL,GAAIu+G,EAAahzF,GACb,MAAM,IAAIjI,EAAe2C,aAAa,yBAA2BsF,EAAS3F,OAAQ,KACtF,IAAKw4F,EAAiB7yF,GAClB,MAAM,IAAIjI,EAAe2C,aAAa,0BAA2B,KACrE,MAAM8lC,GAAW,EAAIf,EAAS3zC,QAAQkU,EAAS6/B,IACzC21D,EAAW9lH,EAAW,UAAUU,OAAO4kH,EAAWF,UAAUzkH,SAASS,SAAS,OACpF,GAAI0vD,EAASS,WAAWw0D,sBAAwBD,EAC5C,MAAM,IAAIz9F,EAAe2C,aAAa,+CAAgD,KAE1F,GADqB3oB,OAAOyuD,EAASC,iBACN,MAAT5yD,EAClB,MAAM,IAAIkqB,EAAe2C,aAAa,qCAAsC,KAChF,MAAO,CACHg7F,QAAS11F,EAAS6/B,GAClB81D,cAAen1D,EACfT,cAAe//B,EAAS+/B,cAEhC,CAUA,uCAAa61D,CAA2BC,EAAiBC,GACrD,MAAMp3D,EAAS,CACX,MAAQo3D,EACR,MAAQD,EAAgBl/D,IAEtB4+D,GAAeM,EAAgBxgB,SAASlpD,SAAS,KAAO,IAAM,KAAOuS,EAAO6K,KAAK,KACjFvpC,QAAiB,EAAIxuB,EAAQke,iBAAgB,KAAM,EAAIle,EAAQ44G,SAASyL,EAAgBxgB,SAAWkgB,EAAa,KAAM,MAAM,IAAO,KAAMx9F,EAAe2C,cAC9J,GAAIs4F,EAAahzF,GACb,MAAM,IAAIjI,EAAe2C,aAAa,yBAA2BsF,EAAS3F,OAAQ,IAC1F,CASA,6BAAa07F,CAAiBF,EAAiBC,GAC3C,MAAM/3G,EAAMhM,OAAO8jH,EAAgBV,iBAAmB,MAChDn3G,EAAMjM,OAAO8jH,EAAgBT,iBAAmB,MAChD50D,GAAW,EAAIf,EAAS3zC,QAAQgqG,GAChCjoH,GAAUkE,OAAOyuD,EAASC,eAAiB,MAAQ,MACzD,GAAI5yD,EAASkQ,EACT,MAAM,IAAIo1G,EAAY6C,UAAU,yDACpC,GAAInoH,EAASmQ,EACT,MAAM,IAAIm1G,EAAY6C,UAAU,yDACpC,aAAaz0D,EAAMq0D,2BAA2BC,EAAiBC,EACnE,CACA,0BAAOt0D,CAAoBzB,EAAeM,GACtC,GAAc,MAAVA,EACA,OAAO,KACX,GAA0B,YAAtBN,EAAc5O,IACd,MAAO,CACHqiE,YAAazzD,EAAczlC,SAGnC,GAA0B,QAAtBylC,EAAc5O,IACd,MAAO,CACHqiE,YAAazzD,EAAcyzD,YAC3B56F,IAAKmnC,EAAcnnC,KAG3B,GAA0B,QAAtBmnC,EAAc5O,IAAe,CAE7B,IAAI8kE,EADQ,IAAI5C,EAAS6C,gBAAgBC,IAAIvmH,EAASgB,OAAOC,KAAKwvD,EAAQ,OAAQzwD,EAASgB,OAAOC,KAAKkvD,EAAc2zD,GAAI,QACrG0C,QAAQxmH,EAASgB,OAAOC,KAAKkvD,EAAc0zD,WAAY,WAE3E,MAAMl9F,EAAO0/F,EAAU/nH,OACjB26F,EAAMotB,EAAU1/F,EAAO,GAC7B,MAAO,CACHi9F,YAAazzD,EAAcyzD,YAC3B/4F,KAAM7qB,EAASgB,OAAOC,KAAKolH,GAAWnlH,SAAS,OAAQ,EAAGylB,EAAOsyE,GAEzE,CACJ,EAEJ18F,EAAQo1D,MAAQA,gCC/UhBlyD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmI,uBAAoB,EAC5B,MAAM+hH,EAAmBlpH,EAAQ,OACjC,MAAMmH,UAA0B+hH,EAAiBC,eAC7Ch8G,WAAAA,CAAY6vG,EAAUvxF,EAAKyxF,GACvB53G,MAAM03G,GACN99G,KAAKusB,IAAMA,EACXvsB,KAAKg+G,mBAAqBA,CAC9B,EAEJl+G,EAAQmI,kBAAoBA,gCCR5B,MAAMiiH,EAAeppH,EAAQ,MACvBu7B,EAAev7B,EAAQ,OACvB02E,EAAe12E,EAAQ,OACvBL,EAAeK,EAAQ,OACvBqpH,EAAerpH,EAAQ,KACvBspH,EAAetpH,EAAQ,OAEvB2D,EAAWzB,OAAO4H,UAAUnG,UAK5B,WACJ0qE,EAAU,SAAE16C,EAAQ,KACpBG,EAAI,aAAEC,EAAY,YAAEC,EAAW,eAAEC,EAAc,aAAEC,EAAY,YAAEC,GAC7Dn0B,EAAQ,OAkFZ,SAASg7E,EAAQl6D,GACf5hB,KAAK4hB,QAAUya,EAAMquD,OAAO,CAC1B/R,UAAW,MACXpgD,WAAY,GACZxG,GAAI,IACHnQ,GAAW,CAAC,GAEf,MAAMg3D,EAAM54E,KAAK4hB,QAIbg3D,EAAIC,KAAQD,EAAIrgD,YAAc,GAAOqgD,EAAIrgD,WAAa,KACxDqgD,EAAIrgD,YAAcqgD,EAAIrgD,WACC,IAAnBqgD,EAAIrgD,aAAoBqgD,EAAIrgD,YAAc,OAI3CqgD,EAAIrgD,YAAc,GAAOqgD,EAAIrgD,WAAa,KACzC3W,GAAWA,EAAQ2W,aACvBqgD,EAAIrgD,YAAc,IAKfqgD,EAAIrgD,WAAa,IAAQqgD,EAAIrgD,WAAa,IAGf,KAAR,GAAjBqgD,EAAIrgD,cACPqgD,EAAIrgD,YAAc,IAItBv4B,KAAK4pB,IAAS,EACd5pB,KAAKS,IAAS,GACdT,KAAK+4E,OAAS,EACd/4E,KAAKm3E,OAAS,GAEdn3E,KAAK+1B,KAAS,IAAIo0F,EAClBnqH,KAAK+1B,KAAKx1B,UAAY,EAEtB,IAAI2tB,EAAUg8F,EAAa1xF,aACzBx4B,KAAK+1B,KACL6iD,EAAIrgD,YAGN,GAAIrK,IAAW0G,EACb,MAAM,IAAI/wB,MAAMpD,EAAIytB,IAQtB,GALAluB,KAAKkyB,OAAS,IAAIk4F,EAElBF,EAAarvF,iBAAiB76B,KAAK+1B,KAAM/1B,KAAKkyB,QAG1C0mD,EAAI79C,aAEwB,kBAAnB69C,EAAI79C,WACb69C,EAAI79C,WAAay8C,EAAQ6yC,WAAWzxC,EAAI79C,YACG,yBAAlCt2B,EAASqS,KAAK8hE,EAAI79C,cAC3B69C,EAAI79C,WAAa,IAAIzK,WAAWsoD,EAAI79C,aAElC69C,EAAIC,MACN3qD,EAASg8F,EAAapvF,qBAAqB96B,KAAK+1B,KAAM6iD,EAAI79C,YACtD7M,IAAW0G,IACb,MAAM,IAAI/wB,MAAMpD,EAAIytB,GAI5B,CAiNA,SAASiL,EAAQl5B,EAAO2hB,GACtB,MAAM65D,EAAW,IAAIK,EAAQl6D,GAK7B,GAHA65D,EAASn0E,KAAKrH,GAGVw7E,EAAS7xD,IAAK,MAAM6xD,EAASh7E,KAAOA,EAAIg7E,EAAS7xD,KAErD,OAAO6xD,EAAS9sD,MAClB,CA/LAmtD,EAAQlxE,UAAUtD,KAAO,SAAU3D,EAAMy1E,GACvC,MAAMrjD,EAAO/1B,KAAK+1B,KACZ4iD,EAAY34E,KAAK4hB,QAAQ+2D,UACzB59C,EAAa/6B,KAAK4hB,QAAQmZ,WAChC,IAAI7M,EAAQmrD,EAAaqC,EAEzB,GAAI17E,KAAK+4E,MAAO,OAAO,EAevB,IAbiCM,EAA7BD,MAAiBA,EAA0BA,GACb,IAAfA,EAAsB3kD,EAAW06C,EAGxB,yBAAxB1qE,EAASqS,KAAKnT,GAChBoyB,EAAK91B,MAAQ,IAAIqwB,WAAW3sB,GAE5BoyB,EAAK91B,MAAQ0D,EAGfoyB,EAAK71B,QAAU,EACf61B,EAAK51B,SAAW41B,EAAK91B,MAAM4B,SAElB,CAqBP,IApBuB,IAAnBk0B,EAAKx1B,YACPw1B,EAAK11B,OAAS,IAAIiwB,WAAWqoD,GAC7B5iD,EAAKz1B,SAAW,EAChBy1B,EAAKx1B,UAAYo4E,GAGnBzqD,EAASg8F,EAAa/wF,QAAQpD,EAAMsjD,GAEhCnrD,IAAW4G,GAAeiG,IAC5B7M,EAASg8F,EAAapvF,qBAAqB/E,EAAMgF,GAE7C7M,IAAW0G,EACb1G,EAASg8F,EAAa/wF,QAAQpD,EAAMsjD,GAC3BnrD,IAAW8G,IAEpB9G,EAAS4G,IAKNiB,EAAK51B,SAAW,GAChB+tB,IAAW2G,GACXkB,EAAKr1B,MAAMu1B,KAAO,GACK,IAAvBtyB,EAAKoyB,EAAK71B,UAEfgqH,EAAa7xF,aAAatC,GAC1B7H,EAASg8F,EAAa/wF,QAAQpD,EAAMsjD,GAGtC,OAAQnrD,GACN,KAAK6G,EACL,KAAKC,EACL,KAAKF,EACL,KAAKG,EAGH,OAFAj1B,KAAKu5E,MAAMrrD,GACXluB,KAAK+4E,OAAQ,GACN,EAOX,GAFA2C,EAAiB3lD,EAAKx1B,UAElBw1B,EAAKz1B,WACgB,IAAnBy1B,EAAKx1B,WAAmB2tB,IAAW2G,GAErC,GAAwB,WAApB70B,KAAK4hB,QAAQmQ,GAAiB,CAEhC,IAAI4pD,EAAgBnE,EAAQU,WAAWniD,EAAK11B,OAAQ01B,EAAKz1B,UAErD89C,EAAOroB,EAAKz1B,SAAWq7E,EACvBC,EAAUpE,EAAQK,WAAW9hD,EAAK11B,OAAQs7E,GAG9C5lD,EAAKz1B,SAAW89C,EAChBroB,EAAKx1B,UAAYo4E,EAAYv6B,EACzBA,GAAMroB,EAAK11B,OAAOiW,IAAIyf,EAAK11B,OAAOuwB,SAAS+qD,EAAeA,EAAgBv9B,GAAO,GAErFp+C,KAAKs5E,OAAOsC,EAEd,MACE57E,KAAKs5E,OAAOvjD,EAAK11B,OAAOwB,SAAWk0B,EAAKz1B,SAAWy1B,EAAK11B,OAAS01B,EAAK11B,OAAOuwB,SAAS,EAAGmF,EAAKz1B,WAMpG,GAAI4tB,IAAW0G,GAA2B,IAAnB8mD,EAAvB,CAGA,GAAIxtD,IAAW2G,EAIb,OAHA3G,EAASg8F,EAAatvF,WAAW56B,KAAK+1B,MACtC/1B,KAAKu5E,MAAMrrD,GACXluB,KAAK+4E,OAAQ,GACN,EAGT,GAAsB,IAAlBhjD,EAAK51B,SAAgB,KAV4B,CAWvD,CAEA,OAAO,CACT,EAWA27E,EAAQlxE,UAAU0uE,OAAS,SAAUplD,GACnCl0B,KAAKm3E,OAAO7vE,KAAK4sB,EACnB,EAYA4nD,EAAQlxE,UAAU2uE,MAAQ,SAAUrrD,GAE9BA,IAAW0G,IACW,WAApB50B,KAAK4hB,QAAQmQ,GACf/xB,KAAK2uB,OAAS3uB,KAAKm3E,OAAOja,KAAK,IAE/Bl9D,KAAK2uB,OAAS0N,EAAMiuF,cAActqH,KAAKm3E,SAG3Cn3E,KAAKm3E,OAAS,GACdn3E,KAAK4pB,IAAMsE,EACXluB,KAAKS,IAAMT,KAAK+1B,KAAKt1B,GACvB,EA+EAV,EAAOD,QAAQg8E,QAAUA,EACzB/7E,EAAOD,QAAQq5B,QAAUA,EACzBp5B,EAAOD,QAAQi8E,WAnBf,SAAoB97E,EAAO2hB,GAGzB,OAFAA,EAAUA,GAAW,CAAC,GACdi3D,KAAM,EACP1/C,EAAQl5B,EAAO2hB,EACxB,EAgBA7hB,EAAOD,QAAQk8E,OAAS7iD,EACxBp5B,EAAOD,QAAQ65E,UAAY,EAA3B55E,wBClaA,IAAIu+B,EAAWx9B,EAAQ,OACnBypH,EAASzpH,EAAQ,OACjB+uB,EAAO/uB,EAAQ,OACfyD,EAASzD,EAAAA,OAAAA,OAET2rF,EAAI,IAAItiF,MAAM,KAElB,SAASqgH,IACPxqH,KAAKmP,OACLnP,KAAKyqH,GAAKh+B,EAEV58D,EAAK/Y,KAAK9W,KAAM,IAAK,IACvB,CAEAs+B,EAASksF,EAAQD,GAEjBC,EAAO5/G,UAAUuE,KAAO,WAmBtB,OAlBAnP,KAAK0qH,IAAM,WACX1qH,KAAK2qH,IAAM,WACX3qH,KAAK4qH,IAAM,WACX5qH,KAAK6qH,IAAM,UACX7qH,KAAK8qH,IAAM,WACX9qH,KAAK+qH,IAAM,WACX/qH,KAAKgrH,IAAM,WACXhrH,KAAKirH,IAAM,WAEXjrH,KAAKkrH,IAAM,WACXlrH,KAAKmrH,IAAM,UACXnrH,KAAKorH,IAAM,UACXprH,KAAKqrH,IAAM,WACXrrH,KAAKsrH,IAAM,WACXtrH,KAAKurH,IAAM,WACXvrH,KAAKwrH,IAAM,WACXxrH,KAAKyrH,IAAM,WAEJzrH,IACT,EAEAwqH,EAAO5/G,UAAU8gH,MAAQ,WACvB,IAAIvgC,EAAI5mF,EAAOi/B,YAAY,IAE3B,SAASmoF,EAAcn6F,EAAGhgB,EAAGulB,GAC3Bo0D,EAAEygC,aAAap6F,EAAGuF,GAClBo0D,EAAEygC,aAAap6G,EAAGulB,EAAS,EAC7B,CASA,OAPA40F,EAAa3rH,KAAK0qH,IAAK1qH,KAAKkrH,IAAK,GACjCS,EAAa3rH,KAAK2qH,IAAK3qH,KAAKmrH,IAAK,GACjCQ,EAAa3rH,KAAK4qH,IAAK5qH,KAAKorH,IAAK,IACjCO,EAAa3rH,KAAK6qH,IAAK7qH,KAAKqrH,IAAK,IACjCM,EAAa3rH,KAAK8qH,IAAK9qH,KAAKsrH,IAAK,IACjCK,EAAa3rH,KAAK+qH,IAAK/qH,KAAKurH,IAAK,IAE1BpgC,CACT,EAEAprF,EAAOD,QAAU0qH,2gBCxDjBh7G,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,MAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,MAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,MAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,oBCxBA,MAAM+rH,EAAU/qH,EAAQ,OAElBgrH,EAAkB,CAEtB,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GACT,EAAG,EAAG,GAAI,GACV,EAAG,EAAG,GAAI,GACV,EAAG,EAAG,GAAI,GACV,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,IAGRC,EAAqB,CAEzB,EAAG,GAAI,GAAI,GACX,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,IACZ,GAAI,GAAI,IAAK,IACb,GAAI,GAAI,IAAK,IACb,GAAI,IAAK,IAAK,IACd,GAAI,IAAK,IAAK,IACd,GAAI,IAAK,IAAK,IACd,GAAI,IAAK,IAAK,IACd,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,KACf,IAAK,IAAK,IAAK,KACf,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,MAWnBjsH,EAAQksH,eAAiB,SAAyBv/D,EAASw/D,GACzD,OAAQA,GACN,KAAKJ,EAAQtgC,EACX,OAAOugC,EAAgC,GAAfr/D,EAAU,GAAS,GAC7C,KAAKo/D,EAAQlgC,EACX,OAAOmgC,EAAgC,GAAfr/D,EAAU,GAAS,GAC7C,KAAKo/D,EAAQxrE,EACX,OAAOyrE,EAAgC,GAAfr/D,EAAU,GAAS,GAC7C,KAAKo/D,EAAQ1gC,EACX,OAAO2gC,EAAgC,GAAfr/D,EAAU,GAAS,GAC7C,QACE,OAEN,EAUA3sD,EAAQosH,uBAAyB,SAAiCz/D,EAASw/D,GACzE,OAAQA,GACN,KAAKJ,EAAQtgC,EACX,OAAOwgC,EAAmC,GAAft/D,EAAU,GAAS,GAChD,KAAKo/D,EAAQlgC,EACX,OAAOogC,EAAmC,GAAft/D,EAAU,GAAS,GAChD,KAAKo/D,EAAQxrE,EACX,OAAO0rE,EAAmC,GAAft/D,EAAU,GAAS,GAChD,KAAKo/D,EAAQ1gC,EACX,OAAO4gC,EAAmC,GAAft/D,EAAU,GAAS,GAChD,QACE,OAEN,gCCrIAzpD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQqvD,gBAAkBrvD,EAAQqsH,kCAAoCrsH,EAAQ6uD,sCAAmC,EACjH,MAAMjjC,EAAiB5qB,EAAQ,OACzB2qB,EAAmB3qB,EAAQ,OAC3BsrH,EAA0BtrH,EAAQ,MAClCqE,EAAUrE,EAAQ,OAClBwJ,EAAcxJ,EAAQ,QAE5B,SAAW6tD,GACPA,EAAiCA,EAA0C,QAAI,OAAS,UACxFA,EAAiCA,EAA8C,YAAI,KAAS,cAC5FA,EAAiCA,EAA4C,UAAI,OAAS,YAC1FA,EAAiCA,EAA0C,QAAI,OAAS,UACxFA,EAAiCA,EAAuC,KAAI,OAAS,MACxF,CAND,CAMsC7uD,EAAQ6uD,mCAAqC7uD,EAAQ6uD,iCAAmC,CAAC,IAE/H,SAAWw9D,GACPA,EAAkCA,EAA6C,UAAI,KAAS,YAC5FA,EAAkCA,EAA2C,QAAI,OAAS,UAC1FA,EAAkCA,EAAwC,KAAI,OAAS,OACvFA,EAAkCA,EAA2C,QAAI,OAAS,UAC1FA,EAAkCA,EAAqD,kBAAI,OAAS,mBACvG,CAND,CAMuCrsH,EAAQqsH,oCAAsCrsH,EAAQqsH,kCAAoC,CAAC,IAClI,MAAME,EAAqB,CACvB1oH,KAAM8nB,EAAiB6gG,cAAcC,IACrCh5G,OAAQkY,EAAiB6gG,cAAcz6G,OACvC2W,QAASiD,EAAiB6gG,cAAcz6G,OACxC5N,UAAWwnB,EAAiB6gG,cAAcz6G,QAIxC26G,EAAsB,CACxBhrH,OAAQiqB,EAAiB6gG,cAAc5mH,OACvCgB,QAAS+kB,EAAiB6gG,cAAcz6G,OACxC46G,aAAchhG,EAAiB6gG,cAAc5mH,OAC7Cwe,WAAYuH,EAAiB6gG,cAAc5mH,OAC3CqwC,QAAStqB,EAAiB6gG,cAAc5mH,OACxCgzC,SAAUjtB,EAAiB6gG,cAAc5mH,OACzC4wB,MAAO7K,EAAiB6gG,cAAc5mH,OACtCgnH,kBAAmBjhG,EAAiB6gG,cAAc5mH,UAC/C2mH,GAIDM,EAAwB,CAC1BC,OAAQnhG,EAAiB6gG,cAAc5mH,OACvCqwC,QAAStqB,EAAiB6gG,cAAc5mH,OACxC4wB,MAAO7K,EAAiB6gG,cAAc5mH,OACtC6tD,WAAY9nC,EAAiB6gG,cAAcn9F,OAC3CzoB,QAAS+kB,EAAiB6gG,cAAcz6G,OACxCg7G,eAAgBphG,EAAiB6gG,cAAc5mH,UAC5C2mH,GAEDS,EAA8B,CAChCtrH,OAAQiqB,EAAiB6gG,cAAc5mH,OACvCqnH,MAAOthG,EAAiB6gG,cAAcz6G,QAIpCm7G,EAAwB,CAC1BxrH,OAAQiqB,EAAiB6gG,cAAc5mH,OACvCunH,WAAYxhG,EAAiB6gG,cAAcz6G,OAC3CnL,QAAS+kB,EAAiB6gG,cAAcz6G,OACxCkkC,QAAStqB,EAAiB6gG,cAAc5mH,OACxC4wB,MAAO7K,EAAiB6gG,cAAc5mH,OACtC0lB,cAAeK,EAAiB6gG,cAAcY,kBAC3Cb,GAIDc,EAA0B,CAC5B35D,GAAI/nC,EAAiB6gG,cAAcz6G,OACnCkkC,QAAStqB,EAAiB6gG,cAAc5mH,OACxC4wB,MAAO7K,EAAiB6gG,cAAc5mH,OACtC0nH,gBAAiB3hG,EAAiB6gG,cAAcz6G,OAChDqwD,gBAAiBz2C,EAAiB6gG,cAAc5mH,QAoTpD5F,EAAQqvD,gBAlTR,MAWI,gCAAak+D,CAAoBC,EAAS9kG,EAASpgB,GAC/C,MAAMlC,EAAQoE,EAAY,IAAI7F,SAAS,OACjCkvB,QAAiB,EAAIxuB,EAAQooH,UAAUD,EAAU,QAAS,CAC5DpnH,SACDsiB,EAASpgB,GAEZ,GAAIlC,IADSynB,KAAKwE,MAAMwB,EAAS65F,UACdtnH,MACf,MAAM,IAAIrC,MAAM,4BACpB,OAAO8vB,CACX,CAYA,mCAAay7B,CAAuB7iC,EAAKpB,EAAatlB,EAAU2iB,EAASpgB,GACrE,OAAO,EAAIjD,EAAQke,iBAAgB,KAAM,EAAIle,EAAQ44G,SAASxxF,yCACxC08F,mBAAmB99F,GACrC,aAAe89F,mBAAmBpjH,EAASpB,SAAS,KAAM+jB,EAASpgB,IAAc,KAAMsjB,EAAe2C,aAAcjmB,EAC5H,CAWA,oCAAaqlH,CAAwBlhG,EAAKpB,EAAa3C,EAASpgB,GAC5D,OAAO,EAAIjD,EAAQke,iBAAgB,KAAM,EAAIle,EAAQ44G,SAASxxF,wCACxC08F,mBAAmB99F,GAAc3C,EAASpgB,IAAc,KAAMsjB,EAAe2C,aAAcjmB,EACrH,CAaA,gBAAOslH,CAAUpsG,EAAiBgsG,EAASn+G,EAAMqZ,EAASpgB,EAAaskB,GACnE,MAAMihG,GAAsB,EAAIvB,EAAwB5gG,uBAAuB8hG,EAAU,2BAA6BrE,mBAAmB3nG,GAAkB,IACpJnS,EAAKy+G,iBACRlnH,QAASyI,EAAK89G,WACdzrH,OAAQ2N,EAAK3N,OAAOiD,SAAS,IAC7BopH,QAAS1+G,EAAK0+G,QACdC,mBAAoB3+G,EAAK2+G,mBACzB1iG,cAAejc,EAAKic,cACpBllB,MAAOiJ,EAAKjJ,MAAMzB,SAAS,IAC3B0D,MAAOgH,EAAKhH,MACZm6D,QAASnzD,EAAKmzD,QACd97D,QAAS2I,EAAK3I,SACf,CACCkoD,KAAMjjC,EAAiB6gG,cAAcn9F,OACrC1uB,IAAKgrB,EAAiB6gG,cAAcz6G,OACpClO,KAAM8nB,EAAiB6gG,cAAcyB,YACrChrG,iBAAkB0I,EAAiB6gG,cAAcyB,aAClDvlG,EAASpgB,EAAaskB,GACzB,MAAO,CACH3J,iBAAkB4qG,EAAoB3kH,MAAKglH,GAAgBA,EAAajrG,mBACxE4Q,SAAUg6F,EAAoB3kH,MAAMglH,GAAiB3pH,QAAQoE,IAAI,CAC7DulH,EAAat/D,KACbs/D,EAAavtH,IACbutH,EAAarqH,SACbqF,MAAKmW,IAAuB,IAArBuvC,EAAMjuD,EAAKkD,GAAKwb,EACvB,GAAa,MAATuvC,EACA,MAAMhjC,EAAe2C,aAAa8D,MAAMxE,KAAKC,UAAU,CAAE8gC,OAAMjuD,MAAKkD,SAAS,KAEjF,OAAO,EAAI8nB,EAAiBwiG,cAActqH,EAAM6oH,EAAoB,IAGhF,CAcA,kBAAO0B,CAAY5sG,EAAiBgsG,EAASnnB,EAAch3F,EAAMqZ,EAASpgB,EAAaskB,GACnF,MAAMihG,GAAsB,EAAIvB,EAAwB5gG,uBAAuB8hG,EAAU,6BAA+BrE,mBAAmB3nG,GAAmB,iBAAmB2nG,mBAAmB9iB,GAAe,IAC5Mh3F,EAAKy+G,iBACRlnH,QAASyI,EAAKyyD,QACdpgE,OAAQ2N,EAAK3N,OAAOiD,SAAS,IAC7B0D,MAAOgH,EAAKhH,MACZgmH,SAAUh/G,EAAKg/G,SACftoH,SAAUsJ,EAAKtJ,SAASpB,SAAS,IACjC09D,cAAehzD,EAAKgzD,cAAcn5D,MAAKm5D,IAC5B,CACHisD,YAAajsD,EAAcisD,YAAY3pH,SAAS,IAChD4pH,aAAclsD,EAAcksD,aAC5BC,eAAgBnsD,EAAcmsD,eAAe7pH,SAAS,IACtD8pH,SAAUpsD,EAAcosD,SACxBC,OAAQrsD,EAAcqsD,OAAO/pH,SAAS,QAG9C+B,QAAS2I,EAAK3I,SACf,CACCkoD,KAAMjjC,EAAiB6gG,cAAcn9F,OACrC1uB,IAAKgrB,EAAiB6gG,cAAcz6G,OACpClO,KAAM8nB,EAAiB6gG,cAAcyB,YACrChrG,iBAAkB0I,EAAiB6gG,cAAcyB,aAClDvlG,EAASpgB,EAAaskB,GACzB,MAAO,CACH3J,iBAAkB4qG,EAAoB3kH,MAAKglH,GAAgBA,EAAajrG,mBACxE4Q,SAAUg6F,EAAoB3kH,MAAMglH,GAAiB3pH,QAAQoE,IAAI,CAC7DulH,EAAat/D,KACbs/D,EAAavtH,IACbutH,EAAarqH,SACbqF,MAAK47F,IAAuB,IAArBl2C,EAAMjuD,EAAKkD,GAAKihG,EACvB,GAAa,MAATl2C,EACA,MAAMhjC,EAAe2C,aAAa8D,MAAMxE,KAAKC,UAAU,CAAE8gC,OAAMjuD,MAAKkD,SAAS,KAEjF,OAAO,EAAI8nB,EAAiBwiG,cAActqH,EAAMqpH,EAAsB,IAGlF,CAcA,oBAAOyB,CAAcntG,EAAiBgsG,EAASnnB,EAAch3F,EAAMqZ,EAASpgB,EAAaskB,GACrF,MAAMihG,GAAsB,EAAIvB,EAAwB5gG,uBAAuB8hG,EAAU,kCAAoCrE,mBAAmB3nG,GAAmB,iBAAmB2nG,mBAAmB9iB,GAAe,IACjNh3F,EAAKy+G,iBACRziG,YAAahc,EAAKgc,YAAY1mB,SAAS,OACvCjD,OAAQ2N,EAAK3N,OAAOiD,WACpBiC,QAASyI,EAAKyyD,QACdz5D,MAAOgH,EAAKhH,MACZumH,gBAAyC,MAAxBv/G,EAAKu/G,gBAA0B,KAAOv/G,EAAKu/G,gBAAgBjqH,SAAS,OACrF0pH,SAAUh/G,EAAKg/G,SACf3nH,QAAS2I,EAAK3I,SACf,CACCkoD,KAAMjjC,EAAiB6gG,cAAcn9F,OACrC1uB,IAAKgrB,EAAiB6gG,cAAcz6G,OACpClO,KAAM8nB,EAAiB6gG,cAAcyB,YACrCY,YAAaljG,EAAiB6gG,cAAcsC,gBAC7CpmG,EAASpgB,EAAaskB,GACzB,MAAO,CACHiiG,YAAahB,EAAoB3kH,MAAKglH,GAAgBA,EAAaW,cACnEh7F,SAAUg6F,EAAoB3kH,MAAMglH,GAAiB3pH,QAAQoE,IAAI,CAC7DulH,EAAat/D,KACbs/D,EAAavtH,IACbutH,EAAarqH,SACbqF,MAAK+7F,IAAuB,IAArBr2C,EAAMjuD,EAAKkD,GAAKohG,EACvB,GAAa,MAATr2C,EACA,MAAMhjC,EAAe2C,aAAa8D,MAAMxE,KAAKC,UAAU,CAAE8gC,OAAMjuD,MAAKkD,SAAS,KAEjF,OAAO,EAAI8nB,EAAiBwiG,cAActqH,EAAMwpH,EAAwB,IAGpF,CAaA,kBAAO0B,CAAYvtG,EAAiBgsG,EAASn+G,EAAMqZ,EAASpgB,EAAaskB,GACrE,MAAMihG,GAAsB,EAAIvB,EAAwB5gG,uBAAuB8hG,EAAU,6BAA+BrE,mBAAmB3nG,GAAkB,CACzJusG,SAAS,KACN1+G,EAAKy+G,iBACRp6D,GAAIrkD,EAAKqkD,GACTo5D,OAAQz9G,EAAKy9G,OAAOnoH,SAAS,IAC7BqqH,gBAAiB3/G,EAAK2/G,gBAAgBrqH,SAAS,IAC/C0D,MAAOgH,EAAKhH,MACZm6D,QAASnzD,EAAKmzD,QACd97D,QAAS2I,EAAK3I,QACdhF,OAAQ,MACT,CACCktD,KAAMjjC,EAAiB6gG,cAAcn9F,OACrC1uB,IAAKgrB,EAAiB6gG,cAAcz6G,OACpClO,KAAM8nB,EAAiB6gG,cAAcyB,YACrChrG,iBAAkB0I,EAAiB6gG,cAAcyB,aAClDvlG,EAASpgB,EAAaskB,GACzB,MAAO,CACH3J,iBAAkB4qG,EAAoB3kH,MAAKglH,GAAgBA,EAAajrG,mBACxE4Q,SAAUg6F,EAAoB3kH,MAAMglH,GAAiB3pH,QAAQoE,IAAI,CAC7DulH,EAAat/D,KACbs/D,EAAavtH,IACbutH,EAAarqH,SACbqF,MAAKm8F,IAAuB,IAArBz2C,EAAMjuD,EAAKkD,GAAKwhG,EACvB,GAAa,MAATz2C,EACA,MAAMhjC,EAAe2C,aAAa8D,MAAMxE,KAAKC,UAAU,CAAE8gC,OAAMjuD,MAAKkD,SAAS,KAEjF,OAAO,EAAI8nB,EAAiBwiG,cAActqH,EAAMgpH,EAAsB,IAGlF,CAYA,+BAAaoC,CAAmBzB,EAASn+G,EAAMqZ,EAASpgB,EAAaskB,GACjE,MAAMshG,QAAqB,EAAI5B,EAAwB5gG,uBAAuB8hG,EAAU,6BAA8B,IAC/Gn+G,EAAKy+G,iBACRp6D,GAAIrkD,EAAKqkD,GACTu5D,MAAO59G,EAAK49G,MACZvmH,QAAS2I,EAAK3I,SACf,CACCkoD,KAAMjjC,EAAiB6gG,cAAcn9F,OACrC1uB,IAAKgrB,EAAiB6gG,cAAcz6G,OACpClO,KAAM8nB,EAAiB6gG,cAAcyB,aACtCvlG,EAASpgB,EAAaskB,IAClBgiC,EAAMjuD,EAAKkD,SAAcU,QAAQoE,IAAI,CACxCulH,EAAat/D,KACbs/D,EAAavtH,IACbutH,EAAarqH,OAEjB,GAAa,MAAT+qD,EACA,MAAMhjC,EAAe2C,aAAa8D,MAAMxE,KAAKC,UAAU,CAAE8gC,OAAMjuD,MAAKkD,SAAS,KACjF,OAAO,EAAI8nB,EAAiBwiG,cAActqH,EAAMgpH,EACpD,CAaA,4BAAOqC,CAAsB1tG,EAAiBgsG,EAASn+G,EAAMqZ,EAASpgB,EAAaskB,GAC/E,MAAMihG,GAAsB,EAAIvB,EAAwB5gG,uBAAuB8hG,EAAU,6BAA+BrE,mBAAmB3nG,GAAkB,CACzJusG,SAAS,KACN1+G,EAAKy+G,iBACRp6D,GAAIrkD,EAAKqkD,GACTo5D,OAAQz9G,EAAKy9G,OAAOnoH,SAAS,IAC7BqqH,gBAAiB3/G,EAAK2/G,gBAAgBrqH,SAAS,IAC/C0D,MAAOgH,EAAKhH,MACZm6D,QAASnzD,EAAKmzD,QACd9gE,OAAQ2N,EAAK3N,OAAOiD,SAAS,KAC9B,CACCiqD,KAAMjjC,EAAiB6gG,cAAcn9F,OACrC1uB,IAAKgrB,EAAiB6gG,cAAcz6G,OACpClO,KAAM8nB,EAAiB6gG,cAAcyB,YACrChrG,iBAAkB0I,EAAiB6gG,cAAcyB,aAClDvlG,EAASpgB,EAAaskB,GACzB,MAAO,CACH3J,iBAAkB4qG,EAAoB3kH,MAAKglH,GAAgBA,EAAajrG,mBACxE4Q,SAAUg6F,EAAoB3kH,MAAMglH,GAAiB3pH,QAAQoE,IAAI,CAC7DulH,EAAat/D,KACbs/D,EAAavtH,IACbutH,EAAarqH,SACbqF,MAAKo+F,IAAuB,IAArB14C,EAAMjuD,EAAKkD,GAAKyjG,EACvB,GAAa,MAAT14C,EACA,MAAMhjC,EAAe2C,aAAa8D,MAAMxE,KAAKC,UAAU,CAAE8gC,OAAMjuD,MAAKkD,SAAS,KAEjF,OAAO,EAAI8nB,EAAiBwiG,cAActqH,EAAMmpH,EAA4B,IAGxF,2BC9UJ/sH,EAAOD,QA5BS,SAAS09D,EAAW3oD,EAAQpE,EAAGS,EAAGE,EAAGmE,EAAGhE,EAAGs5C,GAOzD,IAAK2S,EAAW,CACd,IAAI36C,EACJ,QAAe/gB,IAAX+S,EACFgO,EAAQ,IAAIhf,MACV,qIAGG,CACL,IAAIsR,EAAO,CAAC1E,EAAGS,EAAGE,EAAGmE,EAAGhE,EAAGs5C,GACvBokE,EAAW,GACfpsG,EAAQ,IAAIhf,MACVgR,EAAO7H,QAAQ,OAAO,WAAa,OAAOmI,EAAK85G,IAAa,MAExDr9G,KAAO,qBACf,CAGA,MADAiR,EAAMqsG,YAAc,EACdrsG,CACR,CACF,qOC9CA,MAAA/D,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OA6HA,SAAgBquH,EAAkChwG,GAIzB,IAJ0B,UAC/Cnd,EACAod,MAAOhe,EAAQE,EAAaC,KAAUI,GAAa,KACnDgC,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFhe,SACAE,cACAC,QACAI,gBAEJgC,KAAM7D,EAAAsvH,wBAAwB3vG,OAAO9b,GAE7C,CAnIa7D,EAAAA,yBAA0B,EAAAgf,EAAAY,QAAgC,EAAC,EAAAZ,EAAAa,IAAG,gBAAgB,EAAAZ,EAAA2T,KAAI,YAc/F5yB,EAAAA,0BAAA,SACIsB,EACAE,EACAC,EACAC,GAE4B,IAD5BG,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQ1e,EAAQ2e,UAAU,EAAOC,YAAY,GAC/C,CAAEF,OAAQxe,EAAaye,UAAU,EAAOC,YAAY,IAExDze,EACAI,GAGEgC,EAAOY,EAAO0b,MAAMngB,EAAAsvH,wBAAwBlvG,MASlD,OARApgB,EAAAsvH,wBAAwBjvG,OACpB,CACId,YAAaJ,EAAAmB,iBAAiBivG,SAC9B7tH,OAAQkE,OAAOlE,IAEnBmC,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAyBA7D,EAAAA,0BAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAsvH,wBAAwBlvG,KAAM,MAAM,IAAIlB,EAAAyB,iCAExE,MACIrB,MAAM,OAAEhe,EAAM,YAAEE,EAAW,MAAEC,EAAK,aAAEI,GAAc,KAClDgC,GACAwrH,EAAmC9vG,GACvC,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBivG,SAAU,MAAM,IAAIrwG,EAAA0B,iCAC9D,IAAKtf,IAAWE,IAAgBC,EAAO,MAAM,IAAIyd,EAAA2B,iCAIjD,MAAO,CACH3e,YACAod,KAAM,CACFhe,SACAE,cACAC,QACAI,gBAEJgC,OAER,EAwBA7D,EAAAA,mCAAAqvH,gCCxIAnsH,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQwvH,oBAAiB,EACzB,MAAMC,EAAoBzuH,EAAQ,OAC5B0uH,EAAgB1uH,EAAQ,OACxBmE,EAASnE,EAAQ,OACjByC,EAAWzC,EAAQ,OACnBugB,EAAsBvgB,EAAQ,OAC9BuyD,EAAavyD,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClBqrD,EAAoBrrD,EAAQ,OAC5B4qB,EAAiB5qB,EAAQ,OACzBwJ,EAAcxJ,EAAQ,OACtBgJ,EAAUhJ,EAAQ,OACxB,MAAMwuH,UAAuBC,EAAkBE,gBAe3CxhH,WAAAA,CAAYqT,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsBo8D,EAAUopB,EAAcuoB,EAAQ9tG,EAASzT,GACvI,MAAXyT,IACAA,EAAU,CAAC,GACfA,EAAQ+tG,eAAiB/tG,EAAQ+tG,gBAAkB7lH,EAAQ62G,aAC3D/+F,EAAQysG,aAAezsG,EAAQysG,cAAgB,EAC/CzsG,EAAQguG,qBAAuBhuG,EAAQguG,sBAAwB,GAC/DhuG,EAAQiuG,iBAAmBjuG,EAAQiuG,kBAAoB,EACvDjuG,EAAQkuG,cAAgBluG,EAAQkuG,eAAiB,KACjDluG,EAAQmuG,iBAAmBnuG,EAAQmuG,kBAAoB,IACvD3pH,MAAMkb,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsBC,EAASzT,GACpHnO,KAAK4lB,KAAOytC,EAAWS,SAASk8D,SAChChwH,KAAK8lB,iBAAmB0pG,EAAcS,YACtCjwH,KAAKsmB,kBAAoB,CACrBkpG,EAAcU,iBAAiBC,WAC/BX,EAAcU,iBAAiB3iE,mBAC/BiiE,EAAcU,iBAAiBE,eAC/BZ,EAAcU,iBAAiBG,iBAC/Bb,EAAcU,iBAAiBnhE,SAEnC/uD,KAAKkmB,cAAgB,CAACspG,EAAcU,iBAAiBC,WAAYX,EAAcU,iBAAiBE,eAAgBZ,EAAcU,iBAAiBnhE,SAC/I/uD,KAAK+9E,SAAWA,EAChB/9E,KAAKmnG,aAAeA,EACpBnnG,KAAK0vH,OAASA,CAClB,CACA/qG,sBAAAA,CAAuBjZ,EAAM+C,GACzB,OAAI/C,EAAKhL,QAAU8uH,EAAcU,iBAAiBC,YAAczkH,EAAKhL,QAAU8uH,EAAcU,iBAAiB3iE,oBAC1G7hD,EAAKhL,MAAQ8uH,EAAcU,iBAAiBE,eACrC/rH,QAAQC,SAAQ,IAEpBD,QAAQC,SAAQ,EAC3B,CACA0gB,iBAAAA,CAAkBtZ,EAAM+C,GACpB,OAAI/C,EAAKhL,QAAU8uH,EAAcU,iBAAiBI,QAC9C5kH,EAAKhL,MAAQ8uH,EAAcU,iBAAiBK,cACrClsH,QAAQC,SAAQ,IAEpBD,QAAQC,SAAQ,EAC3B,CACA6gB,kBAAAA,CAAmBzZ,EAAM+C,GACrB,OAAI/C,EAAKhL,QAAU8uH,EAAcU,iBAAiBK,eAC9C7kH,EAAKhL,MAAQ8uH,EAAcU,iBAAiBI,OACrCjsH,QAAQC,SAAQ,IAEpBD,QAAQC,SAAQ,EAC3B,CAOAksH,qBAAAA,CAAsB7sH,EAAM8sF,GACxB,MAAMggC,GAAWzwH,KAAK4hB,QAAQguG,qBAAuBn/B,GAAyBzwF,KAAK4hB,QAAQmuG,iBAAmB/vH,KAAK4hB,QAAQysG,aAC3H,OAAO1qH,EAAKi/D,YAAcl9D,OAAO+qH,EACrC,CAWA,2BAAMC,CAAsBhtH,EAAQif,EAAYf,EAAS0L,GACrD,MAAMghG,EAAiB5oH,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,MAChD6jG,EAAcjrH,OAAO0D,KAAKC,MAAsB,SAAhBD,KAAK6N,WACrC25G,QAAsB5wH,KAAKwhB,SAAS0kF,eAAejhG,EAAO2C,cAAc+6F,MAAOj/F,EAAQA,EAAQif,EAAWxa,MAAOwoH,EAAa3wH,KAAKwhB,SAASokF,kBAAkBt7F,EAAY,IAAKqmH,EAAa,GAAGlsH,SAAS,OAAQzE,KAAK6wH,oBAAqBvC,GAAgB,GAAO,EAAM5oH,OAAO0D,KAAKC,MAAsB,MAAhBD,KAAK6N,WAAsBvR,OAAO0D,KAAKC,MAAsB,MAAhBD,KAAK6N,YACjV,IACI,MAAOm3G,EAAa0C,EAAcC,EAAiBC,SAAsB3sH,QAAQoE,IAAI,EACjF,EAAItD,EAAQke,iBAAgB,IAAMrjB,KAAK+9E,SAASkzC,kBAAkB,KAAM,KAAM3jG,EAAgBb,SAC9F,EAAItnB,EAAQke,iBAAgB,IAAMrjB,KAAK+9E,SAASI,cAAc,KAAM,KAAM7wD,EAAgBb,QAC1FzsB,KAAK0vH,OAAO59B,gBACZ,EAAI3sF,EAAQke,iBAAgB,IAAMrjB,KAAKwhB,SAAS42B,YAAY10C,EAAQktH,IAAgB,KAAM,KAAMtjG,EAAgBb,UAE9GykG,EAAuBJ,EAAalyC,YACpC2vC,EAAWnlH,KAAKuI,IAAIo/G,EAAkBG,EAAsB,GAClE,MAAO,CACH9C,YAAaA,EAAcxsG,EAAQuvG,gBACnC9C,aAAczsG,EAAQwvG,kBACtB9C,eAAgBA,EAChBC,WACAC,OAAQwC,EAAepvG,EAAQuvG,gBAEvC,CACA,MAAO5/G,GAEH,OADA+b,EAAgBI,MAAMnc,GACf,IACX,CACJ,CASAwyD,gBAAAA,CAAiBpgE,EAAMie,EAASugD,GAC5B,MAEMkvD,GAFU1tH,EAAKi/D,YAAcT,EAAcmsD,gBACnB5oH,OAAO1F,KAAK4hB,QAAQmuG,kBAAoBrqH,OAAOkc,EAAQwvG,mBACpD1rH,OAAOy8D,EAAcosD,UACtD,OAAOpsD,EAAcqsD,OAAU6C,EAAalvD,EAAcisD,WAC9D,CAeAkD,kBAAAA,CAAmBxjG,EAAMnL,EAAY4uG,EAAI3vG,EAASje,EAAMkC,EAAUs8D,EAAegkC,GAC7E,GAAIxjF,EAAWkrG,SACX,GAAI//F,EAAKtsB,SAAWmhB,EAAWnhB,OAC3B,MAAM,IAAI6f,EAAoBkD,kBAAkB,gCAGpD,GAAIuJ,EAAKwI,QAAU3T,EAAWnhB,OAC1B,MAAM,IAAI6f,EAAoBkD,kBAAkB,0BAExD,MAAMksE,EAAwB3iE,EAAK1C,eAAiBmmG,EAAGC,SAASn+D,EAAWS,SAASk8D,UAAUrsH,KAAKynB,cACnG,GAAIqlE,EAAwBzwF,KAAK4hB,QAAQiuG,iBACrC,MAAM,IAAIxuG,EAAoBkD,kBAAkB,mCACpD,MAAMktG,EAAqBzxH,KAAK+jE,iBAAiBpgE,EAAMie,EAASugD,GAChE,GAAIx+D,EAAKogE,qBAAuB0tD,GAC5B9tH,EAAK+D,WAAazC,EAAO2C,cAAc+6F,OACvCh/F,EAAK0rD,gBAAkBxpD,GACvBlC,EAAK6yC,cAAgB1oB,EAAKwI,OAC1B3yB,EAAKm/D,YACJn/D,EAAKg/D,QAAQhgD,EAAWxa,QACzBxE,EAAK+pD,eAAiB6jE,EAAGp6E,WAAWn3C,KAAKshB,mBACxC3d,EAAKsgE,eAAekiC,GACrB,MAAM,IAAI9kF,EAAoBkD,kBAAkB,yBAKpD,GAFevkB,KAAKwwH,sBAAsB7sH,EAAM8sF,GACvB/qF,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,MACtBpnB,OAAO1F,KAAK4hB,QAAQkuG,eAClD,MAAM,IAAIzuG,EAAoBkD,kBAAkB,uBAEpD,MAAMmtG,GAAgB,EAAIvsH,EAAQ2xD,gBAAgB92D,KAAK4hB,QAAQ+tG,eAAgB7hG,EAAKm/F,YAC9E0E,EAAmB3xH,KAAKwhB,SAASqiD,aAAa6tD,EAAe5jG,EAAKtsB,OAAQivF,GAEhF,IADyBzwF,KAAKwhB,SAASokF,kBAAkB8rB,EAAe5jG,EAAKtsB,OAAQivF,GAC/DlwE,OAAOhd,EAASgB,OAAOC,KAAKb,EAAKspD,eAAgB,QACnE,MAAM,IAAI5rC,EAAoBkD,kBAAkB,gCAEpD,IAAKotG,EAAiBpxG,OAAOhd,EAASgB,OAAOC,KAAKb,EAAKkgE,eAAgB,QACnE,MAAM,IAAIxiD,EAAoBkD,kBAAkB,+BAExD,CAWA7a,MAAAA,CAAOhG,EAAQif,EAAYivG,EAAKhwG,EAASgsG,EAAkBxlH,GACvDwZ,IAAY,CAAC,EACbA,EAAQwvG,oBAAsB,EAC9BxvG,EAAQuvG,kBAAoB,GAC5B,MAAMtrH,EAAW7F,KAAK6wH,oBAChBgB,GAAmB,EAAI1sH,EAAQooB,uBAAuBnlB,GACtD2b,EAAuB/jB,KAAK0iB,cAAcC,EAAYkvG,EAAiBplG,QACvEqlG,EAA+B9xH,KAAK0wH,sBAAsBhtH,EAAQif,EAAYf,EAASiwG,GACvFE,EAAqB/xH,KAAKwhB,SAASqG,2BACnC3E,EAAiBljB,KAAKgyH,gBAAgBtuH,EAAQif,EAAY,KAAMkvG,GACtE,OAAOD,EAAIlpH,KAAI6oH,IACJ,CACHU,aAAcV,EACdW,MAAO,WACH,MAAM5kG,GAAkB,EAAInoB,EAAQooB,uBAAuBskG,EAAiBplG,QACtE0lG,EAAmBnyH,KAAKoyH,8BAA8BzvG,EAAY4uG,EAAIjkG,GAC5E,IACI,MAAM,gBAAE+kG,EAAe,KAAEvkG,SAAe,EAAI3oB,EAAQke,iBAAgBhU,UAChE,MAAM,iBAAE0T,EAAgB,SAAE4Q,GAAaw4B,EAAkBgD,gBAAgB++D,YAAYluH,KAAKshB,gBAAiBiwG,EAAGhlG,IAAKwlG,EAAoB,CACnInwD,QAASl+D,EACTlC,OAAQmhB,EAAWnhB,OACnB2G,MAAOwa,EAAWxa,MAAM1D,WACxB0pH,UAAWxrG,EAAWkrG,QACtBhoH,WACAs8D,cAAe2vD,EACftrH,QAAS0c,EACT0qG,oBACD5tH,KAAK4hB,QAAQ0wG,mBAAoBhlG,EAAgBb,SAAQ8lG,EAAa,IAAY,MACrF,MAAO,CACHF,gBAAiBryH,KAAK8iB,iBAAiBC,GACvC+K,WAAY6F,EACf,GACF,MAAMpiB,GAAKA,aAAama,EAAe2C,cAAcf,EAAgBb,QAClE9oB,EAAO,IAAI3D,KAAK2hB,qBAAqBmM,EAAKnqB,MAChDA,EAAK8+D,WAAW/+D,GAChB1D,KAAKsxH,mBAAmBxjG,EAAMnL,EAAY4uG,EAAI3vG,EAASje,EAAMkC,QAAgBisH,EAA8BC,GAC3G,MAAO77E,EAAas8E,SAAyBnuH,QAAQoE,IAAI,CAErDzI,KAAKyjB,oBAAoB8tG,EAAGC,SAASn+D,EAAWS,SAASk8D,WAAW,EAAOliG,EAAKtsB,OAAQssB,EAAKwI,MAAO3T,EAAWxa,MAAO2lB,EAAM/J,EAAsBuJ,EAAgBb,QAClKzsB,KAAKijB,wBAAwBtf,EAAMmqB,EAAM5K,EAAgBmvG,EAAiB/kG,EAAgBb,QAC1FzsB,KAAKyyH,4BAA4B9uH,EAAK6yC,YAAa27E,KAEjDD,EAAQ,IAAI1C,EAAcS,YAAYjwH,KAAM,CAC9Ck2C,cACA3pB,IAAKglG,EAAGhlG,IACR6jC,OAAQoiE,EACRz8E,QAASjoB,EAAKioB,QACdvvC,cAAe0c,EACf+1B,cAAenrB,EACfnqB,OACA+C,QAASonB,EAAKm/F,WACdzrH,OAAQssB,EAAKtsB,OACbqsH,QAASlrG,EAAWkrG,UAAW,EAC/Bp9B,sBAAuB3iE,EAAK1C,eAAiBmmG,EAAGC,SAASn+D,EAAWS,SAASk8D,UAAUrsH,KAAKynB,gBAGhG,aADM8mG,EAAMQ,QACLR,CACX,CACA,MAAO3gH,GAEH,MADA+b,EAAgBI,MAAMnc,GAChBA,CACV,CACH,EAjDM,MAoDnB,EAEJzR,EAAQwvH,eAAiBA,8BCvQzBtsH,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ6yH,aAAe7yH,EAAQ8yH,oBAAiB,EAChD9yH,EAAQ+yH,sBAwCR,SAA+Bz+F,GAC3B,IAAI40E,EACA1kG,EACAikB,EACJ,MAAMc,EAAU,IAAIhlB,SAAQ,CAACyuH,EAAUC,KACnCzuH,EAAUwuH,EACVvqG,EAASwqG,CAAO,IAGhB/pB,EADc,oBAAP50E,EACI40E,CAACp/E,EAAK+E,KACb,IACQ/E,EACAwK,EAAGxK,GAKHwK,EAAG,KAAMzF,EACjB,CACA,MAAOpd,GACHgX,EAAOhX,aAAa1N,MAAQ0N,EAAI,IAAI1N,MACxC,GAIOmlG,CAACp/E,EAAK+E,KACb,IAGQ/E,EACArB,EAAOqB,GAGPtlB,EAAQqqB,EAChB,CACA,MAAOpd,GACHgX,EAAOhX,aAAa1N,MAAQ0N,EAAI,IAAI1N,MACxC,GAGR,MAAO,CACHwlB,UACA2/E,WACA1kG,QAAUpB,IACN8lG,EAAS,KAAM9lG,GACRmmB,GAEXd,OAAS1F,IACLmmF,EAASnmF,GACFwG,GAGnB,EA3FAvpB,EAAQkzH,WA4FR,SAAoB1hH,EAAG40B,GACnB,OAAO50B,KAAK40B,CAChB,EA3FApmC,EAAQ8yH,eADgBhkH,GAAQ5L,OAAO4H,UAAUnG,SAASqS,KAAKlI,GAK/D,MAUMqkH,EAAmB,SAACtkH,GAAoC,IAA/BukH,EAAUtxH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAIuxH,QAG5C,MAAmB,kBAARxkH,GAA4B,OAARA,EACpBkD,OAAOlD,GAEe,oBAAjBA,EAAIlK,SACT0F,MAAMi3B,QAAQzyB,GAjBHykH,EAACp7G,EAAKk7G,IAEJ,oBAAbl7G,EAAIklD,MACJ,EAAIp9D,EAAQ8yH,gBAAgB56G,IACvCk7G,EAAW3wH,IAAIyV,GACAA,EAAItP,KAAKiG,GAAgB,OAARA,QAAwB7M,IAAR6M,GAAqBukH,EAAW5mG,IAAI3d,GAC9E,GACAskH,EAAiBtkH,EAAKukH,KACdh2D,QAWFk2D,CAAkBzkH,EAAKukH,GAEvBrhH,OAAOlD,IAIR,EAAI7O,EAAQ8yH,gBAAgBjkH,EAE3C,EAGA7O,EAAQ6yH,aADchkH,GAAQskH,EAAiBtkH,iCCvC/C3L,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQiqF,gCAA6B,EACrC,MAAM9kF,EAASnE,EAAQ,OACjBqE,EAAUrE,EAAQ,OAClBoE,EAAapE,EAAQ,OA4M3BhB,EAAQiqF,2BAtMR,MACI97E,WAAAA,CAAYolH,GAA+C,IAAzBC,EAAmB1xH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACpD5B,KAAKoO,UAAY,GACjBpO,KAAKuzH,eAAiB,GACtBvzH,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,gCACrCtF,KAAKwzH,iBAAmB,aACxBxzH,KAAKyzH,uBAAyB/tH,OAAOR,EAAWN,KAAK8uH,eAAe1zH,KAAKwzH,mBACzExzH,KAAKgzB,SAAWqgG,EAAqBrgG,SACrChzB,KAAKqzH,qBAAuBA,EAC5BrzH,KAAKszH,oBAAsBA,CAC/B,CACAK,gBAAAA,CAAiB78G,EAAMpI,EAAYozD,GAC/B,GAAIp8D,OAAOoR,EAAK88G,oBAAsBluH,OAAO1F,KAAKqzH,qBAAqB7xG,SAAS9a,UAC5EhB,OAAOoR,EAAK+8G,wBAA0B7zH,KAAKyzH,uBAAwB,CAEnE,MAAM,OAAEK,EAAM,UAAEzxD,IAAc,EAAIl9D,EAAQ4uH,2BAA2Bj9G,EAAK2sD,SAAU3B,GACpF,GAAI,KAAOgyD,EAAO9kH,mBAAoB,EAAI7J,EAAQgmD,OAAOz8C,GAIrD,OAHyB,IAArB2zD,EAAUxgE,QACViyH,EAAOhwD,cAAa,EAAI3+D,EAAQ6uH,qBAAqB3xD,EAAW,IAAI59D,SAAS,QAE1EqvH,CAEf,CACA,IAAK,IAAIG,KAASn9G,EAAKysD,MAAO,CAC1B,MAAM2wD,EAAQl0H,KAAK2zH,iBAAiBM,EAAOvlH,EAAYozD,GACvD,GAAa,MAAToyD,EACA,OAAOA,CACf,CACA,OAAO,IACX,CASAC,iBAAAA,CAAkB1lH,EAAOqzD,GACrB,OAAOzyD,UACH,MAAM+kH,QAAcp0H,KAAKgzB,SAASqhG,oBAAoB5lH,EAAMw0G,QAC5D,OAAa,MAATmR,GAE0C,MAA1CA,EAAME,mBAAmBC,cADlB,KAGJv0H,KAAK2zH,iBAAiBS,EAAME,mBAAoB7lH,EAAM4jD,OAAOmiE,YAAa1yD,EAAa,CAEtG,CACA2yD,oBAAAA,CAAqBhmH,GACjB,MACMC,GADmB,EAAIvJ,EAAQugG,sBAAsBj3F,EAAM4jD,OAAOmiE,YAAa,IACjD/vH,SAAS,OACvCiwH,GAAkB,EAAIvvH,EAAQgmD,OAAO18C,EAAM4jD,OAAOmS,eAClD1C,EAAe9hE,KAAKqzH,qBAAqB7vB,uBAAuBkxB,GACtE,GAAoB,MAAhB5yD,EAEA,OADA9hE,KAAK6hB,OAAOkH,KAAK,wBAA0Bra,EAAa,wCAA0CgmH,GAC3F,KAEX,MAAMp6D,EAAWwH,EAAap6D,UAE9B,OADA1H,KAAK6hB,OAAO0F,MAAM,+BAAgC,EAAIpiB,EAAQgmD,OAAO18C,EAAM4jD,OAAOoS,YAAc,gBAAkB/1D,GAC3G,IAAIzJ,EAAOyf,gBAAgBhW,EAAY4rD,GAAU,EAAIn1D,EAAQgjB,WAAWnoB,KAAKm0H,kBAAkB1lH,EAAOqzD,IACjH,CACA6yD,gBAAAA,CAAiBlmH,GACb,MACMC,GADmB,EAAIvJ,EAAQugG,sBAAsBj3F,EAAM4jD,OAAOmiE,YAAa,IACjD/vH,SAAS,OAE7C,OADAzE,KAAK6hB,OAAO0F,MAAM,2BAA4B,EAAIpiB,EAAQgmD,OAAO18C,EAAM4jD,OAAOoS,YAAc,gBAAkB/1D,GACvG,IAAIzJ,EAAOigB,YAAYxW,EAClC,CACAkmH,eAAAA,CAAgBnmH,GACZ,MACMC,GADmB,EAAIvJ,EAAQugG,sBAAsBj3F,EAAM4jD,OAAOmiE,YAAa,IACjD/vH,SAAS,OACvCiwH,GAAkB,EAAIvvH,EAAQgmD,OAAO18C,EAAM4jD,OAAOmS,eAClD1C,EAAe9hE,KAAKqzH,qBAAqB7vB,uBAAuBkxB,GACtE,GAAoB,MAAhB5yD,EAEA,OADA9hE,KAAK6hB,OAAOkH,KAAK,mBAAqBra,EAAa,wCAA0CgmH,GACtF,KAEX,MAAMG,EAAgB/yD,EAAagzD,mBAAmBrmH,EAAM4jD,OAAO0iE,gBAGnE,OAFA/0H,KAAK6hB,OAAO0F,MAAM,0BAA2B,EAAIpiB,EAAQgmD,OAAO18C,EAAM4jD,OAAOoS,YACzE,mBAAqBowD,EAAgB,gBAAkBnmH,GACpD,IAAIzJ,EAAO8f,WAAWrW,EAAYmmH,EAC7C,CASA,mBAAMvmH,CAAcH,EAAQ6mH,EAAoBC,GAC5C,MAAMC,EAAuB,CAAC,EACxBC,EAAoB9lH,UACtB,MAAM+lH,EAAoBC,EAAY5wH,WAEtC,OADAywH,EAAqBE,KAAuBF,EAAqBE,UAA4Bp1H,KAAKgzB,SAASsiG,qBAAqBD,IAAcE,WACvIL,EAAqBE,EAAkB,EAE5CI,EAAe,GACrB,IAAK,IAAI/mH,KAASN,EAAQ,CACtB,IAAIsnH,EACJ,OAAQhnH,EAAMmD,MACV,IAAK,gCACD6jH,EAAcz1H,KAAK40H,gBAAgBnmH,GACnC,MACJ,IAAK,iCACDgnH,EAAcz1H,KAAK20H,iBAAiBlmH,GACpC,MACJ,IAAK,qCACDgnH,EAAcz1H,KAAKy0H,qBAAqBhmH,GAGhD,MAAM8mH,EAAkC,MAArB9mH,EAAM4mH,aAAuB5mH,EAAM4mH,cAAgBL,EAAsBC,QAA8BE,EAAkB1mH,EAAM4mH,aAClJI,EAAY7wG,KAAO,CACf8wG,UAAWH,EACX1wG,KAAMpW,EAAMw0G,OACZsS,aAEJC,EAAaluH,KAAKmuH,EACtB,CACA,IAAK,IAAIxmH,KAAYjP,KAAKoO,gBAChBa,EAASumH,EAEvB,CACA,iBAAMG,CAAYC,EAAiBC,GAE/B,IAAIC,QAAsB91H,KAAKqzH,qBAAqBxc,OAAOkf,uBAAuB,CAAC,qCAAsC,gCAAiC,kCAAmC,IAC7L,GAAkB,MAAdF,EAAoB,CACpB,MAAMG,GAA4B,EAAI7wH,EAAQ8wH,eAAeH,GAAennH,GAAOA,EAAIs0G,SAAW4S,KAC/D,IAA/BG,GACAF,EAAct+G,OAAO,EAAGw+G,EAA4B,EAC5D,CACIF,EAAcj0H,OAAS,UACjB7B,KAAKsO,cAAcwnH,EAAe,KAAM1sH,KAAKC,MAAMwjB,KAAKC,MAAQ,MACtE+oG,EAAaC,EAAcA,EAAcj0H,OAAS,GAAGohH,QAEzD,MAAMiT,QAAqBl2H,KAAKgzB,SAASsiG,qBAAqB,UACxDN,EAAqBkB,EAAaC,aACxC,GAAuB,MAAnBP,GAA2BZ,EAAqBY,EAAiB,CACjE,MAAMznH,QAAenO,KAAKqzH,qBAAqBxc,OAAOkf,uBAAuB,CAAC,qCAAsC,gCAAiC,kCAAmC,GAAIH,EAAkB,EAAGZ,GACjN,GAAkB,MAAda,EAAoB,CACpB,MAAMG,GAA4B,EAAI7wH,EAAQ8wH,eAAe9nH,GAAQQ,GAAOA,EAAIs0G,SAAW4S,KACxD,IAA/BG,GACA7nH,EAAOqJ,OAAO,EAAGw+G,EAA4B,EACrD,CACI7nH,EAAOtM,OAAS,UACV7B,KAAKsO,cAAcH,EAAQ6mH,EAAoBkB,EAAaX,WAClEM,EAAa1nH,EAAOA,EAAOtM,OAAS,GAAGohH,OAE/C,CACA,MAAO,CACHA,OAAQ4S,EACRR,YAAaL,EAErB,CAMA,eAAMoB,CAAUR,EAAiBC,EAAYQ,GAEzC,IAAI/sG,EADJtpB,KAAKs2H,SAAU,EAEfhtG,EAAOja,gBACGrP,KAAK21H,YAAYC,EAAiBC,GAAY7sH,MAAKmW,IAA6B,IAA5B,YAAEk2G,EAAW,OAAEpS,GAAQ9jG,EAG7E,GAFAy2G,EAAkBP,EAClBQ,EAAa5S,EACyB,MAAlCoT,EACA,OAAOA,EAA+BhB,EAAaQ,EAAW,IACnEjzG,OAAMrR,IACLvR,KAAK6hB,OAAOgB,MAAM,8CAA+CtR,EAAE,IAEnEvR,KAAKs2H,UAETt2H,KAAKwoB,QAAUC,WAAWa,EAAiC,IAA3BtpB,KAAKszH,qBAA2B,QAE9DhqG,GACV,CACAna,IAAAA,GAEI,OADAnP,KAAKo2H,YACE/xH,QAAQC,SACnB,CACA,UAAMgL,GACFtP,KAAKs2H,SAAU,EACK,MAAhBt2H,KAAKwoB,SACLG,aAAa3oB,KAAKwoB,SACtBxoB,KAAKuzH,eAAiB,EAC1B,CACAnkH,gBAAAA,CAAiBysD,GACb77D,KAAKoO,UAAU9G,KAAKu0D,EACxB,CACAtsD,kBAAAA,CAAmBssD,GACf,MAAMj7B,EAAQ5gC,KAAKoO,UAAUmG,QAAQsnD,GACrC,OAAIj7B,GAAS,IACT5gC,KAAKoO,UAAUoJ,OAAOopB,EAAO,IACtB,EAGf,uDCzDJ,MAAM21F,EACJtoH,WAAAA,CAAYiS,EAAMo4F,GAChB,IAAKnpF,OAAO/T,UAAU8E,GACpB,MAAM,IAAI+e,UAAU,2BAYtBj/B,KAAKkgB,KAAOA,EAUZlgB,KAAKs4G,SAAWA,CAClB,CAiBAke,qBAAAA,GACE,MAAO,CAAC,CACV,CAcA/2G,MAAAA,CAAOvO,EAAG6lB,GACR,MAAM,IAAIlzB,MAAM,qBAClB,CAwBAsc,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GACb,MAAM,IAAIlzB,MAAM,qBAClB,CAkBA4yH,OAAAA,CAAQvlH,EAAG6lB,GACT,GAAI,EAAI/2B,KAAKkgB,KACX,MAAM,IAAI62E,WAAW,sBAEvB,OAAO/2F,KAAKkgB,IACd,CAkBAw2G,SAAAA,CAAUpe,GACR,MAAMqe,EAAK3zH,OAAO0G,OAAO1J,KAAKiO,YAAYrD,WAG1C,OAFA5H,OAAO0nF,OAAOisC,EAAI32H,MAClB22H,EAAGre,SAAWA,EACPqe,CACT,CAsBAC,SAAAA,CAAU7vG,GAEV,EASF,SAAS8vG,EAAiBjlH,EAAMsxB,GAC9B,OAAIA,EAAGo1E,SACE1mG,EAAO,IAAMsxB,EAAGo1E,SAAW,IAE7B1mG,CACT,CAZA9R,EAAQy2H,OAASA,EAajBz2H,EAAQ+2H,iBAAmBA,EA0D3B/2H,EAAQg3H,sBA7BR,SAA+BC,EAAOxe,GACpC,GAAI,oBAAsBwe,EACxB,MAAM,IAAI93F,UAAU,6BAEtB,GAAI83F,EAAMvgH,eAAe,WACvB,MAAM,IAAI3S,MAAM,sCAElB,KAAM00G,GAAWA,aAAkBge,GACjC,MAAM,IAAIt3F,UAAU,2BAEtB,GAAIs5E,EAAO/hG,eAAe,qBACxB,MAAM,IAAI3S,MAAM,4CAElBkzH,EAAMC,QAAUze,EAChBA,EAAO0e,kBAAoBF,EAC3Bxe,EAAOie,sBAAyB,IAAM,IAAIO,EAC1C/zH,OAAOC,eAAe8zH,EAAMnsH,UAAW,SAAU,CAC/C1H,MAAO,SAASgO,EAAG6lB,GACjB,OAAOwhF,EAAOp4F,OAAOngB,KAAMkR,EAAG6lB,EAChC,EACAy+B,UAAU,IAEZxyD,OAAOC,eAAe8zH,EAAO,SAAU,CACrC7zH,MAAO,SAASgO,EAAG6lB,GACjB,OAAOwhF,EAAO94F,OAAOvO,EAAG6lB,EAC1B,EACAy+B,UAAU,GAEd,EAwBA,MAAM0hE,UAAuBX,EAY3BY,OAAAA,GACE,MAAM,IAAItzH,MAAM,6BAClB,EAkBF,MAAMuzH,UAAoBF,EACxBjpH,WAAAA,CAAYopH,EAAa/e,GAIvB,QAHIx2G,IAAcu1H,IAChBA,EAAc,IAEVloG,OAAO/T,UAAUi8G,IAAkB,GAAKA,EAC5C,MAAM,IAAIp4F,UAAU,4CAEtB74B,OAAO,EAAGkyG,GAKVt4G,KAAKq3H,YAAcA,CACrB,CAGAF,OAAAA,GACE,OAAO,CACT,CAGA13G,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMzd,EAAMpI,EAAErP,OAASk1B,EACvB,OAAO3tB,KAAKC,MAAMiQ,EAAMtZ,KAAKq3H,YAC/B,CAGAl3G,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GACb,OAAO,CACT,EAuBF,MAAMugG,UAAqBJ,EACzBjpH,WAAAA,CAAYsqG,EAAQxhF,EAAQuhF,GAC1B,KAAMC,aAAkBge,GACtB,MAAM,IAAIt3F,UAAU,2BAGtB,QAAIn9B,IAAci1B,EAChBA,EAAS,OACJ,IAAK5H,OAAO/T,UAAU2b,GAC3B,MAAM,IAAIkI,UAAU,uCAGtB74B,MAAMmyG,EAAOr4F,KAAMo4F,GAAYC,EAAOD,UAGtCt4G,KAAKu4G,OAASA,EAQdv4G,KAAK+2B,OAASA,CAChB,CAGAogG,OAAAA,GACE,OAASn3H,KAAKu4G,kBAAkBgf,GACpBv3H,KAAKu4G,kBAAkBif,CACrC,CAGA/3G,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ/2B,KAAKu4G,OAAO94F,OAAOvO,EAAG6lB,EAAS/2B,KAAK+2B,OAC7C,CAGA5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAIb,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ/2B,KAAKu4G,OAAOp4F,OAAO6Y,EAAK9nB,EAAG6lB,EAAS/2B,KAAK+2B,OAClD,EAmBF,MAAMwgG,UAAahB,EACjBtoH,WAAAA,CAAYiS,EAAMo4F,GAEhB,GADAlyG,MAAM8Z,EAAMo4F,GACR,EAAIt4G,KAAKkgB,KACX,MAAM,IAAI62E,WAAW,+BAEzB,CAGAt3E,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAEumH,WAAW1gG,EAAQ/2B,KAAKkgB,KACnC,CAGAC,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAEwmH,YAAY1+F,EAAKjC,EAAQ/2B,KAAKkgB,MACzBlgB,KAAKkgB,IACd,EAmBF,MAAMs3G,UAAejB,EACnBtoH,WAAAA,CAAYiS,EAAMo4F,GAEhB,GADAlyG,MAAO8Z,EAAMo4F,GACT,EAAIt4G,KAAKkgB,KACX,MAAM,IAAI62E,WAAW,+BAEzB,CAGAt3E,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAEymH,WAAW5gG,EAAQ/2B,KAAKkgB,KACnC,CAGAC,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAE0mH,YAAY5+F,EAAKjC,EAAQ/2B,KAAKkgB,MACzBlgB,KAAKkgB,IACd,EAmBF,MAAM23G,UAAYtB,EAChBtoH,WAAAA,CAAYiS,EAAMo4F,GAEhB,GADAlyG,MAAM8Z,EAAMo4F,GACR,EAAIt4G,KAAKkgB,KACX,MAAM,IAAI62E,WAAW,+BAEzB,CAGAt3E,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAE4mH,UAAU/gG,EAAQ/2B,KAAKkgB,KAClC,CAGAC,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAE6mH,WAAW/+F,EAAKjC,EAAQ/2B,KAAKkgB,MACxBlgB,KAAKkgB,IACd,EAmBF,MAAM83G,UAAczB,EAClBtoH,WAAAA,CAAYiS,EAAMo4F,GAEhB,GADAlyG,MAAM8Z,EAAMo4F,GACR,EAAIt4G,KAAKkgB,KACX,MAAM,IAAI62E,WAAW,+BAEzB,CAGAt3E,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAE+mH,UAAUlhG,EAAQ/2B,KAAKkgB,KAClC,CAGAC,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAEgnH,WAAWl/F,EAAKjC,EAAQ/2B,KAAKkgB,MACxBlgB,KAAKkgB,IACd,EAGF,MAAMi4G,EAAQ/uH,KAAK8O,IAAI,EAAG,IAI1B,SAASkgH,EAAYp/F,GACnB,MAAMq/F,EAAOjvH,KAAKC,MAAM2vB,EAAMm/F,GAE9B,MAAO,CAACE,OAAMC,KADDt/F,EAAOq/F,EAAOF,EAE7B,CAEA,SAASI,EAAaF,EAAMC,GAC1B,OAAOD,EAAOF,EAAQG,CACxB,CAaA,MAAME,UAAmBjC,EACvBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACX,CAGA74F,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMuhG,EAAOpnH,EAAEunH,aAAa1hG,GAE5B,OAAOwhG,EADMrnH,EAAEunH,aAAa1hG,EAAS,GACXuhG,EAC5B,CAGAn4G,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMxuB,EAAQ6vH,EAAYp/F,GAG1B,OAFA9nB,EAAEwnH,cAAcnwH,EAAM+vH,KAAMvhG,GAC5B7lB,EAAEwnH,cAAcnwH,EAAM8vH,KAAMthG,EAAS,GAC9B,CACT,EAcF,MAAM4hG,UAAqBpC,EACzBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACX,CAGA74F,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAIX,OAAOwhG,EAFMrnH,EAAE0nH,aAAa7hG,GACf7lB,EAAE0nH,aAAa7hG,EAAS,GAEvC,CAGA5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMxuB,EAAQ6vH,EAAYp/F,GAG1B,OAFA9nB,EAAE2nH,cAActwH,EAAM8vH,KAAMthG,GAC5B7lB,EAAE2nH,cAActwH,EAAM+vH,KAAMvhG,EAAS,GAC9B,CACT,EAcF,MAAM+hG,UAAkBvC,EACtBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACX,CAGA74F,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMuhG,EAAOpnH,EAAEunH,aAAa1hG,GAE5B,OAAOwhG,EADMrnH,EAAE6nH,YAAYhiG,EAAS,GACVuhG,EAC5B,CAGAn4G,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMxuB,EAAQ6vH,EAAYp/F,GAG1B,OAFA9nB,EAAEwnH,cAAcnwH,EAAM+vH,KAAMvhG,GAC5B7lB,EAAE8nH,aAAazwH,EAAM8vH,KAAMthG,EAAS,GAC7B,CACT,EAcF,MAAMkiG,UAAoB1C,EACxBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACX,CAGA74F,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAIX,OAAOwhG,EAFMrnH,EAAEgoH,YAAYniG,GACd7lB,EAAE0nH,aAAa7hG,EAAS,GAEvC,CAGA5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMxuB,EAAQ6vH,EAAYp/F,GAG1B,OAFA9nB,EAAE06G,aAAarjH,EAAM8vH,KAAMthG,GAC3B7lB,EAAE2nH,cAActwH,EAAM+vH,KAAMvhG,EAAS,GAC9B,CACT,EAaF,MAAMoiG,UAAc5C,EAClBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACX,CAGA74F,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAEkoH,YAAYriG,EACvB,CAGA5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAEmoH,aAAargG,EAAKjC,GACb,CACT,EAaF,MAAMuiG,UAAgB/C,EACpBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACX,CAGA74F,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAEqoH,YAAYxiG,EACvB,CAGA5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAEsoH,aAAaxgG,EAAKjC,GACb,CACT,EAaF,MAAM0iG,UAAelD,EACnBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACX,CAGA74F,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAEwoH,aAAa3iG,EACxB,CAGA5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAEyoH,cAAc3gG,EAAKjC,GACd,CACT,EAaF,MAAM6iG,UAAiBrD,EACrBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACX,CAGA74F,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAE2oH,aAAa9iG,EACxB,CAGA5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAE4oH,cAAc9gG,EAAKjC,GACd,CACT,EAoBF,MAAMgjG,UAAiBxD,EACrBtoH,WAAAA,CAAY+rH,EAAe9yD,EAAOoxC,GAChC,KAAM0hB,aAAyBzD,GAC7B,MAAM,IAAIt3F,UAAU,kCAEtB,KAAQioC,aAAiBgwD,GAAmBhwD,EAAMiwD,WACxChoG,OAAO/T,UAAU8rD,IAAW,GAAKA,GACzC,MAAM,IAAIjoC,UAAU,4EAGtB,IAAI/e,GAAQ,IACLgnD,aAAiBgwD,IAChB,EAAI8C,EAAc95G,OACxBA,EAAOgnD,EAAQ8yD,EAAc95G,MAG/B9Z,MAAM8Z,EAAMo4F,GAGZt4G,KAAKg6H,cAAgBA,EAOrBh6H,KAAKknE,MAAQA,CACf,CAGAuvD,OAAAA,CAAQvlH,EAAG6lB,GACT,GAAI,GAAK/2B,KAAKkgB,KACZ,OAAOlgB,KAAKkgB,UAEVpe,IAAci1B,IAChBA,EAAS,GAEX,IAAI7W,EAAO,EACPgnD,EAAQlnE,KAAKknE,MAIjB,GAHIA,aAAiBgwD,IACnBhwD,EAAQA,EAAMznD,OAAOvO,EAAG6lB,IAEtB,EAAI/2B,KAAKg6H,cAAc95G,KACzBA,EAAOgnD,EAAQlnE,KAAKg6H,cAAc95G,SAC7B,CACL,IAAI++C,EAAM,EACV,KAAOA,EAAMiI,GACXhnD,GAAQlgB,KAAKg6H,cAAcvD,QAAQvlH,EAAG6lB,EAAS7W,KAC7C++C,CAEN,CACA,OAAO/+C,CACT,CAGAT,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAM4/F,EAAK,GACX,IAAI3rH,EAAI,EACJk8D,EAAQlnE,KAAKknE,MAIjB,IAHIA,aAAiBgwD,IACnBhwD,EAAQA,EAAMznD,OAAOvO,EAAG6lB,IAEnB/rB,EAAIk8D,GACTyvD,EAAGrvH,KAAKtH,KAAKg6H,cAAcv6G,OAAOvO,EAAG6lB,IACrCA,GAAU/2B,KAAKg6H,cAAcvD,QAAQvlH,EAAG6lB,GACxC/rB,GAAK,EAEP,OAAO2rH,CACT,CAYAx2G,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMkjG,EAAMj6H,KAAKg6H,cACX95G,EAAO8Y,EAAI/vB,QAAO,CAACiX,EAAMjM,IACtBiM,EAAO+5G,EAAI95G,OAAOlM,EAAG/C,EAAG6lB,EAAS7W,IACvC,GAIH,OAHIlgB,KAAKknE,iBAAiBgwD,GACxBl3H,KAAKknE,MAAM/mD,OAAO6Y,EAAIn3B,OAAQqP,EAAG6lB,GAE5B7W,CACT,EAmCF,MAAMg6G,UAAkB3D,EACtBtoH,WAAAA,CAAYg8F,EAAQqO,EAAU6hB,GAC5B,IAAMhwH,MAAMi3B,QAAQ6oE,KACXA,EAAOhhG,QAAO,CAAC8hB,EAAK9W,IAAM8W,GAAQ9W,aAAasiH,IAAS,GAC/D,MAAM,IAAIt3F,UAAU,4CAEjB,mBAAqBq5E,QAClBx2G,IAAcq4H,IACpBA,EAAiB7hB,EACjBA,OAAWx2G,GAIb,IAAK,MAAMs4H,KAAMnwB,EACf,GAAK,EAAImwB,EAAGl6G,WACJpe,IAAcs4H,EAAG9hB,SACvB,MAAM,IAAIz0G,MAAM,wDAIpB,IAAIqc,GAAQ,EACZ,IACEA,EAAO+pF,EAAOhhG,QAAO,CAACiX,EAAMk6G,IAAOl6G,EAAOk6G,EAAG3D,WAAW,EAC1D,CAAE,MAAOllH,GACT,CACAnL,MAAM8Z,EAAMo4F,GAYZt4G,KAAKiqG,OAASA,EAWdjqG,KAAKm6H,iBAAmBA,CAC1B,CAGA1D,OAAAA,CAAQvlH,EAAG6lB,GACT,GAAI,GAAK/2B,KAAKkgB,KACZ,OAAOlgB,KAAKkgB,UAEVpe,IAAci1B,IAChBA,EAAS,GAEX,IAAI7W,EAAO,EACX,IACEA,EAAOlgB,KAAKiqG,OAAOhhG,QAAO,CAACiX,EAAMk6G,KAC/B,MAAMC,EAAMD,EAAG3D,QAAQvlH,EAAG6lB,GAE1B,OADAA,GAAUsjG,EACHn6G,EAAOm6G,CAAG,GAChB,EACL,CAAE,MAAO9oH,GACP,MAAM,IAAIwlF,WAAW,qBACvB,CACA,OAAO72E,CACT,CAGAT,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMmK,EAAOlhC,KAAKw2H,wBAClB,IAAK,MAAM4D,KAAMp6H,KAAKiqG,OAKpB,QAJInoG,IAAcs4H,EAAG9hB,WACnBp3E,EAAKk5F,EAAG9hB,UAAY8hB,EAAG36G,OAAOvO,EAAG6lB,IAEnCA,GAAUqjG,EAAG3D,QAAQvlH,EAAG6lB,GACpB/2B,KAAKm6H,gBACDjpH,EAAErP,SAAWk1B,EACnB,MAGJ,OAAOmK,CACT,CAOA/gB,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMujG,EAAcvjG,EACpB,IAAIwjG,EAAa,EACbC,EAAY,EAChB,IAAK,MAAMJ,KAAMp6H,KAAKiqG,OAAQ,CAC5B,IAAI/pF,EAAOk6G,EAAGl6G,KAEd,GADAs6G,EAAa,EAAIt6G,EAAQA,EAAO,OAC5Bpe,IAAcs4H,EAAG9hB,SAAU,CAC7B,MAAMmiB,EAAKzhG,EAAIohG,EAAG9hB,eACdx2G,IAAc24H,IAChBD,EAAYJ,EAAGj6G,OAAOs6G,EAAIvpH,EAAG6lB,GACzB,EAAI7W,IAGNA,EAAOk6G,EAAG3D,QAAQvlH,EAAG6lB,IAG3B,CACAwjG,EAAaxjG,EACbA,GAAU7W,CACZ,CAKA,OAAQq6G,EAAaC,EAAaF,CACpC,CAGA1D,SAAAA,CAAU7vG,GACR,MAAMma,EAAOlhC,KAAKw2H,wBAClB,IAAK,MAAM4D,KAAMp6H,KAAKiqG,YACfnoG,IAAcs4H,EAAG9hB,UACd,EAAIvxF,EAAOllB,SACjBq/B,EAAKk5F,EAAG9hB,UAAYvxF,EAAOhZ,SAG/B,OAAOmzB,CACT,CAUAw5F,SAAAA,CAAUpiB,GACR,GAAI,kBAAoBA,EACtB,MAAM,IAAIr5E,UAAU,2BAEtB,IAAK,MAAMm7F,KAAMp6H,KAAKiqG,OACpB,GAAImwB,EAAG9hB,WAAaA,EAClB,OAAO8hB,CAGb,CAaAO,QAAAA,CAASriB,GACP,GAAI,kBAAoBA,EACtB,MAAM,IAAIr5E,UAAU,2BAEtB,IAAIlI,EAAS,EACb,IAAK,MAAMqjG,KAAMp6H,KAAKiqG,OAAQ,CAC5B,GAAImwB,EAAG9hB,WAAaA,EAClB,OAAOvhF,EAEL,EAAIqjG,EAAGl6G,KACT6W,GAAU,EACD,GAAKA,IACdA,GAAUqjG,EAAGl6G,KAEjB,CACF,EAiBF,MAAM06G,EACJ3sH,WAAAA,CAAYqqG,GAKVt4G,KAAKs4G,SAAWA,CAClB,CAMA74F,MAAAA,GACE,MAAM,IAAI5b,MAAM,iCAClB,CAMAsc,MAAAA,GACE,MAAM,IAAItc,MAAM,iCAClB,EAoBF,MAAMg3H,UAAiCD,EACrC3sH,WAAAA,CAAYsqG,EAAQD,GAClB,KAAOC,aAAkB2e,GAChB3e,EAAO4e,WACd,MAAM,IAAIl4F,UAAU,qDAGtB74B,MAAMkyG,GAAYC,EAAOD,UAAY,WAIrCt4G,KAAKu4G,OAASA,CAChB,CAGA94F,MAAAA,CAAOvO,EAAG6lB,GACR,OAAO/2B,KAAKu4G,OAAO94F,OAAOvO,EAAG6lB,EAC/B,CAGA5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GACb,OAAO/2B,KAAKu4G,OAAOp4F,OAAO6Y,EAAK9nB,EAAG6lB,EACpC,EA8DF,MAAM+jG,UAAcvE,EAClBtoH,WAAAA,CAAY8sH,EAAOC,EAAe1iB,GAChC,MAAM2iB,EAAQF,aAAiBxD,GAChBwD,aAAiBvD,EAChC,GAAIyD,EACFF,EAAQ,IAAIF,EAAyB,IAAIvD,EAAayD,SACjD,GAAKA,aAAiB7D,GACf6D,EAAM5D,UAClB4D,EAAQ,IAAIF,EAAyBE,QAChC,KAAMA,aAAiBH,GAC5B,MAAM,IAAI37F,UAAU,oEAMtB,QAHIn9B,IAAck5H,IAChBA,EAAgB,QAEX,OAASA,GACNA,aAAyBzE,GACjC,MAAM,IAAIt3F,UAAU,0CAEtB,GAAI,OAAS+7F,EAAe,CAC1B,GAAI,EAAIA,EAAc96G,KACpB,MAAM,IAAIrc,MAAM,8CAEd/B,IAAck5H,EAAc1iB,WAC9B0iB,EAAgBA,EAActE,UAAU,WAE5C,CAMA,IAAIx2G,GAAQ,EACR86G,IACF96G,EAAO86G,EAAc96G,KAChB,GAAKA,GAAS+6G,IACjB/6G,GAAQ66G,EAAMxiB,OAAOr4F,OAGzB9Z,MAAM8Z,EAAMo4F,GAUZt4G,KAAKk7H,cAAgBH,EAOrB/6H,KAAKm7H,wBAA0BF,EAS/Bj7H,KAAKg7H,cAAgBA,EAYrBh7H,KAAKo7H,SAAW,CAAC,EAGjB,IAAIC,EAAwBr7H,KAAKs7H,wBAAwBv1G,KAAK/lB,MAe9DA,KAAKu7H,iBAAmB,SAASviG,GAC/B,OAAOqiG,EAAsBriG,EAC/B,EAeAh5B,KAAKw7H,uBAAyB,SAASC,GACrCJ,EAAwBI,EAAI11G,KAAK/lB,KACnC,CACF,CAGAy2H,OAAAA,CAAQvlH,EAAG6lB,GACT,GAAI,GAAK/2B,KAAKkgB,KACZ,OAAOlgB,KAAKkgB,UAEVpe,IAAci1B,IAChBA,EAAS,GAKX,MAAM2kG,EAAM17H,KAAK27H,WAAWzqH,EAAG6lB,GAC/B,IAAK2kG,EACH,MAAM,IAAI73H,MAAM,qDAElB,OAAO63H,EAAIjF,QAAQvlH,EAAG6lB,EACxB,CA+BAukG,uBAAAA,CAAwBtiG,GACtB,GAAIA,EAAIxiB,eAAexW,KAAKk7H,cAAc5iB,UAAW,CACnD,GAAIt4G,KAAKg7H,eACFhiG,EAAIxiB,eAAexW,KAAKg7H,cAAc1iB,UAC3C,OAEF,MAAMojB,EAAM17H,KAAKo7H,SAASpiG,EAAIh5B,KAAKk7H,cAAc5iB,WACjD,GAAIojB,KACMA,EAAInjB,QACHv/E,EAAIxiB,eAAeklH,EAAIpjB,WAChC,OAAOojB,CAEX,MACE,IAAK,MAAM52E,KAAO9kD,KAAKo7H,SAAU,CAC/B,MAAMM,EAAM17H,KAAKo7H,SAASt2E,GAC1B,GAAI9rB,EAAIxiB,eAAeklH,EAAIpjB,UACzB,OAAOojB,CAEX,CAEF,MAAM,IAAI73H,MAAM,8BAClB,CAQA4b,MAAAA,CAAOvO,EAAG6lB,GAIR,IAAImK,OAHAp/B,IAAci1B,IAChBA,EAAS,GAGX,MAAM6kG,EAAM57H,KAAKk7H,cACXH,EAAQa,EAAIn8G,OAAOvO,EAAG6lB,GAC5B,IAAI8kG,EAAM77H,KAAKo7H,SAASL,GACxB,QAAIj5H,IAAc+5H,EAAK,CACrB,IAAIC,EAAgB,EACpBD,EAAM77H,KAAKg7H,cACPh7H,KAAKm7H,0BACPW,EAAgBF,EAAIrjB,OAAOr4F,MAE7BghB,EAAOlhC,KAAKw2H,wBACZt1F,EAAK06F,EAAItjB,UAAYyiB,EACrB75F,EAAK26F,EAAIvjB,UAAYt4G,KAAKg7H,cAAcv7G,OAAOvO,EAAG6lB,EAAS+kG,EAC7D,MACE56F,EAAO26F,EAAIp8G,OAAOvO,EAAG6lB,GAEvB,OAAOmK,CACT,CAQA/gB,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAM2kG,EAAM17H,KAAKu7H,iBAAiBviG,GAClC,QAAIl3B,IAAc45H,EAAK,CACrB,MAAME,EAAM57H,KAAKk7H,cACXW,EAAM77H,KAAKg7H,cACjB,IAAIc,EAAgB,EAKpB,OAJI97H,KAAKm7H,0BACPW,EAAgBF,EAAIrjB,OAAOr4F,MAE7B07G,EAAIz7G,OAAO6Y,EAAI4iG,EAAItjB,UAAWpnG,EAAG6lB,GAC1B+kG,EAAgBD,EAAI17G,OAAO6Y,EAAI6iG,EAAIvjB,UAAWpnG,EACnB6lB,EAAS+kG,EAC7C,CACA,OAAOJ,EAAIv7G,OAAO6Y,EAAK9nB,EAAG6lB,EAC5B,CAeAglG,UAAAA,CAAWC,EAASzjB,EAAQD,GAC1B,MAAMqe,EAAK,IAAIsF,EAAcj8H,KAAMg8H,EAASzjB,EAAQD,GAEpD,OADAt4G,KAAKo7H,SAASY,GAAWrF,EAClBA,CACT,CAgBAgF,UAAAA,CAAWO,EAAInlG,GACb,IAAIilG,EAAUE,EAOd,OANI33H,EAAOy6B,SAASk9F,UACdp6H,IAAci1B,IAChBA,EAAS,GAEXilG,EAAUh8H,KAAKk7H,cAAcz7G,OAAOy8G,EAAInlG,IAEnC/2B,KAAKo7H,SAASY,EACvB,EAgCF,MAAMC,UAAsB1F,EAC1BtoH,WAAAA,CAAYkuH,EAAOH,EAASzjB,EAAQD,GAClC,KAAM6jB,aAAiBrB,GACrB,MAAM,IAAI77F,UAAU,yBAEtB,IAAM9P,OAAO/T,UAAU4gH,IAAc,EAAIA,EACvC,MAAM,IAAI/8F,UAAU,4CAOtB,GALK,kBAAoBs5E,QACjBz2G,IAAcw2G,IACpBA,EAAWC,EACXA,EAAS,MAEPA,EAAQ,CACV,KAAMA,aAAkBge,GACtB,MAAM,IAAIt3F,UAAU,2BAEtB,GAAK,OAASk9F,EAAMnB,eACZ,GAAKziB,EAAOr4F,MACZq4F,EAAOr4F,KAAOi8G,EAAMnB,cAAc96G,KACxC,MAAM,IAAIrc,MAAM,iDAElB,GAAI,kBAAoBy0G,EACtB,MAAM,IAAIr5E,UAAU,sCAExB,CACA,IAAI/e,EAAOi8G,EAAMj8G,KACb,EAAIi8G,EAAMj8G,OACZA,EAAOq4F,EAASA,EAAOr4F,KAAO,EACzB,GAAKA,GAASi8G,EAAMhB,0BACvBj7G,GAAQi8G,EAAMjB,cAAc3iB,OAAOr4F,OAGvC9Z,MAAM8Z,EAAMo4F,GAGZt4G,KAAKm8H,MAAQA,EAKbn8H,KAAKg8H,QAAUA,EAMfh8H,KAAKu4G,OAASA,GAAU,IAC1B,CAGAke,OAAAA,CAAQvlH,EAAG6lB,GACT,GAAI,GAAK/2B,KAAKkgB,KAGZ,OAAOlgB,KAAKkgB,UAEVpe,IAAci1B,IAChBA,EAAS,GAEX,IAAI+kG,EAAgB,EAKpB,OAJI97H,KAAKm8H,MAAMhB,0BACbW,EAAgB97H,KAAKm8H,MAAMjB,cAAc3iB,OAAOr4F,MAG3C47G,EAAgB97H,KAAKu4G,OAAOke,QAAQvlH,EAAG6lB,EAAS+kG,EACzD,CAGAr8G,MAAAA,CAAOvO,EAAG6lB,GACR,MAAMmK,EAAOlhC,KAAKw2H,wBAIlB,QAHI10H,IAAci1B,IAChBA,EAAS,GAEP/2B,OAASA,KAAKm8H,MAAMR,WAAWzqH,EAAG6lB,GACpC,MAAM,IAAIlzB,MAAM,oBAElB,IAAIi4H,EAAgB,EAWpB,OAVI97H,KAAKm8H,MAAMhB,0BACbW,EAAgB97H,KAAKm8H,MAAMjB,cAAc3iB,OAAOr4F,MAE9ClgB,KAAKu4G,OACPr3E,EAAKlhC,KAAKs4G,UAAYt4G,KAAKu4G,OAAO94F,OAAOvO,EAAG6lB,EAAS+kG,GAC5C97H,KAAKs4G,SACdp3E,EAAKlhC,KAAKs4G,WAAY,EACbt4G,KAAKm8H,MAAMhB,0BACpBj6F,EAAKlhC,KAAKm8H,MAAMjB,cAAc5iB,UAAYt4G,KAAKg8H,SAE1C96F,CACT,CAGA/gB,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,IAAI+kG,EAAgB,EAIpB,GAHI97H,KAAKm8H,MAAMhB,0BACbW,EAAgB97H,KAAKm8H,MAAMjB,cAAc3iB,OAAOr4F,MAE9ClgB,KAAKu4G,SACAv/E,EAAIxiB,eAAexW,KAAKs4G,UAC/B,MAAM,IAAIr5E,UAAU,0BAA4Bj/B,KAAKs4G,UAEvDt4G,KAAKm8H,MAAMjB,cAAc/6G,OAAOngB,KAAKg8H,QAAS9qH,EAAG6lB,GACjD,IAAI7W,EAAO47G,EACX,GAAI97H,KAAKu4G,SACPv4G,KAAKu4G,OAAOp4F,OAAO6Y,EAAIh5B,KAAKs4G,UAAWpnG,EAAG6lB,EAAS+kG,GACnD57G,GAAQlgB,KAAKu4G,OAAOke,QAAQvlH,EAAG6lB,EAAS+kG,GACnC,GAAK97H,KAAKm8H,MAAMj8G,MACbA,EAAOlgB,KAAKm8H,MAAMj8G,MACxB,MAAM,IAAIrc,MAAM,6CAGpB,OAAOqc,CACT,CAIA02G,SAAAA,CAAU7vG,GACR,GAAI/mB,KAAKu4G,OACP,OAAOv4G,KAAKu4G,OAAOqe,UAAU7vG,EAEjC,EASF,SAASq1G,EAAiBnoH,GAIxB,OAHI,EAAIA,IACNA,GAAK,YAEAA,CACT,CAiCA,MAAMooH,UAAqB9F,EACzBtoH,WAAAA,CAAY+zB,EAAMs6F,EAAKhkB,GACrB,KAAOt2E,aAAgBu1F,GACbv1F,aAAgBw1F,GACxB,MAAM,IAAIv4F,UAAU,wCAOtB,GALK,kBAAoBq9F,QACjBx6H,IAAcw2G,IACpBA,EAAWgkB,EACXA,OAAMx6H,GAEJ,EAAIkgC,EAAK9hB,KACX,MAAM,IAAI62E,WAAW,8BAEvB3wF,MAAM47B,EAAK9hB,KAAMo4F,GAKjBt4G,KAAKgiC,KAAOA,EASZhiC,KAAKs8H,MAAQA,EAQbt8H,KAAKiqG,OAAS,GAKd,IAAI/mG,EAAQ,EACZlD,KAAKu8H,gBAAkB,SAAStoH,GAE9B,OADA/Q,EAAQk5H,EAAiBnoH,GAClBjU,IACT,EACAA,KAAKw8H,gBAAkB,WACrB,OAAOt5H,CACT,CACF,CAGAuc,MAAAA,CAAOvO,EAAG6lB,GACR,MAAMmK,EAAOlhC,KAAKw2H,6BACd10H,IAAci1B,IAChBA,EAAS,GAEX,MAAM7zB,EAAQlD,KAAKgiC,KAAKviB,OAAOvO,EAAG6lB,GAClC/2B,KAAKu8H,gBAAgBr5H,GACrB,IAAK,MAAMk3H,KAAMp6H,KAAKiqG,YAChBnoG,IAAcs4H,EAAG9hB,WACnBp3E,EAAKk5F,EAAG9hB,UAAY8hB,EAAG36G,OAAOvc,IAGlC,OAAOg+B,CACT,CAOA/gB,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAM7zB,EAAQlD,KAAKgiC,KAAKviB,OAAOvO,EAAG6lB,GAClC/2B,KAAKu8H,gBAAgBr5H,GACrB,IAAK,MAAMk3H,KAAMp6H,KAAKiqG,OACpB,QAAInoG,IAAcs4H,EAAG9hB,SAAU,CAC7B,MAAMmiB,EAAKzhG,EAAIohG,EAAG9hB,eACdx2G,IAAc24H,GAChBL,EAAGj6G,OAAOs6G,EAEd,CAEF,OAAOz6H,KAAKgiC,KAAK7hB,OAAOngB,KAAKw8H,kBAAmBtrH,EAAG6lB,EACrD,CAWA0lG,QAAAA,CAAS3lG,EAAMwhF,GACb,MAAMokB,EAAK,IAAIC,EAAS38H,KAAM82B,EAAMwhF,GAEpC,OADAt4G,KAAKiqG,OAAO3iG,KAAKo1H,GACVA,CACT,CASAE,UAAAA,CAAWtkB,GAGT,MAAMokB,EAAK,IAAIG,EAAQ78H,KAAMs4G,GAE7B,OADAt4G,KAAKiqG,OAAO3iG,KAAKo1H,GACVA,CACT,CAUAI,QAAAA,CAASxkB,GACP,GAAI,kBAAoBA,EACtB,MAAM,IAAIr5E,UAAU,2BAEtB,IAAK,MAAMm7F,KAAMp6H,KAAKiqG,OACpB,GAAImwB,EAAG9hB,WAAaA,EAClB,OAAO8hB,CAGb,EAuBF,MAAMuC,EACJ1uH,WAAAA,CAAY8uH,EAAWjmG,EAAMwhF,GAC3B,KAAMykB,aAAqBV,GACzB,MAAM,IAAIp9F,UAAU,oCAEtB,IAAM9P,OAAO/T,UAAU0b,IAAW,GAAKA,EACrC,MAAM,IAAImI,UAAU,iCAEtB,MAAM+9F,EAAY,EAAID,EAAU78G,KAC1B+8G,EAAWF,EAAU9yB,OAAOhhG,QAAO,CAACwO,EAAK2iH,IAAO3iH,EAAM2iH,EAAGtjG,MAAM,GACrE,GAAKA,EAAOmmG,EAAYD,EACtB,MAAM,IAAIn5H,MAAM,sCACGm5H,EAAYC,GAAY,OACzBD,EAAY,YAKhCh9H,KAAK+8H,UAAYA,EAGjB/8H,KAAK82B,KAAOA,EAOZ92B,KAAKk9H,WAAa,GAAKpmG,GAAQ,EAC3B,KAAOA,IACT92B,KAAKk9H,UAAY,YAMnBl9H,KAAKkP,MAAQ+tH,EACTj9H,KAAK+8H,UAAUT,MACjBt8H,KAAKkP,MAAQ8tH,EAAYC,EAAWnmG,GAKtC92B,KAAKm9H,SAAWf,EAAiBp8H,KAAKk9H,WAAal9H,KAAKkP,OAYxDlP,KAAKs4G,SAAWA,CAClB,CAIA74F,MAAAA,GAIE,OAFkB28G,EADLp8H,KAAK+8H,UAAUP,kBACcx8H,KAAKm9H,YACnBn9H,KAAKkP,KAEnC,CAOAiR,MAAAA,CAAOjd,GACL,IAAMisB,OAAO/T,UAAUlY,IACfA,IAAUk5H,EAAiBl5H,EAAQlD,KAAKk9H,WAC9C,MAAM,IAAIj+F,UAAU43F,EAAiB,kBAAmB72H,MAClC,wCAA0CA,KAAKk9H,WAEvE,MAAMl7F,EAAOhiC,KAAK+8H,UAAUP,kBACtBY,EAAYhB,EAAiBl5H,GAASlD,KAAKkP,OACjDlP,KAAK+8H,UAAUR,gBAAgBH,EAAiBp6F,GAAQhiC,KAAKm9H,UAC5BC,EACnC,EAoBF,MAAMP,UAAgBF,EACpB1uH,WAAAA,CAAY8uH,EAAWzkB,GACrBlyG,MAAM22H,EAAW,EAAGzkB,EACtB,CAKA74F,MAAAA,CAAOvO,EAAG6lB,GACR,QAAS4lG,EAAS/xH,UAAU6U,OAAO3I,KAAK9W,KAAMkR,EAAG6lB,EACnD,CAGA5W,MAAAA,CAAOjd,GAKL,MAJI,mBAAqBA,IAEvBA,GAASA,GAEJy5H,EAAS/xH,UAAUuV,OAAOrJ,KAAK9W,KAAMkD,EAC9C,EAkBF,MAAMm6H,UAAa9G,EACjBtoH,WAAAA,CAAYpM,EAAQy2G,GAClB,KAAQz2G,aAAkBq1H,GAAmBr1H,EAAOs1H,WAC1ChoG,OAAO/T,UAAUvZ,IAAY,GAAKA,GAC1C,MAAM,IAAIo9B,UAAU,yEAItB,IAAI/e,GAAQ,EACNre,aAAkBq1H,IACtBh3G,EAAOre,GAETuE,MAAM8Z,EAAMo4F,GAOZt4G,KAAK6B,OAASA,CAChB,CAGA40H,OAAAA,CAAQvlH,EAAG6lB,GACT,IAAI7W,EAAOlgB,KAAKkgB,KAIhB,OAHI,EAAIA,IACNA,EAAOlgB,KAAK6B,OAAO4d,OAAOvO,EAAG6lB,IAExB7W,CACT,CAGAT,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,IAAI7W,EAAOlgB,KAAKkgB,KAIhB,OAHI,EAAIA,IACNA,EAAOlgB,KAAK6B,OAAO4d,OAAOvO,EAAG6lB,IAExB7lB,EAAExD,MAAMqpB,EAAQA,EAAS7W,EAClC,CAOAC,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GACb,IAAI7W,EAAOlgB,KAAK6B,OAIhB,GAHI7B,KAAK6B,kBAAkBq1H,IACzBh3G,EAAO8Y,EAAIn3B,SAEP0C,EAAOy6B,SAAShG,IACZ9Y,IAAS8Y,EAAIn3B,OACrB,MAAM,IAAIo9B,UAAU43F,EAAiB,cAAe72H,MAC9B,qBAAuBkgB,EAAO,mBAEtD,GAAK6W,EAAS7W,EAAQhP,EAAErP,OACtB,MAAM,IAAIk1F,WAAW,4BAMvB,OAJA7lF,EAAEpG,MAAMkuB,EAAIv0B,SAAS,OAAQsyB,EAAQ7W,EAAM,OACvClgB,KAAK6B,kBAAkBq1H,GACzBl3H,KAAK6B,OAAOse,OAAOD,EAAMhP,EAAG6lB,GAEvB7W,CACT,EAgBF,MAAMo9G,UAAgB/G,EACpBtoH,WAAAA,CAAYqqG,GACVlyG,OAAO,EAAGkyG,EACZ,CAGAme,OAAAA,CAAQvlH,EAAG6lB,GACT,IAAKxyB,EAAOy6B,SAAS9tB,GACnB,MAAM,IAAI+tB,UAAU,2BAElBn9B,IAAci1B,IAChBA,EAAS,GAEX,IAAIkoC,EAAMloC,EACV,KAAQkoC,EAAM/tD,EAAErP,QAAY,IAAMqP,EAAE+tD,IAClCA,GAAO,EAET,OAAO,EAAIA,EAAMloC,CACnB,CAGAtX,MAAAA,CAAOvO,EAAG6lB,EAAQmK,QACZp/B,IAAci1B,IAChBA,EAAS,GAEX,IAAI7W,EAAOlgB,KAAKy2H,QAAQvlH,EAAG6lB,GAC3B,OAAO7lB,EAAExD,MAAMqpB,EAAQA,EAAS7W,EAAO,GAAGzb,SAAS,QACrD,CAGA0b,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAKP,kBAAoBiC,IACtBA,EAAMA,EAAIv0B,YAEZ,MAAM84H,EAAO,IAAIh5H,EAAOy0B,EAAK,QACvB9Y,EAAOq9G,EAAK17H,OAClB,GAAKk1B,EAAS7W,EAAQhP,EAAErP,OACtB,MAAM,IAAIk1F,WAAW,4BAIvB,OAFAwmC,EAAKhmH,KAAKrG,EAAG6lB,GACb7lB,EAAE6lB,EAAS7W,GAAQ,EACZA,EAAO,CAChB,EAsBF,MAAMs9G,UAAajH,EACjBtoH,WAAAA,CAAYwvH,EAASnlB,GAMnB,GALK,kBAAoBmlB,QACjB37H,IAAcw2G,IACpBA,EAAWmlB,EACXA,OAAU37H,QAERA,IAAc27H,EAChBA,GAAW,OACN,IAAKtuG,OAAO/T,UAAUqiH,GAC3B,MAAM,IAAIx+F,UAAU,8BAGtB74B,OAAO,EAAGkyG,GAUVt4G,KAAKy9H,QAAUA,CACjB,CAGAhH,OAAAA,CAAQvlH,EAAG6lB,GACT,IAAKxyB,EAAOy6B,SAAS9tB,GACnB,MAAM,IAAI+tB,UAAU,sBAKtB,YAHIn9B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAErP,OAASk1B,CACpB,CAGAtX,MAAAA,CAAOvO,EAAG6lB,EAAQmK,QACZp/B,IAAci1B,IAChBA,EAAS,GAEX,IAAI7W,EAAOlgB,KAAKy2H,QAAQvlH,EAAG6lB,GAC3B,GAAK,GAAK/2B,KAAKy9H,SACPz9H,KAAKy9H,QAAUv9G,EACrB,MAAM,IAAI62E,WAAW,+BAEvB,OAAO7lF,EAAExD,MAAMqpB,EAAQA,EAAS7W,GAAMzb,SAAS,QACjD,CAGA0b,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAKP,kBAAoBiC,IACtBA,EAAMA,EAAIv0B,YAEZ,MAAM84H,EAAO,IAAIh5H,EAAOy0B,EAAK,QACvB9Y,EAAOq9G,EAAK17H,OAClB,GAAK,GAAK7B,KAAKy9H,SACPz9H,KAAKy9H,QAAUv9G,EACrB,MAAM,IAAI62E,WAAW,+BAEvB,GAAKhgE,EAAS7W,EAAQhP,EAAErP,OACtB,MAAM,IAAIk1F,WAAW,4BAGvB,OADAwmC,EAAKhmH,KAAKrG,EAAG6lB,GACN7W,CACT,EAsBF,MAAMw9G,UAAiBnH,EACrBtoH,WAAAA,CAAY/K,EAAOo1G,GACjBlyG,MAAM,EAAGkyG,GAWTt4G,KAAKkD,MAAQA,CACf,CAGAuc,MAAAA,CAAOvO,EAAG6lB,EAAQmK,GAChB,OAAOlhC,KAAKkD,KACd,CAGAid,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAEb,OAAO,CACT,EAGFj3B,EAAQo3H,eAAiBA,EACzBp3H,EAAQs3H,YAAcA,EACtBt3H,EAAQw3H,aAAeA,EACvBx3H,EAAQy3H,KAAOA,EACfz3H,EAAQ03H,OAASA,EACjB13H,EAAQ+3H,IAAMA,EACd/3H,EAAQk4H,MAAQA,EAChBl4H,EAAQq5H,MAAQA,EAChBr5H,EAAQw5H,QAAUA,EAClBx5H,EAAQ25H,OAASA,EACjB35H,EAAQ85H,SAAWA,EACnB95H,EAAQi6H,SAAWA,EACnBj6H,EAAQo6H,UAAYA,EACpBp6H,EAAQ86H,mBAAqBA,EAC7B96H,EAAQ+6H,yBAA2BA,EACnC/6H,EAAQg7H,MAAQA,EAChBh7H,EAAQm8H,cAAgBA,EACxBn8H,EAAQu8H,aAAeA,EACvBv8H,EAAQ68H,SAAWA,EACnB78H,EAAQ+8H,QAAUA,EAClB/8H,EAAQu9H,KAAOA,EACfv9H,EAAQw9H,QAAUA,EAClBx9H,EAAQ09H,KAAOA,EACf19H,EAAQ49H,SAAWA,EAGnB59H,EAAQ69H,OAAU,CAACtG,EAAa/e,IAAa,IAAI8e,EAAYC,EAAa/e,GAG1Ex4G,EAAQi3B,OAAU,CAACwhF,EAAQxhF,EAAQuhF,IAAa,IAAIgf,EAAa/e,EAAQxhF,EAAQuhF,GAIjFx4G,EAAQ6f,GAAM24F,GAAY,IAAIif,EAAK,EAAGjf,GAItCx4G,EAAQ89H,IAAOtlB,GAAY,IAAIif,EAAK,EAAGjf,GAIvCx4G,EAAQ+9H,IAAOvlB,GAAY,IAAIif,EAAK,EAAGjf,GAIvCx4G,EAAQg+H,IAAOxlB,GAAY,IAAIif,EAAK,EAAGjf,GAIvCx4G,EAAQi+H,IAAOzlB,GAAY,IAAIif,EAAK,EAAGjf,GAIvCx4G,EAAQk+H,IAAO1lB,GAAY,IAAIif,EAAK,EAAGjf,GAIvCx4G,EAAQm+H,KAAQ3lB,GAAY,IAAIkgB,EAAWlgB,GAI3Cx4G,EAAQo+H,MAAS5lB,GAAY,IAAIkf,EAAO,EAAGlf,GAI3Cx4G,EAAQq+H,MAAS7lB,GAAY,IAAIkf,EAAO,EAAGlf,GAI3Cx4G,EAAQs+H,MAAS9lB,GAAY,IAAIkf,EAAO,EAAGlf,GAI3Cx4G,EAAQu+H,MAAS/lB,GAAY,IAAIkf,EAAO,EAAGlf,GAI3Cx4G,EAAQw+H,MAAShmB,GAAY,IAAIkf,EAAO,EAAGlf,GAI3Cx4G,EAAQy+H,OAAUjmB,GAAY,IAAIqgB,EAAargB,GAI/Cx4G,EAAQ0+H,GAAMlmB,GAAY,IAAIuf,EAAI,EAAGvf,GAIrCx4G,EAAQ07C,IAAO88D,GAAY,IAAIuf,EAAI,EAAGvf,GAItCx4G,EAAQ2+H,IAAOnmB,GAAY,IAAIuf,EAAI,EAAGvf,GAItCx4G,EAAQ4+H,IAAOpmB,GAAY,IAAIuf,EAAI,EAAGvf,GAItCx4G,EAAQ6+H,IAAOrmB,GAAY,IAAIuf,EAAI,EAAGvf,GAItCx4G,EAAQ8+H,IAAOtmB,GAAY,IAAIuf,EAAI,EAAGvf,GAItCx4G,EAAQ++H,KAAQvmB,GAAY,IAAIwgB,EAAUxgB,GAI1Cx4G,EAAQg/H,MAASxmB,GAAY,IAAI0f,EAAM,EAAG1f,GAI1Cx4G,EAAQi/H,MAASzmB,GAAY,IAAI0f,EAAM,EAAG1f,GAI1Cx4G,EAAQk/H,MAAS1mB,GAAY,IAAI0f,EAAM,EAAG1f,GAI1Cx4G,EAAQm/H,MAAS3mB,GAAY,IAAI0f,EAAM,EAAG1f,GAI1Cx4G,EAAQo/H,MAAS5mB,GAAY,IAAI0f,EAAM,EAAG1f,GAI1Cx4G,EAAQq/H,OAAU7mB,GAAY,IAAI2gB,EAAY3gB,GAG9Cx4G,EAAQs/H,IAAO9mB,GAAY,IAAI6gB,EAAM7gB,GAGrCx4G,EAAQu/H,MAAS/mB,GAAY,IAAIghB,EAAQhhB,GAGzCx4G,EAAQw/H,IAAOhnB,GAAY,IAAImhB,EAAOnhB,GAGtCx4G,EAAQy/H,MAASjnB,GAAY,IAAIshB,EAASthB,GAG1Cx4G,EAAQ4f,OAAU,CAACuqF,EAAQqO,EAAU6hB,IAAmB,IAAID,EAAUjwB,EAAQqO,EAAU6hB,GAGxFr6H,EAAQg3B,KAAQ,CAACkL,EAAMs6F,EAAKhkB,IAAa,IAAI+jB,EAAar6F,EAAMs6F,EAAKhkB,GAGrEx4G,EAAQkmD,IAAO,CAACg0E,EAAe9yD,EAAOoxC,IAAa,IAAIyhB,EAASC,EAAe9yD,EAAOoxC,GAGtFx4G,EAAQq8H,MAAS,CAACpB,EAAOC,EAAe1iB,IAAa,IAAIwiB,EAAMC,EAAOC,EAAe1iB,GAGrFx4G,EAAQ0/H,yBAA4B,CAACjnB,EAAQD,IAAa,IAAIuiB,EAAyBtiB,EAAQD,GAG/Fx4G,EAAQ2/H,KAAQ,CAAC59H,EAAQy2G,IAAa,IAAI+kB,EAAKx7H,EAAQy2G,GAGvDx4G,EAAQ4/H,KAAQpnB,GAAY,IAAIglB,EAAQhlB,GAGxCx4G,EAAQ6/H,KAAQ,CAAClC,EAASnlB,IAAa,IAAIklB,EAAKC,EAASnlB,GAGzDx4G,EAAAA,MAAiB,CAACoD,EAAOo1G,IAAa,IAAIolB,EAASx6H,EAAOo1G,+aCtpF1D,MAAAz3G,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACA8wD,EAAA9wD,EAAA,OACAq5C,EAAAr5C,EAAA,OACAw5C,EAAAx5C,EAAA,OACA8+H,EAAA9+H,EAAA,OAeAhB,EAAAA,cAAA,SACIoB,EACAC,EACAE,EACAE,EACAqC,EACA7B,GAC4B,IAA5BC,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAGZ,IAAK/uB,EAAS,aAAa,EAAAg8H,EAAAC,8BAA6B3+H,EAAYC,EAAOE,EAAME,EAAOQ,EAAgBC,GAGxG,MAAM89H,QAAkB,EAAAxlF,EAAAm7C,SAAQv0F,EAAYG,EAAoB,OAAdU,QAAc,IAAdA,OAAc,EAAdA,EAAgBg/E,WAAY/+E,GACxEo5C,GAAQ,EAAAwW,EAAAmuE,sBAAqBD,GAC7B9kF,QAAiB95C,EAAWyzF,kCAAkCv5C,GAE9D/4C,GAAc,IAAIxB,EAAAyB,aAAcC,IAClC1B,EAAA26B,cAAckf,cAAc,CACxBI,WAAY35C,EAAMwD,UAClBw2C,iBAAkBv3C,EAAQe,UAC1By2C,QACAJ,WACAh5C,eAEJ,EAAAm4C,EAAAmB,oCAAmC13C,EAAQe,UAAWtD,EAAME,EAAOS,IAKvE,aAFM,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,EAAOyC,GAAU7B,GAEpE6B,EAAQe,SACnB,oOCpDA,MAAAma,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OA6HA,SAAgBk/H,EAAiC7gH,GAIxB,IAJyB,UAC9Cnd,EACAod,MAAOoT,EAASytG,EAAU1+H,KAAUI,GAAa,KACjDgC,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAytG,WACA1+H,QACAI,gBAEJgC,KAAM7D,EAAAogI,uBAAuBzgH,OAAO9b,GAE5C,CAnIa7D,EAAAA,wBAAyB,EAAAgf,EAAAY,QAA+B,EAAC,EAAAZ,EAAAa,IAAG,gBAAgB,EAAAZ,EAAA2T,KAAI,YAc7F5yB,EAAAA,yBAAA,SACI0yB,EACAytG,EACA1+H,EACAC,GAE4B,IAD5BG,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQmgH,EAAUlgH,UAAU,EAAOC,YAAY,IAErDze,EACAI,GAGEgC,EAAOY,EAAO0b,MAAMngB,EAAAogI,uBAAuBhgH,MASjD,OARApgB,EAAAogI,uBAAuB//G,OACnB,CACId,YAAaJ,EAAAmB,iBAAiB+/G,QAC9B3+H,OAAQkE,OAAOlE,IAEnBmC,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAyBA7D,EAAAA,yBAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAogI,uBAAuBhgH,KAAM,MAAM,IAAIlB,EAAAyB,iCAEvE,MACIrB,MAAM,QAAEoT,EAAO,SAAEytG,EAAQ,MAAE1+H,EAAK,aAAEI,GAAc,KAChDgC,GACAq8H,EAAkC3gH,GACtC,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiB+/G,QAAS,MAAM,IAAInhH,EAAA0B,iCAC7D,IAAK8R,IAAYytG,IAAa1+H,EAAO,MAAM,IAAIyd,EAAA2B,iCAI/C,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAytG,WACA1+H,QACAI,gBAEJgC,OAER,EAwBA7D,EAAAA,kCAAAkgI,8BCpIAlgI,EAAQ,OAAkB,EA4C1BA,EAAQ,EA3Cc,CACpB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CACT,GAAM,2BACN,oBAAqB,WAEvB,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CACT,GAAM,yBAER,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CACT,GAAM,yBAER,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,40BAEP,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,40BAEP,SAAY,gDCtC5B,MAAMsyD,EAAOtxD,EAAAA,OAAAA,GACPs/H,EAAkBt/H,EAAQ,MAc1Bu/H,EAAgB,SAASC,EAAY1+G,GACzC,KAAK5hB,gBAAgBqgI,GACnB,OAAO,IAAIA,EAAcC,EAAY1+G,GAGlCA,IACHA,EAAU,CAAC,GAGb5hB,KAAK4hB,QAAU,CACb/S,QAAoC,qBAApB+S,EAAQ/S,QAA0B+S,EAAQ/S,QAAU,KACpE0xH,SAAsC,qBAArB3+G,EAAQ2+G,SAA2B3+G,EAAQ2+G,SAAW,KACvEhuE,UAAwC,qBAAtB3wC,EAAQ2wC,UAA4B3wC,EAAQ2wC,UAAY,WAAa,OAAOH,GAAQ,EACtG3F,QAAoC,qBAApB7qC,EAAQ6qC,QAA0B7qC,EAAQ6qC,QAAU,EACpE+F,mBAA0D,mBAA/B5wC,EAAQ4wC,oBAAmC5wC,EAAQ4wC,oBAGhFxyD,KAAKsgI,WAAaA,CACpB,EAEAvgI,EAAOD,QAAUugI,EAWjBA,EAAcz1H,UAAU6oB,QAAU,SAAStH,EAAQkmC,EAAQt9C,EAAIi0F,GAC7D,MAAM/lE,EAAOjjC,KACb,IAAIyzB,EAAU,KAGd,MAAM+sG,EAAUr2H,MAAMi3B,QAAQjV,IAA6B,oBAAXkmC,EAEhD,GAA6B,IAAzBryD,KAAK4hB,QAAQ6qC,SAAiB+zE,EAChC,MAAM,IAAIvhG,UAAU,0CAMtB,GAAGuhG,IAFYA,GAAWr0G,GAA4B,kBAAXA,GAAyC,oBAAXkmC,EAGvE22C,EAAW32C,EACX5+B,EAAUtH,MACL,CACY,oBAAPpX,IACRi0F,EAAWj0F,EAEXA,OAAKjT,GAGP,MAAM2+H,EAAkC,oBAAbz3B,EAE3B,IACEv1E,EAAU2sG,EAAgBj0G,EAAQkmC,EAAQt9C,EAAI,CAC5Cw9C,UAAWvyD,KAAK4hB,QAAQ2wC,UACxB9F,QAASzsD,KAAK4hB,QAAQ6qC,QACtB+F,mBAAoBxyD,KAAK4hB,QAAQ4wC,oBAErC,CAAE,MAAM5oC,GACN,GAAG62G,EACD,OAAOz3B,EAASp/E,GAElB,MAAMA,CACR,CAGA,IAAI62G,EACF,OAAOhtG,CAGX,CAEA,IAAIxF,EACJ,IACEA,EAAUN,KAAKC,UAAU6F,EAASzzB,KAAK4hB,QAAQ2+G,SACjD,CAAE,MAAM32G,GACN,OAAOo/E,EAASp/E,EAClB,CAOA,OALA5pB,KAAKsgI,WAAWryG,GAAS,SAASrE,EAAK+J,GACrCsP,EAAKy9F,eAAe92G,EAAK+J,EAAUq1E,EACrC,IAGOv1E,CACT,EASA4sG,EAAcz1H,UAAU81H,eAAiB,SAAS92G,EAAK+2G,EAAc33B,GACnE,GAAGp/E,EAED,YADAo/E,EAASp/E,GAIX,IAAI+2G,EAGF,OAAO33B,IAGT,IAAIr1E,EACJ,IACEA,EAAWhG,KAAKwE,MAAMwuG,EAAc3gI,KAAK4hB,QAAQ/S,QACnD,CAAE,MAAM+a,GACN,OAAOo/E,EAASp/E,EAClB,CAEA,GAAuB,IAApBo/E,EAASnnG,OAAc,CAIxB,GAAGsI,MAAMi3B,QAAQzN,GAAW,CAG1B,MAAMitG,EAAU,SAAShvG,GACvB,MAA4B,qBAAdA,EAAI/O,KACpB,EAEMg+G,EAAa,SAAUjvG,GAC3B,OAAQgvG,EAAQhvG,EAClB,EAEA,OAAOo3E,EAAS,KAAMr1E,EAAS6/D,OAAOotC,GAAUjtG,EAAS6/D,OAAOqtC,GAElE,CAGE,OAAO73B,EAAS,KAAMr1E,EAAS9Q,MAAO8Q,EAAShF,OAInD,CAEAq6E,EAAS,KAAMr1E,EACjB,8BCjKA3wB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQghI,mBAAgB,EAExB,SAAWA,GACPA,EAAcA,EAAwB,SAAI,GAAK,WAC/CA,EAAcA,EAAsB,OAAI,GAAK,QAChD,CAHD,CAGmBhhI,EAAQghI,gBAAkBhhI,EAAQghI,cAAgB,CAAC,qBCPtE,MAAMC,EAAQjgI,EAAQ,MAGtBf,EAAOD,QAAUihI,EAFA,4FCAjB/9H,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQkhI,gBAAa,EACrB,MAAMC,EAAengI,EAAQ,OACvBogI,EAAiBpgI,EAAQ,OACzBqgI,EAAgBrgI,EAAQ,OACxBsgI,EAAiBtgI,EAAQ,OACzBugI,EAAuBvgI,EAAQ,OAC/BwgI,EAAoBxgI,EAAQ,OAC5BygI,EAAqBzgI,EAAQ,KAC7B0gI,EAAiB1gI,EAAQ,OACzBqE,EAAUrE,EAAQ,MAkBxBhB,EAAQkhI,WAjBR,MACI/yH,WAAAA,CAAY/M,EAAYqoB,GAA2E,IAA9Dy5E,EAAkBphG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAIq/H,EAAaQ,WAAWvgI,GAClFlB,KAAK0hI,UAAY,IACjB1hI,KAAK2hI,iBAAmB,IACxB3hI,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAWtF,KAAKiO,YAAY2D,KAAO,MAC7D5R,KAAKkB,WAAaA,EAClBlB,KAAKupB,YAAcA,EACnBvpB,KAAK4hI,OAAS,IAAIV,EAAe7/C,aAAarhF,MAC9CA,KAAK68E,KAAOmmB,EACZhjG,KAAK8hF,MAAQ,IAAIq/C,EAAcU,YAAY7hI,MAC3CA,KAAKomG,OAAS,IAAIg7B,EAAeU,aAAa9hI,MAC9CA,KAAK4nG,aAAe,IAAIy5B,EAAqBU,mBAAmB/hI,MAChEA,KAAK4mG,UAAY,IAAI06B,EAAkBU,gBAAgBhiI,MACvDA,KAAKolG,WAAa,IAAIm8B,EAAmBp+H,iBAAiBnD,MAC1DA,KAAK62G,OAAS,IAAI2qB,EAAeS,aAAajiI,KAClD,+BC1BJgD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,kCCAtDF,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQotB,wBAAqB,EAC7B,MAAMg1G,EAAiBphI,EAAQ,OAC/B,MAAMosB,UAA2Bg1G,EAAeC,aAC5Cl0H,WAAAA,GACI,IAAI+2G,EAAS,IAAIod,gBACbC,EAAcrd,EAAOxvD,SAAS8sE,YAClCD,EAAYE,OAAOv5H,MAAK,IAAMhJ,KAAKuiI,QAAS,IAC5Cn8H,MAAMi8H,EAAYv3H,MAAMib,KAAKs8G,IAAc,IACnCriI,KAAKuiI,OACEl+H,QAAQC,WACnBtE,KAAKuiI,QAAS,EACPF,EAAY9mE,WAEvBv7D,KAAKuiI,QAAS,EACdviI,KAAKglH,OAASA,CAClB,CAIA33F,iBAAAA,GACI,OAAOrtB,KAAKglH,OAAOE,QACvB,EAEJplH,EAAQotB,mBAAqBA,0BCvB7B,IAAIZ,EAAMtpB,OAAO4H,UAAU4L,eACvBjD,EAAS,IASb,SAASsjG,IAAU,CA4BnB,SAASC,EAAGC,EAAInsB,EAASosB,GACvBh3G,KAAK+2G,GAAKA,EACV/2G,KAAK4qF,QAAUA,EACf5qF,KAAKg3G,KAAOA,IAAQ,CACtB,CAaA,SAASC,EAAYC,EAASzoG,EAAOsoG,EAAInsB,EAASosB,GAChD,GAAkB,oBAAPD,EACT,MAAM,IAAI93E,UAAU,mCAGtB,IAAIhwB,EAAW,IAAI6nG,EAAGC,EAAInsB,GAAWssB,EAASF,GAC1CG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAMpC,OAJKyoG,EAAQE,QAAQD,GACXD,EAAQE,QAAQD,GAAKJ,GAC1BG,EAAQE,QAAQD,GAAO,CAACD,EAAQE,QAAQD,GAAMloG,GADhBioG,EAAQE,QAAQD,GAAK7vG,KAAK2H,IADlCioG,EAAQE,QAAQD,GAAOloG,EAAUioG,EAAQG,gBAI7DH,CACT,CASA,SAASI,EAAWJ,EAASC,GACI,MAAzBD,EAAQG,aAAoBH,EAAQE,QAAU,IAAIP,SAC5CK,EAAQE,QAAQD,EAC9B,CASA,SAASj1F,IACPliB,KAAKo3G,QAAU,IAAIP,EACnB72G,KAAKq3G,aAAe,CACtB,CAzEIr0G,OAAO0G,SACTmtG,EAAOjsG,UAAY5H,OAAO0G,OAAO,OAM5B,IAAImtG,GAASU,YAAWhkG,GAAS,IA2ExC2O,EAAatX,UAAU4sG,WAAa,WAClC,IACIrpG,EACAyD,EAFA6lG,EAAQ,GAIZ,GAA0B,IAAtBz3G,KAAKq3G,aAAoB,OAAOI,EAEpC,IAAK7lG,KAASzD,EAASnO,KAAKo3G,QACtB9qF,EAAIxV,KAAK3I,EAAQyD,IAAO6lG,EAAMnwG,KAAKiM,EAAS3B,EAAKlE,MAAM,GAAKkE,GAGlE,OAAI5O,OAAO00G,sBACFD,EAAMt/F,OAAOnV,OAAO00G,sBAAsBvpG,IAG5CspG,CACT,EASAv1F,EAAatX,UAAUwD,UAAY,SAAmBK,GACpD,IAAI0oG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAChCkpG,EAAW33G,KAAKo3G,QAAQD,GAE5B,IAAKQ,EAAU,MAAO,GACtB,GAAIA,EAASZ,GAAI,MAAO,CAACY,EAASZ,IAElC,IAAK,IAAI/rG,EAAI,EAAGwG,EAAImmG,EAAS91G,OAAQ+1G,EAAK,IAAIztG,MAAMqH,GAAIxG,EAAIwG,EAAGxG,IAC7D4sG,EAAG5sG,GAAK2sG,EAAS3sG,GAAG+rG,GAGtB,OAAOa,CACT,EASA11F,EAAatX,UAAUitG,cAAgB,SAAuBppG,GAC5D,IAAI0oG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAChCL,EAAYpO,KAAKo3G,QAAQD,GAE7B,OAAK/oG,EACDA,EAAU2oG,GAAW,EAClB3oG,EAAUvM,OAFM,CAGzB,EASAqgB,EAAatX,UAAUktG,KAAO,SAAcrpG,EAAO63B,EAAIG,EAAIG,EAAIG,EAAIG,GACjE,IAAIiwE,EAAM5jG,EAASA,EAAS9E,EAAQA,EAEpC,IAAKzO,KAAKo3G,QAAQD,GAAM,OAAO,EAE/B,IAEIhiG,EACAnK,EAHAoD,EAAYpO,KAAKo3G,QAAQD,GACzBhlG,EAAMvQ,UAAUC,OAIpB,GAAIuM,EAAU2oG,GAAI,CAGhB,OAFI3oG,EAAU4oG,MAAMh3G,KAAK+3G,eAAetpG,EAAOL,EAAU2oG,QAAIj1G,GAAW,GAEhEqQ,GACN,KAAK,EAAG,OAAO/D,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,UAAU,EACrD,KAAK,EAAG,OAAOx8E,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,IAAK,EACzD,KAAK,EAAG,OAAOl4B,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,EAAIG,IAAK,EAC7D,KAAK,EAAG,OAAOr4B,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,EAAIG,EAAIG,IAAK,EACjE,KAAK,EAAG,OAAOx4B,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,EAAIG,EAAIG,EAAIG,IAAK,EACrE,KAAK,EAAG,OAAO34B,EAAU2oG,GAAGjgG,KAAK1I,EAAUw8E,QAAStkD,EAAIG,EAAIG,EAAIG,EAAIG,IAAK,EAG3E,IAAKl8B,EAAI,EAAGmK,EAAO,IAAIhL,MAAMgI,EAAK,GAAInH,EAAImH,EAAKnH,IAC7CmK,EAAKnK,EAAI,GAAKpJ,UAAUoJ,GAG1BoD,EAAU2oG,GAAG1/B,MAAMjpE,EAAUw8E,QAASz1E,EACxC,KAAO,CACL,IACIvE,EADA/O,EAASuM,EAAUvM,OAGvB,IAAKmJ,EAAI,EAAGA,EAAInJ,EAAQmJ,IAGtB,OAFIoD,EAAUpD,GAAGgsG,MAAMh3G,KAAK+3G,eAAetpG,EAAOL,EAAUpD,GAAG+rG,QAAIj1G,GAAW,GAEtEqQ,GACN,KAAK,EAAG/D,EAAUpD,GAAG+rG,GAAGjgG,KAAK1I,EAAUpD,GAAG4/E,SAAU,MACpD,KAAK,EAAGx8E,EAAUpD,GAAG+rG,GAAGjgG,KAAK1I,EAAUpD,GAAG4/E,QAAStkD,GAAK,MACxD,KAAK,EAAGl4B,EAAUpD,GAAG+rG,GAAGjgG,KAAK1I,EAAUpD,GAAG4/E,QAAStkD,EAAIG,GAAK,MAC5D,KAAK,EAAGr4B,EAAUpD,GAAG+rG,GAAGjgG,KAAK1I,EAAUpD,GAAG4/E,QAAStkD,EAAIG,EAAIG,GAAK,MAChE,QACE,IAAKzxB,EAAM,IAAKvE,EAAI,EAAGuE,EAAO,IAAIhL,MAAMgI,EAAK,GAAIvB,EAAIuB,EAAKvB,IACxDuE,EAAKvE,EAAI,GAAKhP,UAAUgP,GAG1BxC,EAAUpD,GAAG+rG,GAAG1/B,MAAMjpE,EAAUpD,GAAG4/E,QAASz1E,GAGpD,CAEA,OAAO,CACT,EAWA+M,EAAatX,UAAUotG,GAAK,SAAYvpG,EAAOsoG,EAAInsB,GACjD,OAAOqsB,EAAYj3G,KAAMyO,EAAOsoG,EAAInsB,GAAS,EAC/C,EAWA1oE,EAAatX,UAAUosG,KAAO,SAAcvoG,EAAOsoG,EAAInsB,GACrD,OAAOqsB,EAAYj3G,KAAMyO,EAAOsoG,EAAInsB,GAAS,EAC/C,EAYA1oE,EAAatX,UAAUmtG,eAAiB,SAAwBtpG,EAAOsoG,EAAInsB,EAASosB,GAClF,IAAIG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAEpC,IAAKzO,KAAKo3G,QAAQD,GAAM,OAAOn3G,KAC/B,IAAK+2G,EAEH,OADAO,EAAWt3G,KAAMm3G,GACVn3G,KAGT,IAAIoO,EAAYpO,KAAKo3G,QAAQD,GAE7B,GAAI/oG,EAAU2oG,GAEV3oG,EAAU2oG,KAAOA,GACfC,IAAQ5oG,EAAU4oG,MAClBpsB,GAAWx8E,EAAUw8E,UAAYA,GAEnC0sB,EAAWt3G,KAAMm3G,OAEd,CACL,IAAK,IAAInsG,EAAI,EAAGmD,EAAS,GAAItM,EAASuM,EAAUvM,OAAQmJ,EAAInJ,EAAQmJ,KAEhEoD,EAAUpD,GAAG+rG,KAAOA,GACnBC,IAAS5oG,EAAUpD,GAAGgsG,MACtBpsB,GAAWx8E,EAAUpD,GAAG4/E,UAAYA,IAErCz8E,EAAO7G,KAAK8G,EAAUpD,IAOtBmD,EAAOtM,OAAQ7B,KAAKo3G,QAAQD,GAAyB,IAAlBhpG,EAAOtM,OAAesM,EAAO,GAAKA,EACpEmpG,EAAWt3G,KAAMm3G,EACxB,CAEA,OAAOn3G,IACT,EASAkiB,EAAatX,UAAUqtG,mBAAqB,SAA4BxpG,GACtE,IAAI0oG,EAUJ,OARI1oG,GACF0oG,EAAM5jG,EAASA,EAAS9E,EAAQA,EAC5BzO,KAAKo3G,QAAQD,IAAMG,EAAWt3G,KAAMm3G,KAExCn3G,KAAKo3G,QAAU,IAAIP,EACnB72G,KAAKq3G,aAAe,GAGfr3G,IACT,EAKAkiB,EAAatX,UAAUg3B,IAAM1f,EAAatX,UAAUmtG,eACpD71F,EAAatX,UAAUqsG,YAAc/0F,EAAatX,UAAUotG,GAK5D91F,EAAag2F,SAAW3kG,EAKxB2O,EAAaA,aAAeA,EAM1BniB,EAAOD,QAAUoiB,gCC1UL,SAAUsgH,EACtBj2G,EACAk2G,GAEA,IAAIvzH,EAAQ,EACRse,EAAcjB,EAAI1qB,OAClB6gI,GAAW,EAGf,IAAKD,EAAoB,CAEvB,GAAIl2G,EAAI1jB,WAAW,SACjB,OAAO,KAIT,KAAOqG,EAAQqd,EAAI1qB,QAAU0qB,EAAIzb,WAAW5B,IAAU,IACpDA,GAAS,EAIX,KAAOse,EAAMte,EAAQ,GAAKqd,EAAIzb,WAAW0c,EAAM,IAAM,IACnDA,GAAO,EAIT,GAC4B,KAA1BjB,EAAIzb,WAAW5B,IACe,KAA9Bqd,EAAIzb,WAAW5B,EAAQ,GAEvBA,GAAS,MACJ,CACL,MAAMyzH,EAAkBp2G,EAAIhY,QAAQ,KAAMrF,GAC1C,IAAyB,IAArByzH,EAAwB,CAI1B,MAAMC,EAAeD,EAAkBzzH,EACjC8F,EAAKuX,EAAIzb,WAAW5B,GACpBm8C,EAAK9+B,EAAIzb,WAAW5B,EAAQ,GAC5Bs8C,EAAKj/B,EAAIzb,WAAW5B,EAAQ,GAC5Bu8C,EAAKl/B,EAAIzb,WAAW5B,EAAQ,GAC5Bw8C,EAAKn/B,EAAIzb,WAAW5B,EAAQ,GAElC,GACmB,IAAjB0zH,GACO,MAAP5tH,GACO,MAAPq2C,GACO,MAAPG,GACO,MAAPC,GACO,MAAPC,QAGK,GACY,IAAjBk3E,GACO,MAAP5tH,GACO,MAAPq2C,GACO,MAAPG,GACO,MAAPC,QAGK,GACY,IAAjBm3E,GACO,MAAP5tH,GACO,MAAPq2C,GACO,MAAPG,QAGK,GACY,IAAjBo3E,GACO,MAAP5tH,GACO,MAAPq2C,QAKA,IAAK,IAAIrgD,EAAIkE,EAAOlE,EAAI23H,EAAiB33H,GAAK,EAAG,CAC/C,MAAM63H,EAAoC,GAApBt2G,EAAIzb,WAAW9F,GACrC,KAGO63H,GAAiB,IAAMA,GAAiB,KACxCA,GAAiB,IAAMA,GAAiB,IACvB,KAAlBA,GACkB,KAAlBA,GACkB,KAAlBA,GAIJ,OAAO,IAEX,CAKF,IADA3zH,EAAQyzH,EAAkB,EACO,KAA1Bp2G,EAAIzb,WAAW5B,IACpBA,GAAS,CAEb,CACF,CAKA,IAAI4zH,GAAqB,EACrBC,GAAyB,EACzBC,GAAe,EACnB,IAAK,IAAIh4H,EAAIkE,EAAOlE,EAAIwiB,EAAKxiB,GAAK,EAAG,CACnC,MAAM0jD,EAAeniC,EAAIzb,WAAW9F,GACpC,GACW,KAAT0jD,GACS,KAATA,GACS,KAATA,EACA,CACAlhC,EAAMxiB,EACN,KACF,CAAoB,KAAT0jD,EAETo0E,EAAoB93H,EACF,KAAT0jD,EAETq0E,EAAwB/3H,EACN,KAAT0jD,EAETs0E,EAAch4H,EACL0jD,GAAQ,IAAMA,GAAQ,KAC/Bg0E,GAAW,EAEf,CAYA,IARyB,IAAvBI,GACAA,EAAoB5zH,GACpB4zH,EAAoBt1G,IAEpBte,EAAQ4zH,EAAoB,GAIA,KAA1Bv2G,EAAIzb,WAAW5B,GACjB,OAA+B,IAA3B6zH,EACKx2G,EAAI7e,MAAMwB,EAAQ,EAAG6zH,GAAuBnuH,cAE9C,MACmB,IAAjBouH,GAAsBA,EAAc9zH,GAAS8zH,EAAcx1G,IAEpEA,EAAMw1G,EAEV,CAGA,KAAOx1G,EAAMte,EAAQ,GAAiC,KAA5Bqd,EAAIzb,WAAW0c,EAAM,IAC7CA,GAAO,EAGT,MAAMg5D,EACM,IAAVt3E,GAAese,IAAQjB,EAAI1qB,OAAS0qB,EAAI7e,MAAMwB,EAAOse,GAAOjB,EAE9D,OAAIm2G,EACKl8C,EAAS5xE,cAGX4xE,CACT,CChKA,SAASy8C,EAAav0E,GACpB,OACGA,GAAQ,IAAMA,GAAQ,KAASA,GAAQ,IAAMA,GAAQ,IAAOA,EAAO,GAExE,CAQc,WAAW83B,GACvB,GAAIA,EAAS3kF,OAAS,IACpB,OAAO,EAGT,GAAwB,IAApB2kF,EAAS3kF,OACX,OAAO,EAGT,IACmBohI,EAAaz8C,EAAS11E,WAAW,KACvB,KAA3B01E,EAAS11E,WAAW,IACO,KAA3B01E,EAAS11E,WAAW,GAEpB,OAAO,EAIT,IAAIoyH,GAAgB,EAChBC,GAAgB,EACpB,MAAMhxH,EAAMq0E,EAAS3kF,OAErB,IAAK,IAAImJ,EAAI,EAAGA,EAAImH,EAAKnH,GAAK,EAAG,CAC/B,MAAM0jD,EAAO83B,EAAS11E,WAAW9F,GACjC,GAAa,KAAT0jD,EAAuB,CACzB,GAEE1jD,EAAIk4H,EAAe,IAEF,KAAjBC,GAEiB,KAAjBA,GAEiB,KAAjBA,EAEA,OAAO,EAGTD,EAAel4H,CACjB,MAAO,IAnDX,SAAsB0jD,GACpB,OACGA,GAAQ,IAAMA,GAAQ,KAASA,GAAQ,IAAMA,GAAQ,IAAOA,EAAO,GAExE,CAgDyBu0E,CAAav0E,IAAkB,KAATA,GAAwB,KAATA,EAGxD,OAAO,EAGTy0E,EAAez0E,CACjB,CAEA,OAEEv8C,EAAM+wH,EAAe,GAAK,IAIT,KAAjBC,CAEJ,qIChDA,MAAMC,EApBN,SAAwBjkH,GAQJ,IARK,kBACvBkkH,GAAoB,EAAI,oBACxBC,GAAsB,EAAK,SAC3BC,GAAW,EAAI,gBACff,GAAkB,EAAI,YACtBgB,GAAc,EAAI,WAClBC,EAAa,KAAI,iBACjBC,GAAmB,GACDvkH,EAClB,MAAO,CACLkkH,oBACAC,sBACAC,WACAf,kBACAgB,cACAC,aACAC,mBAEJ,CAEwCC,CAAgB,CAAC,GC2CnD,SAAUC,EACdr3G,EACAs3G,EACAC,EAKAC,EACAp1G,GAEA,MAAM/M,EDpDF,SAAsBA,GAC1B,YAAgB9f,IAAZ8f,EACKwhH,EAxBX,SAAwBjkH,GAQJ,IARK,kBACvBkkH,GAAoB,EAAI,oBACxBC,GAAsB,EAAK,SAC3BC,GAAW,EAAI,gBACff,GAAkB,EAAI,YACtBgB,GAAc,EAAI,WAClBC,EAAa,KAAI,iBACjBC,GAAmB,GACDvkH,EAClB,MAAO,CACLkkH,oBACAC,sBACAC,WACAf,kBACAgB,cACAC,aACAC,mBAEJ,CASyBC,CAAgB/hH,EACzC,CC8C4CoiH,CAAYD,GAKtD,MAAmB,kBAARx3G,EACFoC,GAaJ/M,EAAQ4gH,gBAEF5gH,EAAQ4hH,YACjB70G,EAAO63D,SAAWg8C,EAAgBj2G,EAAK03G,EAAgB13G,IAEvDoC,EAAO63D,SAAWg8C,EAAgBj2G,GAAK,GAJvCoC,EAAO63D,SAAWj6D,EAOP,IAATs3G,GAA8C,OAApBl1G,EAAO63D,UAKjC5kE,EAAQ2hH,WACV50G,EAAOu1G,KChFX,SAAwB19C,GACtB,GAAIA,EAAS3kF,OAAS,EACpB,OAAO,EAGT,IAAIqN,EAAQs3E,EAAS39E,WAAW,KAAO,EAAI,EACvC2kB,EAAMg5D,EAAS3kF,OASnB,GAP0B,MAAtB2kF,EAASh5D,EAAM,KACjBA,GAAO,GAMLA,EAAMte,EAAQ,GAChB,OAAO,EAGT,IAAIi1H,GAAW,EAEf,KAAOj1H,EAAQse,EAAKte,GAAS,EAAG,CAC9B,MAAMw/C,EAAO83B,EAAS11E,WAAW5B,GAEjC,GAAa,KAATw/C,EACFy1E,GAAW,OACN,KAGAz1E,GAAQ,IAAMA,GAAQ,IACtBA,GAAQ,IAAMA,GAAQ,KACtBA,GAAQ,IAAMA,GAAQ,IAI3B,OAAO,CAEX,CAEA,OAAOy1E,CACT,CAQSC,CADoB59C,EDiCN73D,EAAO63D,WCjH9B,SAAwBA,GAEtB,GAAIA,EAAS3kF,OAAS,EACpB,OAAO,EAIT,GAAI2kF,EAAS3kF,OAAS,GACpB,OAAO,EAGT,IAAIwiI,EAAe,EAEnB,IAAK,IAAIr5H,EAAI,EAAGA,EAAIw7E,EAAS3kF,OAAQmJ,GAAK,EAAG,CAC3C,MAAM0jD,EAAO83B,EAAS11E,WAAW9F,GAEjC,GAAa,KAAT0jD,EACF21E,GAAgB,OACX,GAAI31E,EAAO,IAAgBA,EAAO,GACvC,OAAO,CAEX,CAEA,OACmB,IAAjB21E,GAC2B,KAA3B79C,EAAS11E,WAAW,IACyB,KAA7C01E,EAAS11E,WAAW01E,EAAS3kF,OAAS,EAE1C,CAqDqCyiI,CAAe99C,GDiC5C73D,EAAOu1G,MANJv1G,EAcP/M,EAAQ8hH,kBACR9hH,EAAQ4gH,kBACPyB,EAAgBt1G,EAAO63D,WAExB73D,EAAO63D,SAAW,KACX73D,IAITm1G,EAAan1G,EAAO63D,SAAU5kE,EAAS+M,GAC1B,IAATk1G,GAAuD,OAAxBl1G,EAAO41G,aACjC51G,GAITA,EAAOthB,OEjFK,SACZyG,EACA0yE,EACA5kE,GAGA,GAA2B,OAAvBA,EAAQ6hH,WAAqB,CAC/B,MAAMA,EAAa7hH,EAAQ6hH,WAC3B,IAAK,MAAMe,KAASf,EAClB,GAxDN,SAA+Bj9C,EAAkBg+C,GAC/C,QAAIh+C,EAASC,SAAS+9C,KAElBh+C,EAAS3kF,SAAW2iI,EAAM3iI,QACuB,MAAjD2kF,EAASA,EAAS3kF,OAAS2iI,EAAM3iI,OAAS,GAKhD,CA+C0B4iI,CAAsBj+C,EAAUg+C,GAClD,OAAOA,CAGb,CAEA,IAAIE,EAAsB,EAC1B,GAAIl+C,EAAS39E,WAAW,KACtB,KACE67H,EAAsBl+C,EAAS3kF,QACG,MAAlC2kF,EAASk+C,IAETA,GAAuB,EAQ3B,OAAI5wH,EAAOjS,SAAW2kF,EAAS3kF,OAAS6iI,EAC/B,KA/DX,SACEl+C,EACA+9C,GAgBA,MAAMI,EAAoBn+C,EAAS3kF,OAAS0iI,EAAa1iI,OAAS,EAC5D+iI,EAA2Bp+C,EAASq+C,YAAY,IAAKF,GAG3D,OAAkC,IAA9BC,EACKp+C,EAIFA,EAAS94E,MAAMk3H,EAA2B,EACnD,CA2CyBE,CAAwBt+C,EAAU1yE,EAC3D,CF0CkBixH,CAAUp2G,EAAO41G,aAAc51G,EAAO63D,SAAU5kE,GACnD,IAATiiH,GAA0C,OAAlBl1G,EAAOthB,OAC1BshB,GAITA,EAAOq2G,UGhJK,SAAuBx+C,EAAkBn5E,GAErD,OAAIA,EAAOxL,SAAW2kF,EAAS3kF,OACtB,GAGF2kF,EAAS94E,MAAM,GAAIL,EAAOxL,OAAS,EAC5C,CHyIqBojI,CAAat2G,EAAO63D,SAAU73D,EAAOthB,QAC3C,IAATw2H,IAKJl1G,EAAOu2G,qBInJP73H,EJoJEshB,EAAOthB,OInJTyG,EJoJE6a,EAAO41G,aI/IFl3H,EAAOK,MAAM,GAAIoG,EAAOjS,OAAS,KJyI/B8sB,MCjEG,IAAe63D,EG9E3Bn5E,EACAyG,CJwJF,CK5JO,MAAMqxH,EAAqB,WAChC,MAAMC,EAAY,CAAC,EAAE,CAAC,GAAGC,EAAY,CAAC,EAAE,CAAC,GAAGC,EAAY,CAAC,EAAE,CAAC,KAAOF,IAEnE,MADwB,CAAC,EAAE,CAAC,GAAK,CAAC,EAAE,CAAC,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,SAAWE,EAAG,WAAaA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,IAAK,IAAM,CAAC,EAAE,CAAC,KAAO,CAAC,EAAE,CAAC,IAAM,CAAC,EAAE,CAAC,GAAK,CAAC,EAAE,CAAC,QAAUD,EAAG,IAAM,CAAC,EAAE,CAAC,QAAUA,aAEjO,CAJkC,GAMrBE,EAAgB,WAC3B,MAAMC,EAAY,CAAC,EAAE,CAAC,GAAGC,EAAY,CAAC,EAAE,CAAC,GAAGC,EAAY,CAAC,EAAE,CAAC,IAAMF,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAKG,EAAY,CAAC,EAAE,CAAC,IAAMH,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAKI,EAAY,CAAC,EAAE,CAAC,IAAIH,IAAKI,EAAY,CAAC,EAAE,CAAC,EAAID,IAAKE,EAAY,CAAC,EAAE,CAAC,MAAQL,IAAKM,EAAa,CAAC,EAAE,CAAC,GAAKN,IAAKO,EAAa,CAAC,EAAE,CAAC,IAAMR,IAAKS,EAAa,CAAC,EAAE,CAAC,kBAAkBR,IAAKS,EAAa,CAAC,EAAE,CAAC,SAAWT,EAAG,OAASA,IAAKU,EAAa,CAAC,EAAE,CAAC,SAAWV,EAAG,SAAWA,EAAG,OAASA,IAAKW,EAAa,CAAC,EAAE,CAAC,SAAWX,IAAKY,EAAa,CAAC,EAAE,CAAC,SAAWZ,EAAG,SAAWA,EAAG,gBAAgBA,EAAG,OAASA,IAAKa,EAAa,CAAC,EAAE,CAAC,SAAWb,EAAG,gBAAgBA,EAAG,OAASA,EAAG,cAAcA,IAAKc,EAAa,CAAC,EAAE,CAAC,IAAIf,IAAKgB,EAAa,CAAC,EAAE,CAAC,GAAKf,IAAKgB,EAAa,CAAC,EAAE,CAAC,QAAUhB,IAAKiB,EAAa,CAAC,EAAE,CAAC,MAAQjB,IAAKkB,EAAa,CAAC,EAAE,CAAC,GAAKf,IAAKgB,EAAa,CAAC,EAAE,CAAC,GAAKnB,EAAG,iBAAiBA,EAAG,aAAaA,IAAKoB,EAAa,CAAC,EAAE,CAAC,GAAKpB,EAAG,iBAAiBA,IAAKqB,EAAa,CAAC,EAAE,CAAC,OAASrB,IAAKsB,EAAa,CAAC,EAAE,CAAC,iBAAiBtB,IAAKuB,EAAa,CAAC,EAAE,CAAC,IAAMvB,EAAG,iBAAiBA,IAAKwB,EAAa,CAAC,EAAE,CAAC,cAAcxB,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAYmB,EAAI,GAAKnB,EAAG,iBAAiBA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,aAAasB,EAAI,OAASC,IAAME,EAAa,CAAC,EAAE,CAAC,cAAczB,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAYoB,EAAI,GAAKpB,EAAG,iBAAiBA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,aAAasB,EAAI,OAASC,IAAMG,EAAa,CAAC,EAAE,CAAC,cAAc1B,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAYmB,EAAI,GAAKnB,EAAG,iBAAiBA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,oBAAoBA,EAAG,aAAasB,EAAI,OAASC,IAAMI,EAAa,CAAC,EAAE,CAAC,cAAc3B,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAYmB,EAAI,GAAKnB,EAAG,iBAAiBA,EAAG,mBAAmBA,EAAG,aAAaA,IAAK4B,EAAa,CAAC,EAAE,CAAC,GAAK5B,EAAG,iBAAiBA,EAAG,sBAAsBA,EAAG,UAAUA,EAAG,aAAaA,IAAK6B,EAAa,CAAC,EAAE,CAAC,cAAc7B,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAY4B,EAAI,GAAK5B,EAAG,iBAAiBA,EAAG,sBAAsBA,EAAG,UAAUA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,aAAasB,EAAI,OAASC,IAAMO,EAAa,CAAC,EAAE,CAAC,cAAc9B,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAY4B,EAAI,GAAK5B,EAAG,iBAAiBA,EAAG,sBAAsBA,EAAG,gBAAgBA,EAAG,UAAUA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,oBAAoBA,EAAG,aAAasB,EAAI,OAASC,IAA2FQ,EAAa,CAAC,EAAE,CAAC,cAAc/B,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAxK,CAAC,EAAE,CAAC,GAAKA,EAAG,iBAAiBA,EAAG,sBAAsBA,EAAG,UAAUA,IAAqH,GAAKA,EAAG,iBAAiBA,EAAG,sBAAsBA,EAAG,UAAUA,EAAG,mBAAmBA,EAAG,aAAaA,IAAKgC,EAAa,CAAC,EAAE,CAAC,KAAOhC,IAAKiC,EAAa,CAAC,EAAE,CAAC,KAAOjC,EAAG,YAAYA,IAAKkC,EAAa,CAAC,EAAE,CAAC,KAAOlC,IAAKmC,EAAa,CAAC,EAAE,CAAC,KAAOnC,IAAKoC,EAAa,CAAC,EAAE,CAAC,GAAKpC,IAAKqC,EAAa,CAAC,EAAE,CAAC,IAAMrC,IAAKsC,EAAa,CAAC,EAAE,CAAC,KAAOtC,IAAKuC,EAAa,CAAC,EAAE,CAAC,IAAMxC,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAKyC,EAAa,CAAC,EAAE,CAAC,EAAIxC,IAAKyC,EAAa,CAAC,EAAE,CAAC,IAAMzC,IAAK0C,EAAa,CAAC,EAAE,CAAC,GAAK3C,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK4C,EAAa,CAAC,EAAE,CAAC,EAAI3C,IAAK4C,EAAa,CAAC,EAAE,CAAC,KAAO5C,IAAK6C,EAAa,CAAC,EAAE,CAAC,KAAO7C,IAAK8C,EAAa,CAAC,EAAE,CAAC,IAAM9C,IAAK+C,EAAa,CAAC,EAAE,CAAC,KAAO/C,EAAG,QAAUA,IAAKgD,EAAa,CAAC,EAAE,CAAC,KAAOhD,IAAKiD,EAAa,CAAC,EAAE,CAAC,GAAKjD,IAAKkD,EAAa,CAAC,EAAE,CAAC,IAAMnD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,IAAKoD,EAAa,CAAC,EAAE,CAAC,OAASnD,IAAKoD,EAAa,CAAC,EAAE,CAAC,OAASpD,IAAKqD,GAAa,CAAC,EAAE,CAAC,GAAKtD,IAAKuD,GAAa,CAAC,EAAE,CAAC,IAAMvD,IAAKwD,GAAa,CAAC,EAAE,CAAC,IAAMxD,EAAG,GAAKA,EAAG,IAAMA,IAAKyD,GAAa,CAAC,EAAE,CAAC,GAAKzD,EAAG,IAAMA,IAE5lH,MADmB,CAAC,EAAE,CAAC,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMC,EAAG,SAAWA,EAAG,MAAQA,IAAK,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,KAAO,CAAC,EAAE,CAAC,QAAUA,EAAG,QAAUA,EAAG,yBAAyBA,EAAG,sBAAsBA,EAAG,UAAYA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,mBAAmBA,EAAG,sBAAsBA,EAAG,SAAWA,EAAG,WAAaA,EAAG,UAAYA,EAAG,YAAcA,EAAG,OAASA,EAAG,WAAaA,EAAG,OAASA,EAAG,IAAMA,EAAG,MAAQA,EAAG,SAAWA,EAAG,cAAgBA,EAAG,aAAeA,EAAG,QAAUA,EAAG,cAAgBA,EAAG,KAAOA,EAAG,WAAaA,EAAG,WAAaA,EAAG,WAAaA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,cAAgBA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,WAAaA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,WAAaA,EAAG,eAAiBA,EAAG,MAAQA,EAAG,YAAcA,EAAG,UAAYA,EAAG,UAAYA,EAAG,QAAUA,EAAG,WAAaA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,YAAcA,EAAG,YAAcA,EAAG,MAAQA,EAAG,WAAaA,EAAG,UAAYA,EAAG,WAAaA,EAAG,YAAcA,EAAG,YAAcA,EAAG,wBAAwBA,EAAG,MAAQA,EAAG,MAAQA,EAAG,WAAaA,EAAG,WAAaA,EAAG,QAAUA,EAAG,IAAMA,EAAG,SAAWA,EAAG,WAAaA,EAAG,OAASA,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,aAAeA,EAAG,MAAQA,IAAK,GAAKE,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKF,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMC,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMC,EAAG,OAASA,IAAK,GAAKE,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKH,EAAG,IAAMA,EAAG,QAAUA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQC,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,IAAK,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,IAAMA,IAAK,KAAO,CAAC,EAAE,CAAC,KAAOA,EAAG,KAAOA,EAAG,UAAUA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKQ,EAAI,KAAO,CAAC,EAAE,CAAC,QAAUP,EAAG,OAASA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAK,CAAC,EAAE,CAAC,IAAMD,IAAK,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,UAAY,CAAC,EAAE,CAAC,KAAOC,IAAK,UAAY,CAAC,EAAE,CAAC,IAAIA,EAAG,GAAKG,EAAG,GAAKA,IAAK,cAAgBH,EAAG,cAAgBA,EAAG,SAAW,CAAC,EAAE,CAAC,GAAKG,EAAG,OAASA,IAAK,IAAMH,EAAG,KAAOA,EAAG,cAAcA,EAAG,KAAOA,EAAG,aAAeA,EAAG,OAAOA,EAAG,MAAMA,EAAG,QAAQA,EAAG,YAAYA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAM,CAAC,EAAE,CAAC,UAAY,CAAC,EAAE,CAAC,IAAMC,IAAK,aAAeA,IAAK,IAAM,CAAC,EAAE,CAAC,IAAMD,EAAG,SAAWA,EAAG,IAAM,CAAC,EAAE,CAAC,QAAUA,IAAK,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,IAAK,IAAM,CAAC,EAAE,CAAC,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,IAAK,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,IAAK,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKC,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,GAAKA,IAAK,GAAKe,EAAI,GAAK,CAAC,EAAE,CAAC,GAAKf,EAAG,QAAUC,EAAG,WAAaA,EAAG,mBAAqB,CAAC,EAAE,CAAC,MAAQA,IAAK,SAAW,CAAC,EAAE,CAAC,QAAUA,IAAK,aAAaA,EAAG,aAAeA,EAAG,SAAWG,IAAK,GAAKI,EAAI,GAAK,CAAC,EAAE,CAAC,EAAIR,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,MAAQC,IAAK,GAAKC,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKF,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,IAAK,IAAM,CAAC,EAAE,CAAC,YAAcC,EAAG,WAAWA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,aAAaA,EAAG,WAAWA,EAAG,WAAWA,EAAG,UAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAQA,EAAG,QAAUA,IAAK,GAAK,CAAC,EAAE,CAAC,OAASD,EAAG,KAAOA,EAAG,YAAcA,EAAG,MAAQA,EAAG,QAAUA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,QAAUA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,WAAaA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,IAAK,GAAKE,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMF,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKC,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,SAAWA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,YAAcA,EAAG,WAAaA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,KAAOA,EAAG,SAAWA,EAAG,WAAaA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,cAAgBA,EAAG,SAAWA,EAAG,YAAcA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,WAAaA,EAAG,MAAQA,EAAG,WAAaA,EAAG,KAAOA,IAAK,GAAK,CAAC,EAAE,CAAC,SAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,MAAQA,EAAG,UAAYA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,EAAIA,EAAG,QAAUA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,SAAWA,EAAG,IAAMA,EAAG,cAAgBA,EAAG,SAAWA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAM,CAAC,EAAE,CAAC,WAAaC,IAAK,SAAWD,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,SAAWA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,GAAKA,EAAG,IAAMA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,IAAM,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,UAAYA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAM,CAAC,EAAE,CAAC,GAAKC,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,OAASD,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,GAAKA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,QAAUA,EAAG,IAAMe,EAAI,IAAMf,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,IAAMA,EAAG,SAAWA,EAAG,IAAMA,EAAG,UAAYA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,WAAaA,EAAG,WAAaA,EAAG,YAAcA,EAAG,SAAWA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWA,EAAG,IAAMA,EAAG,KAAOA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKC,IAAK,GAAKC,EAAG,GAAKF,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,UAAYC,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKC,EAAG,MAAQA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQC,EAAG,MAAQG,EAAG,GAAKH,EAAG,QAAQA,EAAG,aAAeA,EAAG,IAAMA,IAAK,IAAMD,EAAG,GAAK,CAAC,EAAE,CAAC,WAAaC,EAAG,QAAUA,EAAG,UAAYA,EAAG,cAAcA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,IAAMA,EAAG,cAAgBA,EAAG,MAAQ,CAAC,EAAE,CAAC,UAAYA,MAAO,GAAKO,EAAI,GAAKR,EAAG,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,QAAUC,EAAG,QAAUA,EAAG,WAAa,CAAC,EAAE,CAAC,KAAOA,EAAG,IAAMgB,EAAI,IAAMA,IAAM,KAAO,CAAC,EAAE,CAAC,GAAK,CAAC,EAAE,CAAC,KAAOhB,IAAK,UAAYA,IAAK,iBAAiBA,EAAG,OAASA,EAAG,QAAUA,EAAG,aAAaA,EAAG,aAAeA,EAAG,QAAU,CAAC,EAAE,CAAC,IAAIA,EAAG,IAAMG,IAAK,OAAOH,EAAG,MAAMA,EAAG,QAAQA,EAAG,YAAYA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,KAAOA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,IAAK,GAAKe,EAAI,GAAK,CAAC,EAAE,CAAC,GAAKf,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUC,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAM,CAAC,EAAE,CAAC,UAAY,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,cAAcC,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAYmB,EAAI,GAAKnB,EAAG,iBAAiBA,EAAG,gBAAgBA,EAAG,mBAAmBA,EAAG,aAAaA,IAAK,iBAAiB,CAAC,EAAE,CAAC,cAAcA,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAYoB,EAAI,GAAKpB,EAAG,iBAAiBA,EAAG,mBAAmBA,EAAG,aAAaA,IAAK,QAAUG,EAAG,QAAU,CAAC,EAAE,CAAC,aAAaA,EAAG,iBAAiBA,IAAK,GAAK,CAAC,EAAE,CAAC,aAAaH,EAAG,iBAAiBA,IAAK,IAAMG,IAAK,UAAY,CAAC,EAAE,CAAC,aAAaM,EAAI,iBAAiBA,MAAQ,IAAMV,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKC,IAAK,GAAKD,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,aAAaC,EAAG,UAAYkB,EAAI,YAAclB,EAAG,aAAeqB,IAAM,GAAK,CAAC,EAAE,CAAC,IAAMtB,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQC,EAAG,IAAMA,EAAG,KAAOG,EAAG,UAAYH,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOG,EAAG,iBAAmBG,EAAI,KAAOA,EAAI,SAAWN,IAAK,IAAM,CAAC,EAAE,CAAC,SAAWA,EAAG,SAAWA,EAAG,cAAgB,CAAC,EAAE,CAAC,IAAMG,IAAK,OAASH,EAAG,WAAaA,EAAG,gBAAgBA,EAAG,WAAaA,EAAG,eAAiBA,EAAG,UAAYA,EAAG,UAAY,CAAC,EAAE,CAAC,aAAawB,EAAI,YAAYC,EAAI,iBAAiBC,EAAI,iBAAiBA,EAAI,iBAAiBF,EAAI,aAAaE,EAAI,aAAaC,EAAI,iBAAiBD,EAAI,iBAAiBA,EAAI,iBAAiBC,EAAI,iBAAiBA,EAAI,iBAAiB,CAAC,EAAE,CAAC,cAAc3B,EAAG,UAAYmB,EAAI,GAAKnB,EAAG,iBAAiBA,EAAG,gBAAgBA,EAAG,mBAAmBA,EAAG,aAAaA,IAAK,eAAe6B,EAAI,YAAY,CAAC,EAAE,CAAC,cAAc7B,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAY4B,EAAI,GAAK5B,EAAG,iBAAiBA,EAAG,sBAAsBA,EAAG,UAAUA,EAAG,mBAAmBA,EAAG,aAAaA,IAAK,eAAe0B,EAAI,eAAeC,EAAI,aAAaF,EAAI,aAAaD,EAAI,aAAaG,EAAI,YAAY,CAAC,EAAE,CAAC,cAAc3B,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAYmB,EAAI,GAAKnB,EAAG,iBAAiBA,EAAG,gBAAgBA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,oBAAoBA,EAAG,aAAasB,EAAI,OAASC,IAAM,YAAYE,EAAI,YAAYD,EAAI,eAAe,CAAC,EAAE,CAAC,cAAcxB,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAYmB,EAAI,GAAKnB,EAAG,iBAAiBA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,aAAasB,EAAI,OAAS,CAAC,EAAE,CAAC,IAAMtB,MAAO,eAAe2B,EAAI,aAAaF,EAAI,YAAYD,EAAI,YAAY,CAAC,EAAE,CAAC,cAAcxB,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,iBAAiBA,EAAG,UAAY4B,EAAI,GAAK5B,EAAG,iBAAiBA,EAAG,sBAAsBA,EAAG,gBAAgBA,EAAG,UAAUA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,oBAAoBA,EAAG,aAAasB,EAAI,OAASC,IAAM,YAAYO,EAAI,gBAAgBC,EAAI,gBAAgBA,EAAI,YAAYF,EAAI,YAAYC,EAAI,QAAU3B,EAAG,YAAYA,EAAG,QAAU,CAAC,EAAE,CAAC,aAAaA,EAAG,YAAYA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,aAAaA,EAAG,aAAaA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,eAAeA,EAAG,YAAYA,EAAG,eAAeA,EAAG,eAAeA,EAAG,aAAaA,EAAG,aAAaA,EAAG,aAAaA,EAAG,YAAYA,EAAG,YAAYA,EAAG,YAAYA,EAAG,eAAeA,EAAG,eAAeA,EAAG,aAAaA,EAAG,YAAYA,EAAG,YAAYA,EAAG,YAAYA,EAAG,YAAYA,EAAG,YAAYA,IAAK,GAAKH,EAAG,OAAOA,EAAG,eAAeA,EAAG,oBAAoBA,EAAG,oBAAoBA,EAAG,oBAAoBA,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,oBAAoBA,EAAG,kBAAkBA,EAAG,kBAAkBA,EAAG,gBAAgBA,EAAG,eAAeA,EAAG,eAAeA,EAAG,eAAeA,EAAG,gBAAgBA,EAAG,wBAAwBA,EAAG,wBAAwBA,EAAG,YAAY,CAAC,EAAE,CAAC,YAAc,CAAC,EAAE,CAAC,KAAOA,MAAO,gBAAgBA,EAAG,eAAeA,EAAG,eAAeA,EAAG,mBAAmBA,EAAG,mBAAmBA,EAAG,eAAeA,EAAG,eAAeA,EAAG,4BAA4BA,EAAG,4BAA4BA,EAAG,4BAA4BA,EAAG,uBAAuBA,EAAG,uBAAuBA,EAAG,uBAAuBA,EAAG,2BAA2BA,EAAG,uBAAuBA,EAAG,uBAAuBA,EAAG,IAAMG,IAAK,cAAgB,CAAC,EAAE,CAAC,aAAa6B,EAAI,YAAYA,EAAI,iBAAiBA,EAAI,iBAAiBA,EAAI,iBAAiBA,EAAI,aAAaA,EAAI,aAAaA,EAAI,iBAAiBA,EAAI,iBAAiBA,EAAI,iBAAiBA,EAAI,iBAAiBA,EAAI,eAAeA,EAAI,YAAYA,EAAI,eAAeA,EAAI,eAAeA,EAAI,aAAaA,EAAI,aAAaA,EAAI,aAAaA,EAAI,YAAYA,EAAI,YAAYA,EAAI,YAAYA,EAAI,eAAeA,EAAI,eAAeA,EAAI,aAAaA,EAAI,YAAYA,EAAI,YAAYC,EAAI,YAAYA,EAAI,gBAAgB,CAAC,EAAE,CAAC,YAAYjC,IAAK,YAAYiC,EAAI,YAAYA,IAAM,WAAajC,EAAG,aAAeG,EAAG,QAAUH,EAAG,iBAAmB,CAAC,EAAE,CAAC,aAAaA,EAAG,YAAYA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,aAAaA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,eAAeA,EAAG,eAAeA,EAAG,aAAaA,EAAG,aAAaA,EAAG,YAAYA,EAAG,YAAYA,EAAG,YAAYA,EAAG,eAAeA,EAAG,aAAaA,EAAG,YAAYA,EAAG,YAAYA,EAAG,YAAYA,EAAG,gBAAgBA,EAAG,gBAAgBA,EAAG,YAAYA,EAAG,YAAYA,IAAK,qBAAuBA,EAAG,QAAUA,EAAG,eAAiBA,EAAG,oBAAsBA,EAAG,aAAaA,EAAG,UAAYA,EAAG,iBAAiBA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,aAAaA,EAAG,gBAAgBA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,eAAe,CAAC,EAAE,CAAC,SAAWG,IAAK,OAASH,EAAG,UAAUA,EAAG,UAAYA,EAAG,WAAaA,EAAG,UAAUA,EAAG,kBAAkBA,EAAG,cAAgBA,EAAG,GAAKA,EAAG,cAAgBA,EAAG,WAAa,CAAC,EAAE,CAAC,KAAOA,EAAG,SAAWA,IAAK,WAAaA,EAAG,WAAaA,EAAG,SAAWA,EAAG,QAAUA,EAAG,mBAAqBG,EAAG,YAAcH,EAAG,WAAaA,EAAG,SAAWA,EAAG,aAAeA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,QAAUA,EAAG,YAAcA,EAAG,UAAYA,EAAG,QAAUA,EAAG,aAAaA,EAAG,SAAWA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,cAAcA,EAAG,cAAcA,EAAG,cAAcA,EAAG,YAAYA,EAAG,cAAcA,EAAG,gBAAgBA,EAAG,cAAcA,EAAG,gBAAgBA,EAAG,gBAAgBA,EAAG,aAAaA,EAAG,cAAcA,EAAG,cAAcA,EAAG,kBAAkBA,EAAG,kBAAkBA,EAAG,gBAAgBA,EAAG,mBAAmBA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,QAAUA,EAAG,OAASA,EAAG,aAAaA,EAAG,UAAYA,EAAG,SAAWA,EAAG,UAAYA,EAAG,iBAAiBA,EAAG,eAAeA,EAAG,kBAAkBA,EAAG,iBAAiBA,EAAG,eAAeA,EAAG,YAAYA,EAAG,oBAAoBA,EAAG,WAAWA,EAAG,qBAAqBA,EAAG,gBAAgBA,EAAG,gBAAgBA,EAAG,cAAcA,EAAG,wBAAwBA,EAAG,YAAYA,EAAG,aAAaA,EAAG,YAAYA,EAAG,mBAAmBA,EAAG,cAAcA,EAAG,kBAAkBA,EAAG,cAAcA,EAAG,eAAeA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,gBAAgBA,EAAG,iBAAiBA,EAAG,aAAaA,EAAG,eAAeA,EAAG,uBAAuBA,EAAG,oBAAoBA,EAAG,cAAcA,EAAG,kBAAkBA,EAAG,gBAAgBA,EAAG,iBAAiBA,EAAG,eAAeA,EAAG,eAAeA,EAAG,cAAcA,EAAG,iBAAiBA,EAAG,mBAAmBA,EAAG,cAAcA,EAAG,gBAAgBA,EAAG,kBAAkBA,EAAG,eAAeA,EAAG,iBAAiBA,EAAG,oBAAoBA,EAAG,eAAeA,EAAG,UAAUA,EAAG,gBAAgBA,EAAG,eAAeA,EAAG,mBAAmBA,EAAG,gBAAgBA,EAAG,UAAUA,EAAG,mBAAmBA,EAAG,WAAWA,EAAG,cAAcA,EAAG,kBAAkBA,EAAG,WAAWA,EAAG,gBAAgBA,EAAG,iBAAmBA,EAAG,YAAYA,EAAG,WAAaA,EAAG,WAAWA,EAAG,mBAAmBA,EAAG,OAASA,EAAG,iBAAiBA,EAAG,cAAcA,EAAG,SAAWA,EAAG,aAAaA,EAAG,gBAAgBA,EAAG,eAAeA,EAAG,eAAiBA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,WAAaA,EAAG,MAAQA,EAAG,UAAYA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,UAAYA,EAAG,SAAW,CAAC,EAAE,CAAC,OAAOA,EAAG,OAAOA,EAAG,OAAOA,EAAG,OAAOA,EAAG,OAAOA,EAAG,OAAOA,EAAG,OAAOA,EAAG,OAAOA,IAAK,UAAYA,EAAG,cAAcA,EAAG,mBAAmBA,EAAG,iBAAiBA,EAAG,SAAWA,EAAG,YAAcA,EAAG,MAAQA,EAAG,YAAcA,EAAG,aAAeA,EAAG,aAAaA,EAAG,UAAYA,EAAG,SAAWA,EAAG,WAAaA,EAAG,SAAWA,EAAG,aAAeA,EAAG,kBAAoBA,EAAG,OAAOG,EAAG,QAAU,CAAC,EAAE,CAAC,EAAIA,IAAK,SAAWH,EAAG,SAAWA,EAAG,WAAaA,EAAG,WAAaA,EAAG,mBAAqBA,EAAG,WAAaA,EAAG,YAAcA,EAAG,eAAiBA,EAAG,WAAaA,EAAG,YAAcA,EAAG,UAAYA,EAAG,GAAKA,EAAG,SAAWA,EAAG,aAAeA,EAAG,QAAUA,EAAG,SAAWA,EAAG,aAAaA,EAAG,eAAeA,EAAG,OAASA,EAAG,qBAAqBmC,EAAI,QAAU,CAAC,EAAE,CAAC,YAAYnC,EAAG,eAAeA,IAAK,YAAY,CAAC,EAAE,CAAC,OAASA,EAAG,iBAAiBA,IAAK,SAAW,CAAC,EAAE,CAAC,KAAOA,IAAK,YAAcmC,EAAI,WAAa,CAAC,EAAE,CAAC,IAAMnC,EAAG,IAAMA,IAAK,YAAcA,EAAG,OAAS,CAAC,EAAE,CAAC,IAAMG,IAAK,cAAgBH,EAAG,OAAS,CAAC,EAAE,CAAC,QAAUA,EAAG,aAAeG,IAAK,cAAgBA,EAAG,kBAAoB,CAAC,EAAE,CAAC,GAAKH,IAAK,WAAaA,EAAG,eAAiBA,EAAG,YAAcA,EAAG,YAAcA,EAAG,WAAaA,EAAG,eAAiBA,EAAG,UAAYA,EAAG,SAAWA,EAAG,WAAaA,EAAG,OAASA,EAAG,MAAQkC,EAAI,UAAYE,EAAI,gBAAkBpC,EAAG,WAAaA,EAAG,SAAWA,EAAG,gBAAgB,CAAC,EAAE,CAAC,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,GAAKA,EAAG,EAAIA,EAAG,KAAOA,IAAK,YAAc,CAAC,EAAE,CAAC,MAAQ,CAAC,EAAE,CAAC,KAAOA,MAAO,KAAKA,EAAG,QAAUA,EAAG,aAAaA,EAAG,SAAWA,EAAG,WAAaA,EAAG,WAAaA,EAAG,SAAWA,EAAG,YAAcA,EAAG,WAAaA,EAAG,MAAQA,EAAG,WAAaA,EAAG,oBAAoBA,EAAG,gBAAkBA,EAAG,eAAiBA,EAAG,kBAAoBA,EAAG,iBAAmBA,EAAG,MAAQA,EAAG,aAAaA,EAAG,UAAYA,EAAG,WAAaA,EAAG,WAAaA,EAAG,gBAAkBA,EAAG,UAAYA,EAAG,mBAAqBA,EAAG,cAAgBA,EAAG,SAAWA,EAAG,UAAYA,EAAG,cAAgBA,EAAG,UAAYA,EAAG,YAAcA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,UAAYA,EAAG,WAAaA,EAAG,aAAeA,EAAG,YAAcA,EAAG,cAAgBA,EAAG,aAAeA,EAAG,SAAWA,EAAG,sBAAwB,CAAC,EAAE,CAAC,OAASA,IAAK,WAAaA,EAAG,QAAUA,EAAG,WAAaA,EAAG,eAAe,CAAC,EAAE,CAAC,IAAIA,EAAG,IAAMG,EAAG,IAAMA,EAAG,IAAMA,IAAK,gBAAkBA,EAAG,mBAAqBA,EAAG,mBAAmBH,EAAG,aAAeA,EAAG,WAAaA,EAAG,gBAAkBA,EAAG,YAAcA,EAAG,MAAQA,EAAG,OAASA,EAAG,YAAcA,EAAG,SAAWG,EAAG,SAAWH,EAAG,eAAeA,EAAG,MAAQ,CAAC,EAAE,CAAC,IAAMA,IAAK,eAAiBoC,EAAI,IAAMpC,EAAG,oBAAoBA,EAAG,kBAAkBA,EAAG,WAAaA,EAAG,WAAaA,EAAG,YAAcA,EAAG,YAAcA,EAAG,OAASA,EAAG,OAASA,EAAG,aAAeG,EAAG,SAAWH,EAAG,qBAAqBA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASqC,EAAI,YAAYrC,EAAG,OAAOA,EAAG,MAAQA,EAAG,UAAYA,EAAG,UAAYA,EAAG,GAAKA,EAAG,KAAO,CAAC,EAAE,CAAC,QAAUG,EAAG,cAAcA,EAAG,cAAcA,IAAK,WAAa,CAAC,EAAE,CAAC,SAAW,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,KAAO,CAAC,EAAE,CAAC,MAAMA,UAAW,OAASH,EAAG,QAAUA,EAAG,mBAAmBA,EAAG,aAAeA,EAAG,UAAYA,EAAG,WAAaA,EAAG,QAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,WAAaA,EAAG,aAAeA,EAAG,eAAeA,EAAG,oBAAoBA,EAAG,aAAeA,EAAG,qBAAqBA,EAAG,+BAA+BA,EAAG,gBAAgBA,EAAG,oBAAoBA,EAAG,OAAS,CAAC,EAAE,CAAC,IAAMA,IAAK,UAAY,CAAC,EAAE,CAAC,MAAQA,IAAK,cAAcA,EAAG,YAAcA,EAAG,kBAAoBA,EAAG,WAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,QAAUA,EAAG,gBAAkBA,EAAG,aAAasC,EAAI,QAAUtC,EAAG,cAAgBA,EAAG,mBAAmBA,EAAG,SAAW,CAAC,EAAE,CAAC,IAAMA,IAAK,GAAKA,EAAG,GAAKA,EAAG,cAAcA,EAAG,aAAeG,EAAG,WAAaH,EAAG,gBAAkBA,EAAG,iBAAiBA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAW,CAAC,EAAE,CAAC,MAAQA,IAAK,QAAUA,EAAG,UAAYA,EAAG,YAAcA,EAAG,eAAeA,EAAG,gBAAkB,CAAC,EAAE,CAAC,GAAKA,IAAK,MAAQ,CAAC,EAAE,CAAC,GAAKA,EAAG,WAAWA,IAAK,SAAWA,IAAK,KAAOD,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,IAAK,GAAKwC,EAAI,GAAK,CAAC,EAAE,CAAC,IAAMxC,EAAG,QAAUC,EAAG,IAAMA,EAAG,KAAOA,EAAG,YAAcA,EAAG,YAAcA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,WAAaA,EAAG,MAAQA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAM,CAAC,EAAE,CAAC,WAAayC,IAAM,QAAUzC,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,cAAgB,CAAC,EAAE,CAAC,IAAMC,IAAK,MAAQA,EAAG,GAAKA,EAAG,GAAKA,EAAG,YAAc,CAAC,EAAE,CAAC,MAAQG,EAAG,OAASH,IAAK,KAAO,CAAC,EAAE,CAAC,MAAQ,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,QAAS,GAAK,CAAC,EAAE,CAAC,QAAUA,EAAG,QAAUA,EAAG,IAAMA,EAAG,QAAUyC,EAAI,WAAazC,EAAG,kBAAkBA,EAAG,eAAeA,EAAG,YAAYA,EAAG,MAAQ,CAAC,EAAE,CAAC,IAAMA,EAAG,OAASA,IAAK,WAAWA,EAAG,QAAUA,EAAG,iBAAiB,CAAC,EAAE,CAAC,IAAMA,IAAK,gBAAgBA,EAAG,QAAUA,EAAG,gBAAkBA,EAAG,WAAaA,EAAG,QAAUA,EAAG,WAAaA,EAAG,WAAaA,EAAG,cAAgBA,EAAG,OAASG,EAAG,KAAOH,EAAG,0BAA0BA,EAAG,sBAAmBA,EAAG,wBAAwBA,EAAG,oBAAiBA,EAAG,eAAe,CAAC,EAAE,CAAC,GAAK,CAAC,EAAE,CAAC,MAAQA,EAAG,iBAAiBA,MAAO,aAAaA,EAAG,YAAYA,EAAG,SAASA,EAAG,YAAYA,EAAG,SAASA,EAAG,SAASA,EAAG,YAAcA,EAAG,aAAaA,EAAG,eAAiBA,EAAG,YAAcA,EAAG,aAAaA,EAAG,WAAaA,EAAG,YAAYA,EAAG,eAAeA,EAAG,YAAYA,EAAG,MAAQA,EAAG,eAAiBA,EAAG,cAAcA,EAAG,IAAMA,EAAG,kBAAkB,CAAC,EAAE,CAAC,IAAM,CAAC,EAAE,CAAC,GAAKA,MAAO,OAASA,EAAG,mBAAmBA,EAAG,aAAaA,EAAG,YAAYA,EAAG,MAAQA,EAAG,aAAe,CAAC,EAAE,CAAC,SAAWA,IAAK,aAAeA,EAAG,aAAaA,EAAG,OAAOA,EAAG,MAAMA,EAAG,QAAQA,EAAG,YAAYA,EAAG,SAASA,EAAG,WAAWA,EAAG,QAAUA,EAAG,UAAUA,EAAG,OAASA,EAAG,aAAaA,EAAG,WAAWA,EAAG,SAASA,EAAG,UAAUA,EAAG,uBAAuBA,EAAG,cAAcA,EAAG,UAAYG,EAAG,eAAeH,EAAG,YAAcA,EAAG,gBAAgBA,EAAG,mBAAqBA,IAAK,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMC,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,gBAAgBA,EAAG,aAAeA,IAAK,GAAK0C,EAAI,GAAK,CAAC,EAAE,CAAC,IAAM3C,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOC,EAAG,SAAWA,IAAK,IAAM,CAAC,EAAE,CAAC,IAAM,CAAC,EAAE,CAAC,YAAYA,MAAO,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,GAAKA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,GAAKA,IAAK,GAAKe,EAAI,GAAK,CAAC,EAAE,CAAC,IAAMf,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,WAAWC,EAAG,aAAeA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,WAAaC,EAAG,QAAUA,EAAG,OAAS,CAAC,EAAE,CAAC,SAAWA,IAAK,MAAQA,EAAG,MAAQA,EAAG,SAAWG,EAAG,YAAcH,IAAK,GAAK,CAAC,EAAE,CAAC,MAAQD,EAAG,GAAKC,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,IAAMA,EAAG,cAAgB,CAAC,EAAE,CAAC,GAAKA,IAAK,WAAa,CAAC,EAAE,CAAC,KAAOA,EAAG,KAAOA,IAAK,MAAQA,EAAG,cAAcA,EAAG,aAAeA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKe,EAAI,GAAK,CAAC,EAAE,CAAC,IAAMf,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQC,EAAG,KAAOG,IAAK,GAAKJ,EAAG,GAAK,CAAC,EAAE,CAAC,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,OAASA,EAAG,IAAMA,EAAG,MAAQA,EAAG,mBAAmBA,EAAG,UAAUC,EAAG,SAASA,EAAG,MAAQA,EAAG,aAAaA,EAAG,UAAYA,EAAG,QAAUA,EAAG,aAAaA,EAAG,SAASA,EAAG,kCAAkCA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,wBAAwBA,EAAG,qBAAqBA,EAAG,QAAUA,EAAG,SAAWA,EAAG,WAAaA,EAAG,KAAOA,EAAG,YAAcA,EAAG,aAAeA,EAAG,IAAMA,IAAK,GAAKD,EAAG,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,IAAK,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUC,EAAG,KAAOA,EAAG,QAAUA,EAAG,MAAQ,CAAC,EAAE,CAAC,OAASA,MAAO,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMC,IAAK,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,IAAMA,EAAG,GAAK,CAAC,EAAE,CAAC,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQC,EAAG,WAAaA,IAAK,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKA,EAAG,GAAK2C,EAAI,GAAK,CAAC,EAAE,CAAC,IAAM3C,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,YAAYA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,YAAYA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,IAAMC,EAAG,IAAMA,IAAK,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,KAAOA,EAAG,GAAKA,EAAG,KAAOA,EAAG,QAAU8C,IAAM,GAAK,CAAC,EAAE,CAAC,MAAQ9C,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,GAAKC,IAAK,GAAK,CAAC,EAAE,CAAC,IAAOD,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,GAAKA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,OAASA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,KAAOA,EAAG,KAAOA,EAAG,GAAKA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOC,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,aAAeC,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,QAAUC,EAAG,QAAUA,EAAG,WAAaA,IAAK,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,IAAK,eAAe,CAAC,EAAE,CAAC,gBAAgBA,EAAG,cAAcA,EAAG,aAAaA,EAAG,cAAcA,IAAK,iCAAQ,CAAC,EAAE,CAAC,uCAASA,EAAG,2BAAOA,EAAG,qBAAMA,EAAG,2BAAOA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,IAAK,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,KAAKA,EAAG,KAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,IAAMA,EAAG,SAAWA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,KAAOA,EAAG,GAAKA,EAAG,MAAQA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,SAAWA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,QAAUC,EAAG,MAAQA,EAAG,IAAMA,EAAG,SAAWA,IAAK,KAAO,CAAC,EAAE,CAAC,QAAUA,EAAG,cAAcA,EAAG,sBAAsBA,EAAG,uBAAuBA,EAAG,OAASA,EAAG,UAAUA,EAAG,YAAYA,EAAG,aAAaA,EAAG,gBAAgBA,EAAG,WAAaA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,eAAiBA,EAAG,YAAcA,EAAG,OAASA,EAAG,aAAeA,EAAG,QAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,UAAYA,EAAG,SAASA,IAAK,IAAM,CAAC,EAAE,CAAC,GAAKD,IAAK,GAAK,CAAC,EAAE,CAAC,KAAOC,EAAG,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,WAAWI,EAAG,OAASH,EAAG,OAASA,EAAG,SAASA,EAAG,YAAcA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,MAAQI,EAAG,kBAAoBJ,EAAG,OAAS8C,EAAI,WAAa9C,EAAG,KAAO,CAAC,EAAE,CAAC,IAAMA,IAAK,WAAaA,EAAG,qBAAuBA,EAAG,SAAW,CAAC,EAAE,CAAC,OAASA,IAAK,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,cAAcA,EAAG,IAAMA,EAAG,UAAY,CAAC,EAAE,CAAC,GAAKA,IAAK,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,aAAaA,EAAG,aAAeA,EAAG,UAAYA,EAAG,UAAYG,EAAG,QAAUgC,EAAI,WAAa,CAAC,EAAE,CAAC,MAAQnC,IAAK,KAAOA,EAAG,UAAYA,EAAG,UAAYA,EAAG,MAAQA,EAAG,eAAiBG,EAAG,MAAQ,CAAC,EAAE,CAAC,GAAKH,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,QAAU,CAAC,EAAE,CAAC,MAAQA,IAAK,aAAeA,EAAG,MAAQ,CAAC,EAAE,CAAC,KAAOA,IAAK,SAAWA,EAAG,IAAM,CAAC,EAAE,CAAC,IAAMG,IAAK,KAAOH,EAAG,WAAaA,EAAG,OAASA,EAAG,aAAasC,EAAI,SAASnC,EAAG,SAASA,EAAG,YAAcH,EAAG,YAAcA,EAAG,aAAe,CAAC,EAAE,CAAC,QAAUA,IAAK,IAAMA,EAAG,SAAWA,EAAG,SAAW,CAAC,EAAE,CAAC,OAASA,IAAK,aAAaA,EAAG,KAAOkC,EAAI,OAAS/B,EAAG,SAAWH,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,UAAY,CAAC,EAAE,CAAC,IAAM+C,EAAI,OAASA,EAAI,KAAOC,EAAI,QAAUD,IAAM,QAAU/C,EAAG,QAAUA,EAAG,YAAcA,EAAG,QAAUA,EAAG,UAAYA,EAAG,YAAcA,EAAG,cAAgBA,IAAK,GAAKE,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKH,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,kBAAkBA,EAAG,iCAAQA,EAAG,iBAAiBA,EAAG,iCAAQA,EAAG,UAAYC,IAAK,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,eAAeA,EAAG,YAAcA,EAAG,IAAMA,EAAG,WAAaA,EAAG,IAAMA,EAAG,SAAWA,EAAG,IAAMA,EAAG,SAAWA,EAAG,iBAAiBA,EAAG,cAAgBA,EAAG,IAAMA,EAAG,kBAAkBA,EAAG,mBAAmBA,EAAG,kBAAkBA,EAAG,wBAAwBA,EAAG,uBAAuBA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,kBAAkBA,EAAG,eAAiBA,EAAG,uBAAuBA,EAAG,oBAAsBA,EAAG,cAAgBA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,QAAUA,EAAG,IAAMA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,IAAMA,EAAG,OAASA,EAAG,IAAMA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,IAAMA,EAAG,SAAWA,EAAG,SAAWA,EAAG,IAAMA,EAAG,QAAUA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,oBAAoBA,EAAG,2BAA2BA,EAAG,uBAAoBA,EAAG,mBAAmBA,EAAG,0BAA0BA,EAAG,sBAAmBA,EAAG,qBAAqBA,EAAG,oBAAoBA,EAAG,SAAWA,EAAG,mBAAmBA,EAAG,kBAAkBA,EAAG,sBAAsBA,EAAG,qBAAqBA,EAAG,mBAAmBA,EAAG,kBAAkBA,EAAG,qBAAqBA,EAAG,4BAA4BA,EAAG,wBAAqBA,EAAG,oBAAoBA,EAAG,2BAA2BA,EAAG,uBAAoBA,EAAG,sBAAsBA,EAAG,qBAAqBA,EAAG,kBAAkBA,EAAG,eAAiBA,EAAG,qBAAqBA,EAAG,kBAAoBA,EAAG,kBAAkBA,EAAG,eAAiBA,EAAG,oBAAoBA,EAAG,2BAA2BA,EAAG,uBAAoBA,EAAG,iBAAmBA,EAAG,0BAA0BA,EAAG,sBAAmBA,EAAG,qBAAqBA,EAAG,kBAAoBA,EAAG,mBAAmBA,EAAG,0BAA0BA,EAAG,sBAAmBA,EAAG,gBAAkBA,EAAG,yBAAyBA,EAAG,qBAAkBA,EAAG,oBAAoBA,EAAG,iBAAmBA,EAAG,QAAUA,EAAG,IAAMA,EAAG,OAASA,EAAG,cAAcA,EAAG,aAAaA,EAAG,aAAaA,EAAG,UAAYA,EAAG,cAAcA,EAAG,gBAAgBA,EAAG,eAAeA,EAAG,WAAaA,EAAG,eAAeA,EAAG,YAAcA,EAAG,eAAeA,EAAG,sBAAsBA,EAAG,kBAAeA,EAAG,iBAAiBA,EAAG,wBAAwBA,EAAG,oBAAiBA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,iBAAcA,EAAG,aAAeA,EAAG,sBAAsBA,EAAG,kBAAeA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,GAAKA,EAAG,UAAYA,EAAG,GAAKA,EAAG,YAAcA,EAAG,aAAaA,EAAG,UAAYA,EAAG,GAAKA,EAAG,OAASA,EAAG,wBAAwBA,EAAG,wBAAwBA,EAAG,oBAAsBA,EAAG,oBAAsBA,EAAG,GAAKA,EAAG,MAAQA,EAAG,MAAQA,EAAG,GAAKA,EAAG,GAAKA,EAAG,OAASA,EAAG,GAAKA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,aAAeA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,SAAWA,EAAG,GAAKA,EAAG,OAASA,EAAG,kBAAkBA,EAAG,yBAAyBA,EAAG,qBAAkBA,EAAG,mBAAmBA,EAAG,KAAOA,EAAG,wBAAwBA,EAAG,oBAAsBA,EAAG,QAAUA,EAAG,UAAYA,EAAG,QAAUA,EAAG,GAAKA,EAAG,GAAKA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,QAAUA,EAAG,QAAUA,EAAG,oBAAoBA,EAAG,MAAQA,EAAG,iBAAiBA,EAAG,wBAAwBA,EAAG,oBAAiBA,EAAG,kBAAkBA,EAAG,GAAKA,EAAG,QAAUA,EAAG,SAAWA,EAAG,GAAKA,EAAG,GAAKA,EAAG,OAASA,EAAG,kBAAkBA,EAAG,yBAAyBA,EAAG,qBAAkBA,EAAG,mBAAmBA,EAAG,GAAKA,EAAG,GAAKA,EAAG,SAAWA,EAAG,cAAgBA,EAAG,kBAAkBA,EAAG,eAAiBA,EAAG,WAAaA,EAAG,oBAAoBA,EAAG,iBAAmBA,EAAG,gBAAgBA,EAAG,aAAeA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,GAAKA,EAAG,GAAKA,EAAG,eAAeA,EAAG,sBAAsBA,EAAG,kBAAeA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,iBAAcA,EAAG,GAAKA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,KAAOA,EAAG,QAAUA,EAAG,GAAKA,EAAG,QAAUA,EAAG,QAAUA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,GAAKA,EAAG,iBAAiBA,EAAG,cAAgBA,EAAG,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,QAAUA,EAAG,GAAKA,EAAG,GAAKA,EAAG,QAAUA,EAAG,SAAWA,EAAG,GAAKA,EAAG,OAASA,EAAG,eAAeA,EAAG,sBAAsBA,EAAG,kBAAeA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,iBAAcA,EAAG,GAAKA,EAAG,UAAYA,EAAG,GAAKA,EAAG,MAAQA,EAAG,OAASA,EAAG,GAAKA,EAAG,QAAUA,EAAG,GAAKA,EAAG,SAAWA,EAAG,oBAAoBA,EAAG,iBAAmBA,EAAG,GAAKA,EAAG,QAAUA,EAAG,GAAKA,EAAG,QAAUA,EAAG,GAAKA,EAAG,YAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,MAAQA,EAAG,GAAKA,EAAG,QAAUA,EAAG,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,gBAAgBA,EAAG,aAAeA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,kBAAkBA,EAAG,eAAiBA,EAAG,QAAUA,EAAG,GAAKA,EAAG,MAAQA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,OAASA,EAAG,MAAQA,EAAG,gBAAgBA,EAAG,wBAAwBA,EAAG,aAAeA,EAAG,cAAgBA,EAAG,mBAAqBA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,OAASA,EAAG,OAASA,EAAG,GAAKA,EAAG,OAASA,EAAG,GAAKA,EAAG,MAAQA,EAAG,GAAKA,EAAG,UAAYA,EAAG,eAAeA,EAAG,YAAcA,EAAG,GAAKA,EAAG,SAAWA,EAAG,GAAKA,EAAG,GAAKA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,QAAUA,EAAG,gBAAgBA,EAAG,aAAeA,EAAG,QAAUA,EAAG,GAAKA,EAAG,GAAKA,EAAG,SAAWA,EAAG,KAAOA,EAAG,QAAUA,EAAG,GAAKA,EAAG,GAAKA,EAAG,UAAYA,EAAG,QAAUA,EAAG,GAAKA,EAAG,MAAQA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,OAASA,EAAG,QAAUA,EAAG,GAAKA,EAAG,GAAKA,EAAG,kBAAkBA,EAAG,gBAAgBA,EAAG,eAAiBA,EAAG,aAAeA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,KAAOA,EAAG,KAAOA,EAAG,OAASA,EAAG,GAAKA,EAAG,QAAUA,EAAG,QAAUA,EAAG,OAASA,EAAG,GAAKA,EAAG,MAAQA,EAAG,SAAWA,EAAG,GAAKA,EAAG,QAAUA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,UAAYA,EAAG,GAAKA,EAAG,GAAKA,EAAG,QAAUA,EAAG,GAAKA,EAAG,eAAeA,EAAG,YAAcA,EAAG,OAASA,EAAG,MAAQA,EAAG,GAAKA,EAAG,GAAKA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,wBAAwBA,EAAG,wBAAwBA,EAAG,oBAAsBA,EAAG,oBAAsBA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,GAAKA,EAAG,MAAQA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,gBAAgBA,EAAG,aAAeA,EAAG,GAAKA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,GAAKA,EAAG,gBAAgBA,EAAG,aAAeA,EAAG,QAAUA,EAAG,QAAUA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,UAAUC,EAAG,MAAQA,EAAG,WAAaA,EAAG,KAAO,CAAC,EAAE,CAAC,GAAKA,IAAK,cAAcA,EAAG,OAAOA,EAAG,OAAOA,EAAG,OAAOA,EAAG,aAAeA,EAAG,SAAWA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKC,IAAK,GAAKc,EAAI,GAAK,CAAC,EAAE,CAAC,KAAOf,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,IAAK,KAAOA,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,QAAU6C,EAAI,OAAS5C,EAAG,MAAQA,EAAG,WAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,IAAK,GAAKD,EAAG,MAAQ,CAAC,EAAE,CAAC,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,SAAWA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,WAAaA,EAAG,WAAaA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,IAAMA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,WAAaA,EAAG,KAAOA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,UAAYA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,IAAK,MAAQ,CAAC,EAAE,CAAC,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,YAAcA,EAAG,OAASA,EAAG,cAAgBA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,UAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,UAAYA,IAAK,OAAS,CAAC,EAAE,CAAC,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,UAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,SAAWA,EAAG,OAASA,EAAG,MAAQA,EAAG,WAAaA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,WAAaA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,IAAK,MAAQ,CAAC,EAAE,CAAC,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,UAAYA,EAAG,OAASA,EAAG,WAAaA,EAAG,SAAWA,EAAG,SAAWA,EAAG,WAAaA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,WAAaA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,WAAaA,EAAG,UAAYA,EAAG,OAASA,EAAG,KAAOA,EAAG,cAAgBA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,KAAOA,EAAG,KAAOA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,QAAUA,EAAG,WAAaA,EAAG,gBAAkBA,EAAG,WAAaA,IAAK,MAAQ,CAAC,EAAE,CAAC,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,IAAMA,EAAG,MAAQA,EAAG,MAAQA,EAAG,YAAcA,EAAG,KAAOA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,WAAaA,IAAK,MAAQ,CAAC,EAAE,CAAC,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,OAASA,EAAG,cAAgBA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,IAAK,QAAU,CAAC,EAAE,CAAC,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,WAAaA,EAAG,SAAWA,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,KAAOA,EAAG,MAAQA,EAAG,IAAMA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,cAAgBA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMA,EAAG,UAAYA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,UAAYA,IAAK,UAAY,CAAC,EAAE,CAAC,UAAYA,EAAG,WAAaA,EAAG,cAAgBA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,UAAYA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,WAAaA,EAAG,SAAWA,EAAG,MAAQA,EAAG,UAAYA,EAAG,WAAaA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,aAAeA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,QAAUA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,MAAQA,EAAG,KAAOA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,IAAK,KAAO,CAAC,EAAE,CAAC,QAAUA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,KAAOA,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,iBAAmBA,EAAG,QAAUA,EAAG,MAAQA,EAAG,aAAeA,EAAG,KAAOA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,KAAOA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,YAAcA,EAAG,MAAQA,EAAG,SAAWA,EAAG,KAAOA,EAAG,WAAaA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,KAAOA,IAAK,MAAQ,CAAC,EAAE,CAAC,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,gBAAkBA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,WAAaA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,UAAYA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,YAAcA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,SAAWA,IAAK,UAAY,CAAC,EAAE,CAAC,UAAYA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,SAAWA,EAAG,YAAcA,EAAG,iBAAmBA,EAAG,MAAQA,EAAG,aAAeA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,SAAWA,EAAG,cAAgBA,EAAG,MAAQA,EAAG,KAAOA,EAAG,KAAOA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,IAAK,SAAW,CAAC,EAAE,CAAC,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,UAAYA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,YAAcA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,aAAeA,EAAG,OAASA,EAAG,cAAgBA,EAAG,YAAcA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,UAAYA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,WAAaA,EAAG,SAAWA,EAAG,YAAcA,EAAG,aAAeA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,cAAgBA,EAAG,OAASA,EAAG,SAAWA,EAAG,UAAYA,EAAG,SAAWA,EAAG,SAAWA,EAAG,aAAeA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,aAAeA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,SAAWA,EAAG,aAAeA,EAAG,aAAeA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,KAAOA,EAAG,YAAcA,EAAG,YAAcA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,UAAYA,EAAG,QAAUA,EAAG,YAAcA,EAAG,OAASA,EAAG,UAAYA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,QAAUA,EAAG,UAAYA,EAAG,aAAeA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,UAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,MAAQA,EAAG,UAAYA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,IAAK,MAAQ,CAAC,EAAE,CAAC,KAAOA,EAAG,OAASA,EAAG,IAAMA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,UAAYA,EAAG,KAAOA,EAAG,YAAcA,EAAG,YAAcA,EAAG,UAAYA,EAAG,IAAMA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,UAAYA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,WAAaA,EAAG,SAAWA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,IAAK,QAAU,CAAC,EAAE,CAAC,IAAMA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,UAAYA,EAAG,QAAUA,EAAG,YAAcA,EAAG,aAAeA,EAAG,WAAaA,EAAG,QAAUA,EAAG,IAAMA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,YAAcA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,MAAQA,EAAG,WAAaA,EAAG,UAAYA,EAAG,WAAaA,EAAG,UAAYA,EAAG,KAAOA,EAAG,MAAQA,EAAG,SAAWA,EAAG,YAAcA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,KAAOA,IAAK,SAAW,CAAC,EAAE,CAAC,QAAUA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,MAAQA,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,IAAK,MAAQ,CAAC,EAAE,CAAC,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,WAAaA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,WAAaA,EAAG,QAAUA,EAAG,MAAQA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,cAAgBA,EAAG,MAAQA,EAAG,YAAcA,EAAG,OAASA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,IAAK,OAAS,CAAC,EAAE,CAAC,QAAUA,EAAG,cAAgBA,EAAG,QAAUA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,UAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,IAAK,UAAY,CAAC,EAAE,CAAC,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,WAAaA,EAAG,UAAYA,EAAG,WAAaA,EAAG,SAAWA,EAAG,aAAeA,EAAG,cAAgBA,EAAG,IAAMA,EAAG,SAAWA,EAAG,MAAQA,IAAK,SAAW,CAAC,EAAE,CAAC,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,UAAYA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,eAAiBA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,GAAKA,EAAG,KAAOA,EAAG,WAAaA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,KAAOA,EAAG,MAAQA,IAAK,MAAQ,CAAC,EAAE,CAAC,IAAMA,EAAG,OAASA,EAAG,OAASA,EAAG,aAAeA,EAAG,IAAMA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,WAAaA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,YAAcA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,IAAK,SAAW,CAAC,EAAE,CAAC,QAAUA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,QAAUA,EAAG,YAAcA,EAAG,QAAUA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,YAAcA,EAAG,OAASA,EAAG,UAAYA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,SAAWA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,OAASA,EAAG,WAAaA,IAAK,MAAQ,CAAC,EAAE,CAAC,MAAQA,EAAG,YAAcA,EAAG,YAAcA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,QAAUA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,SAAWA,EAAG,SAAWA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,gBAAkBA,EAAG,OAASA,EAAG,KAAOA,EAAG,WAAaA,EAAG,QAAUA,EAAG,OAASA,EAAG,UAAYA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,UAAYA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,IAAK,IAAM,CAAC,EAAE,CAAC,MAAQA,EAAG,MAAQA,EAAG,IAAMA,EAAG,SAAWA,EAAG,QAAUA,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,MAAQA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,IAAK,OAAS,CAAC,EAAE,CAAC,SAAWA,EAAG,kBAAoBA,EAAG,WAAaA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,SAAWA,EAAG,WAAaA,EAAG,cAAgBA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,cAAgBA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,IAAMA,IAAK,SAAW,CAAC,EAAE,CAAC,IAAMA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,WAAaA,EAAG,KAAOA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,WAAaA,EAAG,SAAWA,EAAG,UAAYA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,IAAK,OAAS,CAAC,EAAE,CAAC,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,QAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,cAAgBA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,UAAYA,EAAG,MAAQA,EAAG,WAAaA,EAAG,WAAaA,EAAG,aAAeA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,YAAcA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,UAAYA,EAAG,aAAeA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,UAAYA,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,SAAWA,EAAG,WAAaA,EAAG,OAASA,EAAG,QAAUA,IAAK,SAAW,CAAC,EAAE,CAAC,QAAUA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,QAAUA,EAAG,SAAWA,EAAG,WAAaA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,UAAYA,EAAG,aAAeA,EAAG,QAAUA,EAAG,SAAWA,EAAG,MAAQA,IAAK,KAAO,CAAC,EAAE,CAAC,KAAOA,EAAG,KAAOA,EAAG,OAASA,EAAG,eAAiBA,EAAG,QAAUA,EAAG,MAAQA,EAAG,aAAeA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,UAAYA,EAAG,MAAQA,EAAG,SAAWA,EAAG,UAAYA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,UAAYA,EAAG,cAAgBA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,WAAaA,EAAG,QAAUA,EAAG,MAAQA,EAAG,IAAMA,EAAG,eAAiBA,EAAG,aAAeA,EAAG,QAAUA,EAAG,QAAUA,IAAK,QAAU,CAAC,EAAE,CAAC,IAAMA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,YAAcA,EAAG,aAAeA,EAAG,QAAUA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,IAAK,KAAO,CAAC,EAAE,CAAC,MAAQA,EAAG,SAAWA,EAAG,YAAcA,EAAG,OAASA,EAAG,KAAOA,EAAG,UAAYA,EAAG,KAAOA,EAAG,SAAWA,EAAG,QAAUA,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,OAASA,EAAG,QAAUA,EAAG,IAAMA,EAAG,MAAQA,EAAG,KAAOA,IAAK,QAAU,CAAC,EAAE,CAAC,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,UAAYA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,MAAQA,EAAG,aAAeA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOA,EAAG,UAAYA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,IAAK,QAAU,CAAC,EAAE,CAAC,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,UAAYA,EAAG,eAAiBA,EAAG,SAAWA,EAAG,SAAWA,EAAG,YAAcA,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOA,EAAG,WAAaA,EAAG,QAAUA,EAAG,MAAQA,EAAG,UAAYA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,WAAaA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,IAAK,MAAQ,CAAC,EAAE,CAAC,MAAQA,EAAG,eAAiBA,EAAG,KAAOA,EAAG,MAAQA,EAAG,UAAYA,EAAG,SAAWA,EAAG,OAASA,EAAG,aAAeA,EAAG,iBAAmBA,EAAG,gBAAkBA,EAAG,SAAWA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,UAAYA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,UAAYA,EAAG,OAASA,EAAG,cAAgBA,EAAG,UAAYA,EAAG,KAAOA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,UAAYA,EAAG,SAAWA,EAAG,MAAQA,EAAG,KAAOA,EAAG,YAAcA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,YAAcA,EAAG,UAAYA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,UAAYA,EAAG,aAAeA,EAAG,SAAWA,EAAG,OAASA,EAAG,IAAMA,IAAK,KAAO,CAAC,EAAE,CAAC,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,WAAaA,EAAG,IAAMA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,UAAYA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,YAAcA,IAAK,QAAU,CAAC,EAAE,CAAC,QAAUA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,gBAAkBA,EAAG,iBAAmBA,EAAG,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,SAAWA,EAAG,UAAYA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,KAAOA,EAAG,SAAWA,EAAG,WAAaA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,WAAaA,EAAG,aAAeA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,QAAUA,IAAK,MAAQ,CAAC,EAAE,CAAC,MAAQA,EAAG,KAAOA,EAAG,WAAaA,EAAG,OAASA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,UAAYA,EAAG,SAAWA,EAAG,YAAcA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,UAAYA,EAAG,SAAWA,EAAG,SAAWA,EAAG,KAAOA,IAAK,QAAU,CAAC,EAAE,CAAC,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,OAASA,EAAG,aAAeA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,aAAeA,EAAG,KAAOA,EAAG,WAAaA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,IAAK,SAAW,CAAC,EAAE,CAAC,KAAOA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,WAAaA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,WAAaA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,WAAaA,EAAG,UAAYA,EAAG,UAAYA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,IAAK,QAAU,CAAC,EAAE,CAAC,SAAWA,EAAG,KAAOA,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,WAAaA,EAAG,OAASA,EAAG,WAAaA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,aAAeA,EAAG,MAAQA,EAAG,UAAYA,EAAG,KAAOA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,WAAaA,EAAG,OAASA,EAAG,WAAaA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,WAAaA,EAAG,MAAQA,IAAK,UAAY,CAAC,EAAE,CAAC,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,aAAeA,EAAG,WAAaA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,UAAYA,EAAG,UAAYA,EAAG,OAASA,IAAK,MAAQ,CAAC,EAAE,CAAC,OAASA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,cAAgBA,EAAG,gBAAkBA,EAAG,cAAgBA,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,EAAG,WAAaA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,MAAQA,EAAG,KAAOA,EAAG,WAAaA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,gBAAkBA,EAAG,UAAYA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,IAAMA,EAAG,OAASA,EAAG,IAAMA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,IAAK,QAAU,CAAC,EAAE,CAAC,MAAQA,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,YAAcA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,IAAK,OAAS,CAAC,EAAE,CAAC,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,UAAYA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,YAAcA,EAAG,WAAaA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,IAAK,SAAW,CAAC,EAAE,CAAC,MAAQA,EAAG,UAAYA,EAAG,KAAOA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,UAAYA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,KAAOA,EAAG,KAAOA,EAAG,SAAWA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,OAASA,EAAG,cAAgBA,EAAG,OAASA,EAAG,UAAYA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,KAAOA,IAAK,SAAW,CAAC,EAAE,CAAC,MAAQA,EAAG,SAAWA,EAAG,UAAYA,EAAG,KAAOA,EAAG,OAASA,EAAG,WAAaA,EAAG,SAAWA,EAAG,UAAYA,EAAG,WAAaA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,UAAYA,EAAG,UAAYA,EAAG,GAAKA,EAAG,MAAQA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,KAAOA,IAAK,UAAY,CAAC,EAAE,CAAC,IAAMA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,QAAUA,EAAG,UAAYA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,YAAcA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,IAAK,UAAY,CAAC,EAAE,CAAC,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,gBAAkBA,EAAG,YAAcA,EAAG,SAAWA,EAAG,OAASA,EAAG,eAAiBA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,OAASA,EAAG,cAAcA,EAAG,OAASA,EAAG,UAAYA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,aAAeA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,EAAG,WAAaA,EAAG,UAAYA,IAAK,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,iBAAiBA,EAAG,qBAAMA,EAAG,cAAcA,EAAG,eAAKA,EAAG,gBAAgBA,EAAG,qBAAMA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,YAAYA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,YAAYA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,YAAYA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,iBAAiBA,EAAG,qBAAMA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,eAAeA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,iBAAiBA,EAAG,qBAAMA,EAAG,SAAWe,EAAI,WAAaA,EAAI,KAAOA,EAAI,OAASA,EAAI,QAAUA,EAAI,OAASA,EAAI,SAAWA,EAAI,QAAUd,EAAG,aAAeA,EAAG,YAAcA,EAAG,WAAaA,EAAG,UAAYA,EAAG,QAAUA,EAAG,MAAMA,EAAG,MAAMA,EAAG,MAAMA,EAAG,MAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,YAAcA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,UAAYA,EAAG,IAAMA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,IAAMA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,WAAaA,EAAG,WAAaA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,WAAaA,EAAG,UAAYA,EAAG,WAAaA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,UAAYA,EAAG,IAAMA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,KAAOA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,SAAWA,EAAG,IAAMA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,IAAMA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,UAAYA,EAAG,OAASA,EAAG,QAAUA,EAAG,WAAaA,EAAG,YAAcA,EAAG,MAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,SAAWA,EAAG,IAAMA,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,cAAgB,CAAC,EAAE,CAAC,MAAQiD,EAAI,MAAQA,IAAM,OAASjD,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,QAAQA,EAAG,KAAOA,EAAG,SAAW,CAAC,EAAE,CAAC,GAAKA,EAAG,KAAOA,IAAK,SAAWA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAKA,EAAG,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKC,IAAK,GAAKc,EAAI,GAAKoC,EAAI,GAAK,CAAC,EAAE,CAAC,IAAMnD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,YAAcA,EAAG,OAASA,EAAG,YAAcA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKwC,EAAI,GAAK,CAAC,EAAE,CAAC,IAAMxC,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASC,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMC,IAAK,GAAKC,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKF,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKC,IAAK,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKE,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKF,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,IAAK,GAAKQ,EAAI,GAAK,CAAC,EAAE,CAAC,aAAaP,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,IAAK,GAAK,CAAC,EAAE,CAAC,KAAOA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKC,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMC,EAAG,MAAQA,EAAG,UAAYA,EAAG,SAAWA,EAAG,OAASA,EAAG,cAAcA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,UAAYA,EAAG,KAAOA,EAAG,IAAMA,EAAG,YAAcA,EAAG,QAAUA,EAAG,KAAOA,EAAG,KAAOA,EAAG,SAAWA,EAAG,QAAUsC,EAAI,OAAStC,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKA,EAAG,IAAMA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,OAASA,IAAK,GAAKe,EAAI,GAAK,CAAC,EAAE,CAAC,IAAMf,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMC,IAAK,GAAKC,EAAG,KAAO,CAAC,EAAE,CAAC,MAAQD,EAAG,QAAUA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,IAAK,GAAKD,EAAG,GAAKQ,EAAI,GAAK,CAAC,EAAE,CAAC,IAAMR,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWC,IAAK,GAAKuC,EAAI,GAAK,CAAC,EAAE,CAAC,GAAKxC,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,IAAK,OAASA,EAAG,GAAK,CAAC,EAAE,CAAC,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,KAAO,CAAC,EAAE,CAAC,IAAMqD,EAAI,IAAMA,IAAM,GAAK,CAAC,EAAE,CAAC,KAAOrD,EAAG,IAAMA,IAAK,GAAKA,EAAG,IAAM,CAAC,EAAE,CAAC,cAAgBC,EAAG,iBAAiBA,EAAG,eAAiBA,EAAG,OAASA,EAAG,OAASA,EAAG,iBAAiBA,EAAG,WAAaA,EAAG,qBAAqBA,EAAG,SAAWA,EAAG,mBAAmBA,EAAG,aAAeA,EAAG,uBAAuBA,EAAG,UAAYA,EAAG,oBAAoBA,EAAG,QAAUA,EAAG,kBAAkBA,EAAG,UAAYA,EAAG,oBAAoBA,EAAG,WAAaA,EAAG,QAAUA,EAAG,WAAaA,EAAG,OAASA,EAAG,gBAAgB,CAAC,EAAE,CAAC,KAAO8C,IAAM,QAAU9C,EAAG,UAAYA,EAAG,WAAaA,EAAG,aAAeA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQ,CAAC,EAAE,CAAC,EAAIA,IAAK,YAAYA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,YAAcA,EAAG,UAAUA,EAAG,YAAYA,EAAG,cAAcA,EAAG,YAAcA,EAAG,WAAa,CAAC,EAAE,CAAC,IAAMA,IAAK,kBAAoB8C,EAAI,aAAeA,EAAI,iBAAmBA,EAAI,SAAW9C,EAAG,WAAWA,EAAG,aAAaA,EAAG,gBAAgBA,EAAG,YAAcG,EAAG,WAAaH,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,KAAOA,EAAG,eAAeA,EAAG,QAAUA,EAAG,WAAWA,EAAG,WAAaA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,UAAYA,EAAG,cAAgBA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,UAAUA,EAAG,eAAeA,EAAG,QAAUA,EAAG,OAASA,EAAG,UAAYA,EAAG,SAAWA,EAAG,cAAcA,EAAG,YAAYA,EAAG,YAAYA,EAAG,WAAWA,EAAG,YAAYA,EAAG,gBAAgBA,EAAG,QAAUA,EAAG,gBAAgBA,EAAG,OAASA,EAAG,WAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,MAAQA,EAAG,OAASA,EAAG,GAAKA,EAAG,YAAc,CAAC,EAAE,CAAC,EAAIA,IAAK,OAAS,CAAC,EAAE,CAAC,QAAUA,EAAG,IAAMA,EAAG,KAAO,CAAC,EAAE,CAAC,EAAIA,EAAG,OAASA,IAAK,IAAM,CAAC,EAAE,CAAC,EAAIA,EAAG,EAAIA,EAAG,OAASA,MAAO,SAAW,CAAC,EAAE,CAAC,IAAMA,IAAK,QAAUA,EAAG,aAAaA,EAAG,UAAUA,EAAG,YAAYA,EAAG,YAAYA,EAAG,OAASA,EAAG,eAAiBA,EAAG,cAAcA,EAAG,KAAOA,EAAG,UAAYA,EAAG,SAASA,EAAG,SAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,aAAaA,EAAG,QAAUA,EAAG,WAAa,CAAC,EAAE,CAAC,UAAUA,EAAG,WAAWA,IAAK,OAAS,CAAC,EAAE,CAAC,WAAWA,EAAG,WAAWA,EAAG,WAAWA,IAAK,YAAc,CAAC,EAAE,CAAC,KAAO,CAAC,EAAE,CAAC,OAAOA,EAAG,QAAQA,EAAG,QAAQA,EAAG,OAAOA,EAAG,OAAOA,EAAG,OAAOA,MAAO,YAAc,CAAC,EAAE,CAAC,SAAWA,EAAG,eAAeA,IAAK,WAAawC,EAAI,SAAWxC,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,UAAYA,EAAG,cAAgBA,EAAG,QAAUG,EAAG,MAAQH,EAAG,OAASA,EAAG,YAAYA,EAAG,eAAeA,EAAG,UAAYA,EAAG,QAAUA,EAAG,gBAAkB,CAAC,EAAE,CAAC,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,UAAYA,EAAG,SAAWA,EAAG,QAAUA,EAAG,WAAaA,EAAG,QAAUA,IAAK,cAAgBA,EAAG,SAAWA,EAAG,eAAiBA,EAAG,QAAU,CAAC,EAAE,CAAC,KAAO,CAAC,EAAE,CAAC,KAAOA,IAAK,WAAaA,IAAK,UAAY,CAAC,EAAE,CAAC,GAAKA,IAAK,gBAAkBA,EAAG,SAAWA,EAAG,KAAOA,EAAG,iBAAiBA,EAAG,UAAYA,EAAG,SAAWA,EAAG,UAAYA,EAAG,MAAQA,EAAG,iBAAmBA,EAAG,OAASA,EAAG,QAAQA,EAAG,OAASA,EAAG,yBAA2BA,EAAG,WAAaA,EAAG,UAAYA,EAAG,eAAiBA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,cAAgBA,EAAG,IAAM,CAAC,EAAE,CAAC,QAAUG,EAAG,QAAUA,IAAK,SAAWH,EAAG,SAAWA,EAAG,GAAKA,EAAG,YAAYA,EAAG,QAAUA,EAAG,WAAaA,EAAG,mBAAmBA,EAAG,OAASA,EAAG,WAAaA,EAAG,SAAWA,EAAG,OAASA,EAAG,aAAeA,EAAG,WAAW,CAAC,EAAE,CAAC,SAAW,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,MAAO,KAAO,CAAC,EAAE,CAAC,IAAMA,EAAG,KAAOA,IAAK,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,GAAK,CAAC,EAAE,CAAC,EAAIG,IAAK,WAAa,CAAC,EAAE,CAAC,MAAQH,IAAK,aAAeA,EAAG,iBAAiBA,EAAG,gBAAgBA,EAAG,UAAYA,EAAG,YAAc,CAAC,EAAE,CAAC,QAAUA,EAAG,QAAUA,IAAK,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,KAAOD,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,EAAIA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAM,CAAC,EAAE,CAAC,GAAKC,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKC,EAAG,kBAAkBA,EAAG,IAAMA,EAAG,OAASA,EAAG,aAAaA,EAAG,aAAeA,EAAG,SAAWG,EAAG,QAAUH,EAAG,MAAQA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,UAAYA,EAAG,WAAaA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,KAAOA,EAAG,GAAKsD,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,YAAYA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,KAAOA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,SAAWA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,SAAWtD,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,eAASA,EAAG,KAAOA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,oBAAcA,EAAG,WAAaA,EAAG,MAAQA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,YAAcA,EAAG,SAAWA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,SAAWA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,SAAWA,EAAG,SAAWA,EAAG,aAAeA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,YAAYA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,aAAeA,EAAG,SAAWA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,aAAeA,EAAG,sBAAsBA,EAAG,kBAAeA,EAAG,cAAgBA,EAAG,QAAUA,EAAG,WAAaA,EAAG,UAAYA,EAAG,QAAUA,EAAG,gBAAkBA,EAAG,yBAAyBA,EAAG,qBAAkBA,EAAG,SAAWA,EAAG,OAASA,EAAG,YAAcA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,QAAUA,EAAG,SAAWuD,GAAI,WAAavD,EAAG,sBAAsBA,EAAG,qBAAaA,EAAG,GAAKA,EAAG,YAAYA,EAAG,QAAKA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,UAAYA,EAAG,KAAOA,EAAG,cAAcA,EAAG,aAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,cAAcA,EAAG,UAAOA,EAAG,KAAOA,EAAG,cAAcA,EAAG,UAAOA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,YAAYA,EAAG,QAAKA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,UAAYA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,wBAAwBA,EAAG,oBAAiBA,EAAG,UAAYA,EAAG,UAAYA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,oBAAWA,EAAG,eAAeA,EAAG,WAAQA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,iBAAcA,EAAG,aAAeA,EAAG,sBAAsBA,EAAG,kBAAeA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,eAASA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,MAAQA,EAAG,eAAeA,EAAG,cAAQA,EAAG,WAAaA,EAAG,UAAYA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,iBAAcA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,UAAYA,EAAG,MAAQA,EAAG,KAAOA,EAAG,cAAcA,EAAG,UAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,UAAYA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,gBAAUA,EAAG,QAAUA,EAAG,SAAWuD,GAAI,QAAUvD,EAAG,MAAQA,EAAG,WAAaA,EAAG,sBAAsBA,EAAG,qBAAaA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,iBAAcA,EAAG,WAAaA,EAAG,OAASA,EAAG,cAAgBA,EAAG,aAAeA,EAAG,cAAgBA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,IAAMA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,oBAAoBA,EAAG,wBAAWA,EAAG,OAASA,EAAG,kBAAkBA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMA,EAAG,aAAaA,EAAG,SAAMA,EAAG,SAAWA,EAAG,UAAYA,EAAG,YAAcA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,eAAeA,EAAG,WAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,SAAWA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,MAAQA,EAAG,eAAeA,EAAG,cAAQA,EAAG,OAASA,EAAG,WAAaA,EAAG,sBAAsBA,EAAG,qBAAaA,EAAG,OAASA,EAAG,QAAUA,EAAG,cAAgBA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,QAAUA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,MAAQA,EAAG,KAAOA,EAAG,MAAQA,EAAG,cAAgBA,EAAG,GAAKA,EAAG,YAAYA,EAAG,QAAKA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,OAASA,EAAG,oBAAoBA,EAAG,gBAAaA,EAAG,WAAaA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,aAAeA,EAAG,sBAAsBA,EAAG,qBAAeA,EAAG,WAAaA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,aAAeA,EAAG,UAAYA,EAAG,QAAU,CAAC,EAAE,CAAC,GAAKA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,IAAK,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,EAAG,WAAaA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,YAAcA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,UAAY,CAAC,EAAE,CAAC,GAAKA,IAAK,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,SAAWA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,WAAaA,EAAG,sBAAsBA,EAAG,wBAAaA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,WAAaA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,YAAcA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,aAAeA,EAAG,aAAeA,EAAG,WAAaA,EAAG,oBAAoBA,EAAG,gBAAaA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,SAAWA,EAAG,SAAWA,EAAG,KAAOA,EAAG,UAAYA,EAAG,UAAYA,EAAG,WAAaA,EAAG,UAAYA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,aAAeA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,SAAWA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,mBAAcA,EAAG,QAAUA,EAAG,UAAYA,EAAG,UAAYA,EAAG,KAAOA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,YAAcA,EAAG,UAAYA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,IAAMA,EAAG,MAAQA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,iBAAcA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,WAAaA,EAAG,MAAQA,EAAG,gBAAgBA,EAAG,cAAQA,EAAG,gBAAgBA,EAAG,uBAAuBA,EAAG,sBAAgBA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,kBAAkB,CAAC,EAAE,CAAC,MAAQA,EAAG,MAAQA,IAAK,yBAAyB,CAAC,EAAE,CAAC,eAAeA,EAAG,MAAQA,IAAK,qBAAkB,CAAC,EAAE,CAAC,WAAQA,EAAG,MAAQA,IAAK,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,eAAiBA,EAAG,wBAAwBA,EAAG,uBAAiBA,EAAG,gBAAgBA,EAAG,cAAQA,EAAG,WAAaA,EAAG,OAASA,EAAG,WAAaA,EAAG,UAAYA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,cAAcA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,cAAcA,EAAG,YAAYA,EAAG,YAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAW,CAAC,EAAE,CAAC,GAAKA,EAAG,YAAYA,EAAG,QAAKA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,IAAK,cAAcA,EAAG,UAAYA,EAAG,gBAAgBA,EAAG,SAAWA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,iBAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,WAAaA,EAAG,OAASA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,QAAU,CAAC,EAAE,CAAC,MAAQA,IAAK,iBAAiB,CAAC,EAAE,CAAC,eAAeA,IAAK,aAAU,CAAC,EAAE,CAAC,WAAQA,IAAK,cAAcA,EAAG,qBAAqBA,EAAG,iBAAcA,EAAG,UAAYA,EAAG,aAAaA,EAAG,oBAAoBA,EAAG,gBAAaA,EAAG,KAAOA,EAAG,cAAcA,EAAG,UAAOA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,gBAAgBA,EAAG,uBAAuBA,EAAG,mBAAgBA,EAAG,UAAYA,EAAG,SAAWA,EAAG,oBAAoBA,EAAG,mBAAWA,EAAG,UAAYA,EAAG,KAAOA,EAAG,cAAcA,EAAG,UAAOA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,YAAcA,EAAG,qBAAqBA,EAAG,oBAAcA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,UAAYA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,UAAYA,EAAG,UAAYA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,MAAQA,EAAG,eAAeA,EAAG,cAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,KAAOA,EAAG,cAAcA,EAAG,UAAOA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,eAAeA,EAAG,cAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,WAAaA,EAAG,QAAUA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,UAAYA,EAAG,MAAQA,EAAG,SAAWA,EAAG,IAAMA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,MAAQA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,SAAWA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,OAASA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,WAAaA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,cAAcA,EAAG,qBAAqBA,EAAG,iBAAcA,EAAG,UAAYA,EAAG,aAAaA,EAAG,oBAAoBA,EAAG,gBAAaA,EAAG,WAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,WAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,eAAeA,EAAG,sBAAsBA,EAAG,kBAAeA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,UAAYA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,OAASA,EAAG,cAAcA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,KAAOA,EAAG,SAAW,CAAC,EAAE,CAAC,GAAKA,EAAG,YAAYA,EAAG,QAAKA,IAAK,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,UAAYA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,QAAUA,EAAG,eAAeA,EAAG,WAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,cAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,YAAcA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,gBAAgBA,EAAG,YAASA,EAAG,OAASA,EAAG,WAAaA,EAAG,WAAaA,EAAG,MAAQA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,aAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,gBAAgBA,EAAG,cAAQA,EAAG,KAAOA,EAAG,cAAcA,EAAG,aAAOA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,OAASA,EAAG,iBAAiBA,EAAG,eAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,KAAOA,EAAG,SAAWA,EAAG,MAAQA,EAAG,eAAeA,EAAG,WAAQA,EAAG,QAAUA,EAAG,iBAAiBA,EAAG,gBAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,UAAYA,EAAG,mBAAmBA,EAAG,eAAYA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAW,CAAC,EAAE,CAAC,MAAQA,IAAK,QAAUA,EAAG,gBAAgBA,EAAG,eAAeA,EAAG,UAAYA,EAAG,oBAAoBA,EAAG,kBAAYA,EAAG,UAAYA,EAAG,IAAMA,EAAG,MAAQA,EAAG,WAAaA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,GAAKC,EAAG,gBAAgBA,EAAG,aAAeA,IAAK,GAAKc,EAAI,GAAKoC,EAAI,GAAK,CAAC,EAAE,CAAC,SAAWlD,EAAG,KAAOA,EAAG,SAAWA,EAAG,gBAAkBA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAKA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,OAASA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,eAAeA,EAAG,aAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,WAAaA,EAAG,OAASA,EAAG,QAAUC,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,MAAQA,EAAG,IAAM,CAAC,EAAE,CAAC,WAAaC,EAAG,SAAWA,EAAG,QAAUA,EAAG,QAAUA,EAAG,YAAcA,EAAG,MAAQ,CAAC,EAAE,CAAC,EAAIA,EAAG,IAAMA,IAAK,eAAe,CAAC,EAAE,CAAC,OAAS,CAAC,EAAE,CAAC,IAAMA,MAAO,GAAKA,EAAG,QAAUA,EAAG,aAAaA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,mBAAqBA,EAAG,SAAWA,EAAG,QAAUA,EAAG,YAAcA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAAS,CAAC,EAAE,CAAC,GAAKA,EAAG,KAAOA,IAAK,cAAgBA,EAAG,iBAAmBA,EAAG,UAAUA,EAAG,YAAYA,EAAG,OAASA,EAAG,aAAaA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,SAAWA,EAAG,iBAAiBA,EAAG,iBAAiBA,EAAG,kBAAkBA,EAAG,YAAYA,EAAG,YAAYA,EAAG,cAAcA,EAAG,kBAAkBA,EAAG,eAAeA,EAAG,cAAcA,EAAG,WAAWA,EAAG,UAAUA,EAAG,WAAWA,EAAG,cAAcA,EAAG,eAAeA,EAAG,eAAeA,EAAG,eAAeA,EAAG,gBAAgBA,EAAG,WAAWA,EAAG,YAAYA,EAAG,YAAcA,EAAG,QAAUA,EAAG,WAAaA,EAAG,OAASA,EAAG,cAAgBA,EAAG,SAAWA,EAAG,SAAWA,EAAG,UAAYA,EAAG,eAAeA,EAAG,OAASA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,YAAcA,EAAG,OAASA,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,iBAAmBA,EAAG,aAAeA,EAAG,cAAgB,CAAC,EAAE,CAAC,MAAQA,EAAG,GAAKqC,EAAI,IAAM,CAAC,EAAE,CAAC,GAAKA,MAAQ,YAAcrC,EAAG,YAAcA,EAAG,SAAWA,EAAG,SAASA,EAAG,SAASA,EAAG,GAAKA,EAAG,MAAQA,EAAG,SAAWA,EAAG,gBAAkBA,EAAG,eAAiBA,EAAG,cAAcA,EAAG,WAAaA,EAAG,iBAAmBA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,iBAAmBA,EAAG,OAASA,EAAG,QAAQA,EAAG,aAAaA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAUA,EAAG,WAAWA,EAAG,QAAUA,EAAG,OAASA,EAAG,IAAMA,EAAG,cAAcA,EAAG,WAAaA,EAAG,MAAQA,EAAG,YAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,QAAUiD,EAAI,UAAYjD,EAAG,YAAcA,EAAG,GAAKA,EAAG,GAAKA,EAAG,UAAYA,EAAG,QAAUA,EAAG,QAAUA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKe,EAAI,GAAK,CAAC,EAAE,CAAC,IAAMf,EAAG,IAAMA,EAAG,IAAMA,EAAG,EAAIA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUC,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,cAAgBA,EAAG,IAAMA,EAAG,GAAKA,EAAG,OAASA,EAAG,KAAOA,EAAG,WAAaA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,MAAQA,EAAG,GAAKA,EAAG,QAAUA,EAAG,OAASA,EAAG,UAAYA,EAAG,IAAM,CAAC,EAAE,CAAC,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,UAAYA,EAAG,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,OAASA,EAAG,GAAKA,EAAG,OAASA,IAAK,SAAWA,EAAG,aAAaA,EAAG,OAASA,EAAG,QAAUA,EAAG,WAAaA,EAAG,UAAYA,EAAG,QAAUA,EAAG,WAAaA,EAAG,YAAcA,EAAG,UAAYA,EAAG,MAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,UAAYA,EAAG,OAASA,EAAG,IAAMA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,SAAWA,EAAG,eAAeA,EAAG,MAAQA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,MAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,WAAaA,EAAG,UAAYA,EAAG,MAAQA,EAAG,WAAaA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,WAAaA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,SAAWA,EAAG,KAAOA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,UAAYA,EAAG,WAAaA,EAAG,KAAOA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,UAAYA,EAAG,QAAUA,EAAG,WAAaA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,MAAQA,EAAG,WAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,UAAYA,EAAG,eAAeA,EAAG,aAAeA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,WAAaA,EAAG,YAAcA,EAAG,SAAWA,EAAG,SAAWA,EAAG,WAAaA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,IAAMA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,UAAYA,EAAG,UAAYA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,IAAMC,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,iBAAiBA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,UAAYA,EAAG,UAAYA,EAAG,SAAWA,EAAG,SAAWA,EAAG,KAAOA,EAAG,UAAYA,EAAG,MAAQA,EAAG,QAAUA,EAAG,aAAeA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,GAAKA,EAAG,MAAQA,EAAG,WAAaA,EAAG,aAAeA,EAAG,IAAMA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,MAAQA,EAAG,QAAUA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,KAAOA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,KAAOA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,KAAOA,IAAK,IAAM,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,UAAUC,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,eAAeC,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,QAAUC,EAAG,KAAOA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,KAAOA,EAAG,IAAMA,EAAG,OAASC,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,KAAOD,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKC,EAAG,KAAOA,EAAG,MAAQA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,QAAU8C,EAAI,MAAQ7C,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,QAAUA,EAAG,UAAYA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,SAAWA,EAAG,IAAMA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,WAAaA,EAAG,IAAMA,EAAG,YAAcA,EAAG,SAAWA,EAAG,KAAOA,EAAG,SAAWA,EAAG,OAAS,CAAC,EAAE,CAAC,QAAUG,EAAG,QAAUA,EAAG,SAAWA,EAAG,IAAMA,IAAK,QAAU,CAAC,EAAE,CAAC,GAAKH,IAAK,MAAQ,CAAC,EAAE,CAAC,IAAMA,IAAK,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKE,EAAG,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMF,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,EAAIA,EAAG,GAAKA,EAAG,EAAIA,EAAG,GAAKA,EAAG,MAAQA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,QAAUA,EAAG,gBAAkBA,EAAG,OAASA,EAAG,EAAIA,EAAG,OAASA,EAAG,EAAIA,EAAG,EAAIA,EAAG,eAAiBA,EAAG,EAAIA,EAAG,IAAMA,EAAG,EAAIA,EAAG,MAAQA,EAAG,GAAKA,EAAG,MAAQA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,GAAKA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,EAAIA,EAAG,IAAMC,EAAG,OAASA,EAAG,aAAaA,EAAG,aAAeA,EAAG,aAAeA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWC,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWC,EAAG,MAAQA,EAAG,SAAW,CAAC,EAAE,CAAC,IAAMA,EAAG,GAAKA,EAAG,GAAKA,IAAK,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,OAASA,EAAG,QAAUA,IAAK,GAAKD,EAAG,GAAKA,EAAG,GAAKE,EAAG,GAAKF,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,KAAOA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUC,IAAK,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,UAAYA,EAAG,IAAMA,EAAG,UAAYA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWA,EAAG,QAAUA,EAAG,MAAQA,EAAG,QAAUC,EAAG,OAASA,EAAG,KAAOA,IAAK,GAAK,CAAC,EAAE,CAAC,SAAWA,EAAG,QAAUA,EAAG,WAAaA,EAAG,YAAcA,EAAG,QAAUA,EAAG,SAAWA,EAAG,WAAaA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,kBAAkBA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,UAAYA,EAAG,QAAUA,EAAG,UAAYA,EAAG,UAAYA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,WAAaA,EAAG,SAAWA,EAAG,IAAMA,EAAG,SAAWA,EAAG,QAAUA,EAAG,MAAQA,EAAG,mBAAmBA,EAAG,IAAMA,EAAG,QAAUA,EAAG,MAAQA,EAAG,SAAWA,EAAG,MAAQA,EAAG,IAAMA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,YAAcA,EAAG,KAAOA,EAAG,KAAOA,EAAG,YAAcA,EAAG,SAAWA,EAAG,QAAUA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKQ,EAAI,GAAKL,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKH,EAAG,GAAKA,EAAG,IAAMA,IAAK,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMC,IAAK,GAAKD,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,OAASC,EAAG,KAAOA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,IAAK,GAAKA,EAAG,GAAKQ,EAAI,GAAK,CAAC,EAAE,CAAC,GAAKR,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,QAAUA,EAAG,YAAcC,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMC,EAAG,GAAKA,EAAG,aAAeqB,EAAI,QAAUrB,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKQ,IAAM,GAAK,CAAC,EAAE,CAAC,IAAMR,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,cAAcC,EAAG,OAASA,EAAG,aAAaA,EAAG,aAAaA,EAAG,KAAOA,EAAG,OAASA,IAAK,GAAK,CAAC,EAAE,CAAC,KAAOD,EAAG,IAAM,CAAC,EAAE,CAAC,SAAWC,IAAK,KAAOD,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMC,EAAG,MAAQA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAKA,EAAG,GAAKA,EAAG,MAAQA,EAAG,KAAOA,EAAG,GAAKA,EAAG,IAAMA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,UAAYA,EAAG,SAAWA,EAAG,UAAYA,EAAG,UAAYA,EAAG,WAAaA,EAAG,WAAaA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,OAASA,EAAG,GAAKA,EAAG,GAAKA,EAAG,eAAiBA,EAAG,eAAiBA,EAAG,QAAUA,EAAG,GAAKA,EAAG,GAAKA,EAAG,kBAAkBA,EAAG,GAAKA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,aAAeA,EAAG,aAAeA,EAAG,KAAOA,EAAG,WAAaA,EAAG,GAAKA,EAAG,GAAKA,EAAG,cAAgBA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,GAAKA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,SAAWA,EAAG,SAAWA,EAAG,GAAKA,EAAG,MAAQA,EAAG,OAASA,EAAG,GAAKA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,GAAKA,EAAG,GAAKA,EAAG,WAAaA,EAAG,WAAaA,EAAG,GAAKA,EAAG,KAAOA,EAAG,GAAKA,EAAG,SAAWA,EAAG,GAAKA,EAAG,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,GAAKA,EAAG,MAAQA,EAAG,MAAQA,EAAG,YAAcA,EAAG,YAAcA,EAAG,aAAeA,EAAG,SAAWA,EAAG,SAAWA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKC,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,EAAIA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKD,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,GAAKA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,SAAW,CAAC,EAAE,CAAC,GAAKC,EAAG,GAAKA,IAAK,WAAawC,EAAI,MAAQxC,EAAG,YAAcA,EAAG,UAAYgD,EAAI,UAAUhD,EAAG,QAAQA,EAAG,MAAQA,EAAG,aAAeA,IAAK,IAAM,CAAC,EAAE,CAAC,IAAMA,EAAG,SAAWA,EAAG,QAAUA,IAAK,IAAMD,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAM,CAAC,EAAE,CAAC,KAAOC,EAAG,IAAMA,EAAG,KAAOA,EAAG,gBAAkBA,EAAG,YAAcA,EAAG,cAAgBA,IAAK,IAAMD,EAAG,OAASA,EAAG,IAAMe,EAAI,KAAOd,EAAG,MAAQA,EAAG,KAAOA,EAAG,yBAAyBA,EAAG,sBAAsBA,EAAG,sBAAsBA,EAAG,oBAAoBA,EAAG,qBAAqBA,EAAG,iBAAiBA,EAAG,mBAAmBA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,mBAAqBG,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMJ,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAKwD,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAK,CAAC,EAAE,CAAC,GAAKxD,EAAG,IAAMC,IAAK,GAAKuD,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKC,GAAI,GAAKD,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAK,CAAC,EAAE,CAAC,IAAM,CAAC,EAAE,CAAC,KAAOxD,EAAG,OAASA,EAAG,IAAMA,IAAK,GAAKA,EAAG,IAAMA,IAAK,GAAKwD,GAAI,GAAKA,GAAI,GAAK,CAAC,EAAE,CAAC,IAAMxD,EAAG,GAAKA,EAAG,IAAMA,EAAG,YAAYA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,UAAYA,IAAK,GAAKwD,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKC,GAAI,GAAKD,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKC,GAAI,GAAKD,GAAI,GAAKC,GAAI,GAAKD,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAKA,GAAI,GAAK,CAAC,EAAE,CAAC,GAAKxD,IAAK,GAAKwD,GAAI,QAAUvD,EAAG,QAAQA,EAAG,cAAcA,EAAG,eAAeA,EAAG,UAAYA,EAAG,SAAW,CAAC,EAAE,CAAC,IAAMA,IAAK,SAAWA,EAAG,IAAMA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,IAAM,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,IAAK,SAAWA,EAAG,WAAaA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAKA,EAAG,GAAK,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,GAAK,CAAC,EAAE,CAAC,EAAIC,IAAK,KAAKG,EAAG,MAAQH,IAAK,GAAK,CAAC,EAAE,CAAC,KAAOD,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,GAAKA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,gBAAgBA,EAAG,OAASA,EAAG,SAAWA,EAAG,UAAYA,EAAG,UAAYA,EAAG,UAAYA,EAAG,MAAQA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,SAAWA,EAAG,UAAYA,EAAG,UAAYA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,WAAaA,EAAG,SAAWA,EAAG,kBAAoBA,EAAG,aAAeA,EAAG,UAAYA,EAAG,QAAUA,EAAG,WAAaA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,IAAK,GAAKwC,EAAI,GAAK,CAAC,EAAE,CAAC,IAAMvC,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMD,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUI,EAAG,QAAUH,EAAG,OAASA,EAAG,OAASA,IAAK,GAAK,CAAC,EAAE,CAAC,IAAMA,IAAK,iBAAiBD,EAAG,uCAASA,EAAG,aAAaA,EAAG,qBAAMA,EAAG,iBAAiBA,EAAG,iCAAQA,EAAG,WAAWA,EAAG,eAAKA,EAAG,mBAAmBA,EAAG,6CAAUA,EAAG,YAAYA,EAAG,qBAAMA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,kBAAkBA,EAAG,6CAAUA,EAAG,aAAaA,EAAG,qBAAMA,EAAG,YAAYA,EAAG,eAAKA,EAAG,YAAYA,EAAG,eAAKA,EAAG,oBAAoBA,EAAG,yDAAYA,EAAG,WAAWA,EAAG,eAAKA,EAAG,WAAWA,EAAG,eAAKA,EAAG,cAAc,CAAC,EAAE,CAAC,aAAaA,EAAG,aAAaA,EAAG,aAAaA,EAAG,cAAcA,EAAG,aAAaA,EAAG,aAAaA,IAAK,eAAK,CAAC,EAAE,CAAC,eAAKA,EAAG,eAAKA,EAAG,eAAKA,EAAG,eAAKA,EAAG,eAAKA,EAAG,eAAKA,IAAK,cAAcA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,2BAAOA,EAAG,eAAeA,EAAG,2BAAOA,EAAG,iBAAiBA,EAAG,uCAASA,EAAG,gBAAgBA,EAAG,iCAAQA,EAAG,eAAeA,EAAG,2BAAOA,EAAG,iBAAiBA,EAAG,iCAAQA,EAAG,cAAcA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,2BAAOA,EAAG,iBAAiBA,EAAG,iCAAQA,EAAG,gBAAgBA,EAAG,iCAAQA,EAAG,cAAcA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,2BAAOA,EAAG,oBAAoBA,EAAG,6CAAUA,EAAG,kBAAkBA,EAAG,iCAAQA,EAAG,iBAAiBA,EAAG,iCAAQA,EAAG,cAAcA,EAAG,2BAAOA,EAAG,iBAAiBA,EAAG,uCAASA,EAAG,eAAeA,EAAG,eAAKA,EAAG,cAAcA,EAAG,qBAAMA,EAAG,aAAaA,EAAG,qBAAMA,EAAG,gBAAgBA,EAAG,2BAAOA,EAAG,mBAAmBA,EAAG,uCAASA,EAAG,kBAAkBA,EAAG,uCAASA,EAAG,YAAYA,EAAG,qBAAMA,EAAG,YAAYA,EAAG,qBAAMA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,iBAAiBA,EAAG,uCAASA,EAAG,eAAeA,EAAG,2BAAOA,EAAG,oBAAoBA,EAAG,6CAAUA,EAAG,qBAAqBA,EAAG,6CAAUA,EAAG,gBAAgBA,EAAG,uCAASA,EAAG,aAAa,CAAC,EAAE,CAAC,WAAWA,EAAG,YAAYA,EAAG,WAAWA,EAAG,YAAYA,EAAG,WAAWA,EAAG,YAAYA,IAAK,qBAAM,CAAC,EAAE,CAAC,eAAKA,EAAG,qBAAMA,EAAG,eAAKA,EAAG,qBAAMA,EAAG,eAAKA,EAAG,qBAAMA,IAAK,WAAWA,EAAG,eAAKA,EAAG,aAAaA,EAAG,qBAAMA,EAAG,oBAAoBA,EAAG,mDAAWA,EAAG,sBAAsBA,EAAG,mDAAWA,EAAG,sBAAsBA,EAAG,mDAAWA,EAAG,mBAAmBA,EAAG,mDAAWA,EAAG,eAAeA,EAAG,iCAAQA,EAAG,gBAAgBA,EAAG,qBAAMA,EAAG,yBAAyBA,EAAG,qEAAcA,EAAG,eAAeA,EAAG,iCAAQA,EAAG,eAAeA,EAAG,iCAAQA,EAAG,aAAa,CAAC,EAAE,CAAC,cAAcA,EAAG,mBAAmBA,EAAG,eAAeA,EAAG,gBAAgBA,EAAG,gBAAgBA,EAAG,kBAAkBA,IAAK,qBAAM,CAAC,EAAE,CAAC,2BAAOA,EAAG,uCAASA,EAAG,2BAAOA,EAAG,uCAASA,EAAG,iCAAQA,EAAG,uCAASA,IAAK,cAAcA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,YAAYA,EAAG,qBAAMA,EAAG,eAAeA,EAAG,iCAAQA,EAAG,IAAMA,EAAG,GAAKG,EAAG,GAAK,CAAC,EAAE,CAAC,GAAKH,EAAG,MAAQA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,GAAKA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,IAAMA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,GAAK,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,IAAK,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,KAAOA,EAAG,QAAUA,EAAG,SAAWA,EAAG,QAAU,CAAC,EAAE,CAAC,SAAWC,IAAK,UAAYD,EAAG,WAAaA,EAAG,YAAcA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,IAAMA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,KAAOA,EAAG,QAAUA,EAAG,OAASA,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,gBAAkBA,EAAG,eAAiBA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,UAAYA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,WAAaA,EAAG,IAAM,CAAC,EAAE,CAAC,UAAYC,EAAG,MAAQA,EAAG,MAAQG,EAAG,MAAQC,EAAG,MAAQJ,EAAG,WAAaA,EAAG,MAAQA,EAAG,IAAM,CAAC,EAAE,CAAC,QAAUA,IAAK,KAAOA,EAAG,eAAiBA,EAAG,UAAYA,EAAG,KAAOA,EAAG,UAAYK,EAAG,KAAO,CAAC,EAAE,CAAC,QAAUL,IAAK,YAAcA,EAAG,WAAWA,EAAG,YAAcA,EAAG,OAASA,EAAG,OAASG,EAAG,IAAMA,EAAG,IAAMH,EAAG,OAASA,EAAG,QAAUA,EAAG,UAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,aAAaA,EAAG,UAAYG,EAAG,KAAOH,EAAG,WAAaG,EAAG,MAAQA,EAAG,OAASG,EAAI,KAAON,EAAG,UAAY,CAAC,EAAE,CAAC,IAAIA,EAAG,YAAcG,IAAK,UAAYH,EAAG,WAAaA,EAAG,QAAUA,EAAG,UAAYA,EAAG,OAASA,EAAG,WAAaA,EAAG,IAAMA,EAAG,OAASA,EAAG,OAASG,IAAK,MAAQJ,EAAG,UAAYA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,WAAaA,EAAG,QAAUA,EAAG,SAAWA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,MAAQA,EAAG,IAAM,CAAC,EAAE,CAAC,UAAY,CAAC,EAAE,CAAC,iBAAiBW,EAAI,iBAAiBA,EAAI,aAAaA,EAAI,iBAAiBA,EAAI,iBAAiBA,EAAI,eAAeE,EAAI,eAAeF,EAAI,YAAYA,EAAI,YAAYA,EAAI,YAAYE,EAAI,YAAYA,EAAI,YAAYA,EAAI,aAAaH,EAAI,YAAYA,EAAI,iBAAiBA,EAAI,aAAaE,EAAI,iBAAiBF,EAAI,iBAAiBE,EAAI,YAAY,CAAC,EAAE,CAAC,SAAWX,EAAG,gBAAgBA,IAAK,eAAeS,EAAI,aAAaA,EAAI,aAAaA,EAAI,aAAaA,EAAI,YAAYA,EAAI,eAAeA,EAAI,eAAeA,EAAI,aAAaA,EAAI,YAAYA,EAAI,gBAAgBI,EAAI,gBAAgBA,EAAI,YAAY,CAAC,EAAE,CAAC,SAAWb,EAAG,gBAAgBA,EAAG,OAASA,IAAK,YAAcG,IAAK,OAAS,CAAC,EAAE,CAAC,QAAUA,IAAK,GAAK,CAAC,EAAE,CAAC,iBAAiBK,EAAI,iBAAiBA,EAAI,iBAAiBA,EAAI,eAAeA,EAAI,aAAaA,EAAI,YAAYA,EAAI,YAAYA,EAAI,YAAYA,EAAI,YAAYA,MAAQ,IAAMT,EAAG,MAAQA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,UAAYA,EAAG,YAAcA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,SAAWA,EAAG,WAAa,CAAC,EAAE,CAAC,IAAMC,EAAG,GAAKA,IAAK,QAAUD,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,QAAUA,EAAG,IAAMA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,YAAcA,EAAG,YAAcA,EAAG,KAAOA,EAAG,UAAYA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,WAAaA,EAAG,MAAQA,EAAG,WAAaA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,QAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,SAAWA,EAAG,IAAMA,EAAG,SAAWA,EAAG,YAAcA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,SAAWA,EAAG,MAAQ,CAAC,EAAE,CAAC,GAAKC,IAAK,SAAW,CAAC,EAAE,CAAC,UAAYA,IAAK,SAAWe,EAAI,IAAMhB,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,YAAcA,EAAG,IAAMA,EAAG,OAASA,EAAG,KAAO,CAAC,EAAE,CAAC,IAAM,CAAC,EAAE,CAAC,GAAKC,MAAO,MAAQD,EAAG,SAAWA,EAAG,QAAUA,EAAG,WAAaA,EAAG,IAAMA,EAAG,QAAUA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,KAAO,CAAC,EAAE,CAAC,KAAO,CAAC,EAAE,CAAC,GAAKC,MAAO,KAAOD,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,OAASA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,MAAQA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,MAAQ,CAAC,EAAE,CAAC,UAAYC,EAAG,QAAU,CAAC,EAAE,CAAC,GAAKA,IAAK,QAAUG,EAAG,QAAUH,EAAG,QAAU,CAAC,EAAE,CAAC,OAAOA,IAAK,OAASA,EAAG,SAAW,CAAC,EAAE,CAAC,IAAMA,IAAK,KAAOA,EAAG,aAAa,CAAC,EAAE,CAAC,MAAQ,CAAC,EAAE,CAAC,IAAM,CAAC,EAAE,CAAC,IAAMA,MAAO,IAAMA,IAAK,QAAU,CAAC,EAAE,CAAC,GAAKA,IAAK,IAAM,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,IAAK,SAAW,CAAC,EAAE,CAAC,GAAKA,IAAK,QAAU,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,aAAe,CAAC,EAAE,CAAC,GAAKA,EAAG,GAAKA,IAAK,SAAWA,EAAG,SAAWA,EAAG,QAAUA,EAAG,SAAWA,EAAG,YAAcG,EAAG,OAASH,EAAG,aAAeA,EAAG,UAAYA,EAAG,MAAQA,EAAG,aAAaG,EAAG,IAAM,CAAC,EAAE,CAAC,UAAY,CAAC,EAAE,CAAC,WAAWH,EAAG,WAAWA,EAAG,WAAWA,IAAK,SAAS,CAAC,EAAE,CAAC,QAAUA,EAAG,IAAM,CAAC,EAAE,CAAC,UAAYA,IAAK,IAAMiB,EAAI,GAAKjB,EAAG,aAAaA,EAAG,IAAMA,IAAK,UAAY,CAAC,EAAE,CAAC,KAAOA,EAAG,IAAMA,IAAK,IAAMA,EAAG,SAAS,CAAC,EAAE,CAAC,QAAUA,EAAG,IAAMiB,EAAI,GAAKjB,EAAG,aAAaA,EAAG,IAAMA,IAAK,SAAS,CAAC,EAAE,CAAC,QAAUA,EAAG,IAAMiB,EAAI,GAAKjB,EAAG,aAAaA,IAAK,UAAYA,EAAG,cAAgBA,IAAK,UAAYA,EAAG,UAAY,CAAC,EAAE,CAAC,KAAOA,IAAK,YAAcA,EAAG,kBAAkBA,EAAG,MAAQA,EAAG,UAAYA,EAAG,IAAMA,IAAK,KAAO,CAAC,EAAE,CAAC,QAAUA,EAAG,KAAOA,EAAG,MAAQA,IAAK,QAAUD,EAAG,MAAQA,EAAG,MAAQ,CAAC,EAAE,CAAC,IAAMI,IAAK,OAASJ,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAY,CAAC,EAAE,CAAC,IAAMC,EAAG,QAAUA,EAAG,QAAUA,IAAK,QAAUD,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,OAASA,EAAG,aAAeA,EAAG,WAAaA,EAAG,QAAUA,EAAG,YAAcA,EAAG,QAAUA,EAAG,KAAO,CAAC,EAAE,CAAC,UAAYC,EAAG,GAAKA,IAAK,QAAUD,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,IAAMA,EAAG,OAASA,EAAG,WAAaA,EAAG,YAAcA,EAAG,QAAUA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,QAAUA,EAAG,WAAaA,EAAG,MAAQA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,KAAOA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,SAAWA,EAAG,KAAOA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAAS,CAAC,EAAE,CAAC,QAAUC,EAAG,IAAMA,IAAK,IAAM,CAAC,EAAE,CAAC,UAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMG,EAAG,SAAWA,EAAG,IAAMA,EAAG,SAAWA,EAAG,MAAQH,EAAG,GAAKA,EAAG,QAAUA,EAAG,KAAOA,EAAG,eAAeA,EAAG,KAAOA,EAAG,UAAYK,EAAG,IAAML,EAAG,cAAgBA,EAAG,QAAUG,EAAG,KAAO,CAAC,EAAE,CAAC,IAAM,CAAC,EAAE,CAAC,IAAMH,EAAG,GAAK,CAAC,EAAE,CAAC,IAAIA,EAAG,IAAMG,QAAS,QAAUH,EAAG,YAAYA,EAAG,OAAOA,EAAG,MAAQA,EAAG,cAAgBA,EAAG,UAAY,CAAC,EAAE,CAAC,KAAOG,IAAK,UAAYH,EAAG,MAAQA,EAAG,UAAYA,EAAG,KAAOA,EAAG,MAAQA,EAAG,aAAaA,EAAG,iBAAiBA,EAAG,UAAUA,EAAG,WAAWA,EAAG,YAAcA,EAAG,KAAOA,EAAG,cAAcA,EAAG,OAAS,CAAC,EAAE,CAAC,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,GAAKA,EAAG,QAAUA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,WAAaA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,IAAK,IAAM,CAAC,EAAE,CAAC,EAAIG,EAAG,EAAIA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,IAAK,OAASH,EAAG,QAAUG,IAAK,IAAMJ,EAAG,SAAWA,EAAG,KAAOA,EAAG,QAAU,CAAC,EAAE,CAAC,UAAY,CAAC,EAAE,CAAC,OAASC,MAAO,OAAS,CAAC,EAAE,CAAC,OAASA,IAAK,UAAYD,EAAG,SAAWA,EAAG,SAAWA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,OAASA,EAAG,IAAMA,EAAG,QAAUA,EAAG,IAAMA,EAAG,SAAWA,EAAG,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,UAAYgB,EAAI,MAAQ,CAAC,EAAE,CAAC,MAAQ,CAAC,EAAE,CAAC,GAAKf,IAAK,KAAO2C,EAAI,OAASA,IAAM,OAAS5C,EAAG,OAASA,EAAG,SAAWA,EAAG,YAAcA,EAAG,YAAcA,EAAG,MAAQA,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,IAAMA,EAAG,OAAS,CAAC,EAAE,CAAC,QAAUI,IAAK,WAAaJ,EAAG,IAAM,CAAC,EAAE,CAAC,MAAQ6C,IAAM,OAAS,CAAC,EAAE,CAAC,OAAS5C,EAAG,GAAKA,IAAK,SAAWD,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,WAAaA,EAAG,KAAOA,EAAG,KAAOA,EAAG,UAAYA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAO,CAAC,EAAE,CAAC,MAAQC,IAAK,QAAUD,EAAG,QAAUA,EAAG,KAAOA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,QAAUA,EAAG,SAAWA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,UAAYgB,EAAI,KAAOhB,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,QAAUA,EAAG,IAAMA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQA,EAAG,WAAaA,EAAG,IAAMA,EAAG,KAAOA,EAAG,UAAYA,EAAG,IAAMA,EAAG,QAAUA,EAAG,SAAWA,EAAG,IAAMA,EAAG,QAAUA,EAAG,IAAMA,EAAG,KAAOA,EAAG,UAAYA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,MAAQ,CAAC,EAAE,CAAC,KAAOC,EAAG,OAASA,IAAK,IAAMD,EAAG,OAASA,EAAG,IAAM,CAAC,EAAE,CAAC,MAAQC,IAAK,KAAOD,EAAG,IAAM,CAAC,EAAE,CAAC,KAAOC,IAAK,IAAMD,EAAG,KAAOA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,KAAOA,EAAG,UAAYA,EAAG,KAAOA,EAAG,IAAMA,EAAG,SAAWA,EAAG,KAAO,CAAC,EAAE,CAAC,MAAQC,EAAG,UAAYA,EAAG,YAAcG,IAAK,OAASJ,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWA,EAAG,SAAWA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,QAAUA,EAAG,MAAQ,CAAC,EAAE,CAAC,UAAYC,IAAK,MAAQD,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,SAAWA,EAAG,OAAS,CAAC,EAAE,CAAC,IAAMC,IAAK,WAAaD,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,SAAWA,EAAG,QAAUA,EAAG,UAAYA,EAAG,UAAYA,EAAG,MAAQA,EAAG,UAAYA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,KAAO,CAAC,EAAE,CAAC,YAAcC,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,SAAWA,EAAG,IAAMA,EAAG,KAAOA,IAAK,QAAU,CAAC,EAAE,CAAC,UAAYA,IAAK,IAAMD,EAAG,OAASA,EAAG,QAAUA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOA,EAAG,WAAaA,EAAG,IAAMA,EAAG,WAAaA,EAAG,SAAWA,EAAG,IAAMA,EAAG,IAAMA,EAAG,UAAYA,EAAG,UAAYA,EAAG,OAASA,EAAG,cAAgBA,EAAG,OAASA,EAAG,YAAcA,EAAG,SAAWA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,SAAWA,EAAG,KAAOA,EAAG,IAAMA,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,YAAcA,EAAG,gBAAkBA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,OAASA,EAAG,QAAUA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAM,CAAC,EAAE,CAAC,GAAKC,EAAG,IAAMA,IAAK,KAAOD,EAAG,UAAYA,EAAG,MAAQA,EAAG,QAAUA,EAAG,YAAcA,EAAG,MAAQA,EAAG,UAAYA,EAAG,KAAOA,EAAG,UAAYA,EAAG,QAAUA,EAAG,QAAUA,EAAG,IAAMA,EAAG,OAASA,EAAG,QAAUA,EAAG,IAAMA,EAAG,OAASA,EAAG,IAAMA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,MAAQA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,cAAgBA,EAAG,UAAYA,EAAG,SAAWA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,KAAO,CAAC,EAAE,CAAC,QAAUC,EAAG,KAAOA,EAAG,KAAOG,EAAG,WAAa,CAAC,EAAE,CAAC,KAAOH,IAAK,MAAQA,IAAK,KAAO,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,IAAMG,IAAK,OAASJ,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAM,CAAC,EAAE,CAAC,IAAMC,IAAK,OAASD,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,IAAMA,EAAG,aAAeA,EAAG,IAAMA,EAAG,KAAOA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,WAAa,CAAC,EAAE,CAAC,OAASC,IAAK,MAAQD,EAAG,IAAMA,EAAG,OAASA,EAAG,UAAYA,EAAG,QAAUA,EAAG,SAAWA,EAAG,UAAYA,EAAG,OAASA,EAAG,IAAMA,EAAG,SAAWA,EAAG,IAAMA,EAAG,MAAQoD,EAAI,KAAOpD,EAAG,UAAYA,EAAG,KAAOA,EAAG,SAAWA,EAAG,IAAMA,EAAG,KAAO,CAAC,EAAE,CAAC,MAAQC,EAAG,YAAcA,IAAK,MAAQD,EAAG,SAAWA,EAAG,MAAQA,EAAG,UAAYA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,WAAaA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAM,CAAC,EAAE,CAAC,IAAMC,IAAK,OAASD,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,SAAWA,EAAG,OAASA,EAAG,KAAOA,EAAG,YAAcA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,QAAUA,EAAG,QAAUA,EAAG,QAAU,CAAC,EAAE,CAAC,MAAQI,EAAG,GAAKH,EAAG,KAAOA,EAAG,QAAUA,EAAG,KAAOA,IAAK,QAAUD,EAAG,IAAMA,EAAG,KAAO,CAAC,EAAE,CAAC,WAAaC,IAAK,KAAOD,EAAG,WAAaA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAUA,EAAG,OAASA,EAAG,YAAcA,EAAG,KAAOA,EAAG,MAAQA,EAAG,IAAM,CAAC,EAAE,CAAC,IAAMI,EAAG,QAAUH,IAAK,IAAM,CAAC,EAAE,CAAC,IAAMA,IAAK,IAAMD,EAAG,OAAS,CAAC,EAAE,CAAC,KAAOC,EAAG,aAAaA,EAAG,eAAiBA,EAAG,MAAQA,IAAK,IAAMD,EAAG,KAAOA,EAAG,OAASA,EAAG,OAAS,CAAC,EAAE,CAAC,KAAOC,IAAK,QAAUD,EAAG,QAAUA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAM,CAAC,EAAE,CAAC,QAAUC,IAAK,KAAO,CAAC,EAAE,CAAC,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,WAAaA,EAAG,SAAWA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,MAAQA,IAAK,UAAYD,EAAG,MAAQA,EAAG,KAAOA,EAAG,SAAWA,EAAG,MAAQA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,OAASA,EAAG,SAAWA,EAAG,IAAMA,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,YAAcA,EAAG,OAASoD,EAAI,OAASpD,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAW,CAAC,EAAE,CAAC,KAAOC,IAAK,IAAMD,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,QAAUA,EAAG,MAAQ,CAAC,EAAE,CAAC,MAAQC,IAAK,MAAQe,EAAI,KAAOhB,EAAG,YAAcA,EAAG,SAAWA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,UAAYA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,YAAcA,EAAG,KAAOA,EAAG,YAAcA,EAAG,MAAQA,EAAG,WAAaA,EAAG,SAAWA,EAAG,WAAaA,EAAG,IAAMA,EAAG,WAAaA,EAAG,IAAM,CAAC,EAAE,CAAC,GAAKI,EAAG,IAAMA,EAAG,MAAQH,IAAK,IAAMD,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,MAAQA,EAAG,KAAOA,EAAG,WAAaA,EAAG,QAAUA,EAAG,OAASA,EAAG,QAAUA,EAAG,IAAMA,EAAG,SAAWA,EAAG,YAAcA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,KAAOA,EAAG,SAAWA,EAAG,IAAMA,EAAG,KAAOA,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,WAAaA,EAAG,KAAOA,EAAG,WAAaA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,UAAYA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAM,CAAC,EAAE,CAAC,KAAOC,IAAK,MAAQ,CAAC,EAAE,CAAC,OAASA,EAAG,QAAUA,EAAG,YAAYA,EAAG,SAAWA,IAAK,MAAQD,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOA,EAAG,MAAQA,EAAG,KAAOA,EAAG,IAAM,CAAC,EAAE,CAAC,YAAcC,EAAG,QAAUA,EAAG,MAAQ,CAAC,EAAE,CAAC,KAAOA,IAAK,QAAUA,EAAG,MAAQG,EAAG,KAAOA,EAAG,SAAWA,EAAG,UAAYA,EAAG,SAAWH,EAAG,KAAOA,EAAG,QAAUA,EAAG,IAAM,CAAC,EAAE,CAAC,QAAUA,EAAG,IAAMA,IAAK,IAAMA,IAAK,IAAMD,EAAG,OAASA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,KAAOA,EAAG,MAAQA,EAAG,SAAWA,EAAG,QAAUA,EAAG,QAAUA,EAAG,gBAAkBA,EAAG,OAASA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,WAAaA,EAAG,QAAUA,EAAG,aAAeA,EAAG,OAASA,EAAG,OAASA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAO,CAAC,EAAE,CAAC,IAAM,CAAC,EAAE,CAAC,QAAUC,MAAO,OAASD,EAAG,KAAOA,EAAG,OAASA,EAAG,SAAWA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,SAAW,CAAC,EAAE,CAAC,UAAYC,IAAK,MAAQD,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,UAAYA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,MAAQA,EAAG,KAAO,CAAC,EAAE,CAAC,KAAOC,EAAG,OAASA,EAAG,MAAQA,EAAG,YAAcA,EAAG,SAAWA,IAAK,SAAWD,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOA,EAAG,KAAOA,EAAG,QAAUA,EAAG,KAAO,CAAC,EAAE,CAAC,OAASC,EAAG,MAAQkB,EAAI,SAAWf,EAAG,OAASH,EAAG,KAAOA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,UAAYA,EAAG,MAAQA,EAAG,OAASA,EAAG,OAASA,EAAG,WAAaA,EAAG,SAAWA,EAAG,WAAaG,EAAG,IAAMA,EAAG,KAAOH,EAAG,KAAOA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,IAAK,IAAMD,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,SAAWA,EAAG,SAAWA,EAAG,KAAOA,EAAG,MAAQA,EAAG,UAAYA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,MAAQ,CAAC,EAAE,CAAC,OAASC,EAAG,MAAQA,EAAG,GAAK,CAAC,EAAE,CAAC,OAASA,IAAK,YAAYA,EAAG,QAAUA,EAAG,KAAOA,EAAG,OAASA,IAAK,MAAQD,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,QAAUA,EAAG,KAAOA,EAAG,UAAYA,EAAG,UAAYA,EAAG,IAAMA,EAAG,SAAWA,EAAG,UAAYA,EAAG,QAAUA,EAAG,MAAQ,CAAC,EAAE,CAAC,MAAQC,EAAG,OAASA,EAAG,SAAWA,EAAG,UAAYA,IAAK,OAASD,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQA,EAAG,MAAQA,EAAG,SAAWA,EAAG,OAASA,EAAG,QAAU,CAAC,EAAE,CAAC,MAAQC,IAAK,KAAOD,EAAG,QAAUA,EAAG,OAASA,EAAG,OAASA,EAAG,MAAQA,EAAG,OAASA,EAAG,QAAU,CAAC,EAAE,CAAC,YAAcC,IAAK,IAAMD,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,OAASA,EAAG,WAAaA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAO,CAAC,EAAE,CAAC,UAAYC,EAAG,SAAWA,IAAK,KAAO,CAAC,EAAE,CAAC,WAAaA,IAAK,WAAae,EAAI,QAAUhB,EAAG,OAASA,EAAG,KAAOA,EAAG,IAAMA,EAAG,QAAUA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,OAASA,EAAG,MAAQA,EAAG,MAAQ,CAAC,EAAE,CAAC,aAAeC,IAAK,MAAQD,EAAG,MAAQ,CAAC,EAAE,CAAC,KAAO0C,EAAI,OAASzC,IAAK,IAAM,CAAC,EAAE,CAAC,MAAQA,EAAG,KAAOG,IAAK,MAAQJ,EAAG,QAAUA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,MAAQA,EAAG,QAAUA,EAAG,SAAWA,EAAG,OAASA,EAAG,UAAYA,EAAG,mBAAqBA,EAAG,MAAQA,EAAG,IAAMA,EAAG,KAAOA,EAAG,IAAMA,EAAG,MAAQA,EAAG,MAAQA,EAAG,IAAMA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,WAAaA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,UAAYA,EAAG,KAAOA,EAAG,SAAWA,EAAG,MAAQA,EAAG,SAAWA,EAAG,SAAWA,EAAG,aAAeA,EAAG,IAAMA,EAAG,OAASA,EAAG,MAAQA,EAAG,IAAMA,EAAG,OAASA,EAAG,OAASA,EAAG,IAAMA,EAAG,IAAMA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOA,EAAG,WAAaA,EAAG,MAAQA,EAAG,MAAQA,EAAG,KAAOA,EAAG,OAASA,EAAG,KAAOA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,KAAOA,EAAG,QAAUA,EAAG,MAAQA,EAAG,QAAUA,EAAG,QAAUA,EAAG,eAAiBA,EAAG,OAASA,EAAG,MAAQA,EAAG,QAAUoD,EAAI,IAAMpD,EAAG,QAAUA,EAAG,MAAQA,EAAG,KAAOA,EAAG,QAAUA,EAAG,KAAOA,EAAG,KAAOoD,EAAI,YAAcpD,EAAG,IAAMA,EAAG,QAAUA,EAAG,KAAOA,EAAG,QAAUA,EAAG,IAAMA,EAAG,cAAgBA,EAAG,SAAWA,EAAG,KAAOA,EAAG,MAAQA,EAAG,MAAQA,EAAG,IAAMA,EAAG,IAAMA,EAAG,IAAMA,EAAG,KAAOA,EAAG,MAAQA,EAAG,OAASA,EAAG,IAAMA,EAAG,cAAcA,EAAG,qBAAMA,EAAG,cAAcA,EAAG,qBAAMA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,qBAAMA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,oBAAoBA,EAAG,2BAAOA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,iBAAiBA,EAAG,qBAAMA,EAAG,eAAeA,EAAG,uCAASA,EAAG,iBAAiBA,EAAG,6CAAUA,EAAG,eAAeA,EAAG,uCAASA,EAAG,aAAaA,EAAG,2BAAOA,EAAG,eAAeA,EAAG,eAAKA,EAAG,aAAaA,EAAG,qBAAMA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,iBAAiBA,EAAG,qBAAMA,EAAG,oBAAoBA,EAAG,uCAASA,EAAG,YAAYA,EAAG,qBAAMA,EAAG,aAAaA,EAAG,qBAAMA,EAAG,cAAcA,EAAG,qBAAMA,EAAG,gBAAgBA,EAAG,2BAAOA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,2BAAOA,EAAG,gBAAgBA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,YAAYA,EAAG,qBAAMA,EAAG,iBAAiBA,EAAG,qBAAMA,EAAG,aAAaA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,mBAAmBA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,eAAKA,EAAG,eAAeA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,kBAAkBA,EAAG,iCAAQA,EAAG,cAAcA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,YAAYA,EAAG,qBAAMA,EAAG,iBAAiBA,EAAG,qBAAMA,EAAG,cAAcA,EAAG,eAAKA,EAAG,kBAAkBA,EAAG,qBAAMA,EAAG,aAAaA,EAAG,eAAKA,EAAG,iBAAiBA,EAAG,uCAASA,EAAG,mBAAmBA,EAAG,6CAAUA,EAAG,eAAeA,EAAG,iCAAQA,EAAG,iBAAiBA,EAAG,uCAASA,EAAG,iBAAiBA,EAAG,6CAAUA,EAAG,eAAeA,EAAG,iCAAQA,EAAG,eAAeA,EAAG,eAAKA,EAAG,aAAaA,EAAG,eAAKA,EAAG,eAAeA,EAAG,2BAAOA,EAAG,eAAeA,EAAG,2BAAOA,EAAG,YAAYA,EAAG,qBAAMA,EAAG,YAAYA,EAAG,eAAKA,EAAG,kBAAkBA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,YAAY,CAAC,EAAE,CAAC,YAAYC,EAAG,YAAYA,EAAG,cAAcA,EAAG,YAAYA,EAAG,YAAYA,EAAG,YAAYA,EAAG,iBAAiBA,EAAG,aAAaA,EAAG,aAAaA,EAAG,UAAUA,IAAK,qBAAM,CAAC,EAAE,CAAC,qBAAMA,EAAG,qBAAMA,EAAG,2BAAOA,EAAG,qBAAMA,EAAG,qBAAMA,EAAG,qBAAMA,EAAG,uCAASA,EAAG,2BAAOA,EAAG,qBAAMA,EAAG,SAAIA,IAAK,aAAaD,EAAG,eAAKA,EAAG,cAAcA,EAAG,qBAAMA,EAAG,eAAeA,EAAG,2BAAOA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,YAAYA,EAAG,eAAKA,EAAG,gBAAgBA,EAAG,qBAAMA,EAAG,aAAaA,EAAG,eAAKA,EAAG,0BAA0BA,EAAG,sBAAmBA,EAAG,2BAA2BA,EAAG,uBAAoBA,EAAG,YAAYA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,uBAAuBA,EAAG,iCAAQA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,cAAcA,EAAG,eAAKA,EAAG,IAAM,CAAC,EAAE,CAAC,QAAUC,EAAG,QAAUG,IAAK,OAASJ,EAAG,MAAQA,EAAG,QAAUA,EAAG,OAASA,EAAG,UAAYA,EAAG,KAAOA,EAAG,SAAWA,EAAG,IAAMA,EAAG,QAAUA,EAAG,IAAMA,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAOA,EAAG,IAAMA,EAAG,KAAO,CAAC,EAAE,CAAC,QAAUC,EAAG,OAASG,EAAG,QAAUH,EAAG,KAAOA,IAAK,QAAUD,GAEptrH,CAJ6B,GCa7B,SAAS0D,EACPv7H,EACAw7H,EACAvoG,EACAwoG,GAEA,IAAIz6G,EAAwB,KACxB68C,EAA0B29D,EAC9B,UAAgBrnI,IAAT0pE,IAE2B,KAA3BA,EAAK,GAAK49D,KACbz6G,EAAS,CACPiS,MAAOA,EAAQ,EACfyoG,QAAqB,IAAZ79D,EAAK,GACd89D,UAAuB,IAAZ99D,EAAK,MAKL,IAAX5qC,IAXqB,CAezB,MAAM2oG,EAAmC/9D,EAAK,GAC9CA,EAAOxoE,OAAO4H,UAAU4L,eAAeM,KAAKyyH,EAAM57H,EAAMizB,IACpD2oG,EAAK57H,EAAMizB,IACX2oG,EAAK,KACT3oG,GAAS,CACX,CAEA,OAAOjS,CACT,CAKc,SAAUm1G,EACtBt9C,EACA5kE,EACA7a,SAEA,GC7DY,SACZy/E,EACA5kE,EACA7a,GAIA,IAAK6a,EAAQ0hH,qBAAuB98C,EAAS3kF,OAAS,EAAG,CACvD,MAAMm0B,EAAewwD,EAAS3kF,OAAS,EACjC4pD,EAAa+6B,EAAS11E,WAAWklB,GACjCw1B,EAAag7B,EAAS11E,WAAWklB,EAAO,GACxCq1B,EAAam7B,EAAS11E,WAAWklB,EAAO,GACxChhB,EAAawxE,EAAS11E,WAAWklB,EAAO,GAE9C,GACS,MAAPy1B,GACO,MAAPD,GACO,KAAPH,GACO,KAAPr2C,EAKA,OAHAjO,EAAIsiI,SAAU,EACdtiI,EAAIuiI,WAAY,EAChBviI,EAAIw9H,aAAe,OACZ,EACF,GACE,MAAP94E,GACO,MAAPD,GACO,MAAPH,GACO,KAAPr2C,EAKA,OAHAjO,EAAIsiI,SAAU,EACdtiI,EAAIuiI,WAAY,EAChBviI,EAAIw9H,aAAe,OACZ,EACF,GACE,MAAP94E,GACO,MAAPD,GACO,MAAPH,GACO,KAAPr2C,EAKA,OAHAjO,EAAIsiI,SAAU,EACdtiI,EAAIuiI,WAAY,EAChBviI,EAAIw9H,aAAe,OACZ,EACF,GACE,MAAP94E,GACO,MAAPD,GACO,MAAPH,GACO,KAAPr2C,EAKA,OAHAjO,EAAIsiI,SAAU,EACdtiI,EAAIuiI,WAAY,EAChBviI,EAAIw9H,aAAe,OACZ,EACF,GACE,MAAP94E,GACO,MAAPD,GACO,MAAPH,GACO,KAAPr2C,EAKA,OAHAjO,EAAIsiI,SAAU,EACdtiI,EAAIuiI,WAAY,EAChBviI,EAAIw9H,aAAe,OACZ,EACF,GACE,MAAP94E,GACO,MAAPD,GACO,KAAPH,EAKA,OAHAtkD,EAAIsiI,SAAU,EACdtiI,EAAIuiI,WAAY,EAChBviI,EAAIw9H,aAAe,MACZ,CAEX,CAEA,OAAO,CACT,CDhBMiF,CAAehjD,EAAU5kE,EAAS7a,GACpC,OAGF,MAAM0iI,EAAgBjjD,EAASj+E,MAAM,KAE/B6gI,GACHxnH,EAAQ0hH,oBAAqB,EAAqB,IAClD1hH,EAAQyhH,kBAAmB,EAAmB,GAG3CqG,EAAiBR,EACrBO,EACAtE,EACAsE,EAAc5nI,OAAS,EACvBunI,GAGF,GAAuB,OAAnBM,EAIF,OAHA3iI,EAAIsiI,QAAUK,EAAeL,QAC7BtiI,EAAIuiI,UAAYI,EAAeJ,eAC/BviI,EAAIw9H,aAAekF,EAAc/7H,MAAMg8H,EAAe9oG,MAAQ,GAAGs8B,KAAK,MAKxE,MAAMysE,EAAaT,EACjBO,EACAlE,EACAkE,EAAc5nI,OAAS,EACvBunI,GAGF,GAAmB,OAAfO,EAIF,OAHA5iI,EAAIsiI,QAAUM,EAAWN,QACzBtiI,EAAIuiI,UAAYK,EAAWL,eAC3BviI,EAAIw9H,aAAekF,EAAc/7H,MAAMi8H,EAAW/oG,OAAOs8B,KAAK,MAOhEn2D,EAAIsiI,SAAU,EACdtiI,EAAIuiI,WAAY,EAChBviI,EAAIw9H,aAAsD,QAAvCqF,EAAAH,EAAcA,EAAc5nI,OAAS,UAAE,IAAA+nI,EAAAA,EAAI,IAChE,CE/FA,MAAMC,ERuBG,CACLx8H,OAAQ,KACR63H,oBAAqB,KACrB1+C,SAAU,KACV6iD,QAAS,KACTnF,KAAM,KACNoF,UAAW,KACX/E,aAAc,KACdS,UAAW,MQ7BT,SAAU7yG,EAAM5F,GACpB,OAAOq3G,EAAUr3G,EAAK,EAAUu3G,EADCliI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,CAAC,ERqBxD,CACLyL,OAAQ,KACR63H,oBAAqB,KACrB1+C,SAAU,KACV6iD,QAAS,KACTnF,KAAM,KACNoF,UAAW,KACX/E,aAAc,KACdS,UAAW,MQ3Bf,CAEM,SAAU8E,EACdv9G,GAC+B,IAA/B3K,EAAAhgB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,CAAC,ER2B1B,IAAsB+sB,EQxB1B,ORwB0BA,EQzBEk7G,GR0BrBx8H,OAAS,KAChBshB,EAAOu2G,oBAAsB,KAC7Bv2G,EAAO63D,SAAW,KAClB73D,EAAO06G,QAAU,KACjB16G,EAAOu1G,KAAO,KACdv1G,EAAO26G,UAAY,KACnB36G,EAAO41G,aAAe,KACtB51G,EAAOq2G,UAAY,KQhCZpB,EAAUr3G,EAAK,EAAeu3G,EAAcliH,EAASioH,GAAQrjD,QACtE,CAEM,SAAU/4E,EACd8e,GAC+B,IAA/B3K,EAAAhgB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,CAAC,ERmB1B,IAAsB+sB,EQhB1B,ORgB0BA,EQjBEk7G,GRkBrBx8H,OAAS,KAChBshB,EAAOu2G,oBAAsB,KAC7Bv2G,EAAO63D,SAAW,KAClB73D,EAAO06G,QAAU,KACjB16G,EAAOu1G,KAAO,KACdv1G,EAAO26G,UAAY,KACnB36G,EAAO41G,aAAe,KACtB51G,EAAOq2G,UAAY,KQxBZpB,EAAUr3G,EAAK,EAAoBu3G,EAAcliH,EAASioH,GAC9DtF,YACL,CAEM,SAAUQ,EACdx4G,GAC+B,IAA/B3K,EAAAhgB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,CAAC,ERU1B,IAAsB+sB,EQP1B,ORO0BA,EQREk7G,GRSrBx8H,OAAS,KAChBshB,EAAOu2G,oBAAsB,KAC7Bv2G,EAAO63D,SAAW,KAClB73D,EAAO06G,QAAU,KACjB16G,EAAOu1G,KAAO,KACdv1G,EAAO26G,UAAY,KACnB36G,EAAO41G,aAAe,KACtB51G,EAAOq2G,UAAY,KQfZpB,EAAUr3G,EAAK,EAAau3G,EAAcliH,EAASioH,GAAQx8H,MACpE,CAEM,SAAU43H,EACd14G,GAC+B,IAA/B3K,EAAAhgB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,CAAC,ERE1B,IAAsB+sB,EQC1B,ORD0BA,EQAEk7G,GRCrBx8H,OAAS,KAChBshB,EAAOu2G,oBAAsB,KAC7Bv2G,EAAO63D,SAAW,KAClB73D,EAAO06G,QAAU,KACjB16G,EAAOu1G,KAAO,KACdv1G,EAAO26G,UAAY,KACnB36G,EAAO41G,aAAe,KACtB51G,EAAOq2G,UAAY,KQPZpB,EAAUr3G,EAAK,EAAiBu3G,EAAcliH,EAASioH,GAC3D7E,SACL,CAEM,SAAU+E,EACdx9G,GAC+B,IAA/B3K,EAAAhgB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,CAAC,ERP1B,IAAsB+sB,EQU1B,ORV0BA,EQSEk7G,GRRrBx8H,OAAS,KAChBshB,EAAOu2G,oBAAsB,KAC7Bv2G,EAAO63D,SAAW,KAClB73D,EAAO06G,QAAU,KACjB16G,EAAOu1G,KAAO,KACdv1G,EAAO26G,UAAY,KACnB36G,EAAO41G,aAAe,KACtB51G,EAAOq2G,UAAY,KQEZpB,EAAUr3G,EAAK,EAAUu3G,EAAcliH,EAASioH,GACpD3E,mBACL,mBC7DA,MAAM8E,EAAQlpI,EAAQ,OAChB+qH,EAAU/qH,EAAQ,OAClBmpI,EAAYnpI,EAAQ,OACpBopI,EAAYppI,EAAQ,OACpBqpI,EAAmBrpI,EAAQ,OAC3BspI,EAAgBtpI,EAAQ,MACxBupI,EAAcvpI,EAAQ,OACtBwpI,EAASxpI,EAAQ,OACjBypI,EAAqBzpI,EAAQ,OAC7B0pI,EAAU1pI,EAAQ,OAClB2pI,EAAa3pI,EAAQ,OACrByJ,EAAOzJ,EAAQ,OACf4pI,EAAW5pI,EAAQ,OAqIzB,SAAS6pI,EAAiBC,EAAQ3e,EAAsB4e,GACtD,MAAM3gH,EAAO0gH,EAAO1gH,KACd4M,EAAO2zG,EAAWK,eAAe7e,EAAsB4e,GAC7D,IAAI7/H,EAAGqQ,EAEP,IAAKrQ,EAAI,EAAGA,EAAI,GAAIA,IAClBqQ,EAA4B,KAApByb,GAAQ9rB,EAAK,GAGjBA,EAAI,EACN4/H,EAAOt0H,IAAItL,EAAG,EAAGqQ,GAAK,GACbrQ,EAAI,EACb4/H,EAAOt0H,IAAItL,EAAI,EAAG,EAAGqQ,GAAK,GAE1BuvH,EAAOt0H,IAAI4T,EAAO,GAAKlf,EAAG,EAAGqQ,GAAK,GAIhCrQ,EAAI,EACN4/H,EAAOt0H,IAAI,EAAG4T,EAAOlf,EAAI,EAAGqQ,GAAK,GACxBrQ,EAAI,EACb4/H,EAAOt0H,IAAI,EAAG,GAAKtL,EAAI,EAAI,EAAGqQ,GAAK,GAEnCuvH,EAAOt0H,IAAI,EAAG,GAAKtL,EAAI,EAAGqQ,GAAK,GAKnCuvH,EAAOt0H,IAAI4T,EAAO,EAAG,EAAG,GAAG,EAC7B,CAwDA,SAAS6gH,EAAYt+E,EAASw/D,EAAsB+e,GAElD,MAAM36G,EAAS,IAAI45G,EAEnBe,EAASj8H,SAAQ,SAAUpL,GAEzB0sB,EAAOjlB,IAAIzH,EAAK8G,KAAKk7B,IAAK,GAS1BtV,EAAOjlB,IAAIzH,EAAKkH,YAAaN,EAAK0gI,sBAAsBtnI,EAAK8G,KAAMgiD,IAGnE9oD,EAAKmH,MAAMulB,EACb,IAGA,MAEM66G,EAA+D,GAF9ClB,EAAMmB,wBAAwB1+E,GAC5B69E,EAAOpe,uBAAuBz/D,EAASw/D,IAiBhE,IATI57F,EAAO+6G,kBAAoB,GAAKF,GAClC76G,EAAOjlB,IAAI,EAAG,GAQTilB,EAAO+6G,kBAAoB,IAAM,GACtC/6G,EAAOg7G,OAAO,GAOhB,MAAMC,GAAiBJ,EAAyB76G,EAAO+6G,mBAAqB,EAC5E,IAAK,IAAIpgI,EAAI,EAAGA,EAAIsgI,EAAetgI,IACjCqlB,EAAOjlB,IAAIJ,EAAI,EAAI,GAAO,IAAM,GAGlC,OAYF,SAA0BD,EAAW0hD,EAASw/D,GAE5C,MAAMsf,EAAiBvB,EAAMmB,wBAAwB1+E,GAG/C++E,EAAmBlB,EAAOpe,uBAAuBz/D,EAASw/D,GAG1Dwf,EAAqBF,EAAiBC,EAGtCE,EAAgBpB,EAAOte,eAAev/D,EAASw/D,GAG/C0f,EAAiBJ,EAAiBG,EAClCE,EAAiBF,EAAgBC,EAEjCE,EAAyBziI,KAAKC,MAAMkiI,EAAiBG,GAErDI,EAAwB1iI,KAAKC,MAAMoiI,EAAqBC,GACxDK,EAAwBD,EAAwB,EAGhDE,EAAUH,EAAyBC,EAGnCG,EAAK,IAAI1B,EAAmByB,GAElC,IAAIj1G,EAAS,EACb,MAAMm1G,EAAS,IAAI/hI,MAAMuhI,GACnBS,EAAS,IAAIhiI,MAAMuhI,GACzB,IAAIU,EAAc,EAClB,MAAM/7G,EAAS,IAAIC,WAAWvlB,EAAUslB,QAGxC,IAAK,IAAInf,EAAI,EAAGA,EAAIw6H,EAAex6H,IAAK,CACtC,MAAMm7H,EAAWn7H,EAAI06H,EAAiBE,EAAwBC,EAG9DG,EAAOh7H,GAAKmf,EAAO3iB,MAAMqpB,EAAQA,EAASs1G,GAG1CF,EAAOj7H,GAAK+6H,EAAG9rH,OAAO+rH,EAAOh7H,IAE7B6lB,GAAUs1G,EACVD,EAAchjI,KAAKuI,IAAIy6H,EAAaC,EACtC,CAIA,MAAM1oI,EAAO,IAAI2sB,WAAWi7G,GAC5B,IACIvgI,EAAG6F,EADH+vB,EAAQ,EAIZ,IAAK51B,EAAI,EAAGA,EAAIohI,EAAaphI,IAC3B,IAAK6F,EAAI,EAAGA,EAAI66H,EAAe76H,IACzB7F,EAAIkhI,EAAOr7H,GAAGhP,SAChB8B,EAAKi9B,KAAWsrG,EAAOr7H,GAAG7F,IAMhC,IAAKA,EAAI,EAAGA,EAAIghI,EAAShhI,IACvB,IAAK6F,EAAI,EAAGA,EAAI66H,EAAe76H,IAC7BlN,EAAKi9B,KAAWurG,EAAOt7H,GAAG7F,GAI9B,OAAOrH,CACT,CAnFS2oI,CAAgBj8G,EAAQo8B,EAASw/D,EAC1C,CA6FA,SAASsgB,EAAc5oI,EAAM8oD,EAASw/D,EAAsB4e,GAC1D,IAAIG,EAEJ,GAAI7gI,MAAMi3B,QAAQz9B,GAChBqnI,EAAWN,EAAS9T,UAAUjzH,OACzB,IAAoB,kBAATA,EAchB,MAAM,IAAIE,MAAM,gBAdmB,CACnC,IAAI2oI,EAAmB//E,EAEvB,IAAK+/E,EAAkB,CACrB,MAAMC,EAAc/B,EAASgC,SAAS/oI,GAGtC6oI,EAAmBhC,EAAQmC,sBAAsBF,EAAaxgB,EAChE,CAIA+e,EAAWN,EAASkC,WAAWjpI,EAAM6oI,GAAoB,GAC3D,CAEA,CAGA,MAAMK,EAAcrC,EAAQmC,sBAAsB3B,EAAU/e,GAG5D,IAAK4gB,EACH,MAAM,IAAIhpI,MAAM,2DAIlB,GAAK4oD,GAIE,GAAIA,EAAUogF,EACnB,MAAM,IAAIhpI,MAAM,wHAE0CgpI,EAAc,YANxEpgF,EAAUogF,EAUZ,MAAMC,EAAW/B,EAAWt+E,EAASw/D,EAAsB+e,GAGrD+B,EAAc/C,EAAMt0E,cAAcjJ,GAClCugF,EAAU,IAAI9C,EAAU6C,GAgC9B,OAzZF,SAA6BnC,EAAQn+E,GACnC,MAAMviC,EAAO0gH,EAAO1gH,KACdiG,EAAMi6G,EAAcz0E,aAAalJ,GAEvC,IAAK,IAAIzhD,EAAI,EAAGA,EAAImlB,EAAItuB,OAAQmJ,IAAK,CACnC,MAAMwyG,EAAMrtF,EAAInlB,GAAG,GACbiiI,EAAM98G,EAAInlB,GAAG,GAEnB,IAAK,IAAI6F,GAAK,EAAGA,GAAK,EAAGA,IACvB,KAAI2sG,EAAM3sG,IAAM,GAAKqZ,GAAQszF,EAAM3sG,GAEnC,IAAK,IAAIO,GAAK,EAAGA,GAAK,EAAGA,IACnB67H,EAAM77H,IAAM,GAAK8Y,GAAQ+iH,EAAM77H,IAE9BP,GAAK,GAAKA,GAAK,IAAY,IAANO,GAAiB,IAANA,IAClCA,GAAK,GAAKA,GAAK,IAAY,IAANP,GAAiB,IAANA,IAChCA,GAAK,GAAKA,GAAK,GAAKO,GAAK,GAAKA,GAAK,EACpCw5H,EAAOt0H,IAAIknG,EAAM3sG,EAAGo8H,EAAM77H,GAAG,GAAM,GAEnCw5H,EAAOt0H,IAAIknG,EAAM3sG,EAAGo8H,EAAM77H,GAAG,GAAO,GAI5C,CACF,CAoWE87H,CAAmBF,EAASvgF,GA3V9B,SAA6Bm+E,GAC3B,MAAM1gH,EAAO0gH,EAAO1gH,KAEpB,IAAK,IAAIrZ,EAAI,EAAGA,EAAIqZ,EAAO,EAAGrZ,IAAK,CACjC,MAAM3N,EAAQ2N,EAAI,IAAM,EACxB+5H,EAAOt0H,IAAIzF,EAAG,EAAG3N,GAAO,GACxB0nI,EAAOt0H,IAAI,EAAGzF,EAAG3N,GAAO,EAC1B,CACF,CAoVEiqI,CAAmBH,GA1UrB,SAAgCpC,EAAQn+E,GACtC,MAAMt8B,EAAMg6G,EAAiBx0E,aAAalJ,GAE1C,IAAK,IAAIzhD,EAAI,EAAGA,EAAImlB,EAAItuB,OAAQmJ,IAAK,CACnC,MAAMwyG,EAAMrtF,EAAInlB,GAAG,GACbiiI,EAAM98G,EAAInlB,GAAG,GAEnB,IAAK,IAAI6F,GAAK,EAAGA,GAAK,EAAGA,IACvB,IAAK,IAAIO,GAAK,EAAGA,GAAK,EAAGA,KACZ,IAAPP,GAAkB,IAANA,IAAkB,IAAPO,GAAkB,IAANA,GAC9B,IAANP,GAAiB,IAANO,EACZw5H,EAAOt0H,IAAIknG,EAAM3sG,EAAGo8H,EAAM77H,GAAG,GAAM,GAEnCw5H,EAAOt0H,IAAIknG,EAAM3sG,EAAGo8H,EAAM77H,GAAG,GAAO,EAI5C,CACF,CAyTEg8H,CAAsBJ,EAASvgF,GAM/Bk+E,EAAgBqC,EAAS/gB,EAAsB,GAE3Cx/D,GAAW,GAzTjB,SAA2Bm+E,EAAQn+E,GACjC,MAAMviC,EAAO0gH,EAAO1gH,KACd4M,EAAO0zG,EAAQM,eAAer+E,GACpC,IAAI+wD,EAAKyvB,EAAK5xH,EAEd,IAAK,IAAIrQ,EAAI,EAAGA,EAAI,GAAIA,IACtBwyG,EAAMp0G,KAAKC,MAAM2B,EAAI,GACrBiiI,EAAMjiI,EAAI,EAAIkf,EAAO,EAAI,EACzB7O,EAA4B,KAApByb,GAAQ9rB,EAAK,GAErB4/H,EAAOt0H,IAAIknG,EAAKyvB,EAAK5xH,GAAK,GAC1BuvH,EAAOt0H,IAAI22H,EAAKzvB,EAAKniG,GAAK,EAE9B,CA6SIgyH,CAAiBL,EAASvgF,GA/P9B,SAAoBm+E,EAAQjnI,GAC1B,MAAMumB,EAAO0gH,EAAO1gH,KACpB,IAAIojH,GAAO,EACP9vB,EAAMtzF,EAAO,EACbqjH,EAAW,EACXC,EAAY,EAEhB,IAAK,IAAIP,EAAM/iH,EAAO,EAAG+iH,EAAM,EAAGA,GAAO,EAGvC,IAFY,IAARA,GAAWA,MAEF,CACX,IAAK,IAAI77H,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAAKw5H,EAAO6C,WAAWjwB,EAAKyvB,EAAM77H,GAAI,CACpC,IAAIs8H,GAAO,EAEPF,EAAY7pI,EAAK9B,SACnB6rI,EAAiD,KAAvC/pI,EAAK6pI,KAAeD,EAAY,IAG5C3C,EAAOt0H,IAAIknG,EAAKyvB,EAAM77H,EAAGs8H,GACzBH,KAEkB,IAAdA,IACFC,IACAD,EAAW,EAEf,CAKF,GAFA/vB,GAAO8vB,EAEH9vB,EAAM,GAAKtzF,GAAQszF,EAAK,CAC1BA,GAAO8vB,EACPA,GAAOA,EACP,KACF,CACF,CAEJ,CA6NEK,CAAUX,EAASF,GAEf1yH,MAAMywH,KAERA,EAAcR,EAAYuD,YAAYZ,EACpCrC,EAAgB5kH,KAAK,KAAMinH,EAAS/gB,KAIxCoe,EAAYwD,UAAUhD,EAAamC,GAGnCrC,EAAgBqC,EAAS/gB,EAAsB4e,GAExC,CACLmC,QAASA,EACTvgF,QAASA,EACTw/D,qBAAsBA,EACtB4e,YAAaA,EACbG,SAAUA,EAEd,CAWAlrI,EAAQ4J,OAAS,SAAiB/F,EAAMie,GACtC,GAAoB,qBAATje,GAAiC,KAATA,EACjC,MAAM,IAAIE,MAAM,iBAGlB,IACI4oD,EACA9d,EAFAs9E,EAAuBJ,EAAQlgC,EAenC,MAXuB,qBAAZ/pE,IAETqqG,EAAuBJ,EAAQrnH,KAAKod,EAAQqqG,qBAAsBJ,EAAQlgC,GAC1El/B,EAAU+9E,EAAQhmI,KAAKod,EAAQ6qC,SAC/B9d,EAAO07F,EAAY7lI,KAAKod,EAAQipH,aAE5BjpH,EAAQksH,YACV9D,EAAM+D,kBAAkBnsH,EAAQksH,aAI7BvB,EAAa5oI,EAAM8oD,EAASw/D,EAAsBt9E,EAC3D,mBC9eA,IAAIpqC,EAASzD,EAAAA,OAAAA,OAGb,SAAS+uB,EAAMm+G,EAAWC,GACxBjuI,KAAKkuI,OAAS3pI,EAAO0b,MAAM+tH,GAC3BhuI,KAAKmuI,WAAaF,EAClBjuI,KAAKouI,WAAaJ,EAClBhuI,KAAKiK,KAAO,CACd,CAEA4lB,EAAKjlB,UAAU7G,OAAS,SAAUJ,EAAMg8B,GAClB,kBAATh8B,IACTg8B,EAAMA,GAAO,OACbh8B,EAAOY,EAAOC,KAAKb,EAAMg8B,IAQ3B,IALA,IAAIqiD,EAAQhiF,KAAKkuI,OACbF,EAAYhuI,KAAKouI,WACjBvsI,EAAS8B,EAAK9B,OACdwsI,EAAQruI,KAAKiK,KAER8sB,EAAS,EAAGA,EAASl1B,GAAS,CAIrC,IAHA,IAAIysI,EAAWD,EAAQL,EACnBO,EAAYnlI,KAAKsI,IAAI7P,EAASk1B,EAAQi3G,EAAYM,GAE7CtjI,EAAI,EAAGA,EAAIujI,EAAWvjI,IAC7Bg3E,EAAMssD,EAAWtjI,GAAKrH,EAAKozB,EAAS/rB,GAItC+rB,GAAUw3G,GADVF,GAASE,GAGIP,IAAe,GAC1BhuI,KAAKm/B,QAAQ6iD,EAEjB,CAGA,OADAhiF,KAAKiK,MAAQpI,EACN7B,IACT,EAEA6vB,EAAKjlB,UAAU5G,OAAS,SAAU27B,GAChC,IAAIrmB,EAAMtZ,KAAKiK,KAAOjK,KAAKouI,WAE3BpuI,KAAKkuI,OAAO50H,GAAO,IAInBtZ,KAAKkuI,OAAOj9G,KAAK,EAAG3X,EAAM,GAEtBA,GAAOtZ,KAAKmuI,aACdnuI,KAAKm/B,QAAQn/B,KAAKkuI,QAClBluI,KAAKkuI,OAAOj9G,KAAK,IAGnB,IAAI6F,EAAmB,EAAZ92B,KAAKiK,KAGhB,GAAI6sB,GAAQ,WACV92B,KAAKkuI,OAAOrV,cAAc/hG,EAAM92B,KAAKouI,WAAa,OAG7C,CACL,IAAII,GAAkB,WAAP13G,KAAuB,EAClC23G,GAAY33G,EAAO03G,GAAW,WAElCxuI,KAAKkuI,OAAOrV,cAAc4V,EAAUzuI,KAAKouI,WAAa,GACtDpuI,KAAKkuI,OAAOrV,cAAc2V,EAASxuI,KAAKouI,WAAa,EACvD,CAEApuI,KAAKm/B,QAAQn/B,KAAKkuI,QAClB,IAAItpI,EAAO5E,KAAK0rH,QAEhB,OAAO/rF,EAAM/6B,EAAKH,SAASk7B,GAAO/6B,CACpC,EAEAirB,EAAKjlB,UAAUu0B,QAAU,WACvB,MAAM,IAAIt7B,MAAM,0CAClB,EAEA9D,EAAOD,QAAU+vB,gMChFjB,MAAA/Q,EAAAhe,EAAA,OACA4tI,EAAA5tI,EAAA,OACAmE,EAAAnE,EAAA,OAEahB,EAAAA,OACR+B,GACAy2G,IACG,MAAMC,GAAS,EAAAz5F,EAAA2gH,MAAK59H,EAAQy2G,IACtB,OAAEn4F,EAAM,OAAEV,IAAW,EAAAxa,EAAAwzG,cAAaF,GAElCo2B,EAAep2B,EAYrB,OAVAo2B,EAAalvH,OAAS,CAAC4Q,EAAgB0G,KACnC,MAAMiC,EAAMvZ,EAAO4Q,EAAQ0G,GAC3B,OAAO,EAAA23G,EAAAr4B,YAAW9xG,EAAOC,KAAKw0B,GAAK,EAGvC21G,EAAaxuH,OAAS,CAACyuH,EAAgBv+G,EAAgB0G,KACnD,MAAMiC,GAAM,EAAA01G,EAAAl4B,YAAWo4B,EAAQ/sI,GAC/B,OAAOse,EAAO6Y,EAAK3I,EAAQ0G,EAAO,EAG/B43G,CAAY,EAGd7uI,EAAAA,SACR+B,GACAy2G,IACG,MAAMC,GAAS,EAAAz5F,EAAA2gH,MAAK59H,EAAQy2G,IACtB,OAAEn4F,EAAM,OAAEV,IAAW,EAAAxa,EAAAwzG,cAAaF,GAElCo2B,EAAep2B,EAYrB,OAVAo2B,EAAalvH,OAAS,CAAC4Q,EAAgB0G,KACnC,MAAMiC,EAAMvZ,EAAO4Q,EAAQ0G,GAC3B,OAAO,EAAA23G,EAAAn4B,YAAWhyG,EAAOC,KAAKw0B,GAAK,EAGvC21G,EAAaxuH,OAAS,CAACyuH,EAAgBv+G,EAAgB0G,KACnD,MAAMiC,GAAM,EAAA01G,EAAAj4B,YAAWm4B,EAAQ/sI,GAC/B,OAAOse,EAAO6Y,EAAK3I,EAAQ0G,EAAO,EAG/B43G,CAAY,EAGd7uI,EAAAA,KAAM,EAAAA,EAAA8uI,QAAO,GAEb9uI,EAAAA,OAAQ,EAAAA,EAAA+uI,UAAS,GAEjB/uI,EAAAA,MAAO,EAAAA,EAAA8uI,QAAO,IAEd9uI,EAAAA,QAAS,EAAAA,EAAA+uI,UAAS,IAElB/uI,EAAAA,MAAO,EAAAA,EAAA8uI,QAAO,IAEd9uI,EAAAA,QAAS,EAAAA,EAAA+uI,UAAS,IAElB/uI,EAAAA,MAAO,EAAAA,EAAA8uI,QAAO,IAEd9uI,EAAAA,QAAS,EAAAA,EAAA+uI,UAAS,gCCvD/B/uI,EAAQ,OAAQ,EAUhBA,EAAQ,EATI,CACV,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,i/ECyCX,oBAAAgvI,IAAA,IAAAC,EAAA,KACE,KAAAC,gBAAkB,IAClB,KAAAC,oBAAsB,KACtB,KAAAC,YAA8C,KA8E9C,KAAA93B,QAAU,IAAIl1F,KAuDd,KAAAyB,KAAO,SACLwrH,EACA39C,EACAn3E,EACAC,EACA3W,EACAyrI,eADA,IAAAzrI,IAAAA,EAAeY,EAAO0b,MAAM,SAC5B,IAAAmvH,IAAAA,EAAA,CAA6Bz8B,EAAAA,YAAYgC,6FAEzC,GAAIhxG,EAAK9B,QAAU,IACjB,MAAM,IAAI6wG,EAAAA,eACR,4CAA8C/uG,EAAK9B,OACnD,oBAIa,SAAM7B,KAAKqvI,SAC1B9qI,EAAO4T,OAAO,CACZ5T,EAAOC,KAAK,CAAC2qI,EAAK39C,EAAKn3E,EAAIC,IAC3B/V,EAAOC,KAAK,CAACb,EAAK9B,SAClB8B,aAKJ,GATMgwB,EAAWi2G,EAAA0F,OAOXC,EAAK57G,EAAS67G,aAAa77G,EAAS9xB,OAAS,IAE9CutI,EAAW97G,MAAK,SAAC5iB,GAAM,OAAAA,IAAM6+H,CAAN,IAC1B,MAAM,IAAIt5B,EAAAA,qBAAqBs5B,GAGjC,MAAO,CAAP,EAAO57G,WAuDT,KAAA87G,mBAAqB,SACnB5kF,GAA+B,OAAA6kF,EAAAX,OAAA,4FAE/B,GAAI/uI,KAAK2vI,oBACP,MAAM,IAAIr/B,EAAAA,uBACR,iFAKEs/B,EAA6B,IAAIvrI,SAAQ,SAACwM,GAC9Cg/H,EAAch/H,CAChB,IACA7Q,KAAK2vI,oBAAsBC,EACvBE,GAAsB,EACpBtnH,EAAUC,YAAW,WACzBqnH,GAAsB,EACtBf,EAAKj3B,KAAK,eACZ,GAAG93G,KAAKivI,sCAGM,gCAAMpkF,YAMlB,OANMj5B,EAAMg4G,EAAA0F,OAERQ,GACF9vI,KAAK83G,KAAK,cAGL,CAAP,EAAOlmF,iBAEPjJ,aAAaH,GACTqnH,GAAaA,IACjB7vI,KAAK2vI,oBAAsB,kCAmB/B,KAAAI,YAA6B,IAgC/B,QA/OEjB,EAAAlkI,UAAAykI,SAAA,SAASW,GACP,MAAM,IAAInsI,MAAM,2BAClB,EAOAirI,EAAAlkI,UAAAqlI,eAAA,SAAe7lI,GAAe,EAM9B0kI,EAAAlkI,UAAA2wD,MAAA,WACE,OAAOl3D,QAAQC,SACjB,EASAwqI,EAAAlkI,UAAAotG,GAAA,SAAGk4B,EAAmB97G,GACpBp0B,KAAKo3G,QAAQY,GAAGk4B,EAAW97G,EAC7B,EAKA06G,EAAAlkI,UAAAg3B,IAAA,SAAIsuG,EAAmB97G,GACrBp0B,KAAKo3G,QAAQW,eAAem4B,EAAW97G,EACzC,EAEA06G,EAAAlkI,UAAAktG,KAAA,SAAKrpG,aAAe0G,EAAA,GAAAg7H,EAAA,EAAAA,EAAAvuI,UAAAC,OAAAsuI,IAAAh7H,EAAAg7H,EAAA,GAAAvuI,UAAAuuI,IAClBvG,EAAA5pI,KAAKo3G,SAAQU,KAAIzgC,MAAAuyD,EAAAwG,EAAC,CAAA3hI,GAAK4hI,EAAKl7H,IAAI,GAClC,EAKA25H,EAAAlkI,UAAA0lI,aAAA,WACE1nH,QAAQG,KACN,+FAEJ,EAKA+lH,EAAAlkI,UAAA2lI,mBAAA,SAAmBvB,GACjBhvI,KAAKgvI,gBAAkBA,CACzB,EAKAF,EAAAlkI,UAAA4lI,+BAAA,SAA+BvB,GAC7BjvI,KAAKivI,oBAAsBA,CAC7B,EAkDOH,EAAAplI,OAAP,SACE+mI,EACAC,GAFF,IAAA3B,EAAA,KAIE,YAHA,IAAA0B,IAAAA,EAAA,KAGO,IAAIpsI,SAAQ,SAACC,EAASikB,GAC3B,IAAI2rG,GAAQ,EACNnuF,EAAMgpG,EAAK4B,OAAO,CACtBl5G,KAAM,SAAClmB,GACL2iH,GAAQ,EACJnuF,GAAKA,EAAI6qG,cACTC,GAAiBloH,aAAakoH,GAClC9B,EAAK/zE,KAAKzpD,EAAEu/H,WAAYL,GAAaznI,KAAK1E,EAASikB,EACrD,EACA1F,MAAO,SAACtR,GACFs/H,GAAiBloH,aAAakoH,GAClCtoH,EAAOhX,EACT,EACAw/H,SAAU,WACJF,GAAiBloH,aAAakoH,GAE7B3c,GACH3rG,EACE,IAAImqF,EAAAA,eACFq8B,EAAKiC,2BACL,iBAIR,IAEIH,EAAkBH,EACpBjoH,YAAW,WACTsd,EAAI6qG,cACJroH,EACE,IAAImqF,EAAAA,eACFq8B,EAAKkC,2BACL,iBAGN,GAAGP,GACH,IACN,GACF,EAsCA5B,EAAAlkI,UAAAsmI,sBAAA,SACEjuG,EACAkuG,EACAC,eAEA,IAAyB,IAAAC,EAAAC,EAAAH,GAAOI,EAAAF,EAAA55G,QAAA85G,EAAAn3G,KAAAm3G,EAAAF,EAAA55G,OAAE,CAA7B,IAAM+5G,EAAUD,EAAAruI,MACnB+/B,EAAKuuG,GAAcxxI,KAAKyxI,qBACtBD,EACAvuG,EAAKuuG,GACLvuG,EACAmuG,qGAGN,EAIAtC,EAAAlkI,UAAA6mI,qBAAA,SACED,EACA3mF,EACA5Y,EACAm/F,GAJF,IAAArC,EAAA,KAME,OAAO,eAAO,IAAA55H,EAAA,GAAAg7H,EAAA,EAAAA,EAAAvuI,UAAAC,OAAAsuI,IAAAh7H,EAAAg7H,GAAAvuI,UAAAuuI,gGAGZ,GAFQJ,EAAgB/vI,KAAI+vI,YAG1B,MAAO,CAAP,EAAO1rI,QAAQkkB,OACb,IAAImqF,EAAAA,eACF,+BAAiCq9B,EAAc,IAC/C,sCAQG,6BAFP/vI,KAAK+vI,YAAcyB,EACnBxxI,KAAKiwI,eAAemB,GACb,GAAMvmF,EAAEwsB,MAAMplC,EAAK98B,WAA1B,MAAO,CAAP,EAAOy0H,EAAA0F,sBAEPtvI,KAAK+vI,YAAc,iCAGzB,EAEOjB,EAAAmC,2BAA6B,mCAC7BnC,EAAAkC,2BAA6B,yBACtClC,EA7SA,siBCpDAt/H,EAAA1O,EAAA,OAAAhB,GACAA,EAAAA,IAAAA,EAAAA,OAEA0P,EAAA1O,EAAA,OAAAhB,GACAA,EAAAA,WAAAA,EAAAA,mCCHAkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ4xI,YAcR,SAAqBC,GACjB,GAAa,MAATA,EACA,MAAO,CAAC,KAEZ,MAAM7jI,EAAe,CAAC6jI,GACtB,KAAOA,EAAK9vI,OAAS,GAAG,CACpB,MAAM+vI,EAASD,EAAK9M,YAAY,KAChC,GAAe,IAAX+M,EACA,MAEJD,EAAOA,EAAKjkI,MAAM,EAAGkkI,GACrB9jI,EAAaxG,KAAKqqI,EACtB,CAEA,OADA7jI,EAAaxG,KAAK,KACXwG,CACX,iFCxBAhO,EAAAA,QAAAyJ,EASAzJ,EAAAA,YAAA,SAA4B0J,EAAoBC,GAC9C,MAAMC,EAAU9E,IAAgB,EAAA+E,EAAAC,aAAY,IAAKJ,KAAaD,EAAQ3E,KACtE,OAAO5B,OAAO8J,OAAO,IAAKpD,EAAOD,GAAUC,UAC7C,EAlBA,MAAAG,EAAA/I,EAAA,OACAgJ,EAAAhJ,EAAA,OAEA6I,EAAA7I,EAAA,OAGA,SAAgByI,EAAQ3E,GACtB,MAAO,CACLA,OACAmF,KAAM,SAACC,GAAe,QAAAC,EAAArI,UAAAC,OAAKqI,EAAkB,IAAAC,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAlBF,EAAkBE,EAAA,GAAAxI,UAAAwI,GAAA,OAAK,EAAAP,EAAAE,MAAKnF,EAAMoF,GAAK,EAAAF,EAAAO,gBAAeH,GAAM,EACvFI,YAAAR,EAAAQ,YAEJ,0BCVA,MAAM2sE,EAAOA,CAACroE,EAAK5E,IACVhH,OAAO4H,UAAU4L,eAAeM,KAAKlI,EAAK5E,GAGnDjK,EAAOD,QAAQ4qF,OAAS,SAAU97E,GAChC,MAAM/L,EAAUsH,MAAMS,UAAU8C,MAAMoJ,KAAKlV,UAAW,GACtD,KAAOiB,EAAQhB,QAAQ,CACrB,MAAMT,EAASyB,EAAQkL,QACvB,GAAK3M,EAAL,CAEA,GAAsB,kBAAXA,EACT,MAAM,IAAI69B,UAAU79B,EAAS,sBAG/B,IAAK,MAAMmV,KAAKnV,EACV61E,EAAK71E,EAAQmV,KACf3H,EAAI2H,GAAKnV,EAAOmV,GARK,CAW3B,CAEA,OAAO3H,CACT,EAIA7O,EAAOD,QAAQwqH,cAAiBnzC,IAE9B,IAAIhlE,EAAM,EAEV,IAAK,IAAInH,EAAI,EAAGwG,EAAI2lE,EAAOt1E,OAAQmJ,EAAIwG,EAAGxG,IACxCmH,GAAOglE,EAAOnsE,GAAGnJ,OAInB,MAAM8sB,EAAS,IAAI2B,WAAWne,GAE9B,IAAK,IAAInH,EAAI,EAAGmlB,EAAM,EAAG3e,EAAI2lE,EAAOt1E,OAAQmJ,EAAIwG,EAAGxG,IAAK,CACtD,IAAIkpB,EAAQijD,EAAOnsE,GACnB2jB,EAAOrY,IAAI4d,EAAO/D,GAClBA,GAAO+D,EAAMryB,MACf,CAEA,OAAO8sB,CAAM,sCC7Cf,IAAIymC,EAAmBp1D,MAAQA,KAAKo1D,kBAAqBpyD,OAAO0G,OAAU,SAASw8B,EAAG5tB,EAAGhH,EAAGk5C,QAC7E1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B,IAAI+jD,EAAOryD,OAAOsyD,yBAAyBh9C,EAAGhH,GACzC+jD,KAAS,QAASA,GAAQ/8C,EAAEi9C,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAE34B,YAAY,EAAM9wB,IAAK,WAAa,OAAO0M,EAAEhH,EAAI,IAE5DtO,OAAOC,eAAeijC,EAAGskB,EAAI6K,EACjC,EAAM,SAASnvB,EAAG5tB,EAAGhH,EAAGk5C,QACT1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B40B,EAAEskB,GAAMlyC,EAAEhH,EACd,GACIugI,EAAsB7xI,MAAQA,KAAK6xI,qBAAwB7uI,OAAO0G,OAAU,SAASw8B,EAAGjyB,GACxFjR,OAAOC,eAAeijC,EAAG,UAAW,CAAExJ,YAAY,EAAMx5B,MAAO+Q,GACnE,EAAK,SAASiyB,EAAGjyB,GACbiyB,EAAW,QAAIjyB,CACnB,GACI69H,EAAgB9xI,MAAQA,KAAK8xI,cAAiB,SAAUz2H,GACxD,GAAIA,GAAOA,EAAIk6C,WAAY,OAAOl6C,EAClC,IAAIsT,EAAS,CAAC,EACd,GAAW,MAAPtT,EAAa,IAAK,IAAI/J,KAAK+J,EAAe,YAAN/J,GAAmBtO,OAAO4H,UAAU4L,eAAeM,KAAKuE,EAAK/J,IAAI8jD,EAAgBzmC,EAAQtT,EAAK/J,GAEtI,OADAugI,EAAmBljH,EAAQtT,GACpBsT,CACX,EACA3rB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQynF,eAAY,EACpB,MAAM/5E,EAAoB1M,EAAQ,OAC5BixI,EAAaD,EAAahxI,EAAQ,QAClCkxI,EAAelxI,EAAQ,OACvBmxI,EAAUnxI,EAAQ,OAClBoxI,EAAapxI,EAAQ,OACrBqxI,EAAcrxI,EAAQ,OACtBsxI,EAAWtxI,EAAQ,OACnBgJ,EAAUhJ,EAAQ,OAClBuxI,EAAoBvxI,EAAQ,OAC5BwxI,EAAcxxI,EAAQ,MACtByxI,EAAgBzxI,EAAQ,OACxB0xI,EAAgB1xI,EAAQ,OACxB2xI,EAAkB3xI,EAAQ,OAC1B4xI,EAAY5xI,EAAQ,OACpB6xI,EAA0B,CAC5BC,OAAO,EACPC,qBAAiB/wI,EACjBslF,aAAa,EACb0rD,MAAM,GAEJC,EAA0B,CAC5BD,MAAM,EACNE,QAAQ,EACRC,UAAU,EACVJ,qBAAiB/wI,EACjB+6B,UAAM/6B,GAEJoxI,EAA4B,8FAClC,SAASC,EAAiB5mH,GACtB,GAAIA,GACe,kBAARA,GACP,aAAcA,GACU,kBAAjBA,EAAIi6D,UACX,aAAcj6D,GACU,kBAAjBA,EAAI6mH,UACX,aAAc7mH,GACU,kBAAjBA,EAAI8mH,SACX,MAAO,CACH7sD,SAAUj6D,EAAIi6D,SACd4sD,SAAU7mH,EAAI6mH,SACdC,SAAU9mH,EAAI8mH,UAGjB,GAAmB,kBAAR9mH,EASZ,MAAM,IAAIylH,EAAasB,eAAe,0CARtC,IACI,OAAO,IAAIrtD,IAAIstD,UAAUhnH,GAC7B,CACA,MACI,OAAO,IAAI05D,IAAI15D,EACnB,CAKR,CACA,SAASinH,EAAqBtwI,GAC1B,MAAM0nF,EAAU/4E,OAAO3O,GAAO0R,cAC9B,MAAgB,SAAZg2E,GAAkC,QAAZA,GAAiC,WAAZA,EACpCA,OAGP,CAER,CA+BA,SAAS6oD,EAA4BC,GACjC,MAAMC,EAA2BD,EAAe9+H,cAEhD,OAAQ++H,GACJ,KAAKrB,EAAY5lI,mBAAmBE,OACpC,KAAK0lI,EAAY5lI,mBAAmBC,OACpC,KAAK2lI,EAAY5lI,mBAAmBG,SAChC,OAAO8mI,EACX,QACI,OAAOrB,EAAY5lI,mBAAmBC,OAElD,CAQA,MAAM46E,EAWFt5E,WAAAA,CAAY0vD,EAAO/7C,GACQ,mBAAZA,IACPA,EAAU,CAAEgyH,qBAAsBhyH,IAEtC5hB,KAAK4zI,qBAAuBhyH,GAASgyH,uBAAwB,EAC7D5zI,KAAK6zI,gBAAkBjyH,GAASkyH,YAAa,EAC7C9zI,KAAKsN,sBAAwBsU,GAAStU,wBAAyB,EAC/DtN,KAAK0zI,eAAiBD,EAA4B7xH,GAAS8xH,gBAAkB,UAC7E1zI,KAAK29D,MAAQA,GAAS,IAAIu0E,EAAW6B,iBACzC,CACAC,QAAAA,CAASj9B,GACL,IAAK/2G,KAAK29D,MAAMs2E,YACZ,MAAM,IAAIpwI,MAAM,8DAEpB,IACIqwI,EADAC,EAAU,KAEd,IACIp9B,EAAGjgG,KAAK9W,MAAM,CAAC6iB,EAAO8L,KAClBwlH,EAAUtxH,EACVqxH,EAAavlH,CAAM,GAE3B,CACA,MAAO/E,GACHuqH,EAAUvqH,CACd,CACA,GAAIuqH,EACA,MAAMA,EACV,OAAOD,CACX,CAIA1rD,SAAAA,CAAUb,EAAQp7D,EAAK3K,EAASonF,GACL,oBAAZpnF,IACPonF,EAAWpnF,EACXA,OAAU9f,GAEd,MAAMsyI,GAAkB,EAAItqI,EAAQ+oH,uBAAuB7pB,GACrD50E,EAAKggH,EAAgBprC,SAC3B,IAAIpe,EACJ,IAKI,GAJmB,kBAARr+D,GACPwlH,EAAWsC,SAAStC,EAAWuC,iBAAiB/nH,GAAMy8E,GAAU,EAAIl/F,EAAQ6oH,cAAc/wG,IAE9FgpE,EAAUuoD,EAAiB5mH,GACR,oBAARA,EACP,OAAO6nH,EAAgB7rH,OAAO,IAAI1kB,MAAM,yBAM5C,GAJuB,oBAAZ+d,IACPA,EAAU+wH,GAEdZ,EAAWsC,SAAuB,oBAAPjgH,EAAmBA,IACzC29G,EAAWuC,iBAAiB3sD,KAC5BoqD,EAAWwC,SAAS5sD,IACrBA,aAAkB91E,QACD,GAAjB81E,EAAO9lF,OACP,OAAOuyI,EAAgB9vI,aAAQxC,EAEvC,CACA,MAAO8nB,GACH,OAAOwqH,EAAgB7rH,OAAOqB,EAClC,CACA,MAAM4qH,GAAO,EAAInC,EAAkBoC,iBAAiB7pD,EAAQpE,WAAa,KACnEosD,EAAQhxH,GAASgxH,OAAS5yI,KAAK6zI,gBACrC,IAAIhB,EAAkB,KACtB,GAAIjxH,GAASixH,kBACTA,EAAkBW,EAAqB5xH,EAAQixH,kBAC1CA,GACD,OAAOuB,EAAgB7rH,OAAO,IAAI1kB,MAAMqvI,IAIhD,GAAsB,kBAAXvrD,GAAuBA,aAAkB91E,OAAQ,CACxD,MAAM6iI,EAAetC,EAASuC,OAAOxiH,MAAMw1D,EAAOljF,WAAY,CAAEmuI,MAAOA,IACvE,IAAK8B,EAAc,CACf,MAAM9qH,EAAM,IAAI/lB,MAAM,0BACtB,OAAO+d,GAASwlE,YACVgtD,EAAgB9vI,aAAQxC,GACxBsyI,EAAgB7rH,OAAOqB,EACjC,CACA+9D,EAAS+sD,CACb,MACK,KAAM/sD,aAAkByqD,EAASuC,QAAS,CAG3C,MAAM/qH,EAAM,IAAI/lB,MAAM,iEACtB,OAAO+d,GAASwlE,YACVgtD,EAAgB9vI,aAAQxC,GACxBsyI,EAAgB7rH,OAAOqB,EACjC,CAEA,MAAMkD,EAAMlL,GAASkL,KAAO,IAAID,KAIhC,GAAI7sB,KAAK4zI,sBAAwBjsD,EAAOt6E,OACpC,IACI,MAAMunI,EAAUjtD,EAAOitD,UAOvB,GAAc,OANoB,kBAAZA,GAChB,EAAIpnI,EAAkBC,iBAAiBmnI,EAAS,CAC9CtnI,sBAAuBtN,KAAKsN,sBAC5B85E,YAAaxlE,GAASwlE,cAExB,QACiBkrD,EAAY7lI,mBAAmB6H,KAAKqzE,EAAOt6E,QAAS,CAEvE,MAAMuc,EAAM,IAAI/lB,MAAM,4CACtB,OAAO+d,GAASwlE,YACVgtD,EAAgB9vI,aAAQxC,GACxBsyI,EAAgB7rH,OAAOqB,EACjC,CAKJ,CACA,MAAOA,GACH,OAAOhI,GAASwlE,YACVgtD,EAAgB9vI,aAAQxC,GAEtBsyI,EAAgB7rH,OAAOqB,EACnC,CAGJ,GAAI+9D,EAAOt6E,OAAQ,CACf,KAAK,EAAImlI,EAAcqC,aAAaL,QAAQ1yI,EAAW6lF,EAAOitD,gBAAa9yI,GAAW,GAAQ,CAC1F,MAAM8nB,EAAM,IAAI/lB,MAAM,4CAA4C8jF,EAAOitD,WAAa,kBAAkBJ,GAAQ,UAChH,OAAO5yH,GAASwlE,YACVgtD,EAAgB9vI,aAAQxC,GACxBsyI,EAAgB7rH,OAAOqB,EACjC,CACuB,MAAnB+9D,EAAOmtD,WAEPntD,EAAOmtD,UAAW,EAE1B,MAEIntD,EAAOmtD,UAAW,EAClBntD,EAAOt6E,OAASmnI,EAYpB,GAPK7sD,EAAOgqD,MAA2B,MAAnBhqD,EAAOgqD,KAAK,KAC5BhqD,EAAOgqD,MAAO,EAAIY,EAAcwC,aAAanqD,EAAQwoD,UACrDzrD,EAAOqtD,eAAgB,IAKL,IAAlBpzH,GAASkxH,MAAkBnrD,EAAOstD,SAAU,CAC5C,MAAMrrH,EAAM,IAAI/lB,MAAM,iDACtB,OAAO+d,EAAQwlE,YACTgtD,EAAgB9vI,aAAQxC,GACxBsyI,EAAgB7rH,OAAOqB,EACjC,CAEA,GAAwB,SAApB+9D,EAAOutD,eACapzI,IAApB6lF,EAAOutD,UACPrC,GAKwB,SAApBA,EAA4B,CAC5B,MAAMjpH,EAAM,IAAI/lB,MAAM,yDACtB,OAAO+d,GAASwlE,YACVgtD,EAAgB9vI,aAAQxC,GACxBsyI,EAAgB7rH,OAAOqB,EACjC,CAGJ,MAAMurH,EAA+Bn1I,KAAK0zI,iBAAmBpB,EAAY5lI,mBAAmBC,OAG5F,KAF+B3M,KAAK0zI,iBAAmBpB,EAAY5lI,mBAAmBG,UAEzD,CACzB,IACIuoI,EADAC,GAAa,EAajB,IAlPZ,SAAoC1tD,GAEhC,QADqD,kBAAfA,EAAO39E,KAAoB29E,EAAO39E,IAAInB,WAAW,eACrD8+E,EAAO2tD,MAC7C,CAqOiBC,CAA2B5tD,IAC5B0tD,GAAa,EACbD,EAAW,8DA3N3B,SAAkCztD,GAE9B,QADmD,kBAAfA,EAAO39E,KAAoB29E,EAAO39E,IAAInB,WAAW,aAEjFg0H,QAAQl1C,EAAO2tD,QACX3tD,EAAOmtD,UACQ,MAAfntD,EAAOgqD,MACS,MAAhBhqD,EAAOgqD,KACnB,CAsNsB6D,CAAyB7tD,KAE/B0tD,GAAa,EACbD,EACI,kGAEJC,EACA,OAAOzzH,GAASwlE,aAAe+tD,EACzBf,EAAgB9vI,aAAQxC,GACxBsyI,EAAgB7rH,OAAO,IAAI1kB,MAAMuxI,GAE/C,CACA,MAAMz3E,EAAQ39D,KAAK29D,MAIdA,EAAM83E,eACP93E,EAAM83E,aAAepmI,eAAgBqmI,EAAYC,EAAWvhH,GACxD,OAAOp0B,KAAK41I,UAAUD,GAAW3sI,MAAK,IAAMorB,IAAK,QAAQvR,GAAUuR,IAAKvR,IAC5E,GAoDJ,OADA86C,EAAMk4E,WAAWluD,EAAOt6E,OAAQs6E,EAAOgqD,KAAMhqD,EAAO39E,KAjDjC,SAAoB4f,EAAKksH,GACxC,GAAIlsH,EAEA,YADAwK,EAAGxK,GAGP,MAAM6N,EAAO,SAAU7N,GACfA,EACAwK,EAAGxK,GAGHwK,EAAG,KADoB,kBAAXuzD,OACH7lF,EAGA6lF,EAEjB,EACA,GAAImuD,EAAW,CAGX,GAAIl0H,GACA,SAAUA,IACO,IAAjBA,EAAQkxH,MACRgD,EAAUb,SAOV,OALArrH,EAAM,IAAI/lB,MAAM,0DACZ+d,EAAQwlE,YACRhzD,EAAG,UAAMtyB,GAETsyB,EAAGxK,IAGP+9D,aAAkByqD,EAASuC,SAC3BhtD,EAAOouD,SAAWD,EAAUC,SAE5BpuD,EAAOquD,cAAgBF,EAAUE,cAEjCruD,EAAOsuD,aAAenpH,EAEtB6wC,EAAM83E,aAAaK,EAAWnuD,EAAQlwD,GAE9C,MAEQkwD,aAAkByqD,EAASuC,SAC3BhtD,EAAOouD,SAAWpuD,EAAOsuD,aAAenpH,EACxC6wC,EAAMi4E,UAAUjuD,EAAQlwD,GAGpC,IAGO28G,EAAgB/qH,OAC3B,CAqBA6sH,aAAAA,CAAcvuD,EAAQp7D,EAAK3K,GACvB,MAAMu0H,EAAcv0H,EACd5hB,KAAKwoF,UAAUziE,KAAK/lB,KAAM2nF,EAAQp7D,EAAK3K,GACvC5hB,KAAKwoF,UAAUziE,KAAK/lB,KAAM2nF,EAAQp7D,GACxC,OAAOvsB,KAAKg0I,SAASmC,EACzB,CAIAC,UAAAA,CAAW7pH,EAAK3K,EAASonF,GAEE,oBAAZpnF,GACPonF,EAAWpnF,EACXA,EAAUmxH,QAEOjxI,IAAZ8f,IACLA,EAAUmxH,GAEd,MAAMqB,GAAkB,EAAItqI,EAAQ+oH,uBAAuB7pB,GACrD50E,EAAKggH,EAAgBprC,SAC3B,IAAIpe,EACJ,IACuB,kBAARr+D,GACPwlH,EAAWsC,SAAStC,EAAWuC,iBAAiB/nH,GAAM6H,EAAI7H,GAE9Dq+D,EAAUuoD,EAAiB5mH,GAC3BwlH,EAAWsC,SAAStC,EAAWwC,SAAS3yH,GAAUwS,GAAI,EAAItqB,EAAQ6oH,cAAc/wG,IAChFmwH,EAAWsC,SAAuB,oBAAPjgH,EAAmBA,EAClD,CACA,MAAOiiH,GACH,OAAOjC,EAAgB7rH,OAAO8tH,EAClC,CACA,MAAM7B,GAAO,EAAInC,EAAkBoC,iBAAiB7pD,EAAQpE,UACtDmrD,EAAO/mD,EAAQwoD,UAAY,IAC3BkC,EAAS1qD,EAAQyoD,WACE,UAApBzoD,EAAQyoD,UAA4C,QAApBzoD,EAAQyoD,UAC7C,IAAIiD,EAAgB,EACpB,GAAI10H,EAAQixH,gBAAiB,CACzB,MAAMA,EAAkBW,EAAqB5xH,EAAQixH,iBACrD,GAAuB,MAAnBA,EACA,OAAOuB,EAAgB7rH,OAAO,IAAI1kB,MAAMqvI,IAG5C,GADAoD,EAAgBlE,EAASuC,OAAO2B,cAAczD,IACzCyD,EACD,OAAOlC,EAAgB7rH,OAAO,IAAI1kB,MAAMqvI,GAEhD,CACA,MAAMJ,EAAOlxH,EAAQkxH,OAAQ,EACvBhmH,EAAMD,KAAKC,MACXypH,EAAc30H,EAAQoxH,SAAU,EAChCC,EAAWrxH,EAAQqxH,WAAY,EAC/Bt1E,EAAQ39D,KAAK29D,MACnB,SAAS64E,EAAeplI,GAOpB,GAAIA,EAAE0jI,UACF,GAAI1jI,EAAE/D,QAAUmnI,EACZ,OAAO,OAIX,KAAK,EAAIhC,EAAcqC,aAAaL,QAAQ1yI,EAAWsP,EAAE/D,aAAUvL,GAAW,GAC1E,OAAO,EAIf,IAAKmxI,GAA8B,kBAAX7hI,EAAEugI,QAAsB,EAAIQ,EAAYsE,WAAW9E,EAAMvgI,EAAEugI,MAC/E,OAAO,EAIX,GAAIvgI,EAAEkkI,SAAWA,EACb,OAAO,EAIX,GAAIlkI,EAAE6jI,WAAanC,EACf,OAAO,EAGX,GAAIwD,EAAe,CACf,IAAII,EAUJ,GARIA,EADe,QAAftlI,EAAE8jI,SACY9C,EAASuC,OAAO2B,cAAcK,IAExB,WAAfvlI,EAAE8jI,SACO9C,EAASuC,OAAO2B,cAAcx3C,OAG9BszC,EAASuC,OAAO2B,cAAcM,KAE5CF,EAAcJ,EAEd,OAAO,CAEf,CAGA,MAAMO,EAAazlI,EAAEylI,aACrB,QAAIN,QAA6Bz0I,GAAd+0I,GAA2BA,GAAc/pH,KACxD6wC,EAAMm5E,aAAa1lI,EAAE/D,OAAQ+D,EAAEugI,KAAMvgI,EAAEpH,KAAK,UACrC,EAGf,CAuBA,OAtBA2zD,EAAMo5E,YAAYvC,EAAMvB,EAAW,KAAOtB,EAAM3xI,KAAKsN,uBAAuB,CAACsc,EAAKu+D,KAC9E,GAAIv+D,EAEA,YADAwK,EAAGxK,GAGP,GAAe,MAAXu+D,EAEA,YADA/zD,EAAG,KAAM,IAGb+zD,EAAUA,EAAQqL,OAAOgjD,GAErB,SAAU50H,IAA4B,IAAjBA,EAAQib,OAC7BsrD,EAAUA,EAAQtrD,KAAK41G,EAAgBuE,gBAG3C,MAAMlqH,EAAM,IAAID,KAChB,IAAK,MAAM86D,KAAUQ,EACjBR,EAAOsuD,aAAenpH,EAG1BsH,EAAG,KAAM+zD,EAAQ,IAEdisD,EAAgB/qH,OAC3B,CAeA4tH,cAAAA,CAAe1qH,EAAK3K,GAChB,OAAO5hB,KAAKg0I,SAASh0I,KAAKo2I,WAAWrwH,KAAK/lB,KAAMusB,EAAK3K,KAAa,EACtE,CAIAsmE,eAAAA,CAAgB37D,EAAK3K,EAASonF,GACH,oBAAZpnF,IACPonF,EAAWpnF,EACXA,OAAU9f,GAEd,MAAMsyI,GAAkB,EAAItqI,EAAQ+oH,uBAAuB7pB,GAa3D,OADAhpG,KAAKo2I,WAAW7pH,EAAK3K,GAXR,SAAUgI,EAAKu+D,GACpBv+D,EACAwqH,EAAgBprC,SAASp/E,GAGzBwqH,EAAgBprC,SAAS,KAAM7gB,GACzBtrD,KAAK41G,EAAgBuE,eACtBtuI,KAAK0I,GAAMA,EAAEi3E,iBACbnrB,KAAK,MAElB,IAEOk3E,EAAgB/qH,OAC3B,CAUA6tH,mBAAAA,CAAoB3qH,EAAK3K,GACrB,OAAQ5hB,KAAKg0I,SAASpyH,EAChB5hB,KAAKkoF,gBAAgBniE,KAAK/lB,KAAMusB,EAAK3K,GACrC5hB,KAAKkoF,gBAAgBniE,KAAK/lB,KAAMusB,KAAS,EACnD,CAIA4qH,mBAAAA,CAAoB5qH,EAAK3K,EAASonF,GACP,oBAAZpnF,IACPonF,EAAWpnF,EACXA,OAAU9f,GAEd,MAAMsyI,GAAkB,EAAItqI,EAAQ+oH,uBAAuB7pB,GAY3D,OADAhpG,KAAKo2I,WAAW7pH,EAAK3K,GAVR,SAAUgI,EAAKu+D,GACpBv+D,EACAwqH,EAAgBprC,SAASp/E,GAGzBwqH,EAAgBprC,SAAS,KAAM7gB,GAASz/E,KAAK0I,GAClCA,EAAE3M,aAGrB,IAEO2vI,EAAgB/qH,OAC3B,CAUA+tH,uBAAAA,CAAwB7qH,GAAmB,IAAd3K,EAAOhgB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACpC,OAAQ5B,KAAKg0I,SAASh0I,KAAKm3I,oBAAoBpxH,KAAK/lB,KAAMusB,EAAK3K,KAAa,EAChF,CAIAouC,SAAAA,CAAUg5C,GACN,MAAMorC,GAAkB,EAAItqI,EAAQ+oH,uBAAuB7pB,GAC3D,IAAIrhG,EAAO3H,KAAK29D,MAAM1vD,YAAY2D,KAC9BmgI,EAAWwC,SAAS5sI,KACpBA,EAAO,MAGX,MAAM0vI,EAAa,CAIf5qF,QAAS,gBAAgBimF,EAAUjmF,UAEnC6qF,UAAW3vI,EAEXisI,qBAAsB5zI,KAAK4zI,qBAC3BC,gBAAiB7zI,KAAK6zI,gBACtBvmI,sBAAuBtN,KAAKsN,sBAC5BomI,eAAgBD,EAA4BzzI,KAAK0zI,gBAEjDvrD,QAAS,IAEb,MAAwC,oBAA7BnoF,KAAK29D,MAAM45E,cACXnD,EAAgB7rH,OAAO,IAAI1kB,MAAM,mEAE5C7D,KAAK29D,MAAM45E,eAAc,CAAC3tH,EAAKu+D,KACvBv+D,EACAwqH,EAAgBprC,SAASp/E,GAGd,MAAXu+D,GAIJkvD,EAAWlvD,QAAUA,EAAQz/E,KAAKi/E,IAE9B,MAAM6vD,EAAmB7vD,EAAOhpE,SAGhC,cADO64H,EAAiBxB,cACjBwB,CAAgB,IAE3BpD,EAAgBprC,SAAS,KAAMquC,IAV3BjD,EAAgBprC,SAAS,KAAMquC,EAUO,IAEvCjD,EAAgB/qH,QAC3B,CAMAouH,aAAAA,GACI,OAAOz3I,KAAKg0I,UAAUhrC,IAClBhpG,KAAKgwD,UAAUg5C,EAAS,GAEhC,CAKArqF,MAAAA,GACI,OAAO3e,KAAKy3I,eAChB,CAKAC,cAAAA,CAAeL,EAAYruC,GACvB,IAAI7gB,EAOJ,GANIkvD,GACsB,kBAAfA,IACP,EAAIvtI,EAAQkpH,YAAY,UAAWqkB,IACnCltI,MAAMi3B,QAAQi2G,EAAWlvD,WACzBA,EAAUkvD,EAAWlvD,UAEpBA,EAED,YADA6gB,EAAS,IAAInlG,MAAM,4CAAwC/B,GAG/DqmF,EAAUA,EAAQz6E,QAClB,MAAMiqI,EAAW/tH,IACb,GAAIA,EACAo/E,EAASp/E,OAAK9nB,QAGlB,GAAIqI,MAAMi3B,QAAQ+mD,GAAU,CACxB,IAAKA,EAAQtmF,OAET,YADAmnG,EAASp/E,EAAK5pB,MAGlB,IAAI2nF,EACJ,IACIA,EAASyqD,EAASuC,OAAOiD,SAASzvD,EAAQp6E,QAC9C,CACA,MAAOwD,GAEH,YADAy3F,EAASz3F,aAAa1N,MAAQ0N,EAAI,IAAI1N,WAAS/B,EAEnD,CACA,QAAeA,IAAX6lF,EAEA,YADAgwD,EAAQ,MAGZ33I,KAAK29D,MAAMi4E,UAAUjuD,EAAQgwD,EACjC,GAEJA,EAAQ,KACZ,CAIAE,kBAAAA,CAAmBR,GACfr3I,KAAKg0I,SAASh0I,KAAK03I,eAAe3xH,KAAK/lB,KAAMq3I,GACjD,CAIAhlI,KAAAA,CAAMylI,EAAU9uC,GACY,oBAAb8uC,IACP9uC,EAAW8uC,EACXA,OAAWh2I,GAEf,MAAMsyI,GAAkB,EAAItqI,EAAQ+oH,uBAAuB7pB,GACrD50E,EAAKggH,EAAgBprC,SAO3B,OANAhpG,KAAKgwD,WAAU,CAACpmC,EAAKytH,IACbztH,EACOwqH,EAAgB7rH,OAAOqB,GAE3B29D,EAAUrmB,YAAYm2E,GAAc,GAAIS,EAAU1jH,KAEtDggH,EAAgB/qH,OAC3B,CAIA0uH,UAAAA,CAAWD,GACP,MAAME,EAAUF,GAAgC,oBAAbA,EAC7B93I,KAAKqS,MAAM0T,KAAK/lB,KAAM83I,GACtB93I,KAAKqS,MAAM0T,KAAK/lB,MACtB,OAAOA,KAAKg0I,UAAUhrC,IAClBgvC,EAAQhvC,EAAS,GAEzB,CAgBAivC,SAAAA,CAAUH,GACN,IAAKA,EACD,OAAO93I,KAAK+3I,aAEhB,IAAKD,EAAS7D,YACV,MAAM,IAAIpwI,MAAM,gFAEpB,OAAO7D,KAAK+3I,WAAWD,EAC3B,CAIAI,gBAAAA,CAAiBlvC,GACb,MAAMorC,GAAkB,EAAItqI,EAAQ+oH,uBAAuB7pB,GACrD50E,EAAKggH,EAAgBprC,SACrBrrC,EAAQ39D,KAAK29D,MAInB,MAAsC,oBAA3BA,EAAMu6E,kBACbv6E,EAAMu6E,mBAAqBjG,EAAQkG,MAAMvtI,UAAUstI,kBAGnDv6E,EAAMu6E,iBAAiB9jH,GAChBggH,EAAgB/qH,UAE3Bs0C,EAAM45E,eAAc,CAAC3tH,EAAKu+D,KACtB,GAAIv+D,EAEA,YADAwK,EAAGxK,GAMP,GAHKu+D,IACDA,EAAU,IAES,IAAnBA,EAAQtmF,OAER,YADAuyB,EAAG,UAAMtyB,GAGb,IAAIs2I,EAAiB,EACrB,MAAMC,EAAe,GAEfC,EAAiB,SAAwBC,GACvCA,GACAF,EAAa/wI,KAAKixI,GAEtBH,IACIA,IAAmBjwD,EAAQtmF,SACvBw2I,EAAa,GACbjkH,EAAGikH,EAAa,IAEhBjkH,EAAG,UAAMtyB,GAGrB,EACAqmF,EAAQp5E,SAAS44E,IACbhqB,EAAMm5E,aAAanvD,EAAOt6E,OAAQs6E,EAAOgqD,KAAMhqD,EAAO39E,IAAKsuI,EAAe,GAC5E,IAEClE,EAAgB/qH,QAC3B,CAgBAmvH,oBAAAA,GACIx4I,KAAKg0I,UAAUhrC,IAGXhpG,KAAKk4I,iBAAiBlvC,EAAS,GAEvC,CAIA,kBAAO9nC,CAAYu3E,EAAU96E,EAAOqrC,GACX,oBAAVrrC,IACPqrC,EAAWrrC,EACXA,OAAQ77D,GAEZ,MAAMsyI,GAAkB,EAAItqI,EAAQ+oH,uBAAuB7pB,GAC3D,IAAIquC,EACJ,GAAwB,kBAAboB,EACP,IACIpB,EAAa1pH,KAAKwE,MAAMsmH,EAC5B,CACA,MAAOlnI,GACH,OAAO6iI,EAAgB7rH,OAAOhX,aAAa1N,MAAQ0N,EAAI,IAAI1N,MAC/D,MAGAwzI,EAAaoB,EAEjB,MAAMC,EAA0BpgC,GACrB++B,GACmB,kBAAfA,IACP,EAAIvtI,EAAQkpH,YAAY1a,EAAU++B,GAChCA,EAAW/+B,QACXx2G,EAEJ62I,EAAyBrgC,IAC3B,MAAMp1G,EAAQw1I,EAAuBpgC,GACrC,MAAwB,mBAAVp1G,EAAsBA,OAAQpB,CAAS,EAMnDqlF,EAAM,IAAII,EAAU5pB,EAAO,CAC7Bi2E,qBAAsB+E,EAAsB,wBAC5C7E,UAAW6E,EAAsB,mBACjCrrI,sBAAuBqrI,EAAsB,yBAC7CjF,eAAgBD,EARUn7B,KAC1B,MAAMp1G,EAAQw1I,EAAuBpgC,GACrC,MAAwB,kBAAVp1G,EAAqBA,OAAQpB,CAAS,EAMR82I,CAAqB,mBAAqB,YAS1F,OAPAzxD,EAAIuwD,eAAeL,GAAaztH,IACxBA,EACAwqH,EAAgBprC,SAASp/E,GAG7BwqH,EAAgBprC,SAAS,KAAM7hB,EAAI,IAEhCitD,EAAgB/qH,OAC3B,CAgBA,sBAAOwvH,CAAgBJ,EAAU96E,GAC7B,MAAM05E,EAAiC,kBAAboB,EAAwB9qH,KAAKwE,MAAMsmH,GAAYA,EACnEC,EAA0BpgC,GACrB++B,GACmB,kBAAfA,IACP,EAAIvtI,EAAQkpH,YAAY1a,EAAU++B,GAChCA,EAAW/+B,QACXx2G,EAEJ62I,EAAyBrgC,IAC3B,MAAMp1G,EAAQw1I,EAAuBpgC,GACrC,MAAwB,mBAAVp1G,EAAsBA,OAAQpB,CAAS,EAMnDqlF,EAAM,IAAII,EAAU5pB,EAAO,CAC7Bi2E,qBAAsB+E,EAAsB,wBAC5C7E,UAAW6E,EAAsB,mBACjCrrI,sBAAuBqrI,EAAsB,yBAC7CjF,eAAgBD,EARUn7B,KAC1B,MAAMp1G,EAAQw1I,EAAuBpgC,GACrC,MAAwB,kBAAVp1G,EAAqBA,OAAQpB,CAAS,EAMR82I,CAAqB,mBAAqB,YAG1F,IAAKzxD,EAAIxpB,MAAMs2E,YACX,MAAM,IAAIpwI,MAAM,8DAGpB,OADAsjF,EAAI0wD,mBAAmBR,GAChBlwD,CACX,CAYA,eAAOywD,CAASkB,EAAYn7E,GACxB,OAAO4pB,EAAUsxD,gBAAgBC,EAAYn7E,EACjD,EAEJ79D,EAAQynF,UAAYA,kKCv+BpB,MAAAzoE,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAGA8wD,EAAA9wD,EAAA,OAQahB,EAAAA,yBAA0B,EAAAgf,EAAAY,QAA0B,EAAC,EAAAX,EAAApa,WAAU,cAE/D7E,EAAAA,wBAA0BA,EAAAi5I,wBAAwB74H,KAE/DpgB,EAAAA,qBAAA,SAAqCuB,GACjC,MAAM0wD,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAc+mF,kBAAmB33I,EAAK8wD,SAC7E,OAAsB,OAAlBJ,EACOjyD,EAAAi5I,wBAAwBt5H,OAAOsyC,GAE/B,IAEf,8BCtBA,IAAY3xC,6EAAZ,SAAYA,GACRA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,2CACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,kCACAA,EAAAA,EAAA,8BACAA,EAAAA,EAAA,sCACAA,EAAAA,EAAA,oCACAA,EAAAA,EAAA,kCACAA,EAAAA,EAAA,8BACAA,EAAAA,EAAA,4CACAA,EAAAA,EAAA,4BACAA,EAAAA,EAAA,4CACAA,EAAAA,EAAA,8CACAA,EAAAA,EAAA,sCACAA,EAAAA,EAAA,4CACAA,EAAAA,EAAA,wDACAA,EAAAA,EAAA,wCACAA,EAAAA,EAAA,wCACAA,EAAAA,EAAA,gEACAA,EAAAA,EAAA,gDACAA,EAAAA,EAAA,kEACAA,EAAAA,EAAA,gEACAA,EAAAA,EAAA,4BACAA,EAAAA,EAAA,kDACAA,EAAAA,EAAA,wCACAA,EAAAA,EAAA,kEACAA,EAAAA,EAAA,gEACAA,EAAAA,EAAA,0CACAA,EAAAA,EAAA,8DACAA,EAAAA,EAAA,kDAGAA,EAAAA,EAAA,uDACH,CAzCD,CAAYA,IAAgBtgB,EAAAA,iBAAhBsgB,EAAgB,ibCA5B,MAAAvf,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAo5C,EAAAp5C,EAAA,MACAw5C,EAAAx5C,EAAA,OAgBAhB,EAAAA,cAAA,SACIoB,EACAC,EACAI,EACAF,EACAq6B,EACA35B,GAEsD,IADtDC,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBACZ2I,EAAwB15B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAu6B,qEAE3B,MAAMK,GAAuB,EAAA0e,EAAAK,+BACzBt5C,EACAE,EAAMoD,WACN,EACA3C,EACAs5B,GAGEK,GAA6B,EAAA2e,EAAAK,+BAC/Bjf,EACAn6B,EAAMoD,WACN,EACA3C,EACAs5B,GAGEG,GAAwB,EAAA6e,EAAAK,+BAC1Bjf,EACAE,GACA,EACA55B,EACAs5B,GAGEj5B,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAA23C,EAAA++F,gCACIx9G,EACAC,EACAC,EACAC,EACAv6B,EACAE,EAAMoD,UACN3C,EACAs5B,IAIR,aAAa,EAAAz6B,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,EAAOI,GAAQQ,EACpF,mCCnEAiB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQo5I,0BAAuB,EAC/B,MAAMC,EAAiBr4I,EAAQ,MACzBs4I,EAA2Bt4I,EAAQ,OACnCugB,EAAsBvgB,EAAQ,OAC9Bu4I,EAAsBv4I,EAAQ,OAC9BuyD,EAAavyD,EAAQ,OAC3B,MAAMo4I,UAA6BC,EAAeh4H,aAa9ClT,WAAAA,CAAYqT,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsB+tG,EAAQ9tG,EAASzT,GAC9H/H,MAAMkb,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsBC,EAASzT,GACpHnO,KAAK4lB,KAAOytC,EAAWS,SAASwlF,iBAChCt5I,KAAK8lB,iBAAmBuzH,EAAoBE,kBAC5Cv5I,KAAKsmB,kBAAoB,CAAC+yH,EAAoBG,uBAAuBrpB,YACrEnwH,KAAKkmB,cAAgB,KACrBlmB,KAAK0vH,OAASA,CAClB,CASA,YAAMhmH,CAAOhG,EAAQlC,EAAQi4I,EAASC,GAClC,IAAK15I,KAAKgiB,cACN,MAAM,IAAIne,MAAM,uCACpB,MAAM81I,EAA6B,kBAAbF,EAAwBA,EAAUA,EAAQltH,IAC1DpkB,EAAQnI,KAAKwhB,SAASqG,2BACtBiG,QAAasrH,EAAyBQ,uBAAuBC,mBAAmB75I,KAAKshB,gBAAiBq4H,EAAO,CAC/GjzI,QAAShD,EACTlC,SACAk4I,gBACAvxI,SACDnI,KAAK4hB,QAAQk4H,mBAChB,GAAIhsH,EAAKwI,QAAU90B,EACf,MAAM,IAAI6f,EAAoBkD,kBAAkB,0BACpD,MAAM2xB,QAAoBl2C,KAAKyjB,oBAAyC,kBAAbg2H,EACvD,CAAEx1H,WAAY,IAAOD,YAAa,IAClCy1H,EAAQjoB,SAASn+D,EAAWS,SAASwlF,mBAAmB,EAAOxrH,EAAKlK,WAAYpiB,EAAQxB,KAAKwhB,SAASqG,2BAA4BiG,GAChIokG,EAAQ,IAAImnB,EAAoBE,kBAAkBv5I,KAAM,CAC1DmrB,YAAa2C,EAAK3C,YAClBtlB,SAAUioB,EAAKjoB,SACfa,QAASonB,EAAKm/F,WACd8sB,YAAajsH,EAAKlK,WAClBo2H,aAAclsH,EAAKwI,MACnBihC,UAAW7zD,EACXg2I,gBACAxjG,cACA3pB,IAAKotH,EACLvpF,OAAQtiC,EAAKmsH,UACblkG,QAASjoB,EAAKioB,QACdD,WAAYhoB,EAAKosH,YACjB1zI,QAAS,GACTqnH,SAAS,EACT1lH,UAGJ,aADM+pH,EAAMQ,QACLR,CACX,EAEJpyH,EAAQo5I,qBAAuBA,6bC1E/B,MAAA34E,EAAAz/D,EAAA,OAEA,SAAgBq5I,EAAWl6I,GACzB,OAAO,EAAAsgE,EAAAC,QAAOvgE,EAChB,CAFAH,EAAAA,WAAAq6I,EAIAr6I,EAAAA,gBAAA,SAAsCG,4CACpC,IAGE,GADoB,qBAAXwW,QAAmD,qBAAlBA,OAAOqqF,OACpB,CAE3B,MAAM3iD,EAAyB,kBAAVl+C,GAAqB,IAAIw3E,aAAct3D,OAAOlgB,GAASA,EACtE2E,QAAa6R,OAAOqqF,OAAO98F,OAAO,UAAWm6C,GACnD,OAAO,IAAI7tB,WAAW1rB,GACjB,CAEL,MAAMuyF,EAAar2F,EAAQ,OAC3B,IAAKq2F,EAAW9zF,WACd,MAAM,IAAIQ,MAAM,iDAElB,OAAOQ,QAAQC,QAAQ6yF,EAAW9zF,WAAW,UAAUU,OAAO9D,GAAO+D,WAEvE,MAAO6e,GAOP,OANA+F,QAAQkxB,IAAIj3B,GACZ+F,QAAQkxB,IACN,0LAIKz1C,QAAQC,QAAQ61I,EAAWl6I,IAEtC,mCCtBA,MAAMm6I,EAASt5I,EAAQ,OACjBu5I,EAAUv5I,EAAQ,MAClBw5I,EACe,oBAAXh4G,QAAkD,oBAAlBA,OAAY,IAChDA,OAAY,IAAE,8BACd,KAENxiC,EAAQyE,OAASA,EACjBzE,EAAQy6I,WAyTR,SAAqB14I,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAO0C,EAAO0b,OAAOpe,EACvB,EA7TA/B,EAAQ06I,kBAAoB,GAE5B,MAAMC,EAAe,WAwDrB,SAASC,EAAc74I,GACrB,GAAIA,EAAS44I,EACX,MAAM,IAAI1jD,WAAW,cAAgBl1F,EAAS,kCAGhD,MAAMwlE,EAAM,IAAI/2C,WAAWzuB,GAE3B,OADAmB,OAAOknG,eAAe7iC,EAAK9iE,EAAOqG,WAC3By8D,CACT,CAYA,SAAS9iE,EAAQs4G,EAAK89B,EAAkB94I,GAEtC,GAAmB,kBAARg7G,EAAkB,CAC3B,GAAgC,kBAArB89B,EACT,MAAM,IAAI17G,UACR,sEAGJ,OAAOuE,EAAYq5E,EACrB,CACA,OAAOr4G,EAAKq4G,EAAK89B,EAAkB94I,EACrC,CAIA,SAAS2C,EAAMtB,EAAOy3I,EAAkB94I,GACtC,GAAqB,kBAAVqB,EACT,OAqHJ,SAAqBy9B,EAAQxM,GACH,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAK5vB,EAAOq2I,WAAWzmH,GACrB,MAAM,IAAI8K,UAAU,qBAAuB9K,GAG7C,MAAMtyB,EAAwC,EAA/Bk9B,EAAW4B,EAAQxM,GAClC,IAAIkzC,EAAMqzE,EAAa74I,GAEvB,MAAMg5I,EAASxzE,EAAIv8D,MAAM61B,EAAQxM,GAE7B0mH,IAAWh5I,IAIbwlE,EAAMA,EAAI35D,MAAM,EAAGmtI,IAGrB,OAAOxzE,CACT,CA3IWulE,CAAW1pI,EAAOy3I,GAG3B,GAAIl8G,YAAYC,OAAOx7B,GACrB,OAkJJ,SAAwB43I,GACtB,GAAIC,EAAWD,EAAWxqH,YAAa,CACrC,MAAM/Y,EAAO,IAAI+Y,WAAWwqH,GAC5B,OAAOE,EAAgBzjI,EAAK8Y,OAAQ9Y,EAAK2Z,WAAY3Z,EAAKwnB,WAC5D,CACA,OAAOk8G,EAAcH,EACvB,CAxJWI,CAAch4I,GAGvB,GAAa,MAATA,EACF,MAAM,IAAI+7B,UACR,yHACiD/7B,GAIrD,GAAI63I,EAAW73I,EAAOu7B,cACjBv7B,GAAS63I,EAAW73I,EAAMmtB,OAAQoO,aACrC,OAAOu8G,EAAgB93I,EAAOy3I,EAAkB94I,GAGlD,GAAiC,qBAAtBs5I,oBACNJ,EAAW73I,EAAOi4I,oBAClBj4I,GAAS63I,EAAW73I,EAAMmtB,OAAQ8qH,oBACrC,OAAOH,EAAgB93I,EAAOy3I,EAAkB94I,GAGlD,GAAqB,kBAAVqB,EACT,MAAM,IAAI+7B,UACR,yEAIJ,MAAMtsB,EAAUzP,EAAMyP,SAAWzP,EAAMyP,UACvC,GAAe,MAAXA,GAAmBA,IAAYzP,EACjC,OAAOqB,EAAOC,KAAKmO,EAASgoI,EAAkB94I,GAGhD,MAAMqP,EAkJR,SAAqBtC,GACnB,GAAIrK,EAAOy6B,SAASpwB,GAAM,CACxB,MAAMuD,EAA4B,EAAtBipI,EAAQxsI,EAAI/M,QAClBwlE,EAAMqzE,EAAavoI,GAEzB,OAAmB,IAAfk1D,EAAIxlE,QAIR+M,EAAI2I,KAAK8vD,EAAK,EAAG,EAAGl1D,GAHXk1D,CAKX,CAEA,QAAmBvlE,IAAf8M,EAAI/M,OACN,MAA0B,kBAAf+M,EAAI/M,QAAuBw5I,EAAYzsI,EAAI/M,QAC7C64I,EAAa,GAEfO,EAAcrsI,GAGvB,GAAiB,WAAbA,EAAIjH,MAAqBwC,MAAMi3B,QAAQxyB,EAAIjL,MAC7C,OAAOs3I,EAAcrsI,EAAIjL,KAE7B,CAzKY23I,CAAWp4I,GACrB,GAAIgO,EAAG,OAAOA,EAEd,GAAsB,qBAAXoxB,QAAgD,MAAtBA,OAAOi5G,aACH,oBAA9Br4I,EAAMo/B,OAAOi5G,aACtB,OAAOh3I,EAAOC,KAAKtB,EAAMo/B,OAAOi5G,aAAa,UAAWZ,EAAkB94I,GAG5E,MAAM,IAAIo9B,UACR,yHACiD/7B,EAErD,CAmBA,SAASs4I,EAAYtxH,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAI+U,UAAU,0CACf,GAAI/U,EAAO,EAChB,MAAM,IAAI6sE,WAAW,cAAgB7sE,EAAO,iCAEhD,CA0BA,SAASsZ,EAAatZ,GAEpB,OADAsxH,EAAWtxH,GACJwwH,EAAaxwH,EAAO,EAAI,EAAoB,EAAhBkxH,EAAQlxH,GAC7C,CAuCA,SAAS+wH,EAAep+C,GACtB,MAAMh7F,EAASg7F,EAAMh7F,OAAS,EAAI,EAA4B,EAAxBu5I,EAAQv+C,EAAMh7F,QAC9CwlE,EAAMqzE,EAAa74I,GACzB,IAAK,IAAImJ,EAAI,EAAGA,EAAInJ,EAAQmJ,GAAK,EAC/Bq8D,EAAIr8D,GAAgB,IAAX6xF,EAAM7xF,GAEjB,OAAOq8D,CACT,CAUA,SAAS2zE,EAAiBn+C,EAAO3rE,EAAYrvB,GAC3C,GAAIqvB,EAAa,GAAK2rE,EAAM99D,WAAa7N,EACvC,MAAM,IAAI6lE,WAAW,wCAGvB,GAAI8F,EAAM99D,WAAa7N,GAAcrvB,GAAU,GAC7C,MAAM,IAAIk1F,WAAW,wCAGvB,IAAI1vB,EAYJ,OAVEA,OADiBvlE,IAAfovB,QAAuCpvB,IAAXD,EACxB,IAAIyuB,WAAWusE,QACD/6F,IAAXD,EACH,IAAIyuB,WAAWusE,EAAO3rE,GAEtB,IAAIZ,WAAWusE,EAAO3rE,EAAYrvB,GAI1CmB,OAAOknG,eAAe7iC,EAAK9iE,EAAOqG,WAE3By8D,CACT,CA2BA,SAAS+zE,EAASv5I,GAGhB,GAAIA,GAAU44I,EACZ,MAAM,IAAI1jD,WAAW,0DACa0jD,EAAah2I,SAAS,IAAM,UAEhE,OAAgB,EAAT5C,CACT,CAsGA,SAASk9B,EAAY4B,EAAQxM,GAC3B,GAAI5vB,EAAOy6B,SAAS2B,GAClB,OAAOA,EAAO9+B,OAEhB,GAAI48B,YAAYC,OAAOiC,IAAWo6G,EAAWp6G,EAAQlC,aACnD,OAAOkC,EAAO5B,WAEhB,GAAsB,kBAAX4B,EACT,MAAM,IAAI1B,UACR,kGAC0B0B,GAI9B,MAAMxuB,EAAMwuB,EAAO9+B,OACb45I,EAAa75I,UAAUC,OAAS,IAAsB,IAAjBD,UAAU,GACrD,IAAK65I,GAAqB,IAARtpI,EAAW,OAAO,EAGpC,IAAIupI,GAAc,EAClB,OACE,OAAQvnH,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOhiB,EACT,IAAK,OACL,IAAK,QACH,OAAOgrG,EAAYx8E,GAAQ9+B,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAANsQ,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOwpI,EAAch7G,GAAQ9+B,OAC/B,QACE,GAAI65I,EACF,OAAOD,GAAa,EAAIt+B,EAAYx8E,GAAQ9+B,OAE9CsyB,GAAY,GAAKA,GAAUvf,cAC3B8mI,GAAc,EAGtB,CAGA,SAASE,EAAcznH,EAAUjlB,EAAOse,GACtC,IAAIkuH,GAAc,EAclB,SALc55I,IAAVoN,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQlP,KAAK6B,OACf,MAAO,GAOT,SAJYC,IAAR0rB,GAAqBA,EAAMxtB,KAAK6B,UAClC2rB,EAAMxtB,KAAK6B,QAGT2rB,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTte,KAAW,GAGT,MAAO,GAKT,IAFKilB,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAO0nH,EAAS77I,KAAMkP,EAAOse,GAE/B,IAAK,OACL,IAAK,QACH,OAAOsuH,EAAU97I,KAAMkP,EAAOse,GAEhC,IAAK,QACH,OAAOuuH,EAAW/7I,KAAMkP,EAAOse,GAEjC,IAAK,SACL,IAAK,SACH,OAAOwuH,EAAYh8I,KAAMkP,EAAOse,GAElC,IAAK,SACH,OAAOyuH,EAAYj8I,KAAMkP,EAAOse,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO0uH,EAAal8I,KAAMkP,EAAOse,GAEnC,QACE,GAAIkuH,EAAa,MAAM,IAAIz8G,UAAU,qBAAuB9K,GAC5DA,GAAYA,EAAW,IAAIvf,cAC3B8mI,GAAc,EAGtB,CAUA,SAAShwI,EAAMwF,EAAGX,EAAG+H,GACnB,MAAMtN,EAAIkG,EAAEX,GACZW,EAAEX,GAAKW,EAAEoH,GACTpH,EAAEoH,GAAKtN,CACT,CA2IA,SAASmxI,EAAsB9rH,EAAQ1hB,EAAKuiB,EAAYiD,EAAUioH,GAEhE,GAAsB,IAAlB/rH,EAAOxuB,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAfqvB,GACTiD,EAAWjD,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGZmqH,EADJnqH,GAAcA,KAGZA,EAAakrH,EAAM,EAAK/rH,EAAOxuB,OAAS,GAItCqvB,EAAa,IAAGA,EAAab,EAAOxuB,OAASqvB,GAC7CA,GAAcb,EAAOxuB,OAAQ,CAC/B,GAAIu6I,EAAK,OAAQ,EACZlrH,EAAab,EAAOxuB,OAAS,CACpC,MAAO,GAAIqvB,EAAa,EAAG,CACzB,IAAIkrH,EACC,OAAQ,EADJlrH,EAAa,CAExB,CAQA,GALmB,kBAARviB,IACTA,EAAMpK,EAAOC,KAAKmK,EAAKwlB,IAIrB5vB,EAAOy6B,SAASrwB,GAElB,OAAmB,IAAfA,EAAI9M,QACE,EAEHw6I,EAAahsH,EAAQ1hB,EAAKuiB,EAAYiD,EAAUioH,GAClD,GAAmB,kBAARztI,EAEhB,OADAA,GAAY,IACgC,oBAAjC2hB,WAAW1lB,UAAU2J,QAC1B6nI,EACK9rH,WAAW1lB,UAAU2J,QAAQuC,KAAKuZ,EAAQ1hB,EAAKuiB,GAE/CZ,WAAW1lB,UAAUi6H,YAAY/tH,KAAKuZ,EAAQ1hB,EAAKuiB,GAGvDmrH,EAAahsH,EAAQ,CAAC1hB,GAAMuiB,EAAYiD,EAAUioH,GAG3D,MAAM,IAAIn9G,UAAU,uCACtB,CAEA,SAASo9G,EAAcrkI,EAAKrJ,EAAKuiB,EAAYiD,EAAUioH,GACrD,IA0BIpxI,EA1BAsxI,EAAY,EACZC,EAAYvkI,EAAInW,OAChB26I,EAAY7tI,EAAI9M,OAEpB,QAAiBC,IAAbqyB,IAEe,UADjBA,EAAWtiB,OAAOsiB,GAAUvf,gBACY,UAAbuf,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAInc,EAAInW,OAAS,GAAK8M,EAAI9M,OAAS,EACjC,OAAQ,EAEVy6I,EAAY,EACZC,GAAa,EACbC,GAAa,EACbtrH,GAAc,CAChB,CAGF,SAASmoB,EAAMguB,EAAKr8D,GAClB,OAAkB,IAAdsxI,EACKj1E,EAAIr8D,GAEJq8D,EAAImoE,aAAaxkI,EAAIsxI,EAEhC,CAGA,GAAIF,EAAK,CACP,IAAIK,GAAc,EAClB,IAAKzxI,EAAIkmB,EAAYlmB,EAAIuxI,EAAWvxI,IAClC,GAAIquC,EAAKrhC,EAAKhN,KAAOquC,EAAK1qC,GAAqB,IAAhB8tI,EAAoB,EAAIzxI,EAAIyxI,IAEzD,IADoB,IAAhBA,IAAmBA,EAAazxI,GAChCA,EAAIyxI,EAAa,IAAMD,EAAW,OAAOC,EAAaH,OAEtC,IAAhBG,IAAmBzxI,GAAKA,EAAIyxI,GAChCA,GAAc,CAGpB,MAEE,IADIvrH,EAAasrH,EAAYD,IAAWrrH,EAAaqrH,EAAYC,GAC5DxxI,EAAIkmB,EAAYlmB,GAAK,EAAGA,IAAK,CAChC,IAAIkpH,GAAQ,EACZ,IAAK,IAAItjH,EAAI,EAAGA,EAAI4rI,EAAW5rI,IAC7B,GAAIyoC,EAAKrhC,EAAKhN,EAAI4F,KAAOyoC,EAAK1qC,EAAKiC,GAAI,CACrCsjH,GAAQ,EACR,KACF,CAEF,GAAIA,EAAO,OAAOlpH,CACpB,CAGF,OAAQ,CACV,CAcA,SAAS0xI,EAAUr1E,EAAK1mC,EAAQ5J,EAAQl1B,GACtCk1B,EAAS5H,OAAO4H,IAAW,EAC3B,MAAM4lH,EAAYt1E,EAAIxlE,OAASk1B,EAC1Bl1B,GAGHA,EAASstB,OAAOttB,IACH86I,IACX96I,EAAS86I,GAJX96I,EAAS86I,EAQX,MAAMC,EAASj8G,EAAO9+B,OAKtB,IAAImJ,EACJ,IAJInJ,EAAS+6I,EAAS,IACpB/6I,EAAS+6I,EAAS,GAGf5xI,EAAI,EAAGA,EAAInJ,IAAUmJ,EAAG,CAC3B,MAAM2pD,EAASxpD,SAASw1B,EAAOz1B,OAAW,EAAJF,EAAO,GAAI,IACjD,GAAIqwI,EAAY1mF,GAAS,OAAO3pD,EAChCq8D,EAAItwC,EAAS/rB,GAAK2pD,CACpB,CACA,OAAO3pD,CACT,CAEA,SAAS6xI,EAAWx1E,EAAK1mC,EAAQ5J,EAAQl1B,GACvC,OAAOi7I,EAAW3/B,EAAYx8E,EAAQ0mC,EAAIxlE,OAASk1B,GAASswC,EAAKtwC,EAAQl1B,EAC3E,CAEA,SAASk7I,EAAY11E,EAAK1mC,EAAQ5J,EAAQl1B,GACxC,OAAOi7I,EAypCT,SAAuB9qI,GACrB,MAAMgrI,EAAY,GAClB,IAAK,IAAIhyI,EAAI,EAAGA,EAAIgH,EAAInQ,SAAUmJ,EAEhCgyI,EAAU11I,KAAyB,IAApB0K,EAAIlB,WAAW9F,IAEhC,OAAOgyI,CACT,CAhqCoBC,CAAat8G,GAAS0mC,EAAKtwC,EAAQl1B,EACvD,CAEA,SAASq7I,EAAa71E,EAAK1mC,EAAQ5J,EAAQl1B,GACzC,OAAOi7I,EAAWnB,EAAch7G,GAAS0mC,EAAKtwC,EAAQl1B,EACxD,CAEA,SAASs7I,EAAW91E,EAAK1mC,EAAQ5J,EAAQl1B,GACvC,OAAOi7I,EA0pCT,SAAyB9qI,EAAKorI,GAC5B,IAAIhsI,EAAG6yB,EAAIf,EACX,MAAM85G,EAAY,GAClB,IAAK,IAAIhyI,EAAI,EAAGA,EAAIgH,EAAInQ,WACjBu7I,GAAS,GAAK,KADapyI,EAGhCoG,EAAIY,EAAIlB,WAAW9F,GACnBi5B,EAAK7yB,GAAK,EACV8xB,EAAK9xB,EAAI,IACT4rI,EAAU11I,KAAK47B,GACf85G,EAAU11I,KAAK28B,GAGjB,OAAO+4G,CACT,CAxqCoBK,CAAe18G,EAAQ0mC,EAAIxlE,OAASk1B,GAASswC,EAAKtwC,EAAQl1B,EAC9E,CA8EA,SAASo6I,EAAa50E,EAAKn4D,EAAOse,GAChC,OAAc,IAAVte,GAAese,IAAQ65C,EAAIxlE,OACtBu4I,EAAOkD,cAAcj2E,GAErB+yE,EAAOkD,cAAcj2E,EAAI35D,MAAMwB,EAAOse,GAEjD,CAEA,SAASsuH,EAAWz0E,EAAKn4D,EAAOse,GAC9BA,EAAMpkB,KAAKsI,IAAI21D,EAAIxlE,OAAQ2rB,GAC3B,MAAMoE,EAAM,GAEZ,IAAI5mB,EAAIkE,EACR,KAAOlE,EAAIwiB,GAAK,CACd,MAAM+vH,EAAYl2E,EAAIr8D,GACtB,IAAIwyI,EAAY,KACZC,EAAoBF,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAIvyI,EAAIyyI,GAAoBjwH,EAAK,CAC/B,IAAIkwH,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EACHG,EAAar2E,EAAIr8D,EAAI,GACO,OAAV,IAAb0yI,KACHG,GAA6B,GAAZN,IAAqB,EAAoB,GAAbG,EACzCG,EAAgB,MAClBL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAar2E,EAAIr8D,EAAI,GACrB2yI,EAAYt2E,EAAIr8D,EAAI,GACQ,OAAV,IAAb0yI,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZN,IAAoB,IAAoB,GAAbG,IAAsB,EAAmB,GAAZC,EACrEE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAar2E,EAAIr8D,EAAI,GACrB2yI,EAAYt2E,EAAIr8D,EAAI,GACpB4yI,EAAav2E,EAAIr8D,EAAI,GACO,OAAV,IAAb0yI,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZN,IAAoB,IAAqB,GAAbG,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,EAClGC,EAAgB,OAAUA,EAAgB,UAC5CL,EAAYK,IAItB,CAEkB,OAAdL,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACb5rH,EAAItqB,KAAKk2I,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvB5rH,EAAItqB,KAAKk2I,GACTxyI,GAAKyyI,CACP,CAEA,OAQF,SAAgCK,GAC9B,MAAM3rI,EAAM2rI,EAAWj8I,OACvB,GAAIsQ,GAAO4rI,EACT,OAAOlsI,OAAO4oB,aAAa48C,MAAMxlE,OAAQisI,GAI3C,IAAIlsH,EAAM,GACN5mB,EAAI,EACR,KAAOA,EAAImH,GACTyf,GAAO/f,OAAO4oB,aAAa48C,MACzBxlE,OACAisI,EAAWpwI,MAAM1C,EAAGA,GAAK+yI,IAG7B,OAAOnsH,CACT,CAxBSosH,CAAsBpsH,EAC/B,CA3+BA9xB,EAAQm+I,WAAaxD,EAgBrBl2I,EAAOo6B,oBAUP,WAEE,IACE,MAAM3mB,EAAM,IAAIsY,WAAW,GACrB4tH,EAAQ,CAAEC,IAAK,WAAc,OAAO,EAAG,GAG7C,OAFAn7I,OAAOknG,eAAeg0C,EAAO5tH,WAAW1lB,WACxC5H,OAAOknG,eAAelyF,EAAKkmI,GACN,KAAdlmI,EAAImmI,KACb,CAAE,MAAO5sI,GACP,OAAO,CACT,CACF,CArB6B6sI,GAExB75I,EAAOo6B,qBAA0C,qBAAZ/V,SACb,oBAAlBA,QAAQ/F,OACjB+F,QAAQ/F,MACN,iJAkBJ7f,OAAOC,eAAesB,EAAOqG,UAAW,SAAU,CAChD8xB,YAAY,EACZ9wB,IAAK,WACH,GAAKrH,EAAOy6B,SAASh/B,MACrB,OAAOA,KAAKqwB,MACd,IAGFrtB,OAAOC,eAAesB,EAAOqG,UAAW,SAAU,CAChD8xB,YAAY,EACZ9wB,IAAK,WACH,GAAKrH,EAAOy6B,SAASh/B,MACrB,OAAOA,KAAKkxB,UACd,IAoCF3sB,EAAO85I,SAAW,KA8DlB95I,EAAOC,KAAO,SAAUtB,EAAOy3I,EAAkB94I,GAC/C,OAAO2C,EAAKtB,EAAOy3I,EAAkB94I,EACvC,EAIAmB,OAAOknG,eAAe3lG,EAAOqG,UAAW0lB,WAAW1lB,WACnD5H,OAAOknG,eAAe3lG,EAAQ+rB,YA8B9B/rB,EAAO0b,MAAQ,SAAUiK,EAAM+G,EAAMkD,GACnC,OArBF,SAAgBjK,EAAM+G,EAAMkD,GAE1B,OADAqnH,EAAWtxH,GACPA,GAAQ,EACHwwH,EAAaxwH,QAETpoB,IAATmvB,EAIyB,kBAAbkD,EACVumH,EAAaxwH,GAAM+G,KAAKA,EAAMkD,GAC9BumH,EAAaxwH,GAAM+G,KAAKA,GAEvBypH,EAAaxwH,EACtB,CAOSjK,CAAMiK,EAAM+G,EAAMkD,EAC3B,EAUA5vB,EAAOi/B,YAAc,SAAUtZ,GAC7B,OAAOsZ,EAAYtZ,EACrB,EAIA3lB,EAAO+5I,gBAAkB,SAAUp0H,GACjC,OAAOsZ,EAAYtZ,EACrB,EA6GA3lB,EAAOy6B,SAAW,SAAmB9tB,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAEqtI,WACpBrtI,IAAM3M,EAAOqG,SACjB,EAEArG,EAAOwM,QAAU,SAAkBN,EAAGS,GAGpC,GAFI6pI,EAAWtqI,EAAG6f,cAAa7f,EAAIlM,EAAOC,KAAKiM,EAAGA,EAAEsmB,OAAQtmB,EAAEsuB,aAC1Dg8G,EAAW7pI,EAAGof,cAAapf,EAAI3M,EAAOC,KAAK0M,EAAGA,EAAE6lB,OAAQ7lB,EAAE6tB,cACzDx6B,EAAOy6B,SAASvuB,KAAOlM,EAAOy6B,SAAS9tB,GAC1C,MAAM,IAAI+tB,UACR,yEAIJ,GAAIxuB,IAAMS,EAAG,OAAO,EAEpB,IAAIF,EAAIP,EAAE5O,OACNoP,EAAIC,EAAErP,OAEV,IAAK,IAAImJ,EAAI,EAAGmH,EAAM/I,KAAKsI,IAAIV,EAAGC,GAAIjG,EAAImH,IAAOnH,EAC/C,GAAIyF,EAAEzF,KAAOkG,EAAElG,GAAI,CACjBgG,EAAIP,EAAEzF,GACNiG,EAAIC,EAAElG,GACN,KACF,CAGF,OAAIgG,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,CACT,EAEAzM,EAAOq2I,WAAa,SAAqBzmH,GACvC,OAAQtiB,OAAOsiB,GAAUvf,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,EAEArQ,EAAO4T,OAAS,SAAiBqmI,EAAM38I,GACrC,IAAKsI,MAAMi3B,QAAQo9G,GACjB,MAAM,IAAIv/G,UAAU,+CAGtB,GAAoB,IAAhBu/G,EAAK38I,OACP,OAAO0C,EAAO0b,MAAM,GAGtB,IAAIjV,EACJ,QAAelJ,IAAXD,EAEF,IADAA,EAAS,EACJmJ,EAAI,EAAGA,EAAIwzI,EAAK38I,SAAUmJ,EAC7BnJ,GAAU28I,EAAKxzI,GAAGnJ,OAItB,MAAMwuB,EAAS9rB,EAAOi/B,YAAY3hC,GAClC,IAAIsuB,EAAM,EACV,IAAKnlB,EAAI,EAAGA,EAAIwzI,EAAK38I,SAAUmJ,EAAG,CAChC,IAAIq8D,EAAMm3E,EAAKxzI,GACf,GAAI+vI,EAAW1zE,EAAK/2C,YACdH,EAAMk3C,EAAIxlE,OAASwuB,EAAOxuB,QACvB0C,EAAOy6B,SAASqoC,KAAMA,EAAM9iE,EAAOC,KAAK6iE,IAC7CA,EAAI9vD,KAAK8Y,EAAQF,IAEjBG,WAAW1lB,UAAU0L,IAAIQ,KACvBuZ,EACAg3C,EACAl3C,OAGC,KAAK5rB,EAAOy6B,SAASqoC,GAC1B,MAAM,IAAIpoC,UAAU,+CAEpBooC,EAAI9vD,KAAK8Y,EAAQF,EACnB,CACAA,GAAOk3C,EAAIxlE,MACb,CACA,OAAOwuB,CACT,EAiDA9rB,EAAOw6B,WAAaA,EA8EpBx6B,EAAOqG,UAAU2zI,WAAY,EAQ7Bh6I,EAAOqG,UAAU6zI,OAAS,WACxB,MAAMtsI,EAAMnS,KAAK6B,OACjB,GAAIsQ,EAAM,IAAM,EACd,MAAM,IAAI4kF,WAAW,6CAEvB,IAAK,IAAI/rF,EAAI,EAAGA,EAAImH,EAAKnH,GAAK,EAC5BU,EAAK1L,KAAMgL,EAAGA,EAAI,GAEpB,OAAOhL,IACT,EAEAuE,EAAOqG,UAAU8zI,OAAS,WACxB,MAAMvsI,EAAMnS,KAAK6B,OACjB,GAAIsQ,EAAM,IAAM,EACd,MAAM,IAAI4kF,WAAW,6CAEvB,IAAK,IAAI/rF,EAAI,EAAGA,EAAImH,EAAKnH,GAAK,EAC5BU,EAAK1L,KAAMgL,EAAGA,EAAI,GAClBU,EAAK1L,KAAMgL,EAAI,EAAGA,EAAI,GAExB,OAAOhL,IACT,EAEAuE,EAAOqG,UAAU+zI,OAAS,WACxB,MAAMxsI,EAAMnS,KAAK6B,OACjB,GAAIsQ,EAAM,IAAM,EACd,MAAM,IAAI4kF,WAAW,6CAEvB,IAAK,IAAI/rF,EAAI,EAAGA,EAAImH,EAAKnH,GAAK,EAC5BU,EAAK1L,KAAMgL,EAAGA,EAAI,GAClBU,EAAK1L,KAAMgL,EAAI,EAAGA,EAAI,GACtBU,EAAK1L,KAAMgL,EAAI,EAAGA,EAAI,GACtBU,EAAK1L,KAAMgL,EAAI,EAAGA,EAAI,GAExB,OAAOhL,IACT,EAEAuE,EAAOqG,UAAUnG,SAAW,WAC1B,MAAM5C,EAAS7B,KAAK6B,OACpB,OAAe,IAAXA,EAAqB,GACA,IAArBD,UAAUC,OAAqBi6I,EAAU97I,KAAM,EAAG6B,GAC/C+5I,EAAavkE,MAAMr3E,KAAM4B,UAClC,EAEA2C,EAAOqG,UAAUg0I,eAAiBr6I,EAAOqG,UAAUnG,SAEnDF,EAAOqG,UAAU2V,OAAS,SAAiBrP,GACzC,IAAK3M,EAAOy6B,SAAS9tB,GAAI,MAAM,IAAI+tB,UAAU,6BAC7C,OAAIj/B,OAASkR,GACsB,IAA5B3M,EAAOwM,QAAQ/Q,KAAMkR,EAC9B,EAEA3M,EAAOqG,UAAU43B,QAAU,WACzB,IAAIxwB,EAAM,GACV,MAAML,EAAM7R,EAAQ06I,kBAGpB,OAFAxoI,EAAMhS,KAAKyE,SAAS,MAAO,EAAGkN,GAAK3E,QAAQ,UAAW,OAAOC,OACzDjN,KAAK6B,OAAS8P,IAAKK,GAAO,SACvB,WAAaA,EAAM,GAC5B,EACIsoI,IACF/1I,EAAOqG,UAAU0vI,GAAuB/1I,EAAOqG,UAAU43B,SAG3Dj+B,EAAOqG,UAAUmG,QAAU,SAAkBlF,EAAQqD,EAAOse,EAAKqxH,EAAWC,GAI1E,GAHI/D,EAAWlvI,EAAQykB,cACrBzkB,EAAStH,EAAOC,KAAKqH,EAAQA,EAAOkrB,OAAQlrB,EAAOkzB,cAEhDx6B,EAAOy6B,SAASnzB,GACnB,MAAM,IAAIozB,UACR,wFAC2BpzB,GAiB/B,QAbc/J,IAAVoN,IACFA,EAAQ,QAEEpN,IAAR0rB,IACFA,EAAM3hB,EAASA,EAAOhK,OAAS,QAEfC,IAAd+8I,IACFA,EAAY,QAEE/8I,IAAZg9I,IACFA,EAAU9+I,KAAK6B,QAGbqN,EAAQ,GAAKse,EAAM3hB,EAAOhK,QAAUg9I,EAAY,GAAKC,EAAU9+I,KAAK6B,OACtE,MAAM,IAAIk1F,WAAW,sBAGvB,GAAI8nD,GAAaC,GAAW5vI,GAASse,EACnC,OAAO,EAET,GAAIqxH,GAAaC,EACf,OAAQ,EAEV,GAAI5vI,GAASse,EACX,OAAO,EAQT,GAAIxtB,OAAS6L,EAAQ,OAAO,EAE5B,IAAImF,GAJJ8tI,KAAa,IADbD,KAAe,GAMX5tI,GAPJuc,KAAS,IADTte,KAAW,GASX,MAAMiD,EAAM/I,KAAKsI,IAAIV,EAAGC,GAElB8tI,EAAW/+I,KAAK0N,MAAMmxI,EAAWC,GACjCE,EAAanzI,EAAO6B,MAAMwB,EAAOse,GAEvC,IAAK,IAAIxiB,EAAI,EAAGA,EAAImH,IAAOnH,EACzB,GAAI+zI,EAAS/zI,KAAOg0I,EAAWh0I,GAAI,CACjCgG,EAAI+tI,EAAS/zI,GACbiG,EAAI+tI,EAAWh0I,GACf,KACF,CAGF,OAAIgG,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,CACT,EA2HAzM,EAAOqG,UAAUk1C,SAAW,SAAmBnxC,EAAKuiB,EAAYiD,GAC9D,OAAoD,IAA7Cn0B,KAAKuU,QAAQ5F,EAAKuiB,EAAYiD,EACvC,EAEA5vB,EAAOqG,UAAU2J,QAAU,SAAkB5F,EAAKuiB,EAAYiD,GAC5D,OAAOgoH,EAAqBn8I,KAAM2O,EAAKuiB,EAAYiD,GAAU,EAC/D,EAEA5vB,EAAOqG,UAAUi6H,YAAc,SAAsBl2H,EAAKuiB,EAAYiD,GACpE,OAAOgoH,EAAqBn8I,KAAM2O,EAAKuiB,EAAYiD,GAAU,EAC/D,EA4CA5vB,EAAOqG,UAAUE,MAAQ,SAAgB61B,EAAQ5J,EAAQl1B,EAAQsyB,GAE/D,QAAeryB,IAAXi1B,EACF5C,EAAW,OACXtyB,EAAS7B,KAAK6B,OACdk1B,EAAS,OAEJ,QAAej1B,IAAXD,GAA0C,kBAAXk1B,EACxC5C,EAAW4C,EACXl1B,EAAS7B,KAAK6B,OACdk1B,EAAS,MAEJ,KAAIrb,SAASqb,GAUlB,MAAM,IAAIlzB,MACR,2EAVFkzB,KAAoB,EAChBrb,SAAS7Z,IACXA,KAAoB,OACHC,IAAbqyB,IAAwBA,EAAW,UAEvCA,EAAWtyB,EACXA,OAASC,EAMb,CAEA,MAAM66I,EAAY38I,KAAK6B,OAASk1B,EAGhC,SAFej1B,IAAXD,GAAwBA,EAAS86I,KAAW96I,EAAS86I,GAEpDh8G,EAAO9+B,OAAS,IAAMA,EAAS,GAAKk1B,EAAS,IAAOA,EAAS/2B,KAAK6B,OACrE,MAAM,IAAIk1F,WAAW,0CAGlB5iE,IAAUA,EAAW,QAE1B,IAAIunH,GAAc,EAClB,OACE,OAAQvnH,GACN,IAAK,MACH,OAAOuoH,EAAS18I,KAAM2gC,EAAQ5J,EAAQl1B,GAExC,IAAK,OACL,IAAK,QACH,OAAOg7I,EAAU78I,KAAM2gC,EAAQ5J,EAAQl1B,GAEzC,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOk7I,EAAW/8I,KAAM2gC,EAAQ5J,EAAQl1B,GAE1C,IAAK,SAEH,OAAOq7I,EAAYl9I,KAAM2gC,EAAQ5J,EAAQl1B,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOs7I,EAAUn9I,KAAM2gC,EAAQ5J,EAAQl1B,GAEzC,QACE,GAAI65I,EAAa,MAAM,IAAIz8G,UAAU,qBAAuB9K,GAC5DA,GAAY,GAAKA,GAAUvf,cAC3B8mI,GAAc,EAGtB,EAEAn3I,EAAOqG,UAAU+T,OAAS,WACxB,MAAO,CACLhX,KAAM,SACNhE,KAAMwG,MAAMS,UAAU8C,MAAMoJ,KAAK9W,KAAKi/I,MAAQj/I,KAAM,GAExD,EAyFA,MAAM+9I,EAAuB,KAoB7B,SAAShC,EAAY10E,EAAKn4D,EAAOse,GAC/B,IAAIiL,EAAM,GACVjL,EAAMpkB,KAAKsI,IAAI21D,EAAIxlE,OAAQ2rB,GAE3B,IAAK,IAAIxiB,EAAIkE,EAAOlE,EAAIwiB,IAAOxiB,EAC7BytB,GAAO5mB,OAAO4oB,aAAsB,IAAT4sC,EAAIr8D,IAEjC,OAAOytB,CACT,CAEA,SAASujH,EAAa30E,EAAKn4D,EAAOse,GAChC,IAAIiL,EAAM,GACVjL,EAAMpkB,KAAKsI,IAAI21D,EAAIxlE,OAAQ2rB,GAE3B,IAAK,IAAIxiB,EAAIkE,EAAOlE,EAAIwiB,IAAOxiB,EAC7BytB,GAAO5mB,OAAO4oB,aAAa4sC,EAAIr8D,IAEjC,OAAOytB,CACT,CAEA,SAASojH,EAAUx0E,EAAKn4D,EAAOse,GAC7B,MAAMrb,EAAMk1D,EAAIxlE,SAEXqN,GAASA,EAAQ,KAAGA,EAAQ,KAC5Bse,GAAOA,EAAM,GAAKA,EAAMrb,KAAKqb,EAAMrb,GAExC,IAAIpL,EAAM,GACV,IAAK,IAAIiE,EAAIkE,EAAOlE,EAAIwiB,IAAOxiB,EAC7BjE,GAAOm4I,EAAoB73E,EAAIr8D,IAEjC,OAAOjE,CACT,CAEA,SAASm1I,EAAc70E,EAAKn4D,EAAOse,GACjC,MAAM2wB,EAAQkpB,EAAI35D,MAAMwB,EAAOse,GAC/B,IAAIoE,EAAM,GAEV,IAAK,IAAI5mB,EAAI,EAAGA,EAAImzC,EAAMt8C,OAAS,EAAGmJ,GAAK,EACzC4mB,GAAO/f,OAAO4oB,aAAa0jB,EAAMnzC,GAAqB,IAAfmzC,EAAMnzC,EAAI,IAEnD,OAAO4mB,CACT,CAiCA,SAASutH,EAAapoH,EAAQqoH,EAAKv9I,GACjC,GAAKk1B,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAIggE,WAAW,sBAC3D,GAAIhgE,EAASqoH,EAAMv9I,EAAQ,MAAM,IAAIk1F,WAAW,wCAClD,CAyQA,SAASsoD,EAAUh4E,EAAKnkE,EAAO6zB,EAAQqoH,EAAKztI,EAAKD,GAC/C,IAAKnN,EAAOy6B,SAASqoC,GAAM,MAAM,IAAIpoC,UAAU,+CAC/C,GAAI/7B,EAAQyO,GAAOzO,EAAQwO,EAAK,MAAM,IAAIqlF,WAAW,qCACrD,GAAIhgE,EAASqoH,EAAM/3E,EAAIxlE,OAAQ,MAAM,IAAIk1F,WAAW,qBACtD,CA+FA,SAASuoD,EAAgBj4E,EAAKnkE,EAAO6zB,EAAQrlB,EAAKC,GAChD4tI,EAAWr8I,EAAOwO,EAAKC,EAAK01D,EAAKtwC,EAAQ,GAEzC,IAAImM,EAAK/T,OAAOjsB,EAAQwC,OAAO,aAC/B2hE,EAAItwC,KAAYmM,EAChBA,IAAW,EACXmkC,EAAItwC,KAAYmM,EAChBA,IAAW,EACXmkC,EAAItwC,KAAYmM,EAChBA,IAAW,EACXmkC,EAAItwC,KAAYmM,EAChB,IAAIe,EAAK9U,OAAOjsB,GAASwC,OAAO,IAAMA,OAAO,aAQ7C,OAPA2hE,EAAItwC,KAAYkN,EAChBA,IAAW,EACXojC,EAAItwC,KAAYkN,EAChBA,IAAW,EACXojC,EAAItwC,KAAYkN,EAChBA,IAAW,EACXojC,EAAItwC,KAAYkN,EACTlN,CACT,CAEA,SAASyoH,EAAgBn4E,EAAKnkE,EAAO6zB,EAAQrlB,EAAKC,GAChD4tI,EAAWr8I,EAAOwO,EAAKC,EAAK01D,EAAKtwC,EAAQ,GAEzC,IAAImM,EAAK/T,OAAOjsB,EAAQwC,OAAO,aAC/B2hE,EAAItwC,EAAS,GAAKmM,EAClBA,IAAW,EACXmkC,EAAItwC,EAAS,GAAKmM,EAClBA,IAAW,EACXmkC,EAAItwC,EAAS,GAAKmM,EAClBA,IAAW,EACXmkC,EAAItwC,EAAS,GAAKmM,EAClB,IAAIe,EAAK9U,OAAOjsB,GAASwC,OAAO,IAAMA,OAAO,aAQ7C,OAPA2hE,EAAItwC,EAAS,GAAKkN,EAClBA,IAAW,EACXojC,EAAItwC,EAAS,GAAKkN,EAClBA,IAAW,EACXojC,EAAItwC,EAAS,GAAKkN,EAClBA,IAAW,EACXojC,EAAItwC,GAAUkN,EACPlN,EAAS,CAClB,CAkHA,SAAS0oH,EAAcp4E,EAAKnkE,EAAO6zB,EAAQqoH,EAAKztI,EAAKD,GACnD,GAAIqlB,EAASqoH,EAAM/3E,EAAIxlE,OAAQ,MAAM,IAAIk1F,WAAW,sBACpD,GAAIhgE,EAAS,EAAG,MAAM,IAAIggE,WAAW,qBACvC,CAEA,SAAS2oD,EAAYr4E,EAAKnkE,EAAO6zB,EAAQ4oH,EAAcC,GAOrD,OANA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GACHH,EAAap4E,EAAKnkE,EAAO6zB,EAAQ,GAEnCsjH,EAAQvvI,MAAMu8D,EAAKnkE,EAAO6zB,EAAQ4oH,EAAc,GAAI,GAC7C5oH,EAAS,CAClB,CAUA,SAAS8oH,EAAax4E,EAAKnkE,EAAO6zB,EAAQ4oH,EAAcC,GAOtD,OANA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GACHH,EAAap4E,EAAKnkE,EAAO6zB,EAAQ,GAEnCsjH,EAAQvvI,MAAMu8D,EAAKnkE,EAAO6zB,EAAQ4oH,EAAc,GAAI,GAC7C5oH,EAAS,CAClB,CAzkBAxyB,EAAOqG,UAAU8C,MAAQ,SAAgBwB,EAAOse,GAC9C,MAAMrb,EAAMnS,KAAK6B,QACjBqN,IAAUA,GAGE,GACVA,GAASiD,GACG,IAAGjD,EAAQ,GACdA,EAAQiD,IACjBjD,EAAQiD,IANVqb,OAAc1rB,IAAR0rB,EAAoBrb,IAAQqb,GASxB,GACRA,GAAOrb,GACG,IAAGqb,EAAM,GACVA,EAAMrb,IACfqb,EAAMrb,GAGJqb,EAAMte,IAAOse,EAAMte,GAEvB,MAAM4wI,EAAS9/I,KAAK4wB,SAAS1hB,EAAOse,GAIpC,OAFAxqB,OAAOknG,eAAe41C,EAAQv7I,EAAOqG,WAE9Bk1I,CACT,EAUAv7I,EAAOqG,UAAUm1I,WACjBx7I,EAAOqG,UAAU6sH,WAAa,SAAqB1gG,EAAQgI,EAAY6gH,GACrE7oH,KAAoB,EACpBgI,KAA4B,EACvB6gH,GAAUT,EAAYpoH,EAAQgI,EAAY/+B,KAAK6B,QAEpD,IAAI8M,EAAM3O,KAAK+2B,GACXiK,EAAM,EACNh2B,EAAI,EACR,OAASA,EAAI+zB,IAAeiC,GAAO,MACjCryB,GAAO3O,KAAK+2B,EAAS/rB,GAAKg2B,EAG5B,OAAOryB,CACT,EAEApK,EAAOqG,UAAUo1I,WACjBz7I,EAAOqG,UAAU+sH,WAAa,SAAqB5gG,EAAQgI,EAAY6gH,GACrE7oH,KAAoB,EACpBgI,KAA4B,EACvB6gH,GACHT,EAAYpoH,EAAQgI,EAAY/+B,KAAK6B,QAGvC,IAAI8M,EAAM3O,KAAK+2B,IAAWgI,GACtBiC,EAAM,EACV,KAAOjC,EAAa,IAAMiC,GAAO,MAC/BryB,GAAO3O,KAAK+2B,IAAWgI,GAAciC,EAGvC,OAAOryB,CACT,EAEApK,EAAOqG,UAAUq1I,UACjB17I,EAAOqG,UAAUs1I,UAAY,SAAoBnpH,EAAQ6oH,GAGvD,OAFA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QACpC7B,KAAK+2B,EACd,EAEAxyB,EAAOqG,UAAUu1I,aACjB57I,EAAOqG,UAAUw1I,aAAe,SAAuBrpH,EAAQ6oH,GAG7D,OAFA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QACpC7B,KAAK+2B,GAAW/2B,KAAK+2B,EAAS,IAAM,CAC7C,EAEAxyB,EAAOqG,UAAUy1I,aACjB97I,EAAOqG,UAAU4kI,aAAe,SAAuBz4G,EAAQ6oH,GAG7D,OAFA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QACnC7B,KAAK+2B,IAAW,EAAK/2B,KAAK+2B,EAAS,EAC7C,EAEAxyB,EAAOqG,UAAU01I,aACjB/7I,EAAOqG,UAAU6tH,aAAe,SAAuB1hG,EAAQ6oH,GAI7D,OAHA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,SAElC7B,KAAK+2B,GACT/2B,KAAK+2B,EAAS,IAAM,EACpB/2B,KAAK+2B,EAAS,IAAM,IACD,SAAnB/2B,KAAK+2B,EAAS,EACrB,EAEAxyB,EAAOqG,UAAU21I,aACjBh8I,EAAOqG,UAAUguH,aAAe,SAAuB7hG,EAAQ6oH,GAI7D,OAHA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QAEpB,SAAf7B,KAAK+2B,IACT/2B,KAAK+2B,EAAS,IAAM,GACrB/2B,KAAK+2B,EAAS,IAAM,EACrB/2B,KAAK+2B,EAAS,GAClB,EAEAxyB,EAAOqG,UAAU41I,gBAAkBC,GAAmB,SAA0B1pH,GAE9E2pH,EADA3pH,KAAoB,EACG,UACvB,MAAMouB,EAAQnlD,KAAK+2B,GACbf,EAAOh2B,KAAK+2B,EAAS,QACbj1B,IAAVqjD,QAAgCrjD,IAATk0B,GACzB2qH,EAAY5pH,EAAQ/2B,KAAK6B,OAAS,GAGpC,MAAMqhC,EAAKiiB,EACQ,IAAjBnlD,OAAO+2B,GACU,MAAjB/2B,OAAO+2B,GACP/2B,OAAO+2B,GAAU,GAAK,GAElBkN,EAAKjkC,OAAO+2B,GACC,IAAjB/2B,OAAO+2B,GACU,MAAjB/2B,OAAO+2B,GACPf,EAAO,GAAK,GAEd,OAAOtwB,OAAOw9B,IAAOx9B,OAAOu+B,IAAOv+B,OAAO,IAC5C,IAEAnB,EAAOqG,UAAUg2I,gBAAkBH,GAAmB,SAA0B1pH,GAE9E2pH,EADA3pH,KAAoB,EACG,UACvB,MAAMouB,EAAQnlD,KAAK+2B,GACbf,EAAOh2B,KAAK+2B,EAAS,QACbj1B,IAAVqjD,QAAgCrjD,IAATk0B,GACzB2qH,EAAY5pH,EAAQ/2B,KAAK6B,OAAS,GAGpC,MAAMoiC,EAAKkhB,EAAQ,GAAK,GACL,MAAjBnlD,OAAO+2B,GACU,IAAjB/2B,OAAO+2B,GACP/2B,OAAO+2B,GAEHmM,EAAKljC,OAAO+2B,GAAU,GAAK,GACd,MAAjB/2B,OAAO+2B,GACU,IAAjB/2B,OAAO+2B,GACPf,EAEF,OAAQtwB,OAAOu+B,IAAOv+B,OAAO,KAAOA,OAAOw9B,EAC7C,IAEA3+B,EAAOqG,UAAUktH,UAAY,SAAoB/gG,EAAQgI,EAAY6gH,GACnE7oH,KAAoB,EACpBgI,KAA4B,EACvB6gH,GAAUT,EAAYpoH,EAAQgI,EAAY/+B,KAAK6B,QAEpD,IAAI8M,EAAM3O,KAAK+2B,GACXiK,EAAM,EACNh2B,EAAI,EACR,OAASA,EAAI+zB,IAAeiC,GAAO,MACjCryB,GAAO3O,KAAK+2B,EAAS/rB,GAAKg2B,EAM5B,OAJAA,GAAO,IAEHryB,GAAOqyB,IAAKryB,GAAOvF,KAAK8O,IAAI,EAAG,EAAI6mB,IAEhCpwB,CACT,EAEApK,EAAOqG,UAAUqtH,UAAY,SAAoBlhG,EAAQgI,EAAY6gH,GACnE7oH,KAAoB,EACpBgI,KAA4B,EACvB6gH,GAAUT,EAAYpoH,EAAQgI,EAAY/+B,KAAK6B,QAEpD,IAAImJ,EAAI+zB,EACJiC,EAAM,EACNryB,EAAM3O,KAAK+2B,IAAW/rB,GAC1B,KAAOA,EAAI,IAAMg2B,GAAO,MACtBryB,GAAO3O,KAAK+2B,IAAW/rB,GAAKg2B,EAM9B,OAJAA,GAAO,IAEHryB,GAAOqyB,IAAKryB,GAAOvF,KAAK8O,IAAI,EAAG,EAAI6mB,IAEhCpwB,CACT,EAEApK,EAAOqG,UAAUi2I,SAAW,SAAmB9pH,EAAQ6oH,GAGrD,OAFA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QACtB,IAAf7B,KAAK+2B,IAC0B,GAA5B,IAAO/2B,KAAK+2B,GAAU,GADK/2B,KAAK+2B,EAE3C,EAEAxyB,EAAOqG,UAAUk2I,YAAc,SAAsB/pH,EAAQ6oH,GAC3D7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QAC3C,MAAM8M,EAAM3O,KAAK+2B,GAAW/2B,KAAK+2B,EAAS,IAAM,EAChD,OAAc,MAANpoB,EAAsB,WAANA,EAAmBA,CAC7C,EAEApK,EAAOqG,UAAUm2I,YAAc,SAAsBhqH,EAAQ6oH,GAC3D7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QAC3C,MAAM8M,EAAM3O,KAAK+2B,EAAS,GAAM/2B,KAAK+2B,IAAW,EAChD,OAAc,MAANpoB,EAAsB,WAANA,EAAmBA,CAC7C,EAEApK,EAAOqG,UAAUmuH,YAAc,SAAsBhiG,EAAQ6oH,GAI3D,OAHA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QAEnC7B,KAAK+2B,GACV/2B,KAAK+2B,EAAS,IAAM,EACpB/2B,KAAK+2B,EAAS,IAAM,GACpB/2B,KAAK+2B,EAAS,IAAM,EACzB,EAEAxyB,EAAOqG,UAAUsuH,YAAc,SAAsBniG,EAAQ6oH,GAI3D,OAHA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QAEnC7B,KAAK+2B,IAAW,GACrB/2B,KAAK+2B,EAAS,IAAM,GACpB/2B,KAAK+2B,EAAS,IAAM,EACpB/2B,KAAK+2B,EAAS,EACnB,EAEAxyB,EAAOqG,UAAUo2I,eAAiBP,GAAmB,SAAyB1pH,GAE5E2pH,EADA3pH,KAAoB,EACG,UACvB,MAAMouB,EAAQnlD,KAAK+2B,GACbf,EAAOh2B,KAAK+2B,EAAS,QACbj1B,IAAVqjD,QAAgCrjD,IAATk0B,GACzB2qH,EAAY5pH,EAAQ/2B,KAAK6B,OAAS,GAGpC,MAAM8M,EAAM3O,KAAK+2B,EAAS,GACL,IAAnB/2B,KAAK+2B,EAAS,GACK,MAAnB/2B,KAAK+2B,EAAS,IACbf,GAAQ,IAEX,OAAQtwB,OAAOiJ,IAAQjJ,OAAO,KAC5BA,OAAOy/C,EACU,IAAjBnlD,OAAO+2B,GACU,MAAjB/2B,OAAO+2B,GACP/2B,OAAO+2B,GAAU,GAAK,GAC1B,IAEAxyB,EAAOqG,UAAUq2I,eAAiBR,GAAmB,SAAyB1pH,GAE5E2pH,EADA3pH,KAAoB,EACG,UACvB,MAAMouB,EAAQnlD,KAAK+2B,GACbf,EAAOh2B,KAAK+2B,EAAS,QACbj1B,IAAVqjD,QAAgCrjD,IAATk0B,GACzB2qH,EAAY5pH,EAAQ/2B,KAAK6B,OAAS,GAGpC,MAAM8M,GAAOw2C,GAAS,IACH,MAAjBnlD,OAAO+2B,GACU,IAAjB/2B,OAAO+2B,GACP/2B,OAAO+2B,GAET,OAAQrxB,OAAOiJ,IAAQjJ,OAAO,KAC5BA,OAAO1F,OAAO+2B,GAAU,GAAK,GACZ,MAAjB/2B,OAAO+2B,GACU,IAAjB/2B,OAAO+2B,GACPf,EACJ,IAEAzxB,EAAOqG,UAAUwuH,YAAc,SAAsBriG,EAAQ6oH,GAG3D,OAFA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QACpCw4I,EAAQhhG,KAAKr5C,KAAM+2B,GAAQ,EAAM,GAAI,EAC9C,EAEAxyB,EAAOqG,UAAU2uH,YAAc,SAAsBxiG,EAAQ6oH,GAG3D,OAFA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QACpCw4I,EAAQhhG,KAAKr5C,KAAM+2B,GAAQ,EAAO,GAAI,EAC/C,EAEAxyB,EAAOqG,UAAU8uH,aAAe,SAAuB3iG,EAAQ6oH,GAG7D,OAFA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QACpCw4I,EAAQhhG,KAAKr5C,KAAM+2B,GAAQ,EAAM,GAAI,EAC9C,EAEAxyB,EAAOqG,UAAUivH,aAAe,SAAuB9iG,EAAQ6oH,GAG7D,OAFA7oH,KAAoB,EACf6oH,GAAUT,EAAYpoH,EAAQ,EAAG/2B,KAAK6B,QACpCw4I,EAAQhhG,KAAKr5C,KAAM+2B,GAAQ,EAAO,GAAI,EAC/C,EAQAxyB,EAAOqG,UAAUs2I,YACjB38I,EAAOqG,UAAU8sH,YAAc,SAAsBx0H,EAAO6zB,EAAQgI,EAAY6gH,GAI9E,GAHA18I,GAASA,EACT6zB,KAAoB,EACpBgI,KAA4B,GACvB6gH,EAAU,CAEbP,EAASr/I,KAAMkD,EAAO6zB,EAAQgI,EADb31B,KAAK8O,IAAI,EAAG,EAAI6mB,GAAc,EACK,EACtD,CAEA,IAAIiC,EAAM,EACNh2B,EAAI,EAER,IADAhL,KAAK+2B,GAAkB,IAAR7zB,IACN8H,EAAI+zB,IAAeiC,GAAO,MACjChhC,KAAK+2B,EAAS/rB,GAAM9H,EAAQ89B,EAAO,IAGrC,OAAOjK,EAASgI,CAClB,EAEAx6B,EAAOqG,UAAUu2I,YACjB58I,EAAOqG,UAAUgtH,YAAc,SAAsB10H,EAAO6zB,EAAQgI,EAAY6gH,GAI9E,GAHA18I,GAASA,EACT6zB,KAAoB,EACpBgI,KAA4B,GACvB6gH,EAAU,CAEbP,EAASr/I,KAAMkD,EAAO6zB,EAAQgI,EADb31B,KAAK8O,IAAI,EAAG,EAAI6mB,GAAc,EACK,EACtD,CAEA,IAAI/zB,EAAI+zB,EAAa,EACjBiC,EAAM,EAEV,IADAhhC,KAAK+2B,EAAS/rB,GAAa,IAAR9H,IACV8H,GAAK,IAAMg2B,GAAO,MACzBhhC,KAAK+2B,EAAS/rB,GAAM9H,EAAQ89B,EAAO,IAGrC,OAAOjK,EAASgI,CAClB,EAEAx6B,EAAOqG,UAAUw2I,WACjB78I,EAAOqG,UAAUy2I,WAAa,SAAqBn+I,EAAO6zB,EAAQ6oH,GAKhE,OAJA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,IAAM,GACtD/2B,KAAK+2B,GAAmB,IAAR7zB,EACT6zB,EAAS,CAClB,EAEAxyB,EAAOqG,UAAU02I,cACjB/8I,EAAOqG,UAAU22I,cAAgB,SAAwBr+I,EAAO6zB,EAAQ6oH,GAMtE,OALA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,MAAQ,GACxD/2B,KAAK+2B,GAAmB,IAAR7zB,EAChBlD,KAAK+2B,EAAS,GAAM7zB,IAAU,EACvB6zB,EAAS,CAClB,EAEAxyB,EAAOqG,UAAU42I,cACjBj9I,EAAOqG,UAAU62I,cAAgB,SAAwBv+I,EAAO6zB,EAAQ6oH,GAMtE,OALA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,MAAQ,GACxD/2B,KAAK+2B,GAAW7zB,IAAU,EAC1BlD,KAAK+2B,EAAS,GAAc,IAAR7zB,EACb6zB,EAAS,CAClB,EAEAxyB,EAAOqG,UAAU82I,cACjBn9I,EAAOqG,UAAU8tH,cAAgB,SAAwBx1H,EAAO6zB,EAAQ6oH,GAQtE,OAPA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,WAAY,GAC5D/2B,KAAK+2B,EAAS,GAAM7zB,IAAU,GAC9BlD,KAAK+2B,EAAS,GAAM7zB,IAAU,GAC9BlD,KAAK+2B,EAAS,GAAM7zB,IAAU,EAC9BlD,KAAK+2B,GAAmB,IAAR7zB,EACT6zB,EAAS,CAClB,EAEAxyB,EAAOqG,UAAU+2I,cACjBp9I,EAAOqG,UAAUiuH,cAAgB,SAAwB31H,EAAO6zB,EAAQ6oH,GAQtE,OAPA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,WAAY,GAC5D/2B,KAAK+2B,GAAW7zB,IAAU,GAC1BlD,KAAK+2B,EAAS,GAAM7zB,IAAU,GAC9BlD,KAAK+2B,EAAS,GAAM7zB,IAAU,EAC9BlD,KAAK+2B,EAAS,GAAc,IAAR7zB,EACb6zB,EAAS,CAClB,EA8CAxyB,EAAOqG,UAAUg3I,iBAAmBnB,GAAmB,SAA2Bv9I,GAChF,OAAOo8I,EAAet/I,KAAMkD,EADiEtB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACrD8D,OAAO,GAAIA,OAAO,sBAC/D,IAEAnB,EAAOqG,UAAUi3I,iBAAmBpB,GAAmB,SAA2Bv9I,GAChF,OAAOs8I,EAAex/I,KAAMkD,EADiEtB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACrD8D,OAAO,GAAIA,OAAO,sBAC/D,IAEAnB,EAAOqG,UAAUmtH,WAAa,SAAqB70H,EAAO6zB,EAAQgI,EAAY6gH,GAG5E,GAFA18I,GAASA,EACT6zB,KAAoB,GACf6oH,EAAU,CACb,MAAM7sE,EAAQ3pE,KAAK8O,IAAI,EAAI,EAAI6mB,EAAc,GAE7CsgH,EAASr/I,KAAMkD,EAAO6zB,EAAQgI,EAAYg0C,EAAQ,GAAIA,EACxD,CAEA,IAAI/nE,EAAI,EACJg2B,EAAM,EACN+E,EAAM,EAEV,IADA/lC,KAAK+2B,GAAkB,IAAR7zB,IACN8H,EAAI+zB,IAAeiC,GAAO,MAC7B99B,EAAQ,GAAa,IAAR6iC,GAAsC,IAAzB/lC,KAAK+2B,EAAS/rB,EAAI,KAC9C+6B,EAAM,GAER/lC,KAAK+2B,EAAS/rB,IAAO9H,EAAQ89B,EAAQ,GAAK+E,EAAM,IAGlD,OAAOhP,EAASgI,CAClB,EAEAx6B,EAAOqG,UAAUstH,WAAa,SAAqBh1H,EAAO6zB,EAAQgI,EAAY6gH,GAG5E,GAFA18I,GAASA,EACT6zB,KAAoB,GACf6oH,EAAU,CACb,MAAM7sE,EAAQ3pE,KAAK8O,IAAI,EAAI,EAAI6mB,EAAc,GAE7CsgH,EAASr/I,KAAMkD,EAAO6zB,EAAQgI,EAAYg0C,EAAQ,GAAIA,EACxD,CAEA,IAAI/nE,EAAI+zB,EAAa,EACjBiC,EAAM,EACN+E,EAAM,EAEV,IADA/lC,KAAK+2B,EAAS/rB,GAAa,IAAR9H,IACV8H,GAAK,IAAMg2B,GAAO,MACrB99B,EAAQ,GAAa,IAAR6iC,GAAsC,IAAzB/lC,KAAK+2B,EAAS/rB,EAAI,KAC9C+6B,EAAM,GAER/lC,KAAK+2B,EAAS/rB,IAAO9H,EAAQ89B,EAAQ,GAAK+E,EAAM,IAGlD,OAAOhP,EAASgI,CAClB,EAEAx6B,EAAOqG,UAAUk3I,UAAY,SAAoB5+I,EAAO6zB,EAAQ6oH,GAM9D,OALA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,KAAO,KACnD7zB,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtClD,KAAK+2B,GAAmB,IAAR7zB,EACT6zB,EAAS,CAClB,EAEAxyB,EAAOqG,UAAUm3I,aAAe,SAAuB7+I,EAAO6zB,EAAQ6oH,GAMpE,OALA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,OAAS,OACzD/2B,KAAK+2B,GAAmB,IAAR7zB,EAChBlD,KAAK+2B,EAAS,GAAM7zB,IAAU,EACvB6zB,EAAS,CAClB,EAEAxyB,EAAOqG,UAAUo3I,aAAe,SAAuB9+I,EAAO6zB,EAAQ6oH,GAMpE,OALA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,OAAS,OACzD/2B,KAAK+2B,GAAW7zB,IAAU,EAC1BlD,KAAK+2B,EAAS,GAAc,IAAR7zB,EACb6zB,EAAS,CAClB,EAEAxyB,EAAOqG,UAAUouH,aAAe,SAAuB91H,EAAO6zB,EAAQ6oH,GAQpE,OAPA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,YAAa,YAC7D/2B,KAAK+2B,GAAmB,IAAR7zB,EAChBlD,KAAK+2B,EAAS,GAAM7zB,IAAU,EAC9BlD,KAAK+2B,EAAS,GAAM7zB,IAAU,GAC9BlD,KAAK+2B,EAAS,GAAM7zB,IAAU,GACvB6zB,EAAS,CAClB,EAEAxyB,EAAOqG,UAAUghH,aAAe,SAAuB1oH,EAAO6zB,EAAQ6oH,GASpE,OARA18I,GAASA,EACT6zB,KAAoB,EACf6oH,GAAUP,EAASr/I,KAAMkD,EAAO6zB,EAAQ,EAAG,YAAa,YACzD7zB,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5ClD,KAAK+2B,GAAW7zB,IAAU,GAC1BlD,KAAK+2B,EAAS,GAAM7zB,IAAU,GAC9BlD,KAAK+2B,EAAS,GAAM7zB,IAAU,EAC9BlD,KAAK+2B,EAAS,GAAc,IAAR7zB,EACb6zB,EAAS,CAClB,EAEAxyB,EAAOqG,UAAUq3I,gBAAkBxB,GAAmB,SAA0Bv9I,GAC9E,OAAOo8I,EAAet/I,KAAMkD,EAD+DtB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAClD8D,OAAO,sBAAuBA,OAAO,sBACnF,IAEAnB,EAAOqG,UAAUs3I,gBAAkBzB,GAAmB,SAA0Bv9I,GAC9E,OAAOs8I,EAAex/I,KAAMkD,EAD+DtB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAClD8D,OAAO,sBAAuBA,OAAO,sBACnF,IAiBAnB,EAAOqG,UAAUyuH,aAAe,SAAuBn2H,EAAO6zB,EAAQ6oH,GACpE,OAAOF,EAAW1/I,KAAMkD,EAAO6zB,GAAQ,EAAM6oH,EAC/C,EAEAr7I,EAAOqG,UAAU4uH,aAAe,SAAuBt2H,EAAO6zB,EAAQ6oH,GACpE,OAAOF,EAAW1/I,KAAMkD,EAAO6zB,GAAQ,EAAO6oH,EAChD,EAYAr7I,EAAOqG,UAAU+uH,cAAgB,SAAwBz2H,EAAO6zB,EAAQ6oH,GACtE,OAAOC,EAAY7/I,KAAMkD,EAAO6zB,GAAQ,EAAM6oH,EAChD,EAEAr7I,EAAOqG,UAAUkvH,cAAgB,SAAwB52H,EAAO6zB,EAAQ6oH,GACtE,OAAOC,EAAY7/I,KAAMkD,EAAO6zB,GAAQ,EAAO6oH,EACjD,EAGAr7I,EAAOqG,UAAU2M,KAAO,SAAe1L,EAAQs2I,EAAajzI,EAAOse,GACjE,IAAKjpB,EAAOy6B,SAASnzB,GAAS,MAAM,IAAIozB,UAAU,+BAQlD,GAPK/vB,IAAOA,EAAQ,GACfse,GAAe,IAARA,IAAWA,EAAMxtB,KAAK6B,QAC9BsgJ,GAAet2I,EAAOhK,SAAQsgJ,EAAct2I,EAAOhK,QAClDsgJ,IAAaA,EAAc,GAC5B30H,EAAM,GAAKA,EAAMte,IAAOse,EAAMte,GAG9Bse,IAAQte,EAAO,OAAO,EAC1B,GAAsB,IAAlBrD,EAAOhK,QAAgC,IAAhB7B,KAAK6B,OAAc,OAAO,EAGrD,GAAIsgJ,EAAc,EAChB,MAAM,IAAIprD,WAAW,6BAEvB,GAAI7nF,EAAQ,GAAKA,GAASlP,KAAK6B,OAAQ,MAAM,IAAIk1F,WAAW,sBAC5D,GAAIvpE,EAAM,EAAG,MAAM,IAAIupE,WAAW,2BAG9BvpE,EAAMxtB,KAAK6B,SAAQ2rB,EAAMxtB,KAAK6B,QAC9BgK,EAAOhK,OAASsgJ,EAAc30H,EAAMte,IACtCse,EAAM3hB,EAAOhK,OAASsgJ,EAAcjzI,GAGtC,MAAMiD,EAAMqb,EAAMte,EAalB,OAXIlP,OAAS6L,GAAqD,oBAApCykB,WAAW1lB,UAAUw3I,WAEjDpiJ,KAAKoiJ,WAAWD,EAAajzI,EAAOse,GAEpC8C,WAAW1lB,UAAU0L,IAAIQ,KACvBjL,EACA7L,KAAK4wB,SAAS1hB,EAAOse,GACrB20H,GAIGhwI,CACT,EAMA5N,EAAOqG,UAAUqmB,KAAO,SAAetiB,EAAKO,EAAOse,EAAK2G,GAEtD,GAAmB,kBAARxlB,EAAkB,CAS3B,GARqB,kBAAVO,GACTilB,EAAWjlB,EACXA,EAAQ,EACRse,EAAMxtB,KAAK6B,QACa,kBAAR2rB,IAChB2G,EAAW3G,EACXA,EAAMxtB,KAAK6B,aAEIC,IAAbqyB,GAA8C,kBAAbA,EACnC,MAAM,IAAI8K,UAAU,6BAEtB,GAAwB,kBAAb9K,IAA0B5vB,EAAOq2I,WAAWzmH,GACrD,MAAM,IAAI8K,UAAU,qBAAuB9K,GAE7C,GAAmB,IAAfxlB,EAAI9M,OAAc,CACpB,MAAM6sD,EAAO//C,EAAImC,WAAW,IACV,SAAbqjB,GAAuBu6B,EAAO,KAClB,WAAbv6B,KAEFxlB,EAAM+/C,EAEV,CACF,KAA0B,kBAAR//C,EAChBA,GAAY,IACY,mBAARA,IAChBA,EAAMwgB,OAAOxgB,IAIf,GAAIO,EAAQ,GAAKlP,KAAK6B,OAASqN,GAASlP,KAAK6B,OAAS2rB,EACpD,MAAM,IAAIupE,WAAW,sBAGvB,GAAIvpE,GAAOte,EACT,OAAOlP,KAQT,IAAIgL,EACJ,GANAkE,KAAkB,EAClBse,OAAc1rB,IAAR0rB,EAAoBxtB,KAAK6B,OAAS2rB,IAAQ,EAE3C7e,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAK3D,EAAIkE,EAAOlE,EAAIwiB,IAAOxiB,EACzBhL,KAAKgL,GAAK2D,MAEP,CACL,MAAMwvC,EAAQ55C,EAAOy6B,SAASrwB,GAC1BA,EACApK,EAAOC,KAAKmK,EAAKwlB,GACfhiB,EAAMgsC,EAAMt8C,OAClB,GAAY,IAARsQ,EACF,MAAM,IAAI8sB,UAAU,cAAgBtwB,EAClC,qCAEJ,IAAK3D,EAAI,EAAGA,EAAIwiB,EAAMte,IAASlE,EAC7BhL,KAAKgL,EAAIkE,GAASivC,EAAMnzC,EAAImH,EAEhC,CAEA,OAAOnS,IACT,EAMA,MAAMqiJ,EAAS,CAAC,EAChB,SAASt9F,EAAGjsB,EAAKwpH,EAAYC,GAC3BF,EAAOvpH,GAAO,cAAwBypH,EACpCt0I,WAAAA,GACE7H,QAEApD,OAAOC,eAAejD,KAAM,UAAW,CACrCkD,MAAOo/I,EAAWjrE,MAAMr3E,KAAM4B,WAC9B4zD,UAAU,EACVC,cAAc,IAIhBz1D,KAAK4R,KAAO,GAAG5R,KAAK4R,SAASknB,KAG7B94B,KAAKoqG,aAEEpqG,KAAK4R,IACd,CAEA,QAAI88C,GACF,OAAO51B,CACT,CAEA,QAAI41B,CAAMxrD,GACRF,OAAOC,eAAejD,KAAM,OAAQ,CAClCy1D,cAAc,EACd/4B,YAAY,EACZx5B,QACAsyD,UAAU,GAEd,CAEA/wD,QAAAA,GACE,MAAO,GAAGzE,KAAK4R,SAASknB,OAAS94B,KAAKiuB,SACxC,EAEJ,CA+BA,SAASu0H,EAAuB7zI,GAC9B,IAAIijB,EAAM,GACN5mB,EAAI2D,EAAI9M,OACZ,MAAMqN,EAAmB,MAAXP,EAAI,GAAa,EAAI,EACnC,KAAO3D,GAAKkE,EAAQ,EAAGlE,GAAK,EAC1B4mB,EAAM,IAAIjjB,EAAIjB,MAAM1C,EAAI,EAAGA,KAAK4mB,IAElC,MAAO,GAAGjjB,EAAIjB,MAAM,EAAG1C,KAAK4mB,GAC9B,CAYA,SAAS2tH,EAAYr8I,EAAOwO,EAAKC,EAAK01D,EAAKtwC,EAAQgI,GACjD,GAAI77B,EAAQyO,GAAOzO,EAAQwO,EAAK,CAC9B,MAAMnB,EAAmB,kBAARmB,EAAmB,IAAM,GAC1C,IAAI+wI,EAWJ,MARIA,EAFA1jH,EAAa,EACH,IAARrtB,GAAaA,IAAQhM,OAAO,GACtB,OAAO6K,YAAYA,QAA2B,GAAlBwuB,EAAa,KAASxuB,IAElD,SAASA,QAA2B,GAAlBwuB,EAAa,GAAS,IAAIxuB,iBACtB,GAAlBwuB,EAAa,GAAS,IAAIxuB,IAGhC,MAAMmB,IAAMnB,YAAYoB,IAAMpB,IAElC,IAAI8xI,EAAOK,iBAAiB,QAASD,EAAOv/I,EACpD,EAtBF,SAAsBmkE,EAAKtwC,EAAQgI,GACjC2hH,EAAe3pH,EAAQ,eACHj1B,IAAhBulE,EAAItwC,SAAsDj1B,IAA7BulE,EAAItwC,EAASgI,IAC5C4hH,EAAY5pH,EAAQswC,EAAIxlE,QAAUk9B,EAAa,GAEnD,CAkBE4jH,CAAYt7E,EAAKtwC,EAAQgI,EAC3B,CAEA,SAAS2hH,EAAgBx9I,EAAO0O,GAC9B,GAAqB,kBAAV1O,EACT,MAAM,IAAIm/I,EAAOO,qBAAqBhxI,EAAM,SAAU1O,EAE1D,CAEA,SAASy9I,EAAaz9I,EAAOrB,EAAQ8F,GACnC,GAAIyB,KAAKC,MAAMnG,KAAWA,EAExB,MADAw9I,EAAex9I,EAAOyE,GAChB,IAAI06I,EAAOK,iBAAiB/6I,GAAQ,SAAU,aAAczE,GAGpE,GAAIrB,EAAS,EACX,MAAM,IAAIwgJ,EAAOQ,yBAGnB,MAAM,IAAIR,EAAOK,iBAAiB/6I,GAAQ,SACR,MAAMA,EAAO,EAAI,YAAY9F,IAC7BqB,EACpC,CAvFA6hD,EAAE,4BACA,SAAUnzC,GACR,OAAIA,EACK,GAAGA,gCAGL,gDACT,GAAGmlF,YACLhyC,EAAE,wBACA,SAAUnzC,EAAMipI,GACd,MAAO,QAAQjpI,4DAA+DipI,GAChF,GAAG57G,WACL8lB,EAAE,oBACA,SAAU/yC,EAAKywI,EAAOxiJ,GACpB,IAAIQ,EAAM,iBAAiBuR,sBACvB8wI,EAAW7iJ,EAWf,OAVIkvB,OAAO/T,UAAUnb,IAAUmJ,KAAKoR,IAAIva,GAAS,GAAK,GACpD6iJ,EAAWN,EAAsB3wI,OAAO5R,IACd,kBAAVA,IAChB6iJ,EAAWjxI,OAAO5R,IACdA,EAAQyF,OAAO,IAAMA,OAAO,KAAOzF,IAAUyF,OAAO,IAAMA,OAAO,QACnEo9I,EAAWN,EAAsBM,IAEnCA,GAAY,KAEdriJ,GAAO,eAAegiJ,eAAmBK,IAClCriJ,CACT,GAAGs2F,YAiEL,MAAMgsD,EAAoB,oBAgB1B,SAAS5lC,EAAax8E,EAAQy8G,GAE5B,IAAII,EADJJ,EAAQA,GAASxjG,IAEjB,MAAM/3C,EAAS8+B,EAAO9+B,OACtB,IAAImhJ,EAAgB,KACpB,MAAM7kG,EAAQ,GAEd,IAAK,IAAInzC,EAAI,EAAGA,EAAInJ,IAAUmJ,EAAG,CAI/B,GAHAwyI,EAAY78G,EAAO7vB,WAAW9F,GAG1BwyI,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAKwF,EAAe,CAElB,GAAIxF,EAAY,MAAQ,EAEjBJ,GAAS,IAAM,GAAGj/F,EAAM72C,KAAK,IAAM,IAAM,KAC9C,QACF,CAAO,GAAI0D,EAAI,IAAMnJ,EAAQ,EAEtBu7I,GAAS,IAAM,GAAGj/F,EAAM72C,KAAK,IAAM,IAAM,KAC9C,QACF,CAGA07I,EAAgBxF,EAEhB,QACF,CAGA,GAAIA,EAAY,MAAQ,EACjBJ,GAAS,IAAM,GAAGj/F,EAAM72C,KAAK,IAAM,IAAM,KAC9C07I,EAAgBxF,EAChB,QACF,CAGAA,EAAkE,OAArDwF,EAAgB,OAAU,GAAKxF,EAAY,MAC1D,MAAWwF,IAEJ5F,GAAS,IAAM,GAAGj/F,EAAM72C,KAAK,IAAM,IAAM,KAMhD,GAHA07I,EAAgB,KAGZxF,EAAY,IAAM,CACpB,IAAKJ,GAAS,GAAK,EAAG,MACtBj/F,EAAM72C,KAAKk2I,EACb,MAAO,GAAIA,EAAY,KAAO,CAC5B,IAAKJ,GAAS,GAAK,EAAG,MACtBj/F,EAAM72C,KACJk2I,GAAa,EAAM,IACP,GAAZA,EAAmB,IAEvB,MAAO,GAAIA,EAAY,MAAS,CAC9B,IAAKJ,GAAS,GAAK,EAAG,MACtBj/F,EAAM72C,KACJk2I,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAEvB,KAAO,MAAIA,EAAY,SASrB,MAAM,IAAI35I,MAAM,sBARhB,IAAKu5I,GAAS,GAAK,EAAG,MACtBj/F,EAAM72C,KACJk2I,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAIvB,CACF,CAEA,OAAOr/F,CACT,CA2BA,SAASw9F,EAAe3pI,GACtB,OAAOooI,EAAO6I,YAxHhB,SAAsBjxI,GAMpB,IAFAA,GAFAA,EAAMA,EAAIzJ,MAAM,KAAK,IAEX0E,OAAOD,QAAQ+1I,EAAmB,KAEpClhJ,OAAS,EAAG,MAAO,GAE3B,KAAOmQ,EAAInQ,OAAS,IAAM,GACxBmQ,GAAY,IAEd,OAAOA,CACT,CA4G4BkxI,CAAYlxI,GACxC,CAEA,SAAS8qI,EAAY9jH,EAAK3J,EAAK0H,EAAQl1B,GACrC,IAAImJ,EACJ,IAAKA,EAAI,EAAGA,EAAInJ,KACTmJ,EAAI+rB,GAAU1H,EAAIxtB,QAAYmJ,GAAKguB,EAAIn3B,UADpBmJ,EAExBqkB,EAAIrkB,EAAI+rB,GAAUiC,EAAIhuB,GAExB,OAAOA,CACT,CAKA,SAAS+vI,EAAYnsI,EAAKjH,GACxB,OAAOiH,aAAejH,GACZ,MAAPiH,GAAkC,MAAnBA,EAAIX,aAA+C,MAAxBW,EAAIX,YAAY2D,MACzDhD,EAAIX,YAAY2D,OAASjK,EAAKiK,IACpC,CACA,SAASypI,EAAazsI,GAEpB,OAAOA,IAAQA,CACjB,CAIA,MAAMswI,EAAuB,WAC3B,MAAMhrI,EAAW,mBACX46D,EAAQ,IAAI3kE,MAAM,KACxB,IAAK,IAAIa,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,MAAMm4I,EAAU,GAAJn4I,EACZ,IAAK,IAAI4F,EAAI,EAAGA,EAAI,KAAMA,EACxBk+D,EAAMq0E,EAAMvyI,GAAKsD,EAASlJ,GAAKkJ,EAAStD,EAE5C,CACA,OAAOk+D,CACT,CAV6B,GAa7B,SAAS2xE,EAAoB1pC,GAC3B,MAAyB,qBAAXrxG,OAAyB09I,EAAyBrsC,CAClE,CAEA,SAASqsC,IACP,MAAM,IAAIv/I,MAAM,uBAClB,0BCrjEA,IAAIw2E,EAAQ,CAAC,EAEb,SAASgpE,EAAgB30F,EAAMzgC,EAASs0H,GACjCA,IACHA,EAAO1+I,OAWT,IAAIy/I,EAEJ,SAAUC,GAnBZ,IAAwBC,EAAUC,EAsB9B,SAASH,EAAUI,EAAMC,EAAMC,GAC7B,OAAOL,EAAMzsI,KAAK9W,KAdtB,SAAoB0jJ,EAAMC,EAAMC,GAC9B,MAAuB,kBAAZ31H,EACFA,EAEAA,EAAQy1H,EAAMC,EAAMC,EAE/B,CAQ4BtB,CAAWoB,EAAMC,EAAMC,KAAU5jJ,IAC3D,CAEA,OA1B8ByjJ,EAoBJF,GApBNC,EAoBLF,GApBsC14I,UAAY5H,OAAO0G,OAAO+5I,EAAW74I,WAAY44I,EAAS54I,UAAUqD,YAAcu1I,EAAUA,EAASjsC,UAAYksC,EA0B/JH,CACT,CARA,CAQEf,GAEFe,EAAU14I,UAAUgH,KAAO2wI,EAAK3wI,KAChC0xI,EAAU14I,UAAU8jD,KAAOA,EAC3B2rB,EAAM3rB,GAAQ40F,CAChB,CAGA,SAASO,EAAMC,EAAUC,GACvB,GAAI55I,MAAMi3B,QAAQ0iH,GAAW,CAC3B,IAAI3xI,EAAM2xI,EAASjiJ,OAKnB,OAJAiiJ,EAAWA,EAASp7I,KAAI,SAAUsC,GAChC,OAAO6G,OAAO7G,EAChB,IAEImH,EAAM,EACD,UAAUgG,OAAO4rI,EAAO,KAAK5rI,OAAO2rI,EAASp2I,MAAM,EAAGyE,EAAM,GAAG+qD,KAAK,MAAO,SAAW4mF,EAAS3xI,EAAM,GAC3F,IAARA,EACF,UAAUgG,OAAO4rI,EAAO,KAAK5rI,OAAO2rI,EAAS,GAAI,QAAQ3rI,OAAO2rI,EAAS,IAEzE,MAAM3rI,OAAO4rI,EAAO,KAAK5rI,OAAO2rI,EAAS,GAEpD,CACE,MAAO,MAAM3rI,OAAO4rI,EAAO,KAAK5rI,OAAOtG,OAAOiyI,GAElD,CA6BAT,EAAgB,yBAAyB,SAAUzxI,EAAM1O,GACvD,MAAO,cAAgBA,EAAQ,4BAA8B0O,EAAO,GACtE,GAAGqtB,WACHokH,EAAgB,wBAAwB,SAAUzxI,EAAMkyI,EAAUjJ,GAEhE,IAAImJ,EA/BmBxvI,EAAQ2b,EAwC3B1vB,EAEJ,GATwB,kBAAbqjJ,IAjCYtvI,EAiCkC,OAAVsvI,EAhCpC54I,QAAQilB,GAAOA,EAAM,EAAI,GAAKA,EAAK3b,EAAO3S,UAAY2S,IAiC/DwvI,EAAa,cACbF,EAAWA,EAAS92I,QAAQ,QAAS,KAErCg3I,EAAa,UAhCjB,SAAkBhyI,EAAKwC,EAAQyvI,GAK7B,YAJiBniJ,IAAbmiJ,GAA0BA,EAAWjyI,EAAInQ,UAC3CoiJ,EAAWjyI,EAAInQ,QAGVmQ,EAAIlJ,UAAUm7I,EAAWzvI,EAAO3S,OAAQoiJ,KAAczvI,CAC/D,CA+BMiyE,CAAS70E,EAAM,aAEjBnR,EAAM,OAAO0X,OAAOvG,EAAM,KAAKuG,OAAO6rI,EAAY,KAAK7rI,OAAO0rI,EAAMC,EAAU,aACzE,CACL,IAAIn8I,EAhCR,SAAkBqK,EAAKwC,EAAQtF,GAK7B,MAJqB,kBAAVA,IACTA,EAAQ,KAGNA,EAAQsF,EAAO3S,OAASmQ,EAAInQ,UAGS,IAAhCmQ,EAAIuC,QAAQC,EAAQtF,EAE/B,CAsBe4wC,CAASluC,EAAM,KAAO,WAAa,WAC9CnR,EAAM,QAAS0X,OAAOvG,EAAM,MAAOuG,OAAOxQ,EAAM,KAAKwQ,OAAO6rI,EAAY,KAAK7rI,OAAO0rI,EAAMC,EAAU,QACtG,CAGA,OADArjJ,GAAO,mBAAmB0X,cAAc0iI,EAE1C,GAAG57G,WACHokH,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAUzxI,GACtD,MAAO,OAASA,EAAO,4BACzB,IACAyxI,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAUzxI,GAChD,MAAO,eAAiBA,EAAO,+BACjC,IACAyxI,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuCpkH,WACjFokH,EAAgB,wBAAwB,SAAUxmC,GAChD,MAAO,qBAAuBA,CAChC,GAAG59E,WACHokH,EAAgB,qCAAsC,oCACtDtjJ,EAAOD,QAAQ,EAAQu6E,mcC9HvB,MAAAroD,EAAAlxB,EAAA,OACAojJ,EAAApjJ,EAAA,OACAqjJ,EAAArjJ,EAAA,OAEAy/D,EAAAz/D,EAAA,OAEA,SAASsjJ,EAAmBhyH,EAAeF,GACzC,MAAMD,EAAa,GAGboyH,EAAgBryH,EAAU7R,OAAOwN,KAAKC,UAAUsE,IACtDD,EAAW3qB,KAAK+8I,GAGhB,MAAMC,EAAiBtyH,EAAU7R,OAAOwN,KAAKC,UAAUwE,IACvDH,EAAW3qB,KAAKg9I,GAMhB,OAHqBryH,EAAWirC,KAAK,IAIvC,CAEAp9D,EAAAA,qBAAA,SAAqCsyB,GAEnC,OAAOgyH,EAAmBhyH,EADX,CAAEmyH,IAAK,MAAOC,IAAK,SACW,GAC/C,EAQA1kJ,EAAAA,YAAA,MAKEmO,WAAAA,CAAYw2I,EAA0BC,GACpC,IAAMD,IAAoBC,EACxB,MAAM,IAAIP,EAAAQ,uBAAuB,oDAEnC,GAAgC,kBAArBF,EACT,MAAM,IAAI5gJ,MAAM,gDAGlB,GADA4gJ,EAAmBA,EAAiB9vI,eAC/BuvI,EAAAvtC,cAAcngG,eAAeiuI,GAChC,MAAM,IAAI5gJ,MAAM,6BAElB,KAAK+gJ,UAAY,MACjB,KAAKC,aAAeX,EAAAvtC,cAAc8tC,GAClC,KAAKC,cAAgBA,CACvB,CAEAxyH,MAAAA,GAAkB,IAAXA,EAAMtwB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACd,MAAMkjJ,EAAgB,CAAEP,IAAK,KAAKK,UAAWJ,IAAK,KAAKK,aAAaE,eACpE,OAAO/hJ,OAAO0nF,OAAO,GAAIo6D,EAAe5yH,EAC1C,CAKAhuB,IAAAA,CAAKkuB,GAAwD,IAAzC4yH,EAAQpjJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAUqjJ,EAAArjJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAqB,GAEzD,MAAMswB,EAAS,KAAKA,OAAO+yH,GAGrBC,EAAed,EAAmBhyH,EAASF,GAC3CizH,GAAmB,EAAA5kF,EAAA45E,YAAW+K,GACpC,OAAO,KAAKE,qBAAqBhzH,EAAS4yH,EAAU9yH,EAAQgzH,EAAcC,EAC5E,CAKME,SAAAA,CAAUjzH,GAAwD,IAAzC4yH,EAAQpjJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAUqjJ,EAAArjJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAqB,4CAEpE,MAAMswB,EAAS,KAAKA,OAAO+yH,GAGrBC,EAAed,EAAmBhyH,EAASF,GAC3CizH,QAAyB,EAAA5kF,EAAA+kF,iBAAgBJ,GAC/C,OAAO,KAAKE,qBAAqBhzH,EAAS4yH,EAAU9yH,EAAQgzH,EAAcC,EAC5E,IAEAC,oBAAAA,CACEhzH,EACA4yH,EACA9yH,EACAgzH,EACAC,GAGA,MAAMlhJ,EAAY,KAAK4gJ,aAAaU,SAASJ,EAAkB,KAAKT,eAEpE,GAAIM,EAAU,CAMZ,MALiC,CAC/B9yH,OAAQ,CAACF,EAAU7R,OAAOwN,KAAKC,UAAUsE,KACzCE,QAASzE,KAAKC,UAAUwE,GACxBnuB,UAAW,CAACA,IAId,MAAO,CAACihJ,EAAcjhJ,GAAWi5D,KAAK,IAE1C,iCC1GFl6D,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ6pG,2BAAwB,EAChC,MAAMzkG,EAAapE,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClB0kJ,EAAqB,qEAE3B,MAAM77C,UAA8BzkG,EAAWq+E,QAC3Ct1E,WAAAA,CAAY+kB,EAAUguB,GAClB,MAAMr8C,EAAYO,EAAWskG,GAAGC,WAAWmR,aAAY,EAAIz1G,EAAQgmD,OAAOnK,IAEpEykG,EAA+BvgJ,EAAWwgJ,SAASC,QAAQ,CAAEhhJ,cAEnEyB,MAAM4sB,EADoB9tB,EAAWN,KAAKghJ,iCAAiCjhJ,EAAW6gJ,EAAoBC,EAA8B,GACrGzkG,EAAY,KAC/ChhD,KAAK2E,UAAYA,CACrB,CACAu/E,iBAAAA,GACI,MAAO,CACH2hE,UAAWL,EACXM,oBAAqB5gJ,EAAWwgJ,SAASC,QAAQ,CAAEhhJ,UAAW3E,KAAK2E,YACnEohJ,YAAa/lJ,KAAK2E,UAClBo+F,gBAAiB/iG,KAAK0G,QAE9B,EAEJ5G,EAAQ6pG,sBAAwBA,+FCtBnB7pG,EAAAA,OACW,kBAAfkmJ,YAA2B,WAAYA,WAAaA,WAAWvvI,YAAS3U,sCCHjF,IAAIszD,EAAmBp1D,MAAQA,KAAKo1D,kBAAqBpyD,OAAO0G,OAAU,SAASw8B,EAAG5tB,EAAGhH,EAAGk5C,QAC7E1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B,IAAI+jD,EAAOryD,OAAOsyD,yBAAyBh9C,EAAGhH,GACzC+jD,KAAS,QAASA,GAAQ/8C,EAAEi9C,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAE34B,YAAY,EAAM9wB,IAAK,WAAa,OAAO0M,EAAEhH,EAAI,IAE5DtO,OAAOC,eAAeijC,EAAGskB,EAAI6K,EACjC,EAAM,SAASnvB,EAAG5tB,EAAGhH,EAAGk5C,QACT1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B40B,EAAEskB,GAAMlyC,EAAEhH,EACd,GACI9B,EAAgBxP,MAAQA,KAAKwP,cAAiB,SAAS8I,EAAGxY,GAC1D,IAAK,IAAIyW,KAAK+B,EAAa,YAAN/B,GAAoBvT,OAAO4H,UAAU4L,eAAeM,KAAKhX,EAASyW,IAAI6+C,EAAgBt1D,EAASwY,EAAG/B,EAC3H,EACAvT,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDsM,EAAa1O,EAAQ,OAAqBhB,GAC1C0P,EAAa1O,EAAQ,OAAwBhB,GAC7C0P,EAAa1O,EAAQ,OAAqBhB,GAC1C0P,EAAa1O,EAAQ,OAAYhB,GACjC0P,EAAa1O,EAAQ,OAAkChB,+BCX1C,SAAS+qD,EAAEp6C,EAAES,GAAG,IAAIE,EAAEX,EAAE5O,OAAO4O,EAAEnJ,KAAK4J,GAAGT,EAAE,KAAK,EAAEW,GAAG,CAAC,IAAImE,EAAEnE,EAAE,IAAI,EAAEG,EAAEd,EAAE8E,GAAG,KAAG,EAAEo7B,EAAEp/B,EAAEL,IAA0B,MAAMT,EAA7BA,EAAE8E,GAAGrE,EAAET,EAAEW,GAAGG,EAAEH,EAAEmE,CAAc,CAAC,CAAC,SAASic,EAAE/gB,GAAG,OAAO,IAAIA,EAAE5O,OAAO,KAAK4O,EAAE,EAAE,CAAC,SAASa,EAAEb,GAAG,GAAG,IAAIA,EAAE5O,OAAO,OAAO,KAAK,IAAIqP,EAAET,EAAE,GAAGW,EAAEX,EAAE4E,MAAM,GAAGjE,IAAIF,EAAE,CAACT,EAAE,GAAGW,EAAEX,EAAE,IAAI,IAAI8E,EAAE,EAAEhE,EAAEd,EAAE5O,OAAO8/B,EAAEpwB,IAAI,EAAEgE,EAAEosB,GAAG,CAAC,IAAIrpB,EAAE,GAAG/C,EAAE,GAAG,EAAEk7B,EAAEhgC,EAAE6H,GAAG/H,EAAE+H,EAAE,EAAEtH,EAAEP,EAAEF,GAAG,GAAG,EAAEogC,EAAEF,EAAEr/B,GAAGb,EAAEgB,GAAG,EAAEo/B,EAAE3/B,EAAEy/B,IAAIhgC,EAAE8E,GAAGvE,EAAEP,EAAEF,GAAGa,EAAEmE,EAAEhF,IAAIE,EAAE8E,GAAGk7B,EAAEhgC,EAAE6H,GAAGlH,EAAEmE,EAAE+C,OAAQ,MAAG/H,EAAEgB,GAAG,EAAEo/B,EAAE3/B,EAAEI,IAA0B,MAAMX,EAA7BA,EAAE8E,GAAGvE,EAAEP,EAAEF,GAAGa,EAAEmE,EAAEhF,CAAc,EAAC,CAAC,OAAOW,CAAC,CAC3c,SAASy/B,EAAElgC,EAAES,GAAG,IAAIE,EAAEX,EAAEw1I,UAAU/0I,EAAE+0I,UAAU,OAAO,IAAI70I,EAAEA,EAAEX,EAAEsE,GAAG7D,EAAE6D,EAAE,CAAC,GAAG,kBAAkBmxI,aAAa,oBAAoBA,YAAYp5H,IAAI,CAAC,IAAItb,EAAE00I,YAAYpmJ,EAAQqmJ,aAAa,WAAW,OAAO30I,EAAEsb,KAAK,CAAC,KAAK,CAAC,IAAIvW,EAAEsW,KAAKzT,EAAE7C,EAAEuW,MAAMhtB,EAAQqmJ,aAAa,WAAW,OAAO5vI,EAAEuW,MAAM1T,CAAC,CAAC,CAAC,IAAIvI,EAAE,GAAG0L,EAAE,GAAGg5B,EAAE,EAAEthC,EAAE,KAAKhD,EAAE,EAAEN,GAAE,EAAG4/B,GAAE,EAAGC,GAAE,EAAGE,EAAE,oBAAoBjoB,WAAWA,WAAW,KAAKs8B,EAAE,oBAAoBp8B,aAAaA,aAAa,KAAKoiE,EAAE,qBAAqBq7D,aAAaA,aAAa,KACnT,SAASn7F,EAAEx6C,GAAG,IAAI,IAAIS,EAAEsgB,EAAEjV,GAAG,OAAOrL,GAAG,CAAC,GAAG,OAAOA,EAAE83F,SAAS13F,EAAEiL,OAAQ,MAAGrL,EAAE0b,WAAWnc,GAAgD,MAA9Ca,EAAEiL,GAAGrL,EAAE+0I,UAAU/0I,EAAEm1I,eAAex7F,EAAEh6C,EAAEK,EAAa,CAACA,EAAEsgB,EAAEjV,EAAE,CAAC,CAAC,SAAS4uE,EAAE16E,GAAa,GAAV+/B,GAAE,EAAGya,EAAEx6C,IAAO8/B,EAAE,GAAG,OAAO/e,EAAE3gB,GAAG0/B,GAAE,EAAG2Z,EAAEmhC,OAAO,CAAC,IAAIn6E,EAAEsgB,EAAEjV,GAAG,OAAOrL,GAAGo6E,EAAEH,EAAEj6E,EAAE0b,UAAUnc,EAAE,CAAC,CACra,SAAS46E,EAAE56E,EAAES,GAAGq/B,GAAE,EAAGC,IAAIA,GAAE,EAAGuU,EAAEwmC,GAAGA,GAAG,GAAG56E,GAAE,EAAG,IAAIS,EAAEH,EAAE,IAAS,IAALg6C,EAAE/5C,GAAO+C,EAAEud,EAAE3gB,GAAG,OAAOoD,MAAMA,EAAEoyI,eAAen1I,IAAIT,IAAIk7E,MAAM,CAAC,IAAIp2E,EAAEtB,EAAE+0F,SAAS,GAAG,oBAAoBzzF,EAAE,CAACtB,EAAE+0F,SAAS,KAAK/3F,EAAEgD,EAAEqyI,cAAc,IAAI/0I,EAAEgE,EAAEtB,EAAEoyI,gBAAgBn1I,GAAGA,EAAEpR,EAAQqmJ,eAAe,oBAAoB50I,EAAE0C,EAAE+0F,SAASz3F,EAAE0C,IAAIud,EAAE3gB,IAAIS,EAAET,GAAGo6C,EAAE/5C,EAAE,MAAMI,EAAET,GAAGoD,EAAEud,EAAE3gB,EAAE,CAAC,GAAG,OAAOoD,EAAE,IAAI0tB,GAAE,MAAO,CAAC,IAAIrpB,EAAEkZ,EAAEjV,GAAG,OAAOjE,GAAGgzE,EAAEH,EAAE7yE,EAAEsU,UAAU1b,GAAGywB,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ1tB,EAAE,KAAKhD,EAAEG,EAAET,GAAE,CAAE,CAAC,CAD1a,qBAAqB41I,gBAAW,IAASA,UAAUC,iBAAY,IAASD,UAAUC,WAAWC,gBAAgBF,UAAUC,WAAWC,eAAe1gI,KAAKwgI,UAAUC,YAC2Q,IACzPt6D,EAD6PzgD,GAAE,EAAGugD,EAAE,KAAKT,GAAG,EAAE74E,EAAE,EAAE2tC,GAAG,EACvc,SAASsrC,IAAI,QAAO7rF,EAAQqmJ,eAAe9lG,EAAE3tC,EAAO,CAAC,SAASstC,IAAI,GAAG,OAAOgsC,EAAE,CAAC,IAAIv7E,EAAE3Q,EAAQqmJ,eAAe9lG,EAAE5vC,EAAE,IAAIS,GAAE,EAAG,IAAIA,EAAE86E,GAAE,EAAGv7E,EAAE,CAAC,QAAQS,EAAEg7E,KAAKzgD,GAAE,EAAGugD,EAAE,KAAK,CAAC,MAAMvgD,GAAE,CAAE,CAAO,GAAG,oBAAoBs/C,EAAEmB,EAAE,WAAWnB,EAAE/qC,EAAE,OAAO,GAAG,qBAAqB0mG,eAAe,CAAC,IAAIv6D,EAAE,IAAIu6D,eAAep6D,EAAEH,EAAEw6D,MAAMx6D,EAAEy6D,MAAMC,UAAU7mG,EAAEksC,EAAE,WAAWI,EAAEw6D,YAAY,KAAK,CAAC,MAAM56D,EAAE,WAAWx7C,EAAEsP,EAAE,EAAE,EAAE,SAASkK,EAAEz5C,GAAGu7E,EAAEv7E,EAAEg7B,IAAIA,GAAE,EAAGygD,IAAI,CAAC,SAASZ,EAAE76E,EAAES,GAAGq6E,EAAE76C,GAAE,WAAWjgC,EAAE3Q,EAAQqmJ,eAAe,GAAEj1I,EAAE,CAC5dpR,EAAQinJ,sBAAsB,EAAEjnJ,EAAQknJ,2BAA2B,EAAElnJ,EAAQmnJ,qBAAqB,EAAEnnJ,EAAQonJ,wBAAwB,EAAEpnJ,EAAQqnJ,mBAAmB,KAAKrnJ,EAAQsnJ,8BAA8B,EAAEtnJ,EAAQunJ,wBAAwB,SAAS52I,GAAGA,EAAEu4F,SAAS,IAAI,EAAElpG,EAAQwnJ,2BAA2B,WAAW/2G,GAAG5/B,IAAI4/B,GAAE,EAAG2Z,EAAEmhC,GAAG,EAC1UvrF,EAAQynJ,wBAAwB,SAAS92I,GAAG,EAAEA,GAAG,IAAIA,EAAEmY,QAAQ/F,MAAM,mHAAmHnQ,EAAE,EAAEjC,EAAErH,KAAKC,MAAM,IAAIoH,GAAG,CAAC,EAAE3Q,EAAQ0nJ,iCAAiC,WAAW,OAAOv2I,CAAC,EAAEnR,EAAQ2nJ,8BAA8B,WAAW,OAAOj2H,EAAE3gB,EAAE,EAAE/Q,EAAQ4nJ,cAAc,SAASj3I,GAAG,OAAOQ,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIC,EAAE,EAAE,MAAM,QAAQA,EAAED,EAAE,IAAIG,EAAEH,EAAEA,EAAEC,EAAE,IAAI,OAAOT,GAAG,CAAC,QAAQQ,EAAEG,CAAC,CAAC,EAAEtR,EAAQ6nJ,wBAAwB,WAAW,EAC9f7nJ,EAAQ8nJ,sBAAsB,WAAW,EAAE9nJ,EAAQ+nJ,yBAAyB,SAASp3I,EAAES,GAAG,OAAOT,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIW,EAAEH,EAAEA,EAAER,EAAE,IAAI,OAAOS,GAAG,CAAC,QAAQD,EAAEG,CAAC,CAAC,EAChMtR,EAAQgoJ,0BAA0B,SAASr3I,EAAES,EAAEE,GAAG,IAAImE,EAAEzV,EAAQqmJ,eAA8F,OAA/E,kBAAkB/0I,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEsY,QAA6B,EAAEtY,EAAEmE,EAAEnE,EAAEmE,EAAGnE,EAAEmE,EAAS9E,GAAG,KAAK,EAAE,IAAIc,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzMd,EAAE,CAACsE,GAAGwgC,IAAIyzD,SAAS93F,EAAEo1I,cAAc71I,EAAEmc,UAAUxb,EAAEi1I,eAAvD90I,EAAEH,EAAEG,EAAoE00I,WAAW,GAAG70I,EAAEmE,GAAG9E,EAAEw1I,UAAU70I,EAAEy5C,EAAEtuC,EAAE9L,GAAG,OAAO+gB,EAAE3gB,IAAIJ,IAAI+gB,EAAEjV,KAAKi0B,GAAGuU,EAAEwmC,GAAGA,GAAG,GAAG/6C,GAAE,EAAG86C,EAAEH,EAAE/5E,EAAEmE,MAAM9E,EAAEw1I,UAAU10I,EAAEs5C,EAAEh6C,EAAEJ,GAAG8/B,GAAG5/B,IAAI4/B,GAAE,EAAG2Z,EAAEmhC,KAAY56E,CAAC,EACne3Q,EAAQioJ,qBAAqBp8D,EAAE7rF,EAAQkoJ,sBAAsB,SAASv3I,GAAG,IAAIS,EAAED,EAAE,OAAO,WAAW,IAAIG,EAAEH,EAAEA,EAAEC,EAAE,IAAI,OAAOT,EAAE4mE,MAAMr3E,KAAK4B,UAAU,CAAC,QAAQqP,EAAEG,CAAC,CAAC,CAAC,0BCK/J,IAOI62I,EAPAjoG,EAAuB,kBAAZxzC,QAAuBA,QAAU,KAC5C07I,EAAeloG,GAAwB,oBAAZA,EAAEq3B,MAC7Br3B,EAAEq3B,MACF,SAAsBxrE,EAAQE,EAAUoJ,GACxC,OAAOgzI,SAASv9I,UAAUysE,MAAMvgE,KAAKjL,EAAQE,EAAUoJ,EACzD,EAIA8yI,EADEjoG,GAA0B,oBAAdA,EAAEooG,QACCpoG,EAAEooG,QACVplJ,OAAO00G,sBACC,SAAwB7rG,GACvC,OAAO7I,OAAOuhF,oBAAoB14E,GAC/BsM,OAAOnV,OAAO00G,sBAAsB7rG,GACzC,EAEiB,SAAwBA,GACvC,OAAO7I,OAAOuhF,oBAAoB14E,EACpC,EAOF,IAAIw8I,EAAcl5H,OAAO/U,OAAS,SAAqBlX,GACrD,OAAOA,IAAUA,CACnB,EAEA,SAASgf,IACPA,EAAa/S,KAAK2H,KAAK9W,KACzB,CACAD,EAAOD,QAAUoiB,EACjBniB,EAAOD,QAAQk3G,KAwYf,SAAcE,EAAStlG,GACrB,OAAO,IAAIvN,SAAQ,SAAUC,EAASikB,GACpC,SAAS+/H,EAAc1+H,GACrBstF,EAAQa,eAAenmG,EAAM22I,GAC7BhgI,EAAOqB,EACT,CAEA,SAAS2+H,IAC+B,oBAA3BrxC,EAAQa,gBACjBb,EAAQa,eAAe,QAASuwC,GAElChkJ,EAAQ,GAAGoJ,MAAMoJ,KAAKlV,WACxB,CAEA4mJ,EAA+BtxC,EAAStlG,EAAM22I,EAAU,CAAEvxC,MAAM,IACnD,UAATplG,GAMR,SAAuCslG,EAAS9S,EAASjuE,GAC7B,oBAAf+gF,EAAQc,IACjBwwC,EAA+BtxC,EAAS,QAAS9S,EAASjuE,EAE9D,CATMsyH,CAA8BvxC,EAASoxC,EAAe,CAAEtxC,MAAM,GAElE,GACF,EAxZA90F,EAAaA,aAAeA,EAE5BA,EAAatX,UAAUwsG,aAAUt1G,EACjCogB,EAAatX,UAAUysG,aAAe,EACtCn1F,EAAatX,UAAU89I,mBAAgB5mJ,EAIvC,IAAI6mJ,EAAsB,GAE1B,SAASC,EAAc35I,GACrB,GAAwB,oBAAbA,EACT,MAAM,IAAIgwB,UAAU,0EAA4EhwB,EAEpG,CAoCA,SAAS45I,EAAiBC,GACxB,YAA2BhnJ,IAAvBgnJ,EAAKJ,cACAxmI,EAAaymI,oBACfG,EAAKJ,aACd,CAkDA,SAASK,EAAal9I,EAAQlE,EAAMsH,EAAU+5I,GAC5C,IAAI1wI,EACAnK,EACA86I,EA1HsBC,EAgJ1B,GApBAN,EAAc35I,QAGCnN,KADfqM,EAAStC,EAAOurG,UAEdjpG,EAAStC,EAAOurG,QAAUp0G,OAAO0G,OAAO,MACxCmC,EAAOwrG,aAAe,SAIKv1G,IAAvBqM,EAAOg7I,cACTt9I,EAAOisG,KAAK,cAAenwG,EACfsH,EAASA,SAAWA,EAASA,SAAWA,GAIpDd,EAAStC,EAAOurG,SAElB6xC,EAAW96I,EAAOxG,SAGH7F,IAAbmnJ,EAEFA,EAAW96I,EAAOxG,GAAQsH,IACxBpD,EAAOwrG,kBAeT,GAbwB,oBAAb4xC,EAETA,EAAW96I,EAAOxG,GAChBqhJ,EAAU,CAAC/5I,EAAUg6I,GAAY,CAACA,EAAUh6I,GAErC+5I,EACTC,EAASrmC,QAAQ3zG,GAEjBg6I,EAAS3hJ,KAAK2H,IAIhBqJ,EAAIuwI,EAAiBh9I,IACb,GAAKo9I,EAASpnJ,OAASyW,IAAM2wI,EAASG,OAAQ,CACpDH,EAASG,QAAS,EAGlB,IAAIznH,EAAI,IAAI99B,MAAM,+CACEolJ,EAASpnJ,OAAS,IAAMgQ,OAAOlK,GADjC,qEAIlBg6B,EAAE/vB,KAAO,8BACT+vB,EAAEu1E,QAAUrrG,EACZ81B,EAAEh6B,KAAOA,EACTg6B,EAAEulC,MAAQ+hF,EAASpnJ,OA7KGqnJ,EA8KHvnH,EA7KnB/Y,SAAWA,QAAQG,MAAMH,QAAQG,KAAKmgI,EA8KxC,CAGF,OAAOr9I,CACT,CAaA,SAASw9I,IACP,IAAKrpJ,KAAKspJ,MAGR,OAFAtpJ,KAAK6L,OAAOksG,eAAe/3G,KAAK2H,KAAM3H,KAAKupJ,QAC3CvpJ,KAAKspJ,OAAQ,EACY,IAArB1nJ,UAAUC,OACL7B,KAAKiP,SAAS6H,KAAK9W,KAAK6L,QAC1B7L,KAAKiP,SAASooE,MAAMr3E,KAAK6L,OAAQjK,UAE5C,CAEA,SAAS4nJ,EAAU39I,EAAQlE,EAAMsH,GAC/B,IAAIvO,EAAQ,CAAE4oJ,OAAO,EAAOC,YAAQznJ,EAAW+J,OAAQA,EAAQlE,KAAMA,EAAMsH,SAAUA,GACjFw6I,EAAUJ,EAAYtjI,KAAKrlB,GAG/B,OAFA+oJ,EAAQx6I,SAAWA,EACnBvO,EAAM6oJ,OAASE,EACRA,CACT,CAyHA,SAASC,EAAW79I,EAAQlE,EAAMgiJ,GAChC,IAAIx7I,EAAStC,EAAOurG,QAEpB,QAAet1G,IAAXqM,EACF,MAAO,GAET,IAAIy7I,EAAaz7I,EAAOxG,GACxB,YAAmB7F,IAAf8nJ,EACK,GAEiB,oBAAfA,EACFD,EAAS,CAACC,EAAW36I,UAAY26I,GAAc,CAACA,GAElDD,EAsDT,SAAyB3xI,GAEvB,IADA,IAAIygB,EAAM,IAAItuB,MAAM6N,EAAInW,QACfmJ,EAAI,EAAGA,EAAIytB,EAAI52B,SAAUmJ,EAChCytB,EAAIztB,GAAKgN,EAAIhN,GAAGiE,UAAY+I,EAAIhN,GAElC,OAAOytB,CACT,CA3DIoxH,CAAgBD,GAAcE,EAAWF,EAAYA,EAAW/nJ,OACpE,CAmBA,SAASg2G,EAAclwG,GACrB,IAAIwG,EAASnO,KAAKo3G,QAElB,QAAet1G,IAAXqM,EAAsB,CACxB,IAAIy7I,EAAaz7I,EAAOxG,GAExB,GAA0B,oBAAfiiJ,EACT,OAAO,EACF,QAAmB9nJ,IAAf8nJ,EACT,OAAOA,EAAW/nJ,MAEtB,CAEA,OAAO,CACT,CAMA,SAASioJ,EAAW9xI,EAAKzH,GAEvB,IADA,IAAIgH,EAAO,IAAIpN,MAAMoG,GACZvF,EAAI,EAAGA,EAAIuF,IAAKvF,EACvBuM,EAAKvM,GAAKgN,EAAIhN,GAChB,OAAOuM,CACT,CA2CA,SAASixI,EAA+BtxC,EAAStlG,EAAM3C,EAAUknB,GAC/D,GAA0B,oBAAf+gF,EAAQc,GACb7hF,EAAM6gF,KACRE,EAAQF,KAAKplG,EAAM3C,GAEnBioG,EAAQc,GAAGpmG,EAAM3C,OAEd,IAAwC,oBAA7BioG,EAAQxuF,iBAYxB,MAAM,IAAIuW,UAAU,6EAA+Ei4E,GATnGA,EAAQxuF,iBAAiB9W,GAAM,SAASm4I,EAAaltC,GAG/C1mF,EAAM6gF,MACRE,EAAQ8yC,oBAAoBp4I,EAAMm4I,GAEpC96I,EAAS4tG,EACX,GAGF,CACF,CAraA75G,OAAOC,eAAeif,EAAc,sBAAuB,CACzDwa,YAAY,EACZ9wB,IAAK,WACH,OAAO+8I,CACT,EACAryI,IAAK,SAASumG,GACZ,GAAmB,kBAARA,GAAoBA,EAAM,GAAKwrC,EAAYxrC,GACpD,MAAM,IAAI9lB,WAAW,kGAAoG8lB,EAAM,KAEjI8rC,EAAsB9rC,CACxB,IAGF36F,EAAa/S,KAAO,gBAEGrN,IAAjB9B,KAAKo3G,SACLp3G,KAAKo3G,UAAYp0G,OAAOyhF,eAAezkF,MAAMo3G,UAC/Cp3G,KAAKo3G,QAAUp0G,OAAO0G,OAAO,MAC7B1J,KAAKq3G,aAAe,GAGtBr3G,KAAK0oJ,cAAgB1oJ,KAAK0oJ,oBAAiB5mJ,CAC7C,EAIAogB,EAAatX,UAAUq/I,gBAAkB,SAAyB15I,GAChE,GAAiB,kBAANA,GAAkBA,EAAI,GAAK83I,EAAY93I,GAChD,MAAM,IAAIwmF,WAAW,gFAAkFxmF,EAAI,KAG7G,OADAvQ,KAAK0oJ,cAAgBn4I,EACdvQ,IACT,EAQAkiB,EAAatX,UAAUs/I,gBAAkB,WACvC,OAAOrB,EAAiB7oJ,KAC1B,EAEAkiB,EAAatX,UAAUktG,KAAO,SAAcnwG,GAE1C,IADA,IAAIwN,EAAO,GACFnK,EAAI,EAAGA,EAAIpJ,UAAUC,OAAQmJ,IAAKmK,EAAK7N,KAAK1F,UAAUoJ,IAC/D,IAAIm/I,EAAoB,UAATxiJ,EAEXwG,EAASnO,KAAKo3G,QAClB,QAAet1G,IAAXqM,EACFg8I,EAAWA,QAA4BroJ,IAAjBqM,EAAO0U,WAC1B,IAAKsnI,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIC,EAGJ,GAFIj1I,EAAKtT,OAAS,IAChBuoJ,EAAKj1I,EAAK,IACRi1I,aAAcvmJ,MAGhB,MAAMumJ,EAGR,IAAIxgI,EAAM,IAAI/lB,MAAM,oBAAsBumJ,EAAK,KAAOA,EAAGn8H,QAAU,IAAM,KAEzE,MADArE,EAAIghE,QAAUw/D,EACRxgI,CACR,CAEA,IAAIw6E,EAAUj2F,EAAOxG,GAErB,QAAgB7F,IAAZsiG,EACF,OAAO,EAET,GAAuB,oBAAZA,EACT8jD,EAAa9jD,EAASpkG,KAAMmV,OAE5B,KAAIhD,EAAMiyF,EAAQviG,OACduM,EAAY07I,EAAW1lD,EAASjyF,GACpC,IAASnH,EAAI,EAAGA,EAAImH,IAAOnH,EACzBk9I,EAAa95I,EAAUpD,GAAIhL,KAAMmV,EAHX,CAM1B,OAAO,CACT,EAgEA+M,EAAatX,UAAUqsG,YAAc,SAAqBtvG,EAAMsH,GAC9D,OAAO85I,EAAa/oJ,KAAM2H,EAAMsH,GAAU,EAC5C,EAEAiT,EAAatX,UAAUotG,GAAK91F,EAAatX,UAAUqsG,YAEnD/0F,EAAatX,UAAUy/I,gBACnB,SAAyB1iJ,EAAMsH,GAC7B,OAAO85I,EAAa/oJ,KAAM2H,EAAMsH,GAAU,EAC5C,EAoBJiT,EAAatX,UAAUosG,KAAO,SAAcrvG,EAAMsH,GAGhD,OAFA25I,EAAc35I,GACdjP,KAAKg4G,GAAGrwG,EAAM6hJ,EAAUxpJ,KAAM2H,EAAMsH,IAC7BjP,IACT,EAEAkiB,EAAatX,UAAU0/I,oBACnB,SAA6B3iJ,EAAMsH,GAGjC,OAFA25I,EAAc35I,GACdjP,KAAKqqJ,gBAAgB1iJ,EAAM6hJ,EAAUxpJ,KAAM2H,EAAMsH,IAC1CjP,IACT,EAGJkiB,EAAatX,UAAUmtG,eACnB,SAAwBpwG,EAAMsH,GAC5B,IAAIuvI,EAAMrwI,EAAQw1B,EAAU34B,EAAGu/I,EAK/B,GAHA3B,EAAc35I,QAGCnN,KADfqM,EAASnO,KAAKo3G,SAEZ,OAAOp3G,KAGT,QAAa8B,KADb08I,EAAOrwI,EAAOxG,IAEZ,OAAO3H,KAET,GAAIw+I,IAASvvI,GAAYuvI,EAAKvvI,WAAaA,EACb,MAAtBjP,KAAKq3G,aACTr3G,KAAKo3G,QAAUp0G,OAAO0G,OAAO,cAEtByE,EAAOxG,GACVwG,EAAO4pG,gBACT/3G,KAAK83G,KAAK,iBAAkBnwG,EAAM62I,EAAKvvI,UAAYA,SAElD,GAAoB,oBAATuvI,EAAqB,CAGrC,IAFA76G,GAAY,EAEP34B,EAAIwzI,EAAK38I,OAAS,EAAGmJ,GAAK,EAAGA,IAChC,GAAIwzI,EAAKxzI,KAAOiE,GAAYuvI,EAAKxzI,GAAGiE,WAAaA,EAAU,CACzDs7I,EAAmB/L,EAAKxzI,GAAGiE,SAC3B00B,EAAW34B,EACX,KACF,CAGF,GAAI24B,EAAW,EACb,OAAO3jC,KAEQ,IAAb2jC,EACF66G,EAAKzwI,QAiIf,SAAmBywI,EAAM59G,GACvB,KAAOA,EAAQ,EAAI49G,EAAK38I,OAAQ++B,IAC9B49G,EAAK59G,GAAS49G,EAAK59G,EAAQ,GAC7B49G,EAAKnpI,KACP,CAnIUm1I,CAAUhM,EAAM76G,GAGE,IAAhB66G,EAAK38I,SACPsM,EAAOxG,GAAQ62I,EAAK,SAEQ18I,IAA1BqM,EAAO4pG,gBACT/3G,KAAK83G,KAAK,iBAAkBnwG,EAAM4iJ,GAAoBt7I,EAC1D,CAEA,OAAOjP,IACT,EAEJkiB,EAAatX,UAAUg3B,IAAM1f,EAAatX,UAAUmtG,eAEpD71F,EAAatX,UAAUqtG,mBACnB,SAA4BtwG,GAC1B,IAAIyG,EAAWD,EAAQnD,EAGvB,QAAelJ,KADfqM,EAASnO,KAAKo3G,SAEZ,OAAOp3G,KAGT,QAA8B8B,IAA1BqM,EAAO4pG,eAUT,OATyB,IAArBn2G,UAAUC,QACZ7B,KAAKo3G,QAAUp0G,OAAO0G,OAAO,MAC7B1J,KAAKq3G,aAAe,QACMv1G,IAAjBqM,EAAOxG,KACY,MAAtB3H,KAAKq3G,aACTr3G,KAAKo3G,QAAUp0G,OAAO0G,OAAO,aAEtByE,EAAOxG,IAEX3H,KAIT,GAAyB,IAArB4B,UAAUC,OAAc,CAC1B,IACImI,EADAoV,EAAOpc,OAAOoc,KAAKjR,GAEvB,IAAKnD,EAAI,EAAGA,EAAIoU,EAAKvd,SAAUmJ,EAEjB,oBADZhB,EAAMoV,EAAKpU,KAEXhL,KAAKi4G,mBAAmBjuG,GAK1B,OAHAhK,KAAKi4G,mBAAmB,kBACxBj4G,KAAKo3G,QAAUp0G,OAAO0G,OAAO,MAC7B1J,KAAKq3G,aAAe,EACbr3G,IACT,CAIA,GAAyB,oBAFzBoO,EAAYD,EAAOxG,IAGjB3H,KAAK+3G,eAAepwG,EAAMyG,QACrB,QAAkBtM,IAAdsM,EAET,IAAKpD,EAAIoD,EAAUvM,OAAS,EAAGmJ,GAAK,EAAGA,IACrChL,KAAK+3G,eAAepwG,EAAMyG,EAAUpD,IAIxC,OAAOhL,IACT,EAmBJkiB,EAAatX,UAAUwD,UAAY,SAAmBzG,GACpD,OAAO+hJ,EAAW1pJ,KAAM2H,GAAM,EAChC,EAEAua,EAAatX,UAAU6/I,aAAe,SAAsB9iJ,GAC1D,OAAO+hJ,EAAW1pJ,KAAM2H,GAAM,EAChC,EAEAua,EAAa21F,cAAgB,SAASX,EAASvvG,GAC7C,MAAqC,oBAA1BuvG,EAAQW,cACVX,EAAQW,cAAclwG,GAEtBkwG,EAAc/gG,KAAKogG,EAASvvG,EAEvC,EAEAua,EAAatX,UAAUitG,cAAgBA,EAiBvC31F,EAAatX,UAAU4sG,WAAa,WAClC,OAAOx3G,KAAKq3G,aAAe,EAAI4wC,EAAejoJ,KAAKo3G,SAAW,EAChE,8BCxaAp0G,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,kCCAtDF,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ4qJ,oBAAiB,EACzB,MAAM7pJ,EAAYC,EAAQ,OACpBunB,EAAKvnB,EAAQ,MACbmE,EAASnE,EAAQ,OACjB6pJ,EAAiB7pJ,EAAQ,OACzByC,EAAWzC,EAAQ,OACnB8pJ,EAAc9pJ,EAAQ,MACtBqE,EAAUrE,EAAQ,MAClBsgI,EAAiBtgI,EAAQ,OACzB+pJ,EAA+B,IAAIxiI,EAAG,cAC5C,MAAMqiI,UAAuBzlJ,EAAOg8D,SAChChzD,WAAAA,CAAY0zD,EAAeC,EAASz5D,EAAO3G,EAAQ2pB,EAAatlB,EAAUuqD,EAAQlqD,EAAOklB,EAAem2C,EAAQa,EAAMZ,EAAOspF,EAAYC,EAAY7oF,EAAiBC,EAAekxB,GACjLjtF,QACe,MAAXw7D,GAA4B,MAATz5D,GAA2B,MAAV3G,GAAiC,MAAf2pB,GAAiC,MAAVilC,GACpE,MAATlqD,GAAkC,MAAjBklB,GAAmC,MAAVm2C,GAA0B,MAARa,GAAyB,MAATZ,GAA+B,MAAdupF,GAC7F/qJ,KAAKsiE,QAAUX,EACf3hE,KAAK4hE,QAAUA,EACf5hE,KAAKmI,MAAQA,EACbnI,KAAKwB,OAASA,EACdxB,KAAKmrB,YAAcA,EACnBnrB,KAAK6F,SAAWA,EAChB7F,KAAKowD,OAASA,EACdpwD,KAAKkG,MAAQA,EACblG,KAAKorB,cAAgBA,EACrBprB,KAAKuhE,OAASA,EACdvhE,KAAKoiE,KAAOA,EACZpiE,KAAKwhE,MAAQA,EACbxhE,KAAK+qJ,WAAaA,EAClB/qJ,KAAK8qJ,WAAaA,EAClB9qJ,KAAKkiE,gBAAkBA,EACvBliE,KAAKmiE,cAAgBA,EACrBniE,KAAKqzF,QAAUA,IAGfrzF,KAAKsiE,QAAmC,MAAzBX,EAAcW,QAAkB,KAAO,IAAIzhE,EAAUiE,UAAU68D,EAAcW,SAC5FtiE,KAAK4hE,QAAmC,MAAzBD,EAAcC,QAAkB,KAAO,IAAI/gE,EAAUiE,UAAU68D,EAAcC,SAC5F5hE,KAAKmI,MAA+B,MAAvBw5D,EAAcx5D,MAAgB,KAAO,IAAItH,EAAUiE,UAAU68D,EAAcx5D,OACxFnI,KAAKwB,OAAiC,MAAxBmgE,EAAcngE,OAAiB,KAAO,IAAI6mB,EAAGs5C,EAAcngE,QACzExB,KAAKmrB,YAAcw2C,EAAcx2C,YACjCnrB,KAAK6F,SAAqC,MAA1B87D,EAAc97D,SAAmB,KAAO,IAAIwiB,EAAGs5C,EAAc97D,UAC7E7F,KAAKowD,OAAiC,MAAxBuR,EAAcvR,OAAiB,KAAO,IAAI/nC,EAAGs5C,EAAcvR,QACzEpwD,KAAKkG,MAA+B,MAAvBy7D,EAAcz7D,MAAgB,KAAO,IAAImiB,EAAGs5C,EAAcz7D,OACvElG,KAAKorB,cAAgBu2C,EAAcv2C,cACnCprB,KAAKuhE,OAASI,EAAcJ,OAC5BvhE,KAAKoiE,KAAOT,EAAcS,KAC1BpiE,KAAKwhE,MAAQG,EAAcH,MAC3BxhE,KAAK+qJ,WAAyC,MAA5BppF,EAAcopF,WAAqB,KAAO,IAAIlqJ,EAAUiE,UAAU68D,EAAcopF,YAClG/qJ,KAAK8qJ,WAAyC,MAA5BnpF,EAAcmpF,WAAqB,KAAO,IAAIjqJ,EAAUiE,UAAU68D,EAAcmpF,YAClG9qJ,KAAKkiE,gBAAmD,MAAjCP,EAAcO,gBAA0B,KAAO,IAAI75C,EAAGs5C,EAAcO,iBAC3FliE,KAAKmiE,cAA+C,MAA/BR,EAAcQ,cAAwB,KAAO,IAAI95C,EAAGs5C,EAAcQ,eACvFniE,KAAKqzF,QAAU1xB,EAAc0xB,QAErC,CACA3lC,UAAAA,GACI,OAAO1tD,KAAKsiE,QAAQ33C,UACxB,CACA43C,UAAAA,CAAWC,GACPxiE,KAAKsiE,QAAU,IAAIzhE,EAAUiE,UAAU09D,GACvCxiE,KAAK8qJ,YAAa,EAAIF,EAAYjwG,+BAA+B36C,KAAKmI,MAAOnI,KAAKsiE,SAClFtiE,KAAKwhE,OAAQ,CACjB,CACArpB,UAAAA,GACI,OAAOn4C,KAAK4hE,QAAQj3C,UACxB,CACA83C,UAAAA,CAAWC,GACP1iE,KAAK4hE,QAAU,IAAI/gE,EAAUiE,UAAU49D,GACvC1iE,KAAKwhE,OAAQ,EACbxhE,KAAKuhE,QAAS,EACdvhE,KAAK+qJ,YAAa,EAAIH,EAAYjwG,+BAA+B36C,KAAKmI,MAAOnI,KAAK4hE,QACtF,CACA5R,SAAAA,GACI,MAAO,CACHroD,KAAM,MACN26D,QAAyB,MAAhBtiE,KAAKsiE,QAAkB,KAAOtiE,KAAKsiE,QAAQ33C,WACpDi3C,QAAyB,MAAhB5hE,KAAK4hE,QAAkB,KAAO5hE,KAAK4hE,QAAQj3C,WACpDxiB,MAAqB,MAAdnI,KAAKmI,MAAgB,KAAOnI,KAAKmI,MAAMwiB,WAC9CnpB,OAAuB,MAAfxB,KAAKwB,OAAiB,KAAOxB,KAAKwB,OAAOiD,SAAS,IAC1D0mB,YAAanrB,KAAKmrB,YAClBtlB,SAA2B,MAAjB7F,KAAK6F,SAAmB,KAAO7F,KAAK6F,SAASpB,SAAS,IAChE2rD,OAAuB,MAAfpwD,KAAKowD,OAAiB,KAAOpwD,KAAKowD,OAAO3rD,SAAS,IAC1DyB,MAAqB,MAAdlG,KAAKkG,MAAgB,KAAOlG,KAAKkG,MAAMzB,SAAS,IACvD2mB,cAAeprB,KAAKorB,cACpBm2C,OAAQvhE,KAAKuhE,OACba,KAAMpiE,KAAKoiE,KACXZ,MAAOxhE,KAAKwhE,MACZspF,WAA+B,MAAnB9qJ,KAAK8qJ,WAAqB,KAAO9qJ,KAAK8qJ,WAAWngI,WAC7DogI,WAA+B,MAAnB/qJ,KAAK+qJ,WAAqB,KAAO/qJ,KAAK+qJ,WAAWpgI,WAC7Du3C,gBAAyC,MAAxBliE,KAAKkiE,gBAA0B,KAAOliE,KAAKkiE,gBAAgBz9D,SAAS,IACrF09D,cAAqC,MAAtBniE,KAAKmiE,cAAwB,KAAOniE,KAAKmiE,cAAc19D,SAAS,IAC/E4uF,QAASrzF,KAAKqzF,QAEtB,CACA78C,SAAAA,GACI,OAAO,EAAIrxC,EAAQc,UAAUjG,KAAKwB,OACtC,CACAi1C,QAAAA,GACI,OAAOz2C,KAAKmI,MAAM1D,UACtB,CACAk+D,OAAAA,CAAQx6D,GACJ,OAAOnI,KAAKmI,MAAMoY,OAAO,IAAI1f,EAAUiE,UAAUqD,GACrD,CACAT,OAAAA,GACI,OAAOgjJ,EAAeM,WAAWhrJ,KAAKoiE,KAC1C,CACAQ,SAAAA,GACI,OAAI5iE,KAAKowD,OAAOp0C,GAAG6uI,GACR,MACJ,EAAI1lJ,EAAQc,UAAUjG,KAAKowD,OACtC,CACAsT,oBAAAA,GACI,OAAO1jE,KAAKorB,aAChB,CACAu4C,YAAAA,GACI,OAAO,EAAIx+D,EAAQc,UAAUjG,KAAKkG,MACtC,CACA48D,OAAAA,GACI,OAAO9iE,KAAKwhE,KAChB,CACAuB,QAAAA,GACI,OAAO/iE,KAAKuhE,MAChB,CACAtU,YAAAA,GACI,OAAO,EAAI9nD,EAAQ8iB,aAAajoB,KAAKmrB,aAAa,EAAIhmB,EAAQc,UAAUjG,KAAKkG,OAAQlG,KAAKorB,cAC9F,CACApc,aAAAA,GACI,OAAO,EAAI7J,EAAQ4iB,cAAc/nB,KAAKmrB,YAAanrB,KAAK6F,SAC5D,CACAwpD,WAAAA,GACI,OAAO,EAAIlqD,EAAQc,UAAUjG,KAAK6F,SACtC,CACA+9D,cAAAA,GACI,MAAqB,qEAAjB5jE,KAAKqzF,QACE,KACJrzF,KAAKqzF,OAChB,CACAxvB,YAAAA,GACI,OAAO7jE,KAAKqzF,OAChB,CACAvvB,YAAAA,CAAauvB,GACTrzF,KAAKqzF,QAAUA,CACnB,CACAp7C,kBAAAA,GACI,OAAO,EAAI9yC,EAAQc,UAAUjG,KAAKkiE,gBACtC,CACA6B,gBAAAA,GACI,OAAO,EAAI5+D,EAAQc,UAAUjG,KAAKmiE,cACtC,CACAjqB,eAAAA,GACI,OAAO,EAAI/yC,EAAQc,UAAUjG,KAAKmiE,cAAcnmD,GAAGhc,KAAKkiE,iBAAmBliE,KAAKkiE,gBAAkBliE,KAAKmiE,cAC3G,CACA8oF,gBAAAA,GACI,MAAO,CACH7oF,KAAMuoF,EAAeO,aAAaC,WAAWnrJ,KAAKoiE,MAClDh3C,cAAeprB,KAAKorB,cACpBllB,MAAOlG,KAAKkG,MACZtB,KAAM,IAAIrB,EAASgB,OAAOC,KAAKxE,KAAKmrB,YAAa,QACjDq2C,MAAOxhE,KAAKwhE,MACZD,OAAQvhE,KAAKuhE,OACb//D,OAAQxB,KAAKwB,OACb4uD,OAAQpwD,KAAKowD,OACbvqD,SAAU7F,KAAK6F,SAEvB,CACAulJ,UAAAA,CAAW54H,GACP,OAAOm4H,EAAeO,aAAazsI,SAAS+T,EAAQ7uB,KAAKy+D,QAAUpiE,KAAKoiE,MACpE5vC,EAAQ7uB,KAAKynB,gBAAkBprB,KAAKorB,eACpCprB,KAAKkG,MAAMuV,GAAG+W,EAAQ7uB,KAAKuC,QAC3B3C,EAASgB,OAAOC,KAAKguB,EAAQ7uB,KAAKiB,MAAMH,SAAS,SAAWzE,KAAKmrB,aACjEqH,EAAQ7uB,KAAK69D,QAAUxhE,KAAKwhE,OAC5BhvC,EAAQ7uB,KAAK49D,SAAWvhE,KAAKuhE,QAC7BvhE,KAAKwB,OAAOia,GAAG+W,EAAQ7uB,KAAKnC,SAC5BxB,KAAKowD,OAAO30C,GAAG+W,EAAQ7uB,KAAKysD,SAC5BpwD,KAAK6F,SAAS4V,GAAG+W,EAAQ7uB,KAAKkC,WAC9B2sB,EAAQ8vC,QAAQ/hD,OAAOvgB,KAAKsiE,WACR,MAAnBtiE,KAAK8qJ,YAAsBt4H,EAAQs4H,WAAWvqI,OAAOvgB,KAAK8qJ,cAC3Dt4H,EAAQovC,QAAQrhD,OAAOvgB,KAAK4hE,WACR,MAAnB5hE,KAAK+qJ,YAAsBv4H,EAAQu4H,WAAWxqI,OAAOvgB,KAAK+qJ,cAC3Dv4H,EAAQnxB,KAAKkf,OAAOvgB,KAAKmI,QACzBnI,KAAKmiE,cAAc1mD,GAAG+W,EAAQ2vC,gBAC9BniE,KAAKkiE,gBAAgBzmD,GAAG+W,EAAQ0vC,gBACxC,CACA3hD,MAAAA,CAAO8mC,GACH,OAAuB,MAAnBrnD,KAAK+qJ,YAA0C,MAApB1jG,EAAM0jG,eAEd,MAAnB/qJ,KAAK+qJ,YAA0C,MAApB1jG,EAAM0jG,gBAEd,MAAnB/qJ,KAAK+qJ,YAA0C,MAApB1jG,EAAM0jG,aAC5B/qJ,KAAK+qJ,WAAWxqI,OAAO8mC,EAAM0jG,gBAGf,MAAnB/qJ,KAAK8qJ,YAA0C,MAApBzjG,EAAMyjG,eAEd,MAAnB9qJ,KAAK8qJ,YAA0C,MAApBzjG,EAAMyjG,gBAEd,MAAnB9qJ,KAAK8qJ,YAA0C,MAApBzjG,EAAMyjG,aAC5B9qJ,KAAK8qJ,WAAWvqI,OAAO8mC,EAAMyjG,eAG/BzjG,EAAM+a,OAASpiE,KAAKoiE,MACvB/a,EAAMj8B,gBAAkBprB,KAAKorB,eAC7BprB,KAAKkG,MAAMuV,GAAG4rC,EAAMnhD,QACpBmhD,EAAMl8B,cAAgBnrB,KAAKmrB,aAC3BnrB,KAAK6F,SAAS4V,GAAG4rC,EAAMxhD,WACvBwhD,EAAMma,QAAUxhE,KAAKwhE,OACrBna,EAAMka,SAAWvhE,KAAKuhE,QACtBla,EAAMib,QAAQ/hD,OAAOvgB,KAAKsiE,UAC1Bjb,EAAMua,QAAQrhD,OAAOvgB,KAAK4hE,UAC1Bva,EAAM+I,OAAO30C,GAAGzb,KAAKowD,SACrB/I,EAAM7lD,OAAOia,GAAGzb,KAAKwB,SACrB6lD,EAAM6a,gBAAgBzmD,GAAGzb,KAAKkiE,kBAC9B7a,EAAM8a,cAAc1mD,GAAGzb,KAAKmiE,gBAC5B9a,EAAMl/C,MAAMoY,OAAOvgB,KAAKmI,YAChC,CACA,sBAAOkjJ,CAAgB74H,GACnB,MAAM7uB,EAAO6uB,EAAQ7uB,KACrB,OAAO,IAAI+mJ,EAAel4H,EAAQ8vC,QAAS9vC,EAAQovC,QAASpvC,EAAQnxB,KAAMsC,EAAKnC,OAAQ+B,EAASgB,OAAOC,KAAKb,EAAKiB,MAAMH,SAAS,OAAQd,EAAKkC,SAAUlC,EAAKysD,OAAQzsD,EAAKuC,MAAOvC,EAAKynB,cAAeznB,EAAK49D,OAAQopF,EAAeO,aAAazsI,SAAS9a,EAAKy+D,MAAOz+D,EAAK69D,MAAOhvC,EAAQs4H,WAAYt4H,EAAQu4H,WAAYv4H,EAAQ0vC,gBAAiB1vC,EAAQ2vC,cAAe,KAC1W,CACA,iBAAOmpF,CAAW3jJ,GACd,OAAQA,GACJ,KAAK1C,EAAO2C,cAAc66F,KACtB,OAAO,EACX,KAAKx9F,EAAO2C,cAAc+6F,MACtB,OAAO,EACX,KAAK19F,EAAO2C,cAAcC,aACtB,OAAO,EACX,KAAK5C,EAAO2C,cAAc86F,WACtB,OAAO,EAEf,OAAO,IACX,CACA,iBAAOsoD,CAAW9nJ,GACd,OAAQA,GACJ,KAAK,EACD,OAAO+B,EAAO2C,cAAc66F,KAChC,KAAK,EACD,OAAOx9F,EAAO2C,cAAc+6F,MAChC,KAAK,EACD,OAAO19F,EAAO2C,cAAcC,aAChC,KAAK,EACD,OAAO5C,EAAO2C,cAAc86F,WAEpC,OAAO,IACX,CACAx+B,SAAAA,CAAUx9D,GACN,MAAM6kJ,EAAW,IAAI1qJ,EAAUiE,UAAU4B,GACzC,GAAI1G,KAAK+iE,WAAY,CAEjB,MAAMyoF,GAAS,EAAIZ,EAAYjwG,+BAA+B36C,KAAKmI,MAAOojJ,GAC1E,IAAKvrJ,KAAK+qJ,WAAWxqI,OAAOirI,GACxB,OAAO,CACf,CACA,OAAOxrJ,KAAK4hE,QAAQrhD,OAAO,IAAI1f,EAAUiE,UAAU4B,GACvD,CACAy9D,SAAAA,CAAUz9D,GACN,OAAO1G,KAAKsiE,QAAQ/hD,OAAO,IAAI1f,EAAUiE,UAAU4B,GACvD,CACAs9D,eAAAA,GACI,OAAOo9D,EAAeU,aAAa2pB,aAAahnJ,UACpD,CACAw/D,cAAAA,CAAe97D,GACX,OAAOi5H,EAAeU,aAAa2pB,aAAalrI,OAAO,IAAI1f,EAAUiE,UAAUqD,GACnF,EAEJrI,EAAQ4qJ,eAAiBA,EACzBzlJ,EAAOg8D,SAASE,cAAmB,IAAIupF,gCCzQvC1nJ,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ85I,uBAAyB95I,EAAQ4rJ,2BAA6B5rJ,EAAQ6rJ,gCAA6B,EAC3G,MAAMxmJ,EAAUrE,EAAQ,OAClB4qB,EAAiB5qB,EAAQ,OACzB2qB,EAAmB3qB,EAAQ,QAEjC,SAAW6qJ,GACPA,EAA2BA,EAAoC,QAAI,OAAS,UAC5EA,EAA2BA,EAAiC,KAAI,KAAS,OACzEA,EAA2BA,EAA0C,cAAI,OAAS,gBAClFA,EAA2BA,EAA+C,mBAAI,OAAS,qBACvFA,EAA2BA,EAAoC,QAAI,OAAS,UAC5EA,EAA2BA,EAAoC,QAAI,OAAS,UAC5EA,EAA2BA,EAAqC,SAAI,OAAS,WAC7EA,EAA2BA,EAAyC,aAAI,OAAS,eACjFA,EAA2BA,EAAuC,WAAI,OAAS,YAClF,CAVD,CAUgC7rJ,EAAQ6rJ,6BAA+B7rJ,EAAQ6rJ,2BAA6B,CAAC,IAC7G,MAAMC,EAA+B,CACjCzgI,YAAaM,EAAiB6gG,cAAcz6G,OAC5ChM,SAAU4lB,EAAiB6gG,cAAc5mH,OACzCunH,WAAYxhG,EAAiB6gG,cAAcz6G,OAC3C+R,WAAY6H,EAAiB6gG,cAAc5mH,OAC3Cw0I,YAAazuH,EAAiB6gG,cAAc5mH,OAC5CqwC,QAAStqB,EAAiB6gG,cAAc5mH,OACxC4wB,MAAO7K,EAAiB6gG,cAAc5mH,OACtC0nH,gBAAiB3hG,EAAiB6gG,cAAcz6G,OAChDg6I,eAAgBpgI,EAAiB6gG,cAAcn9F,OAC/C8qH,UAAWxuH,EAAiB6gG,cAAcn9F,SAG9C,SAAWu8H,GACPA,EAA2BA,EAAoC,QAAI,OAAS,UAC5EA,EAA2BA,EAAiC,KAAI,KAAS,OACzEA,EAA2BA,EAA0C,cAAI,OAAS,gBAClFA,EAA2BA,EAAoC,QAAI,OAAS,UAC5EA,EAA2BA,EAAoC,QAAI,OAAS,SAC/E,CAND,CAMgC5rJ,EAAQ4rJ,6BAA+B5rJ,EAAQ4rJ,2BAA6B,CAAC,IAC7G,MAAMI,EAAiC,CACnCt4F,GAAI/nC,EAAiB6gG,cAAcz6G,OACnCkkC,QAAStqB,EAAiB6gG,cAAc5mH,OACxC4wB,MAAO7K,EAAiB6gG,cAAc5mH,QAuF1C5F,EAAQ85I,uBArFR,MAUI,6BAAamS,CAAiBx/H,EAAKpB,EAAa3C,EAASpgB,GACrD,OAAO,EAAIjD,EAAQke,iBAAgB,KAAM,EAAIle,EAAQ44G,SAASxxF,EAAM,iCAAmC08F,mBAAmB99F,GAAc3C,EAASpgB,IAAc,KAAMsjB,EAAe2C,aAAcjmB,EACtM,CAWA,iCAAa4jJ,CAAqB1qI,EAAiBgsG,EAASn+G,EAAMqZ,EAASpgB,GACvE,MAAM0lB,QAAa,EAAI3oB,EAAQke,iBAAgB,KAAM,EAAIle,EAAQ44G,SAASuP,qCACxDrE,mBAAmB95G,EAAKzI,SACtC,WAAauiH,mBAAmB95G,EAAK3N,OAAOiD,SAAS,KACrD,UAAYwkH,mBAAmB3nG,GAC/B,UAAY2nG,mBAAmB95G,EAAKhH,OAAQqgB,EAASpgB,IAAc,KAAMsjB,EAAe2C,aAAcjmB,GAC1G,GAAkB,MAAd0lB,EAAK4gC,KACL,MAAMhjC,EAAe2C,aAAa8D,MAAMxE,KAAKC,UAAUE,GAAO,KAClE,OAAO,EAAIrC,EAAiBwiG,cAAcngG,EAAKnqB,KAAMmoJ,EACzD,CAWA,6BAAaG,CAAiB1/H,EAAKpB,EAAatlB,EAAU2iB,EAASpgB,GAC/D,OAAO,EAAIjD,EAAQke,iBAAgB,KAAM,EAAIle,EAAQ44G,SAASxxF,EAAM,iCAAmC08F,mBAAmB99F,GAAe,aAAe89F,mBAAmBpjH,EAASpB,SAAS,KAAM+jB,EAASpgB,IAAc,KAAMsjB,EAAe2C,aAAcjmB,EACjQ,CAYA,6BAAa8jJ,CAAiB3/H,EAAKpB,EAAatlB,EAAU6zI,EAAelxH,EAASpgB,GAC9E,OAAO,EAAIjD,EAAQke,iBAAgB,KAAM,EAAIle,EAAQ44G,SAASxxF,mCACxC08F,mBAAmB99F,GACrC,aAAe89F,mBAAmBpjH,EAASpB,SAAS,KACpD,kBAAoBwkH,mBAAmBywB,GAAgBlxH,EAASpgB,IAAc,KAAMsjB,EAAe2C,aAAcjmB,EACzH,CAWA,+BAAayxI,CAAmBv4H,EAAiBgsG,EAASn+G,EAAMqZ,EAASpgB,GACrE,MAAM0lB,QAAa,EAAI3oB,EAAQke,iBAAgB,KAAM,EAAIle,EAAQ44G,SAASuP,EAAU,qCAAuCrE,mBAAmB3nG,GAC1I,YAAc2nG,mBAAmB95G,EAAKzI,SACtC,WAAauiH,mBAAmB95G,EAAK3N,OAAOiD,SAAS,KACrD,kBAAoBwkH,mBAAmB95G,EAAKuqI,eAH0BpsB,uBAK1DrE,mBAAmB95G,EAAKhH,OAAQqgB,EAASpgB,IAAc,KAAMsjB,EAAe2C,aAAcjmB,GAC1G,GAAkB,MAAd0lB,EAAK4gC,KACL,MAAMhjC,EAAe2C,aAAa8D,MAAMxE,KAAKC,UAAUE,GAAO,KAClE,OAAO,EAAIrC,EAAiBwiG,cAAcngG,EAAKnqB,KAAMioJ,EACzD,iHC7GJ,MAAAO,EAAArrJ,EAAA,OACAsrJ,EAAAtrJ,EAAA,OAEA,SAASurJ,EAAaC,GACpB,OAASA,EAAU,EAAK,IAAMA,EAAU,IAAM,EAAI,EAAI,EACxD,CAIA,MAAMC,EAAmB,CACvBC,MAAOH,EAAa,KACpBI,MAAOJ,EAAa,KACpBK,MAAOL,EAAa,MAGtB,SAASM,EAAoBnI,GAC3B,MAAMoI,EAAaL,EAAiB/H,GACpC,GAAIoI,EACF,OAAOA,EAGT,MAAM,IAAI/oJ,MAAM,sBAAsB2gJ,KACxC,CAEA,MAAMqI,EAAY,IAQlB,SAASC,EAAiB7oJ,GACxB,GAAIA,aAAqBqsB,WACvB,OAAOrsB,EACF,GAAI,kBAAoBA,EAC7B,OAAO,EAAAkoJ,EAAAlJ,cAAY,EAAAmJ,EAAA5vD,KAAIv4F,IAGzB,MAAM,IAAIg7B,UAAU,0DACtB,CA4FA,SAAS8tH,EAAa1lF,EAAiBn4D,EAAeI,GACpD,IAAIszB,EAAU,EACd,KAAO1zB,EAAQ0zB,EAAUtzB,GAAiC,IAAzB+3D,EAAIn4D,EAAQ0zB,MACzCA,EAQJ,OALkBykC,EAAIn4D,EAAQ0zB,IAAYiqH,KAEtCjqH,EAGGA,CACT,CAtGA9iC,EAAAA,UAAA,SAA0BmE,EAAgCugJ,GACxD,MAAMwI,EAAiBF,EAAiB7oJ,GAClC2oJ,EAAaD,EAAoBnI,GAIjCyI,EAAwBL,EAAa,EAErCM,EAAcF,EAAenrJ,OAEnC,IAAIk1B,EAAS,EACb,GAxBsBo2H,KAwBlBH,EAAej2H,KACjB,MAAM,IAAIlzB,MAAM,iCAGlB,IAAIupJ,EAAYJ,EAAej2H,KAK/B,GAJa,MAATq2H,IACFA,EAAYJ,EAAej2H,MAGzBm2H,EAAcn2H,EAASq2H,EACzB,MAAM,IAAIvpJ,MACR,8BAA8BupJ,aAAqBF,EAAcn2H,gBAIrE,GAxCc,IAwCVi2H,EAAej2H,KACjB,MAAM,IAAIlzB,MAAM,yCAGlB,MAAMwpJ,EAAUL,EAAej2H,KAE/B,GAAIm2H,EAAcn2H,EAAS,EAAIs2H,EAC7B,MAAM,IAAIxpJ,MACR,4BAA4BwpJ,aAAmBH,EAAcn2H,EAAS,gBAI1E,GAAIk2H,EAAwBI,EAC1B,MAAM,IAAIxpJ,MACR,4BAA4BwpJ,eAAqBJ,oBAIrD,MAAMK,EAAUv2H,EAGhB,GAFAA,GAAUs2H,EA3DI,IA6DVL,EAAej2H,KACjB,MAAM,IAAIlzB,MAAM,yCAGlB,MAAM0pJ,EAAUP,EAAej2H,KAE/B,GAAIm2H,EAAcn2H,IAAWw2H,EAC3B,MAAM,IAAI1pJ,MAAM,4BAA4B0pJ,iBAAuBL,EAAcn2H,MAGnF,GAAIk2H,EAAwBM,EAC1B,MAAM,IAAI1pJ,MACR,4BAA4B0pJ,eAAqBN,oBAIrD,MAAMO,EAAUz2H,EAGhB,GAFAA,GAAUw2H,EAENx2H,IAAWm2H,EACb,MAAM,IAAIrpJ,MAAM,0CAA0CqpJ,EAAcn2H,mBAG1E,MAAM02H,EAAWb,EAAaS,EACxBK,EAAWd,EAAaW,EAExBl+H,EAAM,IAAIiB,WAAWm9H,EAAWJ,EAAUK,EAAWH,GAE3D,IAAKx2H,EAAS,EAAGA,EAAS02H,IAAY12H,EACpC1H,EAAI0H,GAAU,EAEhB1H,EAAI/Y,IAAI02I,EAAep8H,SAAS08H,EAAUlkJ,KAAKuI,KAAK87I,EAAU,GAAIH,EAAUD,GAAUt2H,GAEtFA,EAAS61H,EAET,IAAK,MAAM1mH,EAAInP,EAAQA,EAASmP,EAAIwnH,IAAY32H,EAC9C1H,EAAI0H,GAAU,EAIhB,OAFA1H,EAAI/Y,IAAI02I,EAAep8H,SAAS48H,EAAUpkJ,KAAKuI,KAAK+7I,EAAU,GAAIF,EAAUD,GAAUx2H,IAE/E,EAAAq1H,EAAAngE,SAAO,EAAAkgE,EAAA7O,eAAcjuH,GAC9B,EAgBAvvB,EAAAA,UAAA,SAA0BmE,EAAgCugJ,GACxDvgJ,EAAY6oJ,EAAiB7oJ,GAC7B,MAAM2oJ,EAAaD,EAAoBnI,GAEjCwI,EAAiB/oJ,EAAUpC,OACjC,GAAImrJ,IAAgC,EAAbJ,EACrB,MAAM,IAAI3tH,UACR,IAAIulH,0BAAyC,EAAboI,kBAA+BI,MAInE,MAAMS,EAAWV,EAAa9oJ,EAAW,EAAG2oJ,GACtCc,EAAWX,EAAa9oJ,EAAW2oJ,EAAY3oJ,EAAUpC,QACzDwrJ,EAAUT,EAAaa,EACvBF,EAAUX,EAAac,EAEvBC,EAAU,EAAQN,EAAU,EAAI,EAAIE,EAEpCK,EAAcD,EAAUd,EAExBx9H,EAAM,IAAIiB,YAAYs9H,EAAc,EAAI,GAAKD,GAEnD,IAAI52H,EAAS,EAgCb,OA/BA1H,EAAI0H,KA5IkBo2H,GA6IlBS,EAGFv+H,EAAI0H,KAAY42H,GAIhBt+H,EAAI0H,KAAY81H,IAEhBx9H,EAAI0H,KAAsB,IAAV42H,GAElBt+H,EAAI0H,KAzJU,EA0Jd1H,EAAI0H,KAAYs2H,EACZI,EAAW,GACbp+H,EAAI0H,KAAY,EAChB1H,EAAI/Y,IAAIrS,EAAU2sB,SAAS,EAAGg8H,GAAa71H,GAC3CA,GAAU61H,IAEVv9H,EAAI/Y,IAAIrS,EAAU2sB,SAAS68H,EAAUb,GAAa71H,GAClDA,GAAU61H,EAAaa,GAEzBp+H,EAAI0H,KAnKU,EAoKd1H,EAAI0H,KAAYw2H,EACZG,EAAW,GACbr+H,EAAI0H,KAAY,EAChB1H,EAAI/Y,IAAIrS,EAAU2sB,SAASg8H,GAAa71H,IAExC1H,EAAI/Y,IAAIrS,EAAU2sB,SAASg8H,EAAac,GAAW32H,GAG9C1H,CACT,iBC1NA,IAAIw+H,EACJ,MAAMC,EAAkB,CACtB,EACA,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC1C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC7C,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACtD,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASxDhuJ,EAAQ41D,cAAgB,SAAwBjJ,GAC9C,IAAKA,EAAS,MAAM,IAAI5oD,MAAM,yCAC9B,GAAI4oD,EAAU,GAAKA,EAAU,GAAI,MAAM,IAAI5oD,MAAM,6CACjD,OAAiB,EAAV4oD,EAAc,EACvB,EAQA3sD,EAAQqrI,wBAA0B,SAAkC1+E,GAClE,OAAOqhG,EAAgBrhG,EACzB,EAQA3sD,EAAQiuJ,YAAc,SAAUpqJ,GAC9B,IAAIqqJ,EAAQ,EAEZ,KAAgB,IAATrqJ,GACLqqJ,IACArqJ,KAAU,EAGZ,OAAOqqJ,CACT,EAEAluJ,EAAQiuI,kBAAoB,SAA4BljF,GACtD,GAAiB,oBAANA,EACT,MAAM,IAAIhnD,MAAM,yCAGlBgqJ,EAAiBhjG,CACnB,EAEA/qD,EAAQmuJ,mBAAqB,WAC3B,MAAiC,qBAAnBJ,CAChB,EAEA/tJ,EAAQouJ,OAAS,SAAiB70C,GAChC,OAAOw0C,EAAex0C,EACxB,kKC9DA,MAAAv6F,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OACAD,EAAAC,EAAA,OAEA8wD,EAAA9wD,EAAA,OAWahB,EAAAA,uBAAwB,EAAAgf,EAAAY,QAA6D,EAC9F,EAAAX,EAAApa,WAAU,cACV,EAAAoa,EAAApa,WAAU,qBAGD7E,EAAAA,sBAAwBA,EAAAquJ,sBAAsBjuI,KAE3DpgB,EAAAA,wBAAA,SAAwCuB,GACpC,MAAM0wD,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAcm8F,gBAAiB/sJ,EAAK8wD,SAC3E,GAAsB,OAAlBJ,EAAwB,CACxB,MAAM,UAAErvD,EAAS,gBAAE2rJ,GAAoBvuJ,EAAAquJ,sBAAsB1uI,OAAOsyC,GAGpE,MAAO,CACHrvD,UAAWA,EAAU6d,OAAO1f,EAAAiE,UAAUigF,SAAW,KAAOriF,EACxD2rJ,gBAAiBA,EAAgB9tI,OAAO1f,EAAAiE,UAAUigF,SAAW,KAAOspE,GAGxE,OAAO,IAEf,2gBCnCA7+I,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,MAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,iCCXAkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQizD,0BAAuB,EAC/B,MAAM5tD,EAAUrE,EAAQ,OAClBoE,EAAapE,EAAQ,OACrBmE,EAASnE,EAAQ,OACjByC,EAAWzC,EAAQ,OACnBuC,EAAavC,EAAQ,OAC3B,MAAMiyD,EACF9kD,WAAAA,CAAYvH,GACR1G,KAAK0G,QAAUA,CACnB,CACAi/F,aAAAA,CAAchiG,GACV,GAAoB,KAAhBA,EAAK9B,OACL,MAAM,IAAIgC,MAAM,qBACpB,OAAOqB,EAAWN,KAAKoB,+BAA8B,EAAIb,EAAQmpJ,kBAAkB3qJ,GACvF,CACA0C,UAAAA,CAAW3C,EAAQC,EAAM4C,GACrB,IAAK5C,EAAK8C,eAAezG,KAAK0G,SAC1B,MAAM,IAAI7C,MAAM,yBACpB,GAA2B,KAAvB0C,EAAY1E,OACZ,MAAM,IAAIgC,MAAM,sCACpB,MAAMwsB,EAAS9sB,EAASgB,OAAOC,KAAK+B,EAAa,OACjD,GAAsB,KAAlB8pB,EAAOxuB,OACP,MAAM,IAAIgC,MAAM,oCACpB,MAAM0qJ,EAAgBlrJ,EAAW,UAAUU,OAAOssB,GAAQrsB,SAC1D,IAAKL,EAAK0gE,aAAY,EAAIl/D,EAAQgmD,OAAOnrD,KAAK2lG,cAAc4oD,KACxD,MAAM,IAAI1qJ,MAAM,oDACpB,MAAM2qJ,GAAe,EAAIrpJ,EAAQmpJ,kBAAkBj+H,GACnD,OAAOhsB,QAAQC,QAAQ,CAAE4C,YAAa,GAAIC,QAASqnJ,GACvD,CACAhnJ,MAAAA,GACI,OAAOurD,EAAqBtrD,GAChC,CACAC,OAAAA,GACI,OAAOqrD,EAAqBprD,IAChC,CACAmtH,kBAAAA,CAAmBnmG,GACf,OAAO,EAAIxpB,EAAQspJ,kBAAkB9/H,GAAQlqB,SAAS,MAC1D,EAEJ3E,EAAQizD,qBAAuBA,EAC/BA,EAAqBprD,KAAO1C,EAAO2C,cAAc66F,KACjD1vC,EAAqBtrD,IAAM,CAAEK,GAAI,4XCtCjC,MAAM+5C,EAAMn8C,OAAO,GACb64C,EAAM74C,OAAO,GACbugD,EAAMvgD,OAAO,GAWnB,SAAgB87C,EAAQ/wC,GACtB,OACEA,aAAa6f,YACP,MAAL7f,GAA0B,kBAANA,GAAyC,eAAvBA,EAAExC,YAAY2D,IAEzD,CALA9R,EAAAA,QAAA0hD,EAQA,MAAMi7C,EAAwBtyF,MAAM3F,KAAK,CAAE3C,OAAQ,MAAO,CAAC49B,EAAGz0B,IAC5DA,EAAEvG,SAAS,IAAI4mB,SAAS,EAAG,OAK7B,SAAgBuzB,EAAWT,GACzB,IAAKqD,EAAQrD,GAAQ,MAAM,IAAIt6C,MAAM,uBAErC,IAAIiD,EAAM,GACV,IAAK,IAAIkE,EAAI,EAAGA,EAAImzC,EAAMt8C,OAAQmJ,IAChClE,GAAO21F,EAAMt+C,EAAMnzC,IAErB,OAAOlE,CACT,CAEA,SAAgBm+C,EAAoB9jB,GAClC,MAAMr6B,EAAMq6B,EAAI18B,SAAS,IACzB,OAAoB,EAAbqC,EAAIjF,OAAa,IAAIiF,IAAQA,CACtC,CAEA,SAAgB80F,EAAY90F,GAC1B,GAAmB,kBAARA,EAAkB,MAAM,IAAIjD,MAAM,mCAAqCiD,GAElF,OAAOpB,OAAe,KAARoB,EAAa,IAAM,KAAKA,IACxC,CAnBAhH,EAAAA,WAAA8+C,EAUA9+C,EAAAA,oBAAAmlD,EAKAnlD,EAAAA,YAAA87F,EAOA,MAAM6iB,EAAe,GAAfA,EAAuB,GAAvBA,EAA+B,GAA/BA,EAAuC,GAAvCA,EAA+C,GAA/CA,EAAuD,IAC7D,SAASC,EAAcC,GACrB,OAAIA,GAAQF,GAAaE,GAAQF,EAAkBE,EAAOF,EACtDE,GAAQF,GAAaE,GAAQF,EAAkBE,GAAQF,EAAY,IACnEE,GAAQF,GAAaE,GAAQF,EAAkBE,GAAQF,EAAY,SAAvE,CAEF,CAKA,SAAgB/9D,EAAW55C,GACzB,GAAmB,kBAARA,EAAkB,MAAM,IAAIjD,MAAM,mCAAqCiD,GAClF,MAAM83G,EAAK93G,EAAIjF,OACTg9G,EAAKD,EAAK,EAChB,GAAIA,EAAK,EAAG,MAAM,IAAI/6G,MAAM,0DAA4D+6G,GACxF,MAAM/hB,EAAQ,IAAIvsE,WAAWuuF,GAC7B,IAAK,IAAIC,EAAK,EAAG76E,EAAK,EAAG66E,EAAKD,EAAIC,IAAM76E,GAAM,EAAG,CAC/C,MAAMzlB,EAAKkgG,EAAc53G,EAAIgK,WAAWmzB,IAClC86E,EAAKL,EAAc53G,EAAIgK,WAAWmzB,EAAK,IAC7C,QAAWniC,IAAP0c,QAA2B1c,IAAPi9G,EAAkB,CACxC,MAAMJ,EAAO73G,EAAIm9B,GAAMn9B,EAAIm9B,EAAK,GAChC,MAAM,IAAIpgC,MAAM,+CAAiD86G,EAAO,cAAgB16E,EAC1F,CACA44D,EAAMiiB,GAAW,GAALtgG,EAAUugG,CACxB,CACA,OAAOliB,CACT,CAWA,SAAgBh+C,EAAgBtuC,EAAoB4B,GAClD,OAAOuuC,EAAWnwC,EAAE9L,SAAS,IAAI4mB,SAAe,EAANlZ,EAAS,KACrD,CA0CA,SAAgB9H,IACd,IAAIoN,EAAM,EACV,IAAK,IAAIzM,EAAI,EAAGA,EAAIpJ,UAAOC,OAAQmJ,IAAK,CACtC,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB,IAAKw2C,EAAQ/wC,GAAI,MAAM,IAAI5M,MAAM,uBACjC4T,GAAOhH,EAAE5O,MACX,CACA,IAAI+vB,EAAM,IAAItB,WAAW7Y,GACrB+kF,EAAM,EACV,IAAK,IAAIxxF,EAAI,EAAGA,EAAIpJ,UAAOC,OAAQmJ,IAAK,CACtC,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB4mB,EAAItb,IAAI7F,EAAG+rF,GACXA,GAAO/rF,EAAE5O,MACX,CACA,OAAO+vB,CACT,CAtFA9xB,EAAAA,WAAA4gD,EAmBA5gD,EAAAA,gBAAA,SAAgCq+C,GAC9B,OAAOy9C,EAAYh9C,EAAWT,GAChC,EACAr+C,EAAAA,gBAAA,SAAgCq+C,GAC9B,IAAKqD,EAAQrD,GAAQ,MAAM,IAAIt6C,MAAM,uBACrC,OAAO+3F,EAAYh9C,EAAWtuB,WAAW9rB,KAAK25C,GAAOvwC,WACvD,EAEA9N,EAAAA,gBAAA++C,EAGA/+C,EAAAA,gBAAA,SAAgCyQ,EAAoB4B,GAClD,OAAO0sC,EAAgBtuC,EAAG4B,GAAKvE,SACjC,EAEA9N,EAAAA,mBAAA,SAAmCyQ,GACjC,OAAOmwC,EAAWuE,EAAoB10C,GACxC,EAWAzQ,EAAAA,YAAA,SAA4B4uJ,EAAe5nJ,EAAU6nJ,GACnD,IAAI/8H,EACJ,GAAmB,kBAAR9qB,EACT,IACE8qB,EAAM8uB,EAAW55C,EACnB,CAAE,MAAOyK,GACP,MAAM,IAAI1N,MAAM,GAAG6qJ,oCAAwC5nJ,cAAgByK,IAC7E,KACK,KAAIiwC,EAAQ16C,GAKjB,MAAM,IAAIjD,MAAM,GAAG6qJ,sCAFnB98H,EAAMtB,WAAW9rB,KAAKsC,EAGxB,CACA,MAAMqL,EAAMyf,EAAI/vB,OAChB,GAA8B,kBAAnB8sJ,GAA+Bx8I,IAAQw8I,EAChD,MAAM,IAAI9qJ,MAAM,GAAG6qJ,cAAkBC,gBAA6Bx8I,KACpE,OAAOyf,CACT,EAKA9xB,EAAAA,YAAAuK,EAkBAvK,EAAAA,WAAA,SAA2B2Q,EAAeS,GACxC,GAAIT,EAAE5O,SAAWqP,EAAErP,OAAQ,OAAO,EAClC,IAAI8tC,EAAO,EACX,IAAK,IAAI3kC,EAAI,EAAGA,EAAIyF,EAAE5O,OAAQmJ,IAAK2kC,GAAQl/B,EAAEzF,GAAKkG,EAAElG,GACpD,OAAgB,IAAT2kC,CACT,EASA7vC,EAAAA,YAAA,SAA4BkS,GAC1B,GAAmB,kBAARA,EAAkB,MAAM,IAAInO,MAAM,2CAA2CmO,GACxF,OAAO,IAAIse,YAAW,IAAImnD,aAAct3D,OAAOnO,GACjD,EAQAlS,EAAAA,OAAA,SAAuByQ,GACrB,IAAI4B,EACJ,IAAKA,EAAM,EAAG5B,EAAIsxC,EAAKtxC,IAAMguC,EAAKpsC,GAAO,GACzC,OAAOA,CACT,EAOArS,EAAAA,OAAA,SAAuByQ,EAAW4f,GAChC,OAAQ5f,GAAK7K,OAAOyqB,GAAQouB,CAC9B,EAKaz+C,EAAAA,OAAS8uJ,CAACr+I,EAAW4f,EAAajtB,IACtCqN,GAAMrN,EAAQq7C,EAAMsD,IAAQn8C,OAAOyqB,GAO/BrwB,EAAAA,QAAWyQ,IAAe01C,GAAOvgD,OAAO6K,EAAI,IAAMguC,EAI/D,MAAMswG,EAAOlrJ,GAAe,IAAI2sB,WAAW3sB,GACrCmrJ,EAAQ92I,GAAasY,WAAW9rB,KAAKwT,GAS3ClY,EAAAA,eAAA,SACEu9F,EACAC,EACAyxD,GAEA,GAAuB,kBAAZ1xD,GAAwBA,EAAU,EAAG,MAAM,IAAIx5F,MAAM,4BAChE,GAAwB,kBAAby5F,GAAyBA,EAAW,EAAG,MAAM,IAAIz5F,MAAM,6BAClE,GAAsB,oBAAXkrJ,EAAuB,MAAM,IAAIlrJ,MAAM,6BAElD,IAAIoQ,EAAI46I,EAAIxxD,GACR/rF,EAAIu9I,EAAIxxD,GACRryF,EAAI,EACR,MAAMgkJ,EAAQA,KACZ/6I,EAAEgd,KAAK,GACP3f,EAAE2f,KAAK,GACPjmB,EAAI,CAAC,EAEDwmB,EAAI,mBAAAvnB,EAAArI,UAAAC,OAAIqP,EAAe,IAAA/G,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAf8G,EAAe9G,GAAAxI,UAAAwI,GAAA,OAAK2kJ,EAAOz9I,EAAG2C,KAAM/C,EAAE,EAC9CwsF,EAAS,WAAiB,IAAhBp7C,EAAI1gD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGitJ,IAErBv9I,EAAIkgB,EAAEs9H,EAAK,CAAC,IAAQxsG,GACpBruC,EAAIud,IACgB,IAAhB8wB,EAAKzgD,SACTyP,EAAIkgB,EAAEs9H,EAAK,CAAC,IAAQxsG,GACpBruC,EAAIud,IACN,EACMy9H,EAAMA,KAEV,GAAIjkJ,KAAO,IAAM,MAAM,IAAInH,MAAM,2BACjC,IAAIsO,EAAM,EACV,MAAMpL,EAAoB,GAC1B,KAAOoL,EAAMmrF,GAAU,CACrBrpF,EAAIud,IACJ,MAAMqsE,EAAK5pF,EAAEvG,QACb3G,EAAIO,KAAKu2F,GACT1rF,GAAO8B,EAAEpS,MACX,CACA,OAAOwI,KAAetD,EAAI,EAU5B,MARiBmoJ,CAAC5sG,EAAkB6sG,KAGlC,IAAIv9H,EACJ,IAHAo9H,IACAtxD,EAAOp7C,KAEE1wB,EAAMu9H,EAAKF,OAASvxD,IAE7B,OADAsxD,IACOp9H,CAAG,CAGd,EAIA,MAAMw9H,EAAe,CACnBC,OAAS1gJ,GAA4B,kBAARA,EAC7B2gJ,SAAW3gJ,GAA4B,oBAARA,EAC/B4gJ,QAAU5gJ,GAA4B,mBAARA,EAC9BgyB,OAAShyB,GAA4B,kBAARA,EAC7B6gJ,mBAAqB7gJ,GAA4B,kBAARA,GAAoB6yC,EAAQ7yC,GACrEyvD,cAAgBzvD,GAAawgB,OAAOivC,cAAczvD,GAClDkuF,MAAQluF,GAAaxE,MAAMi3B,QAAQzyB,GACnC8gJ,MAAOA,CAAC9gJ,EAAU+uD,IAAiBA,EAAe5gB,GAAGx4B,QAAQ3V,GAC7D/J,KAAO+J,GAA4B,oBAARA,GAAsBwgB,OAAOivC,cAAczvD,EAAIohB,YAM5EjwB,EAAAA,eAAA,SACE49D,EACAq0E,GAC6B,IAA7B2d,EAAA9tJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA2B,CAAC,EAE5B,MAAM+tJ,EAAaA,CAACC,EAAoBjoJ,EAAiBkoJ,KACvD,MAAMC,EAAWV,EAAaznJ,GAC9B,GAAwB,oBAAbmoJ,EACT,MAAM,IAAIjsJ,MAAM,sBAAsB8D,yBAExC,MAAMgH,EAAM+uD,EAAOkyF,GACnB,KAAIC,QAAsB/tJ,IAAR6M,KACbmhJ,EAASnhJ,EAAK+uD,GACjB,MAAM,IAAI75D,MACR,iBAAiBgO,OAAO+9I,MAAcjhJ,aAAeA,gBAAkBhH,IAE3E,EAEF,IAAK,MAAOioJ,EAAWjoJ,KAAS3E,OAAO+sJ,QAAQhe,GAAa4d,EAAWC,EAAWjoJ,GAAO,GACzF,IAAK,MAAOioJ,EAAWjoJ,KAAS3E,OAAO+sJ,QAAQL,GAAgBC,EAAWC,EAAWjoJ,GAAO,GAC5F,OAAO+1D,CACT,gCClTA16D,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQilB,gBAAa,EACrB,MAAMirI,EAAclvJ,EAAQ,OAC5B,MAAMikB,UAAmBirI,EAAYC,UACjChiJ,WAAAA,CAAYS,EAAYigB,GACpBvoB,MAAMsI,GACN1O,KAAK2uB,OAASA,CAClB,EAEJ7uB,EAAQilB,WAAaA,qbC0vBrBjlB,EAAAA,SAAAu0I,EAwDAv0I,EAAAA,QAAAowJ,EA6hBApwJ,EAAAA,OAAA,SAA0BqS,EAAag+I,GACrC,IAAKD,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,+BAA+BssJ,KACpE,OAAO94E,EAAM+4E,EAAYj+I,GAAMvE,EAAQuiJ,GACzC,EAsEArwJ,EAAAA,MAAAu3E,EAuCAv3E,EAAAA,KAAA,SAAwBi3G,GACtB,GAAkB,oBAAPA,EAAmB,MAAM,IAAIlzG,MAAM,uCAAuCkzG,GACrF,OAAO,EAAAj3G,EAAAm2B,MAAK,CACVo6H,aAAcA,CAAC1uH,EAAWz+B,IAAa6zG,IAAKs5C,aAAa1uH,EAAGz+B,GAC5DotJ,aAAez/I,GAAiBkmG,IAAKu5C,aAAaz/I,IAEtD,EAyDA/Q,EAAAA,QAAA,SACE6xI,EACAwe,EACAI,GAEA,IAAKL,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,gCAAgCssJ,KACrE,GAAoB,kBAATxe,IAAsBue,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,uBAAuB8tI,KACxF,OAAO,EAAA7xI,EAAAm2B,MAAK,CACVo6H,aAAcA,CAAC1uH,EAAWz+B,KACJ,kBAATyuI,EACL6e,EAAKlsJ,QAASq9B,EAAcyoE,MAAOunC,GAAOwe,EAAME,aAAa1uH,EAAGz+B,GAC3DqtJ,GAAKJ,EAAME,aAAa1uH,EAAG4uH,IAEpC5e,EAAK0e,aAAa1uH,IAAKz+B,GACjBA,EAAOitJ,EAAME,aAAa1uH,EAAGz+B,GAC1BqtJ,GAAKJ,EAAME,aAAa1uH,EAAG4uH,GACtC,EAEFD,aAAez/I,IACb,IAAI4/I,GAAU,EAId,GAH8BA,EAAV,kBAAT9e,IAA+B6e,EAAKlsJ,QAASuM,EAAcu5F,MAAOunC,GAC9DA,EAAK2e,aAAaz/I,GAE7B4/I,EAAS,OAAON,EAAMG,aAAaz/I,GAC9B0/I,GAAKJ,EAAMG,aAAaz/I,EAC3B,GAGZ,EAeA/Q,EAAAA,SAAA,SACE4wJ,EACAP,EACAI,GAEA,IAAKL,EAAQQ,KAAUR,EAAQC,GAC7B,MAAM,IAAItsJ,MAAM,8CAA8C6sJ,WAAcP,KAC9E,OAAO,EAAArwJ,EAAAm2B,MAAK,CACV/L,UAAcpoB,IAARyuJ,GAAqBG,EAAKxmI,MAAQimI,EAAMjmI,KAAOwmI,EAAKxmI,KAAOimI,EAAMjmI,UAAOpoB,EAC9EuuJ,aAAcA,CAAC1uH,EAAWz+B,KACxBwtJ,EAAKL,aAAa1uH,IAAKz+B,GACnBA,EAAOitJ,EAAME,aAAa1uH,EAAGz+B,QAChBpB,IAARyuJ,GAAmBJ,EAAME,aAAa1uH,EAAG4uH,EAAI,EAExDD,aAAez/I,IACb,GAAI6/I,EAAKJ,aAAaz/I,GAAI,OAAOs/I,EAAMG,aAAaz/I,QACnC/O,IAARyuJ,GAAmBJ,EAAMG,aAAaz/I,EACzC,GAGZ,EAYA/Q,EAAAA,MAAA6wJ,EA8CA7wJ,EAAAA,SAAA,SAA4BsR,GAC1B,OAAO,EAAAtR,EAAAm2B,MAAK,CACVo6H,aAAcA,CAAC5lC,EAAYvnH,KACzB,GAAIA,IAAUkO,EAAG,MAAM,IAAIvN,MAAM,2BAA2BX,WAAekO,KAAK,EAElFk/I,aAAeM,GAAkBx/I,GAErC,EA0BAtR,EAAAA,OAAA,SACEmqG,GAEA,IAAK4mD,EAAc5mD,GAAS,MAAM,IAAIpmG,MAAM,sCAAsComG,KAClF,IAAK,MAAMr4F,KAAQq4F,EACjB,IAAKimD,EAAQjmD,EAAOr4F,IAAQ,MAAM,IAAI/N,MAAM,iBAAiB+N,sBAE/D,OAAO,EAAA9R,EAAAm2B,MAAK,CACV/L,KAAM4mI,EAAO9tJ,OAAO+jB,OAAOkjF,IAC3BomD,aAAcA,CAAC1uH,EAAWz+B,KACvBy+B,EAAcovH,QAAQ7tJ,GAAQ8tJ,IAC7B,IAAK,MAAMp/I,KAAQq4F,EACjB+mD,EAAQp/I,GAAM,IAAMq4F,EAAOr4F,GAAMy+I,aAAa1uH,EAAIz+B,EAAY0O,KAAO,GACvE,EAEJ0+I,aAAez/I,IACb,MAAM+gB,EAAkB,CAAC,EAIzB,OAHC/gB,EAAckgJ,QAAQn/H,GAAMo/H,IAC3B,IAAK,MAAMp/I,KAAQq4F,EAAQ+mD,EAAQp/I,GAAM,IAAOggB,EAAIhgB,GAAQq4F,EAAOr4F,GAAM0+I,aAAaz/I,IAAI,IAErF+gB,CAAQ,EAEjByiH,SAAWnxI,IACT,GAAqB,kBAAVA,GAAgC,OAAVA,EAC/B,MAAM,IAAIW,MAAM,yBAAyBX,KAC3C,OAAOA,CAAK,GAGlB,EAQApD,EAAAA,MAAA,SAGEmqG,GACA,IAAK9/F,MAAMi3B,QAAQ6oE,GACjB,MAAM,IAAIpmG,MAAM,4BAA4BomG,sBAC9C,IAAK,IAAIj/F,EAAI,EAAGA,EAAIi/F,EAAOpoG,OAAQmJ,IACjC,IAAKklJ,EAAQjmD,EAAOj/F,IAAK,MAAM,IAAInH,MAAM,gBAAgBmH,sBAE3D,OAAO,EAAAlL,EAAAm2B,MAAK,CACV/L,KAAM4mI,EAAO7mD,GACbomD,aAAcA,CAAC1uH,EAAWz+B,KAExB,IAAKiH,MAAMi3B,QAAQl+B,GAAQ,MAAMy+B,EAAE/X,IAAI,wBAAwB1mB,KAC9Dy+B,EAAcovH,QAAQ7tJ,GAAQ8tJ,IAC7B,IAAK,IAAIhmJ,EAAI,EAAGA,EAAIi/F,EAAOpoG,OAAQmJ,IACjCgmJ,EAAQ,GAAGhmJ,KAAK,IAAMi/F,EAAOj/F,GAAGqlJ,aAAa1uH,EAAGz+B,EAAM8H,KAAI,GAC5D,EAEJslJ,aAAez/I,IACb,MAAM+gB,EAAW,GAKjB,OAJC/gB,EAAckgJ,QAAQn/H,GAAMo/H,IAC3B,IAAK,IAAIhmJ,EAAI,EAAGA,EAAIi/F,EAAOpoG,OAAQmJ,IACjCgmJ,EAAQ,GAAGhmJ,KAAK,IAAM4mB,EAAItqB,KAAK2iG,EAAOj/F,GAAGslJ,aAAaz/I,KAAI,IAEvD+gB,CAAG,EAEZyiH,SAAWnxI,IACT,IAAKiH,MAAMi3B,QAAQl+B,GAAQ,MAAM,IAAIW,MAAM,wBAAwBX,KACnE,GAAIA,EAAMrB,SAAWooG,EAAOpoG,OAC1B,MAAM,IAAIgC,MAAM,uBAAuBX,EAAMrB,oBAAoBooG,EAAOpoG,UAC1E,OAAOqB,CAAK,GAGlB,EAaApD,EAAAA,MAAA,SAAyBqS,EAAag+I,GACpC,IAAKD,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,8BAA8BssJ,KAGnE,MAAMc,EAAUC,EAA2B,kBAAR/+I,EAAmB,MAAMA,IAAQA,GACpE,OAAO,EAAArS,EAAAm2B,MAAK,CACV/L,KAAqB,kBAAR/X,GAAoBg+I,EAAMjmI,KAAO/X,EAAMg+I,EAAMjmI,UAAOpoB,EACjEuuJ,aAAcA,CAAC1uH,EAAWz+B,KACxB,MAAMunH,EAAK9oF,EACX8oF,EAAGsmC,QAAQ7tJ,GAAQ8tJ,IACZxvG,EAAQrvC,IAAM8+I,EAAQZ,aAAa1uH,EAAGz+B,EAAMrB,QACjD,IAAK,IAAImJ,EAAI,EAAGA,EAAI9H,EAAMrB,OAAQmJ,IAChCgmJ,EAAQ,GAAGhmJ,KAAK,KACd,MAAMmmJ,EAAMjuJ,EAAM8H,GACZomJ,EAAYzvH,EAAcxR,IAEhC,GADAggI,EAAME,aAAa1uH,EAAGwvH,GAClB3vG,EAAQrvC,GAAM,CAEhB,GAAIA,EAAItQ,OAAS4oH,EAAGt6F,IAAMihI,EAAU,OACpC,MAAMztJ,EAAO8mH,EAAG4mC,QAAO,GAAOzgI,SAASwgI,EAAU3mC,EAAGt6F,KAGpD,GAAIswC,EAAW98D,EAAKitB,SAAS,EAAGze,EAAItQ,QAASsQ,GAC3C,MAAMs4G,EAAG7gG,IACP,wDAAwDunI,UAAYxtJ,IAE1E,IAEJ,IAEE69C,EAAQrvC,IAAMwvB,EAAEwc,MAAMhsC,EAAI,EAEhCm+I,aAAez/I,IACb,MAAM+gB,EAAW,GAsBjB,OArBC/gB,EAAckgJ,QAAQn/H,GAAMo/H,IAC3B,GAAY,OAAR7+I,EACF,IAAK,IAAInH,EAAI,GAAI6F,EAAEygJ,UACjBN,EAAQ,GAAGhmJ,KAAK,IAAM4mB,EAAItqB,KAAK6oJ,EAAMG,aAAaz/I,QAC9Cs/I,EAAMjmI,MAAQrZ,EAAE0gJ,UAAYpB,EAAMjmI,OAFZlf,UAIvB,GAAIw2C,EAAQrvC,GACjB,IAAK,IAAInH,EAAI,GAAKA,IAAK,CACrB,GAAIy1D,EAAW5vD,EAAEstC,MAAMhsC,EAAItQ,QAAQ,GAAOsQ,GAAM,CAE9CtB,EAAEstC,MAAMhsC,EAAItQ,QACZ,KACF,CACAmvJ,EAAQ,GAAGhmJ,KAAK,IAAM4mB,EAAItqB,KAAK6oJ,EAAMG,aAAaz/I,KACpD,KACK,CACL,IAAIhP,EACJmvJ,EAAQ,YAAY,IAAOnvJ,EAASovJ,EAAQX,aAAaz/I,KACzD,IAAK,IAAI7F,EAAI,EAAGA,EAAInJ,EAASmJ,IAAKgmJ,EAAQ,GAAGhmJ,KAAK,IAAM4mB,EAAItqB,KAAK6oJ,EAAMG,aAAaz/I,KACtF,KAEK+gB,CAAG,EAEZyiH,SAAWnxI,IACT,IAAKiH,MAAMi3B,QAAQl+B,GAAQ,MAAM,IAAIW,MAAM,wBAAwBX,KACnE,OAAOA,CAAK,GAGlB,EAoBApD,EAAAA,IAAA4I,EAwCA5I,EAAAA,IAAAglD,EAoDAhlD,EAAAA,UAAA,SAME0xJ,EAA+BC,GAC/B,IAAKvB,EAAQsB,GAAW,MAAM,IAAI3tJ,MAAM,gCAAgCihD,KACxE,IAAK+rG,EAAcY,GAAW,MAAM,IAAI5tJ,MAAM,8CAC9C,MAAM6tJ,EAAqC,CAAC,EACtCC,EAA2C,CAAC,EAClD,IAAK,MAAM3nJ,KAAOynJ,EAAU,CAC1B,MAAMx9I,EAAIw9I,EAASznJ,GACnB0nJ,EAAS1nJ,GAAOiK,EAAE,GAClB09I,EAAS3nJ,GAAOiK,EAAE,EACpB,CACA,OAAO6wC,EAAIp8C,EAAI8oJ,EAAUE,GAAWC,EACtC,EAWA7xJ,EAAAA,OAAA,SACE23G,GACW,IAAXjb,EAAG56F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAEH,GAAmB,mBAAR46F,EAAmB,MAAM,IAAI34F,MAAM,4CAA4C24F,GAC1F,IAAKryF,MAAMi3B,QAAQq2E,GAAQ,MAAM,IAAI5zG,MAAM,gCAC3C,IAAK,MAAM+N,KAAQ6lG,EACjB,GAAoB,kBAAT7lG,EAAmB,MAAM,IAAI/N,MAAM,2CAEhD,OAAO,EAAA/D,EAAAm2B,MAAK,CACVo6H,aAAcA,CAAC1uH,EAAWz+B,KACxB,IAAK,IAAI8H,EAAI,EAAGA,EAAIysG,EAAM51G,OAAQmJ,IAAK22B,EAAE7K,MAAO5zB,EAAcu0G,EAAMzsG,IAAK,GACrEwxF,GAAOib,EAAM51G,OAAS,GAAG8/B,EAAE7K,KAAK,EAAG,EAAK2gF,EAAM51G,OAAS,EAAG,EAEhEyuJ,aAAez/I,IACb,MAAM9J,EAA+B,CAAC,EACtC,IAAK,IAAIiE,EAAI,EAAGA,EAAIysG,EAAM51G,OAAQmJ,IAAKjE,EAAI0wG,EAAMzsG,MAAQ6F,EAAEimB,KAAK,GAEhE,OADI0lE,GAAOib,EAAM51G,OAAS,GAAGgP,EAAEimB,KAAK,EAAK2gF,EAAM51G,OAAS,GACjDkF,CAAG,EAEZstI,SAAWnxI,IACT,IAAK2tJ,EAAc3tJ,GAAQ,MAAM,IAAIW,MAAM,yBAAyBX,KACpE,IAAK,MAAM+Q,KAAKjR,OAAO+jB,OAAO7jB,GAC5B,GAAiB,mBAAN+Q,EAAiB,MAAM,IAAIpQ,MAAM,oBAE9C,OAAOX,CAAK,GAGlB,EAqBApD,EAAAA,QAAA,SACEkuI,EACAmiB,EACAyB,GAEA,IAAKx9I,EAAM45H,IAAcA,GAAa,EAAG,MAAM,IAAInqI,MAAM,4BAA4BmqI,KACrF,IAAKkiB,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,gCAAgCssJ,KACrE,QAAcruJ,IAAV8vJ,GAAwC,oBAAVA,EAChC,MAAM,IAAI/tJ,MAAM,+BAA+B+tJ,GACjD,MAAMC,EAASD,GAAS9xJ,EAAAgyJ,QACxB,IAAK3B,EAAMjmI,KAAM,MAAM,IAAIrmB,MAAM,oCACjC,OAAO,EAAA/D,EAAAm2B,MAAK,CACV/L,KAAMimI,EAAMjmI,KAAO6nI,EAAU/jB,EAAWmiB,EAAMjmI,MAC9CmmI,aAAcA,CAAC1uH,EAAWz+B,KACxB,MAAM8uJ,EAAWD,EAAU/jB,EAAWmiB,EAAMjmI,MAC5C,IAAK,IAAIlf,EAAI,EAAGA,EAAIgnJ,EAAUhnJ,IAAK22B,EAAEpS,KAAKsiI,EAAO7mJ,IACjDmlJ,EAAME,aAAa1uH,EAAGz+B,EAAM,EAE9BotJ,aAAez/I,IACbA,EAAEstC,MAAM4zG,EAAU/jB,EAAWmiB,EAAMjmI,OAC5BimI,EAAMG,aAAaz/I,KAGhC,EAcA/Q,EAAAA,SAAA,SACEkuI,EACAmiB,EACAyB,GAEA,IAAK1B,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,iCAAiCssJ,KACtE,IAAK/7I,EAAM45H,IAAcA,GAAa,EAAG,MAAM,IAAInqI,MAAM,4BAA4BmqI,KACrF,QAAclsI,IAAV8vJ,GAAwC,oBAAVA,EAChC,MAAM,IAAI/tJ,MAAM,gCAAgC+tJ,GAClD,MAAMC,EAASD,GAAS9xJ,EAAAgyJ,QACxB,OAAO,EAAAhyJ,EAAAm2B,MAAK,CACV/L,KAAMimI,EAAMjmI,KAAOimI,EAAMjmI,KAAO6nI,EAAU/jB,EAAWmiB,EAAMjmI,WAAQpoB,EACnEuuJ,aAAcA,CAAC1uH,EAAWz+B,KACxB,MAAMunH,EAAK9oF,EACLxR,EAAMs6F,EAAGt6F,IACfggI,EAAME,aAAa1uH,EAAGz+B,GACtB,MAAM8uJ,EAAWD,EAAU/jB,EAAWvjB,EAAGt6F,IAAMA,GAC/C,IAAK,IAAInlB,EAAI,EAAGA,EAAIgnJ,EAAUhnJ,IAAK22B,EAAEpS,KAAKsiI,EAAO7mJ,GAAG,EAEtDslJ,aAAez/I,IACb,MAAM3B,EAAQ2B,EAAEsf,IACVyB,EAAMu+H,EAAMG,aAAaz/I,GAE/B,OADAA,EAAEstC,MAAM4zG,EAAU/jB,EAAWn9H,EAAEsf,IAAMjhB,IAC9B0iB,CAAG,GAGhB,EAcA9xB,EAAAA,QAAA,SACEmyJ,EACA9B,GACa,IAAb+B,EAAKtwJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAEL,IAAKsuJ,EAAQ+B,GAAM,MAAM,IAAIpuJ,MAAM,8BAA8BouJ,KACjE,IAAK/B,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,gCAAgCssJ,KACrE,GAAqB,mBAAV+B,EACT,MAAM,IAAIruJ,MAAM,+CAA+CquJ,GACjE,IAAKD,EAAI/nI,KAAM,MAAM,IAAIrmB,MAAM,mBAC/B,OAAO,EAAA/D,EAAAm2B,MAAK,CACV/L,KAAMgoI,EAAQD,EAAI/nI,UAAOpoB,EACzBuuJ,aAAcA,CAAC1uH,EAAWz+B,KACxB,MAAMunH,EAAK9oF,EACLzyB,EAAQu7G,EAAGt6F,IACjB8hI,EAAI5B,aAAa1uH,EAAG,GACpB8oF,EAAG0nC,KAAK7qJ,KAAK,CAAE6oB,IAAKjhB,EAAO+iJ,MAAK5hI,OAAQ8/H,EAAMhwI,OAAOjd,IAAS,EAEhEotJ,aAAez/I,IACb,MAAMuhJ,EAASH,EAAI3B,aAAaz/I,GAEhC,OADCA,EAAcwhJ,kBACRlC,EAAMG,aAAaz/I,EAAEyhJ,aAAaF,GAAQ,GAGvD,EAplEA,MAAAntJ,EAAAnE,EAAA,OA6CA,SAAS2/D,EAAWhwD,EAAeS,GACjC,GAAIT,EAAE5O,SAAWqP,EAAErP,OAAQ,OAAO,EAClC,IAAK,IAAImJ,EAAI,EAAGA,EAAIyF,EAAE5O,OAAQmJ,IAAK,GAAIyF,EAAEzF,KAAOkG,EAAElG,GAAI,OAAO,EAC7D,OAAO,CACT,CAEA,SAASw2C,EAAQ/wC,GACf,OAAOA,aAAa6f,YAAemO,YAAYC,OAAOjuB,IAA6B,eAAvBA,EAAExC,YAAY2D,IAC5E,CAba9R,EAAAA,MAAoC,IAAIwwB,WAExCxwB,EAAAA,KAAmC,IAAIwwB,WAAW,CAAC,IAuChE,MAAME,EAAcxY,GAAoB,IAAIqmG,SAASrmG,EAAIqY,OAAQrY,EAAIkZ,WAAYlZ,EAAI+mB,YAOrF,SAAS8xH,EAAcjiJ,GACrB,MAA+C,oBAAxC5L,OAAO4H,UAAUnG,SAASqS,KAAKlI,EACxC,CAEA,SAASwF,EAAM+sB,GACb,OAAOhS,OAAOivC,cAAcj9B,EAC9B,CAEarhC,EAAAA,MAQT,CACF2gE,aACAjf,UACA0uG,UACAvN,cACAt4I,YAhDF,WACE,IAAIoN,EAAM,EACV,IAAK,IAAIzM,EAAI,EAAGA,EAAIpJ,UAAOC,OAAQmJ,IAAK,CACtC,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB,IAAKw2C,EAAQ/wC,GAAI,MAAM,IAAI5M,MAAM,uBACjC4T,GAAOhH,EAAE5O,MACX,CACA,MAAM+vB,EAAM,IAAItB,WAAW7Y,GAC3B,IAAK,IAAIzM,EAAI,EAAGwxF,EAAM,EAAGxxF,EAAIpJ,UAAOC,OAAQmJ,IAAK,CAC/C,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB4mB,EAAItb,IAAI7F,EAAG+rF,GACXA,GAAO/rF,EAAE5O,MACX,CACA,OAAO+vB,CACT,EAmCEpB,aACAqgI,iBA8DF,MAAMK,EAAe/+I,IACnB,GAAY,OAARA,GAA+B,kBAARA,IAAqB+9I,EAAQ/9I,KAASqvC,EAAQrvC,KAASiC,EAAMjC,GACtF,MAAM,IAAItO,MACR,qEAAqEsO,aAAeA,MAGxF,MAAO,CACLk+I,YAAAA,CAAa1uH,EAAWz+B,GACtB,GAAY,OAARiP,EAAc,OAClB,GAAI+9I,EAAQ/9I,GAAM,OAAOA,EAAIk+I,aAAa1uH,EAAGz+B,GAC7C,IAAIqvJ,EAIJ,GAHmB,kBAARpgJ,EAAkBogJ,EAAUpgJ,EACf,kBAARA,IAAkBogJ,EAAU/B,EAAKlsJ,QAASq9B,EAAcyoE,MAAOj4F,IACxD,kBAAZogJ,IAAsBA,EAAUpjI,OAAOojI,SAClCzwJ,IAAZywJ,GAAyBA,IAAYrvJ,EACvC,MAAMy+B,EAAE/X,IAAI,iBAAiB2oI,SAAepgJ,SAAWjP,aAAiBA,KAC5E,EACAotJ,YAAAA,CAAaz/I,GACX,IAAI0hJ,EAKJ,GAJIrC,EAAQ/9I,GAAMogJ,EAAUpjI,OAAOhd,EAAIm+I,aAAaz/I,IAC5B,kBAARsB,EAAkBogJ,EAAUpgJ,EACpB,kBAARA,IAAkBogJ,EAAU/B,EAAKlsJ,QAASuM,EAAcu5F,MAAOj4F,IACxD,kBAAZogJ,IAAsBA,EAAUpjI,OAAOojI,IAC3B,kBAAZA,EAAsB,MAAM1hJ,EAAE+Y,IAAI,iBAAiB2oI,KAC9D,OAAOA,CACT,EACD,EA8CGC,EAAS,CACbC,KAAM,GACNC,WAAY,IAAM,EAClBvgJ,IAAMA,GAAgB/I,KAAKwG,KAAKuC,EAAM,IACtCzI,OAASyI,GAAgB,IAAImF,YAAYk7I,EAAOrgJ,IAAIA,IACpDwgJ,MAAQC,GAAoBA,EAAG3hI,KAAK,GACpC1J,MAAQqrI,GAAoBzoJ,MAAM3F,KAAKouJ,GAAIlqJ,KAAKsC,IAAOA,IAAM,GAAGvG,SAAS,GAAG4mB,SAAS,GAAI,OACzFwnI,SAAUA,CAACD,EAAiBzgJ,KAC1B,GAAIqgJ,EAAOrgJ,IAAIA,KAASygJ,EAAG/wJ,OAC3B,MAAM,IAAIgC,MAAM,gBAAgB+uJ,EAAG/wJ,qBAAqB2wJ,EAAOrgJ,IAAIA,KAAO,EAE5E2gJ,SAAUA,CAACC,EAAe5iI,EAAahe,KACrC,GAAIge,EAAM,EAAG,MAAM,IAAItsB,MAAM,aAAassB,KAC1C,GAAIA,EAAMhe,EAAM4gJ,EAAO,MAAM,IAAIlvJ,MAAM,eAAessB,KAAOhe,QAAU4gJ,IAAQ,EAEjFz8I,IAAK,SAACs8I,EAAiB1+H,EAAehxB,GACpC,QAD+DtB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,IAClB,KAAvBgxJ,EAAG1+H,GAAShxB,MAClC0vJ,EAAG1+H,IAAUhxB,GACN,EACT,EACAitB,IAAKA,CAACA,EAAanlB,KAAc,CAC/BkpB,MAAO9qB,KAAKC,OAAO8mB,EAAMnlB,GAAK,IAC9B2jC,KAAM,GAAM,IAAOxe,EAAMnlB,GAAK,GAAM,IAEtCgoJ,QAAS,SAACJ,EAAiBzgJ,GAA+B,IAAlBvJ,EAAMhH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC5C4wJ,EAAOK,SAASD,EAAIzgJ,GACpB,MAAM,UAAEugJ,EAAS,KAAED,GAASD,EACtBn5H,EAAOo5H,EAAQtgJ,EAAMsgJ,EACrBQ,EAAW55H,EAAQq5H,IAAcr5H,GAASA,EAAOq5H,EACjD9gI,EAAM,GACZ,IAAK,IAAI5mB,EAAI,EAAGA,EAAI4nJ,EAAG/wJ,OAAQmJ,IAAK,CAClC,IAAIoG,EAAIwhJ,EAAG5nJ,GAIX,GAHIpC,IAAQwI,GAAKA,GAEbpG,IAAM4nJ,EAAG/wJ,OAAS,IAAGuP,GAAK6hJ,GACpB,IAAN7hJ,EACJ,IAAK,IAAIR,EAAI,EAAGA,EAAI6hJ,EAAM7hJ,IAAK,CAEzBQ,EADM,GAAMqhJ,EAAO7hJ,EAAI,GAChBghB,EAAItqB,KAAK0D,EAAIynJ,EAAO7hJ,EACjC,CACF,CACA,OAAOghB,CACT,EACA6wH,MAAQzqI,IACN,MAAM4Z,EAAM,GACZ,IAAI/jB,EACJ,IAAK,MAAM7C,KAAKgN,OACFlW,IAAR+L,GAAqB7C,IAAM6C,EAAIsiB,IAAMtiB,EAAIhM,OAAQ+vB,EAAItqB,KAAMuG,EAAM,CAAEsiB,IAAKnlB,EAAGnJ,OAAQ,IAClFgM,EAAIhM,QAAU,EAErB,OAAO+vB,CAAG,EAEZshI,WAAY,SAACN,EAAiBzgJ,GAAW,IAAEvJ,EAAMhH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAQ,MACvD,IAAI4wJ,EAAO/P,MAAM+P,EAAOQ,QAAQJ,EAAIzgJ,EAAKvJ,IACtCF,KAAKsC,GAAM,IAAIA,EAAEmlB,OAAOnlB,EAAEnJ,YAC1Bq7D,KAAK,QAAQ,EAClBi2F,SAAU,SAACP,EAAiBG,EAAe5iI,EAAahe,GAAoC,IAAvBihJ,IAAYxxJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC/E4wJ,EAAOM,SAASC,EAAO5iI,EAAKhe,GAC5B,MAAM,UAAEugJ,EAAS,KAAED,GAASD,EAMtBrtG,EAAQh1B,EAAMsiI,EAAOrpJ,KAAKC,MAAM8mB,EAAMsiI,QAAQ3wJ,EAC9CuxJ,EAAUljI,EAAMhe,EAChB6jB,EAAOq9H,EAAUZ,EAAOrpJ,KAAKC,MAAMgqJ,EAAUZ,QAAQ3wJ,EAE3D,QAAcA,IAAVqjD,GAAuBA,IAAUnvB,EACnC,OAAOw8H,EAAOl8I,IACZs8I,EACAztG,EACCutG,IAAeD,EAAOtgJ,GAAUsgJ,EAAOtgJ,EAAMge,EAC9CijI,GAEJ,QAActxJ,IAAVqjD,IACGqtG,EAAOl8I,IAAIs8I,EAAIztG,EAAOutG,IAAcviI,EAAMsiI,EAAMW,GAAe,OAAO,EAG7E,MACM5lI,OAAe1rB,IAATk0B,EAAqBA,EAAOq9H,EAAUZ,EAClD,IAAK,IAAIznJ,OAFelJ,IAAVqjD,EAAsBA,EAAQ,EAAIh1B,EAAMsiI,EAElCznJ,EAAIwiB,EAAKxiB,IAAK,IAAKwnJ,EAAOl8I,IAAIs8I,EAAI5nJ,EAAG0nJ,EAAWU,GAAe,OAAO,EAC1F,aAAatxJ,IAATk0B,GAAsBmvB,IAAUnvB,IAC7Bw8H,EAAOl8I,IAAIs8I,EAAI58H,EAAM08H,GAAcD,EAAQY,EAAUZ,EAAQW,GAEtE,GAOI5C,EAAO,CASXO,QAASA,CAAC3mD,EAAkBx7F,EAAgB0kJ,KAC1C,MAAMt9H,EAAa,CAAEpnB,OACrBw7F,EAAM9iG,KAAK0uB,GACXs9H,GAAM,CAAC7D,EAAeuB,KACpBh7H,EAAKy5H,MAAQA,EACbuB,IACAh7H,EAAKy5H,WAAQ3tJ,CAAS,IAExBsoG,EAAM/0F,KAAK,EAEbs8H,KAAOvnC,IACL,MAAMx4E,EAAM,GACZ,IAAK,MAAM5mB,KAAKo/F,OAAuBtoG,IAAZkJ,EAAEykJ,OAAqB79H,EAAItqB,KAAK0D,EAAEykJ,OAC7D,OAAO79H,EAAIsrC,KAAK,IAAI,EAEtBtzC,IAAKA,CAAChY,EAAcw4F,EAAkB3pG,KACpC,MAAMmpB,EAAM,IAAI/lB,MACd,GAAG+N,KAAQ4+I,EAAK7e,KAAKvnC,QAA2B,kBAAR3pG,EAAmBA,EAAMA,EAAIwtB,WAGvE,OADIxtB,aAAeoD,OAASpD,EAAI2pG,QAAOxgF,EAAIwgF,MAAQ3pG,EAAI2pG,OAChDxgF,CAAG,EAEZtlB,QAASA,CAAC8lG,EAAkBunC,KAC1B,MAAMhkI,EAAQgkI,EAAKppI,MAAM,KACnBgrJ,EAAUnpD,EAAM1hG,KAAKsC,GAAMA,EAAE4D,MACnC,IAAI5D,EAAI,EACR,KAAOA,EAAI2C,EAAM9L,QACE,OAAb8L,EAAM3C,GADaA,IACAuoJ,EAAQl+I,MAGjC,IAAIxH,EAAM0lJ,EAAQl+I,MAClB,KAAOrK,EAAI2C,EAAM9L,OAAQmJ,IAAK,CAC5B,IAAK6C,QAAyB/L,IAAlB+L,EAAIF,EAAM3C,IAAmB,OACzC6C,EAAMA,EAAIF,EAAM3C,GAClB,CACA,OAAO6C,CAAG,GAqGd,MAAM2lJ,EAMJvlJ,WAAAA,CACWtK,GAIuB,IAHvBs2B,EAAAr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAmB,CAAC,EACpBwoG,EAAAxoG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAmB,GACpB6xJ,EAAA7xJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,QAA8BE,EAC9B4xJ,EAAA9xJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB,EAJtB,KAAA+B,KAAAA,EACA,KAAAs2B,KAAAA,EACA,KAAAmwE,MAAAA,EACD,KAAAqpD,OAAAA,EACA,KAAAC,aAAAA,EAVV,KAAAvjI,IAAM,EACE,KAAAwjI,OAAS,EACT,KAAAC,OAAS,EAUf5zJ,KAAKuwB,KAAOC,EAAW7sB,EACzB,CAEA0uJ,eAAAA,GACE,GAAIryJ,KAAKyzJ,OAAQ,OAAOzzJ,KAAKyzJ,OAAOpB,kBAChCryJ,KAAK4yJ,KACT5yJ,KAAK4yJ,GAAKJ,EAAO9oJ,OAAO1J,KAAK2D,KAAK9B,QAClC2wJ,EAAOW,SAASnzJ,KAAK4yJ,GAAI5yJ,KAAK2D,KAAK9B,OAAQ,EAAG7B,KAAKmwB,IAAKnwB,KAAKi6B,KAAK45H,oBACpE,CACQC,WAAAA,CAAY3jI,EAAahe,GAC/B,OAAInS,KAAKyzJ,OAAezzJ,KAAKyzJ,OAAOK,YAAY9zJ,KAAK0zJ,aAAevjI,EAAKhe,IACpEA,KACAnS,KAAK4yJ,IACHJ,EAAOW,SAASnzJ,KAAK4yJ,GAAI5yJ,KAAK2D,KAAK9B,OAAQsuB,EAAKhe,GAAK,GAC9D,CACQ4hJ,SAAAA,CAAU5hJ,GAChB,MAAMge,EAAMnwB,KAAKmwB,IACjBnwB,KAAKmwB,KAAOhe,EACZ,MAAMyf,EAAM5xB,KAAK8zJ,YAAY3jI,EAAKhe,GAClC,IAAKnS,KAAKi6B,KAAK45H,qBAAuBjiI,EACpC,MAAM5xB,KAAK4pB,IAAI,qBAAqB5pB,KAAKmwB,WAAWhe,KACtD,OAAOyf,CACT,CAEAm/H,OAAAA,CAAQniJ,EAAgB0kJ,GACtB,OAAO9C,EAAKO,QAAQ/wJ,KAAKoqG,MAAOx7F,EAAK0kJ,EACvC,CACAU,QAAAA,CAASzjJ,EAAWwmG,GAClB,IAAK5nF,OAAOzT,SAASnL,GAAI,MAAMvQ,KAAK4pB,IAAI,0BAA0BrZ,KAClE,GAAIvQ,KAAKmwB,IAAM5f,EAAIvQ,KAAK2D,KAAK9B,OAAQ,MAAM7B,KAAK4pB,IAAI,sCACpD,MAAMgI,EAAMmlF,EAAG/2G,KAAKuwB,KAAMvwB,KAAKmwB,KAE/B,OADAnwB,KAAK+zJ,UAAUxjJ,GACRqhB,CACT,CAEAqiI,QAAAA,CAAS1jJ,GACP,GAAIA,EAAIvQ,KAAK2D,KAAK9B,OAAQ,MAAM,IAAIgC,MAAM,4BAC1C,OAAO7D,KAAK2D,KAAKitB,SAASrgB,EAC5B,CACA8gJ,MAAAA,GACE,IAAIrxJ,KAAKi6B,KAAKi6H,iBAAd,CACA,GAAIl0J,KAAK4zJ,OACP,MAAM5zJ,KAAK4pB,IACT,GAAG5pB,KAAK4zJ,kCAAkC3uJ,EAAA6B,IAAQqZ,OAAOngB,KAAK2D,KAAK+J,MAAM1N,KAAKmwB,SAGlF,IAAInwB,KAAK4yJ,IAAO5yJ,KAAKyzJ,QAarB,IAAKzzJ,KAAKsxJ,QACR,MAAMtxJ,KAAK4pB,IACT,GAAG5pB,KAAKuxJ,mBAAmBvxJ,KAAK4zJ,kCAAkC3uJ,EAAA6B,IAAQqZ,OACxEngB,KAAK2D,KAAK+J,MAAM1N,KAAKmwB,aAhB3B,CACE,MAAMgkI,EAAU3B,EAAOQ,QAAQhzJ,KAAK4yJ,GAAI5yJ,KAAK2D,KAAK9B,QAAQ,GAC1D,GAAIsyJ,EAAQtyJ,OAAQ,CAClB,MAAMuyJ,EAAY5B,EAAO/P,MAAM0R,GAC5BzrJ,KACCyW,IAAA,IAAC,IAAEgR,EAAG,OAAEtuB,GAAQsd,EAAA,MACd,IAAIgR,KAAOtuB,MAAWoD,EAAA6B,IAAQqZ,OAAOngB,KAAK2D,KAAKitB,SAAST,EAAKA,EAAMtuB,MAAW,IAEjFq7D,KAAK,MACR,MAAMl9D,KAAK4pB,IAAI,uBAAuBwqI,YAAoBp0J,KAAK2D,KAAK9B,UACtE,CACF,CAjBsC,CA0BxC,CAEA+nB,GAAAA,CAAInpB,GACF,OAAO+vJ,EAAK5mI,IAAI,SAAU5pB,KAAKoqG,MAAO3pG,EACxC,CACA6xJ,YAAAA,CAAa/hJ,GACX,GAAIA,EAAIvQ,KAAK2D,KAAK9B,OAAQ,MAAM7B,KAAK4pB,IAAI,0CACzC,OAAO,IAAI4pI,EAAQxzJ,KAAKi0J,SAAS1jJ,GAAIvQ,KAAKi6B,KAAMj6B,KAAKoqG,MAAOpqG,KAAMuQ,EACpE,CACA4tC,KAAAA,CAAM5tC,GAAuB,IAAZ8jJ,EAAIzyJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACnB,GAAI5B,KAAK4zJ,OAAQ,MAAM5zJ,KAAK4pB,IAAI,+BAChC,IAAKuF,OAAOzT,SAASnL,GAAI,MAAMvQ,KAAK4pB,IAAI,2BAA2BrZ,KACnE,GAAIvQ,KAAKmwB,IAAM5f,EAAIvQ,KAAK2D,KAAK9B,OAAQ,MAAM7B,KAAK4pB,IAAI,uCACpD,MAAMlc,EAAQ1N,KAAK2D,KAAKitB,SAAS5wB,KAAKmwB,IAAKnwB,KAAKmwB,IAAM5f,GAEtD,OADK8jJ,GAAMr0J,KAAK+zJ,UAAUxjJ,GACnB7C,CACT,CACA6hB,IAAAA,GAAiB,IAAZ8kI,EAAIzyJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACP,GAAI5B,KAAK4zJ,OAAQ,MAAM5zJ,KAAK4pB,IAAI,8BAChC,GAAI5pB,KAAKmwB,IAAM,EAAInwB,KAAK2D,KAAK9B,OAAQ,MAAM7B,KAAK4pB,IAAI,uCACpD,MAAMjmB,EAAO3D,KAAK2D,KAAK3D,KAAKmwB,KAE5B,OADKkkI,GAAMr0J,KAAK+zJ,UAAU,GACnBpwJ,CACT,CACA,aAAI4tJ,GACF,OAAOvxJ,KAAK2D,KAAK9B,OAAS7B,KAAKmwB,GACjC,CACA,cAAImkI,GACF,OAAOt0J,KAAK2D,KAAK9B,MACnB,CACAyvJ,KAAAA,GACE,OAAOtxJ,KAAKmwB,KAAOnwB,KAAK2D,KAAK9B,SAAW7B,KAAK4zJ,MAC/C,CAEA98H,IAAAA,CAAKA,GACH,GAAIA,EAAO,GAAI,MAAM92B,KAAK4pB,IAAI,2DAC9B,IAAI7iB,EAAM,EACV,KAAO+vB,GAAM,CACN92B,KAAK4zJ,SACR5zJ,KAAK2zJ,OAAS3zJ,KAAKuvB,OACnBvvB,KAAK4zJ,OAAS,GAEhB,MAAMjjI,EAAOvnB,KAAKsI,IAAIolB,EAAM92B,KAAK4zJ,QACjC5zJ,KAAK4zJ,QAAUjjI,EACf5pB,EAAOA,GAAO4pB,EAAU3wB,KAAK2zJ,QAAU3zJ,KAAK4zJ,OAAW,GAAKjjI,EAAO,EACnE3wB,KAAK2zJ,QAAU,GAAK3zJ,KAAK4zJ,OAAS,EAClC98H,GAAQnG,CACV,CAEA,OAAO5pB,IAAQ,CACjB,CACA+zD,IAAAA,CAAKy5F,GAAqC,IAAtBpkI,EAAAvuB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAc5B,KAAKmwB,IACrC,IAAKqxB,EAAQ+yG,GAAS,MAAMv0J,KAAK4pB,IAAI,8BAA8B2qI,KACnE,GAAIv0J,KAAK4zJ,OAAQ,MAAM5zJ,KAAK4pB,IAAI,8BAChC,IAAK2qI,EAAO1yJ,OAAQ,MAAM7B,KAAK4pB,IAAI,yBAEnC,IAAK,IAAIq1C,EAAM9uC,GAAoD,KAA9C8uC,EAAMj/D,KAAK2D,KAAK4Q,QAAQggJ,EAAO,GAAIt1F,IAAcA,IAAO,CAC3E,IAAa,IAATA,EAAY,OAEhB,GADkBj/D,KAAK2D,KAAK9B,OAASo9D,EACrBs1F,EAAO1yJ,OAAQ,OAC/B,GAAI4+D,EAAW8zF,EAAQv0J,KAAK2D,KAAKitB,SAASquC,EAAKA,EAAMs1F,EAAO1yJ,SAAU,OAAOo9D,CAC/E,CAEF,EAQF,MAAMu1F,EAYJvmJ,WAAAA,GAA0C,IAArBm8F,EAAAxoG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAmB,GAAnB,KAAAwoG,MAAAA,EAXrB,KAAAj6E,IAAc,EAIN,KAAAskI,QAAmB,GAC3B,KAAAtC,KAAiE,GACzD,KAAAwB,OAAS,EACT,KAAAC,OAAS,EACT,KAAAc,QAAU,IAAIpkI,WAAW,GAEzB,KAAAJ,UAAW,EAEjBlwB,KAAKuwB,KAAOC,EAAWxwB,KAAK00J,QAC9B,CACA3D,OAAAA,CAAQniJ,EAAgB0kJ,GACtB,OAAO9C,EAAKO,QAAQ/wJ,KAAKoqG,MAAOx7F,EAAK0kJ,EACvC,CACAqB,SAAAA,CAAUxiJ,EAAa4kG,GACrB,GAAI/2G,KAAKkwB,SAAU,MAAMlwB,KAAK4pB,IAAI,oBAClC,IAAKxV,EAAMjC,IAAQA,EAAM,EAAG,MAAM,IAAItO,MAAM,0BAA0BsO,KACtE4kG,EAAG/2G,KAAKuwB,MACRvwB,KAAKm+C,MAAMn+C,KAAK00J,QAAQhnJ,MAAM,EAAGyE,IACjCnS,KAAK00J,QAAQzjI,KAAK,EACpB,CAEArH,GAAAA,CAAInpB,GACF,GAAIT,KAAKkwB,SAAU,MAAMlwB,KAAK4pB,IAAI,oBAClC,OAAO4mI,EAAK5mI,IAAI,SAAU5pB,KAAKoqG,MAAO3pG,EACxC,CACA09C,KAAAA,CAAMjtC,GACJ,GAAIlR,KAAKkwB,SAAU,MAAMlwB,KAAK4pB,IAAI,oBAClC,GAAI5pB,KAAK4zJ,OAAQ,MAAM5zJ,KAAK4pB,IAAI,8CAChC5pB,KAAKy0J,QAAQntJ,KAAK4J,GAClBlR,KAAKmwB,KAAOjf,EAAErP,MAChB,CACA0tB,IAAAA,CAAKre,GACH,GAAIlR,KAAKkwB,SAAU,MAAMlwB,KAAK4pB,IAAI,oBAClC,GAAI5pB,KAAK4zJ,OAAQ,MAAM5zJ,KAAK4pB,IAAI,6CAChC5pB,KAAKy0J,QAAQntJ,KAAK,IAAIgpB,WAAW,CAACpf,KAClClR,KAAKmwB,KACP,CACAkhI,MAAAA,GAAmB,IAAZsB,IAAK/wJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACV,GAAI5B,KAAKkwB,SAAU,MAAMlwB,KAAK4pB,IAAI,oBAClC,GAAI5pB,KAAK4zJ,OAAQ,MAAM5zJ,KAAK4pB,IAAI,0CAEhC,MAAM6qI,EAAUz0J,KAAKy0J,QAAQt8I,OAAOnY,KAAKmyJ,KAAKzpJ,KAAKsC,GAAMA,EAAEqlB,UACrD5Y,EAAMg9I,EAAQ/rJ,KAAKwI,GAAMA,EAAErP,SAAQoH,QAAO,CAACwH,EAAGS,IAAMT,EAAIS,GAAG,GAC3Dm2D,EAAM,IAAI/2C,WAAW7Y,GAC3B,IAAK,IAAIzM,EAAI,EAAGwxF,EAAM,EAAGxxF,EAAIypJ,EAAQ5yJ,OAAQmJ,IAAK,CAChD,MAAMyF,EAAIgkJ,EAAQzpJ,GAClBq8D,EAAI/wD,IAAI7F,EAAG+rF,GACXA,GAAO/rF,EAAE5O,MACX,CAEA,IAAK,IAAIsuB,EAAMnwB,KAAKmwB,IAAKnlB,EAAI,EAAGA,EAAIhL,KAAKmyJ,KAAKtwJ,OAAQmJ,IAAK,CACzD,MAAMinJ,EAAMjyJ,KAAKmyJ,KAAKnnJ,GACtBq8D,EAAI/wD,IAAI27I,EAAIA,IAAI9xI,OAAOgQ,GAAM8hI,EAAI9hI,KACjCA,GAAO8hI,EAAI5hI,OAAOxuB,MACpB,CAEA,GAAI8wJ,EAAO,CAIT3yJ,KAAKy0J,QAAU,GACf,IAAK,MAAMl+I,KAAKvW,KAAKmyJ,KAAM57I,EAAE8Z,OAAOY,KAAK,GACzCjxB,KAAKmyJ,KAAO,GACZnyJ,KAAKkwB,UAAW,EAChBlwB,KAAK2zJ,OAAS,CAChB,CACA,OAAOtsF,CACT,CACAvwC,IAAAA,CAAK5zB,EAAe4zB,GAClB,GAAIA,EAAO,GAAI,MAAM92B,KAAK4pB,IAAI,4DAC9B,GAAI1mB,GAAS,GAAK4zB,EAAM,MAAM92B,KAAK4pB,IAAI,qBAAqB1mB,kBAAsB4zB,MAClF,KAAOA,GAAM,CACX,MAAMnG,EAAOvnB,KAAKsI,IAAIolB,EAAM,EAAI92B,KAAK4zJ,QACrC5zJ,KAAK2zJ,OAAU3zJ,KAAK2zJ,QAAUhjI,EAASztB,GAAU4zB,EAAOnG,EACxD3wB,KAAK4zJ,QAAUjjI,EAEfztB,GAAS,IADT4zB,GAAQnG,GACa,EACD,IAAhB3wB,KAAK4zJ,SACP5zJ,KAAK4zJ,OAAS,EACd5zJ,KAAKy0J,QAAQntJ,KAAK,IAAIgpB,WAAW,CAACtwB,KAAK2zJ,UACvC3zJ,KAAKmwB,MAET,CACF,EAGF,MAAMykI,EAAkB1jJ,GAAoBof,WAAW9rB,KAAK0M,GAAGtD,UAE/D,SAAS+0I,EAAYz/I,EAAe4zB,EAAc0rF,GAChD,GAAIA,EAAQ,CAEV,MAAMqyC,EAAU,KAAO/9H,EAAO,IAC9B,GAAI5zB,GAAS2xJ,GAAW3xJ,GAAS2xJ,EAC/B,MAAM,IAAIhxJ,MAAM,yCAAyCgxJ,QAAc3xJ,OAAW2xJ,IACtF,MAEE,GAAI,GAAK3xJ,GAASA,GAAS,IAAM4zB,EAC/B,MAAM,IAAIjzB,MAAM,+CAA+CX,OAAW,IAAM4zB,IAEtF,CAEA,SAASg+H,EAAS3E,GAChB,MAAO,CAELE,aAAcF,EAAME,aACpBC,aAAcH,EAAMG,aACpBpmI,KAAMimI,EAAMjmI,KACZ/J,OAASjd,IACP,MAAMy+B,EAAI,IAAI6yH,EAEd,OADArE,EAAME,aAAa1uH,EAAGz+B,GACfy+B,EAAE0vH,QAAQ,EAEnB5xI,OAAQ,SAAC9b,GACP,MAAMkN,EAAI,IAAI2iJ,EAAQ7vJ,EADF/B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAmB,CAAC,GAElCgwB,EAAMu+H,EAAMG,aAAaz/I,GAE/B,OADAA,EAAEwgJ,SACKz/H,CACT,EAEJ,CAeA,SAAgByiH,EAAY8b,EAAqBp5C,GAC/C,IAAKm5C,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,iCAAiCssJ,KACtE,GAAkB,oBAAPp5C,EAAmB,MAAM,IAAIlzG,MAAM,mCAC9C,OAAOixJ,EAAM,CACX5qI,KAAMimI,EAAMjmI,KACZmmI,aAAcA,CAAC1uH,EAAWz+B,KACxB,IAAI0uB,EACJ,IACEA,EAAMmlF,EAAG7zG,EACX,CAAE,MAAOqO,GACP,MAAMowB,EAAE/X,IAAIrY,EACd,CACA4+I,EAAME,aAAa1uH,EAAG/P,EAAI,EAE5B0+H,aAAez/I,IACb,MAAM+gB,EAAMu+H,EAAMG,aAAaz/I,GAC/B,IACE,OAAOkmG,EAAGnlF,EACZ,CAAE,MAAOrgB,GACP,MAAMV,EAAE+Y,IAAIrY,EACd,IAGN,CAoBazR,EAAAA,KAAWqwJ,IACtB,MAAMv+H,EAAMkjI,EAAM3E,GAClB,OAAOA,EAAM9b,SAAWA,EAASziH,EAAKu+H,EAAM9b,UAAYziH,CAAG,EAG7D,MAAMmjI,EAAe5D,GACnBN,EAAcM,IAA8B,oBAAfA,EAAI1xI,QAA+C,oBAAf0xI,EAAIhxI,OAOvE,SAAgB+vI,EAAWiB,GACzB,OACEN,EAAcM,IACd4D,EAAY5D,IACgB,oBAArBA,EAAId,cACiB,oBAArBc,EAAIb,oBACGxuJ,IAAbqvJ,EAAIjnI,MAAsB9V,EAAM+8I,EAAIjnI,MAEzC,CAwCA,MAAM8qI,EAA0C,CAC9C70I,OAAS3b,IACP,GAAoB,kBAATA,EAAmB,MAAM,IAAIX,MAAM,+BAA+BW,GAC7E,GAAIA,EAAOkB,OAAOypB,OAAOjf,kBACvB,MAAM,IAAIrM,MAAM,wCAAwCW,KAC1D,OAAO2qB,OAAO3qB,EAAK,EAErBib,OAASsS,IACP,IAAK3d,EAAM2d,GAAK,MAAM,IAAIluB,MAAM,iCAChC,OAAO6B,OAAOqsB,EAAG,GAmIrB,MAAMnkB,EAAiBqnJ,IACrB,IAAKF,EAAYE,GAAQ,MAAM,IAAIpxJ,MAAM,sBACzC,MAAO,CAAEsc,OAAQ80I,EAAMx1I,OAAQA,OAAQw1I,EAAM90I,OAAQ,EAG1CrgB,EAAAA,OAOT,CAAEk5E,KAlLN,WACE,MAAO,CACL74D,OAAS3b,IACP,IAAK2F,MAAMi3B,QAAQ58B,GAAO,MAAM,IAAIX,MAAM,kBAC1C,MAAMkuB,EAAwB,CAAC,EAC/B,IAAK,MAAMwB,KAAQ/uB,EAAM,CACvB,IAAK2F,MAAMi3B,QAAQ7N,IAAyB,IAAhBA,EAAK1xB,OAC/B,MAAM,IAAIgC,MAAM,kCAClB,MAAM+N,EAAO2hB,EAAK,GACZrwB,EAAQqwB,EAAK,GACnB,QAAiBzxB,IAAbiwB,EAAGngB,GAAqB,MAAM,IAAI/N,MAAM,OAAO+N,8BACnDmgB,EAAGngB,GAAQ1O,CACb,CACA,OAAO6uB,CAAE,EAEXtS,OAASsS,IACP,IAAK8+H,EAAc9+H,GAAK,MAAM,IAAIluB,MAAM,8BAA8BkuB,KACtE,OAAO/uB,OAAO+sJ,QAAQh+H,EAAG,EAG/B,EA8JYijI,eAAcE,OA9H1B,SAAgC3jJ,GAC9B,IAAKs/I,EAAct/I,GAAI,MAAM,IAAI1N,MAAM,yBACvC,MAAO,CACLsc,OAAS3b,IACP,IAAK4P,EAAM5P,MAAWA,KAAQ+M,GAAI,MAAM,IAAI1N,MAAM,eAAeW,KACjE,OAAO+M,EAAE/M,EAAK,EAEhBib,OAASsS,IACP,GAAkB,kBAAPA,EAAiB,MAAM,IAAIluB,MAAM,sBAAsBkuB,GAClE,OAAOxgB,EAAEwgB,EAAa,EAG5B,EAkHkCpa,QAvGlC,SAAiByF,GAAgC,IAAb3I,EAAK7S,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACvC,IAAKwS,EAAMgJ,GAAY,MAAM,IAAIvZ,MAAM,kCAAkCuZ,KACzE,GAAqB,mBAAV3I,EACT,MAAM,IAAI5Q,MAAM,+CAA+C4Q,GACjE,MAAM0gJ,EAAc,KAAOzvJ,OAAO0X,GAClC,MAAO,CACL+C,OAAS3b,IACP,GAAoB,kBAATA,EAAmB,MAAM,IAAIX,MAAM,+BAA+BW,GAC7E,IAAIkM,GAAKlM,EAAO,IAAMA,EAAOA,GAAMC,SAAS,IACxCkiE,EAAMj2D,EAAE7O,OAASub,EACjBupD,EAAM,IACRj2D,EAAIA,EAAE2a,SAAS3a,EAAE7O,OAAS8kE,EAAK,KAC/BA,EAAM,GAER,IAAI37D,EAAI0F,EAAE7O,OAAS,EACnB,KAAOmJ,GAAK27D,GAAgB,MAATj2D,EAAE1F,GAAYA,KACjC,IAAIs6C,EAAM50C,EAAEhD,MAAM,EAAGi5D,GACjByuF,EAAO1kJ,EAAEhD,MAAMi5D,EAAK37D,EAAI,GAG5B,OAFKs6C,IAAKA,EAAM,KACZ9gD,EAAO,KAAI8gD,EAAM,IAAMA,GACtB8vG,EACE,GAAG9vG,KAAO8vG,IADC9vG,CACK,EAEzB7lC,OAASsS,IACP,GAAkB,kBAAPA,EAAiB,MAAM,IAAIluB,MAAM,+BAA+BkuB,GAC3E,GAAW,OAAPA,EAAa,MAAM,IAAIluB,MAAM,gCACjC,IAAI8gC,GAAM,EAKV,GAJI5S,EAAGlpB,WAAW,OAChB87B,GAAM,EACN5S,EAAKA,EAAGrkB,MAAM,KAEX,yBAAyB4G,KAAKyd,GAAK,MAAM,IAAIluB,MAAM,sBAAsBkuB,KAC9E,IAAI40C,EAAM50C,EAAGxd,QAAQ,KACrBoyD,GAAe,IAATA,EAAa50C,EAAGlwB,OAAS8kE,EAE/B,MAAM0uF,EAAOtjI,EAAGrkB,MAAM,EAAGi5D,GACnB2uF,EAAQvjI,EAAGrkB,MAAMi5D,EAAM,GAAG35D,QAAQ,MAAO,IACzCs4C,EAAM5/C,OAAO2vJ,GAAQF,EAC3B,IAAK1gJ,GAAS6gJ,EAAMzzJ,OAASub,EAC3B,MAAM,IAAIvZ,MACR,kEAAkEkuB,WAAY3U,MAGlF,MAAMm4I,EAAUnsJ,KAAKsI,IAAI4jJ,EAAMzzJ,OAAQub,GAEjCla,EAAQoiD,EADD5/C,OAAO4vJ,EAAM5nJ,MAAM,EAAG6nJ,IAAY,KAAO7vJ,OAAO0X,EAAYm4I,GAEzE,OAAO5wH,GAAOzhC,EAAQA,CAAK,EAGjC,EAsD2CsvE,MArC3C,SAIEgjF,GACA,IAAKrrJ,MAAMi3B,QAAQo0H,GAAM,MAAM,IAAI3xJ,MAAM,8BAA8B2xJ,GACvE,IAAK,MAAMxqJ,KAAKwqJ,EAAK,IAAKT,EAAY/pJ,GAAI,MAAM,IAAInH,MAAM,oBAAoBmH,KAC9E,MAAO,CACLmV,OAAS3b,IACP,IAAK,MAAM4M,KAAKokJ,EAAK,CACnB,MAAMrE,EAAM//I,EAAE+O,OAAO3b,GACrB,QAAY1C,IAARqvJ,EAAmB,OAAOA,CAChC,CACA,MAAM,IAAIttJ,MAAM,sCAAsCW,IAAO,EAE/Dib,OAASsS,IACP,IAAK,MAAM3gB,KAAKokJ,EAAK,CACnB,MAAMrE,EAAM//I,EAAEqO,OAAOsS,GACrB,QAAYjwB,IAARqvJ,EAAmB,OAAOA,CAChC,CACA,MAAM,IAAIttJ,MAAM,sCAAsCkuB,IAAK,EAGjE,EAckDnkB,WAUrC9N,EAAAA,KAAQqS,IACnB,IAAKiC,EAAMjC,GAAM,MAAM,IAAItO,MAAM,sBAAsBsO,aAAeA,MACtE,OAAO,EAAArS,EAAAm2B,MAAK,CACVo6H,aAAcA,CAAC1uH,EAAWz+B,IAAkBy+B,EAAE7K,KAAK5zB,EAAOiP,GAC1Dm+I,aAAez/I,GAAsBA,EAAEimB,KAAK3kB,GAC5CkiI,SAAWnxI,IACT,IAAKkR,EAAMlR,GAAQ,MAAM,IAAIW,MAAM,qBAAqBX,KACxD,OAAOA,CAAK,GAEd,EAqBSpD,EAAAA,OAAS,SACpBoqB,GAIqB,IAHrBurI,EAAE7zJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACF4gH,EAAM5gH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACNswJ,IAAKtwJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAEL,IAAKwS,EAAM8V,GAAO,MAAM,IAAIrmB,MAAM,4BAA4BqmB,KAC9D,GAAkB,mBAAPurI,EAAkB,MAAM,IAAI5xJ,MAAM,2CAA2C4xJ,GACxF,GAAsB,mBAAXjzC,EACT,MAAM,IAAI3+G,MAAM,+CAA+C2+G,GACjE,GAAqB,mBAAV0vC,EACT,MAAM,IAAIruJ,MAAM,8CAA8CquJ,GAChE,MAAMwD,EAAOhwJ,OAAOwkB,GACd2qI,EAAU,KAAO,GAAKa,EAAO,IACnC,OAAO,EAAA51J,EAAAm2B,MAAK,CACV/L,KAAMgoI,EAAQhoI,OAAOpoB,EACrBuuJ,aAAcA,CAAC1uH,EAAWz+B,KACpBs/G,GAAUt/G,EAAQ,IAAGA,GAAgB2xJ,GACzC,MAAM3jJ,EAAI,GACV,IAAK,IAAIlG,EAAI,EAAGA,EAAIkf,EAAMlf,IACxBkG,EAAE5J,KAAK6nB,OAAe,KAARjsB,IACdA,IAAU,GAEZ,IAAI0uB,EAAM,IAAItB,WAAWpf,GAAGtD,UAC5B,IAAKskJ,EAAO,CACV,IAAI/hI,EAAM,EACV,IAAKA,EAAM,EAAGA,EAAMyB,EAAI/vB,QAAgC,IAAb+vB,EAAIzB,GAAfA,KAChCyB,EAAMA,EAAIhB,SAAST,EACrB,CACAwR,EAAEwc,MAAMs3G,EAAK7jI,EAAIhkB,UAAYgkB,EAAI,EAEnC0+H,aAAez/I,IAEb,MAAM3N,EAAQ2N,EAAEstC,MAAM+zG,EAAQhoI,EAAO9gB,KAAKsI,IAAIwY,EAAMrZ,EAAE0gJ,YAChDrgJ,EAAIukJ,EAAKvyJ,EAAQ0xJ,EAAe1xJ,GACtC,IAAI0uB,EAAM,GACV,IAAK,IAAI5mB,EAAI,EAAGA,EAAIkG,EAAErP,OAAQmJ,IAAK4mB,GAAOlsB,OAAOwL,EAAElG,KAAQ,GAAKtF,OAAOsF,GAEvE,OADIw3G,GAAU5wF,EAAMijI,IAASjjI,GAAOA,EAAMijI,GAAWA,GAC9CjjI,CAAG,EAEZyiH,SAAWnxI,IACT,GAAqB,kBAAVA,EAAoB,MAAM,IAAIW,MAAM,0BAA0BX,KAEzE,OADAy/I,EAAYz/I,EAAO,GAAKwyJ,IAAQlzC,GACzBt/G,CAAK,GAGlB,EAEapD,EAAAA,QAA4C,EAAAA,EAAAuvJ,QAAO,IAAI,GAEvDvvJ,EAAAA,QAA4C,EAAAA,EAAAuvJ,QAAO,IAAI,GAEvDvvJ,EAAAA,QAA4C,EAAAA,EAAAuvJ,QAAO,IAAI,GAAM,GAE7DvvJ,EAAAA,QAA4C,EAAAA,EAAAuvJ,QAAO,IAAI,GAAO,GAE9DvvJ,EAAAA,QAA4C,EAAAA,EAAAuvJ,QAAO,IAAI,GAEvDvvJ,EAAAA,QAA4C,EAAAA,EAAAuvJ,QAAO,IAAI,GAEvDvvJ,EAAAA,QAA4C,EAAAA,EAAAuvJ,QAAO,IAAI,GAAM,GAE7DvvJ,EAAAA,QAA4C,EAAAA,EAAAuvJ,QAAO,IAAI,GAAO,GAE9DvvJ,EAAAA,OAA2C,EAAAA,EAAAuvJ,QAAO,GAAG,GAErDvvJ,EAAAA,OAA2C,EAAAA,EAAAuvJ,QAAO,GAAG,GAErDvvJ,EAAAA,OAA2C,EAAAA,EAAAuvJ,QAAO,GAAG,GAAM,GAE3DvvJ,EAAAA,OAA2C,EAAAA,EAAAuvJ,QAAO,GAAG,GAAO,GAoB5DvvJ,EAAAA,IAAM,SAACoqB,GAA6E,IAA/DurI,EAAE7zJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAU4gH,EAAM5gH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAUswJ,IAAKtwJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACjE,IAAKwS,EAAM8V,GAAO,MAAM,IAAIrmB,MAAM,yBAAyBqmB,KAC3D,GAAkB,mBAAPurI,EAAkB,MAAM,IAAI5xJ,MAAM,wCAAwC4xJ,GACrF,GAAsB,mBAAXjzC,EACT,MAAM,IAAI3+G,MAAM,4CAA4C2+G,GAC9D,GAAqB,mBAAV0vC,EACT,MAAM,IAAIruJ,MAAM,2CAA2CquJ,GAC7D,GAAIhoI,EAAO,EAAG,MAAM,IAAIrmB,MAAM,kEAC9B,OAAOwzE,GAAM,EAAAv3E,EAAAuvJ,QAAOnlI,EAAMurI,EAAIjzC,EAAQ0vC,GAAQpyJ,EAAA61J,OAAOX,aACvD,EAQA,MAAMzkI,EAAOA,CAACpe,EAAa8nB,KACzB,EAAAn6B,EAAAm2B,MAAK,CACH/L,KAAM/X,EACNk+I,aAAcA,CAAC1uH,EAAGz+B,IACfy+B,EAAcgzH,UAAUxiJ,GAAMoe,GAAS0J,EAAKnvB,MAAMylB,EAAMrtB,KAC3DotJ,aAAez/I,GAAOA,EAAcmjJ,SAAS7hJ,EAAK8nB,EAAKof,MACvDg7F,SAAWnxI,IACT,GAAqB,kBAAVA,EACT,MAAM,IAAIW,MAAM,0CAA0CX,GAE5D,OADI+2B,EAAKo6G,UAAUp6G,EAAKo6G,SAASnxI,GAC1BA,CAAK,IAIZ0yJ,EAAUA,CAACzjJ,EAAaqwG,EAAiBvoF,KAC7C,MAAMnD,EAAa,EAAN3kB,EACP0iJ,EAAU,IAAM/9H,EAAO,GAUvB++H,EAAS,GAAK/+H,EAOpB,OAAOvG,EAAKpe,EAAK,CACfrH,MAAOmvB,EAAKnvB,MACZuuC,KAAMpf,EAAKof,KACXg7F,SAAU7xB,EAlBYt/G,IACtB,IAAKkR,EAAMlR,GAAQ,MAAM,IAAIW,MAAM,wCAAwCX,KAC3E,GAAIA,GAAS2xJ,GAAW3xJ,GAAS2xJ,EAC/B,MAAM,IAAIhxJ,MACR,4CAA4CgxJ,QAAc3xJ,OAAW2xJ,IAEzE,EAGwB3xJ,IACxB,IAAKkR,EAAMlR,GAAQ,MAAM,IAAIW,MAAM,wCAAwCX,KAC3E,GAAI,EAAIA,GAASA,GAAS2yJ,EACxB,MAAM,IAAIhyJ,MAAM,gDAAgDX,OAAW2yJ,IAC7E,GAMA,EAIS/1J,EAAAA,MAA2C81J,EAAQ,GAAG,EAAO,CACxEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAK+zF,UAAUn0F,GAAK,GACzCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAKkB,UAAU,EAAGvuB,GAAO,KAGtCpD,EAAAA,MAA2C81J,EAAQ,GAAG,EAAO,CACxEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAK+zF,UAAUn0F,GAAK,GACzCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAKkB,UAAU,EAAGvuB,GAAO,KAGtCpD,EAAAA,MAA2C81J,EAAQ,GAAG,EAAM,CACvEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAKulI,SAAS3lI,GAAK,GACxCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAKwlI,SAAS,EAAG7yJ,GAAO,KAGrCpD,EAAAA,MAA2C81J,EAAQ,GAAG,EAAM,CACvEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAKulI,SAAS3lI,GAAK,GACxCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAKwlI,SAAS,EAAG7yJ,GAAO,KAGrCpD,EAAAA,MAA2C81J,EAAQ,GAAG,EAAO,CACxEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAKylI,UAAU7lI,GAAK,GACzCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAK0lI,UAAU,EAAG/yJ,GAAO,KAGtCpD,EAAAA,MAA2C81J,EAAQ,GAAG,EAAO,CACxEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAKylI,UAAU7lI,GAAK,GACzCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAK0lI,UAAU,EAAG/yJ,GAAO,KAGtCpD,EAAAA,MAA2C81J,EAAQ,GAAG,EAAM,CACvEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAK2lI,SAAS/lI,GAAK,GACxCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAK4lI,SAAS,EAAGjzJ,GAAO,KAGrCpD,EAAAA,MAA2C81J,EAAQ,GAAG,EAAM,CACvEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAK2lI,SAAS/lI,GAAK,GACxCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAK4lI,SAAS,EAAGjzJ,GAAO,KAGrCpD,EAAAA,GAAwC81J,EAAQ,GAAG,EAAO,CACrEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAK6lI,SAASjmI,GACnCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAK8lI,SAAS,EAAGnzJ,KAG9BpD,EAAAA,GAAwC81J,EAAQ,GAAG,EAAM,CACpEv8G,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAK+lI,QAAQnmI,GAClCrlB,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAKgmI,QAAQ,EAAGrzJ,KAI1C,MAAMk8H,EAAOq2B,GACXllI,EAAK,EAAG,CACN8oB,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAKimI,WAAWrmI,EAAKslI,GAC1C3qJ,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAKkmI,WAAW,EAAGvzJ,EAAOuyJ,GAClDphB,SAAWnxI,IACT,GAAIkG,KAAKstJ,OAAOxzJ,KAAWA,IAAUisB,OAAO/U,MAAMlX,GAChD,MAAM,IAAIW,MAAM,oBAAoBX,IAAQ,IAG9Co8H,EAAOm2B,GACXllI,EAAK,EAAG,CACN8oB,KAAMA,CAAC9oB,EAAMJ,IAAQI,EAAKomI,WAAWxmI,EAAKslI,GAC1C3qJ,MAAOA,CAACylB,EAAMrtB,IAAUqtB,EAAKqmI,WAAW,EAAG1zJ,EAAOuyJ,KAIzC31J,EAAAA,MAA2Cs/H,GAAI,GAE/Ct/H,EAAAA,MAA2Cs/H,GAAI,GAE/Ct/H,EAAAA,MAA2Cw/H,GAAI,GAE/Cx/H,EAAAA,MAA2Cw/H,GAAI,GAG/Cx/H,EAAAA,MAA2C,EAAAA,EAAAm2B,MAAK,CAC3D/L,KAAM,EACNmmI,aAAcA,CAAC1uH,EAAWz+B,IAAmBy+B,EAAEpS,KAAKrsB,EAAQ,EAAI,GAChEotJ,aAAez/I,IACb,MAAM3N,EAAQ2N,EAAE0e,OAChB,GAAc,IAAVrsB,GAAyB,IAAVA,EAAa,MAAM2N,EAAE+Y,IAAI,uBAAuB1mB,KACnE,OAAiB,IAAVA,CAAW,EAEpBmxI,SAAWnxI,IACT,GAAqB,mBAAVA,EAAqB,MAAM,IAAIW,MAAM,uBAAuBX,KACvE,OAAOA,CAAK,IAqBhB,MAAMktJ,EAAc,SAACj+I,GAA6C,IAAhCsjJ,EAAE7zJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAClC,GAAkB,mBAAP6zJ,EAAkB,MAAM,IAAI5xJ,MAAM,0CAA0C4xJ,GACvF,MAAMxE,EAAUC,EAAY/+I,GACtB0kJ,EAAOr1G,EAAQrvC,GACrB,OAAO,EAAArS,EAAAm2B,MAAK,CACV/L,KAAqB,kBAAR/X,EAAmBA,OAAMrQ,EACtCuuJ,aAAcA,CAAC1uH,EAAWz+B,KACnB2zJ,GAAM5F,EAAQZ,aAAa1uH,EAAGz+B,EAAMrB,QACzC8/B,EAAEwc,MAAMs3G,EAAKb,EAAe1xJ,GAASA,GACjC2zJ,GAAMl1H,EAAEwc,MAAMhsC,EAAI,EAExBm+I,aAAez/I,IACb,IAAIstC,EACJ,GAAI04G,EAAM,CACR,MAAMC,EAAOjmJ,EAAEiqD,KAAK3oD,GACpB,IAAK2kJ,EAAM,MAAMjmJ,EAAE+Y,IAAI,iCACvBu0B,EAAQttC,EAAEstC,MAAM24G,EAAOjmJ,EAAEsf,KACzBtf,EAAEstC,MAAMhsC,EAAItQ,OACd,MACEs8C,EAAQttC,EAAEstC,MAAc,OAARhsC,EAAetB,EAAE0gJ,UAAYN,EAAQX,aAAaz/I,IAEpE,OAAO4kJ,EAAKb,EAAez2G,GAASA,CAAK,EAE3Ck2F,SAAWnxI,IACT,IAAKs+C,EAAQt+C,GAAQ,MAAM,IAAIW,MAAM,wBAAwBX,KAC7D,OAAOA,CAAK,GAGlB,EAEwBpD,EAAAA,MAAAswJ,EAsCXtwJ,EAAAA,OAAS,SAACqS,GAAuB,OAC5CkiI,EAASh9D,EAAM+4E,EAAYj+I,EADSvQ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,IACCqD,EAAA06H,OAAQz8H,IAE3C,GAAqB,kBAAVA,EAAoB,MAAM,IAAIW,MAAM,+BAA+BX,GAC9E,OAAOA,CAAK,GACZ,EAGSpD,EAAAA,SAA6C,EAAAA,EAAA6gC,QAAO7gC,EAAAi3J,MA2CjE,SAAgB1/E,EAAY84E,EAAqB93I,GAC/C,IAAK63I,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,8BAA8BssJ,KACnE,IAAK4E,EAAY18I,GAAO,MAAM,IAAIxU,MAAM,6BAA6BssJ,KACrE,OAAO,EAAArwJ,EAAAm2B,MAAK,CACV/L,KAAMimI,EAAMjmI,KACZmmI,aAAcA,CAAC1uH,EAAWz+B,KACxB,IAAI8zJ,EACJ,IACEA,EAAa3+I,EAAKoH,OAAOvc,EAC3B,CAAE,MAAOqO,GACP,MAAMowB,EAAE/X,IAAI,GAAKrY,EACnB,CACA,OAAO4+I,EAAME,aAAa1uH,EAAGq1H,EAAW,EAE1C1G,aAAez/I,IACb,MAAMmmJ,EAAa7G,EAAMG,aAAaz/I,GACtC,IACE,OAAOwH,EAAK8H,OAAO62I,EACrB,CAAE,MAAOzlJ,GACP,MAAMV,EAAE+Y,IAAI,GAAKrY,EACnB,IAGN,CAhH4CzR,EAAAA,IA2D1B,SAChBqS,GAEqB,IADrByP,EAAAhgB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAmB,CAAEquB,MAAM,EAAOgnI,QAAQ,GAEtC9G,EAAQ94E,EAAM+4E,EAAYj+I,EAAKyP,EAAQqO,MAAOhrB,EAAA6B,KAClD,MAAMyM,EAASqO,EAAQq1I,OACvB,GAAsB,mBAAX1jJ,EACT,MAAM,IAAI1P,MAAM,4CAA4C0P,GAW9D,OAVIA,IACF48I,EAAQ94E,EAAM84E,EAAO,CACnBhwI,OAASjd,GAAU,KAAKA,IACxBuc,OAASvc,IACP,IAAKA,EAAM2F,WAAW,MACpB,MAAM,IAAIhF,MAAM,sDAClB,OAAOX,EAAMwK,MAAM,EAAE,KAIpByiJ,CACT,EA4LA,SAAgBQ,EAASR,EAAqB+G,GAAyB,IAAZ7gI,IAAKz0B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC9D,IAAKsuJ,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,8BAA8BssJ,KACnE,GAAqB,mBAAV95H,EAAqB,MAAM,IAAIxyB,MAAM,uCAAuCwyB,GACvF,OAAO,EAAAv2B,EAAAm2B,MAAK,CACV/L,KAAMimI,EAAMjmI,KACZmmI,aAAcA,CAAC1uH,EAAWw1H,IAAsBhH,EAAME,aAAa1uH,EAAGu1H,GACtE5G,aAAez/I,IACb,MAAM3N,EAAQitJ,EAAMG,aAAaz/I,GACjC,GACGwlB,GAA0B,kBAAVnzB,GAAsBA,IAAUg0J,GAChD11G,EAAQ01G,KAAcz2F,EAAWy2F,EAAUh0J,GAE5C,MAAM2N,EAAE+Y,IAAI,yBAAyB1mB,SAAag0J,IAE9C,EAER7iB,SAAWnxI,IACT,QAAcpB,IAAVoB,EAAqB,MAAM,IAAIW,MAAM,6BAA6BX,GACtE,OAAOA,CAAK,GAGlB,CA5IapD,EAAAA,KAAO,SAACs3J,GAAiE,IAA/C9xH,EAAG1jC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACxC,IAAK4/C,EAAQ41G,GACX,MAAM,IAAIvzJ,MAAM,mDAAmDuzJ,GACrE,GAAmB,mBAAR9xH,EAAmB,MAAM,IAAIzhC,MAAM,0CAA0CyhC,GACxF,OAAO,EAAAxlC,EAAAm2B,MAAK,CACV/L,KAAMktI,EAAUv1J,OAChBwuJ,aAAcA,CAAC1uH,EAAWz+B,OAClBA,IAAUoiC,GAAK3D,EAAEwc,MAAMi5G,EAAU,EAEzC9G,aAAez/I,IACb,IAAI4/I,EAAU5/I,EAAE0gJ,WAAa6F,EAAUv1J,OAMvC,OALI4uJ,IACFA,EAAUhwF,EAAW5vD,EAAEstC,MAAMi5G,EAAUv1J,QAAQ,GAAOu1J,GAElD3G,GAAS5/I,EAAEstC,MAAMi5G,EAAUv1J,SAE1B4uJ,IAAYnrH,CAAG,EAExB+uG,SAAWnxI,IACT,QAAcpB,IAAVoB,GAAwC,mBAAVA,EAChC,MAAM,IAAIW,MAAM,yDAAyDX,GAC3E,OAAOA,CAAK,GAGlB,EAsJA,SAAS4tJ,EAAO7mD,GACd,IAAI//E,EAAuB,EAC3B,IAAK,MAAM2gC,KAAKo/C,EAAQ,CACtB,QAAenoG,IAAX+oD,EAAE3gC,KAAoB,OAC1B,IAAK9V,EAAMy2C,EAAE3gC,MAAO,MAAM,IAAIrmB,MAAM,8BAA8BqmB,KAClEA,GAAQ2gC,EAAE3gC,IACZ,CACA,OAAOA,CACT,CAqLA,SAAgBxhB,EAAOynJ,EAAqBsB,GAC1C,IAAKvB,EAAQC,GAAQ,MAAM,IAAItsJ,MAAM,4BAA4BssJ,KACjE,IAAKU,EAAcY,GAAW,MAAM,IAAI5tJ,MAAM,wCAC9C,MAAMwzJ,EAA+B,IAAIt1I,IACzC,IAAK,MAAMzQ,KAAKmgJ,EAAU4F,EAAa/gJ,IAAIm7I,EAASngJ,GAAIA,GACxD,OAAO,EAAAxR,EAAAm2B,MAAK,CACV/L,KAAMimI,EAAMjmI,KACZmmI,aAAcA,CAAC1uH,EAAWz+B,IAAkBitJ,EAAME,aAAa1uH,EAAG8vH,EAASvuJ,IAC3EotJ,aAAez/I,IACb,MAAMmrH,EAAUm0B,EAAMG,aAAaz/I,GAC7Be,EAAOylJ,EAAazrJ,IAAIowH,GAC9B,QAAal6H,IAAT8P,EACF,MAAMf,EAAE+Y,IAAI,wBAAwBoyG,KAAW7xH,MAAM3F,KAAK6yJ,EAAaj4I,WACzE,OAAOxN,CAAI,EAEbyiI,SAAWnxI,IACT,GAAqB,kBAAVA,EAAoB,MAAM,IAAIW,MAAM,sBAAsBX,KACrE,KAAMA,KAASuuJ,GAAW,MAAM,IAAI5tJ,MAAM,yBAAyBX,KACnE,OAAOA,CAAK,GAGlB,CAmBA,SAAgB4hD,EAMdA,EAA0B2sG,GAC1B,IAAKvB,EAAQprG,GAAM,MAAM,IAAIjhD,MAAM,0BAA0BihD,KAC7D,IAAK+rG,EAAcY,GAAW,MAAM,IAAI5tJ,MAAM,wCAC9C,IAAK,MAAM+N,KAAQ6/I,EACjB,IAAKvB,EAAQuB,EAAS7/I,IAAQ,MAAM,IAAI/N,MAAM,gBAAgB+N,sBAEhE,OAAO,EAAA9R,EAAAm2B,MAAK,CACV/L,KAAM46B,EAAI56B,KACVmmI,aAAcA,CAAC1uH,EAAWz+B,KACxB,MAAM,IAAEo0J,EAAG,KAAE3zJ,GAAST,EAChBq0J,EAAW9F,EAAS6F,GAC1BxyG,EAAIurG,aAAa1uH,EAAG21H,GACpBC,EAASlH,aAAa1uH,EAAGh+B,EAAK,EAEhC2sJ,aAAez/I,IACb,MAAMymJ,EAAMxyG,EAAIwrG,aAAaz/I,GACvB0mJ,EAAW9F,EAAS6F,GAC1B,IAAKC,EAAU,MAAM1mJ,EAAE+Y,IAAI,oBAAoB0tI,KAC/C,MAAO,CAAEA,MAAK3zJ,KAAM4zJ,EAASjH,aAAaz/I,GAAW,EAEvDwjI,SAAWnxI,IACT,MAAM,IAAEo0J,GAAQp0J,EAEhB,IADiBuuJ,EAAS6F,GACX,MAAM,IAAIzzJ,MAAM,oBAAoByzJ,EAAI7yJ,cACvD,OAAOvB,CAAK,GAGlB,CA/RapD,EAAAA,WAAco3J,IACzB,MAAM9lJ,EAAwB,kBAAb8lJ,EAAwBjyJ,EAAA06H,KAAKlgH,OAAOy3I,GAAYA,EACjE,OAAOvG,EAAMP,EAAYh/I,EAAEvP,QAASuP,EAAE,EA4WxC,SAAS2gJ,EAAU/jB,EAAmB77H,GACpC,OAAIA,EAAM67H,IAAc,EAAU,EAC3BA,EAAa77H,EAAM67H,CAC5B,CALaluI,EAAAA,QAAkB2/B,GAAM,EA2HxB3/B,EAAAA,MAgDT,CAAE03J,QAAShF,EAAQgB,UAASgB,UAAShE,sCCvoEzCxtJ,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0pF,kBAAe,EACvB,MAAMrkF,EAAUrE,EAAQ,OAClB22J,EAAmB32J,EAAQ,OAiGjChB,EAAQ0pF,aA7FR,MACIv7E,WAAAA,CAAY+kB,GAA2J,IAAjJ0kI,EAAQ91J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,MAAO+1J,EAAU/1J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAgB,QAAb81J,EAAqB,KAA4B,KAAuC3hG,EAAan0D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAMg2J,EAAEh2J,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACjK9B,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,kBACrCtF,KAAK63J,cAAgB,KACrB73J,KAAKgzB,SAAWA,EAChBhzB,KAAK03J,SAAWA,EAChB13J,KAAK23J,WAAajyJ,OAAOiyJ,GACzB33J,KAAK83J,MAAQF,GAAIl2J,KAAO,KACxB1B,KAAK+3J,QAAUH,GAAI1xJ,OAAS,KAC5BlG,KAAKg4J,iBAAmBtyJ,OAAO0D,KAAKC,MAAsB,IAAhB0sD,GAC9C,CAOA,iBAAMC,GACF,MAAMgsB,QAAchiF,KAAKgzB,SAASsiG,qBAAqB,UACvD,IAAI2iC,GAAY,EAAI9yJ,EAAQc,UAA4B,QAAlBjG,KAAK03J,SAAqB11E,EAAMk2E,aAAaC,aAAen2E,EAAMk2E,aAAaE,cAGrH,OAFAH,EAAYA,EAAYj4J,KAAKg4J,iBAAmB,SAChDh4J,KAAK6hB,OAAO0F,MAAM,+BAAiC0wI,EAAUxzJ,SAAS,KAC/DwzJ,CACX,CAMA,gBAAMn7E,GACF,GAA0B,MAAtB98E,KAAK63J,eAAyBhrI,KAAKC,MAAQ9sB,KAAK63J,cAActiC,UAjCtD,IAiC+E,CACvF,IAAI3mH,EAAM,CACN2mH,UAAW1oG,KAAKC,MAChBtmB,QAAS,MAEboI,EAAIpI,QAAUxG,KAAKg2D,cAAcpzC,OAAMrR,IAGnC,MAFIvR,KAAK63J,gBAAkBjpJ,IACvB5O,KAAK63J,cAAgB,MACnBtmJ,CAAC,IAEXvR,KAAK63J,cAAgBjpJ,CACzB,CACA,IAAIpI,QAAgBxG,KAAK63J,cAAcrxJ,QACnCA,EAAUxG,KAAK23J,aACfnxJ,EAAUxG,KAAK23J,YACnB,MAAMj2J,EAAM8E,EAAQ/B,SAAS,IAAM,KAAyB,QAAlBzE,KAAK03J,SAAqB,KAAO,MAE3E,OADA13J,KAAK6hB,OAAO0F,MAAM,iCAAmC7lB,GAC9CA,CACX,CACA22J,kBAAAA,GACI,MAAyB,QAAlBr4J,KAAK03J,SAAqBD,EAAiBa,eAAeC,UAAYd,EAAiBa,eAAeE,UACjH,CAOA,gBAAOC,CAAUhxJ,EAAKjB,GAClB,GAAe,MAAXA,EACA,OAAO,GACX,MAAMwR,EAAMxR,EAAQ+B,MAAM,KAE1B,OADiB7C,OAAOsS,EAAI,IACVtS,OAAO+B,EAC7B,CACA,kBAAOixJ,CAAYlyJ,GACf,GAAe,MAAXA,EACA,OAAO,KAGX,MAAqB,OAFTA,EAAQ+B,MAAM,KACJ,GACMkvJ,EAAiBa,eAAeC,UAAYd,EAAiBa,eAAeE,UAC5G,CACAr7E,aAAAA,CAAcT,EAAYC,EAAYn2E,GAClC,GAAe,MAAXA,EACA,OAAO,KACX,MAAMwR,EAAMxR,EAAQ+B,MAAM,KACpBowJ,EAAWjzJ,OAAOsS,EAAI,IACtBy0C,EAAUz0C,EAAI,GAEpB,MAAO,CACH40G,QAFW,EAAIznH,EAAQgmD,OAAOzlD,OAAOg3E,GAAci8E,EAAU,IAG7DlsG,QAAqB,OAAZA,EAAmB,MAAQ,MACpCmsG,eAAgB,CACZC,OAAQ,CAAEC,YAAY,EAAI3zJ,EAAQgmD,OAAOuxB,EAAY,IAAKq8E,oBAAoB,EAAI5zJ,EAAQgmD,OAAOwtG,EAAU,KAC3GK,OAAQ,CAAEF,WAAY,MAAOC,mBAAoB,QAErDE,IAAK,MACLC,cAAe,GACfC,0BAA2Bn5J,KAAK+3J,QAChCqB,wBAAyBp5J,KAAK83J,MAEtC,4gBCnGJtoJ,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,MAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,iCCDAkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQu5J,kBAAe,EACvB,MAAMC,EAAcx4J,EAAQ,OACtBy4J,EAAkBz4J,EAAQ,OAC1BmE,EAASnE,EAAQ,OACjBwJ,EAAcxJ,EAAQ,OACtBgmH,EAAchmH,EAAQ,OACtBugB,EAAsBvgB,EAAQ,OAC9BuyD,EAAavyD,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClBqrD,EAAoBrrD,EAAQ,OAC5B4qB,EAAiB5qB,EAAQ,OACzBgJ,EAAUhJ,EAAQ,OACxB,MAAMu4J,UAAqBE,EAAgBC,cAavCvrJ,WAAAA,CAAYqT,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsB+tG,EAAQ9tG,EAASzT,GAC/G,MAAXyT,IACAA,EAAU,CAAC,GACfA,EAAQ+tG,eAAiB/tG,EAAQ+tG,gBAAkB7lH,EAAQ62G,aAC3D/+F,EAAQysG,aAAezsG,EAAQysG,cAAgB,EAC/CzsG,EAAQiuG,iBAAmBjuG,EAAQiuG,kBAAoB,EACvDjuG,EAAQmuG,iBAAmBnuG,EAAQmuG,kBAAqB,IACxDnuG,EAAQ63I,mCAAqC73I,EAAQ63I,oCAAsC,EAC3F73I,EAAQ83I,wCAA0C93I,EAAQ83I,yCAA2C,GACrGtzJ,MAAMkb,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsBC,EAASzT,GACpHnO,KAAK4lB,KAAOytC,EAAWS,SAAS6lG,OAChC35J,KAAK8lB,iBAAmBwzI,EAAYM,UACpC55J,KAAK0vH,OAASA,CAClB,CAMAmqC,cAAAA,GAEI,OADkBn0J,OAAO0D,KAAKC,MAAOwjB,KAAKC,MAAQ,KAAS,MACtC,IAAO7nB,EAAOgqB,kBAAkBG,WAAW9kB,EAAY,GAChF,CASAwvJ,wBAAAA,CAAyBC,GACrB,IACI,OAAO,EAAI50J,EAAQ2xD,gBAAgB92D,KAAK4hB,QAAQ+tG,eAAgBoqC,EACpE,CACA,MAAOxoJ,GACH,MAAM,IAAIu1G,EAAY6C,UAAU,4BACpC,CACJ,CAaA2H,kBAAAA,CAAmBxjG,EAAMnL,EAAY4uG,EAAI3vG,EAASje,EAAMiB,GACpD,GAAIkpB,EAAK4qB,WAAc5qB,EAAKioB,QAAUjoB,EAAK5J,WACvC,MAAM,IAAI7C,EAAoBkD,kBAAkB,6BACpD,GAAI5B,EAAWkrG,SACX,GAAI//F,EAAKwI,QAAU3T,EAAWnhB,OAC1B,MAAM,IAAI6f,EAAoBkD,kBAAkB,+BAGpD,GAAIuJ,EAAKtsB,SAAWmhB,EAAWnhB,OAC3B,MAAM,IAAI6f,EAAoBkD,kBAAkB,2BAExD,MAGMy1I,EAHuBt0J,OAAOkc,EAAQwJ,cACxCxJ,EAAQksG,mBACR9tH,KAAK4hB,QAAQ83I,yCAEXh0J,OAAO1F,KAAK4hB,QAAQ63I,oCACpB/zJ,OAAO1F,KAAK4hB,QAAQmuG,kBAEpBkqC,EADmBv0J,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,MACHktI,EACrD,GAAIr2J,EAAKi/D,YAAcq3F,EACnB,MAAM,IAAI54I,EAAoBkD,kBAAkB,kCAEpD,GAAI5gB,EAAK6yC,cAAgB1oB,EAAKwI,OAC1B3yB,EAAKspD,iBAAmBroD,GACxBjB,EAAK+D,YAAczC,EAAO2C,cAAcC,eACvClE,EAAKm/D,YACLn/D,EAAKg/D,QAAQhgD,EAAWxa,QACzBxE,EAAKw0C,eAAiBo5E,EAAGp6E,WAAWn3C,KAAKshB,iBACzC,MAAM,IAAID,EAAoBkD,kBAAkB,wBAExD,CAYA7a,MAAAA,CAAOhG,EAAQgD,EAASic,EAAYivG,EAAKhwG,EAASgsG,EAAkBxlH,GAChE,IAAKpI,KAAKgiB,cACN,MAAM,IAAIne,MAAM,uCACpB+d,IAAY,CAAC,EACbA,EAAQksG,qBAAuB,EAC/BlsG,EAAQwJ,gBAAkB,EAC1B,MAAMllB,EAAQlG,KAAK65J,iBACb58H,EAAej9B,KAAK85J,yBAAyBpzJ,GAC7CglH,EAAS/oG,EAAWkrG,QAEtB,KADA7tH,KAAKwhB,SAASokF,kBAAkB3oE,EAActa,EAAWnhB,OAAQogB,EAAQwJ,cAAellB,GAAOzB,SAAS,OAEtGotH,GAAmB,EAAI1sH,EAAQooB,uBAAuBnlB,GACtD8xJ,EAAuBl6J,KAAK0iB,cAAcC,EAAYkvG,EAAiBplG,QACvEvJ,EAAiBljB,KAAKgyH,gBAAgBtuH,EAAQif,EAAY+oG,EAAOmG,GACvE,OAAOD,EAAIlpH,KAAI6oH,IACJ,CACHU,aAAcV,EACdW,MAAO,WACH,MAAM5kG,GAAkB,EAAInoB,EAAQooB,uBAAuBskG,EAAiBplG,QACtE0tI,EAAoBn6J,KAAKo6J,+BAA+Bz3I,EAAY4uG,EAAIjkG,GAC9E,IACI,MAAM,gBAAE+kG,EAAe,KAAEvkG,SAAe,EAAI3oB,EAAQke,iBAAgBhU,UAChE,MAAM,iBAAE0T,EAAgB,SAAE4Q,GAAaw4B,EAAkBgD,gBAAgBu+D,UAAU1tH,KAAKshB,gBAAiBiwG,EAAGhlG,IAAK,CAC7G0gG,WAAYvmH,EACZlF,OAAQmhB,EAAWnhB,OACnBssH,mBAAoBlsG,EAAQksG,mBAC5B1iG,cAAexJ,EAAQwJ,cACvBllB,MAAOA,EACPiC,MAAOwa,EAAWxa,MAClBm6D,QAAS5+D,EACTmqH,QAASlrG,EAAWkrG,QACpBrnH,QAAS0c,EACT0qG,oBACD5tH,KAAK4hB,QAAQ0wG,mBAAoBhlG,EAAgBb,SAAQ8lG,EAAa,IAAY,MACrF,MAAO,CACHF,gBAAiBryH,KAAK8iB,iBAAiBC,GACvC+K,WAAY6F,EACf,GACF,KAAMjI,EAAe2C,aAAcf,EAAgBb,QACtD,IAAI7nB,EAAO+d,EAAWkrG,QAClB7tH,KAAKwhB,SAASokF,kBAAkB3oE,EAAcnP,EAAKtsB,OAAQogB,EAAQwJ,cAAellB,GAAOzB,SAAS,OAClGinH,EACJ,MAAM/nH,EAAO,IAAI3D,KAAK2hB,qBAAqBmM,EAAKnqB,MAChDA,EAAK4+D,WAAW7+D,GAChB1D,KAAKsxH,mBAAmBxjG,EAAMnL,EAAY4uG,EAAI3vG,EAASje,EAAMiB,GAC7D,MAAOsxC,EAAas8E,EAAiB/wD,SAAoBp9D,QAAQoE,IAAI,CACjEzI,KAAKyjB,oBAAoB8tG,EAAGC,SAASn+D,EAAWS,SAAS6lG,SAAS,EAAM7rI,EAAKtsB,OAAQmC,EAAK6yC,YAAa7zB,EAAWxa,MAAO2lB,EAAMosI,EAAsB5sI,EAAgBb,QACrKzsB,KAAKijB,wBAAwBtf,EAAMmqB,EAAM5K,EAAgBmvG,EAAiB/kG,EAAgBb,QAC1F0tI,IAEJ7sI,EAAgBb,OAAOoB,iBACvB,MAAMqkG,EAAQ,IAAIonC,EAAYM,UAAU55J,KAAM,CAC1Ck2C,cACA3pB,IAAKglG,EAAGhlG,IACR6jC,OAAQoiE,EACRz8E,QAASjoB,EAAKioB,QACdvvC,cAAe0c,EACf+1B,cAAenrB,EACfnqB,OACAugB,WAAY4J,EAAK5J,WACjBxd,UACAlF,OAAQssB,EAAKtsB,OACbssH,mBAAoBlsG,EAAQksG,mBAC5BusC,aAAclrI,OAAOrB,EAAK2+F,cAC1BoB,QAASlrG,EAAWkrG,UAAW,EAC/Bp9B,sBAAuB7uE,EAAQwJ,cAC/BllB,UAGJ,aADMgsH,EAAMQ,QACLR,CACX,CACA,MAAO3gH,GAEH,MADA+b,EAAgBI,MAAMnc,GAChBA,CACV,CACH,EA1DM,MA6DnB,EAEJzR,EAAQu5J,aAAeA,gCCvMvBr2J,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQkkG,uBAAoB,EAC5B,MAAM/+F,EAASnE,EAAQ,OACjBqE,EAAUrE,EAAQ,OAClBw5J,EAAuBx5J,EAAQ,OAC/By5J,EAAmBz5J,EAAQ,OAC3BioF,EAAiBjoF,EAAQ,OAC/B,MAAMkjG,UAA0Bs2D,EAAqBE,mBAWjDz2D,KAAAA,CAAMrgG,EAAQ4C,EAAUa,EAASszJ,GAC7B,OAAO,IAAIF,EAAiBl+E,eAAe34E,EAAQ1D,KAAKw6E,KAAMx6E,KAAKwhB,SAASk5I,oBAAoBruJ,MAAM/F,EAASg+D,iBAAkBn9D,IAAU,EAAIozJ,EAAiBj+E,gBAAgBh2E,EAASi7D,OAASyiC,EAAkB22D,SAASC,cAAgB52D,EAAkB22D,SAASE,MAAOJ,GACnR,CAWA,wBAAM5zD,CAAmBnjG,EAAQ4C,EAAU0tD,EAAQ8yC,EAAatgG,GAG5D,GAAIsgG,SAAqB9mG,KAAKw6E,KAAKxrB,UAAU1oD,EAASs7D,QAAQn9D,WAAY6B,GACtE,MAAM,IAAIrB,EAAO61J,0BAA0B,+CAE/C,MAAMh5F,EAAe9hE,KAAKw6E,KAAKgpB,uBAAuBl9F,EAASw7D,aAAaltD,eAC5E,GAAoB,MAAhBktD,EACA,MAAM,IAAI78D,EAAO61J,0BAA0B,0BAC/C,GAAIh5F,EAAap6D,YAAczC,EAAO2C,cAAc66F,KAChD,MAAM,IAAIx9F,EAAO61J,0BAA0B,0BAC/Ct0J,IAAYA,QAAgBxG,KAAKw6E,KAAKqC,KAAKC,cAC3C,MAAM,YAAE51E,EAAW,QAAEC,SAAkB26D,EAAaz7D,WAAW3C,EAAQ4C,EAAU0tD,EAAQxtD,GACnFw2E,EAASh9E,KAAK+jG,MAAMrgG,EAAQ4C,EAAUa,EAAS26D,EAAat6D,OAAOlB,IAGzE,aAFM02E,EAAOS,SAASv2E,EAAaV,GACnCxG,KAAK6hB,OAAO0F,MAAM,2DAA6DjhB,EAAS2mD,eAAiB,aAAc9lD,EAAQuB,IAAIvD,EAAQgmD,QACpIjkD,CACX,CAaA,wBAAM+/F,CAAmBvjG,EAAQ4C,EAAUO,EAAI4pF,EAAuBxpF,EAAMigG,EAAgBC,EAAc3gG,GACtG,MAAMs7D,EAAe9hE,KAAKw6E,KAAKgpB,uBAAuBl9F,EAASw7D,aAAaltD,eAC5E,GAAoB,MAAhBktD,EACA,MAAM,IAAI78D,EAAO61J,0BAA0B,0BAC/C,GAAIh5F,EAAap6D,YAAczC,EAAO2C,cAAcC,cAChDi6D,EAAap6D,YAAczC,EAAO2C,cAAc86F,YAChD5gC,EAAap6D,YAAczC,EAAO2C,cAAc+6F,MAChD,MAAM,IAAI19F,EAAO61J,0BAA0B,0BAC/Ct0J,IAAYA,QAAgBxG,KAAKw6E,KAAKqC,KAAKC,cAC3C,MAAM,YAAE51E,EAAW,QAAEC,SAAkB26D,EAAaz7D,WAAW3C,EAAQ4C,EAAU,CAC7EO,KACAI,OACAwpF,wBACAyW,iBACAnpB,SAAU/9E,KAAKw6E,KAAKuD,SACpBopB,gBACD3gG,GACGw2E,EAASh9E,KAAK+jG,MAAMrgG,EAAQ4C,EAAUa,EAAS26D,EAAat6D,OAAOlB,IAEzE,aADM02E,EAAOS,SAASv2E,EAAaV,GAC5BU,CACX,CAIA,iBAAMkxC,CAAY9xC,EAAUE,GACxBA,IAAYA,QAAgBxG,KAAKw6E,KAAKqC,KAAKC,cAC3C,IAAIi+E,EAAcz0J,EAASi7D,OAASyiC,EAAkB22D,SAASC,cAAgB52D,EAAkB22D,SAASE,MAC1G,MAAM/4F,EAAe9hE,KAAKw6E,KAAKgpB,uBAAuBl9F,EAASw7D,aAAaltD,eAG5E,OAFoB,MAAhBktD,IACAi5F,GAAc,EAAIR,EAAiBj+E,gBAAgBy+E,EAAaj5F,EAAat6D,OAAOlB,KACjFyiF,EAAeS,aAAaivE,UAAUsC,EAAYjzJ,GAAItB,EACjE,EAEJ1G,EAAQkkG,kBAAoBA,EAC5BA,EAAkB22D,SAAW,CACzBE,MAAO,CAAE/yJ,GAAI,IAAKy0E,GAAI,GACtBq+E,cAAe,CAAE9yJ,GAAI,IAAMy0E,GAAI,+QClGnC,MAAAz9D,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAOAme,EAAAne,EAAA,OA6HA,SAAgBk6J,EAA4C77I,GAInC,IAJoC,UACzDnd,EACAod,MAAOoT,EAASyoI,KAAS94J,GAAQ,KACjCwB,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAyoI,OACA94J,WAEJwB,KAAM7D,EAAAo7J,kCAAkCz7I,OAAO9b,GAEvD,CAlIa7D,EAAAA,mCAAoC,EAAAgf,EAAAY,QAA0C,EACvF,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,OAaP7f,EAAAA,oCAAA,SACI0yB,EACArwB,EACAmW,GAC4B,IAA5BtW,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,EAAO,CACT,CAAEU,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQjf,EAAAs6J,mBAAoBp7I,UAAU,EAAOC,YAAY,IAE/D,IAAK,MAAMtc,KAAUvB,EACjBid,EAAK9X,KAAK,CACNwY,OAAQpc,aAAkB7C,EAAAiE,UAAYpB,EAASA,EAAOiB,UACtDob,UAAU,EACVC,YAAY,IAIpB,MAAMrc,EAAOY,EAAO0b,MAAMngB,EAAAo7J,kCAAkCh7I,MAS5D,OARApgB,EAAAo7J,kCAAkC/6I,OAC9B,CACId,YAAaJ,EAAAmB,iBAAiBg7I,mBAC9B9iJ,KAEJ3U,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAwBA7D,EAAAA,oCAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAo7J,kCAAkCh7I,KAC9D,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,QAAEoT,EAAO,KAAEyoI,EAAI,QAAE94J,GAAS,KAChCwB,GACAq3J,EAA6C37I,GACjD,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBg7I,mBAAoB,MAAM,IAAIp8I,EAAA0B,iCACxE,IAAK8R,IAAYyoI,IAAS94J,EAAQN,OAAQ,MAAM,IAAImd,EAAA2B,iCAIpD,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAyoI,OACA94J,WAEJwB,OAER,EAuBA7D,EAAAA,6CAAAk7J,gCCnIA,IAAIj2C,EASJ,IAAIs2C,EAAiBv6J,EAAAA,OAAAA,EACnBw6J,EAAmBD,EAAeC,iBAClCC,EAAuBF,EAAeE,qBACxC,SAASz2C,EAAKl7F,GAEZ,GAAIA,EAAK,MAAMA,CACjB,CA+BA,SAAS9S,EAAKigG,GACZA,GACF,CACA,SAASlwB,EAAKriF,EAAMutB,GAClB,OAAOvtB,EAAKqiF,KAAK90D,EACnB,CA6BAhyB,EAAOD,QAvBP,WACE,IAAK,IAAImK,EAAOrI,UAAUC,OAAQ25J,EAAU,IAAIrxJ,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAClFoxJ,EAAQpxJ,GAAQxI,UAAUwI,GAE5B,IAKIyY,EALAmmF,EATN,SAAqBwyD,GACnB,OAAKA,EAAQ35J,OAC8B,oBAAhC25J,EAAQA,EAAQ35J,OAAS,GAA0BijH,EACvD02C,EAAQnmJ,MAFayvG,CAG9B,CAKiB22C,CAAYD,GAE3B,GADIrxJ,MAAMi3B,QAAQo6H,EAAQ,MAAKA,EAAUA,EAAQ,IAC7CA,EAAQ35J,OAAS,EACnB,MAAM,IAAIy5J,EAAiB,WAG7B,IAAII,EAAWF,EAAQ9yJ,KAAI,SAAUs8G,EAAQh6G,GAC3C,IAAI2wJ,EAAU3wJ,EAAIwwJ,EAAQ35J,OAAS,EAEnC,OAnDJ,SAAmBmjH,EAAQ22C,EAASC,EAAS5yD,GAC3CA,EAnBF,SAAcA,GACZ,IAAIic,GAAS,EACb,OAAO,WACDA,IACJA,GAAS,EACTjc,EAAS3xB,WAAM,EAAQz1E,WACzB,CACF,CAYao1G,CAAKhO,GAChB,IAAIu5B,GAAS,EACbvd,EAAOhN,GAAG,SAAS,WACjBuqB,GAAS,CACX,SACYzgI,IAARijH,IAAmBA,EAAMjkH,EAAQ,QACrCikH,EAAIC,EAAQ,CACVE,SAAUy2C,EACVnmG,SAAUomG,IACT,SAAUhyI,GACX,GAAIA,EAAK,OAAOo/E,EAASp/E,GACzB24G,GAAS,EACTv5B,GACF,IACA,IAAI54E,GAAY,EAChB,OAAO,SAAUxG,GACf,IAAI24G,IACAnyG,EAIJ,OAHAA,GAAY,EAtBhB,SAAmB40F,GACjB,OAAOA,EAAOa,WAAqC,oBAAjBb,EAAOt3F,KAC3C,CAuBQo4F,CAAUd,GAAgBA,EAAOt3F,QACP,oBAAnBs3F,EAAOnzF,QAA+BmzF,EAAOnzF,eACxDm3E,EAASp/E,GAAO,IAAI2xI,EAAqB,QAC3C,CACF,CAyBWM,CAAU72C,EAAQ22C,EADX3wJ,EAAI,GACyB,SAAU4e,GAC9C/G,IAAOA,EAAQ+G,GAChBA,GAAK8xI,EAAS3sJ,QAAQ+H,GACtB6kJ,IACJD,EAAS3sJ,QAAQ+H,GACjBkyF,EAASnmF,GACX,GACF,IACA,OAAO24I,EAAQvyJ,OAAO49E,EACxB,8BCjFA,SAASi1E,EAAWltJ,GAChB,MAAwB,kBAATA,GACG,QAAdA,EAAI0T,OACuB,mBAAnB1T,EAAImtJ,WACY,kBAAhBntJ,EAAI4T,QACc,kBAAlB5T,EAAInN,UACU,kBAAdmN,EAAIgD,IACpB,CAkBA,SAASoqJ,EAAUptJ,GACf,MAAwB,kBAATA,GACG,OAAdA,EAAI0T,OACqB,kBAAjB1T,EAAI2T,SACa,kBAAjB3T,EAAIlI,SACY,kBAAhBkI,EAAI4T,QACc,kBAAlB5T,EAAInN,UACU,kBAAdmN,EAAIgD,IACpB,CA4BA,SAASqqJ,EAAUz6J,EAAQ06J,EAAcC,EAAK15I,GAC1C,GAAIy5I,GAAgB,EAChB,OAAO16J,EAAOiD,SAAS,IAAM,IAAIktD,QAAQuqG,GAE7C,MAAME,EAAY56J,EAAOiD,SAAS,IAAI4mB,SAAS6wI,EAAe,EAAG,KAC3DG,EAAaD,EAAUv6J,OAASq6J,EAChCI,EAAcF,EAAUtzJ,UAAUuzJ,EAAYD,EAAUv6J,QAC9D,IAAI06J,EAAQD,EAAYz6J,OACxB,GAAIs6J,GAAOI,EAAQ,EAAG,CAClB,IAAK,IAAIvxJ,EAAIsxJ,EAAYz6J,OAAS,EAAGmJ,KACH,MAA1BsxJ,EAAYrqJ,OAAOjH,GADeA,GAAK,EAEvCuxJ,EAAQvxJ,EAKF,IAAVuxJ,IACAA,EAAQ,EAChB,CACA,OAAwB,IAApB95I,EACO25I,EAAUtzJ,UAAU,EAAGuzJ,IACX,MAAnB55I,GAA2B85I,EAAQ95I,IACnC85I,EAAQ95I,GACL25I,EAAUtzJ,UAAU,EAAGuzJ,GAAc,IAAMC,EAAYxzJ,UAAU,EAAGyzJ,GAC/E,CAvFAv5J,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ23C,cAAgB33C,EAAQm8J,UAAYn8J,EAAQ08J,YAAc18J,EAAQ6iE,QAAU7iE,EAAQk8J,UAAYl8J,EAAQ8zD,cAAgB9zD,EAAQg8J,gBAAa,EASrJh8J,EAAQg8J,WAAaA,EACrBh8J,EAAQ8zD,cAAgB,CACpB6oG,IAAK,CACDn6I,MAAO,MACPy5I,WAAW,EACXv5I,OAAQ,MACR/gB,SAAU,EACVmQ,KAAM,yBAEViiD,MAAO,CACHvxC,MAAO,MACPy5I,WAAW,EACXv5I,OAAQ,QACR/gB,SAAU,EACVmQ,KAAM,2BAYd9R,EAAQk8J,UAAYA,EAIpBl8J,EAAQ6iE,QAHR,SAAiB/zD,GACb,OAAOktJ,EAAWltJ,IAAQotJ,EAAUptJ,EACxC,EAuBA9O,EAAQ08J,YArBR,SAAqBh7J,EAAQ06J,GACzB,GAAI16J,EAAOs+C,SAAS,KAAM,CACtB,MAAO48G,EAAQC,GAASn7J,EAAO+G,MAAM,KACrC,OAAI2zJ,EAAe,EACRx2J,OAAOg3J,EAAO5zJ,UAAU,EAAG4zJ,EAAO76J,OAASq6J,IAElDS,EAAM96J,OAASq6J,EAERx2J,QAAmB,MAAXg3J,EAAiB,GAAKA,GAAUC,EAAM7zJ,UAAU,EAAGozJ,IAE/Dx2J,QAAmB,MAAXg3J,EAAiB,GAAKA,GAAUC,EAAMC,OAAOV,EAAc,KAC9E,CAEI,OAAIA,EAAe,EACRx2J,OAAOlE,EAAOsH,UAAU,EAAGtH,EAAOK,OAASq6J,IAG3Cx2J,OAAOlE,EAAS,IAAImwD,OAAOuqG,GAG9C,EA2BAp8J,EAAQm8J,UAAYA,EAWpBn8J,EAAQ23C,cAVR,SAAuBj2C,EAAQ2G,EAAOsZ,GAClC,IAAI26I,EAAYH,EAAUz6J,EAAQ2G,EAAM1G,cAAUK,EAAWqG,EAAMsa,iBACnE,MAAO,CACHuzB,UAAWx0C,EACXA,OAAQ46J,EACRS,QAAS5+C,WAAWm+C,GACpBj0J,QACA2vC,SAAUA,CAAC1vC,EAAa2vC,IAAuBt2B,EAAOq7I,YAAYt7J,EAAQ2G,EAAOC,EAAa2vC,GAEtG,gICnFAj4C,EAAAA,QAAA,SAAwB2Q,GACtB,OAAOA,aAAa6f,YAAemO,YAAYC,OAAOjuB,IAA6B,eAAvBA,EAAExC,YAAY2D,IAC5E,EAOA9R,EAAAA,GAAA,SAAmBkY,GACjB,OAAO,IAAIsY,WAAWtY,EAAIqY,OAAQrY,EAAIkZ,WAAYlZ,EAAI+mB,WACxD,EACAj/B,EAAAA,IAAA,SAAoBkY,GAClB,OAAO,IAAIV,YAAYU,EAAIqY,OAAQrY,EAAIkZ,WAAY9nB,KAAKC,MAAM2O,EAAI+mB,WAAa,GACjF,EAGAj/B,EAAAA,WAAA,SAA2BkY,GACzB,OAAO,IAAIqmG,SAASrmG,EAAIqY,OAAQrY,EAAIkZ,WAAYlZ,EAAI+mB,WACtD,EAGAj/B,EAAAA,KAAA,SAAqBkiC,EAAcj0B,GACjC,OAAQi0B,GAAS,GAAKj0B,EAAWi0B,IAASj0B,CAC5C,EAEAjO,EAAAA,KAAA,SAAqBkiC,EAAcj0B,GACjC,OAAQi0B,GAAQj0B,EAAWi0B,IAAU,GAAKj0B,IAAY,CACxD,EAMAjO,EAAAA,SAAA0+G,EAcA1+G,EAAAA,WAAA,SAA2BkY,GACzB,IAAK,IAAIhN,EAAI,EAAGA,EAAIgN,EAAInW,OAAQmJ,IAC9BgN,EAAIhN,GAAKwzG,EAASxmG,EAAIhN,GAE1B,EAUAlL,EAAAA,WAAA,SAA2Bq+C,IACzB,EAAA3uB,EAAAg2B,QAAOrH,GAEP,IAAIr3C,EAAM,GACV,IAAK,IAAIkE,EAAI,EAAGA,EAAImzC,EAAMt8C,OAAQmJ,IAChClE,GAAO21F,EAAMt+C,EAAMnzC,IAErB,OAAOlE,CACT,EAeAhH,EAAAA,WAAA,SAA2BgH,GACzB,GAAmB,kBAARA,EAAkB,MAAM,IAAIjD,MAAM,mCAAqCiD,GAClF,MAAM83G,EAAK93G,EAAIjF,OACTg9G,EAAKD,EAAK,EAChB,GAAIA,EAAK,EAAG,MAAM,IAAI/6G,MAAM,mDAAqD+6G,GACjF,MAAM/hB,EAAQ,IAAIvsE,WAAWuuF,GAC7B,IAAK,IAAIC,EAAK,EAAG76E,EAAK,EAAG66E,EAAKD,EAAIC,IAAM76E,GAAM,EAAG,CAC/C,MAAMzlB,EAAKkgG,EAAc53G,EAAIgK,WAAWmzB,IAClC86E,EAAKL,EAAc53G,EAAIgK,WAAWmzB,EAAK,IAC7C,QAAWniC,IAAP0c,QAA2B1c,IAAPi9G,EAAkB,CACxC,MAAMJ,EAAO73G,EAAIm9B,GAAMn9B,EAAIm9B,EAAK,GAChC,MAAM,IAAIpgC,MAAM,+CAAiD86G,EAAO,cAAgB16E,EAC1F,CACA44D,EAAMiiB,GAAW,GAALtgG,EAAUugG,CACxB,CACA,OAAOliB,CACT,EAUA/8F,EAAAA,UAAOuP,eACL2vG,EACA54F,EACAgO,GAEA,IAAI6qF,EAAKpyF,KAAKC,MACd,IAAK,IAAI9hB,EAAI,EAAGA,EAAIg0G,EAAOh0G,IAAK,CAC9BopB,EAAGppB,GAEH,MAAM2kC,EAAO9iB,KAAKC,MAAQmyF,EACtBtvE,GAAQ,GAAKA,EAAOvpB,UAClB,EAAAtmB,EAAAm3F,YACNgoB,GAAMtvE,EACR,CACF,EAUA7vC,EAAAA,YAAAq9G,EAYAr9G,EAAAA,QAAA4wB,EASA5wB,EAAAA,YAAA,WACE,IAAI2X,EAAM,EACV,IAAK,IAAIzM,EAAI,EAAGA,EAAIpJ,UAAOC,OAAQmJ,IAAK,CACtC,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,IACjB,EAAAwkB,EAAAg2B,QAAO/0C,GACPgH,GAAOhH,EAAE5O,MACX,CACA,MAAM+vB,EAAM,IAAItB,WAAW7Y,GAC3B,IAAK,IAAIzM,EAAI,EAAGwxF,EAAM,EAAGxxF,EAAIpJ,UAAOC,OAAQmJ,IAAK,CAC/C,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB4mB,EAAItb,IAAI7F,EAAG+rF,GACXA,GAAO/rF,EAAE5O,MACX,CACA,OAAO+vB,CACT,EA0CA9xB,EAAAA,UAAA,SACEq/G,EACAllF,GAEA,QAAan4B,IAATm4B,GAAiD,oBAA3B,CAAC,EAAEx1B,SAASqS,KAAKmjB,GACzC,MAAM,IAAIp2B,MAAM,yCAElB,OADeb,OAAO0nF,OAAOy0B,EAAUllF,EAEzC,EAUAn6B,EAAAA,gBAAA,SACEs/G,GAOA,MAAMC,EAAS5+G,GAA2B2+G,IAAWr7G,OAAO2sB,EAAQjwB,IAAMuD,SACpE6vC,EAAMurE,IAIZ,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAS,IAAM01G,IACdC,CACT,EAEAv/G,EAAAA,wBAAA,SACEs/G,GAOA,MAAMC,EAAQA,CAAC5+G,EAAYw5B,IAAyBmlF,EAASnlF,GAAMl2B,OAAO2sB,EAAQjwB,IAAMuD,SAClF6vC,EAAMurE,EAAS,CAAC,GAItB,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAUuwB,GAAYmlF,EAASnlF,GAC9BolF,CACT,EAEAv/G,EAAAA,2BAAA,SACEs/G,GAOA,MAAMC,EAAQA,CAAC5+G,EAAYw5B,IAAyBmlF,EAASnlF,GAAMl2B,OAAO2sB,EAAQjwB,IAAMuD,SAClF6vC,EAAMurE,EAAS,CAAC,GAItB,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAUuwB,GAAYmlF,EAASnlF,GAC9BolF,CACT,EAGAv/G,EAAAA,YAAA,WAA4C,IAAhB8gG,EAAWh/F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACxC,GAAIw8G,EAAA3nG,QAA4C,oBAA3B2nG,EAAA3nG,OAAOC,gBAC1B,OAAO0nG,EAAA3nG,OAAOC,gBAAgB,IAAI4Z,WAAWswE,IAG/C,GAAIwd,EAAA3nG,QAAwC,oBAAvB2nG,EAAA3nG,OAAOnM,YAC1B,OAAO8zG,EAAA3nG,OAAOnM,YAAYs2F,GAE5B,MAAM,IAAI/8F,MAAM,yCAClB,EApSA,MAAAu6G,EAAAt9G,EAAA,OACA0uB,EAAA1uB,EAAA,OAqCA,SAAgB09G,EAASx8E,GACvB,OACIA,GAAQ,GAAM,WACdA,GAAQ,EAAK,SACbA,IAAS,EAAK,MACdA,IAAS,GAAM,GAErB,CAValiC,EAAAA,KACiD,KAA5D,IAAIwwB,WAAW,IAAIhZ,YAAY,CAAC,YAAa+Y,QAAQ,GAW1CvwB,EAAAA,aAAsCA,EAAAmwB,KAC9C1f,GAAcA,EACdA,GAAciuG,EAASjuG,GAU5B,MAAMksF,EAAwBtyF,MAAM3F,KAAK,CAAE3C,OAAQ,MAAO,CAAC49B,EAAGz0B,IAC5DA,EAAEvG,SAAS,IAAI4mB,SAAS,EAAG,OAiB7B,MAAMozF,EAAS,CAAE2mB,GAAI,GAAIU,GAAI,GAAIv1F,EAAG,GAAIw6C,EAAG,GAAIt6E,EAAG,GAAIo6C,EAAG,KACzD,SAAS6zD,EAAc1f,GACrB,OAAIA,GAAMyf,EAAO2mB,IAAMpmC,GAAMyf,EAAOqnB,GAAW9mC,EAAKyf,EAAO2mB,GACvDpmC,GAAMyf,EAAOluE,GAAKyuD,GAAMyf,EAAO1zB,EAAUiU,GAAMyf,EAAOluE,EAAI,IAC1DyuD,GAAMyf,EAAOhuG,GAAKuuF,GAAMyf,EAAO5zD,EAAUm0C,GAAMyf,EAAOhuG,EAAI,SAA9D,CAEF,CAwDA,SAAgB0sG,EAAYnrG,GAC1B,GAAmB,kBAARA,EAAkB,MAAM,IAAInO,MAAM,2CAA6CmO,GAC1F,OAAO,IAAIse,YAAW,IAAImnD,aAAct3D,OAAOnO,GACjD,CASA,SAAgB0e,EAAQ/sB,GAGtB,MAFoB,kBAATA,IAAmBA,EAAOw5G,EAAYx5G,KACjD,EAAA6rB,EAAAg2B,QAAO7hD,GACAA,CACT,CA3Ca7D,EAAAA,SAAWuP,YAiExBvP,EAAAA,KAAA,MAsBEuS,KAAAA,GACE,OAAOrS,KAAK8xB,YACd,8GCpNF9uB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ2vH,qBAAkB,EAC1B,MAAM0pB,EAAiBr4I,EAAQ,MACzBwJ,EAAcxJ,EAAQ,OACtBugB,EAAsBvgB,EAAQ,OAC9BqE,EAAUrE,EAAQ,OAClBmE,EAASnE,EAAQ,OACvB,MAAM2uH,UAAwB0pB,EAAeh4H,aAOzC0vG,iBAAAA,GACI,OAAO5rH,EAAOgqB,kBAAkBG,WAAW9kB,EAAY,GAC3D,CAWA0nH,eAAAA,CAAgBtuH,EAAQif,EAAY2I,EAAWgC,GAC3C,OAAO,EAAInoB,EAAQke,iBAAgB,IAAMrjB,KAAKwhB,SAASmnF,eAAe,KAAMjlG,EAAQif,EAAWxa,MAAOmjB,IAAY,KAAM,KAAMgC,EAAgBb,QAAQ7J,OAAMrR,IACxJvR,KAAK6hB,OAAOgB,MAAM,6BAA8BtR,GAChD+b,EAAgBI,MAAMnc,GACf,OAEf,CASA6gH,6BAAAA,CAA8BzvG,EAAY4uG,EAAIjkG,GAC1C,OAAOikG,EAAGwrC,aAAa/8J,KAAKshB,gBAAiBthB,KAAKwhB,SAAUmB,EAAWxa,MAAM1D,WAAY6oB,EAAgBb,QAAQ7J,OAAMrR,IACnHvR,KAAK6hB,OAAOgB,MAAM,2CAA4CtR,GAC9D+b,EAAgBI,MAAMnc,GACf,OAEf,CASA,iCAAMkhH,CAA4BjxH,EAAQ2wH,GAEtC,SADwBA,EACR3wH,EACZ,MAAM,IAAI6f,EAAoBkD,kBAAkB,6CACxD,EAEJzkB,EAAQ2vH,gBAAkBA,yNCzDnB,MAAMh5G,EACW,kBAAfuvI,YAA2B,WAAYA,WAAaA,WAAWvvI,YAAS3U,iBFoB3E,SAAUg8H,EAAI9lH,GAClB,OAAO,IAAIV,YAAYU,EAAIqY,OAAQrY,EAAIkZ,WAAY9nB,KAAKC,MAAM2O,EAAI+mB,WAAa,GACjF,CAGM,SAAUvO,EAAWxY,GACzB,OAAO,IAAIqmG,SAASrmG,EAAIqY,OAAQrY,EAAIkZ,WAAYlZ,EAAI+mB,WACtD,CAGM,SAAUu/E,EAAKt8E,EAAcj0B,GACjC,OAAQi0B,GAAS,GAAKj0B,EAAWi0B,IAASj0B,CAC5C,CAEM,SAAUwwG,EAAKv8E,EAAcj0B,GACjC,OAAQi0B,GAAQj0B,EAAWi0B,IAAU,GAAKj0B,IAAY,CACxD,CAGO,MAAMkiB,EAAgC,KACiB,KAA5D,IAAIK,WAAW,IAAIhZ,YAAY,CAAC,YAAa+Y,QAAQ,GADV,GAGvC,SAAUmuF,EAASx8E,GACvB,OACIA,GAAQ,GAAM,WACdA,GAAQ,EAAK,SACbA,IAAS,EAAK,MACdA,IAAS,GAAM,GAErB,CAOM,SAAUg7H,EAAWhlJ,GACzB,IAAK,IAAIhN,EAAI,EAAGA,EAAIgN,EAAInW,OAAQmJ,IAC9BgN,EAAIhN,GAAKwzG,EAASxmG,EAAIhN,GAE1B,CA+FM,SAAU0lB,EAAQ/sB,GAGtB,MAFoB,kBAATA,IAAmBA,EAb1B,SAAsBqO,GAC1B,GAAmB,kBAARA,EAAkB,MAAM,IAAInO,MAAM,2CAA6CmO,GAC1F,OAAO,IAAIse,YAAW,IAAImnD,aAAct3D,OAAOnO,GACjD,CAUuCmrG,CAAYx5G,KACjD6hD,EAAAA,EAAAA,IAAO7hD,GACAA,CACT,CAKM,SAAU0G,IACd,IAAIoN,EAAM,EACV,IAAK,IAAIzM,EAAI,EAAGA,EAAIpJ,UAAOC,OAAQmJ,IAAK,CACtC,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,IACjBw6C,EAAAA,EAAAA,IAAO/0C,GACPgH,GAAOhH,EAAE5O,MACX,CACA,MAAM+vB,EAAM,IAAItB,WAAW7Y,GAC3B,IAAK,IAAIzM,EAAI,EAAGwxF,EAAM,EAAGxxF,EAAIpJ,UAAOC,OAAQmJ,IAAK,CAC/C,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB4mB,EAAItb,IAAI7F,EAAG+rF,GACXA,GAAO/rF,EAAE5O,MACX,CACA,OAAO+vB,CACT,CAGM,MAAgB/B,EAsBpBxd,KAAAA,GACE,OAAOrS,KAAK8xB,YACd,EAiCI,SAAU8yF,EACdxF,GAOA,MAAMC,EAAS5+G,GAA2B2+G,IAAWr7G,OAAO2sB,EAAQjwB,IAAMuD,SACpE6vC,EAAMurE,IAIZ,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAS,IAAM01G,IACdC,CACT,CAmCM,SAAU/0G,IAA4B,IAAhBs2F,EAAWh/F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACxC,GAAI6U,GAA4C,oBAA3BA,EAAOC,gBAC1B,OAAOD,EAAOC,gBAAgB,IAAI4Z,WAAWswE,IAG/C,GAAInqF,GAAwC,oBAAvBA,EAAOnM,YAC1B,OAAOmM,EAAOnM,YAAYs2F,GAE5B,MAAM,IAAI/8F,MAAM,yCAClB,mHG5SA,MAAMo5J,EAAY,SAAC/7H,EAAMlI,GAAsB,IAAjBkkI,EAAOt7J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACpC,MAAM+oF,EAAQ3nF,OAAOm6J,0BAA0BnkI,GAC/C,IAAK,IAAIltB,KAAQoxJ,SACNvyE,EAAM7+E,GACjB9I,OAAO6+F,iBAAiB3gE,EAAMypD,EAClC,EAKMyyE,EAAa,SAACxuJ,GAA8B,IAAzByuJ,EAAYz7J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAACgN,GACrC,MAAMsvI,EAAQl7I,OAAOyhF,eAAe71E,GACpC,OAAc,OAAVsvI,EACOmf,EACJD,EAAWlf,EAAO,IAAImf,EAAcnf,GAC/C,EA6BMof,EAAgB,SAACC,EAAatvJ,GAA8B,IAAjBivJ,EAAOt7J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACvD,IAAIgoI,EACJ,MAAMvxH,EAAqD,QAA7CuxH,EA1BS,WAAa,QAAA3/H,EAAArI,UAAAC,OAAT27J,EAAI,IAAArzJ,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJozJ,EAAIpzJ,GAAAxI,UAAAwI,GAC/B,GAAoB,IAAhBozJ,EAAK37J,OACL,OACJ,IAAI47J,EACJ,MAAMC,EAAcF,EAAK90J,KAAIkG,GAAOwuJ,EAAWxuJ,KAC/C,KAAO8uJ,EAAYnhE,OAAM6gE,GAAcA,EAAWv7J,OAAS,KAAI,CAC3D,MAAM87J,EAASD,EAAYh1J,KAAI00J,GAAcA,EAAW/nJ,QAClDuoJ,EAAuBD,EAAO,GACpC,IAAIA,EAAOphE,OAAM2hD,GAASA,IAAU0f,IAGhC,MAFAH,EAAcG,CAGtB,CACA,OAAOH,CACX,CAYuBI,IAAsBN,UAAiC,IAAP3zB,EAAgBA,EAAK5mI,OAAO4H,UACzFkzJ,EAAa96J,OAAO0G,OAAO2O,GAI3B0lJ,EAAgBX,EAAW/kJ,GACjC,IAAK,IAAIzN,KAAa2yJ,EAAa,CAC/B,IAAII,EAASP,EAAWxyJ,GAExB,IAAK,IAAII,EAAI2yJ,EAAO97J,OAAS,EAAGmJ,GAAK,EAAGA,IAAK,CACzC,IAAIgzJ,EAAWL,EAAO3yJ,IACmB,IAArC+yJ,EAAcxpJ,QAAQypJ,KACtBf,EAAUa,EAAYE,EAAU,CAAC,iBAAkBd,IACnDa,EAAcz2J,KAAK02J,GAE3B,CACJ,CAEA,OADAF,EAAW7vJ,YAAcA,EAClB6vJ,CACX,EACM3jG,EAAUniD,GAAQA,EAAIw7E,QAAO,CAACjiF,EAAGvG,IAAMgN,EAAIzD,QAAQhD,IAAMvG,IAMzDizJ,EAAwBA,CAACnyJ,EAAMyxJ,KACjC,MAAMG,EAAcH,EAAY70J,KAAIw1J,GAAcd,EAAWc,KAE7D,IAAIC,EAAa,EAGbC,GAAwB,EAC5B,KAAOA,GAAuB,CAE1BA,GAAwB,EAExB,IAAK,IAAIpzJ,EAAIuyJ,EAAY17J,OAAS,EAAGmJ,GAAK,EAAGA,IAAK,CAC9C,MAAMqzJ,EAAeX,EAAY1yJ,GAAGmzJ,GACpC,QAAqBr8J,IAAjBu8J,GAA+C,OAAjBA,IAE9BD,GAAwB,OAEmCt8J,GAAvDkB,OAAOsyD,yBAAyB+oG,EAAcvyJ,IAC9C,OAAO4xJ,EAAY1yJ,GAAG,EAGlC,CACAmzJ,GACJ,CACgB,EAMdG,EAAW,SAACf,GAAW,IAAE3yJ,EAAShJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGoB,OAAO4H,UAAS,OAAK,IAAIe,MAAM,CAAC,EAAG,CAC1E84E,eAAcA,IACH75E,EAEXs/F,cAAAA,GACI,MAAMrmG,MAAM,sDAChB,EACAyxD,yBAAwBA,CAAC71B,EAAG3zB,IACjB9I,OAAOsyD,yBAAyB2oG,EAAsBnyJ,EAAMyxJ,IAAgB,CAAC,EAAGzxJ,GAE3F7I,cAAAA,GACI,MAAM,IAAIY,MAAM,8DACpB,EACAyoB,IAAGA,CAACmT,EAAG3zB,SACiDhK,IAA7Cm8J,EAAsBnyJ,EAAMyxJ,SAAkDz7J,IAApB8I,EAAUkB,GAE/EF,IAAGA,CAAC6zB,EAAG3zB,KACKmyJ,EAAsBnyJ,EAAMyxJ,IAAgB3yJ,GAAWkB,GAEnEwK,GAAAA,CAAImpB,EAAG3zB,EAAM6C,GACT,MAAM4vJ,EAAqBN,EAAsBnyJ,EAAMyxJ,GACvD,QAA2Bz7J,IAAvBy8J,EACA,MAAM,IAAI16J,MAAM,4DAEpB,OADA06J,EAAmBzyJ,GAAQ6C,GACpB,CACX,EACA6vJ,cAAAA,GACI,MAAM,IAAI36J,MAAM,0DACpB,EACAukJ,QAAOA,IACImV,EACF70J,IAAI1F,OAAOuhF,qBACXt7E,QAAO,CAAC4rC,EAAM4lC,IAASA,EAAKtiE,OAAO08B,EAAK2+C,QAAOxpF,GAAOywE,EAAKlmE,QAAQvK,GAAO,QAErF,EAMIy0J,EAAgBA,CAAClB,EAAatvJ,IAAgBqwJ,EAAS,IAAIf,EAAa,CAAEtvJ,iBAE1EywJ,EAAW,CACbC,aAAc,KACdC,gBAAiB,OACjBC,kBAAmB,OACnBC,qBAAsB,QAIpBC,EAAS,IAAIplE,QACbqlE,EAAqBC,GAAUF,EAAOnzJ,IAAIqzJ,GAC1CC,EAAiBA,CAACC,EAAYC,IAAiBL,EAAOzoJ,IAAI6oJ,EAAYC,GACtEC,EAAWA,CAACC,EAAUC,KACxB,GAAID,aAAoBC,EACpB,OAAO,EACX,MAAMtxJ,EAAcqxJ,EAASrxJ,YACvBuxJ,EAAU,IAAI50I,IACpB,IAAI60I,EAAW,IAAI70I,IAEnB,IADA60I,EAASl9J,IAAI0L,GACNwxJ,EAASv1I,KAAO,GAAG,CAEtB,GAAIu1I,EAASnzI,IAAIizI,GACb,OAAO,EACXE,EAAS1wJ,SAASwkB,GAASisI,EAAQj9J,IAAIgxB,KAEvC,MAAMmsI,EAAc,IAAI90I,IACxB60I,EAAS1wJ,SAASwkB,IACd,IAAIq2G,EACJ,MAAM+1B,EAA+C,QAA3B/1B,EAAKm1B,EAAOnzJ,IAAI2nB,UAA0B,IAAPq2G,EAAgBA,EAAKwzB,EAAW7pI,EAAK3oB,WAC7FlC,KAAKw1I,GAAUA,EAAMjwI,cACrBulF,QAAQjgE,GAAkB,OAATA,IAClBosI,GACAA,EAAiB5wJ,SAAS6wJ,IACjBJ,EAAQlzI,IAAIszI,IAAiBH,EAASnzI,IAAIszI,IAC3CF,EAAYn9J,IAAIq9J,EAAY,GAClC,IAGVH,EAAWC,CACf,CAEA,OAAO,CAAK,EAGVG,EAA2BA,CAACC,EAAIC,KAClC,IAAIn2B,EAAIo2B,EACR,MAAMC,EAAU9lG,EAAO,IAAIn3D,OAAOuhF,oBAAoBu7E,MAAQ98J,OAAOuhF,oBAAoBw7E,KACnFG,EAAe,CAAC,EACtB,IAAK,IAAIl2J,KAAOi2J,EACZC,EAAal2J,GAAOmwD,EAAO,IAAgE,QAA1DyvE,EAAY,OAAPk2B,QAAsB,IAAPA,OAAgB,EAASA,EAAG91J,UAAyB,IAAP4/H,EAAgBA,EAAK,MAAoE,QAA1Do2B,EAAY,OAAPD,QAAsB,IAAPA,OAAgB,EAASA,EAAG/1J,UAAyB,IAAPg2J,EAAgBA,EAAK,KAC7N,OAAOE,CAAY,EAEjBC,EAAmCA,CAAC/hJ,EAAIC,KAC1C,IAAIurH,EAAIo2B,EAAIriH,EAAIyiH,EAChB,MAAQ,CACJ9nD,SAAUunD,EAAwF,QAA9Dj2B,EAAY,OAAPxrH,QAAsB,IAAPA,OAAgB,EAASA,EAAGk6F,gBAA6B,IAAPsxB,EAAgBA,EAAK,CAAC,EAAkE,QAA9Do2B,EAAY,OAAP3hJ,QAAsB,IAAPA,OAAgB,EAASA,EAAGi6F,gBAA6B,IAAP0nD,EAAgBA,EAAK,CAAC,GAChO7zI,OAAQ0zI,EAAsF,QAA5DliH,EAAY,OAAPv/B,QAAsB,IAAPA,OAAgB,EAASA,EAAG+N,cAA2B,IAAPwxB,EAAgBA,EAAK,CAAC,EAAgE,QAA5DyiH,EAAY,OAAP/hJ,QAAsB,IAAPA,OAAgB,EAASA,EAAG8N,cAA2B,IAAPi0I,EAAgBA,EAAK,CAAC,GAC7N,EAECC,EAAkBA,CAACjiJ,EAAIC,KACzB,IAAIurH,EAAIo2B,EAAIriH,EAAIyiH,EAAIE,EAAIC,EACxB,MAAQ,CACJC,MAAOrmG,EAAO,IAAgE,QAA3DyvE,EAAY,OAAPxrH,QAAsB,IAAPA,OAAgB,EAASA,EAAGoiJ,aAA0B,IAAP52B,EAAgBA,EAAK,MAAmE,QAA3Do2B,EAAY,OAAP3hJ,QAAsB,IAAPA,OAAgB,EAASA,EAAGmiJ,aAA0B,IAAPR,EAAgBA,EAAK,KAC3MS,OAAQN,EAA8F,QAA5DxiH,EAAY,OAAPv/B,QAAsB,IAAPA,OAAgB,EAASA,EAAGqiJ,cAA2B,IAAP9iH,EAAgBA,EAAK,CAAC,EAAgE,QAA5DyiH,EAAY,OAAP/hJ,QAAsB,IAAPA,OAAgB,EAASA,EAAGoiJ,cAA2B,IAAPL,EAAgBA,EAAK,CAAC,GAClOd,SAAUa,EAAgG,QAA9DG,EAAY,OAAPliJ,QAAsB,IAAPA,OAAgB,EAASA,EAAGkhJ,gBAA6B,IAAPgB,EAAgBA,EAAK,CAAC,EAAkE,QAA9DC,EAAY,OAAPliJ,QAAsB,IAAPA,OAAgB,EAASA,EAAGihJ,gBAA6B,IAAPiB,EAAgBA,EAAK,CAAC,GAC3O,EAECG,EAAa,IAAI3+I,IAmBjB4+I,EAAsB,WACxB,MAAMC,EAnBwB,WAC9B,IAAIh3B,EACJ,MAAMi3B,EAAa,IAAIj2I,IAAM,QAAA/B,EAAAjnB,UAAAC,OAFKi/J,EAAO,IAAA32J,MAAA0e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPg4I,EAAOh4I,GAAAlnB,UAAAknB,GAGzC,MAAM22I,EAAW,IAAI70I,IAAI,IAAIk2I,IAC7B,KAAOrB,EAASv1I,KAAO,GACnB,IAAK,IAAI+0I,KAASQ,EAAU,CACxB,MAGMsB,EADwB,IAFJ3D,EAAW6B,EAAMr0J,WAAWlC,KAAIw1I,GAASA,EAAMjwI,iBAChB,QAAnC27H,EAAKo1B,EAAkBC,UAA2B,IAAPr1B,EAAgBA,EAAK,IAE7Cp2C,QAAOpiF,IAAMyvJ,EAAWv0I,IAAIlb,KACrE,IAAK,IAAI4vJ,KAAYD,EACjBtB,EAASl9J,IAAIy+J,GACjBH,EAAWt+J,IAAI08J,GACfQ,EAASr4I,OAAO63I,EACpB,CAEJ,MAAO,IAAI4B,EACf,CAEoCI,IAA0Br/J,WACrD8G,KAAIu2J,GAASyB,EAAW90J,IAAIqzJ,KAC5BzrE,QAAOktE,KAAgBA,IAC5B,OAAsC,GAAlCE,EAAwB/+J,OACjB,CAAC,EAC0B,GAAlC++J,EAAwB/+J,OACjB++J,EAAwB,GAC5BA,EAAwB33J,QAAO,CAACmV,EAAIC,IAAOgiJ,EAAgBjiJ,EAAIC,IAC1E,EACM6iJ,EAAwB,WAAgB,QAAAl4I,EAAApnB,UAAAC,OAAZi/J,EAAO,IAAA32J,MAAA6e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAP63I,EAAO73I,GAAArnB,UAAAqnB,GACrC,MAAMk4I,EAAkBL,EAAQp4J,KAAIu2J,GAASmC,EAAsBnC,KACnE,OAA+B,IAA3BkC,EAAgBt/J,OACT,CAAC,EACmB,IAA3Bs/J,EAAgBt/J,OACTs/J,EAAgB,GACpBA,EAAgBl4J,QAAO,CAACmV,EAAIC,IAAOgiJ,EAAgBjiJ,EAAIC,IAClE,EACM+iJ,EAAyBnC,IAC3B,IAAIoC,EAAqBX,EAAW90J,IAAIqzJ,GAKxC,OAJKoC,IACDA,EAAqB,CAAC,EACtBX,EAAWpqJ,IAAI2oJ,EAAOoC,IAEnBA,CAAkB,EA6BvBC,EAAYC,GAAe,WAC7B,OAAoB,IAAhB3/J,UAAKC,OA5BU0/J,IAAgBtC,IACnC,MAAMoC,EAAqBD,EAAsBnC,GACjD,IAAIkC,EAAkBE,EAAmBb,MAMzC,OALKW,IACDA,EAAkB,GAClBE,EAAmBb,MAAQW,GAE/BA,EAAgB75J,KAAKi6J,GACdA,EAAUtC,EAAM,EAqBZuC,CAAcD,EAAdC,CAAwB5/J,UAAAC,QAAA,OAAAC,EAAAF,UAAA,IAnBf2/J,IAAe,SAAC7jG,EAAQ1zD,GAC5C,IAAI4/H,EAAIo2B,EAAIriH,EACZ,MAAM8jH,EAAwC,oBAAX/jG,EAAwB,SAAW,WAChEgkG,EAAuC,oBAAhBhkG,EAAO1zD,GAAsB,SAAW,WAC/Di1J,EAAgC,WAAxBwC,EAAmC/jG,EAASA,EAAOzvD,YAC3DozJ,EAAqBD,EAAsBnC,GAC3C0C,EAAqJ,QAA1H/3B,EAA4B,OAAvBy3B,QAAsD,IAAvBA,OAAgC,EAASA,EAAmBI,UAAyC,IAAP73B,EAAgBA,EAAK,CAAC,EACzLy3B,EAAmBI,GAAuBE,EAC1C,IAAIC,EAAwJ,QAAnI5B,EAAiC,OAA5B2B,QAAgE,IAA5BA,OAAqC,EAASA,EAAwBD,UAAmC,IAAP1B,EAAgBA,EAAK,CAAC,EAC1L2B,EAAwBD,GAAiBE,EACzC,IAAIC,EAA2H,QAAvGlkH,EAA2B,OAAtBikH,QAAoD,IAAtBA,OAA+B,EAASA,EAAkB53J,UAAyB,IAAP2zC,EAAgBA,EAAK,GAC5JikH,EAAkB53J,GAAO63J,EAEzBA,EAAiBv6J,KAAKi6J,GACtB,QAAAr4I,EAAAtnB,UAAAC,OAdoDigK,EAAS,IAAA33J,MAAA+e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAT24I,EAAS34I,EAAA,GAAAvnB,UAAAunB,GAe7D,OAAOo4I,EAAU7jG,EAAQ1zD,KAAQ83J,EACrC,EAIWC,CAAeR,EAAfQ,IAA0BngK,UACrC,EAEA,SAASogK,IAAuB,QAAAjhE,EAAAn/F,UAAAC,OAAdogK,EAAY,IAAA93J,MAAA42F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAZihE,EAAYjhE,GAAAp/F,UAAAo/F,GAC1B,IAAI4oC,EAAIo2B,EAAIriH,EACZ,MAAMukH,EAAaD,EAAav5J,KAAIuF,GAAeA,EAAYrD,YAIzD4oH,EAAmBkrC,EAASC,aAClC,GAAyB,OAArBnrC,EAA2B,CAC3B,MAAM2uC,EAAgBD,EACjBx5J,KAAIw1I,GAASA,EAAM1qB,KACnBhgC,QAAOlqE,GAAwB,oBAATA,IACrB84I,EAAuB,WAAmB,QAAA5gE,EAAA5/F,UAAAC,OAANsT,EAAI,IAAAhL,MAAAq3F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJtsF,EAAIssF,GAAA7/F,UAAA6/F,GAC1C,IAAK,IAAIk9D,KAAgBwD,EACrBxD,EAAatnF,MAAMr3E,KAAMmV,EACjC,EACMktJ,EAAa,CAAE,CAAC7uC,GAAmB4uC,GACzCF,EAAW56J,KAAK+6J,EACpB,CACA,SAASC,IAAoB,QAAA5gE,EAAA9/F,UAAAC,OAANsT,EAAI,IAAAhL,MAAAu3F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJxsF,EAAIwsF,GAAA//F,UAAA+/F,GACvB,IAAK,MAAM1zF,KAAeg0J,EAEtBhF,EAAUj9J,KAAM,IAAIiO,KAAekH,IACd,OAArBq+G,GAA+D,oBAA3BxzH,KAAKwzH,IACzCxzH,KAAKwzH,GAAkBn8C,MAAMr3E,KAAMmV,EAC3C,CACAmtJ,EAAW13J,UAA2C,SAA/B8zJ,EAASG,kBAC1BvB,EAAc4E,EAAYI,GAC1B7D,EAAcyD,EAAYI,GAChCt/J,OAAOknG,eAAeo4D,EAAyC,SAA7B5D,EAASE,gBACrCtB,EAAc2E,EAAc,KAAM,CAAC,cACnC3D,EAAS2D,EAAc9Z,SAASv9I,YACtC,IAAI23J,EAAsBD,EAC1B,GAAsC,SAAlC5D,EAASI,qBAAiC,CAC1C,MAAMqC,EAAoD,SAAlCzC,EAASI,qBAC3B6B,KAAuBsB,GACvBf,KAAyBe,GAC/B,IAAK,IAAIV,KAAgH,QAAlG33B,EAAyB,OAApBu3B,QAAgD,IAApBA,OAA6B,EAASA,EAAgBX,aAA0B,IAAP52B,EAAgBA,EAAK,GAAI,CACtJ,MAAMj7G,EAAS4yI,EAAUgB,GACrB5zI,IACA4zI,EAAsB5zI,EAE9B,CACA6zI,EAAiI,QAAnGxC,EAAyB,OAApBmB,QAAgD,IAApBA,OAA6B,EAASA,EAAgBV,cAA2B,IAAPT,EAAgBA,EAAK,CAAC,EAAGuC,GAClKC,EAAmI,QAArG7kH,EAAyB,OAApBwjH,QAAgD,IAApBA,OAA6B,EAASA,EAAgB7B,gBAA6B,IAAP3hH,EAAgBA,EAAK,CAAC,EAAG4kH,EAAoB33J,UAC5L,CAEA,OADAs0J,EAAeqD,EAAqBN,GAC7BM,CACX,CACA,MAAMC,EAA+BA,CAACC,EAAyB52J,KAC3D,MAAM62J,EAAiBD,EAAwBnqD,SACzCqqD,EAAmBF,EAAwBt2I,OACjD,GAAIu2I,EACA,IAAK,IAAI14J,KAAO04J,EACZ,IAAK,IAAInB,KAAamB,EAAe14J,GACjCu3J,EAAU11J,EAAQ7B,GAC9B,GAAI24J,EACA,IAAK,IAAI34J,KAAO24J,EACZ,IAAK,IAAIpB,KAAaoB,EAAiB34J,GACnCu3J,EAAU11J,EAAQ7B,EAAKhH,OAAOsyD,yBAAyBzpD,EAAQ7B,GAAK,EAK9E44J,EAAM,mBAAAC,EAAAjhK,UAAAC,OAAI07J,EAAW,IAAApzJ,MAAA04J,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAXvF,EAAWuF,GAAAlhK,UAAAkhK,GAAA,OAAKC,IAE5B,MAAM5D,EAAa6C,KAASzE,EAAYplJ,OAAO,CAAC4qJ,KAKhD,OAJA//J,OAAOC,eAAek8J,EAAY,OAAQ,CACtCj8J,MAAO6/J,EAAenxJ,KACtB4jD,UAAU,IAEP2pG,CAAU,CACpB,mBC3WD,IAAI6D,EAAYliK,EAAQ,OAEpBmiK,EAAkBniK,EAAQ,OAC1BoiK,EAAoBpiK,EAAQ,OAC5BqiK,EAA0BriK,EAAQ,OAUtCf,EAAOD,QAAU,SAAUkS,EAAKu+C,EAAQ6yG,GACtC,GAAW,MAAPpxJ,EACF,MAAO,GAsBT,OAnBAoxJ,EAAqC,kBAAhBA,EAA2B,IAAMA,EAUtDpxJ,EAAMH,OAAOG,GAEVhF,QAAQk2J,EAAmB,SAE3Bl2J,QAAQm2J,EAAyB,SAEjCn2J,QAAQi2J,GAdX,SAAkBzwF,EAAO5xC,EAAO19B,GAC9B,OAAc,IAAV09B,GAAeA,IAAW19B,EAAMrB,OAAS2wE,EAAM3wE,OAC1C,GAGFuhK,CACT,IAWOJ,EAAUhxJ,EAAKu+C,EACxB,+aCtCA,MAAA1vD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAuiK,EAAAviK,EAAA,OACAwiK,EAAAxiK,EAAA,OAeAhB,EAAAA,eAAA,SACIoB,EACAC,EACAgB,EACAmW,GAG4B,IAF5B1U,EAAOhC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGf,EAAA0iK,QAAQ3lE,WAClB77F,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAMqoB,QAAiB,EAAAsoH,EAAAE,wCAAuCtiK,GAExDmB,GAAc,IAAIxB,EAAAyB,aAAcC,IAClC1B,EAAA26B,cAAckf,cAAc,CACxBI,WAAY35C,EAAMwD,UAClBw2C,iBAAkBv3C,EAAQe,UAC1By2C,MAAOkoH,EAAAhvE,cACPt5C,WACAh5C,eAEJ,EAAAqhK,EAAAI,qCAAoC7/J,EAAQe,UAAWxC,EAASmW,EAAGtW,IAKvE,aAFM,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,EAAOyC,GAAU7B,GAEpE6B,EAAQe,SACnB,+IC/BA,MAAA47D,EAAAz/D,EAAA,OACAgJ,EAAAhJ,EAAA,OACA4iK,EAAA5iK,EAAA,KACA6iK,EAAA7iK,EAAA,OACAs8C,EAAAt8C,EAAA,OAEA2uB,EAAA3uB,EAAA,OAQA6I,EAAA7I,EAAA,MAEM8iK,EAAal+J,OAAO,sEACpBm+J,EAAan+J,OAAO,sEACpB64C,EAAM74C,OAAO,GACbugD,EAAMvgD,OAAO,GACb2xF,EAAaA,CAAC5mF,EAAWS,KAAeT,EAAIS,EAAI+0C,GAAO/0C,EAM7D,SAAS4pF,EAAQ7pF,GACf,MAAMyB,EAAIkxJ,EAEJ19G,EAAMxgD,OAAO,GAAIs0F,EAAMt0F,OAAO,GAAIu0F,EAAOv0F,OAAO,IAAKw0F,EAAOx0F,OAAO,IAEnEy0F,EAAOz0F,OAAO,IAAK00F,EAAO10F,OAAO,IAAK20F,EAAO30F,OAAO,IACpD6iC,EAAMt3B,EAAIA,EAAIA,EAAKyB,EACnBg2B,EAAMH,EAAKA,EAAKt3B,EAAKyB,EACrBy2B,GAAM,EAAAiU,EAAAk9C,MAAK5xD,EAAIwd,EAAKxzC,GAAKg2B,EAAMh2B,EAC/Bk3B,GAAM,EAAAwT,EAAAk9C,MAAKnxD,EAAI+c,EAAKxzC,GAAKg2B,EAAMh2B,EAC/B6nF,GAAO,EAAAn9C,EAAAk9C,MAAK1wD,EAAIqc,EAAKvzC,GAAK61B,EAAM71B,EAChC8nF,GAAO,EAAAp9C,EAAAk9C,MAAKC,EAAKN,EAAMvnF,GAAK6nF,EAAO7nF,EACnC+nF,GAAO,EAAAr9C,EAAAk9C,MAAKE,EAAKN,EAAMxnF,GAAK8nF,EAAO9nF,EACnCgoF,GAAO,EAAAt9C,EAAAk9C,MAAKG,EAAKL,EAAM1nF,GAAK+nF,EAAO/nF,EACnCioF,GAAQ,EAAAv9C,EAAAk9C,MAAKI,EAAKL,EAAM3nF,GAAKgoF,EAAOhoF,EACpCkoF,GAAQ,EAAAx9C,EAAAk9C,MAAKK,EAAMP,EAAM1nF,GAAK+nF,EAAO/nF,EACrCmoF,GAAQ,EAAAz9C,EAAAk9C,MAAKM,EAAM10C,EAAKxzC,GAAKg2B,EAAMh2B,EACnC+2C,GAAM,EAAArM,EAAAk9C,MAAKO,EAAMV,EAAMznF,GAAK8nF,EAAO9nF,EACnCg3C,GAAM,EAAAtM,EAAAk9C,MAAK7wC,EAAIuwC,EAAKtnF,GAAK61B,EAAM71B,EAC/B8nE,GAAO,EAAAp9B,EAAAk9C,MAAK5wC,EAAIzD,EAAKvzC,GAC3B,IAAKoxJ,EAAKv/G,IAAIu/G,EAAK71H,IAAIusC,GAAOvpE,GAAI,MAAM,IAAIpN,MAAM,2BAClD,OAAO22E,CACT,CAEA,MAAMspF,GAAO,EAAA1mH,EAAA0J,OAAM88G,OAAY9hK,OAAWA,EAAW,CAAEyb,KAAMu9E,IAchDh7F,EAAAA,WAA+B,EAAA4jK,EAAAK,aAC1C,CACEtzJ,EAAG/K,OAAO,GACVwL,EAAGxL,OAAO,GACVo3C,GAAIgnH,EACJvzJ,EAAGszJ,EAEH38G,GAAIxhD,OAAO,iFACXuhD,GAAIvhD,OAAO,iFACX8rB,EAAG9rB,OAAO,GACVk3C,MAAM,EACN6J,KAAM,CAEJC,KAAMhhD,OAAO,sEACbihD,YAAcr1C,IACZ,MAAMf,EAAIszJ,EACJv9H,EAAK5gC,OAAO,sCACZ0iC,GAAMmW,EAAM74C,OAAO,sCACnB+gC,EAAK/gC,OAAO,uCACZ6iC,EAAKjC,EACLgxD,EAAY5xF,OAAO,uCAEnB2lD,EAAKgsC,EAAW9uD,EAAKj3B,EAAGf,GACxBi7C,EAAK6rC,GAAYjvD,EAAK92B,EAAGf,GAC/B,IAAI+5C,GAAK,EAAAlN,EAAA/hC,KAAI/J,EAAI+5C,EAAK/kB,EAAKklB,EAAK/kB,EAAIl2B,GAChCi6C,GAAK,EAAApN,EAAA/hC,MAAKgwC,EAAKjjB,EAAKojB,EAAKjjB,EAAIh4B,GACjC,MAAM85C,EAAQC,EAAKgtC,EACb/sC,EAAQC,EAAK8sC,EAGnB,GAFIjtC,IAAOC,EAAK/5C,EAAI+5C,GAChBC,IAAOC,EAAKj6C,EAAIi6C,GAChBF,EAAKgtC,GAAa9sC,EAAK8sC,EACzB,MAAM,IAAIzzF,MAAM,uCAAyCyN,GAE3D,MAAO,CAAE+4C,QAAOC,KAAIC,QAAOC,KAAI,IAIrC+V,EAAAC,QAKF,MAAM3e,EAAMn8C,OAAO,GAEb86F,EAAsD,CAAC,EAC7D,SAAS7/B,EAAW7b,GAClB,IAAIw8C,EAAOd,EAAqB17C,GAChC,QAAahjD,IAATw/F,EAAoB,CACtB,MAAMC,GAAO,EAAAhhC,EAAAC,QAAOlwC,WAAW9rB,KAAKsgD,GAAM1zC,GAAMA,EAAEN,WAAW,MAC7DwwF,GAAO,EAAA7xE,EAAAplB,aAAYk3F,EAAMA,GACzBf,EAAqB17C,GAAOw8C,CAC9B,CAAC,QAAAr3F,EAAArI,UAAAC,OANiCotE,EAAsB,IAAA9kE,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAtB6kE,EAAsB7kE,EAAA,GAAAxI,UAAAwI,GAOxD,OAAO,EAAAm2D,EAAAC,SAAO,EAAA/wC,EAAAplB,aAAYi3F,KAASryB,GACrC,CAGA,MAAM9O,EAAgBviB,GAA6BA,EAAMkF,YAAW,GAAMp1C,MAAM,GAC1EkvF,EAAYrsF,IAAc,EAAAkf,EAAAovB,iBAAgBtuC,EAAG,IAC7CyzJ,EAAQhzJ,IAAc,EAAAosC,EAAA/hC,KAAIrK,EAAG4yJ,GAC7BzmH,EAAQnsC,IAAc,EAAAosC,EAAA/hC,KAAIrK,EAAG6yJ,GAC7BtmH,EAAQz9C,EAAAw/D,UAAUhiB,gBAKxB,SAAS2mH,EAAoB3kE,GAC3B,IAAI4kE,EAAKpkK,EAAAw/D,UAAUjjC,MAAMmhB,uBAAuB8hD,GAC5C/oF,EAAIgnC,EAAMsF,eAAeqhH,GAE7B,MAAO,CAAEv5G,OADMp0C,EAAE0nC,WAAaimH,EAAK/mH,GAAM+mH,GAChB/lH,MAAOgiB,EAAa5pD,GAC/C,CAKA,SAASupD,EAAO9uD,IACd,EAAAye,EAAAgwB,UAAS,IAAKzuC,EAAGutC,EAAKqlH,GACtB,MAAMO,EAAKH,EAAKhzJ,EAAIA,GAEpB,IAAIC,EAAI6pF,EADEkpE,EAAKG,EAAKnzJ,EAAItL,OAAO,KAE3BuL,EAAIg1C,IAAQpE,IAAK5wC,EAAI+yJ,GAAM/yJ,IAC/B,MAAMsF,EAAI,IAAIgnC,EAAMvsC,EAAGC,EAAGstC,GAE1B,OADAhoC,EAAE4oC,iBACK5oC,CACT,CACA,MAAM4qB,EAAM1R,EAAA4uB,gBAIZ,SAAS0hD,IAA+B,QAAAl3E,EAAAjnB,UAAAC,OAAlBsT,EAAkB,IAAAhL,MAAA0e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAlB3T,EAAkB2T,GAAAlnB,UAAAknB,GACtC,OAAOq0B,EAAKhc,EAAIw/B,EAAW,uBAAwBxrD,IACrD,CAKA,SAASivJ,EAAoBpjH,GAC3B,OAAOijH,EAAoBjjH,GAAY7C,KACzC,CAMA,SAASkmH,EACPp2I,EACA+yB,GAC8B,IAA9Bo+C,EAAAx9F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,IAAe,EAAAkI,EAAAQ,aAAY,IAE3B,MAAMgO,GAAI,EAAAmX,EAAA4vB,aAAY,UAAWpxB,IACzBkwB,MAAOsJ,EAAIkD,OAAQp1C,GAAM0uJ,EAAoBjjH,GAC/CvwC,GAAI,EAAAgf,EAAA4vB,aAAY,UAAW+/C,EAAS,IACpC7iF,EAAIqgF,EAASrnF,EAAI4rB,EAAIw/B,EAAW,cAAelwD,KAC/C4G,EAAOspD,EAAW,gBAAiBpkD,EAAGkrC,EAAInvC,GAC1CgsJ,EAAKnnH,EAAKhc,EAAI9pB,IACpB,GAAIitJ,IAAOziH,EAAK,MAAM,IAAIh+C,MAAM,0BAChC,MAAQs6C,MAAOrR,EAAI6d,OAAQr5C,GAAM2yJ,EAAoBK,GAC/C/yJ,EAAIwuF,EAAUjzD,EAAI2a,EAAInvC,GACtBytC,EAAM,IAAIz1B,WAAW,IAI3B,GAHAy1B,EAAIzvC,IAAIw2B,EAAI,GACZiZ,EAAIzvC,IAAIsmF,EAASz/C,EAAK7rC,EAAIC,EAAIgE,IAAK,KAE9ByqF,EAAcj6C,EAAKztC,EAAGmvC,GAAK,MAAM,IAAI5jD,MAAM,oCAChD,OAAOkiD,CACT,CAMA,SAASi6C,EAAc/7F,EAAgBgqB,EAActpB,GACnD,MAAMohD,GAAM,EAAAt2B,EAAA4vB,aAAY,YAAap7C,EAAW,IAC1CqU,GAAI,EAAAmX,EAAA4vB,aAAY,UAAWpxB,GAC3ByxC,GAAM,EAAAjwC,EAAA4vB,aAAY,YAAa16C,EAAW,IAChD,IACE,MAAM+N,EAAIotD,EAAO3+B,EAAIu+B,IACf7uD,EAAIswB,EAAI4kB,EAAIn1B,SAAS,EAAG,KAC9B,KAAK,EAAAnB,EAAA6uB,SAAQztC,EAAG0tC,EAAKqlH,GAAa,OAAO,EACzC,MAAMlzJ,EAAIywB,EAAI4kB,EAAIn1B,SAAS,GAAI,KAC/B,KAAK,EAAAnB,EAAA6uB,SAAQ5tC,EAAG6tC,EAAKslH,GAAa,OAAO,EACzC,MAAMtyJ,EAAIwuF,EAAUnD,EAAS/rF,GAAIsvD,EAAaztD,GAAI4F,GAC5C0nC,GAhFOK,EAgFK3tC,EAhFiBjC,EAgFdC,EAhFyBQ,EAgFtBisC,GAAM5rC,GA/EhCgsC,EAAMvtC,KAAKswC,qBAAqBD,EAAG5vC,EAAGS,IAgFpC,SAAK8uC,IAAMA,EAAE/B,YAAc+B,EAAElC,WAAW9sC,IAAMH,EAEhD,CAAE,MAAOgS,GACP,OAAO,CACT,CArFc0hJ,IAAClkH,EAAsB5vC,EAAWS,CAsFlD,CA2BapR,EAAAA,QAA8C,CACzD8iD,aAAcwhH,EACdlgK,KAAMmgK,EACNx/J,OAAQm7F,EACR3jE,MAAO,CACL4kB,iBAAkBnhD,EAAAw/D,UAAUjjC,MAAM4kB,iBAClC6e,SACAK,eACAthB,gBAAApvB,EAAAovB,gBACAR,gBAAA5uB,EAAA4uB,gBACAsiB,aACAtlD,IAAA+hC,EAAA/hC,MAIJ,MAAMmpJ,EAAyB,MAC7B,EAAAb,EAAAc,YACEX,EACA,CAEE,CACE,qEACA,oEACA,qEACA,sEAGF,CACE,qEACA,qEACA,sEAGF,CACE,qEACA,qEACA,qEACA,sEAGF,CACE,qEACA,qEACA,qEACA,uEAEFp7J,KAAKsC,GAAMA,EAAEtC,KAAKkI,GAAMlL,OAAOkL,QA/BN,GAiCzB8zJ,EAAyB,MAC7B,EAAA/6J,EAAAg7J,qBAAoBb,EAAM,CACxBvzH,EAAG7qC,OAAO,sEACV8qC,EAAG9qC,OAAO,QACVo+C,EAAGggH,EAAKp6J,OAAOhE,OAAO,UAJK,GAMzBk/J,EAAsB,MAC1B,EAAAjB,EAAAkB,cACE/kK,EAAAw/D,UAAUhiB,iBACTiL,IACC,MAAM,EAAEv3C,EAAC,EAAEC,GAAMyzJ,EAAOZ,EAAKp6J,OAAO6+C,EAAQ,KAC5C,OAAOi8G,EAAOxzJ,EAAGC,EAAE,GAErB,CACE6zJ,IAAK,iCACLC,UAAW,iCACXxuJ,EAAGutJ,EAAKtlH,MACRlmC,EAAG,EACHhH,EAAG,IACH0zJ,OAAQ,MACRpgK,KAAM27D,EAAAC,SAdgB,GAmBf1gE,EAAAA,YAAwD8kK,EAAIK,YAG5DnlK,EAAAA,cAA0D8kK,EAAIM,8RCvU3E,MAAMC,EAA6Bz/J,OAAO,GAAK,GAAK,GAC9C0rB,EAAuB1rB,OAAO,IAGpC,SAAS0/J,EAAQ70J,GACf,OAD4B3O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACb,CAAE4vB,EAAGrC,OAAO5e,EAAI40J,GAAa3zJ,EAAG2d,OAAQ5e,GAAK6gB,EAAQ+zI,IAC7D,CAAE3zI,EAAsC,EAAnCrC,OAAQ5e,GAAK6gB,EAAQ+zI,GAAiB3zJ,EAA4B,EAAzB2d,OAAO5e,EAAI40J,GAClE,CAEA,SAAS58J,EAAMitJ,GAAyB,IAAVC,EAAE7zJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC1ByjK,EAAK,IAAI/tJ,YAAYk+I,EAAI3zJ,QACzByjK,EAAK,IAAIhuJ,YAAYk+I,EAAI3zJ,QAC7B,IAAK,IAAImJ,EAAI,EAAGA,EAAIwqJ,EAAI3zJ,OAAQmJ,IAAK,CACnC,MAAM,EAAEwmB,EAAC,EAAEhgB,GAAM4zJ,EAAQ5P,EAAIxqJ,GAAIyqJ,IAChC4P,EAAGr6J,GAAIs6J,EAAGt6J,IAAM,CAACwmB,EAAGhgB,EACvB,CACA,MAAO,CAAC6zJ,EAAIC,EACd,CA2CExlK,EAAAA,QAAAslK,EAAStlK,EAAAA,MAAAyI,EAzCX,MAAMg9J,EAAQA,CAAC/zI,EAAWhgB,IAAe9L,OAAO8rB,IAAM,IAAMJ,EAAQ1rB,OAAO8L,IAAM,GAyC/D1R,EAAAA,MAAAylK,EAvClB,MAAMC,EAAQA,CAACh0I,EAAWi0I,EAAY/0J,IAAc8gB,IAAM9gB,EAwCxD5Q,EAAAA,MAAA0lK,EAvCF,MAAME,EAAQA,CAACl0I,EAAWhgB,EAAWd,IAAe8gB,GAAM,GAAK9gB,EAAOc,IAAMd,EAuCnE5Q,EAAAA,MAAA4lK,EArCT,MAAMC,EAASA,CAACn0I,EAAWhgB,EAAWd,IAAe8gB,IAAM9gB,EAAMc,GAAM,GAAKd,EAsC1E5Q,EAAAA,OAAA6lK,EArCF,MAAMC,EAASA,CAACp0I,EAAWhgB,EAAWd,IAAe8gB,GAAM,GAAK9gB,EAAOc,IAAMd,EAqCnE5Q,EAAAA,OAAA8lK,EAnCV,MAAMC,EAASA,CAACr0I,EAAWhgB,EAAWd,IAAe8gB,GAAM,GAAK9gB,EAAOc,IAAOd,EAAI,GAmChE5Q,EAAAA,OAAA+lK,EAlClB,MAAMC,EAASA,CAACt0I,EAAWhgB,EAAWd,IAAe8gB,IAAO9gB,EAAI,GAAQc,GAAM,GAAKd,EAkCzD5Q,EAAAA,OAAAgmK,EAhC1B,MAAMC,EAAUA,CAACC,EAAYx0J,IAAcA,EAiCzC1R,EAAAA,QAAAimK,EAhCF,MAAME,EAAUA,CAACz0I,EAAWi0I,IAAej0I,EAgChC1xB,EAAAA,QAAAmmK,EA9BX,MAAMC,EAASA,CAAC10I,EAAWhgB,EAAWd,IAAe8gB,GAAK9gB,EAAMc,IAAO,GAAKd,EA+B1E5Q,EAAAA,OAAAomK,EA9BF,MAAMC,EAASA,CAAC30I,EAAWhgB,EAAWd,IAAec,GAAKd,EAAM8gB,IAAO,GAAK9gB,EA8BlE5Q,EAAAA,OAAAqmK,EA5BV,MAAMC,EAASA,CAAC50I,EAAWhgB,EAAWd,IAAec,GAAMd,EAAI,GAAQ8gB,IAAO,GAAK9gB,EA4BjE5Q,EAAAA,OAAAsmK,EA3BlB,MAAMC,EAASA,CAAC70I,EAAWhgB,EAAWd,IAAe8gB,GAAM9gB,EAAI,GAAQc,IAAO,GAAKd,EAInF,SAASnO,EAAI8iK,EAAYC,EAAYgB,EAAYC,GAC/C,MAAM/0J,GAAK8zJ,IAAO,IAAMiB,IAAO,GAC/B,MAAO,CAAE/0I,EAAI6zI,EAAKiB,GAAO90J,EAAI,GAAK,GAAM,GAAM,EAAGA,EAAO,EAAJA,EACtD,CAoB0B1R,EAAAA,OAAAumK,EACxBvmK,EAAAA,IAAAyC,EAnBF,MAAMikK,EAAQA,CAAClB,EAAYiB,EAAYE,KAAgBnB,IAAO,IAAMiB,IAAO,IAAME,IAAO,GAmBjF3mK,EAAAA,MAAA0mK,EAlBP,MAAME,EAAQA,CAACrjG,EAAagiG,EAAYiB,EAAYK,IACjDtB,EAAKiB,EAAKK,GAAOtjG,EAAM,GAAK,GAAM,GAAM,EAiB7BvjE,EAAAA,MAAA4mK,EAhBd,MAAME,EAAQA,CAACtB,EAAYiB,EAAYE,EAAYI,KAChDvB,IAAO,IAAMiB,IAAO,IAAME,IAAO,IAAMI,IAAO,GAe5B/mK,EAAAA,MAAA8mK,EAdrB,MAAME,EAAQA,CAACzjG,EAAagiG,EAAYiB,EAAYK,EAAYI,IAC7D1B,EAAKiB,EAAKK,EAAKI,GAAO1jG,EAAM,GAAK,GAAM,GAAM,EAapBvjE,EAAAA,MAAAgnK,EAZ5B,MAAME,EAAQA,CAAC1B,EAAYiB,EAAYE,EAAYI,EAAYI,KAC5D3B,IAAO,IAAMiB,IAAO,IAAME,IAAO,IAAMI,IAAO,IAAMI,IAAO,GAWpBnnK,EAAAA,MAAAknK,EAV1C,MAAME,EAAQA,CAAC7jG,EAAagiG,EAAYiB,EAAYK,EAAYI,EAAYI,IACzE9B,EAAKiB,EAAKK,EAAKI,EAAKI,GAAO9jG,EAAM,GAAK,GAAM,GAAM,EASlBvjE,EAAAA,MAAAonK,EAGnC,MAAMx0I,EAAM,CACV0yI,UAAS78J,QAAOg9J,QAChBC,QAAOE,QACPC,SAAQC,SAAQC,SAAQC,SACxBC,UAASE,UACTC,SAAQC,SAAQC,SAAQC,SACxB9jK,MAAKikK,QAAOE,QAAOE,QAAOE,QAAOI,QAAOF,SAE1ClnK,EAAAA,QAAe4yB,8BC3Ef1vB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,kCCgEtDnD,EAAOD,QAAUk0B,EACjB,IAAIqnI,EAAiBv6J,EAAAA,OAAAA,EACnBsmK,EAA6B/L,EAAe+L,2BAC5CC,EAAwBhM,EAAegM,sBACvCC,EAAqCjM,EAAeiM,mCACpDC,EAA8BlM,EAAekM,4BAC3CC,EAAS1mK,EAAQ,OAErB,SAAS2mK,EAAerd,EAAIzmJ,GAC1B,IAAIs7G,EAAKj/G,KAAK0nK,gBACdzoD,EAAG0oD,cAAe,EAClB,IAAIvzI,EAAK6qF,EAAG2oD,QACZ,GAAW,OAAPxzI,EACF,OAAOp0B,KAAK83G,KAAK,QAAS,IAAIuvD,GAEhCpoD,EAAG4oD,WAAa,KAChB5oD,EAAG2oD,QAAU,KACD,MAARjkK,GAEF3D,KAAKsH,KAAK3D,GACZywB,EAAGg2H,GACH,IAAIne,EAAKjsI,KAAKwlH,eACdymB,EAAG0vB,SAAU,GACT1vB,EAAG67B,cAAgB77B,EAAGpqI,OAASoqI,EAAG87B,gBACpC/nK,KAAKgoK,MAAM/7B,EAAG87B,cAElB,CACA,SAAS/zI,EAAUpS,GACjB,KAAM5hB,gBAAgBg0B,GAAY,OAAO,IAAIA,EAAUpS,GACvD4lJ,EAAO1wJ,KAAK9W,KAAM4hB,GAClB5hB,KAAK0nK,gBAAkB,CACrBD,eAAgBA,EAAe1hJ,KAAK/lB,MACpCioK,eAAe,EACfN,cAAc,EACdC,QAAS,KACTC,WAAY,KACZK,cAAe,MAIjBloK,KAAKwlH,eAAesiD,cAAe,EAKnC9nK,KAAKwlH,eAAe2iD,MAAO,EACvBvmJ,IAC+B,oBAAtBA,EAAQsqB,YAA0BlsC,KAAKi0B,WAAarS,EAAQsqB,WAC1C,oBAAlBtqB,EAAQwX,QAAsBp5B,KAAK0/B,OAAS9d,EAAQwX,QAIjEp5B,KAAKg4G,GAAG,YAAaowD,EACvB,CACA,SAASA,IACP,IAAIr5B,EAAQ/uI,KACe,oBAAhBA,KAAK0/B,QAA0B1/B,KAAKwlH,eAAep1F,UAK5DgK,EAAKp6B,KAAM,KAAM,MAJjBA,KAAK0/B,QAAO,SAAU0qH,EAAIzmJ,GACxBy2B,EAAK20G,EAAOqb,EAAIzmJ,EAClB,GAIJ,CAiDA,SAASy2B,EAAK4qF,EAAQolC,EAAIzmJ,GACxB,GAAIymJ,EAAI,OAAOplC,EAAOlN,KAAK,QAASsyC,GAQpC,GAPY,MAARzmJ,GAEFqhH,EAAO19G,KAAK3D,GAKVqhH,EAAOM,eAAezjH,OAAQ,MAAM,IAAI0lK,EAC5C,GAAIviD,EAAO0iD,gBAAgBC,aAAc,MAAM,IAAIL,EACnD,OAAOtiD,EAAO19G,KAAK,KACrB,CArHAxG,EAAQ,MAARA,CAAoBkzB,EAAWwzI,GAyD/BxzI,EAAUppB,UAAUtD,KAAO,SAAU4sB,EAAOC,GAE1C,OADAn0B,KAAK0nK,gBAAgBO,eAAgB,EAC9BT,EAAO58J,UAAUtD,KAAKwP,KAAK9W,KAAMk0B,EAAOC,EACjD,EAYAH,EAAUppB,UAAUqpB,WAAa,SAAUC,EAAOC,EAAUC,GAC1DA,EAAG,IAAIgzI,EAA2B,gBACpC,EACApzI,EAAUppB,UAAUy9J,OAAS,SAAUn0I,EAAOC,EAAUC,GACtD,IAAI6qF,EAAKj/G,KAAK0nK,gBAId,GAHAzoD,EAAG2oD,QAAUxzI,EACb6qF,EAAG4oD,WAAa3zI,EAChB+qF,EAAGipD,cAAgB/zI,GACd8qF,EAAG0oD,aAAc,CACpB,IAAI17B,EAAKjsI,KAAKwlH,gBACVvG,EAAGgpD,eAAiBh8B,EAAG67B,cAAgB77B,EAAGpqI,OAASoqI,EAAG87B,gBAAe/nK,KAAKgoK,MAAM/7B,EAAG87B,cACzF,CACF,EAKA/zI,EAAUppB,UAAUo9J,MAAQ,SAAUz3J,GACpC,IAAI0uG,EAAKj/G,KAAK0nK,gBACQ,OAAlBzoD,EAAG4oD,YAAwB5oD,EAAG0oD,aAMhC1oD,EAAGgpD,eAAgB,GALnBhpD,EAAG0oD,cAAe,EAClB3nK,KAAKi0B,WAAWgrF,EAAG4oD,WAAY5oD,EAAGipD,cAAejpD,EAAGwoD,gBAMxD,EACAzzI,EAAUppB,UAAU09J,SAAW,SAAU1+I,EAAKwK,GAC5CozI,EAAO58J,UAAU09J,SAASxxJ,KAAK9W,KAAM4pB,GAAK,SAAU2+I,GAClDn0I,EAAGm0I,EACL,GACF,8BC3KAzoK,EAAQ,OAAW,EAmBnBA,EAAQ,EAlBO,CACb,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,MAEX,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,oEAEP,SAAY,kCCpBhBkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0oK,kBAAe,EAavB1oK,EAAQ0oK,aAZR,MACIv6J,WAAAA,CAAYy7F,EAAQ9lG,GAChB5D,KAAK0pG,OAASA,EACd1pG,KAAK4D,QAAUA,CACnB,CACAg/C,YAAAA,GACI,OAAO5iD,KAAK0pG,OAAO/kG,SACvB,CACAwyC,UAAAA,GACI,OAAOn3C,KAAK0pG,OAAO/kG,UAAUF,UACjC,+BCZJzB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,gCCKtDpD,EAAQwkB,QAAU,SAAkBmoC,GAClC,OAAQryC,MAAMqyC,IAAYA,GAAW,GAAKA,GAAW,EACvD,gCCLA,MAAMg8G,EAAe3nK,EAAQ,OACvBu7B,EAAev7B,EAAQ,OACvB02E,EAAe12E,EAAQ,OACvBL,EAAeK,EAAQ,OACvBqpH,EAAerpH,EAAQ,KAEvB2D,EAAWzB,OAAO4H,UAAUnG,UAK5B,WACJ0qE,EAAU,aAAEE,EAAY,aAAEC,EAAY,SAAE76C,EAAQ,KAChDG,EAAI,aAAEC,EAAY,sBAClB86C,EAAqB,mBACrBK,EAAkB,WAClB76C,GACEr0B,EAAQ,OA0FZ,SAAS24E,EAAQ73D,GACf5hB,KAAK4hB,QAAUya,EAAMquD,OAAO,CAC1B3d,MAAO4C,EACPxjD,OAAQgJ,EACRwjD,UAAW,MACXpgD,WAAY,GACZy9C,SAAU,EACVzI,SAAUyC,GACTpuD,GAAW,CAAC,GAEf,IAAIg3D,EAAM54E,KAAK4hB,QAEXg3D,EAAIC,KAAQD,EAAIrgD,WAAa,EAC/BqgD,EAAIrgD,YAAcqgD,EAAIrgD,WAGfqgD,EAAIE,MAASF,EAAIrgD,WAAa,GAAOqgD,EAAIrgD,WAAa,KAC7DqgD,EAAIrgD,YAAc,IAGpBv4B,KAAK4pB,IAAS,EACd5pB,KAAKS,IAAS,GACdT,KAAK+4E,OAAS,EACd/4E,KAAKm3E,OAAS,GAEdn3E,KAAK+1B,KAAO,IAAIo0F,EAChBnqH,KAAK+1B,KAAKx1B,UAAY,EAEtB,IAAI2tB,EAASu6I,EAAa1yF,aACxB/1E,KAAK+1B,KACL6iD,EAAI7L,MACJ6L,EAAIzsD,OACJysD,EAAIrgD,WACJqgD,EAAI5C,SACJ4C,EAAIrL,UAGN,GAAIr/C,IAAW0G,EACb,MAAM,IAAI/wB,MAAMpD,EAAIytB,IAOtB,GAJI0qD,EAAI1mD,QACNu2I,EAAatyF,iBAAiBn2E,KAAK+1B,KAAM6iD,EAAI1mD,QAG3C0mD,EAAI79C,WAAY,CAClB,IAAIi+C,EAaJ,GATEA,EAF4B,kBAAnBJ,EAAI79C,WAENy8C,EAAQ6yC,WAAWzxC,EAAI79C,YACa,yBAAlCt2B,EAASqS,KAAK8hE,EAAI79C,YACpB,IAAIzK,WAAWsoD,EAAI79C,YAEnB69C,EAAI79C,WAGb7M,EAASu6I,EAAa5xF,qBAAqB72E,KAAK+1B,KAAMijD,GAElD9qD,IAAW0G,EACb,MAAM,IAAI/wB,MAAMpD,EAAIytB,IAGtBluB,KAAKi5E,WAAY,CACnB,CACF,CA8JA,SAAS7C,EAAQn2E,EAAO2hB,GACtB,MAAMu3D,EAAW,IAAIM,EAAQ73D,GAK7B,GAHAu3D,EAAS7xE,KAAKrH,GAAO,GAGjBk5E,EAASvvD,IAAO,MAAMuvD,EAAS14E,KAAOA,EAAI04E,EAASvvD,KAEvD,OAAOuvD,EAASxqD,MAClB,CA/IA8qD,EAAQ7uE,UAAUtD,KAAO,SAAU3D,EAAMy1E,GACvC,MAAMrjD,EAAO/1B,KAAK+1B,KACZ4iD,EAAY34E,KAAK4hB,QAAQ+2D,UAC/B,IAAIzqD,EAAQmrD,EAEZ,GAAIr5E,KAAK+4E,MAAS,OAAO,EAkBzB,IAhBiCM,EAA7BD,MAAiBA,EAA0BA,GACb,IAAfA,EAAsB3kD,EAAW06C,EAGhC,kBAATxrE,EAEToyB,EAAK91B,MAAQu3E,EAAQ6yC,WAAW1mH,GACC,yBAAxBc,EAASqS,KAAKnT,GACvBoyB,EAAK91B,MAAQ,IAAIqwB,WAAW3sB,GAE5BoyB,EAAK91B,MAAQ0D,EAGfoyB,EAAK71B,QAAU,EACf61B,EAAK51B,SAAW41B,EAAK91B,MAAM4B,SAUzB,GAPuB,IAAnBk0B,EAAKx1B,YACPw1B,EAAK11B,OAAS,IAAIiwB,WAAWqoD,GAC7B5iD,EAAKz1B,SAAW,EAChBy1B,EAAKx1B,UAAYo4E,IAIdU,IAAgBhK,GAAgBgK,IAAgB/J,IAAiBv5C,EAAKx1B,WAAa,EACtFP,KAAKs5E,OAAOvjD,EAAK11B,OAAOuwB,SAAS,EAAGmF,EAAKz1B,WACzCy1B,EAAKx1B,UAAY,MAFnB,CASA,GAHA2tB,EAASu6I,EAAaryF,QAAQrgD,EAAMsjD,GAGhCnrD,IAAW2G,EAOb,OANIkB,EAAKz1B,SAAW,GAClBN,KAAKs5E,OAAOvjD,EAAK11B,OAAOuwB,SAAS,EAAGmF,EAAKz1B,WAE3C4tB,EAASu6I,EAAa7xF,WAAW52E,KAAK+1B,MACtC/1B,KAAKu5E,MAAMrrD,GACXluB,KAAK+4E,OAAQ,EACN7qD,IAAW0G,EAIpB,GAAuB,IAAnBmB,EAAKx1B,WAMT,GAAI84E,EAAc,GAAKtjD,EAAKz1B,SAAW,EACrCN,KAAKs5E,OAAOvjD,EAAK11B,OAAOuwB,SAAS,EAAGmF,EAAKz1B,WACzCy1B,EAAKx1B,UAAY,OAInB,GAAsB,IAAlBw1B,EAAK51B,SAAgB,WAXvBH,KAAKs5E,OAAOvjD,EAAK11B,OAjBnB,CA+BF,OAAO,CACT,EAUAo5E,EAAQ7uE,UAAU0uE,OAAS,SAAUplD,GACnCl0B,KAAKm3E,OAAO7vE,KAAK4sB,EACnB,EAYAulD,EAAQ7uE,UAAU2uE,MAAQ,SAAUrrD,GAE9BA,IAAW0G,IACb50B,KAAK2uB,OAAS0N,EAAMiuF,cAActqH,KAAKm3E,SAEzCn3E,KAAKm3E,OAAS,GACdn3E,KAAK4pB,IAAMsE,EACXluB,KAAKS,IAAMT,KAAK+1B,KAAKt1B,GACvB,EA6EAV,EAAOD,QAAQ25E,QAAUA,EACzB15E,EAAOD,QAAQs2E,QAAUA,EACzBr2E,EAAOD,QAAQ45E,WAxBf,SAAoBz5E,EAAO2hB,GAGzB,OAFAA,EAAUA,GAAW,CAAC,GACdi3D,KAAM,EACPzC,EAAQn2E,EAAO2hB,EACxB,EAqBA7hB,EAAOD,QAAQg5E,KAVf,SAAc74E,EAAO2hB,GAGnB,OAFAA,EAAUA,GAAW,CAAC,GACdk3D,MAAO,EACR1C,EAAQn2E,EAAO2hB,EACxB,EAOA7hB,EAAOD,QAAQ65E,UAAY,EAA3B55E,mCCzXAD,EAAQi/B,WAuCR,SAAqB2pI,GACnB,IAAIhxI,EAAOixI,EAAQD,GACfE,EAAWlxI,EAAK,GAChBmxI,EAAkBnxI,EAAK,GAC3B,OAAuC,GAA9BkxI,EAAWC,GAAuB,EAAKA,CAClD,EA3CA/oK,EAAQmjJ,YAiDR,SAAsBylB,GACpB,IAAI70H,EAcA7oC,EAbA0sB,EAAOixI,EAAQD,GACfE,EAAWlxI,EAAK,GAChBmxI,EAAkBnxI,EAAK,GAEvB1f,EAAM,IAAI8wJ,EAVhB,SAAsBJ,EAAKE,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,CAClD,CAQoBE,CAAYL,EAAKE,EAAUC,IAEzCG,EAAU,EAGV72J,EAAM02J,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAK59J,EAAI,EAAGA,EAAImH,EAAKnH,GAAK,EACxB6oC,EACGo1H,EAAUP,EAAI53J,WAAW9F,KAAO,GAChCi+J,EAAUP,EAAI53J,WAAW9F,EAAI,KAAO,GACpCi+J,EAAUP,EAAI53J,WAAW9F,EAAI,KAAO,EACrCi+J,EAAUP,EAAI53J,WAAW9F,EAAI,IAC/BgN,EAAIgxJ,KAAcn1H,GAAO,GAAM,IAC/B77B,EAAIgxJ,KAAcn1H,GAAO,EAAK,IAC9B77B,EAAIgxJ,KAAmB,IAANn1H,EAGK,IAApBg1H,IACFh1H,EACGo1H,EAAUP,EAAI53J,WAAW9F,KAAO,EAChCi+J,EAAUP,EAAI53J,WAAW9F,EAAI,KAAO,EACvCgN,EAAIgxJ,KAAmB,IAANn1H,GAGK,IAApBg1H,IACFh1H,EACGo1H,EAAUP,EAAI53J,WAAW9F,KAAO,GAChCi+J,EAAUP,EAAI53J,WAAW9F,EAAI,KAAO,EACpCi+J,EAAUP,EAAI53J,WAAW9F,EAAI,KAAO,EACvCgN,EAAIgxJ,KAAcn1H,GAAO,EAAK,IAC9B77B,EAAIgxJ,KAAmB,IAANn1H,GAGnB,OAAO77B,CACT,EA5FAlY,EAAQw9I,cAkHR,SAAwB4rB,GAQtB,IAPA,IAAIr1H,EACA1hC,EAAM+2J,EAAMrnK,OACZsnK,EAAah3J,EAAM,EACnBxE,EAAQ,GACRy7J,EAAiB,MAGZp+J,EAAI,EAAGq+J,EAAOl3J,EAAMg3J,EAAYn+J,EAAIq+J,EAAMr+J,GAAKo+J,EACtDz7J,EAAMrG,KAAKgiK,EAAYJ,EAAOl+J,EAAIA,EAAIo+J,EAAkBC,EAAOA,EAAQr+J,EAAIo+J,IAI1D,IAAfD,GACFt1H,EAAMq1H,EAAM/2J,EAAM,GAClBxE,EAAMrG,KACJiiK,EAAO11H,GAAO,GACd01H,EAAQ11H,GAAO,EAAK,IACpB,OAEsB,IAAfs1H,IACTt1H,GAAOq1H,EAAM/2J,EAAM,IAAM,GAAK+2J,EAAM/2J,EAAM,GAC1CxE,EAAMrG,KACJiiK,EAAO11H,GAAO,IACd01H,EAAQ11H,GAAO,EAAK,IACpB01H,EAAQ11H,GAAO,EAAK,IACpB,MAIJ,OAAOlmC,EAAMuvD,KAAK,GACpB,EA1IA,IALA,IAAIqsG,EAAS,GACTN,EAAY,GACZH,EAA4B,qBAAfx4I,WAA6BA,WAAanmB,MAEvDukD,EAAO,mEACF1jD,EAAI,EAAsBA,EAAb0jD,KAAwB1jD,EAC5Cu+J,EAAOv+J,GAAK0jD,EAAK1jD,GACjBi+J,EAAUv6G,EAAK59C,WAAW9F,IAAMA,EAQlC,SAAS29J,EAASD,GAChB,IAAIv2J,EAAMu2J,EAAI7mK,OAEd,GAAIsQ,EAAM,EAAI,EACZ,MAAM,IAAItO,MAAM,kDAKlB,IAAI+kK,EAAWF,EAAIn0J,QAAQ,KAO3B,OANkB,IAAdq0J,IAAiBA,EAAWz2J,GAMzB,CAACy2J,EAJcA,IAAaz2J,EAC/B,EACA,EAAKy2J,EAAW,EAGtB,CAmEA,SAASU,EAAaJ,EAAOh6J,EAAOse,GAGlC,IAFA,IAAIqmB,EARoB1S,EASpB9gC,EAAS,GACJ2K,EAAIkE,EAAOlE,EAAIwiB,EAAKxiB,GAAK,EAChC6oC,GACIq1H,EAAMl+J,IAAM,GAAM,WAClBk+J,EAAMl+J,EAAI,IAAM,EAAK,QACP,IAAfk+J,EAAMl+J,EAAI,IACb3K,EAAOiH,KAdFiiK,GADiBpoI,EAeM0S,IAdT,GAAK,IACxB01H,EAAOpoI,GAAO,GAAK,IACnBooI,EAAOpoI,GAAO,EAAI,IAClBooI,EAAa,GAANpoI,IAaT,OAAO9gC,EAAO68D,KAAK,GACrB,CAlGA+rG,EAAU,IAAIn4J,WAAW,IAAM,GAC/Bm4J,EAAU,IAAIn4J,WAAW,IAAM,4gBCnB/BtB,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,MAAAhB,+FCwBM,SAAU4vB,EAAIjf,EAAWS,EAAWE,GACxC,OAAQX,EAAIS,GAAOT,EAAIW,CACzB,CAGM,SAAUue,EAAIlf,EAAWS,EAAWE,GACxC,OAAQX,EAAIS,EAAMT,EAAIW,EAAMF,EAAIE,CAClC,CAMM,MAAgBwe,UAAoCC,EAAAA,GAcxD5hB,WAAAA,CACW6hB,EACFC,EACEC,EACAC,GAET7pB,QALS,KAAA0pB,SAAAA,EACF,KAAAC,UAAAA,EACE,KAAAC,UAAAA,EACA,KAAAC,KAAAA,EATD,KAAAC,UAAW,EACX,KAAAruB,OAAS,EACT,KAAAsuB,IAAM,EACN,KAAAC,WAAY,EASpBpwB,KAAKqwB,OAAS,IAAIC,WAAWR,GAC7B9vB,KAAKuwB,MAAOC,EAAAA,EAAAA,IAAWxwB,KAAKqwB,OAC9B,CACAtsB,MAAAA,CAAOJ,IACL6lK,EAAAA,EAAAA,IAAQxpK,MACR,MAAM,KAAEuwB,EAAI,OAAEF,EAAM,SAAEP,GAAa9vB,KAE7BmS,GADNxO,GAAO+sB,EAAAA,EAAAA,IAAQ/sB,IACE9B,OACjB,IAAK,IAAIsuB,EAAM,EAAGA,EAAMhe,GAAO,CAC7B,MAAMwe,EAAOvnB,KAAKsI,IAAIoe,EAAW9vB,KAAKmwB,IAAKhe,EAAMge,GAEjD,GAAIQ,IAASb,EAKbO,EAAO/Z,IAAI3S,EAAKitB,SAAST,EAAKA,EAAMQ,GAAO3wB,KAAKmwB,KAChDnwB,KAAKmwB,KAAOQ,EACZR,GAAOQ,EACH3wB,KAAKmwB,MAAQL,IACf9vB,KAAK6wB,QAAQN,EAAM,GACnBvwB,KAAKmwB,IAAM,OAVb,CACE,MAAMW,GAAWN,EAAAA,EAAAA,IAAW7sB,GAC5B,KAAOmsB,GAAY3d,EAAMge,EAAKA,GAAOL,EAAU9vB,KAAK6wB,QAAQC,EAAUX,EAExE,CAQF,CAGA,OAFAnwB,KAAK6B,QAAU8B,EAAK9B,OACpB7B,KAAK+wB,aACE/wB,IACT,CACAgxB,UAAAA,CAAWjqB,IACTyiK,EAAAA,EAAAA,IAAQxpK,OACRypK,EAAAA,EAAAA,IAAQ1iK,EAAK/G,MACbA,KAAKkwB,UAAW,EAIhB,MAAM,OAAEG,EAAM,KAAEE,EAAI,SAAET,EAAQ,KAAEG,GAASjwB,KACzC,IAAI,IAAEmwB,GAAQnwB,KAEdqwB,EAAOF,KAAS,IAChBnwB,KAAKqwB,OAAOO,SAAST,GAAKc,KAAK,GAG3BjxB,KAAKgwB,UAAYF,EAAWK,IAC9BnwB,KAAK6wB,QAAQN,EAAM,GACnBJ,EAAM,GAGR,IAAK,IAAInlB,EAAImlB,EAAKnlB,EAAI8kB,EAAU9kB,IAAKqlB,EAAOrlB,GAAK,GAnG/C,SACJulB,EACAW,EACAhuB,EACA+sB,GAEA,GAAiC,oBAAtBM,EAAKY,aAA6B,OAAOZ,EAAKY,aAAaD,EAAYhuB,EAAO+sB,GACzF,MAAMmB,EAAO1rB,OAAO,IACd2rB,EAAW3rB,OAAO,YAClB4rB,EAAKnC,OAAQjsB,GAASkuB,EAAQC,GAC9BE,EAAKpC,OAAOjsB,EAAQmuB,GACpBG,EAAIvB,EAAO,EAAI,EACfze,EAAIye,EAAO,EAAI,EACrBM,EAAKkB,UAAUP,EAAaM,EAAGF,EAAIrB,GACnCM,EAAKkB,UAAUP,EAAa1f,EAAG+f,EAAItB,EACrC,CAwFIkB,CAAaZ,EAAMT,EAAW,EAAGpqB,OAAqB,EAAd1F,KAAK6B,QAAaouB,GAC1DjwB,KAAK6wB,QAAQN,EAAM,GACnB,MAAMmB,GAAQlB,EAAAA,EAAAA,IAAWzpB,GACnBoL,EAAMnS,KAAK+vB,UAEjB,GAAI5d,EAAM,EAAG,MAAM,IAAItO,MAAM,+CAC7B,MAAM8tB,EAASxf,EAAM,EACfzR,EAAQV,KAAK4L,MACnB,GAAI+lB,EAASjxB,EAAMmB,OAAQ,MAAM,IAAIgC,MAAM,sCAC3C,IAAK,IAAImH,EAAI,EAAGA,EAAI2mB,EAAQ3mB,IAAK0mB,EAAMD,UAAU,EAAIzmB,EAAGtK,EAAMsK,GAAIilB,EACpE,CACAjsB,MAAAA,GACE,MAAM,OAAEqsB,EAAM,UAAEN,GAAc/vB,KAC9BA,KAAKgxB,WAAWX,GAChB,MAAMuB,EAAMvB,EAAO3iB,MAAM,EAAGqiB,GAE5B,OADA/vB,KAAK6xB,UACED,CACT,CACAE,UAAAA,CAAWC,GACTA,IAAAA,EAAO,IAAK/xB,KAAKiO,aACjB8jB,EAAGzb,OAAOtW,KAAK4L,OACf,MAAM,SAAEkkB,EAAQ,OAAEO,EAAM,OAAExuB,EAAM,SAAEquB,EAAQ,UAAEE,EAAS,IAAED,GAAQnwB,KAM/D,OALA+xB,EAAGlwB,OAASA,EACZkwB,EAAG5B,IAAMA,EACT4B,EAAG7B,SAAWA,EACd6B,EAAG3B,UAAYA,EACXvuB,EAASiuB,GAAUiC,EAAG1B,OAAO/Z,IAAI+Z,GAC9B0B,CACT,saC1IF,MAAAlxB,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACA4oK,EAAA5oK,EAAA,MACAC,EAAAD,EAAA,KAiBAhB,EAAAA,KAAA,SACIoB,EACAC,EACAqxB,EACAnxB,EACAE,EACAC,GAG4B,IAF5BG,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOzwB,EAAgBC,IAAW,EAAApB,EAAAqB,YAAWb,EAAOI,GAE9CU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAmnK,EAAAC,uBAAsBn3I,EAASnxB,EAAMa,EAAgBV,EAAQG,EAAcK,IAG/E,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,sBCvCA,MAAMioI,EAAQlpI,EAAQ,OAChBwpI,EAASxpI,EAAQ,OACjB+qH,EAAU/qH,EAAQ,OAClByJ,EAAOzJ,EAAQ,OACf8oK,EAAe9oK,EAAQ,OAIvB+oK,EAAU7/B,EAAM+jB,YADT,MAab,SAAS+b,EAAsBr/J,EAAMgiD,GAEnC,OAAOliD,EAAK0gI,sBAAsBxgI,EAAMgiD,GAAW,CACrD,CAEA,SAASs9G,EAA2B/+B,EAAUv+E,GAC5C,IAAIuwE,EAAY,EAOhB,OALAgO,EAASj8H,SAAQ,SAAUpL,GACzB,MAAMqmK,EAAeF,EAAqBnmK,EAAK8G,KAAMgiD,GACrDuwE,GAAagtC,EAAermK,EAAKgH,eACnC,IAEOqyH,CACT,CAqBAl9H,EAAQ0E,KAAO,SAAetB,EAAO+mK,GACnC,OAAIL,EAAatlJ,QAAQphB,GAChBiI,SAASjI,EAAO,IAGlB+mK,CACT,EAWAnqK,EAAQoqK,YAAc,SAAsBz9G,EAASw/D,EAAsBxhH,GACzE,IAAKm/J,EAAatlJ,QAAQmoC,GACxB,MAAM,IAAI5oD,MAAM,2BAIE,qBAAT4G,IAAsBA,EAAOF,EAAKivG,MAG7C,MAMM0xB,EAA+D,GAN9ClB,EAAMmB,wBAAwB1+E,GAG5B69E,EAAOpe,uBAAuBz/D,EAASw/D,IAKhE,GAAIxhH,IAASF,EAAK4/J,MAAO,OAAOj/B,EAEhC,MAAMk/B,EAAal/B,EAAyB4+B,EAAqBr/J,EAAMgiD,GAGvE,OAAQhiD,GACN,KAAKF,EAAKG,QACR,OAAOtB,KAAKC,MAAO+gK,EAAa,GAAM,GAExC,KAAK7/J,EAAK0uD,aACR,OAAO7vD,KAAKC,MAAO+gK,EAAa,GAAM,GAExC,KAAK7/J,EAAK+uG,MACR,OAAOlwG,KAAKC,MAAM+gK,EAAa,IAEjC,KAAK7/J,EAAKivG,KACV,QACE,OAAOpwG,KAAKC,MAAM+gK,EAAa,GAErC,EAUAtqK,EAAQ6sI,sBAAwB,SAAgChpI,EAAMsoH,GACpE,IAAIo+C,EAEJ,MAAMC,EAAMz+C,EAAQrnH,KAAKynH,EAAsBJ,EAAQlgC,GAEvD,GAAIxhF,MAAMi3B,QAAQz9B,GAAO,CACvB,GAAIA,EAAK9B,OAAS,EAChB,OAzFN,SAAqCmpI,EAAU/e,GAC7C,IAAK,IAAIs+C,EAAiB,EAAGA,GAAkB,GAAIA,IAEjD,GADeR,EAA0B/+B,EAAUu/B,IACrCzqK,EAAQoqK,YAAYK,EAAgBt+C,EAAsB1hH,EAAK4/J,OAC3E,OAAOI,CAKb,CAgFaC,CAA2B7mK,EAAM2mK,GAG1C,GAAoB,IAAhB3mK,EAAK9B,OACP,OAAO,EAGTwoK,EAAM1mK,EAAK,EACb,MACE0mK,EAAM1mK,EAGR,OA/HF,SAAsC8G,EAAM5I,EAAQoqH,GAClD,IAAK,IAAIs+C,EAAiB,EAAGA,GAAkB,GAAIA,IACjD,GAAI1oK,GAAU/B,EAAQoqK,YAAYK,EAAgBt+C,EAAsBxhH,GACtE,OAAO8/J,CAKb,CAuHSE,CAA4BJ,EAAI5/J,KAAM4/J,EAAIx/J,YAAay/J,EAChE,EAYAxqK,EAAQgrI,eAAiB,SAAyBr+E,GAChD,IAAKm9G,EAAatlJ,QAAQmoC,IAAYA,EAAU,EAC9C,MAAM,IAAI5oD,MAAM,2BAGlB,IAAI0R,EAAIk3C,GAAW,GAEnB,KAAOu9E,EAAM+jB,YAAYx4I,GAAKs0J,GAAW,GACvCt0J,GAvJS,MAuJKy0H,EAAM+jB,YAAYx4I,GAAKs0J,EAGvC,OAAQp9G,GAAW,GAAMl3C,CAC3B,8aCjKA,MAAA1U,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACA4pK,EAAA5pK,EAAA,OACAC,EAAAD,EAAA,KAgBAhB,EAAAA,cAAA,SACIoB,EACAC,EACAqxB,EACAnxB,EACAqB,GAG4B,IAF5Bf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOhwB,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAmoK,EAAAC,gCAA+Bn4I,EAASnxB,EAAMsB,EAAoBhB,EAAcK,IAGpF,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,iCCjCAiB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQq4I,WAAQ,EAsEhBr4I,EAAQq4I,MAvDR,MACIlqI,WAAAA,GACIjO,KAAKi0I,aAAc,CACvB,CAIA4B,UAAAA,CAAW+0B,EAASC,EAAOzgK,EAAM0gK,GAC7B,MAAM,IAAIjnK,MAAM,gCACpB,CAIAkzI,WAAAA,CAAY6zB,EAASC,GACjB,MAAM,IAAIhnK,MAAM,iCACpB,CAIA+xI,SAAAA,CAAUm1B,EAASD,GACf,MAAM,IAAIjnK,MAAM,+BACpB,CAIA4xI,YAAAA,CAAaC,EAAYs1B,EAAYF,GAGjC,MAAM,IAAIjnK,MAAM,kCACpB,CAIAizI,YAAAA,CAAa8zB,EAASC,EAAOzgK,EAAM0gK,GAC/B,MAAM,IAAIjnK,MAAM,kCACpB,CAIAonK,aAAAA,CAAcL,EAASC,EAAOC,GAC1B,MAAM,IAAIjnK,MAAM,mCACpB,CAIAq0I,gBAAAA,CAAiB4yB,GACb,MAAM,IAAIjnK,MAAM,sCACpB,CAIA0zI,aAAAA,CAAcuzB,GACV,MAAM,IAAIjnK,MAAM,wEACpB,qiBCxEJ,MAAAivB,EAAAhyB,EAAA,OAEAiyB,EAAAjyB,EAAA,OAGahB,EAAAA,gBAAkB,UAC7B,MAAMkzB,QAAiB,EAAAD,EAAAE,oBAAmBrR,EAAQsR,cAE5C,OAAE/G,GAAWvK,EAAQwQ,QAC3B,IAAKjG,EACH,MAAM,IAAItoB,MAAM,+BAGlB,MAAM4vB,GAAU,EAAAX,EAAAY,sBAAqB9R,EAAQwQ,SAC7C,IACE,MAAMuB,QAAiBX,EAASlc,KAAK2c,GACrC7R,EAAQiS,WAAWF,GACnB,MAAO9Q,GACP+F,QAAQ/F,MAAM,sCAAuCA,GACrDjB,EAAQkS,eAIZtkB,EAAA1O,EAAA,OAAAhB,iCCtBAkD,OAAOC,eAAenD,EAAS,aAAc,CAC3CoD,OAAO,IAETpD,EAAAA,QAAkBA,EAAQorK,aAAU,EAEpC,IAAIC,EAQJ,SAAiCv8J,GAAO,GAAIA,GAAOA,EAAI2mD,WAAc,OAAO3mD,EAAc,IAAIw8J,EAAS,CAAC,EAAG,GAAW,MAAPx8J,EAAe,IAAK,IAAI5E,KAAO4E,EAAO,GAAI5L,OAAO4H,UAAU4L,eAAeM,KAAKlI,EAAK5E,GAAM,CAAE,IAAIqrD,EAAOryD,OAAOC,gBAAkBD,OAAOsyD,yBAA2BtyD,OAAOsyD,yBAAyB1mD,EAAK5E,GAAO,CAAC,EAAOqrD,EAAKzpD,KAAOypD,EAAK/+C,IAAOtT,OAAOC,eAAemoK,EAAQphK,EAAKqrD,GAAgB+1G,EAAOphK,GAAO4E,EAAI5E,EAAQ,CAA4B,OAAtBohK,EAAOrmF,QAAUn2E,EAAYw8J,CAAU,CAR1cC,CAAwBvqK,EAAQ,QAEzCwqK,EAAaC,EAAuBzqK,EAAQ,QAE5C0qK,EAAaD,EAAuBzqK,EAAQ,OAEhD,SAASyqK,EAAuB38J,GAAO,OAAOA,GAAOA,EAAI2mD,WAAa3mD,EAAM,CAAEm2E,QAASn2E,EAAO,CAI9F,SAAS68J,IAA2Q,OAA9PA,EAAWzoK,OAAO0nF,QAAU,SAAU7+E,GAAU,IAAK,IAAIb,EAAI,EAAGA,EAAIpJ,UAAUC,OAAQmJ,IAAK,CAAE,IAAI5J,EAASQ,UAAUoJ,GAAI,IAAK,IAAIhB,KAAO5I,EAAc4B,OAAO4H,UAAU4L,eAAeM,KAAK1V,EAAQ4I,KAAQ6B,EAAO7B,GAAO5I,EAAO4I,GAAU,CAAE,OAAO6B,CAAQ,EAAU4/J,EAASp0F,MAAMr3E,KAAM4B,UAAY,CAI5T,SAAS8pK,EAAgB98J,EAAK5E,EAAK9G,GAAiK,OAApJ8G,KAAO4E,EAAO5L,OAAOC,eAAe2L,EAAK5E,EAAK,CAAE9G,MAAOA,EAAOw5B,YAAY,EAAM+4B,cAAc,EAAMD,UAAU,IAAkB5mD,EAAI5E,GAAO9G,EAAgB0L,CAAK,CAEhN,SAAS+8J,EAAe3zJ,EAAKhN,GAAK,OAMlC,SAAyBgN,GAAO,GAAI7N,MAAMi3B,QAAQppB,GAAM,OAAOA,CAAK,CAN3B4zJ,CAAgB5zJ,IAIzD,SAA+BA,EAAKhN,GAAK,IAAIi0I,EAAO,GAAQ4sB,GAAK,EAAUzL,GAAK,EAAWE,OAAKx+J,EAAW,IAAM,IAAK,IAAiCgqK,EAA7B37B,EAAKn4H,EAAIsqB,OAAO+nD,cAAmBwhF,GAAMC,EAAK37B,EAAG14G,QAAQ2C,QAAoB6kH,EAAK33I,KAAKwkK,EAAG5oK,QAAY8H,GAAKi0I,EAAKp9I,SAAWmJ,GAA3D6gK,GAAK,GAAkE,CAAE,MAAOjiJ,GAAOw2I,GAAK,EAAME,EAAK12I,CAAK,CAAE,QAAU,IAAWiiJ,GAAsB,MAAhB17B,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIiwB,EAAI,MAAME,CAAI,CAAE,CAAE,OAAOrhB,CAAM,CAJvV8sB,CAAsB/zJ,EAAKhN,IAE5F,WAA8B,MAAM,IAAIi0B,UAAU,uDAAyD,CAFT+sI,EAAoB,CAQtH,SAASC,EAAet9J,GACtB,OAAe,OAARA,QAAwB7M,IAAR6M,CACzB,CAmBA,IAAIu9J,EAAe,SAASA,EAAatgF,GACvC,OAAOA,EAASljF,KAAI,SAAUyjK,EAAOltG,GACnC,IAAIrtD,EAAOu6J,EAAMv6J,KACbw6J,EAAaD,EAAME,QACnBC,EAAkBH,EAAMvgF,SACxB2gF,OAAgC,IAApBD,EAA6B,KAAOA,EAEhDD,EAAUrpK,OAAOoc,KAAKgtJ,GAAY54E,QAAO,SAAUxpF,GACrD,MAAe,SAARA,GAA0B,WAARA,GAAwC,SAApBoiK,EAAWpiK,EAC1D,IAAGf,QAAO,SAAUujK,EAASxiK,GAO3B,MANY,UAARA,EACFwiK,EAAQC,MA5BhB,WAEE,OADY7qK,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,IACnE2G,MAAM,KAAKU,QAAO,SAAUujK,EAAS/0I,GAEhD,IACIi1I,EAAef,EADDl0I,EAAKlvB,MAAM,KACkB,GAC3CyB,EAAM0iK,EAAa,GACnB/9J,EAAM+9J,EAAa,GAMvB,OAJIT,EAAejiK,IAAQiiK,EAAet9J,KACxC69J,GAAQ,EAAIhB,EAAWzmF,SAAS/6E,IAAQ2E,GAGnC69J,CACT,GAAG,CAAC,EACN,CAawBG,CAAYP,EAAWpiK,IAEvCwiK,GAAQ,EAAIhB,EAAWzmF,SAAS/6E,IAAQoiK,EAAWpiK,GAG9CwiK,CACT,GAAG,CAAC,GAEAI,EAAQ,CAAC,EAab,MAXwB,SAApBR,EAAWn7I,MAAmBm7I,EAAWS,OAC3CD,EAAQ,CACN37I,KAAM,OACN47I,OAAQ,gBAEmB,SAApBT,EAAWn7I,OACpB27I,EAAQ,CACN37I,KAAM,UAIH,EAAIk6I,EAAOj9E,eAAet8E,EAjErC,SAAuB/F,GAAU,IAAK,IAAIb,EAAI,EAAGA,EAAIpJ,UAAUC,OAAQmJ,IAAK,CAAE,IAAI5J,EAAyB,MAAhBQ,UAAUoJ,GAAapJ,UAAUoJ,GAAK,CAAC,EAAOo9I,EAAUplJ,OAAOoc,KAAKhe,GAAqD,oBAAjC4B,OAAO00G,wBAAwC0wC,EAAUA,EAAQjwI,OAAOnV,OAAO00G,sBAAsBt2G,GAAQoyF,QAAO,SAAU16D,GAAO,OAAO91B,OAAOsyD,yBAAyBl0D,EAAQ03B,GAAK4D,UAAY,MAAO0rH,EAAQr5I,SAAQ,SAAU/E,GAAO0hK,EAAgB7/J,EAAQ7B,EAAK5I,EAAO4I,GAAO,GAAI,CAAE,OAAO6B,CAAQ,CAiErbihK,CAAc,CACnD9iK,IAAKi1D,GACJotG,EAASO,GAAsB,OAAdL,EAAqBA,EAAYL,EAAaK,GACpE,GACF,EAEIrB,EAAU,SAAiBvgF,GAC7B,IAAIzgE,EAAOygE,EAAMzgE,KACb6iJ,EAAcpiF,EAAM88B,KACpB77B,EAAWmhF,EAAYnhF,SACvBohF,EAAUD,EAAYC,QACtBC,EAAsBF,EAAYV,QAClCa,OAAqC,IAAxBD,EAAiC,CAAC,EAAIA,EACnDE,EAAoBnqK,OAAOoc,KAAK8tJ,GAAYjkK,QAAO,SAAUujK,EAASxiK,GAExE,OADAwiK,GAAQ,EAAIhB,EAAWzmF,SAAS/6E,IAAQkjK,EAAWljK,GAC5CwiK,CACT,GAAG,CAAC,GACJ,OAAOrB,EAAOpmF,QAAQmJ,cAAc,MAAOu9E,EAAS,CAClDx6I,KAAM,eACNw7I,MAAO,CACLW,QAAS,eACTC,cAAe,UAEjBruF,OAAQ90D,EACRka,MAAOla,EACP8iJ,QAASA,GACRG,GAAoBxiF,EAAM+jE,MAAQyc,EAAOpmF,QAAQmJ,cAAc,QAAS,KAAMvD,EAAM+jE,OAAS,KAAMwd,EAAatgF,GACrH,EAEA9rF,EAAQorK,QAAUA,EAClBA,EAAQr/E,aAAe,CACrB3hE,KAAM,IAERghJ,EAAQoC,UAAY,CAClB7lD,KAAM6jD,EAAWvmF,QAAQrnB,OAAO6vG,WAChCrjJ,KAAMohJ,EAAWvmF,QAAQyoF,UAAU,CAAClC,EAAWvmF,QAAQ7kD,OAAQorI,EAAWvmF,QAAQpkD,SAClF+tH,MAAO4c,EAAWvmF,QAAQpkD,QAE5B,IAAI8sI,EAAWvC,EACfprK,EAAAA,QAAkB2tK,kiBC1HlBj+J,EAAA1O,EAAA,OAAAhB,GACAA,EAAAA,OAAAA,EAAAA,OACAA,EAAAA,KAAAA,EAAAA,MACA0P,EAAA1O,EAAA,OAAAhB,iCCHAkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ2iF,oBAAiB,EACzB,MAAMt9E,EAAUrE,EAAQ,OASxBhB,EAAQ2iF,eARR,MACIx0E,WAAAA,CAAYusE,GACRx6E,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAWtF,KAAKiO,YAAY2D,KAAO,MAC7D5R,KAAKgzB,SAAWwnD,EAAKxnD,SACrBhzB,KAAKupB,YAAcixD,EAAKjxD,YACxBvpB,KAAKw6E,KAAOA,CAChB,iHCJJ,MAAAkzF,EAAA5sK,EAAA,OACA2uB,EAAA3uB,EAAA,OAEM6sK,EAAsB,IAAIr9I,WAAW,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IACzFs9I,EAAqB,IAAIt9I,WAAW,IAAInmB,MAAM,IAAI8mB,KAAK,GAAGvoB,KAAI,CAAC+2B,EAAGz0B,IAAMA,KAE9E,IAAI6iK,EAAO,CAACD,GACRE,EAAO,CAFgBF,EAAGllK,KAAKsC,IAAO,EAAIA,EAAI,GAAK,MAGvD,IAAK,IAAIA,EAAI,EAAGA,EAAI,EAAGA,IAAK,IAAK,IAAI4F,IAAK,CAACi9J,EAAMC,GAAOl9J,EAAEtJ,KAAKsJ,EAAE5F,GAAGtC,KAAK4I,GAAMq8J,EAAIr8J,MAEnF,MAAMy8J,EAAyB,CAC7B,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GACtD,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GACtD,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GACtD,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GACtD,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IACtDrlK,KAAKsC,GAAM,IAAIslB,WAAWtlB,KACtBgjK,EAA0BH,EAAKnlK,KAAI,CAACu2D,EAAKj0D,IAAMi0D,EAAIv2D,KAAKkI,GAAMm9J,EAAO/iK,GAAG4F,OACxEq9J,EAA0BH,EAAKplK,KAAI,CAACu2D,EAAKj0D,IAAMi0D,EAAIv2D,KAAKkI,GAAMm9J,EAAO/iK,GAAG4F,OACxEs9J,EAAqB,IAAI52J,YAAY,CACzC,EAAY,WAAY,WAAY,WAAY,aAE5C62J,EAAqB,IAAI72J,YAAY,CACzC,WAAY,WAAY,WAAY,WAAY,IAGlD,SAASuzC,EAAE5/C,EAAe+F,EAAWC,EAAWN,GAC9C,OAAc,IAAV1F,EAAoB+F,EAAIC,EAAIN,EACb,IAAV1F,EAAqB+F,EAAIC,GAAOD,EAAIL,EAC1B,IAAV1F,GAAqB+F,GAAKC,GAAKN,EACrB,IAAV1F,EAAqB+F,EAAIL,EAAMM,GAAKN,EACjCK,GAAKC,GAAKN,EACxB,CAEA,MAAMy9J,EAAwB,IAAI92J,YAAY,IAC9C,MAAa+2J,UAAkBX,EAAA99I,OAO7B3hB,WAAAA,GACE7H,MAAM,GAAI,GAAI,GAAG,GAPX,KAAAkoK,GAAK,WACL,KAAAhwE,IAAK,UACL,KAAAiwE,IAAK,WACL,KAAAC,GAAK,UACL,KAAAC,IAAK,UAIb,CACU7iK,GAAAA,GACR,MAAM,GAAE0iK,EAAE,GAAEhwE,EAAE,GAAEiwE,EAAE,GAAEC,EAAE,GAAEC,GAAOzuK,KAC/B,MAAO,CAACsuK,EAAIhwE,EAAIiwE,EAAIC,EAAIC,EAC1B,CACUn4J,GAAAA,CAAIg4J,EAAYhwE,EAAYiwE,EAAYC,EAAYC,GAC5DzuK,KAAKsuK,GAAU,EAALA,EACVtuK,KAAKs+F,GAAU,EAALA,EACVt+F,KAAKuuK,GAAU,EAALA,EACVvuK,KAAKwuK,GAAU,EAALA,EACVxuK,KAAKyuK,GAAU,EAALA,CACZ,CACU59I,OAAAA,CAAQN,EAAgBwG,GAChC,IAAK,IAAI/rB,EAAI,EAAGA,EAAI,GAAIA,IAAK+rB,GAAU,EAAGq3I,EAAMpjK,GAAKulB,EAAK+zF,UAAUvtF,GAAQ,GAE5E,IAAI8nF,EAAe,EAAV7+G,KAAKsuK,GAAQI,EAAK7vD,EACvB8vD,EAAe,EAAV3uK,KAAKs+F,GAAQswE,EAAKD,EACvBE,EAAe,EAAV7uK,KAAKuuK,GAAQO,EAAKD,EACvBE,EAAe,EAAV/uK,KAAKwuK,GAAQQ,EAAKD,EACvBE,EAAe,EAAVjvK,KAAKyuK,GAAQrkB,EAAK6kB,EAI3B,IAAK,IAAIhkK,EAAQ,EAAGA,EAAQ,EAAGA,IAAS,CACtC,MAAMikK,EAAS,EAAIjkK,EACbkkK,EAAMjB,EAAGjjK,GAAQmkK,EAAMjB,EAAGljK,GAC1BokK,EAAKxB,EAAK5iK,GAAQqkK,EAAKxB,EAAK7iK,GAC5B4yF,EAAKmwE,EAAQ/iK,GAAQskK,EAAKtB,EAAQhjK,GACxC,IAAK,IAAID,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAMwkK,GAAM,EAAA//I,EAAA8uF,MAAKM,EAAKh0D,EAAE5/C,EAAO0jK,EAAIE,EAAIE,GAAMX,EAAMiB,EAAGrkK,IAAMmkK,EAAKtxE,EAAG7yF,IAAMikK,EAAM,EAChFpwD,EAAKowD,EAAIA,EAAKF,EAAIA,EAAoB,GAAf,EAAAt/I,EAAA8uF,MAAKswD,EAAI,IAASA,EAAKF,EAAIA,EAAKa,CACzD,CAEA,IAAK,IAAIxkK,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAMykK,GAAM,EAAAhgJ,EAAA8uF,MAAKmwD,EAAK7jH,EAAEqkH,EAAQN,EAAIE,EAAIE,GAAMZ,EAAMkB,EAAGtkK,IAAMokK,EAAKG,EAAGvkK,IAAMo/I,EAAM,EACjFskB,EAAKtkB,EAAIA,EAAK4kB,EAAIA,EAAoB,GAAf,EAAAv/I,EAAA8uF,MAAKuwD,EAAI,IAASA,EAAKF,EAAIA,EAAKa,CACzD,CACF,CAEAzvK,KAAKsW,IACFtW,KAAKs+F,GAAKuwE,EAAKG,EAAM,EACrBhvK,KAAKuuK,GAAKQ,EAAK3kB,EAAM,EACrBpqJ,KAAKwuK,GAAKS,EAAKP,EAAM,EACrB1uK,KAAKyuK,GAAK5vD,EAAK+vD,EAAM,EACrB5uK,KAAKsuK,GAAKK,EAAKG,EAAM,EAE1B,CACU/9I,UAAAA,GACRq9I,EAAMn9I,KAAK,EACb,CACAY,OAAAA,GACE7xB,KAAKowB,WAAY,EACjBpwB,KAAKqwB,OAAOY,KAAK,GACjBjxB,KAAKsW,IAAI,EAAG,EAAG,EAAG,EAAG,EACvB,EA/DFxW,EAAAA,UAAAuuK,EAmEavuK,EAAAA,WAAmC,EAAA2vB,EAAAm1F,kBAAgB,IAAM,IAAIypD,kCC3G1ErrK,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ4vK,yBAAsB,EAC9B,MAAMnsK,EAAWzC,EAAQ,OACnB6uK,EAAsB7uK,EAAQ,MACpC,MAAM4uK,EACF,eAAOE,CAASn/J,EAAGS,GACf,IAAK,IAAIlG,EAAI,EAAGA,EAAIyF,EAAE5O,OAAQmJ,IAAK,CAC/B,GAAIyF,EAAEzF,GAAKkG,EAAElG,GACT,OAAO,EACX,GAAIyF,EAAEzF,GAAKkG,EAAElG,GACT,OAAO,CACf,CACA,OAAO,CACX,CACA,iBAAO6kK,CAAW73J,EAAK83J,GACnB,IAAIvhC,EAAY,EAChB,IAAK,IAAIvjI,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAM2D,EAAMqJ,EAAIhN,GAAKujI,EACf5/G,EAASvlB,KAAKC,MAAMsF,EAAMmhK,GAChCvhC,EAAa5/H,EAAMmhK,EAAW,IAC9B93J,EAAIhN,GAAK2jB,CACb,CACJ,CACA,iBAAOohJ,CAAW/3J,EAAKzV,GACnB,IAAIgsI,EAAY,EAChB,IAAK,IAAIvjI,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAMmlB,EAAM,GAAKnlB,EACX2D,EAAMqJ,EAAImY,GAAO5tB,EAAI4tB,GAAOo+G,EAC5Bh/G,EAAa,IAAN5gB,EACb4/H,EAAY5/H,GAAO,EACnBqJ,EAAImY,GAAOZ,CACf,CACJ,CACA,oBAAOygJ,CAAcC,GACjB,MAAMpkK,EAAStI,EAASgB,OAAO0b,MAAM,GAAI,GAEnCiwJ,EAAQ,CACRD,GAAS,GAAM,IACfA,GAAS,EAAK,IACL,IAATA,GAEA/gK,EAAQ,IANC+gK,GAAS,GAAM,KAO9B,IAAK,IAAIjlK,EAAI,EAAGA,EAAI,EAAGA,IACfkE,EAAQlE,EAAI,KACZa,EAAOqD,EAAQlE,GAAKklK,EAAMllK,IAGlC,OAAOa,CACX,CACA,oBAAOskK,CAAcF,GACjB,MAAMpkK,EAAS6jK,EAAoBM,cAAcC,GACjD,IAAI/gK,EAAQ,EACZ,IAAK,IAAIlE,EAAI,EAAGA,EAAI,GAAIA,IACpB,GAAIa,EAAOb,GAAK,EAAG,CACfkE,EAAQlE,EACR,KACJ,CAEJ,MAAM+C,EAAQ,GAAKmB,EAAQ,EAC3B,IAAIiyB,EAAM,EACV,IAAK,IAAIn2B,EAAI,EAAGA,EAAI,EAAGA,IACnBm2B,GAAOt1B,EAAOqD,EAAQlE,IAAiB,GAAT,EAAIA,GAEtC,MAAMgN,EAAMzU,EAASgB,OAAOC,KAAK,mEAAoE,OACrGkrK,EAAoBG,WAAW73J,EAAKmpB,GACpC,MAAMxS,EAASprB,EAASgB,OAAO0b,MAAM,GAAI,GACzC,IAAK,IAAIjV,EAAI,EAAGA,EAAI,GAAK+C,EAAO/C,IAC5B2jB,EAAO3jB,EAAI+C,GAASiK,EAAIhN,GAE5B,OAAO2jB,CACX,CACA,mBAAOyhJ,CAAaH,GAChB,MAAMpkK,EAAS6jK,EAAoBM,cAAcC,GAC3CI,EAAWV,EAAoB1gJ,kBAAkBG,WAAWvjB,GAClE,OAAO8jK,EAAoB1gJ,kBAAkBlqB,UAAuB,qEAAXsrK,IAAmFA,EAAW,IAAO,GAAI,KAAM,GAC5K,EAEJvwK,EAAQ4vK,oBAAsBA,EAC9BA,EAAoBY,uBAAyB,mCC9E7C,IAAIhyI,EAAWx9B,EAAQ,OACnByvK,EAAMzvK,EAAQ,OACdutK,EAAYvtK,EAAQ,OACpBmlH,EAAMnlH,EAAQ,OACdyhJ,EAAOzhJ,EAAQ,MAEnB,SAAS+uB,EAAMjrB,GACb29I,EAAKzrI,KAAK9W,KAAM,UAEhBA,KAAK0rH,MAAQ9mH,CACf,CAEA05B,EAASzO,EAAM0yH,GAEf1yH,EAAKjlB,UAAUu0B,QAAU,SAAUx7B,GACjC3D,KAAK0rH,MAAM3nH,OAAOJ,EACpB,EAEAksB,EAAKjlB,UAAUszB,OAAS,WACtB,OAAOl+B,KAAK0rH,MAAM1nH,QACpB,EAEAjE,EAAOD,QAAU,SAAqB0kJ,GAEpC,MAAY,SADZA,EAAMA,EAAI5vI,eACgB,IAAI27J,EAClB,WAAR/rB,GAA4B,cAARA,EAA4B,IAAI6pB,EAEjD,IAAIx+I,EAAKo2F,EAAIu+B,GACtB,gCC5BAxhJ,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0wK,uBAAoB,EAC5B,MAAMluF,EAAmBxhF,EAAQ,OAC3BoE,EAAapE,EAAQ,OAC3B,MAAM0vK,UAA0BluF,EAAiBG,eAQ7CkkB,cAAAA,CAAezjG,GACX,GAAqB,KAAjBA,EAAMrB,OACN,OAAO,EACX,IAEI,OADA,EAAIqD,EAAWurK,yBAAyBvtK,IACjC,CACX,CACA,MAAOqO,GACH,OAAO,CACX,CACJ,EAEJzR,EAAQ0wK,kBAAoBA,sCCxB5B,IAAIp7G,EAAmBp1D,MAAQA,KAAKo1D,kBAAqBpyD,OAAO0G,OAAU,SAASw8B,EAAG5tB,EAAGhH,EAAGk5C,QAC7E1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B,IAAI+jD,EAAOryD,OAAOsyD,yBAAyBh9C,EAAGhH,GACzC+jD,KAAS,QAASA,GAAQ/8C,EAAEi9C,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAE34B,YAAY,EAAM9wB,IAAK,WAAa,OAAO0M,EAAEhH,EAAI,IAE5DtO,OAAOC,eAAeijC,EAAGskB,EAAI6K,EACjC,EAAM,SAASnvB,EAAG5tB,EAAGhH,EAAGk5C,QACT1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B40B,EAAEskB,GAAMlyC,EAAEhH,EACd,GACIugI,EAAsB7xI,MAAQA,KAAK6xI,qBAAwB7uI,OAAO0G,OAAU,SAASw8B,EAAGjyB,GACxFjR,OAAOC,eAAeijC,EAAG,UAAW,CAAExJ,YAAY,EAAMx5B,MAAO+Q,GACnE,EAAK,SAASiyB,EAAGjyB,GACbiyB,EAAW,QAAIjyB,CACnB,GACI69H,EAAgB9xI,MAAQA,KAAK8xI,cAAiB,SAAUz2H,GACxD,GAAIA,GAAOA,EAAIk6C,WAAY,OAAOl6C,EAClC,IAAIsT,EAAS,CAAC,EACd,GAAW,MAAPtT,EAAa,IAAK,IAAI/J,KAAK+J,EAAe,YAAN/J,GAAmBtO,OAAO4H,UAAU4L,eAAeM,KAAKuE,EAAK/J,IAAI8jD,EAAgBzmC,EAAQtT,EAAK/J,GAEtI,OADAugI,EAAmBljH,EAAQtT,GACpBsT,CACX,EACA3rB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ60I,YAAS,EA+BjB,MAAMnnI,EAAoB1M,EAAQ,OAC5BixI,EAAaD,EAAahxI,EAAQ,QAClCgJ,EAAUhJ,EAAQ,OAClB4vK,EAAe5vK,EAAQ,OACvB6vK,EAAc7vK,EAAQ,OACtBuxI,EAAoBvxI,EAAQ,OAG5B8vK,EAAgB,gDAGhBC,EAAa,wBAEbC,EAAgB,cAIhBC,EAAc,CAAC,KAAM,KAAM,MAajC,SAASC,EAAgBC,EAAYn9B,GAEjC,IAeIo9B,EAAYC,EAfZC,GADJH,EAbJ,SAAwBj/J,GACpB,GAAI+/H,EAAWs/B,cAAcr/J,GACzB,OAAOA,EACX,IAAK,IAAIuK,EAAI,EAAGA,EAAIw0J,EAAYlvK,OAAQ0a,IAAK,CACzC,MAAM+0J,EAAaP,EAAYx0J,GACzBg1J,EAAgBD,EAAat/J,EAAIuC,QAAQ+8J,IAAe,GACvC,IAAnBC,IACAv/J,EAAMA,EAAItE,MAAM,EAAG6jK,GAE3B,CACA,OAAOv/J,CACX,CAEiBw/J,CAAeP,IACH18J,QAAQ,KACjC,GAAIu/H,EACgB,IAAZs9B,IAGAA,GADAH,EAAaA,EAAWnoK,UAAU,IACbyL,QAAQ,WAKjC,GAAI68J,GAAW,EAEX,OAYR,GARIA,GAAW,GACXF,EAAa,GACbC,EAAcF,EAAWhkK,SAGzBikK,EAAaD,EAAWvjK,MAAM,EAAG0jK,GAASnkK,OAC1CkkK,EAAcF,EAAWvjK,MAAM0jK,EAAU,GAAGnkK,QAE5C6jK,EAAcx8J,KAAK48J,IAAeJ,EAAcx8J,KAAK68J,GACrD,OAEJ,MAAM//J,EAAI,IAAIujI,EAGd,OAFAvjI,EAAEpH,IAAMknK,EACR9/J,EAAElO,MAAQiuK,EACH//J,CACX,CA6IA,SAASwmI,EAAS5lI,GACd,IAAKA,GAAO+/H,EAAWs/B,cAAcr/J,GACjC,OAEJ,IAAIpD,EACJ,GAAmB,kBAARoD,EACP,IACIpD,EAAM+e,KAAKwE,MAAMngB,EACrB,CACA,MACI,MACJ,MAIApD,EAAMoD,EAEV,MAAMZ,EAAI,IAAIujI,EAgEd,OA/DAA,EAAO88B,uBAAuB1iK,SAASjD,IACnC,GAAI8C,GAAsB,kBAARA,IAAoB,EAAI9E,EAAQkpH,YAAYlnH,EAAM8C,GAAM,CACtE,MAAMD,EAAMC,EAAI9C,GAChB,QAAYhK,IAAR6M,EACA,OAEJ,IAAI,EAAI7E,EAAQkpH,YAAYlnH,EAAM4lK,IAAmB/iK,IAAQ+iK,EAAe5lK,GACxE,OAEJ,OAAQA,GACJ,IAAK,MACL,IAAK,QACL,IAAK,WACkB,kBAAR6C,IACPyC,EAAEtF,GAAQ6C,GAEd,MACJ,IAAK,UACL,IAAK,WACL,IAAK,eACkB,kBAARA,GACQ,kBAARA,GACPA,aAAeke,KACfzb,EAAEtF,GAAqB,YAAb8C,EAAI9C,GAAsB,WAAa,IAAI+gB,KAAKle,GAE7C,OAARA,IACLyC,EAAEtF,GAAQ,MAEd,MACJ,IAAK,SACkB,kBAAR6C,GACC,aAARA,GACQ,cAARA,IACAyC,EAAEtF,GAAQ6C,GAEd,MACJ,IAAK,SACL,IAAK,OACkB,kBAARA,GAA4B,OAARA,IAC3ByC,EAAEtF,GAAQ6C,GAEd,MACJ,IAAK,SACL,IAAK,WACkB,mBAARA,IACPyC,EAAEtF,GAAQ6C,GAEd,MACJ,IAAK,aACGxE,MAAMi3B,QAAQzyB,IACdA,EAAI4tF,OAAOhpE,GAAyB,kBAATA,MAC3BniB,EAAEtF,GAAQ6C,GAEd,MACJ,IAAK,WACL,IAAK,gBACkB,mBAARA,GAA6B,OAARA,IAC5ByC,EAAEtF,GAAQ6C,GAI1B,KAEGyC,CACX,CACA,MAAMsgK,EAAiB,CAEnB1nK,IAAK,GACL9G,MAAO,GACPyuK,QAAS,WACTC,OAAQ,KACRvkK,OAAQ,KACRskI,KAAM,KACN2D,QAAQ,EACRL,UAAU,EACV48B,WAAY,KAEZ/8B,SAAU,KACVE,cAAe,KACfe,SAAU,KACVE,aAAc,KACdf,cAAUpzI,GAOd,MAAM6yI,EAMF1mI,WAAAA,GAA0B,IAAd2T,EAAOhgB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACnB5B,KAAKgK,IAAM4X,EAAQ5X,KAAO0nK,EAAe1nK,IACzChK,KAAKkD,MAAQ0e,EAAQ1e,OAASwuK,EAAexuK,MAC7ClD,KAAK2xK,QAAU/vJ,EAAQ+vJ,SAAWD,EAAeC,QACjD3xK,KAAK4xK,OAAShwJ,EAAQgwJ,QAAUF,EAAeE,OAC/C5xK,KAAKqN,OAASuU,EAAQvU,QAAUqkK,EAAerkK,OAC/CrN,KAAK2xI,KAAO/vH,EAAQ+vH,MAAQ+/B,EAAe//B,KAC3C3xI,KAAKs1I,OAAS1zH,EAAQ0zH,QAAUo8B,EAAep8B,OAC/Ct1I,KAAKi1I,SAAWrzH,EAAQqzH,UAAYy8B,EAAez8B,SACnDj1I,KAAK6xK,WAAajwJ,EAAQiwJ,YAAcH,EAAeG,WACvD7xK,KAAK+1I,SAAWn0H,EAAQm0H,UAAY27B,EAAe37B,SACnD/1I,KAAK80I,SAAWlzH,EAAQkzH,UAAY48B,EAAe58B,SACnD90I,KAAKg1I,cAAgBpzH,EAAQozH,eAAiB08B,EAAe18B,cAC7Dh1I,KAAKi2I,aAAer0H,EAAQq0H,cAAgBy7B,EAAez7B,aAC3Dj2I,KAAKk1I,SAAWtzH,EAAQszH,UAAYw8B,EAAex8B,SACnDl1I,KAAK+1I,SAAWn0H,EAAQm0H,UAAY,IAAIlpH,KAExC7pB,OAAOC,eAAejD,KAAM,gBAAiB,CACzCy1D,cAAc,EACd/4B,YAAY,EACZ84B,UAAU,EACVtyD,QAASyxI,EAAOm9B,iBAGpB9xK,KAAKg2I,cAAgBrB,EAAOm9B,cAChC,CACA,CAACxvI,OAAOC,IAAI,iCACR,MAAMzV,EAAMD,KAAKC,MACXgoH,EAA4B,MAAjB90I,KAAK80I,SAAmB90I,KAAK80I,SAASrwI,WAAa,IAC9DstK,EAAY/xK,KAAK+1I,UAA8B,aAAlB/1I,KAAK+1I,SAClC,GAAGlkI,OAAOib,EAAM9sB,KAAK+1I,SAASi8B,eAC9B,IACAC,EAAYjyK,KAAKi2I,cAAsC,aAAtBj2I,KAAKi2I,aACtC,GAAGpkI,OAAOib,EAAM9sB,KAAKi2I,aAAa+7B,eAClC,IACN,MAAO,WAAWhyK,KAAKyE,wBAAwBqwI,WAAkBm9B,WAAmBF,IACxF,CAUApzJ,MAAAA,GACI,MAAM/P,EAAM,CAAC,EACb,IAAK,MAAM9C,KAAQ6oI,EAAO88B,uBAAwB,CAC9C,MAAM9iK,EAAM3O,KAAK8L,GACjB,GAAI6C,IAAQ+iK,EAAe5lK,GAG3B,OAAQA,GACJ,IAAK,MACL,IAAK,QACL,IAAK,WACkB,kBAAR6C,IACPC,EAAI9C,GAAQ6C,GAEhB,MACJ,IAAK,UACL,IAAK,WACL,IAAK,eACkB,kBAARA,GACQ,kBAARA,GACPA,aAAeke,KACfje,EAAI9C,GACO,YAAP6C,EAAoB,WAAa,IAAIke,KAAKle,GAAKujK,cAEtC,OAARvjK,IACLC,EAAI9C,GAAQ,MAEhB,MACJ,IAAK,SACkB,kBAAR6C,GACC,aAARA,GACQ,cAARA,IACAC,EAAI9C,GAAQ6C,GAEhB,MACJ,IAAK,SACL,IAAK,OACkB,kBAARA,GAA4B,OAARA,IAC3BC,EAAI9C,GAAQ6C,GAEhB,MACJ,IAAK,SACL,IAAK,WACkB,mBAARA,IACPC,EAAI9C,GAAQ6C,GAEhB,MACJ,IAAK,aACGxE,MAAMi3B,QAAQzyB,KACdC,EAAI9C,GAAQ6C,GAEhB,MACJ,IAAK,WACL,IAAK,gBACkB,mBAARA,GAA6B,OAARA,IAC5BC,EAAI9C,GAAQ6C,GAI5B,CACA,OAAOC,CACX,CAKAyD,KAAAA,GACI,OAAOulI,EAAS53I,KAAK2e,SACzB,CAUA01H,QAAAA,GACI,IAAKr0I,KAAKkD,QAAU0tK,EAAct8J,KAAKtU,KAAKkD,OACxC,OAAO,EAEX,GAAoB,YAAhBlD,KAAK2xK,WACH3xK,KAAK2xK,mBAAmB9kJ,SACzB,EAAI8jJ,EAAYtrG,WAAWrlE,KAAK2xK,SACjC,OAAO,EAEX,GAAmB,MAAf3xK,KAAK4xK,QACW,aAAhB5xK,KAAK4xK,SACY,cAAhB5xK,KAAK4xK,QAA0B5xK,KAAK4xK,QAAU,GAC/C,OAAO,EAEX,GAAiB,MAAb5xK,KAAK2xI,OAAiBk/B,EAAWv8J,KAAKtU,KAAK2xI,MAC3C,OAAO,EAEX,MAAMiD,EAAU50I,KAAK40I,UACrB,GAAIA,EAAS,CACT,GAAIA,EAAQpiE,MAAM,OACd,OAAO,EAGX,GAAc,OADC,EAAIhlE,EAAkBC,iBAAiBmnI,GAGlD,OAAO,CAEf,CACA,OAAO,CACX,CAUAu9B,UAAAA,CAAW7zJ,GACHA,aAAeuO,KACf7sB,KAAK2xK,QAAUrzJ,EAGfte,KAAK2xK,SAAU,EAAIhB,EAAYtrG,WAAW/mD,IAAQ,UAE1D,CASA8zJ,SAAAA,CAAUC,GAEFryK,KAAK4xK,OADLS,IAAQz4H,IACM,WAETy4H,KAASz4H,IACA,YAGAy4H,CAEtB,CAKAhqF,YAAAA,GACI,MAAM15E,EAAM3O,KAAKkD,OAAS,GAC1B,OAAIlD,KAAKgK,IACE,GAAGhK,KAAKgK,OAAO2E,IAEnBA,CACX,CAKAlK,QAAAA,GACI,IAAIuN,EAAMhS,KAAKqoF,eAuCf,MAtCoB,YAAhBroF,KAAK2xK,SACD3xK,KAAK2xK,mBAAmB9kJ,OACxB7a,GAAO,cAAa,EAAI0+J,EAAa4B,YAAYtyK,KAAK2xK,YAG3C,MAAf3xK,KAAK4xK,QAAkB5xK,KAAK4xK,QAAUh4H,MACtC5nC,GAAO,aAAaH,OAAO7R,KAAK4xK,WAEhC5xK,KAAKqN,SAAWrN,KAAK80I,WACrB9iI,GAAO,YAAYhS,KAAKqN,UAExBrN,KAAK2xI,OACL3/H,GAAO,UAAUhS,KAAK2xI,QAEtB3xI,KAAKs1I,SACLtjI,GAAO,YAEPhS,KAAKi1I,WACLjjI,GAAO,cAEPhS,KAAKk1I,UAA8B,SAAlBl1I,KAAKk1I,WAClBl1I,KAAKk1I,SAAStgI,gBACd+/H,EAAO49B,kBAAkB57B,IAAI/hI,cAC7B5C,GAAO,cAAc2iI,EAAO49B,kBAAkB57B,MAEzC32I,KAAKk1I,SAAStgI,gBACnB+/H,EAAO49B,kBAAkBzzE,OAAOlqF,cAChC5C,GAAO,cAAc2iI,EAAO49B,kBAAkBzzE,SAG9C9sF,GAAO,cAAchS,KAAKk1I,YAG9Bl1I,KAAK6xK,YACL7xK,KAAK6xK,WAAW9iK,SAASqwI,IACrBptI,GAAO,KAAKotI,GAAK,IAGlBptI,CACX,CAcAwgK,GAAAA,GAAsB,IAAlB1lJ,EAAGlrB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGirB,KAAKC,MAUX,GAAmB,MAAf9sB,KAAK4xK,QAAyC,kBAAhB5xK,KAAK4xK,OACnC,OAAO5xK,KAAK4xK,QAAU,EAAI,EAAkB,IAAd5xK,KAAK4xK,OAEvC,MAAMD,EAAU3xK,KAAK2xK,QACrB,MAAgB,aAAZA,EACO/3H,KAEH+3H,GAASK,WAAallJ,IAAQA,GAAOD,KAAKC,MACtD,CAWA+pH,UAAAA,CAAW/pH,GAEP,GAAmB,MAAf9sB,KAAK4xK,OAAgB,CACrB,MAAMa,EAAa3lJ,GAAO9sB,KAAKi2I,cAAgB,IAAIppH,KAC7C+kJ,EAAgC,kBAAhB5xK,KAAK4xK,OAAsB5xK,KAAK4xK,QAAUh4H,IAC1Dy4H,EAAMT,GAAU,GAAKh4H,IAAoB,IAATg4H,EACtC,MAAmB,aAAfa,EACO74H,IAEJ64H,EAAWT,UAAYK,CAClC,CACA,MAAoB,YAAhBryK,KAAK2xK,QACE/3H,IAEJ55C,KAAK2xK,QAAU3xK,KAAK2xK,QAAQK,eAAYlwK,CACnD,CAWA4wK,UAAAA,CAAW5lJ,GACP,MAAM6lJ,EAAW3yK,KAAK62I,WAAW/pH,GACjC,OAAI6lJ,GAAY/4H,IASL,IAAI/sB,KAAK,cAEX8lJ,IAAa/4H,IACX,IAAI/sB,KAAK,QAGG/qB,GAAZ6wK,OAAwB7wK,EAAY,IAAI+qB,KAAK8lJ,EAE5D,CAKAC,YAAAA,GAEI,OAAsB,MAAf5yK,KAAK4xK,QAAkC,YAAhB5xK,KAAK2xK,OACvC,CAKAkB,mBAAAA,GAEI,OAAO,EAAIxgC,EAAkBoC,iBAAiBz0I,KAAKqN,OACvD,CAKAunI,OAAAA,GACI,OAAO,EAAIvC,EAAkBoC,iBAAiBz0I,KAAKqN,OACvD,CAiCA,YAAO8kB,CAAMngB,EAAK4P,GACd,OAnoBR,SAAe5P,EAAK4P,GAChB,GAAImwH,EAAWs/B,cAAcr/J,KAAS+/H,EAAW+gC,SAAS9gK,GACtD,OAIJ,MAAM+gK,GAFN/gK,EAAMA,EAAI/E,QAEYsH,QAAQ,KAExBnD,EAAI4/J,GADwB,IAAf+B,EAAmB/gK,EAAMA,EAAItE,MAAM,EAAGqlK,GACnBnxJ,GAASgxH,QAAS,GACxD,IAAKxhI,EACD,OAEJ,IAAmB,IAAf2hK,EACA,OAAO3hK,EAKX,MAAM4hK,EAAWhhK,EAAItE,MAAMqlK,EAAY,GAAG9lK,OAG1C,GAAwB,IAApB+lK,EAASnxK,OACT,OAAOuP,EAUX,MAAM6hK,EAAaD,EAASzqK,MAAM,KAClC,KAAO0qK,EAAWpxK,QAAQ,CACtB,MAAMqxK,GAAMD,EAAWllK,SAAW,IAAId,OACtC,GAAkB,IAAdimK,EAAGrxK,OAEH,SAEJ,MAAMsxK,EAASD,EAAG3+J,QAAQ,KAC1B,IAAI6+J,EAAQC,EAaZ,QAZgB,IAAZF,GACAC,EAASF,EACTG,EAAW,OAGXD,EAASF,EAAGxlK,MAAM,EAAGylK,GACrBE,EAAWH,EAAGxlK,MAAMylK,EAAS,IAEjCC,EAASA,EAAOnmK,OAAO2H,cACnBy+J,IACAA,EAAWA,EAASpmK,QAEhBmmK,GACJ,IAAK,UACD,GAAIC,EAAU,CACV,MAAM/0J,GAAM,EAAIqyJ,EAAYtrG,WAAWguG,GAGnC/0J,IAGAlN,EAAEugK,QAAUrzJ,EAEpB,CACA,MACJ,IAAK,UACD,GAAI+0J,GAII,aAAa/+J,KAAK++J,GAAW,CAC7B,MAAMhiI,EAAQlmC,SAASkoK,EAAU,IAGjCjiK,EAAEghK,UAAU/gI,EAChB,CAEJ,MACJ,IAAK,SAGD,GAAIgiI,EAAU,CAGV,MAAMhmK,EAASgmK,EAASpmK,OAAOD,QAAQ,MAAO,IAC1CK,IAEA+D,EAAE/D,OAASA,EAAOuH,cAE1B,CACA,MACJ,IAAK,OAWDxD,EAAEugI,KAAO0hC,GAA4B,MAAhBA,EAAS,GAAaA,EAAW,KACtD,MACJ,IAAK,SAMDjiK,EAAEkkI,QAAS,EACX,MACJ,IAAK,WACDlkI,EAAE6jI,UAAW,EACb,MACJ,IAAK,WACD,OAAQo+B,EAAWA,EAASz+J,cAAgB,IACxC,IAAK,SACDxD,EAAE8jI,SAAW,SACb,MACJ,IAAK,MACD9jI,EAAE8jI,SAAW,MACb,MACJ,IAAK,OACD9jI,EAAE8jI,SAAW,OACb,MACJ,QACI9jI,EAAE8jI,cAAWpzI,EAGrB,MACJ,QACIsP,EAAEygK,WAAazgK,EAAEygK,YAAc,GAC/BzgK,EAAEygK,WAAWvqK,KAAK4rK,GAG9B,CACA,OAAO9hK,CACX,CAwfe+gB,CAAMngB,EAAK4P,EACtB,CA0BA,eAAOg2H,CAAS5lI,GACZ,OAAO4lI,EAAS5lI,EACpB,EAEJlS,EAAQ60I,OAASA,EACjBA,EAAOm9B,eAAiB,EAIxBn9B,EAAO2B,cAAgB,CACnBx3C,OAAQ,EACR63C,IAAK,EACLC,KAAM,GAKVjC,EAAO49B,kBAAoB,CACvBzzE,OAAQ,SACR63C,IAAK,OAMThC,EAAO88B,uBAAyB,CAC5B,MACA,QACA,UACA,SACA,SACA,OACA,SACA,WACA,aACA,WACA,gBACA,WACA,eACA,uBCzzBJ1xK,EAAOD,QAAU,WACf,MAA0B,oBAAZuE,SAA0BA,QAAQuG,WAAavG,QAAQuG,UAAU5B,IACjF,mcCNA,MAAA+V,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAwyK,EAAAxyK,EAAA,OAaAhB,EAAAA,iBAAA,SACIoB,EACAC,EACAE,EACAG,GAC4B,IAA5BQ,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAMtwB,GAAc,IAAIxB,EAAAyB,aAAcC,KAAI,EAAA+wK,EAAAC,mCAAkClyK,EAAMG,EAAQQ,KACpF,WAAEwxK,EAAU,IAAE5pJ,UAAe1oB,EAAWuyK,oBAAoBpxK,EAAa,CAAClB,IAAQ,IAAQ+B,MAChG,GAAIswK,EAAY,CACZ,MAAM7vK,EAAOY,EAAOC,KAAKgvK,EAAW7vK,KAAK,GAAI6vK,EAAW7vK,KAAK,IAC7D,OAAO,EAAAob,EAAA2T,OAAMjT,OAAO9b,GAExB,OAAOimB,CACX,8GC1BA9pB,EAAQ,OAAqB,EAiG7BA,EAAQ,EAhGiB,CACvB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,MAEX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,MAEX,SAAY,QAGf,CACD,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,sKAEP,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,sKAEP,SAAY,MAEb,CACD,KAAQ,SACR,QAAW,CACT,GAAM,IACN,GAAM,KACN,EAAK,OAEP,SAAY,CAAC,CACX,KAAQ,SACR,QAAW,CACT,GAAM,IACN,GAAM,KACN,EAAK,OAEP,SAAY,MAEb,CACD,KAAQ,SACR,QAAW,CACT,GAAM,KACN,GAAM,KACN,EAAK,OAEP,SAAY,CAAC,CACX,KAAQ,SACR,QAAW,CACT,GAAM,KACN,GAAM,KACN,EAAK,OAEP,SAAY,MAEb,CACD,KAAQ,SACR,QAAW,CACT,GAAM,KACN,GAAM,KACN,EAAK,OAEP,SAAY,CAAC,CACX,KAAQ,SACR,QAAW,CACT,GAAM,KACN,GAAM,KACN,EAAK,OAEP,SAAY,2DC5CxB,SAAS4zK,EAAoBzwI,EAAMrZ,GACjC+pJ,EAAY1wI,EAAMrZ,GAClBgqJ,EAAY3wI,EACd,CACA,SAAS2wI,EAAY3wI,GACfA,EAAKqiF,iBAAmBriF,EAAKqiF,eAAeuuD,WAC5C5wI,EAAKuiF,iBAAmBviF,EAAKuiF,eAAequD,WAChD5wI,EAAK60E,KAAK,QACZ,CAkBA,SAAS67D,EAAY1wI,EAAMrZ,GACzBqZ,EAAK60E,KAAK,QAASluF,EACrB,CAYA7pB,EAAOD,QAAU,CACf+xB,QAzFF,SAAiBjI,EAAKwK,GACpB,IAAI26G,EAAQ/uI,KACR8zK,EAAoB9zK,KAAKwlH,gBAAkBxlH,KAAKwlH,eAAep1F,UAC/D2jJ,EAAoB/zK,KAAKslH,gBAAkBtlH,KAAKslH,eAAel1F,UACnE,OAAI0jJ,GAAqBC,GACnB3/I,EACFA,EAAGxK,GACMA,IACJ5pB,KAAKslH,eAEEtlH,KAAKslH,eAAe0uD,eAC9Bh0K,KAAKslH,eAAe0uD,cAAe,EACnCnjJ,EAAQomE,SAAS08E,EAAa3zK,KAAM4pB,IAHpCiH,EAAQomE,SAAS08E,EAAa3zK,KAAM4pB,IAMjC5pB,OAMLA,KAAKwlH,iBACPxlH,KAAKwlH,eAAep1F,WAAY,GAI9BpwB,KAAKslH,iBACPtlH,KAAKslH,eAAel1F,WAAY,GAElCpwB,KAAKsoK,SAAS1+I,GAAO,MAAM,SAAUA,IAC9BwK,GAAMxK,EACJmlH,EAAMzpB,eAECypB,EAAMzpB,eAAe0uD,aAI/BnjJ,EAAQomE,SAAS28E,EAAa7kC,IAH9BA,EAAMzpB,eAAe0uD,cAAe,EACpCnjJ,EAAQomE,SAASy8E,EAAqB3kC,EAAOnlH,IAH7CiH,EAAQomE,SAASy8E,EAAqB3kC,EAAOnlH,GAOtCwK,GACTvD,EAAQomE,SAAS28E,EAAa7kC,GAC9B36G,EAAGxK,IAEHiH,EAAQomE,SAAS28E,EAAa7kC,EAElC,IACO/uI,KACT,EA2CEi0K,UAjCF,WACMj0K,KAAKwlH,iBACPxlH,KAAKwlH,eAAep1F,WAAY,EAChCpwB,KAAKwlH,eAAem2C,SAAU,EAC9B37J,KAAKwlH,eAAezsC,OAAQ,EAC5B/4E,KAAKwlH,eAAeC,YAAa,GAE/BzlH,KAAKslH,iBACPtlH,KAAKslH,eAAel1F,WAAY,EAChCpwB,KAAKslH,eAAevsC,OAAQ,EAC5B/4E,KAAKslH,eAAe4uD,QAAS,EAC7Bl0K,KAAKslH,eAAe6uD,aAAc,EAClCn0K,KAAKslH,eAAe8uD,aAAc,EAClCp0K,KAAKslH,eAAep1F,UAAW,EAC/BlwB,KAAKslH,eAAe0uD,cAAe,EAEvC,EAkBEK,eAdF,SAAwBrvD,EAAQp7F,GAO9B,IAAI0qJ,EAAStvD,EAAOQ,eAChB+uD,EAASvvD,EAAOM,eAChBgvD,GAAUA,EAAOE,aAAeD,GAAUA,EAAOC,YAAaxvD,EAAOnzF,QAAQjI,GAAUo7F,EAAOlN,KAAK,QAASluF,EAClH,ocCzFA,MAAA/oB,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACA2zK,EAAA3zK,EAAA,OAaAhB,EAAAA,iBAAA,SACIoB,EACAC,EACAE,EACAG,GAC4B,IAA5BQ,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAMtwB,GAAc,IAAIxB,EAAAyB,aAAcC,KAAI,EAAAkyK,EAAAC,mCAAkCrzK,EAAMG,EAAQQ,KACpF,WAAEwxK,EAAU,IAAE5pJ,UAAe1oB,EAAWuyK,oBAAoBpxK,EAAa,CAAClB,IAAQ,IAAQ+B,MAChG,OAAc,OAAVswK,QAAU,IAAVA,OAAU,EAAVA,EAAY7vK,MACLY,EAAOC,KAAKgvK,EAAW7vK,KAAK,GAAI6vK,EAAW7vK,KAAK,IAAIc,SAAS,SAEjEmlB,CACX,yuBC7BA,MAAA9K,EAAAhe,EAAA,OAEA8wD,EAAA9wD,EAAA,OAEAD,EAAAC,EAAA,OACAie,EAAAje,EAAA,OAEAke,EAAAle,EAAA,OACA6zK,EAAA7zK,EAAA,OAWahB,EAAAA,oBAAqB,EAAAgf,EAAAY,QAAqB,EAAC,EAAAX,EAAApa,WAAU,cAAc,EAAAoa,EAAApa,WAAU,eAE7E7E,EAAAA,mBAAqBA,EAAA80K,mBAAmB10J,KAErDpgB,EAAAA,gBAAA,SAAgCuB,GAC5B,MAAM0wD,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAc4iH,aAAcxzK,EAAK8wD,SACxE,OAAsB,OAAlBJ,EACOjyD,EAAA80K,mBAAmBn1J,OAAOsyC,GAE1B,IAEf,EAYajyD,EAAAA,2BAA4B,EAAAgf,EAAAY,QAA4B,EAAC,EAAAX,EAAA8yC,MAAK,kBAE9D/xD,EAAAA,2BAA6BA,EAAAg1K,0BAA0B50J,KAEpEpgB,EAAAA,uBAAA,SAAuC0yB,GACnC,MAAMu/B,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAc8iH,oBAAqBviJ,EAAQ2/B,SAClF,OAAsB,OAAlBJ,EACOjyD,EAAAg1K,0BAA0Br1J,OAAOsyC,GAEjC,IAEf,EAEAjyD,EAAAA,2BAAA,SAA2CuB,EAAiBW,GACxD,MAAMgzK,EAAQ,CAACzwK,EAAOC,KAAK,uBAAwBnD,EAAK0D,YACxD,OAAOlE,EAAAiE,UAAUmwK,uBAAuBD,EAAOhzK,GAAW,EAC9D,EAWalC,EAAAA,wBAAyB,EAAAgf,EAAAY,QAAyB,EAC3D,EAAAZ,EAAAa,IAAG,kBACH,EAAAb,EAAA2gH,MAAK,GAAI,kBACT,EAAA1gH,EAAA8yC,MAAK,aACL,EAAA9yC,EAAA8yC,MAAK,gBASI/xD,EAAAA,4BAA6B,EAAAgf,EAAAY,QAA6B,EACnE,EAAAZ,EAAAg/G,KAAI,UACJ,EAAAh/G,EAAAknC,KAAsBlmD,EAAAo1K,wBAAwB,EAAAp2J,EAAA6+G,QAAO79H,EAAAo1K,uBAAuBh1J,MAAO,mBAW1EpgB,EAAAA,mCAAoC,EAAAgf,EAAAY,QAAoC,EACjF,EAAAX,EAAA2T,KAAI,6BACJ,EAAA5T,EAAAg/G,KAAI,UACJh+H,EAAAq1K,2BAA2Bz+C,UAAU,uBAIzC52H,EAAAA,qBAAA,SAAqC0yB,GACjC,MAAM4iJ,EAAoBt1K,EAAAu1K,kCAAkC51J,OAAO+S,EAAQ7uB,MAAMyxK,kBACjF,OAAOA,EAAkBE,cAAc5nK,MAAM,EAAG0nK,EAAkBluG,MACtE,EAGApnE,EAAAA,wBAAA,SACIoB,EACAq0K,EACAC,EACAn6I,EACA86D,4CAEA,GAAgC,IAA5Bo/E,EAAUr6C,cACV,MAAO,CACHp7G,OAAQ,IAAIjf,EAAAiE,UAAUywK,EAAUE,eAChC11J,SAAUw1J,EAAUx1J,SACpBC,WAAYu1J,EAAUv1J,YAI9B,IAAIhe,EAAYnB,EAAAiE,UAAUigF,QAE1B,GAAgC,IAA5BwwF,EAAUr6C,cACVl5H,EAAYm0F,MACT,CACH,MAAMu/E,EAAeH,EAAUr6C,cAAgB,IAC/C,GAAIs6C,EAAc3zK,QAAU6zK,EACxB,MAAM,IAAI12J,EAAA22J,iCAEd3zK,EAAYwzK,EAAcE,GAAc51J,OAG5C,MAAMk1J,QAAc,EAAAL,EAAAiB,aAAYL,EAAUE,cAAeD,EAAen6I,EAAiBn6B,GAGzF,MAAO,CAAE4e,OAFMjf,EAAAiE,UAAUmwK,uBAAuBD,EAAOhzK,GAAW,GAEjD+d,SAAUw1J,EAAUx1J,SAAUC,WAAYu1J,EAAUv1J,WACzE,uCCzII61J,aACJ,SAASnK,EAAgB98J,EAAK5E,EAAK9G,GAA4L,OAAnL8G,EAC5C,SAAwB6yG,GAAO,IAAI7yG,EACnC,SAAsB/J,EAAOwuC,GAAQ,GAAqB,kBAAVxuC,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI61K,EAAO71K,EAAMqiC,OAAOi5G,aAAc,QAAaz5I,IAATg0K,EAAoB,CAAE,IAAIlkJ,EAAMkkJ,EAAKh/J,KAAK7W,EAAOwuC,GAAQ,WAAY,GAAmB,kBAAR7c,EAAkB,OAAOA,EAAK,MAAM,IAAIqN,UAAU,+CAAiD,CAAE,OAAiB,WAATwP,EAAoB58B,OAASsd,QAAQlvB,EAAQ,CAD/U81K,CAAal5D,EAAK,UAAW,MAAsB,kBAAR7yG,EAAmBA,EAAM6H,OAAO7H,EAAM,CADxEgsK,CAAehsK,MAAiB4E,EAAO5L,OAAOC,eAAe2L,EAAK5E,EAAK,CAAE9G,MAAOA,EAAOw5B,YAAY,EAAM+4B,cAAc,EAAMD,UAAU,IAAkB5mD,EAAI5E,GAAO9G,EAAgB0L,CAAK,CAG3O,IAAIshB,EAAWpvB,EAAQ,OACnBm1K,EAAe3zI,OAAO,eACtB4zI,EAAc5zI,OAAO,cACrB6zI,EAAS7zI,OAAO,SAChB8zI,EAAS9zI,OAAO,SAChB+zI,EAAe/zI,OAAO,eACtBg0I,EAAiBh0I,OAAO,iBACxBi0I,EAAUj0I,OAAO,UACrB,SAASk0I,EAAiBtzK,EAAOk3B,GAC/B,MAAO,CACLl3B,MAAOA,EACPk3B,KAAMA,EAEV,CACA,SAASq8I,EAAeC,GACtB,IAAIpyK,EAAUoyK,EAAKT,GACnB,GAAgB,OAAZ3xK,EAAkB,CACpB,IAAIX,EAAO+yK,EAAKH,GAASl9H,OAIZ,OAAT11C,IACF+yK,EAAKL,GAAgB,KACrBK,EAAKT,GAAgB,KACrBS,EAAKR,GAAe,KACpB5xK,EAAQkyK,EAAiB7yK,GAAM,IAEnC,CACF,CACA,SAASgzK,EAAWD,GAGlB7lJ,EAAQomE,SAASw/E,EAAgBC,EACnC,CAYA,IAAIE,EAAyB5zK,OAAOyhF,gBAAe,WAAa,IAC5DoyF,EAAuC7zK,OAAOknG,gBAmD/CwhE,EAnD+DmK,EAAwB,CACxF,UAAI7wD,GACF,OAAOhlH,KAAKu2K,EACd,EACA9+I,KAAM,WACJ,IAAIs3G,EAAQ/uI,KAGR6iB,EAAQ7iB,KAAKm2K,GACjB,GAAc,OAAVtzJ,EACF,OAAOxe,QAAQkkB,OAAO1F,GAExB,GAAI7iB,KAAKo2K,GACP,OAAO/xK,QAAQC,QAAQkyK,OAAiB10K,GAAW,IAErD,GAAI9B,KAAKu2K,GAASnmJ,UAKhB,OAAO,IAAI/rB,SAAQ,SAAUC,EAASikB,GACpCsI,EAAQomE,UAAS,WACX83C,EAAMonC,GACR5tJ,EAAOwmH,EAAMonC,IAEb7xK,EAAQkyK,OAAiB10K,GAAW,GAExC,GACF,IAOF,IACIunB,EADAytJ,EAAc92K,KAAKq2K,GAEvB,GAAIS,EACFztJ,EAAU,IAAIhlB,QAlDpB,SAAqByyK,EAAaJ,GAChC,OAAO,SAAUpyK,EAASikB,GACxBuuJ,EAAY9tK,MAAK,WACX0tK,EAAKN,GACP9xK,EAAQkyK,OAAiB10K,GAAW,IAGtC40K,EAAKJ,GAAgBhyK,EAASikB,EAChC,GAAGA,EACL,CACF,CAwC4BwuJ,CAAYD,EAAa92K,WAC1C,CAGL,IAAI2D,EAAO3D,KAAKu2K,GAASl9H,OACzB,GAAa,OAAT11C,EACF,OAAOU,QAAQC,QAAQkyK,EAAiB7yK,GAAM,IAEhD0lB,EAAU,IAAIhlB,QAAQrE,KAAKs2K,GAC7B,CAEA,OADAt2K,KAAKq2K,GAAgBhtJ,EACdA,CACT,GACwCiZ,OAAO00I,eAAe,WAC9D,OAAOh3K,IACT,IAAI0rK,EAAgBmK,EAAuB,UAAU,WACnD,IAAIoB,EAASj3K,KAIb,OAAO,IAAIqE,SAAQ,SAAUC,EAASikB,GACpC0uJ,EAAOV,GAAS1kJ,QAAQ,MAAM,SAAUjI,GAClCA,EACFrB,EAAOqB,GAGTtlB,EAAQkyK,OAAiB10K,GAAW,GACtC,GACF,GACF,IAAI+zK,GAAwBe,GA4D5B72K,EAAOD,QA3DiC,SAA2CklH,GACjF,IAAIkyD,EACA7sF,EAAWrnF,OAAO0G,OAAOmtK,GAA4DnL,EAArBwL,EAAiB,CAAC,EAAmCX,EAAS,CAChIrzK,MAAO8hH,EACPxvD,UAAU,IACRk2G,EAAgBwL,EAAgBjB,EAAc,CAChD/yK,MAAO,KACPsyD,UAAU,IACRk2G,EAAgBwL,EAAgBhB,EAAa,CAC/ChzK,MAAO,KACPsyD,UAAU,IACRk2G,EAAgBwL,EAAgBf,EAAQ,CAC1CjzK,MAAO,KACPsyD,UAAU,IACRk2G,EAAgBwL,EAAgBd,EAAQ,CAC1ClzK,MAAO8hH,EAAOQ,eAAeC,WAC7BjwD,UAAU,IACRk2G,EAAgBwL,EAAgBZ,EAAgB,CAClDpzK,MAAO,SAAeoB,EAASikB,GAC7B,IAAI5kB,EAAO0mF,EAASksF,GAASl9H,OACzB11C,GACF0mF,EAASgsF,GAAgB,KACzBhsF,EAAS4rF,GAAgB,KACzB5rF,EAAS6rF,GAAe,KACxB5xK,EAAQkyK,EAAiB7yK,GAAM,MAE/B0mF,EAAS4rF,GAAgB3xK,EACzB+lF,EAAS6rF,GAAe3tJ,EAE5B,EACAitC,UAAU,IACR0hH,IA0BJ,OAzBA7sF,EAASgsF,GAAgB,KACzBnmJ,EAAS80F,GAAQ,SAAUp7F,GACzB,GAAIA,GAAoB,+BAAbA,EAAI8kC,KAAuC,CACpD,IAAInmC,EAAS8hE,EAAS6rF,GAUtB,OAPe,OAAX3tJ,IACF8hE,EAASgsF,GAAgB,KACzBhsF,EAAS4rF,GAAgB,KACzB5rF,EAAS6rF,GAAe,KACxB3tJ,EAAOqB,SAETygE,EAAS8rF,GAAUvsJ,EAErB,CACA,IAAItlB,EAAU+lF,EAAS4rF,GACP,OAAZ3xK,IACF+lF,EAASgsF,GAAgB,KACzBhsF,EAAS4rF,GAAgB,KACzB5rF,EAAS6rF,GAAe,KACxB5xK,EAAQkyK,OAAiB10K,GAAW,KAEtCuoF,EAAS+rF,IAAU,CACrB,IACApxD,EAAOhN,GAAG,WAAY2+D,EAAW5wJ,KAAK,KAAMskE,IACrCA,CACT,0BC3JA,IAAI8sF,EAAW,CACbC,6BAA8B,SAASC,EAAO3mK,EAAG6E,GAG/C,IAAI+hK,EAAe,CAAC,EAIhBC,EAAQ,CAAC,EACbA,EAAM7mK,GAAK,EAMX,IAGI8mK,EACAjiI,EAAGthC,EACHwjK,EACAC,EAEAC,EACAC,EATA58G,EAAOm8G,EAASU,cAAcC,OAWlC,IAVA98G,EAAK1zD,KAAKoJ,EAAG,IAULsqD,EAAK+8G,SAaX,IAAK9jK,KATLshC,GADAiiI,EAAUx8G,EAAK3lD,OACHnS,MACZu0K,EAAiBD,EAAQQ,KAGzBN,EAAiBL,EAAM9hI,IAAM,CAAC,EAMxBmiI,EAAelhK,eAAevC,KAOhC0jK,EAAgCF,EALpBC,EAAezjK,GAW3B2jK,EAAiBL,EAAMtjK,IACY,qBAAbsjK,EAAMtjK,IACT2jK,EAAiBD,KAClCJ,EAAMtjK,GAAK0jK,EACX38G,EAAK1zD,KAAK2M,EAAG0jK,GACbL,EAAarjK,GAAKshC,IAM1B,GAAiB,qBAANhgC,GAAyC,qBAAbgiK,EAAMhiK,GAAoB,CAC/D,IAAI9U,EAAM,CAAC,8BAA+BiQ,EAAG,OAAQ6E,EAAG,KAAK2nD,KAAK,IAClE,MAAM,IAAIr5D,MAAMpD,EAClB,CAEA,OAAO62K,CACT,EAEAW,4CAA6C,SAASX,EAAc/hK,GAIlE,IAHA,IAAI2iK,EAAQ,GACR3iI,EAAIhgC,EAEDggC,GACL2iI,EAAM5wK,KAAKiuC,GACG+hI,EAAa/hI,GAC3BA,EAAI+hI,EAAa/hI,GAGnB,OADA2iI,EAAMtqK,UACCsqK,CACT,EAEAC,UAAW,SAASd,EAAO3mK,EAAG6E,GAC5B,IAAI+hK,EAAeH,EAASC,6BAA6BC,EAAO3mK,EAAG6E,GACnE,OAAO4hK,EAASc,4CACdX,EAAc/hK,EAClB,EAKAsiK,cAAe,CACbC,KAAM,SAAU79I,GACd,IAEIjwB,EAFAmiF,EAAIgrF,EAASU,cACbt7J,EAAI,CAAC,EAGT,IAAKvS,KADLiwB,EAAOA,GAAQ,CAAC,EACJkyD,EACNA,EAAE31E,eAAexM,KACnBuS,EAAEvS,GAAOmiF,EAAEniF,IAKf,OAFAuS,EAAE67J,MAAQ,GACV77J,EAAE87J,OAASp+I,EAAKo+I,QAAUlsF,EAAEmsF,eACrB/7J,CACT,EAEA+7J,eAAgB,SAAU7nK,EAAGS,GAC3B,OAAOT,EAAEunK,KAAO9mK,EAAE8mK,IACpB,EAMA1wK,KAAM,SAAUpE,EAAO80K,GACrB,IAAIzkJ,EAAO,CAACrwB,MAAOA,EAAO80K,KAAMA,GAChCh4K,KAAKo4K,MAAM9wK,KAAKisB,GAChBvzB,KAAKo4K,MAAMv7I,KAAK78B,KAAKq4K,OACvB,EAKAhjK,IAAK,WACH,OAAOrV,KAAKo4K,MAAMrqK,OACpB,EAEAgqK,MAAO,WACL,OAA6B,IAAtB/3K,KAAKo4K,MAAMv2K,MACpB,IAOF9B,EAAOD,QAAUq3K,0GClKnB,MAAArkJ,EAAAhyB,EAAA,OACAiyB,EAAAjyB,EAAA,OAGahB,EAAAA,gBAAkB,UAC7B,MAAMkzB,QAAiB,EAAAD,EAAAE,oBAAmBrR,EAAQsR,cAE5C,WAAEqlJ,EAAU,aAAEC,GAAiB52J,EAAQwQ,QAC7C,IAAKmmJ,EACH,MAAM,IAAI10K,MAAM,+DAElB,IAAK20K,EACH,MAAM,IAAI30K,MAAM,yEAGlB,IACE,MAAM4vB,GAAU,EAAAX,EAAAY,sBAAqB9R,EAAQwQ,SACvCuB,QAAiBX,EAASylJ,gBAAgBhlJ,GAChD7R,EAAQiS,WAAWF,GACnB,MAAO9Q,GACP+F,QAAQ/F,MAAM,kDAAmDA,GACjEjB,EAAQkS,6CCnBZ,MAAM,QAAE2lD,EAAO,QAAErD,EAAO,WAAEsD,EAAU,KAAEZ,GAASh4E,EAAQ,QAEjD,QAAEg7E,EAAO,QAAE3iD,EAAO,WAAE4iD,EAAU,OAAEC,GAAWl7E,EAAQ,OAEnD64E,EAAY74E,EAAQ,OAE1Bf,EAAOD,QAAQ25E,QAAUA,EACzB15E,EAAOD,QAAQs2E,QAAUA,EACzBr2E,EAAOD,QAAQ45E,WAAaA,EAC5B35E,EAAOD,QAAQg5E,KAAOA,EACtB/4E,EAAOD,QAAQg8E,QAAUA,EACzB/7E,EAAOD,QAAQq5B,QAAUA,EACzBp5B,EAAOD,QAAQi8E,WAAaA,EAC5Bh8E,EAAOD,QAAQk8E,OAASA,EACxBj8E,EAAOD,QAAQ65E,UAAYA,mHCjB3B,MAAA5mD,EAAAjyB,EAAA,OAEAgyB,EAAAhyB,EAAA,OACAgJ,EAAAhJ,EAAA,OAEahB,EAAAA,yBAA2B,UACtC,MAAM,YAAEozB,GAAgBtR,EAClBoR,QAAiB,EAAAD,EAAAE,oBAAmBC,IAE1C,EAAAppB,EAAA4uK,4BAA2B92J,EAAQwQ,SAEnC,IACE,MAAMqB,GAAU,EAAAX,EAAAY,sBAAqB9R,EAAQwQ,SACvCuB,QAAiBX,EAAS2lJ,yBAAyBllJ,GACzD7R,EAAQiS,WAAWF,GACnB,MAAO9Q,GACP+F,QAAQ/F,MAAM,oDAAqDA,GACnEjB,EAAQkS,qCCjBZ,SAAAvX,GAAA,aCGO,SAAShL,EAAUgL,GACxB,OAAO1L,EAAcyD,KAAKiI,EAC5B,CACA,MAAM1L,EAAgB,aAMf,SAASN,EAASgM,GACvB,OAAO2pB,EAAa5xB,KAAKiI,EAC3B,CACA,MAAM2pB,EAAe,gDAUd,SAASl7B,EAAauR,EAAO1L,GAClC,MAAMN,EAAM4e,OAAO8uF,WAAW1hG,GACxB2pB,EAAMr0B,OAAOtB,GACbvF,EAAIyF,EAAyB8L,GAC7Bg5B,EAAI9kC,EAAyBy1B,GACnC,GAAIl7B,IAAMuqC,EACR,OAAO,EAET,IAAI,IAAA1kC,GAAQ+nK,OAAiB,CAK3B,MAAM/nK,EAAiB,GACvB,IAAKU,EAAUgL,IAAUg5B,EAAE1zC,QAAUgP,GAAkB7F,EAAEnC,WAAW0sC,EAAEzsC,UAAU,EAAG+H,IACjF,OAAO,CAEV,CACD,OAAO,CACT,CACU,IAAC0kC,EAAkC,SAAUh5B,GAKrD,OAJAA,EAA8Bs8J,UAAI,YAClCt8J,EAA6BqvD,SAAI,WACjCrvD,EAAqCu8J,iBAAI,mBACzCv8J,EAAmCw8J,eAAI,iBAChCx8J,CACT,CAN6C,CAM3C,CAAC,GAOI,SAASnL,EAAsBmL,GACpC,GAAIvR,EAAauR,EAAO,CACtBq8J,QAAA,IAEA,OAEF,GAAIrnK,EAAUgL,GACZ,OAAOg5B,EAAmBujI,iBAE5B,MAAMjoK,EAAMse,OAAO8uF,WAAW1hG,GAC9B,OAAK4S,OAAOzT,SAAS7K,GAGT,IAARA,EACK0kC,EAAmBsjI,UAErBtjI,EAAmBwjI,eALjBxjI,EAAmBq2B,QAM9B,CAyBO,SAASn7D,EAAyB8L,GACvC,OAAOA,EAENvP,QAAQ69C,EAAwB,IAGhC79C,QAAQwE,EAAW,IAGnBxE,QAAQuI,EAAsB,IAG9BvI,QAAQ0D,EAA+B,GAC1C,CACA,MAAMm6C,EAAyB,gBACzBn6C,EAAgC,WAChCc,EAAY,KACZ+D,EAAuB,MChHtB,MAAMic,EAIXwnJ,kBAAA,EACA/qK,WAAAA,CAAYsO,GACV,IAAKhM,EAASgM,GACZ,MAAM,IAAI1Y,MAAM,2BAA2B0Y,OAE7Cvc,KAAKkD,MAAQqZ,CACd,CAaD5J,OAAAA,GACE,MAAM4J,EAAenL,EAAsBpR,KAAKkD,OAGhD,QAAI,IAAAqZ,GAA8BA,IAAiBg5B,EAAmBwjI,eACpE,OAAO5pJ,OAAO8uF,WAAWj+G,KAAKkD,OAIhC,GAAIqO,EAAUvR,KAAKkD,OACjB,OAAOwC,OAAO1F,KAAKkD,OAIrB,MAAM,IAAIW,MAAM,+CAA+C7D,KAAKkD,gBAAgBqZ,gBAA2B4S,OAAO8uF,WAAWj+G,KAAKkD,SACvI,CAKDuB,QAAAA,GACE,OAAOzE,KAAKkD,KACb,EAUI,SAASqT,EAAiBgG,GAE/B,OAAOA,GAA0B,iBAAVA,IAAA,IAAsBA,EAAMy8J,mBAAA,CACrD,CC7DO,SAAS/nK,EAAoBsL,GAClC,OAAO,IAAIiV,EAAejV,EAC5B,CCgBA,SAASrL,EAAYqL,EAAShL,EAAKV,EAAON,GACxC,OAAIpG,MAAMi3B,QAAQvwB,GACTN,EAAQuG,KAAKyF,EAAShL,EA4BjC,SAAqBgL,EAAOhL,GAC1B,IAAK,IAAIV,EAAI,EAAGA,EAAI0L,EAAM1a,OAAQgP,IAChC0L,EAAM1L,GAAKK,EAAYqL,EAAO1K,OAAOhB,GAAI0L,EAAM1L,GAAIU,GAErD,OAAOgL,CACT,CALA,CA5BkD1L,EAAON,IAEnDM,GAA0B,iBAAVA,IAAuB0F,EAAiB1F,GAGnDN,EAAQuG,KAAKyF,EAAShL,EAQjC,SAAsBgL,EAAQhL,GAC5B,IAAK,MAAMV,KAAO7N,OAAOoc,KAAK7C,GAAS,CACrC,MAAMhM,EAAQW,EAAYqL,EAAQ1L,EAAK0L,EAAO1L,GAAMU,QAAA,IAChDhB,EACFgM,EAAO1L,GAAON,SAEPgM,EAAO1L,EAEjB,CACD,OAAO0L,CACT,CAVA,CARmD1L,EAAON,IAEjDA,EAAQuG,KAAKyF,EAAShL,EAAKV,EACpC,CCwOA,SAAS8wB,EAAMplB,GACb,OAAOA,GAAQ8uE,GAAY9uE,GAAQi0B,GAAYj0B,GAAQ8jC,GAAkB9jC,GAAQunC,GAAkBvnC,GAAQ+vE,GAAkB/vE,GAAQnD,CACvI,CACA,SAASu3B,EAAQp0B,GACf,OAAOA,GAAQ8uE,GAAY9uE,GAAQi0B,CACrC,CAOO,SAASv8B,EAAYsI,EAAGhL,GAC7B,OAAIgL,IAAMhL,IAGNpH,MAAMi3B,QAAQ7kB,IAAMpS,MAAMi3B,QAAQ7vB,GAC7BgL,EAAE1a,SAAW0P,EAAE1P,QAAU0a,EAAEggF,OAAM,CAAChgF,EAAM1L,IAAUoD,EAAYsI,EAAMhL,EAAEV,SAE3EyH,EAASiE,KAAMjE,EAAS/G,KACb,IAAI,IAAIqZ,IAAI,IAAI5nB,OAAOoc,KAAK7C,MAAOvZ,OAAOoc,KAAK7N,MAChDgrF,OAAM1rF,GAAOoD,EAAYsI,EAAE1L,GAAMU,EAAEV,MAGnD,CACA,SAASyH,EAASiE,GAChB,MAAwB,iBAAVA,GAAgC,OAAVA,CACtC,CAGA,MAAMg0B,EAAmB,CACvB,IAAK,IACL,KAAM,KACN,IAAK,IACLr/B,EAAG,KACH25C,EAAG,KACHt6C,EAAG,KACHM,EAAG,KACH0L,EAAG,MAGC08J,EAAgB,GAChBxoI,EAAmB,IACnBhF,EAAmB,IACnBygD,EAAqB,GACrBl7E,EAAqB,GACrB+zC,EAAY,GACZinC,EAAc,GACd9hC,EAAU,EACVt5C,EAAa,GACbU,EAAkB,GAClBmuB,EAAW,GACXsrD,EAAY,GACZM,EAAW,GACXE,EAAU,GACV/6C,EAAW,GACXE,EAAY,GACZy7C,EAAU,GACVnsC,EAAY,GACLK,EAAiB,GACjBisC,EAAiB,GACjB55E,EAAiB,GACjB+5E,EAAiB,IACjB3oC,EAAiB,GACjB1qC,EAAiB,IC9TxBzI,EAAe,gDAA+C4L,EAAA28J,eAAA1nJ,EAAAjV,EAAA48J,mBAAA5jI,EAAAh5B,EAAAlG,ONJ7D,SAAgBkG,GAErB,MAAM,IAAI1Y,MAAM,uOAClB,EMCoE0Y,EAAA68J,sBAAAhoK,EAAAmL,EAAAnB,UAAA7J,EAAAgL,EAAAy8J,iBAAAziK,EAAAgG,EAAA88J,SAAA9oK,EAAAgM,EAAA+8J,aAAAtuK,EAAAuR,EAAA4V,MDgB7D,SAAe5V,EAAMhL,GAC1B,IAAIV,EAAcjP,UAAUC,OAAS,QAAK,IAAAD,UAAU,GAAmBA,UAAU,GAAKqP,EAClFV,EAAI,EACR,MAAM21B,EAAQ90B,IAGd,OAqKA,SAAqBmL,GACnB,QAAI,IAAAA,EACF,MAAM,IAAIg9J,YAAY,uBAAuBpuF,MAEhD,CAJD,CAvKYjlD,GAiLZ,WACE,GAAI31B,EAAIgM,EAAK1a,OACX,MAAM,IAAI03K,YAAY,yBAAyBpuF,MAElD,CAJD,GA/KO55E,EDnBF,SAAgBgL,EAAMhL,GAC3B,OAAOL,EAAY,CACjB,GAAIqL,GACH,GAAIA,EAAMhL,EACf,CAJO,CCmBmB20B,EAAO30B,GAAW20B,EAC1C,SAASl7B,IACP,GAAIuR,EAAKzL,WAAWP,KAAOkgC,EAAkB,CAC3ClgC,IACAs6C,IACA,MAAMt5C,EAAS,CAAC,EAChB,IAAIV,GAAA,EACJ,KAAON,EAAIgM,EAAK1a,QAAU0a,EAAKzL,WAAWP,KAAOk7B,GAAkB,CAC5D56B,EAIHA,GAAA,GAHAW,IACAq5C,KAIF,MAAMtuC,EAAQhM,EACR21B,EAAMx1B,IACZ,QAAI,IAAAw1B,EAEF,YADA5tB,IAGFuyC,IACAt1C,IACA,MAAMvK,EAAQoG,IACd,QAAI,IAAApG,EAEF,YADAoO,IAKEpW,OAAO4H,UAAU4L,eAAeM,KAAKvF,EAAQ20B,KAASjyB,EAAYjJ,EAAOuG,EAAO20B,KAGlFma,EAAkBna,EAAK3pB,EAAQ,GAEjChL,EAAO20B,GAAOl7B,CACf,CAKD,OAJIuR,EAAKzL,WAAWP,KAAOk7B,GAiK/B,WACE,MAAM,IAAI8tI,YAAY,mDAAmDpuF,MAC1E,CAFD,GA9JI56E,IACOgB,CACR,CACF,CACD,SAASgkC,IACP,GAAIh5B,EAAKzL,WAAWP,KAAO27E,EAAoB,CAC7C37E,IACAs6C,IACA,MAAMt5C,EAAQ,GACd,IAAIV,GAAA,EACJ,KAAON,EAAIgM,EAAK1a,QAAU0a,EAAKzL,WAAWP,KAAOS,GAAoB,CAC9DH,EAGHA,GAAA,EAFAW,IAIF,MAAM+K,EAAQnL,IACdogB,EAAgBjV,GAChBhL,EAAMjK,KAAKiV,EACZ,CAKD,OAJIA,EAAKzL,WAAWP,KAAOS,GA6I/B,WACE,MAAM,IAAIuoK,YAAY,2CAA2CpuF,MAClE,CAFD,GA1II56E,IACOgB,CACR,CACF,CACD,SAASH,IACPy5C,IACA,MAAMt5C,EAAQb,KAkDhB,WACE,MAAMa,EAAQhB,EAKd,GAJIgM,EAAKzL,WAAWP,KAAOw6E,IACzBx6E,IACAgG,EAAYhF,IAEVgL,EAAKzL,WAAWP,KAAO86E,EACzB96E,SACK,IAgHa21B,EAhHM3pB,EAAKzL,WAAWP,KAiH7Bg7E,GAAWrlD,GAAQsK,EA/G9B,IADAjgC,IACOogC,EAAQp0B,EAAKzL,WAAWP,KAC7BA,IA6GR,IAAwB21B,EA1GpB,GAAI3pB,EAAKzL,WAAWP,KAAO47E,EAGzB,IAFA57E,IACAgG,EAAYhF,GACLo/B,EAAQp0B,EAAKzL,WAAWP,KAC7BA,IAGJ,GAAIgM,EAAKzL,WAAWP,KAAOk8E,GAAkBlwE,EAAKzL,WAAWP,KAAOmC,EAMlE,IALAnC,IACIgM,EAAKzL,WAAWP,KAAOw6E,GAAaxuE,EAAKzL,WAAWP,KAAOkvB,GAC7DlvB,IAEFgG,EAAYhF,GACLo/B,EAAQp0B,EAAKzL,WAAWP,KAC7BA,IAGJ,GAAIA,EAAIgB,EACN,OAAOV,EAAY0L,EAAK7O,MAAM6D,EAAOhB,GAExC,CAlCD,IAlDmDvF,KAAiBuqC,KAAgB9kC,EAAa,YAAiBA,EAAa,aAAmBA,EAAa,OAAQ,MAErK,OADAo6C,IACOt5C,CACR,CACD,SAASd,EAAac,EAAMV,GAC1B,GAAI0L,EAAK7O,MAAM6C,EAAGA,EAAIgB,EAAK1P,UAAY0P,EAErC,OADAhB,GAAKgB,EAAK1P,OACHgP,CAEV,CACD,SAASg6C,IACP,MAsJkBt5C,EAtJEgL,EAAKzL,WAAWP,MAuJtBw0C,GAAaxzC,IAASy6E,GAAez6E,IAAS24C,GAAW34C,IAASX,GAtJ9EL,IAqJN,IAAsBgB,CAnJnB,CACD,SAASb,IACP,GAAI6L,EAAKzL,WAAWP,KAAOe,EAAiB,CAC1Cf,IACA,IAAIM,EAAS,GACb,KAAON,EAAIgM,EAAK1a,QAAU0a,EAAKzL,WAAWP,KAAOe,GAAiB,CAChE,GAAIiL,EAAKzL,WAAWP,KAAO0oK,EAAe,CACxC,MAAM1nK,EAAOgL,EAAKhM,EAAI,GAChB21B,EAAaqK,EAAiBh/B,QAAA,IAChC20B,GACFr1B,GAAUq1B,EACV31B,KACkB,MAATgB,EACLowB,EAAMplB,EAAKzL,WAAWP,EAAI,KAAOoxB,EAAMplB,EAAKzL,WAAWP,EAAI,KAAOoxB,EAAMplB,EAAKzL,WAAWP,EAAI,KAAOoxB,EAAMplB,EAAKzL,WAAWP,EAAI,KAC/HM,GAAUgB,OAAO4oB,aAAatL,OAAOhkB,SAASoR,EAAK7O,MAAM6C,EAAI,EAAGA,EAAI,GAAI,KACxEA,GAAK,GAELI,EAA6BJ,GAG/BuzC,EAA4BvzC,EAExC,MAyIuCgB,EAxIFgL,EAAKzL,WAAWP,KAyIpC,IAAQgB,GAAQ,QAxIrBV,GAAU0L,EAAKhM,GAEf+7E,EAAsB/vE,EAAKhM,IAG/BA,GACD,CAGD,OAuEJ,WACE,GAAIgM,EAAKzL,WAAWP,KAAOe,EACzB,MAAM,IAAIioK,YAAY,8BAA8BpuF,MAEvD,CAJD,GAxEI56E,IACOM,CACR,CA6HE,IAAgCU,CA5HpC,CAoCD,SAASC,IACP,GAAI+K,EAAKzL,WAAWP,KAAOmgC,EACzB,MAAM,IAAI6oI,YAAY,kCAAkCpuF,OAE1D56E,GACD,CACD,SAASgF,IACP,GAAIgH,EAAKzL,WAAWP,KAAOyvC,EACzB,MAAM,IAAIu5H,YAAY,0CAA0CpuF,OAElE56E,GACD,CAMD,SAASihB,EAAgBjV,GACvB,QAAI,IAAAA,EACF,MAAM,IAAIg9J,YAAY,uBAAuBpuF,MAEhD,CAMD,SAAS50E,EAAYhF,GACnB,IAAKo/B,EAAQp0B,EAAKzL,WAAWP,IAAK,CAChC,MAAMM,EAAW0L,EAAK7O,MAAM6D,EAAOhB,GACnC,MAAM,IAAIgpK,YAAY,mBAAmB1oK,yBAAgCs6E,MAC1E,CACF,CAMD,SAAS7yE,IACP,MAAM,IAAIihK,YAAY,8BAA8BpuF,MACrD,CACD,SAAS9qC,EAAkB9jC,EAAKhL,GAC9B,MAAM,IAAIgoK,YAAY,kBAAkBh9J,8BAAgChL,IACzE,CAOD,SAAS+6E,EAAsB/vE,GAC7B,MAAM,IAAIg9J,YAAY,sBAAsBh9J,MAAS0uC,MACtD,CACD,SAASnH,EAA4BvyC,GACnC,MAAMV,EAAQ0L,EAAK7O,MAAM6D,EAAOA,EAAQ,GACxC,MAAM,IAAIgoK,YAAY,6BAA6B1oK,MAAUo6C,MAC9D,CACD,SAAS7xC,IACP,MAAM,IAAImgK,YAAY,mCAAmCtuH,MAC1D,CACD,SAASt6C,EAA6BY,GACpC,MAAMV,EAAQ0L,EAAK7O,MAAM6D,EAAOA,EAAQ,GACxC,MAAM,IAAIgoK,YAAY,8BAA8B1oK,MAAUo6C,MAC/D,CAGD,SAASA,IACP,MAAO,eAAe16C,GACvB,CAID,SAAS46E,IACP,MAAO,GAHA56E,EAAIgM,EAAK1a,OAAS,YAAY0a,EAAKhM,MAAQ,8BAG/B06C,KACpB,CACH,EC1PoE1uC,EAAAi9J,oBAAAvoK,EAAAsL,EAAAk9J,qBHH7D,SAA8Bl9J,GACnC,OAAOhL,EAAUgL,GAAS7W,OAAO6W,GAAS4S,OAAO8uF,WAAW1hG,EAC9D,EGCoEA,EAAAm9J,WAL7D,SAAoBn9J,EAAKhL,GAC9B,MAAwB,iBAAVA,GAAsBZ,EAAa2D,KAAK/C,GAAS,IAAIsb,KAAKtb,GAASA,CACnF,EAGoEgL,EAAAqR,UC4B7D,SAASrR,EAAUhL,EAAOV,EAAUq1B,EAAOl7B,GAChD,MAAMuqC,EAuHR,SAAsBh5B,GACpB,MAAqB,iBAAVA,EACF,IAAIo1C,OAAOp1C,GAEC,iBAAVA,GAAgC,KAAVA,EACxBA,OADT,CAIF,CARA,CAvHqC2pB,GAInC,OAAO90B,EAHmC,mBAAbP,EAA0BA,EAASiG,KAAK,CACnE,GAAIvF,GACH,GAAIA,GAASA,EACqB,IAKrC,SAASH,EAAeG,EAAOs5C,GAC7B,GAAI1gD,MAAMi3B,QAAQp2B,GAAqB,CACrC,MAAMuR,EAAcvR,EAAmB8vD,MAAKv+C,GAAQA,EAAKjI,KAAK/C,KAC9D,GAAIgL,EAAa,CACf,MAAM1L,EAAM0L,EAAYqR,UAAUrc,GAClC,GAAmB,iBAARV,IAAqBN,EAASM,GACvC,MAAM,IAAIhN,MAAM,0GAA0GgN,MAE5H,OAAOA,CACR,CACF,CAGD,MAAqB,kBAAVU,GAAwC,iBAAVA,GAAuC,iBAAVA,GAAgC,OAAVA,GAAkBA,aAAiBsb,MAAQtb,aAAiBsrH,SAAWtrH,aAAiB4d,QAAU5d,aAAiBM,OACtM8b,KAAKC,UAAUrc,GAKpBA,GAAOynK,kBAKU,iBAAVznK,EAJFA,EAAM9M,WASX0F,MAAMi3B,QAAQ7vB,GAcpB,SAAwBgL,EAAOhL,GAC7B,GAAqB,IAAjBgL,EAAM1a,OACR,MAAO,KAET,MAAM0O,EAAcglC,EAAgBhkC,EAASgkC,OAAA,EAC7C,IAAIrP,EAAMqP,EAAgB,MAAQ,IAClC,IAAK,IAAIhkC,EAAI,EAAGA,EAAIgL,EAAM1a,OAAQ0P,IAAK,CACrC,MAAMvG,EAA2B,mBAAb6F,EAA0BA,EAASiG,KAAKyF,EAAO1K,OAAON,GAAIgL,EAAMhL,IAAMgL,EAAMhL,GAC5FgkC,IACFrP,GAAO31B,GAGP21B,QAAA,IADSl7B,GAAwC,mBAATA,EACjCoG,EAAepG,EAAMuF,GAErB,OAELgB,EAAIgL,EAAM1a,OAAS,IACrBqkC,GAAOqP,EAAgB,MAAQ,IAElC,CAED,OADArP,GAAOqP,EAAgB,KAAKhkC,KAAY,IACjC20B,CACR,CAtBD,CAb0B30B,EAAOs5C,GAI3Bt5C,GAA0B,iBAAVA,EAoCtB,SAAyBA,EAAQhB,GAC/B,GAA6B,mBAAlBgB,EAAOoN,OAChB,OAAOpC,EAAUhL,EAAOoN,SAAU9N,EAAUq1B,OAAA,GAE9C,MAAMl7B,EAAOb,MAAMi3B,QAAQvwB,GAAYA,EAASnI,IAAImJ,QAAU7O,OAAOoc,KAAK7N,GAC1E,GAAoB,IAAhBvG,EAAKnJ,OACP,MAAO,KAET,MAAMgpD,EAActV,EAAgBhlC,EAASglC,OAAA,EAC7C,IAAI7kC,GAAA,EACAc,EAAM+jC,EAAgB,MAAQ,IAClC,IAAK,MAAMh5B,KAAOvR,EAAM,CACtB,MAAMuF,EAA4B,mBAAbM,EAA0BA,EAASiG,KAAKvF,EAAQgL,EAAKhL,EAAOgL,IAAQhL,EAAOgL,GAChG,GAAI9L,EAAgB8L,EAAKhM,GAAQ,CAC3BG,EACFA,GAAA,EAEAc,GAAO+jC,EAAgB,MAAQ,IAEjC,MAAMhkC,EAASoc,KAAKC,UAAUrR,GAC9B/K,GAAO+jC,EAAgB,GAAGsV,EAAct5C,MAAa,GAAGA,KACxDC,GAAOJ,EAAeb,EAAOs6C,EAC9B,CACF,CAED,OADAr5C,GAAO+jC,EAAgB,KAAKhlC,KAAY,IACjCiB,CACR,CA1BD,CAnC2BD,EAAOs5C,QAAA,CAGjC,CA+DD,SAASp6C,EAAgB8L,EAAMhL,GAC7B,YAAO,IAAOA,GAA0C,mBAAVA,GAAyC,iBAAVA,CAC9E,CACH,ED9IoEgL,EAAAo9J,iBJ6D7D,SAA0Bp9J,GAC/B,GAAI9L,EAAyBoB,OAAO0K,IAAQ1a,OAAS,GACnD,MAAM,IAAIgC,MAAM,0GAA0G0Y,MAE5H,GAAI4S,OAAO/U,MAAMmC,GACf,MAAM,IAAI1Y,MAAM,uBAElB,IAAKsrB,OAAOzT,SAASa,GACnB,MAAM,IAAI1Y,MAAM,mBAAmB0Y,KAErC,OAAO,IAAIiV,EAAe3f,OAAO0K,GACnC,EIxEoEA,EAAAq9J,oBLyE7D,SAA6Br9J,EAAOhL,GACzC,MAAMV,EAASse,OAAO8uF,WAAW1hG,GAC3BhM,EAAea,EAAsBmL,GAC3C,IAAI,IAAAhL,GAAQqnK,OAAkBroK,GAAgBA,IAAiBglC,EAAmBwjI,eAAiBxoK,EAAc,CAC/G,MAAMgB,EAAmBhB,GAAcvD,QAAQ,QAAS,IACxD,MAAM,IAAInJ,MAAM,+CAA+C0Y,YAAgBhL,gBAA+BV,IAC/G,CACD,OAAOA,CACT,CKjFoE,CNRpEU,CAAAzR,2BQKA,IAJA,IAAIiU,EAAW,mCAGX8lK,EAAe,CAAC,EACXlpK,EAAI,EAAGA,EAAIoD,GAAiBpD,IAAK,CACxC,IAAIK,EAAI+C,EAAS9B,OAAOtB,GAExB,QAAwB7O,IAApB+3K,EAAa7oK,GAAkB,MAAM,IAAIiuB,UAAUjuB,EAAI,iBAC3D6oK,EAAa7oK,GAAKL,CACpB,CAEA,SAASmpK,EAAaC,GACpB,IAAI7oK,EAAI6oK,GAAO,GACf,OAAe,SAANA,IAAoB,EACR,YAAL,EAAV7oK,GACe,YAAfA,GAAK,EAAK,GACK,YAAfA,GAAK,EAAK,GACK,aAAfA,GAAK,EAAK,GACK,YAAfA,GAAK,EAAK,EAClB,CAEA,SAAS8oK,EAAWzmK,GAElB,IADA,IAAI0mK,EAAM,EACDjvK,EAAI,EAAGA,EAAIuI,EAAO1R,SAAUmJ,EAAG,CACtC,IAAIoG,EAAImC,EAAOzC,WAAW9F,GAC1B,GAAIoG,EAAI,IAAMA,EAAI,IAAK,MAAO,mBAAqBmC,EAAS,IAE5D0mK,EAAMH,EAAYG,GAAQ7oK,GAAK,CACjC,CAGA,IAFA6oK,EAAMH,EAAYG,GAEbjvK,EAAI,EAAGA,EAAIuI,EAAO1R,SAAUmJ,EAAG,CAClC,IAAIiJ,EAAIV,EAAOzC,WAAW9F,GAC1BivK,EAAMH,EAAYG,GAAY,GAAJhmK,CAC5B,CACA,OAAOgmK,CACT,CAkCA,SAASC,EAAUloK,EAAKmoK,GAEtB,GADAA,EAAQA,GAAS,GACbnoK,EAAInQ,OAAS,EAAG,OAAOmQ,EAAM,aACjC,GAAIA,EAAInQ,OAASs4K,EAAO,MAAO,uBAG/B,IAAIC,EAAUpoK,EAAI4C,cACdylK,EAAUroK,EAAI2C,cAClB,GAAI3C,IAAQooK,GAAWpoK,IAAQqoK,EAAS,MAAO,qBAAuBroK,EAGtE,IAAIzJ,GAFJyJ,EAAMooK,GAEUv1C,YAAY,KAC5B,IAAe,IAAXt8H,EAAc,MAAO,8BAAgCyJ,EACzD,GAAc,IAAVzJ,EAAa,MAAO,sBAAwByJ,EAEhD,IAAIuB,EAASvB,EAAItE,MAAM,EAAGnF,GACtB+xK,EAAYtoK,EAAItE,MAAMnF,EAAQ,GAClC,GAAI+xK,EAAUz4K,OAAS,EAAG,MAAO,iBAEjC,IAAIo4K,EAAMD,EAAUzmK,GACpB,GAAmB,kBAAR0mK,EAAkB,OAAOA,EAGpC,IADA,IAAI35I,EAAQ,GACHt1B,EAAI,EAAGA,EAAIsvK,EAAUz4K,SAAUmJ,EAAG,CACzC,IAAIoG,EAAIkpK,EAAUroK,OAAOjH,GACrBiJ,EAAI4lK,EAAazoK,GACrB,QAAUtP,IAANmS,EAAiB,MAAO,qBAAuB7C,EACnD6oK,EAAMH,EAAYG,GAAOhmK,EAGrBjJ,EAAI,GAAKsvK,EAAUz4K,QACvBy+B,EAAMh5B,KAAK2M,EACb,CAEA,OAAY,IAARgmK,EAAkB,wBAA0BjoK,EACzC,CAAEuB,OAAQA,EAAQ+sB,MAAOA,EAClC,CAcA,SAASi6I,EAAS52K,EAAM62K,EAAQC,EAASj+E,GAMvC,IALA,IAAIt5F,EAAQ,EACR4zB,EAAO,EACP4jJ,GAAQ,GAAKD,GAAW,EAExB9rJ,EAAS,GACJ3jB,EAAI,EAAGA,EAAIrH,EAAK9B,SAAUmJ,EAIjC,IAHA9H,EAASA,GAASs3K,EAAU72K,EAAKqH,GACjC8rB,GAAQ0jJ,EAED1jJ,GAAQ2jJ,GACb3jJ,GAAQ2jJ,EACR9rJ,EAAOrnB,KAAMpE,GAAS4zB,EAAQ4jJ,GAIlC,GAAIl+E,EACE1lE,EAAO,GACTnI,EAAOrnB,KAAMpE,GAAUu3K,EAAU3jJ,EAAS4jJ,OAEvC,CACL,GAAI5jJ,GAAQ0jJ,EAAQ,MAAO,iBAC3B,GAAKt3K,GAAUu3K,EAAU3jJ,EAAS4jJ,EAAM,MAAO,kBACjD,CAEA,OAAO/rJ,CACT,CA0BA5uB,EAAOD,QAAU,CACfgxD,aAjEF,WACE,IAAIl/B,EAAMsoJ,EAAS7iG,MAAM,KAAMz1E,WAC/B,GAAmB,kBAARgwB,EAAkB,OAAOA,CACtC,EA+DEnS,OA7DF,SAAiBzN,GACf,IAAI4f,EAAMsoJ,EAAS7iG,MAAM,KAAMz1E,WAC/B,GAAmB,kBAARgwB,EAAkB,OAAOA,EAEpC,MAAM,IAAI/tB,MAAM+tB,EAClB,EAyDEzR,OAzIF,SAAiB5M,EAAQ+sB,EAAO65I,GAE9B,GADAA,EAAQA,GAAS,GACZ5mK,EAAO1R,OAAS,EAAIy+B,EAAMz+B,OAAUs4K,EAAO,MAAM,IAAIl7I,UAAU,wBAKpE,IAAIg7I,EAAMD,EAHVzmK,EAASA,EAAOqB,eAIhB,GAAmB,kBAARqlK,EAAkB,MAAM,IAAIp2K,MAAMo2K,GAG7C,IADA,IAAItrJ,EAASpb,EAAS,IACbvI,EAAI,EAAGA,EAAIs1B,EAAMz+B,SAAUmJ,EAAG,CACrC,IAAIgG,EAAIsvB,EAAMt1B,GACd,GAAKgG,GAAK,IAAO,EAAG,MAAM,IAAInN,MAAM,kBAEpCo2K,EAAMH,EAAYG,GAAOjpK,EACzB2d,GAAU5a,EAAS9B,OAAOjB,EAC5B,CAEA,IAAKhG,EAAI,EAAGA,EAAI,IAAKA,EACnBivK,EAAMH,EAAYG,GAIpB,IAFAA,GAAO,EAEFjvK,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAEtB2jB,GAAU5a,EAAS9B,OADVgoK,GAAkB,GAAT,EAAIjvK,GAAW,GAEnC,CAEA,OAAO2jB,CACT,EA4GEgsJ,cA5BF,SAAwBx8H,GACtB,IAAIvsB,EAAM2oJ,EAAQp8H,EAAO,EAAG,GAAG,GAC/B,GAAIh0C,MAAMi3B,QAAQxP,GAAM,OAAOA,CACjC,EA0BEgpJ,QAxBF,SAAkBz8H,GAChB,IAAIvsB,EAAM2oJ,EAAQp8H,EAAO,EAAG,GAAG,GAC/B,GAAIh0C,MAAMi3B,QAAQxP,GAAM,OAAOA,EAE/B,MAAM,IAAI/tB,MAAM+tB,EAClB,EAoBEipJ,gBAlBF,SAA0Bv6I,GACxB,IAAI1O,EAAM2oJ,EAAQj6I,EAAO,EAAG,GAAG,GAC/B,GAAIn2B,MAAMi3B,QAAQxP,GAAM,OAAOA,CACjC,EAgBEy2F,UAdF,SAAoB/nF,GAClB,IAAI1O,EAAM2oJ,EAAQj6I,EAAO,EAAG,GAAG,GAC/B,GAAIn2B,MAAMi3B,QAAQxP,GAAM,OAAOA,EAE/B,MAAM,IAAI/tB,MAAM+tB,EAClB,0QC3KA,MAAA9S,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAme,EAAAne,EAAA,OA8GA,SAAgBg6K,EAA2C37J,GAIlC,IAJmC,UACxDnd,EACAod,MAAOoT,EAASnxB,EAAME,EAAO05J,GAAK,KAClCt3J,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAnxB,OACAE,QACA05J,QAEJt3J,KAAM7D,EAAAi7K,iCAAiCt7J,OAAO9b,GAEtD,CArHa7D,EAAAA,kCAAmC,EAAAgf,EAAAY,QAAyC,EAAC,EAAAZ,EAAAa,IAAG,iBAY7F7f,EAAAA,mCAAA,SACI0yB,EACAnxB,EACAE,GAC4B,IAA5BS,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,EAAO,CACT,CAAEU,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQve,EAAOwe,UAAU,EAAOC,YAAY,GAC9C,CAAEF,OAAQjf,EAAAs6J,mBAAoBp7I,UAAU,EAAOC,YAAY,IAGzDrc,EAAOY,EAAO0b,MAAMngB,EAAAi7K,iCAAiC76J,MAG3D,OAFApgB,EAAAi7K,iCAAiC56J,OAAO,CAAEd,YAAaJ,EAAAmB,iBAAiB46J,mBAAqBr3K,GAEtF,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAwBA7D,EAAAA,mCAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAi7K,iCAAiC76J,KAAM,MAAM,IAAIlB,EAAAyB,iCAEjF,MACIrB,MAAM,QAAEoT,EAAO,KAAEnxB,EAAI,MAAEE,EAAK,KAAE05J,GAAM,KACpCt3J,GACAm3K,EAA4Cz7J,GAChD,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiB46J,kBAAmB,MAAM,IAAIh8J,EAAA0B,iCACvE,IAAK8R,IAAYnxB,IAASE,IAAU05J,EAAM,MAAM,IAAIj8I,EAAA2B,iCAIpD,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAnxB,OACAE,QACA05J,QAEJt3J,OAER,EAuBA7D,EAAAA,4CAAAg7K,gCCzGA,SAASx8H,EAAQ7tC,EAAGiB,EAAKC,GACvB,OAAOD,GAAOjB,GAAKA,GAAKkB,CAC1B,CAMA,SAASspK,EAAa/0I,GACpB,QAAUpkC,IAANokC,EAAiB,MAAO,CAAC,EAC7B,GAAIA,IAAMljC,OAAOkjC,GAAI,OAAOA,EAC5B,MAAMjH,UAAU,2CAClB,qDA+HA,SAASi8I,EAAOx5J,GAEd1hB,KAAK0hB,OAAS,GAAGhU,MAAMoJ,KAAK4K,EAC9B,CAEAw5J,EAAOtwK,UAAY,CAIjBuwK,YAAa,WACX,OAAQn7K,KAAK0hB,OAAO7f,MACtB,EAUCw3C,KAAM,WACL,OAAKr5C,KAAK0hB,OAAO7f,OAET7B,KAAK0hB,OAAO3T,SAjCA,CAkCrB,EASDi7I,QAAS,SAAS7gJ,GAChB,GAAIgC,MAAMi3B,QAAQj5B,GAEhB,IADA,IAAIuZ,EAAsCvZ,EACnCuZ,EAAO7f,QACZ7B,KAAK0hB,OAAOkhG,QAAQlhG,EAAOrM,YAE7BrV,KAAK0hB,OAAOkhG,QAAQz6G,EAExB,EASAb,KAAM,SAASa,GACb,GAAIgC,MAAMi3B,QAAQj5B,GAEhB,IADA,IAAIuZ,EAAsCvZ,EACnCuZ,EAAO7f,QACZ7B,KAAK0hB,OAAOpa,KAAKoa,EAAO3T,cAE1B/N,KAAK0hB,OAAOpa,KAAKa,EAErB,GAUF,IAAI+nB,GAAY,EAOhB,SAASkrJ,EAAaC,EAAOC,GAC3B,GAAID,EACF,MAAMp8I,UAAU,iBAClB,OAAOq8I,GAAkB,KAC3B,CA8Bc,IAAIC,EAAmB,QAUrC,SAASzjG,EAAY3jD,EAAUvS,GAC7B,KAAM5hB,gBAAgB83E,GACpB,OAAO,IAAIA,EAAY3jD,EAAUvS,GAGnC,IADAuS,OAAwBryB,IAAbqyB,EAAyBtiB,OAAOsiB,GAAUvf,cAAgB2mK,KACpDA,EACf,MAAM,IAAI13K,MAAM,mDAElB+d,EAAUq5J,EAAar5J,GAGvB5hB,KAAKw7K,YAAa,EAElBx7K,KAAKy7K,UAAW,EAEhBz7K,KAAKo+B,SAAW,KAEhBp+B,KAAK07K,OAAS7+C,QAAQj7G,EAAe,OAErC5hB,KAAK27K,WAAa9+C,QAAQj7G,EAAmB,WAE7C5e,OAAOC,eAAejD,KAAM,WAAY,CAACkD,MAAO,UAChDF,OAAOC,eAAejD,KAAM,QAAS,CAACkD,MAAOlD,KAAK07K,SAClD14K,OAAOC,eAAejD,KAAM,YAAa,CAACkD,MAAOlD,KAAK27K,YACxD,CA4FA,SAASlkG,EAAYtjD,EAAUvS,GAC7B,KAAM5hB,gBAAgBy3E,GACpB,OAAO,IAAIA,EAAYtjD,EAAUvS,GAEnC,IADAuS,OAAwBryB,IAAbqyB,EAAyBtiB,OAAOsiB,GAAUvf,cAAgB2mK,KACpDA,EACf,MAAM,IAAI13K,MAAM,mDAElB+d,EAAUq5J,EAAar5J,GAGvB5hB,KAAKw7K,YAAa,EAElBx7K,KAAK47K,SAAW,KAEhB57K,KAAK67K,SAAW,CAACR,MAAOx+C,QAAQj7G,EAAe,QAE/C5e,OAAOC,eAAejD,KAAM,WAAY,CAACkD,MAAO,SAClD,CA2DA,SAAS44K,EAAYl6J,GACnB,IAAIy5J,EAAQz5J,EAAQy5J,MAMMU,EAAkB,EAClBC,EAAkB,EAClBC,EAAoB,EACpBC,EAAsB,IACtBC,EAAsB,IAShDn8K,KAAKokG,QAAU,SAAS4gB,EAAQo3D,GAG9B,IAxVoB,IAwVhBA,GAAgD,IAAtBH,EAE5B,OADAA,EAAoB,EACbb,EAAaC,GAItB,IA9VoB,IA8VhBe,EACF,OAAOlsJ,EAGT,GAA0B,IAAtB+rJ,EAAyB,CAG3B,GAAI39H,EAAQ89H,EAAM,EAAM,KAEtB,OAAOA,EAIT,GAAI99H,EAAQ89H,EAAM,IAAM,KAGtBH,EAAoB,EACpBF,EAAkBK,EAAO,SAItB,GAAI99H,EAAQ89H,EAAM,IAAM,KAEd,MAATA,IACFF,EAAsB,KAEX,MAATE,IACFD,EAAsB,KAGxBF,EAAoB,EACpBF,EAAkBK,EAAO,QAItB,KAAI99H,EAAQ89H,EAAM,IAAM,KAgB3B,OAAOhB,EAAaC,GAdP,MAATe,IACFF,EAAsB,KAEX,MAATE,IACFD,EAAsB,KAGxBF,EAAoB,EACpBF,EAAkBK,EAAO,GAO3B,CAMA,OADAL,IAAsC,EAAIE,EACnC,IACT,CAIA,IAAK39H,EAAQ89H,EAAMF,EAAqBC,GAatC,OARAJ,EAAkBE,EAAoBD,EAAkB,EACxDE,EAAsB,IACtBC,EAAsB,IAGtBn3D,EAAOgkC,QAAQozB,GAGRhB,EAAaC,GAgBtB,GAXAa,EAAsB,IACtBC,EAAsB,IAMtBJ,GAAoBK,EAAO,KAAU,GAAKH,GAD1CD,GAAmB,IAKfA,IAAoBC,EACtB,OAAO,KAGT,IAAII,EAAaN,EAOjB,OAHAA,EAAkBE,EAAoBD,EAAkB,EAGjDK,CACT,CACF,CAOA,SAASC,EAAY16J,GACPA,EAAQy5J,MAMpBr7K,KAAKokG,QAAU,SAAS4gB,EAAQq3D,GAE9B,IAvdoB,IAudhBA,EACF,OAAOnsJ,EAIT,GAAIouB,EAAQ+9H,EAAY,EAAQ,KAC9B,OAAOA,EAGT,IAAIn1G,EAAOnwC,EAEPunB,EAAQ+9H,EAAY,IAAQ,OAC9Bn1G,EAAQ,EACRnwC,EAAS,KAGFunB,EAAQ+9H,EAAY,KAAQ,QACnCn1G,EAAQ,EACRnwC,EAAS,KAGFunB,EAAQ+9H,EAAY,MAAS,WACpCn1G,EAAQ,EACRnwC,EAAS,KAQX,IAHA,IAAIonB,EAAQ,EAAEk+H,GAAe,EAAIn1G,GAAUnwC,GAGpCmwC,EAAQ,GAAG,CAGhB,IAAI3uD,EAAO8jK,GAAe,GAAKn1G,EAAQ,GAGvC/oB,EAAM72C,KAAK,IAAe,GAAPiR,GAGnB2uD,GAAS,CACX,CAGA,OAAO/oB,CACT,CACF,CA1WA25B,EAAYltE,UAAY,CAMtB6U,OAAQ,SAAgBxf,EAAO2hB,GAC7B,IAAIu8B,EAEFA,EADmB,kBAAVl+C,GAAsBA,aAAiBw+B,YACxC,IAAInO,WAAWrwB,GACG,kBAAVA,GAAsB,WAAYA,GACzCA,EAAMowB,kBAAkBoO,YACzB,IAAInO,WAAWrwB,EAAMowB,OACNpwB,EAAMixB,WACNjxB,EAAM8+B,YAErB,IAAIzO,WAAW,GAGzB1O,EAAUq5J,EAAar5J,GAElB5hB,KAAKw7K,aACRx7K,KAAKo+B,SAAW,IAAI09I,EAAY,CAACT,MAAOr7K,KAAK07K,SAC7C17K,KAAKy7K,UAAW,GAElBz7K,KAAKw7K,WAAa3+C,QAAQj7G,EAAgB,QAS1C,IAPA,IAKI+M,EALA4tJ,EAAe,IAAIrB,EAAO/8H,GAE1Bq+H,EAAc,IAKVD,EAAapB,gBACnBxsJ,EAAS3uB,KAAKo+B,SAASgmE,QAAQm4E,EAAcA,EAAaljI,WAC3CnpB,GAEA,OAAXvB,IAEAxkB,MAAMi3B,QAAQzS,GAChB6tJ,EAAYl1K,KAAK+vE,MAAMmlG,EAA0C7tJ,GAEjE6tJ,EAAYl1K,KAAKqnB,IAErB,IAAK3uB,KAAKw7K,WAAY,CACpB,EAAG,CAED,IADA7sJ,EAAS3uB,KAAKo+B,SAASgmE,QAAQm4E,EAAcA,EAAaljI,WAC3CnpB,EACb,MACa,OAAXvB,IAEAxkB,MAAMi3B,QAAQzS,GAChB6tJ,EAAYl1K,KAAK+vE,MAAMmlG,EAA0C7tJ,GAEjE6tJ,EAAYl1K,KAAKqnB,GACrB,QAAU4tJ,EAAapB,eACvBn7K,KAAKo+B,SAAW,IAClB,CAoBA,OAlBIo+I,EAAY36K,UAI4B,IAAtC,CAAC,SAAS0S,QAAQvU,KAAKm0B,WACtBn0B,KAAK27K,YAAe37K,KAAKy7K,WAEL,QAAnBe,EAAY,IACdx8K,KAAKy7K,UAAW,EAChBe,EAAYzuK,SAIZ/N,KAAKy7K,UAAW,IAjQ1B,SAA4Be,GAE1B,IADA,IAAI9rK,EAAI,GACC1F,EAAI,EAAGA,EAAIwxK,EAAY36K,SAAUmJ,EAAG,CAC3C,IAAIyxK,EAAKD,EAAYxxK,GACjByxK,GAAM,MACR/rK,GAAKmB,OAAO4oB,aAAagiJ,IAEzBA,GAAM,MACN/rK,GAAKmB,OAAO4oB,aAA0B,OAAZgiJ,GAAM,IACQ,OAAT,KAALA,IAE9B,CACA,OAAO/rK,CACT,CAyPWgsK,CAAmBF,EAC5B,GA8BF/kG,EAAY7sE,UAAY,CAMtBuV,OAAQ,SAAgBw8J,EAAY/6J,GAClC+6J,EAAaA,EAAa9qK,OAAO8qK,GAAc,GAC/C/6J,EAAUq5J,EAAar5J,GAKlB5hB,KAAKw7K,aACRx7K,KAAK47K,SAAW,IAAIU,EAAYt8K,KAAK67K,WACvC77K,KAAKw7K,WAAa3+C,QAAQj7G,EAAgB,QAM1C,IAJA,IAGI+M,EAHAwvB,EAAQ,GACRo+H,EAAe,IAAIrB,EA1Y3B,SAA4Bv6I,GAgB1B,IAZA,IAAIjwB,EAAImB,OAAO8uB,GAGXpwB,EAAIG,EAAE7O,OAGNmJ,EAAI,EAGJuqC,EAAI,GAGDvqC,EAAIuF,GAAG,CAGZ,IAAIa,EAAIV,EAAEI,WAAW9F,GAKrB,GAAIoG,EAAI,OAAUA,EAAI,MAEpBmkC,EAAEjuC,KAAK8J,QAIJ,GAAI,OAAUA,GAAKA,GAAK,MAE3BmkC,EAAEjuC,KAAK,YAIJ,GAAI,OAAU8J,GAAKA,GAAK,MAG3B,GAAIpG,IAAMuF,EAAI,EACZglC,EAAEjuC,KAAK,WAGJ,CAEH,IAAIiO,EAAIorB,EAAO7vB,WAAW9F,EAAI,GAG9B,GAAI,OAAUuK,GAAKA,GAAK,MAAQ,CAE9B,IAAI9E,EAAQ,KAAJW,EAGJF,EAAQ,KAAJqE,EAIRggC,EAAEjuC,KAAK,OAAWmJ,GAAK,IAAMS,GAG7BlG,GAAK,CACP,MAKEuqC,EAAEjuC,KAAK,MAEX,CAIF0D,GAAK,CACP,CAGA,OAAOuqC,CACT,CA6TkCqnI,CAAmBD,KAGzCJ,EAAapB,gBACnBxsJ,EAAS3uB,KAAK47K,SAASx3E,QAAQm4E,EAAcA,EAAaljI,WAC3CnpB,GAEX/lB,MAAMi3B,QAAQzS,GAChBwvB,EAAM72C,KAAK+vE,MAAMl5B,EAAoCxvB,GAErDwvB,EAAM72C,KAAKqnB,GAEf,IAAK3uB,KAAKw7K,WAAY,CACpB,MACE7sJ,EAAS3uB,KAAK47K,SAASx3E,QAAQm4E,EAAcA,EAAaljI,WAC3CnpB,GAEX/lB,MAAMi3B,QAAQzS,GAChBwvB,EAAM72C,KAAK+vE,MAAMl5B,EAAoCxvB,GAErDwvB,EAAM72C,KAAKqnB,GAEf3uB,KAAK47K,SAAW,IAClB,CACA,OAAO,IAAItrJ,WAAW6tB,EACxB,sGCncF,MAAAt9C,EAAAC,EAAA,OAGAhB,EAAAA,WAAA,SACIsf,EACAy9J,EACAl7K,GAEA,GAAIA,EAAaE,OAAQ,CACrBud,EAAK9X,KAAK,CAAEwY,OAAQ+8J,EAAkB98J,UAAU,EAAOC,YAAY,IACnE,IAAK,MAAMtc,KAAU/B,EACjByd,EAAK9X,KAAK,CACNwY,OAAQpc,aAAkB7C,EAAAiE,UAAYpB,EAASA,EAAOiB,UACtDob,UAAU,EACVC,YAAY,SAIpBZ,EAAK9X,KAAK,CAAEwY,OAAQ+8J,EAAkB98J,UAAU,EAAMC,YAAY,IAEtE,OAAOZ,CACX,6PCtBA,MAAAN,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAme,EAAAne,EAAA,OAiIA,SAAgBg8K,EAAwC39J,GAI/B,IAJgC,UACrDnd,EACAod,MAAO/d,EAAM45J,GAAK,KAClBt3J,GACqBwb,EACrB,MAAM,YAAEE,EAAW,SAAE5d,EAAQ,cAAEs7K,EAAa,sBAAEC,EAAqB,gBAAEC,GACjEn9K,EAAAo9K,8BAA8Bz9J,OAAO9b,GAEzC,MAAO,CACH3B,YACAod,KAAM,CACF/d,OACA45J,QAEJt3J,KAAM,CACF0b,cACA5d,WACAs7K,gBACAE,gBAAiBD,EAAwBC,EAAkB,MAGvE,CA1Ian9K,EAAAA,+BAAgC,EAAAgf,EAAAY,QAAsC,EAC/E,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,aACH,EAAAZ,EAAApa,WAAU,kBACV,EAAAma,EAAAa,IAAG,0BACH,EAAAZ,EAAApa,WAAU,qBAcd7E,EAAAA,gCAAA,SACIuB,EACAI,EACAs7K,EACAE,GAC4B,IAA5Bj7K,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,EAAO,CACT,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQjf,EAAAs6J,mBAAoBp7I,UAAU,EAAOC,YAAY,IAGzDrc,EAAOY,EAAO0b,MAAMngB,EAAAo9K,8BAA8Bh9J,MAYxD,OAXApgB,EAAAo9K,8BAA8B/8J,OAC1B,CACId,YAAaJ,EAAAmB,iBAAiB+8J,eAC9B17K,WACAs7K,gBACAC,sBAAuBC,EAAkB,EAAI,EAC7CA,gBAAiBA,GAAmB,IAAIp8K,EAAAiE,UAAU,IAEtDnB,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAyBA7D,EAAAA,gCAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAo9K,8BAA8Bh9J,KAAM,MAAM,IAAIlB,EAAAyB,iCAE9E,MACIrB,MAAM,KAAE/d,EAAI,KAAE45J,GAAM,KACpBt3J,GACAm5K,EAAyCz9J,GAC7C,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiB+8J,eAAgB,MAAM,IAAIn+J,EAAA0B,iCACpE,IAAKrf,IAAS45J,EAAM,MAAM,IAAIj8I,EAAA2B,iCAI9B,MAAO,CACH3e,YACAod,KAAM,CACF/d,OACA45J,QAEJt3J,OAER,EAwBA7D,EAAAA,yCAAAg9K,yNC5IA,MAAAh+J,EAAAhe,EAAA,OAGA8wD,EAAA9wD,EAAA,OASahB,EAAAA,uBAAwB,EAAAgf,EAAAY,QAAwB,IAEhD5f,EAAAA,sBAAwBA,EAAAs9K,sBAAsBl9J,KAC9CpgB,EAAAA,8BAAgCA,EAAAs9K,sBAAsBl9J,KAEnEpgB,EAAAA,mBAAA,SAAmCuB,GAC/B,MAAM0wD,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAcorH,gBAAiBh8K,EAAK8wD,SAC3E,OAAsB,OAAlBJ,EACOjyD,EAAAs9K,sBAAsB39J,OAAOsyC,GAE7B,IAEf,EAEAjyD,EAAAA,0BAAA,SAA0C0yB,GACtC,MAAMu/B,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAcqrH,uBAAwB9qJ,EAAQ2/B,SACrF,OAAsB,OAAlBJ,EACOjyD,EAAAs9K,sBAAsB39J,OAAOsyC,GAE7B,IAEf,oCCiBIy1G,aAXJ,SAAS+V,EAAc78K,GACrB,IAAIquI,EAAQ/uI,KACZA,KAAKy3B,KAAO,KACZz3B,KAAKw9K,MAAQ,KACbx9K,KAAKqxJ,OAAS,YA6iBhB,SAAwBosB,EAAS/8K,EAAOkpB,GACtC,IAAI4zJ,EAAQC,EAAQD,MACpBC,EAAQD,MAAQ,KAChB,KAAOA,GAAO,CACZ,IAAIppJ,EAAKopJ,EAAMx0E,SACftoG,EAAMg9K,YACNtpJ,EAAGxK,GACH4zJ,EAAQA,EAAM/lJ,IAChB,CAGA/2B,EAAMi9K,mBAAmBlmJ,KAAOgmJ,CAClC,CAxjBIG,CAAe7uC,EAAOruI,EACxB,CACF,CAnBAX,EAAOD,QAAU+9K,EA0BjBA,EAASC,cAAgBA,EAGzB,IAAIC,EAAe,CACjBC,UAAWl9K,EAAQ,QAKjBo6K,EAASp6K,EAAQ,OAGjByD,EAASzD,EAAAA,OAAAA,OACTm9K,GAAmC,qBAAXpnF,EAAAA,EAAyBA,EAAAA,EAA2B,qBAAXjgE,OAAyBA,OAAyB,qBAATqM,KAAuBA,KAAO,CAAC,GAAG3S,YAAc,WAAa,EAO3K,IA8II4tJ,EA9IAC,EAAcr9K,EAAQ,OAExBs9K,EADat9K,EAAQ,OACOs9K,iBAC1B/iB,EAAiBv6J,EAAAA,OAAAA,EACnB8hJ,EAAuByY,EAAezY,qBACtCwkB,EAA6B/L,EAAe+L,2BAC5CC,EAAwBhM,EAAegM,sBACvCgX,EAAyBhjB,EAAegjB,uBACxC9iB,EAAuBF,EAAeE,qBACtC+iB,EAAyBjjB,EAAeijB,uBACxCC,EAA6BljB,EAAekjB,2BAC5CC,EAAuBnjB,EAAemjB,qBACpCnK,EAAiB8J,EAAY9J,eAEjC,SAASoK,IAAO,CAChB,SAASX,EAAcl8J,EAASojG,EAAQ05D,GACtClX,EAASA,GAAU1mK,EAAQ,OAC3B8gB,EAAUA,GAAW,CAAC,EAOE,mBAAb88J,IAAwBA,EAAW15D,aAAkBwiD,GAIhExnK,KAAK2+K,aAAe/8J,EAAQ+8J,WACxBD,IAAU1+K,KAAK2+K,WAAa3+K,KAAK2+K,cAAgB/8J,EAAQg9J,oBAK7D5+K,KAAK+nK,cAAgBqW,EAAiBp+K,KAAM4hB,EAAS,wBAAyB88J,GAG9E1+K,KAAKm0K,aAAc,EAGnBn0K,KAAK6+K,WAAY,EAEjB7+K,KAAKk0K,QAAS,EAEdl0K,KAAK+4E,OAAQ,EAEb/4E,KAAKkwB,UAAW,EAGhBlwB,KAAKowB,WAAY,EAKjB,IAAI0uJ,GAAqC,IAA1Bl9J,EAAQm9J,cACvB/+K,KAAK++K,eAAiBD,EAKtB9+K,KAAKg/K,gBAAkBp9J,EAAQo9J,iBAAmB,OAKlDh/K,KAAK6B,OAAS,EAGd7B,KAAK47J,SAAU,EAGf57J,KAAKi/K,OAAS,EAMdj/K,KAAKmoK,MAAO,EAKZnoK,KAAKk/K,kBAAmB,EAGxBl/K,KAAKm/K,QAAU,SAAU/0B,IAsQ3B,SAAiBplC,EAAQolC,GACvB,IAAI1pJ,EAAQskH,EAAOM,eACf6iD,EAAOznK,EAAMynK,KACb/zI,EAAK1zB,EAAMknK,QACf,GAAkB,oBAAPxzI,EAAmB,MAAM,IAAIizI,EAExC,GAZF,SAA4B3mK,GAC1BA,EAAMk7J,SAAU,EAChBl7J,EAAMknK,QAAU,KAChBlnK,EAAMmB,QAAUnB,EAAM0+K,SACtB1+K,EAAM0+K,SAAW,CACnB,CAMEC,CAAmB3+K,GACf0pJ,GAlCN,SAAsBplC,EAAQtkH,EAAOynK,EAAM/d,EAAIh2H,KAC3C1zB,EAAMg9K,UACJvV,GAGFt3I,EAAQomE,SAAS7iE,EAAIg2H,GAGrBv5H,EAAQomE,SAASqoF,EAAat6D,EAAQtkH,GACtCskH,EAAOM,eAAe0uD,cAAe,EACrCK,EAAervD,EAAQolC,KAIvBh2H,EAAGg2H,GACHplC,EAAOM,eAAe0uD,cAAe,EACrCK,EAAervD,EAAQolC,GAGvBk1B,EAAYt6D,EAAQtkH,GAExB,CAaU6+K,CAAav6D,EAAQtkH,EAAOynK,EAAM/d,EAAIh2H,OAAS,CAErD,IAAIlE,EAAWsvJ,EAAW9+K,IAAUskH,EAAO50F,UACtCF,GAAaxvB,EAAMu+K,QAAWv+K,EAAMw+K,mBAAoBx+K,EAAM++K,iBACjEC,EAAY16D,EAAQtkH,GAElBynK,EACFt3I,EAAQomE,SAAS0oF,EAAY36D,EAAQtkH,EAAOwvB,EAAUkE,GAEtDurJ,EAAW36D,EAAQtkH,EAAOwvB,EAAUkE,EAExC,CACF,CAvRI+qJ,CAAQn6D,EAAQolC,EAClB,EAGApqJ,KAAK4nK,QAAU,KAGf5nK,KAAKo/K,SAAW,EAChBp/K,KAAKy/K,gBAAkB,KACvBz/K,KAAK4/K,oBAAsB,KAI3B5/K,KAAK09K,UAAY,EAIjB19K,KAAKo0K,aAAc,EAGnBp0K,KAAKg0K,cAAe,EAGpBh0K,KAAK6zK,WAAkC,IAAtBjyJ,EAAQiyJ,UAGzB7zK,KAAKw0K,cAAgB5yJ,EAAQ4yJ,YAG7Bx0K,KAAK6/K,qBAAuB,EAI5B7/K,KAAK29K,mBAAqB,IAAIJ,EAAcv9K,KAC9C,CAqCA,SAAS69K,EAASj8J,GAahB,IAAI88J,EAAW1+K,gBAZfwnK,EAASA,GAAU1mK,EAAQ,QAa3B,IAAK49K,IAAaR,EAAgBpnK,KAAK+mK,EAAU79K,MAAO,OAAO,IAAI69K,EAASj8J,GAC5E5hB,KAAKslH,eAAiB,IAAIw4D,EAAcl8J,EAAS5hB,KAAM0+K,GAGvD1+K,KAAKw1D,UAAW,EACZ5zC,IAC2B,oBAAlBA,EAAQ9W,QAAsB9K,KAAKqoK,OAASzmJ,EAAQ9W,OACjC,oBAAnB8W,EAAQk+J,SAAuB9/K,KAAK+/K,QAAUn+J,EAAQk+J,QAClC,oBAApBl+J,EAAQiQ,UAAwB7xB,KAAKsoK,SAAW1mJ,EAAQiQ,SACtC,oBAAlBjQ,EAAQo+J,QAAsBhgL,KAAKk+B,OAAStc,EAAQo+J,QAEjE9E,EAAOpkK,KAAK9W,KACd,CAgIA,SAASigL,EAAQj7D,EAAQtkH,EAAOo/K,EAAQ3tK,EAAK+hB,EAAOC,EAAUC,GAC5D1zB,EAAM0+K,SAAWjtK,EACjBzR,EAAMknK,QAAUxzI,EAChB1zB,EAAMk7J,SAAU,EAChBl7J,EAAMynK,MAAO,EACTznK,EAAM0vB,UAAW1vB,EAAMy+K,QAAQ,IAAI5jB,EAAqB,UAAmBukB,EAAQ96D,EAAO+6D,QAAQ7rJ,EAAOxzB,EAAMy+K,SAAcn6D,EAAOqjD,OAAOn0I,EAAOC,EAAUzzB,EAAMy+K,SACtKz+K,EAAMynK,MAAO,CACf,CAgDA,SAASwX,EAAW36D,EAAQtkH,EAAOwvB,EAAUkE,GACtClE,GASP,SAAsB80F,EAAQtkH,GACP,IAAjBA,EAAMmB,QAAgBnB,EAAMm+K,YAC9Bn+K,EAAMm+K,WAAY,EAClB75D,EAAOlN,KAAK,SAEhB,CAdiBooE,CAAal7D,EAAQtkH,GACpCA,EAAMg9K,YACNtpJ,IACAkrJ,EAAYt6D,EAAQtkH,EACtB,CAaA,SAASg/K,EAAY16D,EAAQtkH,GAC3BA,EAAMw+K,kBAAmB,EACzB,IAAI1B,EAAQ98K,EAAM++K,gBAClB,GAAIz6D,EAAO+6D,SAAWvC,GAASA,EAAM/lJ,KAAM,CAEzC,IAAIjmB,EAAI9Q,EAAMm/K,qBACVxvJ,EAAS,IAAIlmB,MAAMqH,GACnB2uK,EAASz/K,EAAMi9K,mBACnBwC,EAAO3C,MAAQA,EAGf,IAFA,IAAIt2G,EAAQ,EACRk5G,GAAa,EACV5C,GACLntJ,EAAO62C,GAASs2G,EACXA,EAAM6C,QAAOD,GAAa,GAC/B5C,EAAQA,EAAM/lJ,KACdyvC,GAAS,EAEX72C,EAAO+vJ,WAAaA,EACpBH,EAAQj7D,EAAQtkH,GAAO,EAAMA,EAAMmB,OAAQwuB,EAAQ,GAAI8vJ,EAAO9uB,QAI9D3wJ,EAAMg9K,YACNh9K,EAAMk/K,oBAAsB,KACxBO,EAAO1oJ,MACT/2B,EAAMi9K,mBAAqBwC,EAAO1oJ,KAClC0oJ,EAAO1oJ,KAAO,MAEd/2B,EAAMi9K,mBAAqB,IAAIJ,EAAc78K,GAE/CA,EAAMm/K,qBAAuB,CAC/B,KAAO,CAEL,KAAOrC,GAAO,CACZ,IAAItpJ,EAAQspJ,EAAMtpJ,MACdC,EAAWqpJ,EAAMrpJ,SACjBC,EAAKopJ,EAAMx0E,SASf,GAPAi3E,EAAQj7D,EAAQtkH,GAAO,EADbA,EAAMi+K,WAAa,EAAIzqJ,EAAMryB,OACJqyB,EAAOC,EAAUC,GACpDopJ,EAAQA,EAAM/lJ,KACd/2B,EAAMm/K,uBAKFn/K,EAAMk7J,QACR,KAEJ,CACc,OAAV4hB,IAAgB98K,EAAMk/K,oBAAsB,KAClD,CACAl/K,EAAM++K,gBAAkBjC,EACxB98K,EAAMw+K,kBAAmB,CAC3B,CAoCA,SAASM,EAAW9+K,GAClB,OAAOA,EAAMwzK,QAA2B,IAAjBxzK,EAAMmB,QAA0C,OAA1BnB,EAAM++K,kBAA6B/+K,EAAMwvB,WAAaxvB,EAAMk7J,OAC3G,CACA,SAAS0kB,EAAUt7D,EAAQtkH,GACzBskH,EAAO9mF,QAAO,SAAUtU,GACtBlpB,EAAMg9K,YACF9zJ,GACFyqJ,EAAervD,EAAQp7F,GAEzBlpB,EAAM0zK,aAAc,EACpBpvD,EAAOlN,KAAK,aACZwnE,EAAYt6D,EAAQtkH,EACtB,GACF,CAaA,SAAS4+K,EAAYt6D,EAAQtkH,GAC3B,IAAI6/K,EAAOf,EAAW9+K,GACtB,GAAI6/K,IAdN,SAAmBv7D,EAAQtkH,GACpBA,EAAM0zK,aAAgB1zK,EAAMyzK,cACF,oBAAlBnvD,EAAO9mF,QAA0Bx9B,EAAM0vB,WAKhD1vB,EAAM0zK,aAAc,EACpBpvD,EAAOlN,KAAK,eALZp3G,EAAMg9K,YACNh9K,EAAMyzK,aAAc,EACpBtjJ,EAAQomE,SAASqpF,EAAWt7D,EAAQtkH,IAM1C,CAII0nK,CAAUpjD,EAAQtkH,GACM,IAApBA,EAAMg9K,YACRh9K,EAAMwvB,UAAW,EACjB80F,EAAOlN,KAAK,UACRp3G,EAAM8zK,cAAa,CAGrB,IAAIF,EAAStvD,EAAOQ,iBACf8uD,GAAUA,EAAOE,aAAeF,EAAO7uD,aAC1CT,EAAOnzF,SAEX,CAGJ,OAAO0uJ,CACT,CAxfAz/K,EAAQ,MAARA,CAAoB+8K,EAAU3C,GA4G9B4C,EAAclzK,UAAU41K,UAAY,WAGlC,IAFA,IAAIprI,EAAUp1C,KAAKy/K,gBACf14K,EAAM,GACHquC,GACLruC,EAAIO,KAAK8tC,GACTA,EAAUA,EAAQ3d,KAEpB,OAAO1wB,CACT,EACA,WACE,IACE/D,OAAOC,eAAe66K,EAAclzK,UAAW,SAAU,CACvDgB,IAAKmyK,EAAaC,WAAU,WAC1B,OAAOh+K,KAAKwgL,WACd,GAAG,6EAAmF,YAE1F,CAAE,MAAO/gJ,GAAI,CACd,CARD,GAasB,oBAAX6C,QAAyBA,OAAOm+I,aAAiE,oBAA3Ct4B,SAASv9I,UAAU03B,OAAOm+I,cACzFvC,EAAkB/1B,SAASv9I,UAAU03B,OAAOm+I,aAC5Cz9K,OAAOC,eAAe46K,EAAUv7I,OAAOm+I,YAAa,CAClDv9K,MAAO,SAAew6D,GACpB,QAAIwgH,EAAgBpnK,KAAK9W,KAAM09D,IAC3B19D,OAAS69K,IACNngH,GAAUA,EAAO4nD,0BAA0Bw4D,EACpD,KAGFI,EAAkB,SAAyBxgH,GACzC,OAAOA,aAAkB19D,IAC3B,EA+BF69K,EAASjzK,UAAUi8E,KAAO,WACxBwtF,EAAer0K,KAAM,IAAIq+K,EAC3B,EAyBAR,EAASjzK,UAAUE,MAAQ,SAAUopB,EAAOC,EAAUC,GACpD,IAzNqBxlB,EAyNjBlO,EAAQV,KAAKslH,eACb7sF,GAAM,EACN4nJ,GAAS3/K,EAAMi+K,aA3NE/vK,EA2N0BslB,EA1NxC3vB,EAAOy6B,SAASpwB,IAAQA,aAAeqvK,GAwO9C,OAbIoC,IAAU97K,EAAOy6B,SAAS9K,KAC5BA,EAhOJ,SAA6BA,GAC3B,OAAO3vB,EAAOC,KAAK0vB,EACrB,CA8NYwsJ,CAAoBxsJ,IAEN,oBAAbC,IACTC,EAAKD,EACLA,EAAW,MAETksJ,EAAOlsJ,EAAW,SAAmBA,IAAUA,EAAWzzB,EAAMs+K,iBAClD,oBAAP5qJ,IAAmBA,EAAKqqJ,GAC/B/9K,EAAMwzK,OArCZ,SAAuBlvD,EAAQ5wF,GAC7B,IAAIg2H,EAAK,IAAIm0B,EAEblK,EAAervD,EAAQolC,GACvBv5H,EAAQomE,SAAS7iE,EAAIg2H,EACvB,CAgCoBu2B,CAAc3gL,KAAMo0B,IAAaisJ,GA3BrD,SAAoBr7D,EAAQtkH,EAAOwzB,EAAOE,GACxC,IAAIg2H,EAMJ,OALc,OAAVl2H,EACFk2H,EAAK,IAAIk0B,EACiB,kBAAVpqJ,GAAuBxzB,EAAMi+K,aAC7Cv0B,EAAK,IAAIxH,EAAqB,QAAS,CAAC,SAAU,UAAW1uH,KAE3Dk2H,IACFiqB,EAAervD,EAAQolC,GACvBv5H,EAAQomE,SAAS7iE,EAAIg2H,IACd,EAGX,CAc8Dw2B,CAAW5gL,KAAMU,EAAOwzB,EAAOE,MACzF1zB,EAAMg9K,YACNjlJ,EAiDJ,SAAuBusF,EAAQtkH,EAAO2/K,EAAOnsJ,EAAOC,EAAUC,GAC5D,IAAKisJ,EAAO,CACV,IAAIQ,EArBR,SAAqBngL,EAAOwzB,EAAOC,GAC5BzzB,EAAMi+K,aAAsC,IAAxBj+K,EAAMq+K,eAA4C,kBAAV7qJ,IAC/DA,EAAQ3vB,EAAOC,KAAK0vB,EAAOC,IAE7B,OAAOD,CACT,CAgBmB4sJ,CAAYpgL,EAAOwzB,EAAOC,GACrCD,IAAU2sJ,IACZR,GAAQ,EACRlsJ,EAAW,SACXD,EAAQ2sJ,EAEZ,CACA,IAAI1uK,EAAMzR,EAAMi+K,WAAa,EAAIzqJ,EAAMryB,OACvCnB,EAAMmB,QAAUsQ,EAChB,IAAIsmB,EAAM/3B,EAAMmB,OAASnB,EAAMqnK,cAE1BtvI,IAAK/3B,EAAMm+K,WAAY,GAC5B,GAAIn+K,EAAMk7J,SAAWl7J,EAAMu+K,OAAQ,CACjC,IAAIjpJ,EAAOt1B,EAAMk/K,oBACjBl/K,EAAMk/K,oBAAsB,CAC1B1rJ,MAAOA,EACPC,SAAUA,EACVksJ,MAAOA,EACPr3E,SAAU50E,EACVqD,KAAM,MAEJzB,EACFA,EAAKyB,KAAO/2B,EAAMk/K,oBAElBl/K,EAAM++K,gBAAkB/+K,EAAMk/K,oBAEhCl/K,EAAMm/K,sBAAwB,CAChC,MACEI,EAAQj7D,EAAQtkH,GAAO,EAAOyR,EAAK+hB,EAAOC,EAAUC,GAEtD,OAAOqE,CACT,CAlFUsoJ,CAAc/gL,KAAMU,EAAO2/K,EAAOnsJ,EAAOC,EAAUC,IAEpDqE,CACT,EACAolJ,EAASjzK,UAAUo2K,KAAO,WACxBhhL,KAAKslH,eAAe25D,QACtB,EACApB,EAASjzK,UAAUq2K,OAAS,WAC1B,IAAIvgL,EAAQV,KAAKslH,eACb5kH,EAAMu+K,SACRv+K,EAAMu+K,SACDv+K,EAAMk7J,SAAYl7J,EAAMu+K,QAAWv+K,EAAMw+K,mBAAoBx+K,EAAM++K,iBAAiBC,EAAY1/K,KAAMU,GAE/G,EACAm9K,EAASjzK,UAAUs2K,mBAAqB,SAA4B/sJ,GAGlE,GADwB,kBAAbA,IAAuBA,EAAWA,EAASvf,iBAChD,CAAC,MAAO,OAAQ,QAAS,QAAS,SAAU,SAAU,OAAQ,QAAS,UAAW,WAAY,OAAOL,SAAS4f,EAAW,IAAIvf,gBAAkB,GAAI,MAAM,IAAI4pK,EAAqBrqJ,GAExL,OADAn0B,KAAKslH,eAAe05D,gBAAkB7qJ,EAC/Bn0B,IACT,EACAgD,OAAOC,eAAe46K,EAASjzK,UAAW,iBAAkB,CAI1D8xB,YAAY,EACZ9wB,IAAK,WACH,OAAO5L,KAAKslH,gBAAkBtlH,KAAKslH,eAAek7D,WACpD,IAQFx9K,OAAOC,eAAe46K,EAASjzK,UAAW,wBAAyB,CAIjE8xB,YAAY,EACZ9wB,IAAK,WACH,OAAO5L,KAAKslH,eAAeyiD,aAC7B,IAuKF8V,EAASjzK,UAAUy9J,OAAS,SAAUn0I,EAAOC,EAAUC,GACrDA,EAAG,IAAIgzI,EAA2B,YACpC,EACAyW,EAASjzK,UAAUm1K,QAAU,KAC7BlC,EAASjzK,UAAU4iB,IAAM,SAAU0G,EAAOC,EAAUC,GAClD,IAAI1zB,EAAQV,KAAKslH,eAmBjB,MAlBqB,oBAAVpxF,GACTE,EAAKF,EACLA,EAAQ,KACRC,EAAW,MACkB,oBAAbA,IAChBC,EAAKD,EACLA,EAAW,MAEC,OAAVD,QAA4BpyB,IAAVoyB,GAAqBl0B,KAAK8K,MAAMopB,EAAOC,GAGzDzzB,EAAMu+K,SACRv+K,EAAMu+K,OAAS,EACfj/K,KAAKihL,UAIFvgL,EAAMwzK,QAyDb,SAAqBlvD,EAAQtkH,EAAO0zB,GAClC1zB,EAAMwzK,QAAS,EACfoL,EAAYt6D,EAAQtkH,GAChB0zB,IACE1zB,EAAMwvB,SAAUW,EAAQomE,SAAS7iE,GAAS4wF,EAAOhO,KAAK,SAAU5iF,IAEtE1zB,EAAMq4E,OAAQ,EACdisC,EAAOxvD,UAAW,CACpB,CAjEqB2rH,CAAYnhL,KAAMU,EAAO0zB,GACrCp0B,IACT,EACAgD,OAAOC,eAAe46K,EAASjzK,UAAW,iBAAkB,CAI1D8xB,YAAY,EACZ9wB,IAAK,WACH,OAAO5L,KAAKslH,eAAezjH,MAC7B,IAqEFmB,OAAOC,eAAe46K,EAASjzK,UAAW,YAAa,CAIrD8xB,YAAY,EACZ9wB,IAAK,WACH,YAA4B9J,IAAxB9B,KAAKslH,gBAGFtlH,KAAKslH,eAAel1F,SAC7B,EACA9Z,IAAK,SAAapT,GAGXlD,KAAKslH,iBAMVtlH,KAAKslH,eAAel1F,UAAYltB,EAClC,IAEF26K,EAASjzK,UAAUinB,QAAUssJ,EAAYtsJ,QACzCgsJ,EAASjzK,UAAUw2K,WAAajD,EAAYlK,UAC5C4J,EAASjzK,UAAU09J,SAAW,SAAU1+I,EAAKwK,GAC3CA,EAAGxK,EACL,8BC/nBA5mB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQuhL,sBAAmB,EAI3B,MAAMA,UAAyBx9K,MAC3BoK,WAAAA,CAAYxN,EAAKiuD,EAAM/qD,GACnByC,MAAM3F,GACNT,KAAK2D,KAAOA,EACZ3D,KAAK0uD,KAAOA,EAEZ1rD,OAAOknG,eAAelqG,KAAMqhL,EAAiBz2K,UACjD,CACA02K,OAAAA,GACI,OAAOthL,KAAK0uD,IAChB,CACA6yH,OAAAA,GACI,OAAOvhL,KAAK2D,IAChB,EAEJ7D,EAAQuhL,iBAAmBA,8BCpB3Br+K,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0hL,yBAAsB,EAiE9B1hL,EAAQ0hL,oBA7DR,MACIvzK,WAAAA,CAAYmsD,GACRp6D,KAAKyhL,QAAU,KACfzhL,KAAK2D,KAAO,CAAC,EACb3D,KAAKo6D,WAAaA,CACtB,CACAjrD,IAAAA,GACI,MAAMuyK,EAAe9qJ,OAAO4jC,aAAaC,QAAQz6D,KAAKo6D,YAStD,OARoB,MAAhBsnH,GACA1hL,KAAKyhL,QAAU9zJ,KAAKwE,MAAMuvJ,GACN,MAAhB1hL,KAAKyhL,UACLzhL,KAAKyhL,QAAU,CAAC,IAGpBzhL,KAAKyhL,QAAU,CAAC,EAEbp9K,QAAQC,SACnB,CACAq9K,QAAAA,CAAS/8K,EAAM84D,GAGX,OAFA19D,KAAK2D,KAAKiB,GAAQ84D,EAClB19D,KAAKyhL,QAAQ78K,GAAQ84D,EAAO1N,YACrBhwD,KAAKsnB,MAChB,CACAs6J,WAAAA,CAAY5pK,GAKR,OAJAA,EAAIjJ,SAAQwC,IACRvR,KAAK2D,KAAK4N,EAAEwD,IAAMxD,EAAEmsD,OACpB19D,KAAKyhL,QAAQlwK,EAAEwD,IAAMxD,EAAEmsD,OAAO1N,WAAW,IAEtChwD,KAAKsnB,MAChB,CACAu6J,UAAAA,CAAWj9K,GACP,OAA0B,MAAtB5E,KAAKyhL,QAAQ78K,IACU,MAAnB5E,KAAK2D,KAAKiB,WACH5E,KAAK2D,KAAKiB,UACd5E,KAAKyhL,QAAQ78K,GACb5E,KAAKsnB,QAETjjB,QAAQC,SACnB,CACAw9K,aAAAA,CAAcC,GAQV,OAPAA,EAAQhzK,SAAQnK,IACc,MAAtB5E,KAAKyhL,QAAQ78K,KACU,MAAnB5E,KAAK2D,KAAKiB,WACH5E,KAAK2D,KAAKiB,UACd5E,KAAKyhL,QAAQ78K,GACxB,IAEG5E,KAAKsnB,MAChB,CACA06J,QAAAA,CAASr6K,GACL,OAAOtD,QAAQC,QAAQtB,OAAOoc,KAAKpf,KAAKyhL,SAAS/4K,KAAI6I,IACjD,MAAM0wK,EAAe,IAAIt6K,EAAK3H,KAAKyhL,QAAQlwK,IAE3C,OADAvR,KAAK2D,KAAK4N,GAAK0wK,EACRA,CAAY,IAE3B,CACA36J,IAAAA,GAEI,OADAsP,OAAO4jC,aAAa0nH,QAAQliL,KAAKo6D,WAAYzsC,KAAKC,UAAU5tB,KAAKyhL,UAC1Dp9K,QAAQC,SACnB,+BC5DJxE,EAAQ,OAAY,EAUpBA,EAAQ,EATQ,CACd,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,gaCVXkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQqiL,sBAAmB,EAC3B,MAAMC,EAAsBthL,EAAQ,OAC9BuhL,EAAuBvhL,EAAQ,OAoOrChB,EAAQqiL,iBAnOR,MACI,yBAAIG,GACA,OAAOtiL,KAAKuiL,QAAQD,qBACxB,CACA,cAAIxsH,GACA,OAAO91D,KAAKuiL,QAAQzsH,UACxB,CACA,cAAIkoB,GACA,OAAOh+E,KAAKuiL,QAAQvkG,UACxB,CACA,kBAAI2xC,GACA,OAAO3vH,KAAKuiL,QAAQ5yD,cACxB,CACA1hH,WAAAA,CAAYs0K,EAASjhK,GACjBthB,KAAKuiL,QAAUA,EACfviL,KAAKshB,gBAAkBA,EACvBthB,KAAKyhB,OAAS,IAAI4gK,EAAqBG,mBAAmBD,EAAQ9gK,OAAQH,EAC9E,CAMAmhK,qBAAAA,CAAsB1oB,GAClB,OAAO/5J,KAAKuiL,QAAQE,sBAAsB1oB,EAC9C,CAMA2oB,uBAAAA,CAAwBj5D,GACpB,OAAOzpH,KAAKuiL,QAAQG,wBAAwBj5D,EAChD,CAMAk5D,YAAAA,CAAalvH,GACT,OAAOzzD,KAAKuiL,QAAQI,aAAalvH,EACrC,CAOAmvH,mBAAAA,CAAoBnvH,EAAO60D,GACvB,OAAOtoH,KAAKuiL,QAAQK,oBAAoBnvH,EAAO60D,EACnD,CAMAu6D,wBAAAA,CAAyBp5D,GACrB,OAAOzpH,KAAKuiL,QAAQM,yBAAyBp5D,EACjD,CAIAq5D,aAAAA,GACI,OAAO9iL,KAAKuiL,QAAQO,cAAc9iL,KAAKshB,gBAC3C,CAOAyhK,UAAAA,CAAWp7K,EAAMQ,GACb,OAAOnI,KAAKuiL,QAAQQ,WAAW/iL,KAAKshB,gBAAiB3Z,EAAMQ,EAC/D,CAOA66K,UAAAA,CAAWr7K,EAAMQ,GACb,OAAOnI,KAAKuiL,QAAQS,WAAWhjL,KAAKshB,gBAAiB3Z,EAAMQ,EAC/D,CAMA86K,kBAAAA,CAAmB3oH,GACf,MAAMtiD,EAAM,GAMZ,OALAhY,KAAKkjL,2BAA2B5oH,GAAUvrD,SAAQs3F,IAC9C,MAAMl+F,EAAQnI,KAAKuiL,QAAQ7gK,SAAS1hB,KAAKshB,mBAAmB+kF,GAC/C,MAATl+F,GACA6P,EAAI1Q,KAAKa,EAAM,IAEhB6P,CACX,CAMAkrK,0BAAAA,CAA2B5oH,GACvB,OAAOt6D,KAAKuiL,QAAQW,2BAA2BljL,KAAKshB,gBAAiBg5C,EACzE,CACA6oH,eAAAA,CAAgBz/K,EAAQ2iG,EAAc3/F,EAASlF,EAAQssH,EAAoB1iG,EAAeyiG,EAASD,GAC/F,OAAO5tH,KAAKuiL,QAAQY,gBAAgBnjL,KAAKshB,gBAAiB5d,EAAQ2iG,EAAc3/F,EAASlF,EAAQssH,EAAoB1iG,EAAeyiG,EAASD,EACjJ,CACAw1D,iBAAAA,CAAkB1/K,EAAQ2iG,EAAcg9E,EAAgBC,EAAeC,EAAmBC,EAAe51D,GACrG,OAAO5tH,KAAKuiL,QAAQa,kBAAkBpjL,KAAKshB,gBAAiB5d,EAAQ2iG,EAAcg9E,EAAgBC,EAAeC,EAAmBC,EAAe51D,EACvJ,CACA61D,yBAAAA,CAA0B//K,EAAQ2iG,EAAcq9E,EAAUliL,EAAQk5B,EAAS4oJ,EAAeC,EAAmBC,EAAe31D,EAASD,GACjI,OAAO5tH,KAAKuiL,QAAQkB,0BAA0BzjL,KAAKshB,gBAAiB5d,EAAQ2iG,EAAcq9E,EAAUliL,EAAQk5B,EAAS4oJ,EAAeC,EAAmBC,EAAe31D,EAASD,EACnL,CACA+1D,iBAAAA,CAAkBjgL,EAAQ2iG,EAAc7kG,EAAQ2sH,EAAUP,GACtD,OAAO5tH,KAAKuiL,QAAQoB,kBAAkB3jL,KAAKshB,gBAAiB5d,EAAQ2iG,EAAc7kG,EAAQ2sH,EAAUP,EACxG,CACAg2D,mBAAAA,CAAoBlgL,EAAQ2iG,EAAc7kG,EAAQ2sH,EAAUO,EAAiBd,GACzE,OAAO5tH,KAAKuiL,QAAQqB,oBAAoB5jL,KAAKshB,gBAAiB5d,EAAQ2iG,EAAc7kG,EAAQ2sH,EAAUO,EAAiBd,EAC3H,CACAi2D,2BAAAA,CAA4BngL,EAAQ2iG,EAAc5yC,EAAOjyD,EAAQ2sH,EAAUP,GACvE,OAAO5tH,KAAKuiL,QAAQsB,4BAA4B7jL,KAAKshB,gBAAiB5d,EAAQ2iG,EAAc5yC,EAAOjyD,EAAQ2sH,EAAUP,EACzH,CACAk2D,yBAAAA,CAA0BpgL,EAAQlC,EAAQuiL,GACtC,OAAO/jL,KAAKuiL,QAAQuB,0BAA0B9jL,KAAKshB,gBAAiB5d,EAAQlC,EAAQuiL,EACxF,CAcAr6K,MAAAA,CAAOhG,EAAQsgL,EAAUC,EAAUziL,EAAQqsH,EAASq2D,GAChD,OAAOlkL,KAAKuiL,QAAQ74K,OAAOhG,EAAQsgL,EAAUC,EAAUziL,EAAQqsH,EAASq2D,EAC5E,CAIAC,WAAAA,CAAYzgL,GACR,OAAO1D,KAAKuiL,QAAQ4B,YAAYnkL,KAAKshB,gBAAiB5d,EAC1D,CAIA0gL,kBAAAA,CAAmB1gL,GACf,OAAO1D,KAAKuiL,QAAQ6B,mBAAmBpkL,KAAKshB,gBAAiB5d,EACjE,CAIA2gL,kBAAAA,CAAmB3gL,GACf,OAAO1D,KAAKuiL,QAAQ8B,mBAAmBrkL,KAAKshB,gBAAiB5d,EACjE,CAIA4gL,WAAAA,CAAYvvK,EAAIrR,GACZ,OAAO1D,KAAKuiL,QAAQ+B,YAAYvvK,EAAI/U,KAAKshB,gBAAiB5d,EAC9D,CAIA,gBAAM6gL,CAAW7gL,GACb,OAAO1D,KAAKuiL,QAAQgC,WAAWvkL,KAAKshB,gBAAiB5d,EACzD,CAIA80C,UAAAA,CAAW90C,EAAQyE,GACf,IAAIk+F,EACJ,GAAuB,kBAAXl+F,EACRk+F,EAAel+F,MAEd,CACD,GAAInI,KAAKshB,kBAAoBnZ,EAAMoa,QAC/B,MAAM,IAAI1e,MAAM,oCACpBwiG,EAAel+F,EAAMzB,OACzB,CACA,OAAO1G,KAAKuiL,QAAQ/pI,WAAWx4C,KAAKshB,gBAAiB5d,EAAQ2iG,EACjE,CAIAm+E,mBAAAA,CAAoB9gL,EAAQyE,EAAO4tD,GAC/B,IAAIswC,EACJ,GAAuB,kBAAXl+F,EACRk+F,EAAel+F,MAEd,CACD,GAAInI,KAAKshB,kBAAoBnZ,EAAMoa,QAC/B,MAAM,IAAI1e,MAAM,oCACpBwiG,EAAel+F,EAAMzB,OACzB,CACA,OAAO1G,KAAKuiL,QAAQiC,oBAAoBxkL,KAAKshB,gBAAiB5d,EAAQ2iG,EAActwC,EACxF,CAIA0uH,gBAAAA,CAAiB/gL,GACb,OAAO1D,KAAKuiL,QAAQkC,iBAAiBzkL,KAAKshB,gBAAiB5d,EAC/D,CAIAkkB,cAAAA,GACI,OAAO5nB,KAAKuiL,QAAQ36J,eAAe5nB,KAAKshB,gBAC5C,CAIAojK,qBAAAA,GACI,OAAO1kL,KAAKuiL,QAAQmC,sBAAsB1kL,KAAKshB,gBACnD,CACAqjK,UAAAA,CAAWjhL,GACP,OAAO,IAAI0+K,EAAoBwC,kBAAkB5kL,KAAM0D,EAC3D,CACA6lG,YAAAA,GACI,OAAOvpG,KAAKuiL,QAAQh5E,aAAavpG,KAAKshB,gBAC1C,+BCjOJxhB,EAAQ,OAA2B,EAWnCA,EAAQ,EAVuB,CAC7B,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,gLAEP,SAAY,kCCPhB,SAAgB+kL,EAAat0K,GAC3B,IAAK4e,OAAOivC,cAAc7tD,GAAI,MAAM,IAAI1M,MAAM,kBAAkB0M,IAClE,CAWA,SAASixC,EAAQ/wC,GACf,OACEA,aAAa6f,YACP,MAAL7f,GAA0B,kBAANA,GAAyC,eAAvBA,EAAExC,YAAY2D,IAEzD,CAqBA,SAAS0Q,IACP,MAAMvN,EAAMtE,GAAWA,EAEjBwlB,EAAOA,CAACxlB,EAAQS,IAAYE,GAAWX,EAAES,EAAEE,IACjD,QAAAnH,EAAArI,UAAAC,OAJ8CsT,EAAO,IAAAhL,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAP+K,EAAO/K,GAAAxI,UAAAwI,GAQrD,MAAO,CAAE+V,OAHMhL,EAAKzM,KAAKsI,GAAMA,EAAEmP,SAAQ83E,YAAYhiE,EAAMlhB,GAG1C0K,OADFtK,EAAKzM,KAAKsI,GAAMA,EAAEyO,SAAQxW,OAAOgtB,EAAMlhB,GAExD,CAQA,SAASb,EAASA,GAChB,MAAO,CACLiM,OAAS2kK,IACP,IAAK36K,MAAMi3B,QAAQ0jJ,IAAYA,EAAOjjL,QAA+B,kBAAdijL,EAAO,GAC5D,MAAM,IAAIjhL,MAAM,uDAClB,OAAOihL,EAAOp8K,KAAKsC,IAEjB,GADA65K,EAAa75K,GACTA,EAAI,GAAKA,GAAKkJ,EAASrS,OACzB,MAAM,IAAIgC,MAAM,iCAAiCmH,gBAAgBkJ,EAASrS,WAC5E,OAAOqS,EAASlJ,EAAG,GACnB,EAEJyU,OAASxf,IACP,IAAKkK,MAAMi3B,QAAQnhC,IAAWA,EAAM4B,QAA8B,kBAAb5B,EAAM,GACzD,MAAM,IAAI4D,MAAM,oDAClB,OAAO5D,EAAMyI,KAAKq8K,IAChB,GAAsB,kBAAXA,EACT,MAAM,IAAIlhL,MAAM,uCAAuCkhL,KACzD,MAAMnkJ,EAAQ1sB,EAASK,QAAQwwK,GAC/B,IAAe,IAAXnkJ,EAAc,MAAM,IAAI/8B,MAAM,oBAAoBkhL,gBAAqB7wK,KAC3E,OAAO0sB,CAAK,GACZ,EAGR,CAKA,SAASs8B,IAAmB,IAAd8nH,EAASpjL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACxB,GAAyB,kBAAdojL,EAAwB,MAAM,IAAInhL,MAAM,mCACnD,MAAO,CACLsc,OAAS3b,IACP,IAAK2F,MAAMi3B,QAAQ58B,IAAUA,EAAK3C,QAA6B,kBAAZ2C,EAAK,GACtD,MAAM,IAAIX,MAAM,gDAClB,IAAK,IAAImH,KAAKxG,EACZ,GAAiB,kBAANwG,EAAgB,MAAM,IAAInH,MAAM,iCAAiCmH,KAC9E,OAAOxG,EAAK04D,KAAK8nH,EAAU,EAE7BvlK,OAASsS,IACP,GAAkB,kBAAPA,EAAiB,MAAM,IAAIluB,MAAM,sCAC5C,OAAOkuB,EAAGxpB,MAAMy8K,EAAU,EAGhC,CAMA,SAASpiJ,EAAQ9L,GAAuB,IAATmuJ,EAAGrjL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAEnC,GADAijL,EAAa/tJ,GACM,kBAARmuJ,EAAkB,MAAM,IAAIphL,MAAM,gCAC7C,MAAO,CACLsc,MAAAA,CAAOxc,GACL,IAAKwG,MAAMi3B,QAAQz9B,IAAUA,EAAK9B,QAA6B,kBAAZ8B,EAAK,GACtD,MAAM,IAAIE,MAAM,mDAClB,IAAK,IAAImH,KAAKrH,EACZ,GAAiB,kBAANqH,EAAgB,MAAM,IAAInH,MAAM,oCAAoCmH,KACjF,KAAQrH,EAAK9B,OAASi1B,EAAQ,GAAGnzB,EAAK2D,KAAK29K,GAC3C,OAAOthL,CACT,EACA8b,MAAAA,CAAOxf,GACL,IAAKkK,MAAMi3B,QAAQnhC,IAAWA,EAAM4B,QAA8B,kBAAb5B,EAAM,GACzD,MAAM,IAAI4D,MAAM,mDAClB,IAAK,IAAImH,KAAK/K,EACZ,GAAiB,kBAAN+K,EAAgB,MAAM,IAAInH,MAAM,oCAAoCmH,KACjF,IAAIwiB,EAAMvtB,EAAM4B,OAChB,GAAK2rB,EAAMsJ,EAAQ,EACjB,MAAM,IAAIjzB,MAAM,6DAClB,KAAO2pB,EAAM,GAAKvtB,EAAMutB,EAAM,KAAOy3J,EAAKz3J,IACxC,MAAQA,EAAM,GAAKsJ,EAAQ,GACzB,MAAM,IAAIjzB,MAAM,gDAEpB,OAAO5D,EAAMyN,MAAM,EAAG8f,EACxB,EAEJ,CAKA,SAAS03J,EAAanuE,GACpB,GAAkB,oBAAPA,EAAmB,MAAM,IAAIlzG,MAAM,mCAC9C,MAAO,CAAEsc,OAAS3b,GAAYA,EAAMib,OAASsS,GAAUglF,EAAGhlF,GAC5D,CAMA,SAASozJ,EAAaxhL,EAAgBa,EAAcutB,GAElD,GAAIvtB,EAAO,EAAG,MAAM,IAAIX,MAAM,4BAA4BW,iCAC1D,GAAIutB,EAAK,EAAG,MAAM,IAAIluB,MAAM,0BAA0BkuB,iCACtD,IAAK5nB,MAAMi3B,QAAQz9B,GAAO,MAAM,IAAIE,MAAM,sCAC1C,IAAKF,EAAK9B,OAAQ,MAAO,GACzB,IAAIsuB,EAAM,EACV,MAAMyB,EAAM,GACNkzJ,EAAS36K,MAAM3F,KAAKb,GAK1B,IAJAmhL,EAAO/1K,SAASwG,IAEd,GADAsvK,EAAatvK,GACTA,EAAI,GAAKA,GAAK/Q,EAAM,MAAM,IAAIX,MAAM,kBAAkB0R,IAAI,MAEnD,CACX,IAAImD,EAAQ,EACR0hB,GAAO,EACX,IAAK,IAAIpvB,EAAImlB,EAAKnlB,EAAI85K,EAAOjjL,OAAQmJ,IAAK,CACxC,MAAMgjJ,EAAQ82B,EAAO95K,GACfo6K,EAAY5gL,EAAOkU,EAAQs1I,EACjC,IACG7+H,OAAOivC,cAAcgnH,IACrB5gL,EAAOkU,EAASlU,IAASkU,GAC1B0sK,EAAYp3B,IAAUxpJ,EAAOkU,EAE7B,MAAM,IAAI7U,MAAM,gCAElB6U,EAAQ0sK,EAAYrzJ,EACpB,MAAMszJ,EAAUj8K,KAAKC,MAAM+7K,EAAYrzJ,GAEvC,GADA+yJ,EAAO95K,GAAKq6K,GACPl2J,OAAOivC,cAAcinH,IAAYA,EAAUtzJ,EAAKrZ,IAAU0sK,EAC7D,MAAM,IAAIvhL,MAAM,gCACbu2B,IACKirJ,EACLjrJ,GAAO,EADOjK,EAAMnlB,EAE3B,CAEA,GADA4mB,EAAItqB,KAAKoR,GACL0hB,EAAM,KACZ,CACA,IAAK,IAAIpvB,EAAI,EAAGA,EAAIrH,EAAK9B,OAAS,GAAiB,IAAZ8B,EAAKqH,GAAUA,IAAK4mB,EAAItqB,KAAK,GACpE,OAAOsqB,EAAIhkB,SACb,oWA3LA9N,EAAAA,aAAA+kL,EA6LA,MAAM5zI,EAAiCA,CAACxgC,EAAWS,IAAwBA,EAAQ+/B,EAAI//B,EAAGT,EAAIS,GAAfT,EACzE60K,EAAwCA,CAAC9gL,EAAcutB,IAC3DvtB,GAAQutB,EAAKkf,EAAIzsC,EAAMutB,IAKzB,SAASwzJ,EAAc5hL,EAAgBa,EAAcutB,EAAY6Q,GAC/D,IAAKz4B,MAAMi3B,QAAQz9B,GAAO,MAAM,IAAIE,MAAM,uCAC1C,GAAIW,GAAQ,GAAKA,EAAO,GAAI,MAAM,IAAIX,MAAM,6BAA6BW,KACzE,GAAIutB,GAAM,GAAKA,EAAK,GAAI,MAAM,IAAIluB,MAAM,2BAA2BkuB,KACnE,GAAIuzJ,EAAY9gL,EAAMutB,GAAM,GAC1B,MAAM,IAAIluB,MACR,sCAAsCW,QAAWutB,eAAgBuzJ,EAAY9gL,EAAMutB,MAGvF,IAAIrZ,EAAQ,EACRyX,EAAM,EACV,MAAMwe,EAAO,GAAK5c,EAAK,EACjBH,EAAgB,GACtB,IAAK,MAAMrhB,KAAK5M,EAAM,CAEpB,GADAkhL,EAAat0K,GACTA,GAAK,GAAK/L,EAAM,MAAM,IAAIX,MAAM,oCAAoC0M,UAAU/L,KAElF,GADAkU,EAASA,GAASlU,EAAQ+L,EACtB4f,EAAM3rB,EAAO,GAAI,MAAM,IAAIX,MAAM,qCAAqCssB,UAAY3rB,KAEtF,IADA2rB,GAAO3rB,EACA2rB,GAAO4B,EAAI5B,GAAO4B,EAAIH,EAAItqB,MAAOoR,GAAUyX,EAAM4B,EAAO4c,KAAU,GACzEj2B,GAAS,GAAKyX,EAAM,CACtB,CAEA,GADAzX,EAASA,GAAUqZ,EAAK5B,EAAQwe,GAC3B/L,GAAWzS,GAAO3rB,EAAM,MAAM,IAAIX,MAAM,kBAC7C,IAAK++B,GAAWlqB,EAAO,MAAM,IAAI7U,MAAM,qBAAqB6U,KAE5D,OADIkqB,GAAWzS,EAAM,GAAGyB,EAAItqB,KAAKoR,IAAU,GACpCkZ,CACT,CAKA,SAAS4zJ,EAAMrkJ,GAEb,OADA0jJ,EAAa1jJ,GACN,CACLhhB,OAASg+B,IACP,IAAKqD,EAAQrD,GAAQ,MAAM,IAAIt6C,MAAM,2CACrC,OAAOshL,EAAah7K,MAAM3F,KAAK25C,GAAQ,IAAQhd,EAAI,EAErD1hB,OAASqlK,IACP,IAAK36K,MAAMi3B,QAAQ0jJ,IAAYA,EAAOjjL,QAA+B,kBAAdijL,EAAO,GAC5D,MAAM,IAAIjhL,MAAM,iDAClB,OAAOysB,WAAW9rB,KAAK2gL,EAAaL,EAAQ3jJ,EAAK,KAAQ,EAG/D,CAOA,SAASskJ,EAAO3uJ,GAAgC,IAAlB4uJ,EAAU9jL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAEtC,GADAijL,EAAa/tJ,GACTA,GAAQ,GAAKA,EAAO,GAAI,MAAM,IAAIjzB,MAAM,qCAC5C,GAAIyhL,EAAY,EAAGxuJ,GAAQ,IAAMwuJ,EAAYxuJ,EAAM,GAAK,GACtD,MAAM,IAAIjzB,MAAM,0BAClB,MAAO,CACLsc,OAASg+B,IACP,IAAKqD,EAAQrD,GAAQ,MAAM,IAAIt6C,MAAM,4CACrC,OAAO0hL,EAAcp7K,MAAM3F,KAAK25C,GAAQ,EAAGrnB,GAAO4uJ,EAAW,EAE/DjmK,OAASqlK,IACP,IAAK36K,MAAMi3B,QAAQ0jJ,IAAYA,EAAOjjL,QAA+B,kBAAdijL,EAAO,GAC5D,MAAM,IAAIjhL,MAAM,kDAClB,OAAOysB,WAAW9rB,KAAK+gL,EAAcT,EAAQhuJ,EAAM,EAAG4uJ,GAAY,EAGxE,CAMA,SAASC,EAA+C5uE,GACtD,GAAkB,oBAAPA,EAAmB,MAAM,IAAIlzG,MAAM,uCAC9C,OAAO,WACL,IAAI,QAAAglB,EAAAjnB,UAAAC,OADcsT,EAAsB,IAAAhL,MAAA0e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAtB3T,EAAsB2T,GAAAlnB,UAAAknB,GAEtC,OAAOiuF,EAAG1/B,MAAM,KAAMliE,EACxB,CAAE,MAAO5D,GAAI,CACf,CACF,CAKA,SAASq0K,EACPzzK,EACA4kG,GAGA,GADA8tE,EAAa1yK,GACK,oBAAP4kG,EAAmB,MAAM,IAAIlzG,MAAM,kCAC9C,MAAO,CACLsc,MAAAA,CAAOxc,GACL,IAAK69C,EAAQ79C,GAAO,MAAM,IAAIE,MAAM,+CACpC,MAAM+hL,EAAW7uE,EAAGpzG,GAAM+J,MAAM,EAAGyE,GAC7Byf,EAAM,IAAItB,WAAW3sB,EAAK9B,OAASsQ,GAGzC,OAFAyf,EAAItb,IAAI3S,GACRiuB,EAAItb,IAAIsvK,EAAUjiL,EAAK9B,QAChB+vB,CACT,EACAnS,MAAAA,CAAO9b,GACL,IAAK69C,EAAQ79C,GAAO,MAAM,IAAIE,MAAM,+CACpC,MAAMuuB,EAAUzuB,EAAK+J,MAAM,GAAIyE,GACzB0zK,EAAc9uE,EAAG3kF,GAAS1kB,MAAM,EAAGyE,GACnC2zK,EAAcniL,EAAK+J,OAAOyE,GAChC,IAAK,IAAInH,EAAI,EAAGA,EAAImH,EAAKnH,IACvB,GAAI66K,EAAY76K,KAAO86K,EAAY96K,GAAI,MAAM,IAAInH,MAAM,oBACzD,OAAOuuB,CACT,EAEJ,CAGatyB,EAAAA,MAAQ,CACnBoU,WAAUoO,QAAOsjK,WAAUT,eAAcI,gBAAeC,QAAOC,SAAQvoH,OAAMt6B,WAKlE9iC,EAAAA,OAAqCwiB,EAChDmjK,EAAO,GACPvxK,EAAS,oBACTgpD,EAAK,KAEMp9D,EAAAA,OAAqCwiB,EAChDmjK,EAAO,GACPvxK,EAAS,oCACT0uB,EAAQ,GACRs6B,EAAK,KAEMp9D,EAAAA,YAA0CwiB,EACrDmjK,EAAO,GACPvxK,EAAS,oCACTgpD,EAAK,KAEMp9D,EAAAA,UAAwCwiB,EACnDmjK,EAAO,GACPvxK,EAAS,oCACT0uB,EAAQ,GACRs6B,EAAK,KAEMp9D,EAAAA,eAA6CwiB,EACxDmjK,EAAO,GACPvxK,EAAS,oCACTgpD,EAAK,KAEMp9D,EAAAA,gBAA8CwiB,EACzDmjK,EAAO,GACPvxK,EAAS,oCACTgpD,EAAK,IACLgoH,GAAWx0K,GAAcA,EAAEiE,cAAc3H,QAAQ,KAAM,KAAKA,QAAQ,QAAS,QAElElN,EAAAA,OAAqCwiB,EAChDmjK,EAAO,GACPvxK,EAAS,oEACT0uB,EAAQ,GACRs6B,EAAK,KAEMp9D,EAAAA,YAA0CwiB,EACrDmjK,EAAO,GACPvxK,EAAS,oEACTgpD,EAAK,KAEMp9D,EAAAA,UAAwCwiB,EACnDmjK,EAAO,GACPvxK,EAAS,oEACT0uB,EAAQ,GACRs6B,EAAK,KAEMp9D,EAAAA,eAA6CwiB,EACxDmjK,EAAO,GACPvxK,EAAS,oEACTgpD,EAAK,KAKP,MAAM6oH,EAAaC,GAAgB1jK,EAAMkjK,EAAM,IAAKtxK,EAAS8xK,GAAM9oH,EAAK,KAE3Dp9D,EAAAA,OAAqCimL,EAChD,8DAEWjmL,EAAAA,aAA2CimL,EACtD,8DAEWjmL,EAAAA,UAAwCimL,EACnD,8DAOF,MAAME,EAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IACnCnmL,EAAAA,UAAwB,CACnCqgB,MAAAA,CAAOxc,GACL,IAAIiuB,EAAM,GACV,IAAK,IAAI5mB,EAAI,EAAGA,EAAIrH,EAAK9B,OAAQmJ,GAAK,EAAG,CACvC,MAAMg3E,EAAQr+E,EAAKitB,SAAS5lB,EAAGA,EAAI,GACnC4mB,GAAO9xB,EAAAomL,OAAO/lK,OAAO6hE,GAAO32D,SAAS46J,EAAcjkG,EAAMngF,QAAU,IACrE,CACA,OAAO+vB,CACT,EACAnS,MAAAA,CAAOzN,GACL,IAAI4f,EAAgB,GACpB,IAAK,IAAI5mB,EAAI,EAAGA,EAAIgH,EAAInQ,OAAQmJ,GAAK,GAAI,CACvC,MAAM0C,EAAQsE,EAAItE,MAAM1C,EAAGA,EAAI,IACzB8kB,EAAWm2J,EAAc1xK,QAAQ7G,EAAM7L,QACvCmgF,EAAQliF,EAAAomL,OAAOzmK,OAAO/R,GAC5B,IAAK,IAAIkD,EAAI,EAAGA,EAAIoxE,EAAMngF,OAASiuB,EAAUlf,IAC3C,GAAiB,IAAboxE,EAAMpxE,GAAU,MAAM,IAAI/M,MAAM,4BAEtC+tB,EAAMA,EAAIzZ,OAAOhO,MAAM3F,KAAKw9E,EAAMt0E,MAAMs0E,EAAMngF,OAASiuB,IACzD,CACA,OAAOQ,WAAW9rB,KAAKotB,EACzB,GAGW9xB,EAAAA,kBAAqB0gE,GAChCl+C,EACEsjK,EAAS,GAAIjiL,GAAS68D,EAAOA,EAAO78D,MACpC7D,EAAAomL,QAGSpmL,EAAAA,YAAcA,EAAAqmL,kBAc3B,MAAMC,EAAyD9jK,EAC7DpO,EAAS,oCACTgpD,EAAK,KAGDmpH,EAAqB,CAAC,UAAY,UAAY,UAAY,WAAY,WAI5E,SAASC,EAAcvM,GACrB,MAAM7oK,EAAI6oK,GAAO,GACjB,IAAIE,GAAa,SAANF,IAAoB,EAC/B,IAAK,IAAI/uK,EAAI,EAAGA,EAAIq7K,EAAmBxkL,OAAQmJ,IACtB,KAAjBkG,GAAKlG,EAAK,KAAUivK,GAAOoM,EAAmBr7K,IAEtD,OAAOivK,CACT,CAKA,SAASsM,EAAahzK,EAAgB+sB,GAAkC,IAAjBkmJ,EAAa5kL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACrE,MAAMuQ,EAAMoB,EAAO1R,OACnB,IAAIo4K,EAAM,EACV,IAAK,IAAIjvK,EAAI,EAAGA,EAAImH,EAAKnH,IAAK,CAC5B,MAAMoG,EAAImC,EAAOzC,WAAW9F,GAC5B,GAAIoG,EAAI,IAAMA,EAAI,IAAK,MAAM,IAAIvN,MAAM,mBAAmB0P,MAC1D0mK,EAAMqM,EAAcrM,GAAQ7oK,GAAK,CACnC,CACA6oK,EAAMqM,EAAcrM,GACpB,IAAK,IAAIjvK,EAAI,EAAGA,EAAImH,EAAKnH,IAAKivK,EAAMqM,EAAcrM,GAA+B,GAAvB1mK,EAAOzC,WAAW9F,GAC5E,IAAK,IAAIiJ,KAAKqsB,EAAO25I,EAAMqM,EAAcrM,GAAOhmK,EAChD,IAAK,IAAIjJ,EAAI,EAAGA,EAAI,EAAGA,IAAKivK,EAAMqM,EAAcrM,GAEhD,OADAA,GAAOuM,EACAJ,EAAcjmK,OAAOolK,EAAc,CAACtL,EAAM,GAAK,IAAK,GAAI,GAAG,GACpE,CAsBA,SAASwM,EAAUtyJ,GACjB,MAAMuyJ,EAA8B,WAAbvyJ,EAAwB,EAAI,UAC7CwyJ,EAASlB,EAAO,GAChBp9D,EAAYs+D,EAAOlnK,OACnBm7J,EAAU+L,EAAOxmK,OACjB06J,EAAkB8K,EAAct9D,GAEtC,SAASloG,EACP5M,EACA+sB,GAC0B,IAA1ByyC,EAAAnxE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAwB,GAExB,GAAsB,kBAAX2R,EACT,MAAM,IAAI1P,MAAM,qDAAqD0P,GAEvE,GADI+sB,aAAiBhQ,aAAYgQ,EAAQn2B,MAAM3F,KAAK87B,KAC/Cn2B,MAAMi3B,QAAQd,IAAWA,EAAMz+B,QAA8B,kBAAby+B,EAAM,GACzD,MAAM,IAAIz8B,MAAM,8DAA8Dy8B,GAChF,GAAsB,IAAlB/sB,EAAO1R,OAAc,MAAM,IAAIo9B,UAAU,yBAAyB1rB,EAAO1R,UAC7E,MAAM+kL,EAAerzK,EAAO1R,OAAS,EAAIy+B,EAAMz+B,OAC/C,IAAc,IAAVkxE,GAAmB6zG,EAAe7zG,EACpC,MAAM,IAAI9zC,UAAU,UAAU2nJ,mBAA8B7zG,KAC9D,MAAMqnG,EAAU7mK,EAAOqB,cACjB6C,EAAM8uK,EAAanM,EAAS95I,EAAOomJ,GACzC,MAAO,GAAGtM,KAAWgM,EAAcjmK,OAAOmgB,KAAS7oB,GACrD,CAOA,SAASgI,EAAOzN,GAAuC,IAA1B+gE,EAAAnxE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAwB,GACnD,GAAmB,kBAARoQ,EACT,MAAM,IAAInO,MAAM,oDAAoDmO,GACtE,GAAIA,EAAInQ,OAAS,IAAgB,IAAVkxE,GAAmB/gE,EAAInQ,OAASkxE,EACrD,MAAM,IAAI9zC,UAAU,wBAAwBjtB,EAAInQ,WAAWmQ,oBAAsB+gE,MAEnF,MAAMqnG,EAAUpoK,EAAI4C,cACpB,GAAI5C,IAAQooK,GAAWpoK,IAAQA,EAAI2C,cACjC,MAAM,IAAI9Q,MAAM,yCAClB,MAAMgjL,EAAWzM,EAAQv1C,YAAY,KACrC,GAAiB,IAAbgiD,IAAgC,IAAdA,EACpB,MAAM,IAAIhjL,MAAM,2DAClB,MAAM0P,EAAS6mK,EAAQ1sK,MAAM,EAAGm5K,GAC1BljL,EAAOy2K,EAAQ1sK,MAAMm5K,EAAW,GACtC,GAAIljL,EAAK9B,OAAS,EAAG,MAAM,IAAIgC,MAAM,2CACrC,MAAMy8B,EAAQ8lJ,EAAc3mK,OAAO9b,GAAM+J,MAAM,GAAI,GAC7C+J,EAAM8uK,EAAahzK,EAAQ+sB,EAAOomJ,GACxC,IAAK/iL,EAAK8iF,SAAShvE,GAAM,MAAM,IAAI5T,MAAM,uBAAuBmO,gBAAkByF,MAClF,MAAO,CAAElE,SAAQ+sB,QACnB,CAaA,MAAO,CACLngB,SACAV,SACAqnK,gBAPF,SAAyBvzK,EAAgB4qC,GACvC,OAAOh+B,EAAO5M,EAAQqnK,EAAQz8H,GAChC,EAME4oI,cAbF,SAAuB/0K,GACrB,MAAM,OAAEuB,EAAM,MAAE+sB,GAAU7gB,EAAOzN,GAAK,GACtC,MAAO,CAAEuB,SAAQ+sB,QAAO6d,MAAOkqE,EAAU/nF,GAC3C,EAWEwwB,aAhBmB60H,EAAclmK,GAiBjC4oG,YACAwyD,kBACAD,UAEJ,CAEa96K,EAAAA,OAAiC2mL,EAAU,UAC3C3mL,EAAAA,QAAkC2mL,EAAU,WAK5C3mL,EAAAA,KAAmB,CAC9BqgB,OAASxc,IAAS,IAAIm0E,aAAcr4D,OAAO9b,GAC3C8b,OAASzN,IAAQ,IAAIylE,aAAct3D,OAAOnO,IAG/BlS,EAAAA,IAAkCwiB,EAC7CmjK,EAAO,GACPvxK,EAAS,oBACTgpD,EAAK,IACLgoH,GAAWx0K,IACT,GAAiB,kBAANA,GAAkBA,EAAE7O,OAAS,EACtC,MAAM,IAAIo9B,UAAU,2CAA2CvuB,iBAAiBA,EAAE7O,UACpF,OAAO6O,EAAEkE,aAAa,KAK1B,MAAMoyK,EAAS,CACbrnD,KAAA7/H,EAAA6/H,KAAM74H,IAAAhH,EAAAgH,IAAKmgL,OAAAnnL,EAAAmnL,OAAQC,OAAApnL,EAAAonL,OAAQ9sC,OAAAt6I,EAAAs6I,OAAQpoH,UAAAlyB,EAAAkyB,UAAWk0J,OAAApmL,EAAAomL,OAAQiB,UAAArnL,EAAAqnL,WAGlDC,EACJ,0GAEWtnL,EAAAA,cAAgBunL,CAAC1/K,EAAiBw2C,KAC7C,GAAoB,kBAATx2C,IAAsBq/K,EAAOxwK,eAAe7O,GAAO,MAAM,IAAIs3B,UAAUmoJ,GAClF,IAAK5lI,EAAQrD,GAAQ,MAAM,IAAIlf,UAAU,sCACzC,OAAO+nJ,EAAOr/K,GAAMwY,OAAOg+B,EAAM,EAEtBr+C,EAAAA,IAAMA,EAAAunL,cAENvnL,EAAAA,cAAgBwnL,CAAC3/K,EAAiBqK,KAC7C,IAAKg1K,EAAOxwK,eAAe7O,GAAO,MAAM,IAAIs3B,UAAUmoJ,GACtD,GAAmB,kBAARp1K,EAAkB,MAAM,IAAIitB,UAAU,kCACjD,OAAO+nJ,EAAOr/K,GAAM8X,OAAOzN,EAAI,EAEpBlS,EAAAA,MAAQA,EAAAwnL,4CCtmBrBtkL,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQynL,mBAAgB,EACxB,MAAMC,EAAqB1mL,EAAQ,OAC7B2mL,EAAiB3mL,EAAQ,OACzBD,EAAYC,EAAQ,OACpB8pJ,EAAc9pJ,EAAQ,MACtBqE,EAAUrE,EAAQ,MAClBsgI,EAAiBtgI,EAAQ,OAC/B,MAAMymL,UAAsBC,EAAmBtuE,iBAU3C,cAAMwuE,CAAShkL,EAAQyE,EAAO3G,GAC1B,MAAMmmL,GAAM,EAAI/8B,EAAYjwG,+BAA+BxyC,EAAOzE,GAClE,OAAO,IAAI+jL,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,WAAYx6E,KAAKm5G,QAAQg4B,QACxElpC,UAAS,EAAI9iG,EAAQ2iB,MAAMtmB,IAC3BqpB,SAAS,CACVnnB,SACAmkL,UAAWF,EACXG,SAAU9nL,KAAKw6E,KAAKutG,cAAcrkL,EAAQyE,GAC1C6/K,MAAOhoL,KAAKw6E,KAAKytG,UAAU9/K,GAC3B+/K,eAAgBloL,KAAKw6E,KAAK2tG,mBAC1B9mL,KAAM8G,EACNigL,aAAcx9B,EAAYj4H,mBAEzBtT,cAAekoK,EAAcc,QAAQC,SAC9C,CAUA,aAAMC,CAAQ7kL,EAAQyE,EAAO3G,GACzB,MAAMmmL,GAAM,EAAI/8B,EAAYjwG,+BAA+BxyC,EAAOzE,GAClE,OAAO,IAAI+jL,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,WAAYx6E,KAAKm5G,QAAQg4B,QACxEjpC,SAAQ,EAAI/iG,EAAQ2iB,MAAMtmB,IAC1BqpB,SAAS,CACVnnB,SACAmkL,UAAWF,EACXG,SAAU9nL,KAAKw6E,KAAKutG,cAAcrkL,EAAQyE,GAC1C6/K,MAAOhoL,KAAKw6E,KAAKytG,UAAU9/K,GAC3B+/K,eAAgBloL,KAAKw6E,KAAK2tG,mBAC1B9mL,KAAM8G,EACNqgL,cAAe3nL,EAAU26B,cAAcx5B,UACvComL,aAAcx9B,EAAYj4H,mBAEzBtT,cAAekoK,EAAcc,QAAQI,QAC9C,CAOA,yBAAMhiF,CAAoB//F,EAASyB,GAC/B,MAAMxE,QAAa3D,KAAKm5G,QAAQ3mF,QAAQk2J,YAAYC,cAAc3oL,KAAKw6E,KAAKutG,cAAcrhL,EAASyB,IACnG,GAAY,MAARxE,EACA,OAAO,KACX,MAAMgwB,EAAW,GACjB,IAAK,IAAI3oB,EAAI,EAAGA,EAAIrH,EAAKilL,cAAc/mL,OAAQmJ,IAC3C2oB,EAAS3oB,GAAK,CACV49K,cAAejlL,EAAKilL,cAAc59K,GAClC69K,aAAcllL,EAAKklL,aAAa79K,GAChC89K,WAAYnlL,EAAKmlL,WAAW99K,GAC5B+9K,UAAWplL,EAAKolL,UAAU/9K,GAC1Bg+K,gBAAiBrlL,EAAKqlL,gBAAgBh+K,GACtCi+K,eAAgBtlL,EAAKslL,eAAej+K,IAG5C,MAAO,CACHstC,SAAS,EAAInzC,EAAQc,UAAUtC,EAAKnC,QACpCigE,WAAY9tC,EAEpB,CAOA,+BAAM+yE,CAA0BhgG,EAASyB,GACrC,MAAM+gL,QAAyBlpL,KAAKymG,oBAAoB//F,EAASyB,GACjE,OAAO+gL,GAAkBznH,UAC7B,CAOA,4BAAM8kC,CAAuB7/F,EAASyB,GAClC,MAAM+gL,QAAyBlpL,KAAKymG,oBAAoB//F,EAASyB,GAC3DmwC,EAAU4wI,GAAkB5wI,QAGlC,OAFAt4C,KAAK6hB,OAAO0F,MAAM,8DAAgEpf,EAAM1D,WACpF,aAAeiC,EAAU,aAA0B,MAAX4xC,EAAkB,OAASA,EAAQ7zC,aACxE6zC,CACX,CAUA,iBAAMgvD,CAAY5jG,EAAQyE,EAAO3G,EAAQgF,GACrC,MAAMmhL,QAAY,EAAI/8B,EAAYu+B,2BAA2BhhL,EAAOzE,GACpE8C,EAAUA,SAAiBxG,KAAK88E,WAAWp5E,EAAQyE,GACnD,MAAM60E,EAAS,IAAIyqG,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,YACjDx6E,KAAKw6E,KAAK4rB,OAAOgjF,UAAUzB,IAClC3qG,EAAOz6E,IAAIvC,KAAKw6E,KAAK4rB,OAAOijF,QAAQ3lL,EAAQA,EAAQyE,IAExD60E,EAAOz6E,UAAUvC,KAAK0nL,SAAShkL,EAAQyE,EAAO3G,IAC9C,MAAM8nL,EAAenhL,EAAMoY,OAAO6gH,EAAeU,aAAa2pB,cAK9D,OAJI69B,GACAtsG,EAAOz6E,IAAIvC,KAAKw6E,KAAK4rB,OAAOmjF,OAAO7lL,IACvC1D,KAAK6hB,OAAO0F,MAAM,8CAAgDpf,EAAM1D,WACpE,YAAcjD,EAAOiD,SAAS,IAAM,gBAAkB6kL,GACnD,OAAOtsG,EAAOn2E,GAAGL,GAC5B,CASA,gBAAM+gG,CAAW7jG,EAAQyE,EAAO3G,EAAQgF,GACpC,MAAMmhL,GAAM,EAAI/8B,EAAYjwG,+BAA+BxyC,EAAOzE,GAClE8C,EAAUA,SAAiBxG,KAAK88E,WAAWp5E,EAAQyE,GACnD,MAAM60E,EAAS,IAAIyqG,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,MAC5D,IAAIgvG,GAAW,EACf,GAAIrhL,EAAMoY,OAAO6gH,EAAeU,aAAa2pB,cAAe,CACxD,MAAMj5H,QAAgB,EAAIrtB,EAAQke,iBAAgB,IAAMrjB,KAAKw6E,KAAK4rB,OAAOqjF,aAAa9B,IAAM3nL,KAAKupB,aACjG,IAAI+uB,EAAqB,MAAX9lB,EAAkB,GAAKA,EAAQhxB,OACzC82C,EAAU92C,IACVw7E,EAAOz6E,IAAIvC,KAAKw6E,KAAK4rB,OAAOsjF,KAAKhmL,EAAQlC,EAAS82C,EAAoB,MAAX9lB,IAC3Dg3J,GAAW,EAEnB,CAIA,OAHAxsG,EAAOC,gBAAgBj9E,KAAKuoL,QAAQ7kL,EAAQyE,EAAO3G,IACnDxB,KAAK6hB,OAAO0F,MAAM,4CAA8Cpf,EAAM1D,WAClE,YAAcjD,EAAOiD,SAAS,IAAM,cAAgB+kL,GACjD,OAAOxsG,EAAOn2E,GAAGL,GAC5B,CACAs2E,UAAAA,CAAWp5E,EAAQyE,GACf,MAAMw/K,GAAM,EAAI/8B,EAAYjwG,+BAA+BxyC,EAAOzE,GAClE,OAAO1D,KAAKw6E,KAAKqC,KAAKC,WAAW,CAC7Bp5E,EACAikL,EACA3nL,KAAKw6E,KAAKutG,cAAcrkL,EAAQyE,GAChCnI,KAAKw6E,KAAKytG,UAAU9/K,IAE5B,EAEJrI,EAAQynL,cAAgBA,EACxBA,EAAcc,QAAU,CACpBC,SAAU,IACVG,QAAS,6GC3KA3oL,EAAAA,kBAAoB,CAC/B6pL,OAAQ,IACRC,OAAQ,sBCFV,IAAI7oD,EAAQjgI,EAAQ,OAGpBf,EAAOD,QAAUihI,EAFF,4FCAf/9H,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ06J,wBAAqB,EAC7B,MAAMl4E,EAAmBxhF,EAAQ,OACjC,MAAM05J,UAA2Bl4E,EAAiBG,eAC9Cx0E,WAAAA,CAAYusE,GACRp0E,MAAMo0E,GACNx6E,KAAKw6E,KAAOA,EACZx6E,KAAKwhB,SAAWg5D,EAAKh5D,QACzB,EAEJ1hB,EAAQ06J,mBAAqBA,gCCV7Bx3J,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ+pL,oBAAiB,EACzB,MAAMvnG,EAAmBxhF,EAAQ,OACjC,MAAM+oL,UAAuBvnG,EAAiBG,eAC1Cx0E,WAAAA,GACI7H,SAASxE,WACT5B,KAAK8pL,iBAAmB,IACxB9pL,KAAKshF,WAAa,CAAC,CACvB,CAOAyoG,qBAAAA,CAAsBC,GAClB,MAAMC,EAAmBjqL,KAAKgzB,SAASsiG,qBAAqB00D,GAAUhhL,MAAK2lB,GAAUA,EAAO4mG,YACtFA,EAAY1oG,KAAKC,MAUvB,OATA9sB,KAAKshF,WAAW0oG,GAAY,CACxBt0D,UAAWu0D,EACX10D,aAEJ00D,EAAiBrnK,OAAMrR,IAGnB,MAFiC,MAA7BvR,KAAKshF,WAAW0oG,IAAqBhqL,KAAKshF,WAAW0oG,GAAUt0D,YAAcu0D,UACtEjqL,KAAKshF,WAAW0oG,GACrBz4K,CAAC,IAEJ,CACHmkH,UAAWu0D,EACX10D,YAER,CAQA20D,YAAAA,CAAaF,GACT,IAAIG,EAAkBnqL,KAAKshF,WAAW0oG,GAItC,OAHuB,MAAnBG,GAA2Bt9J,KAAKC,MAAQq9J,EAAgB50D,UAAYv1H,KAAK8pL,oBACzEK,EAAkBnqL,KAAK+pL,sBAAsBC,IAE1CG,EAAgBz0D,SAC3B,EAEJ51H,EAAQ+pL,eAAiBA,gCC/CzB7mL,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQsqL,sBAAmB,EAC3B,MAAMC,EAAevpL,EAAQ,OAE7B,MAAMspL,UAAyBC,EAAaC,WACxCr8K,WAAAA,CAAYs8K,EAAsBC,GAC9BpkL,MAAMmkL,GACNvqL,KAAKyqL,MAAQ,CAAC,EACdzqL,KAAKwqL,aAAeA,GALG,GAM3B,CACAE,QAAAA,CAASppK,EAAiB+kF,EAAcj+F,GACpC,MAAMD,EAAQk+F,EAAa5hG,WACrBkmL,EAAa3qL,KAAKyqL,MAAMnpK,GAC9B,GAAkB,MAAdqpK,EAAoB,CACpB,MAAMC,EAAcD,EAAWxiL,GAC/B,GAAmB,MAAfyiL,GAAuBA,EAAYx6H,OAASvjC,KAAKC,MAEjD,OAAO89J,EAAYpiL,MAAMoa,OAAMrR,GAAKvR,KAAKkI,WAAWoZ,EAAiBnZ,EAAOC,IAEpF,CAEA,MAAMyiL,EAAY7qL,KAAKkI,WAAWoZ,EAAiBnZ,GAanD,OAZAnI,KAAKyqL,MAAMnpK,KAAqB,CAAC,EACjCthB,KAAKyqL,MAAMnpK,GAAiBnZ,GAAS,CACjCK,MAAOqiL,EACPz6H,OAAQvjC,KAAKC,MAAQ9sB,KAAKwqL,cAE9BK,EAAUjoK,OAAMrR,IAKZ,MAJmC,MAA/BvR,KAAKyqL,MAAMnpK,IAC2B,MAAtCthB,KAAKyqL,MAAMnpK,GAAiBnZ,IAC5BnI,KAAKyqL,MAAMnpK,GAAiBnZ,GAAOK,QAAUqiL,UACtC7qL,KAAKyqL,MAAMtiL,GAChBoJ,CAAC,IAEJs5K,CACX,CAOAC,WAAAA,CAAY1iL,GACR,GAAqB,MAAjBpI,KAAK+qL,UAAoB/qL,KAAK+qL,SAAS36H,OAASvjC,KAAKC,MAErD,OAAO9sB,KAAK+qL,SAASviL,MAAMoa,OAAMrR,GAAKvR,KAAKm+G,cAAc/1G,KAG7D,MAAMyiL,EAAY7qL,KAAKm+G,gBAWvB,OAVAn+G,KAAK+qL,SAAW,CACZviL,MAAOqiL,EACPz6H,OAAQvjC,KAAKC,MAAQ9sB,KAAKwqL,cAE9BK,EAAUjoK,OAAMrR,IAIZ,MAHqB,MAAjBvR,KAAK+qL,UACL/qL,KAAK+qL,SAASviL,QAAUqiL,UACjB7qL,KAAK+qL,SACVx5K,CAAC,IAEJs5K,CACX,EAEJ/qL,EAAQsqL,iBAAmBA,gCC9D3BpnL,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ8pF,sBAAmB,EAC3B,MAAMrmF,EAAWzC,EAAQ,OACnBkqL,EAAsBlqL,EAAQ,OAC9BmE,EAASnE,EAAQ,OACjBqE,EAAUrE,EAAQ,OAClBihG,EAAyBjhG,EAAQ,OACjCmqL,EAA4BnqL,EAAQ,OACpCoqL,EAAgBpqL,EAAQ,OACxBoE,EAAapE,EAAQ,OACrBioF,EAAiBjoF,EAAQ,OACzBy5J,EAAmBz5J,EAAQ,OACjC,SAASqqL,EAAqB55K,GAC1B,OAAO,IAAIy5K,EAAoBI,kBAAkB,CAC7CC,kBAAkB,EAAIlmL,EAAQmmL,sBAAsB/5K,EAAEg6K,cACtDC,oBAAoB,EAAIrmL,EAAQmpJ,kBAAkB/qJ,EAASgB,OAAOC,KAAK+M,EAAEk6K,mBAAoB,OAAO79K,WACpG89K,aAAa,EAAIvmL,EAAQmpJ,kBAAkB/qJ,EAASgB,OAAOC,KAAK+M,EAAEo6K,gBAAiB,OAAO/9K,WAC1Fg+K,oBAAoB,EAAIzmL,EAAQmmL,sBAAsB/5K,EAAEs6K,gBACxD5b,OAAO,EAAI9qK,EAAQmmL,sBAAsB/5K,EAAEu6K,YAC3C5lL,OAAO,EAAIf,EAAQmmL,sBAAsB/5K,EAAEuyE,YAC3Cl/E,KAAMrB,EAASgB,OAAOC,KAAK+M,EAAEhI,UAAW,OAAOqE,WAEvD,CACA,MAAMm+K,EAAsB,IAEtBC,EAAmB,CACrB,CAAC9mL,EAAWy0E,UAAU8P,gBAAgBE,YAAa,qEACnD,CAACzkF,EAAWy0E,UAAU8P,gBAAgBC,SAAU,sEAEpD,SAASuiG,EAAkB5/J,EAAS2zD,EAAc9/D,GAM9C,OALAA,EAAK5Y,MAAK,EAAInC,EAAQgmD,OAAO9+B,EAAQxqB,SACrCwqB,EAAQtd,SAAQmjB,IACZhS,EAAK5Y,QAAQ4qB,EAAO89B,YAAY,IAEpC9vC,EAAK5Y,QAAQ04E,EAAahwB,aACnB9vC,CACX,CACA,MAAM0pE,UAAyBmY,EAAuBe,qBAClDopF,eAAAA,CAAgBxoL,EAAQyoL,EAAansG,GACjC,OAAO,IAAIu6E,EAAiBl+E,eAAe34E,EAAQ1D,KAAM,CACrD+iG,gBAAiB/iG,KAAKwhB,SAAS9a,QAC/B88D,WAAY,2BACZC,SAAUwoH,EAAkBE,EAAansG,EAAc,KACxD,CAAEl4E,GAAIikL,EAAsBI,EAAYtqL,OAAQ06E,GAAI,GAC3D,CACA6vG,oBAAAA,CAAqB1oL,EAAQ2oL,EAAarsG,GACtC,OAAO,IAAIu6E,EAAiBl+E,eAAe34E,EAAQ1D,KAAM,CACrD+iG,gBAAiB/iG,KAAKwhB,SAAS9a,QAC/B88D,WAAY,iCACZC,SAAUwoH,EAAkBI,EAAarsG,EAAc,KACxD,CAAEl4E,GAAIikL,EAAsBM,EAAYxqL,OAAQ06E,GAAI,GAC3D,CACA+vG,mBAAAA,CAAoB5oL,EAAQ26E,EAAQguG,EAAarsG,GAAsC,IAAxBusG,EAAgB3qL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAC9E,OAAO,IAAI24J,EAAiBl+E,eAAe34E,EAAQ1D,KAAM,CACrD+iG,gBAAiB/iG,KAAKwhB,SAAS9a,QAC/B88D,WAAY,2BACZC,SAAUwoH,EAAkBI,EAAarsG,EAAc,EAAC,EAAI76E,EAAQgmD,OAAOkzB,MAC5E,CAAEv2E,GAAKikL,EAAsBM,EAAYxqL,OAjCnB,IAiCyD0qL,EAAmBhwG,GAAI,GAC7G,CACAtuE,WAAAA,CAAYsU,EAASyQ,EAAUgrD,GAAsI,IAA1H+kB,EAAenhG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGoqL,EAAiBzpK,GAAUgH,EAAW3nB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAEkhG,EAAkBphG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAImnF,EAAeS,aAAax2D,GACtJ5sB,MAAMmc,EAASyQ,EAAU+vE,EAAiBmoF,EAAcsB,YAAajjK,EAAay5E,GAClFhjG,KAAKmgF,gBAAkB,IACvBngF,KAAKogF,oBAAsB,IAC3BpgF,KAAKysL,yBAA2B,IAChCzsL,KAAKg+E,WAAaA,CACtB,CASA0uG,sBAAAA,CAAuBC,EAAqBC,GACxC,MAAMruG,EAA0B,CAACouG,GACjC,IAAK,IAAIx5F,KAAey5F,EACpBruG,EAAwBj3E,KAAKi3E,EAAwBA,EAAwB18E,OAAS,GAAGgrL,YAAY15F,IAEzG,OAAO5U,CACX,CAYA,kBAAMuuG,CAAappL,EAAQ2oB,EAAS2zD,EAAc+sG,EAAS1uG,EAAQ73E,GAC/D,MAAMwmL,EAAiB3gK,EAAQ3jB,IAAIyiL,GACnC,IAAI8B,EACJ,OAAQ5uG,GACJ,KAAM,EACF4uG,EAAiBjtL,KAAKosL,qBAAqB1oL,EAAQspL,EAAgBhtG,GACnE,MACJ,KAAK,EACDitG,EAAiBjtL,KAAKksL,gBAAgBxoL,EAAQspL,EAAgBhtG,GAC9D,MACJ,QACIitG,EAAiBjtL,KAAKssL,oBAAoB5oL,EAAQ26E,EAAQ2uG,EAAgBhtG,GAGlF,MAAMn5E,QAAWomL,EAAepmL,GAAGL,GAC7B+3E,EAA0Bv+E,KAAK0sL,uBAAuB1sG,EAAcgtG,GACpE1uG,EAAmBC,EAAwBA,EAAwB18E,OAAS,GAKlF,OAJe,IAAXw8E,GAAgBp5E,EAAOyqK,oBAAoBE,SAAStxF,EAAiBqU,eAAgBo6F,KAErF1uG,EAAS,GAEN,CACHA,OAAQA,EACRC,mBACAz3E,KACA03E,0BAER,CACA2uG,QAAAA,CAASC,EAAYC,GACjB,MAAMhuK,EAAO,CAAe,MAAd+tK,EAAqB,MAAO,EAAIhoL,EAAQgmD,OAAOgiI,IAC7D,GAAiB,MAAbC,EAAmB,CACnB,MAAMC,EAAoBnoL,EAAWN,KAAKoB,+BAA8B,EAAIb,EAAQmpJ,kBAAkB/qJ,EAASgB,OAAOC,KAAK,IAAI4oL,IAAYx/K,YAC3IwR,EAAK9X,KAAK+lL,EACd,CACA,OAAOrtL,KAAK62G,OAAOy2E,qBAAqB,CAAC,iCAAkC,sCAAuCluK,GAAO3Q,GAC9GpK,QAAQC,QAAQ,CAAC2mL,EAA0BsC,wBAAwBxoH,wBAAwBt2D,EAAM9K,MAAO+B,OAAO+I,EAAM4jD,OAAOm7H,gBAE3I,CACA,oBAAMC,GACF,OAAOt+J,aAAanvB,KAAKwhB,SAASksK,kBACtC,CAIA,gBAAMvvG,GACF,MAAMgvG,QAAmBntL,KAAKwhB,SAASmsK,sBACvC,GAAkB,MAAdR,GAAsBznL,OAAOynL,KAAgBznL,OAAO,GACpD,OAAO,KACX,MAAMipB,QAAe3uB,KAAKktL,SAASC,GACnC,GAAc,MAAVx+J,EACA,OAAO,KACX,MAAOi/J,GAAqBj/J,EAC5B,MAAO,CACHiwD,YAAagvG,EAAkBjvG,iBAC/BwuG,YAAY,EAAIhoL,EAAQugG,sBAAsBynF,EAAY,IAAI1oL,SAAS,OACvEw9E,UAAW2rG,EAAkBj7F,eAAeluF,SAAS,OACrDm7E,UAAWguG,EAAkBC,eAErC,CAQA,+BAAMC,CAA0BC,EAAWC,GAEvC,MAAMC,QAAoBjuL,KAAKytL,iBAC/B,GAA2B,MAAvBO,GAA+BC,EAAcD,EAC7C,OAAO,KAEX,MAAMr/J,QAAe3uB,KAAKktL,SAAS,KAAM3pL,EAASgB,OAAOC,KAAKupL,EAAU9rG,UAAW,QACnF,GAAc,MAAVtzD,EACA,OAAO,KACX,MAAOi/J,EAAmBT,GAAcx+J,EAElCu/J,QAAwBluL,KAAKwhB,SAAS2sK,gBAAgBP,EAAkB58F,cAC9E,OAAItrF,OAAOwoL,KAAqBxoL,OAAOynL,GAC5B,MACXntL,KAAK6hB,OAAO0F,MAAM,2DACK,EAAIpiB,EAAQgmD,OAAOgiI,GAAc,eAAiBY,EAAU9rG,UAAY,8BAAgCgsG,GACxH,CAAE/7J,OAAQ07J,EAAmB5uG,OAAQivG,GAChD,CAOA,6BAAMG,CAAwBC,EAAmBN,GAC7C,MAAMp/J,QAAe3uB,KAAKktL,SAASmB,EAAmB9qL,EAASgB,OAAOC,KAAKupL,EAAU9rG,UAAW,QAChG,GAAc,MAAVtzD,EACA,OAAO,KACX,MAAOi/J,EAAmBT,GAAcx+J,EAElCu/J,QAAwBluL,KAAKwhB,SAAS2sK,gBAAgBP,EAAkB58F,cAC9E,OAAItrF,OAAOwoL,KAAqBxoL,OAAOynL,GAC5B,MACXntL,KAAK6hB,OAAO0F,MAAM,wDACK8mK,EAAoB,eAAiBN,EAAU9rG,UAAY,YAAc2rG,EAAkB58F,cAC3G48F,EACX,CAIA,iCAAMlvG,GACF,MAAM/6E,QAAa3D,KAAK62G,OAAOy2E,qBAAqB,CAAC,iCAAkC,sCAAuC,MAAMj+K,UAChI,MAAM2wE,EAAeirG,EAA0BsC,wBAAwBxoH,wBAAwBt2D,EAAM9K,MAC/F2qL,EAAetuG,EAAa2S,eAAeluF,SAAS,OACpD0oL,EAAa1+K,EAAM4jD,OAAOm7H,aACzBe,EAAkBC,SAA4BnqL,QAAQoE,IAAI,CAC7DzI,KAAKg+E,WAAWuU,cAAc+7F,GAAc1rK,OAAM,KAAM,IACxD5iB,KAAKwhB,SAAS2sK,gBAAgBnuG,EAAagR,gBAE/C,OAAKu9F,EAED7oL,OAAOynL,KAAgBznL,OAAO8oL,GACvB,KACJ,CACHhwG,mBAAoBwB,EACpBvB,0BAA2Bz+E,KAAKg+E,WAAW+T,eAAeu8F,GAC1DnB,WAAYA,GANL,IAOV,IAML,OAJY,MAARxpL,GACA3D,KAAK6hB,OAAO0F,MAAM,6DACK,EAAIpiB,EAAQgmD,OAAOxnD,EAAKwpL,YAAc,eAAiBxpL,EAAK86E,oBAAoBl1E,UACnG,YAAc5F,EAAK66E,mBAAmBG,kBACvCh7E,CACX,CASAk8E,eAAAA,CAAgBn8E,EAAQyoL,EAAansG,EAAcx5E,GAE/C,OADAxG,KAAK6hB,OAAO0F,MAAM,2DAA6D4kK,EAAYtqL,QACpF7B,KAAK8sL,aAAappL,EAAQyoL,EAAansG,EAAc,KAAM,EAAGx5E,EACzE,CAUA,wBAAMk5E,CAAmBh8E,EAAQ2oL,EAAarsG,EAAc+sG,EAASvmL,GACjE,IAAI63E,EAASj1E,KAAKC,MAAsB,eAAhBD,KAAK6N,UAG7B,OAFAjX,KAAK6hB,OAAO0F,MAAM,oEACD8kK,EAAYxqL,OAAS,cAAgBw8E,EAAO55E,SAAS,WACzDzE,KAAK8sL,aAAappL,EAAQ2oL,EAAarsG,EAAc+sG,EAAS1uG,EAAQ73E,EACvF,CAWAu5E,eAAAA,CAAgBr8E,EAAQ2oL,EAAarsG,EAAc3B,EAAQ0uG,EAASvmL,GAGhE,OAFAxG,KAAK6hB,OAAO0F,MAAM,uEACD8kK,EAAYxqL,OAAS,cAAgBw8E,EAAO55E,SAAS,KAC/DzE,KAAK8sL,aAAappL,EAAQ2oL,EAAarsG,EAAc+sG,EAAS1uG,EAAQ73E,EACjF,CAUAioL,oBAAAA,CAAqB/qL,EAAQ2oL,EAAarsG,EAAc+sG,EAASvmL,GAG7D,OAFAxG,KAAK6hB,OAAO0F,MAAM,sEACD8kK,EAAYxqL,QACtB7B,KAAK8sL,aAAappL,EAAQ2oL,EAAarsG,EAAc+sG,GAAU,EAAGvmL,EAC7E,CAOA,4BAAMkoL,CAAuBV,EAAqBxnL,GAC9C,MAEMmoL,EAAmBX,SAFHhuL,KAAKm+E,cACKS,YAEhC,GAAI+vG,GAAoB,EACpB,OAAO,GACX,MAAMC,EAAqBlpL,OAAOipL,SAA0B3uL,KAAKixH,eAAezqH,GAGhF,OAFAxG,KAAK6hB,OAAO0F,MAAM,mDAAqDymK,EACnE,uBAAyBW,EAAmB,SAAWC,EAAmBnqL,SAAS,KAChFmqL,CACX,CAMA,oBAAM39D,CAAezqH,GAEjB,OADAA,IAAYA,QAAgBxG,KAAK68E,KAAKC,cAC/BiM,EAAeS,aAAaivE,UAAUszB,EAAqBvlL,EACtE,CAIAi5E,cAAAA,CAAe/7E,GACX,OAAO1D,KAAK68E,KAAKC,YACrB,CAIAgD,cAAAA,CAAep8E,EAAQ26E,GACnB,OAAOr+E,KAAK68E,KAAKC,YACrB,CACA+xG,iBAAAA,CAAkBnrL,EAAQwuB,EAAQ48J,EAAYC,EAAsBvoL,GAChE,MAAM,IAAI3C,MAAM,oEACpB,EAEJ/D,EAAQ8pF,iBAAmBA,8FClU3B,MAAMolG,EAAY,IAAI1+J,WAAW,KAC3B2+J,EAAY,IAAI3+J,WAAW,MAS/B,WACA,IAAItf,EAAI,EACR,IAAK,IAAIhG,EAAI,EAAGA,EAAI,IAAKA,IACvBgkL,EAAUhkL,GAAKgG,EACfi+K,EAAUj+K,GAAKhG,EAEfgG,IAAM,EAIE,IAAJA,IACFA,GAAK,KAQT,IAAK,IAAIhG,EAAI,IAAKA,EAAI,IAAKA,IACzBgkL,EAAUhkL,GAAKgkL,EAAUhkL,EAAI,IAEhC,CAtBC,GA8BFlL,EAAQg6C,IAAM,SAAcvpC,GAC1B,GAAIA,EAAI,EAAG,MAAM,IAAI1M,MAAM,OAAS0M,EAAI,KACxC,OAAO0+K,EAAU1+K,EACnB,EAQAzQ,EAAQwe,IAAM,SAAc/N,GAC1B,OAAOy+K,EAAUz+K,EACnB,EASAzQ,EAAQkhC,IAAM,SAAchwB,EAAGC,GAC7B,OAAU,IAAND,GAAiB,IAANC,EAAgB,EAIxB+9K,EAAUC,EAAUj+K,GAAKi+K,EAAUh+K,GAC5C,gCCnEAjO,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQovL,gBAAa,EACrB,MAAM3rL,EAAWzC,EAAQ,OACnBqE,EAAUrE,EAAQ,OAClB4qB,EAAiB5qB,EAAQ,OA6Q/BhB,EAAQovL,WA5QR,MAMIC,iBAAAA,GACI,OAAOnvL,KAAKovL,SAASt0H,MAAKvpD,IAAuB,IAAlBA,EAAE89K,aACrC,CAOAC,uBAAAA,GACI,IAAID,EAAcrvL,KAAKovL,SAAS57F,QAAOjiF,IAAuB,IAAlBA,EAAE89K,aAA0C,OAAlB99K,EAAE89K,cAKxE,OAJ2B,IAAvBA,EAAYxtL,SACZ7B,KAAKovL,SAASrgL,SAAQwC,GAAKA,EAAE89K,YAAc,OAC3CA,EAAcrvL,KAAKovL,UAEhBC,CACX,CAUA,cAAME,CAAShjK,EAAKolH,EAAM69C,GAAkC,IAApB7nL,EAAI/F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,MAAOqqB,EAAIrqB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACtD,MAAM6xB,QAAiB,EAAIxuB,EAAQsqL,kBAAkBljK,EAAMolH,EAAM,CAC7DxlH,OAAQxkB,EACR6gB,QAASxoB,KAAKwoB,QACdyD,KAAwB,kBAAVA,EAAqBA,EAAO0B,KAAKC,UAAU3B,KAE7D,GAAwB,MAApB0H,EAASzF,OAAgB,CACzB,IAAIJ,EACJ,IACIA,QAAa6F,EAASvF,MAC1B,CACA,MAAO7c,GACH,MAAM,IAAIma,EAAe2C,aAAasF,EAASrF,WAAYqF,EAASzF,OACxE,CACA,MAAMxC,EAAe2C,aAAa8D,MAAMrE,EAAM6F,EAASzF,OAC3D,CACA,MAAqB,QAAjBshK,QACa77J,EAASvF,aACbuF,EAASnF,MAC1B,CAUA,qCAAMkhK,CAAgC/9C,EAAM69C,GAAkC,IAApB7nL,EAAI/F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,MAAOqqB,EAAIrqB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACxE,IACI,aAAa,EAAIqD,EAAQwqL,YAAY3vL,KAAKsvL,0BAA0B5mL,KAAIkG,GAAO,WAC3E,IACI,MAAM+f,QAAe3uB,KAAKuvL,SAAS3gL,EAAI2d,IAAKolH,EAAM69C,EAAc7nL,EAAMskB,GAEtE,OADArd,EAAIygL,aAAc,EACX1gK,CACX,CACA,MAAOpd,GAEH,MAAIA,aAAama,EAAe2C,cAAiD,IAAjCjlB,KAAKC,MAAMkI,EAAEq+K,SAAW,MACpEhhL,EAAIygL,aAAc,EACZ99K,IAGN3C,EAAIygL,aAAc,EACZ99K,EAEd,CACH,EAjB8E,KAkBnF,CACA,MAAOA,GACH,MAAMA,EAAEupD,MAAKlxC,GAAOA,aAAe8B,EAAe2C,cAAmD,IAAnCjlB,KAAKC,MAAMugB,EAAIgmK,SAAW,QAAer+K,EAAE,EACjH,CACJ,CAWA,aAAMkiB,CAAQk+G,EAAM69C,GAAkC,IAApB7nL,EAAI/F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,MAAOqqB,EAAIrqB,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAChD,OAAO,EAAIqD,EAAQke,iBAAgB,KAC/B,MAAMwsK,EAAsB7vL,KAAKmvL,oBACjC,OAA2B,MAAvBU,EACO7vL,KAAKuvL,SAASM,EAAoBtjK,IAAKolH,EAAM69C,EAAc7nL,EAAMskB,GAAMrJ,OAAMgH,IAEhF,GAAIA,aAAe8B,EAAe2C,cAAmD,IAAnCjlB,KAAKC,MAAMugB,EAAIgmK,SAAW,KACxE,MAAMhmK,EAEV,OADAimK,EAAoBR,aAAc,EAC3BrvL,KAAK0vL,gCAAgC/9C,EAAM69C,EAAc7nL,EAAMskB,EAAK,IAG5EjsB,KAAK0vL,gCAAgC/9C,EAAM69C,EAAc7nL,EAAMskB,EAAK,GAC5E,MAAOrC,GAAQA,aAAe8B,EAAe2C,cAAmD,IAAnCjlB,KAAKC,MAAMugB,EAAIgmK,SAAW,MAC9F,CACA3hL,WAAAA,CAAYse,EAAK/D,GACb+D,EAAMA,GAAO,qCACTpiB,MAAMi3B,QAAQ7U,GACdvsB,KAAKovL,SAAW7iK,EAAI7jB,KAAIiG,IACb,CAAE4d,IAAK5d,EAAK0gL,YAAa,SAIpCrvL,KAAKovL,SAAW,CACZ,CAAE7iK,IAAKA,EAAK8iK,YAAa,OAGjCrvL,KAAKwoB,QAAUA,CACnB,CAMAsrE,aAAAA,CAAch0E,GACV,OAAO9f,KAAKyzB,QAAQ,sBAAwB3T,EAAQ,OAAO8C,OAAOrR,IAC9D,GAAkB,+DAAdA,EAAE0c,QACF,OAAO,KACX,MAAM1c,CAAC,GAEf,CAMA+gF,cAAAA,CAAeztE,GACX,OAAO7kB,KAAKyzB,QAAQ,MAAQ5O,EAAM,OAAOjC,OAAOrR,IAC5C,GAAkB,0BAAdA,EAAE0c,QACF,OAAO,KACX,MAAM1c,CAAC,GAEf,CAMA,uBAAMknD,CAAkB5zC,GACpB,MAAMirK,QAAuB9vL,KAAKyzB,QAAQ,MAAQ5O,EAAO,OAAQ,OACjE,OAAOthB,EAASgB,OAAOC,KAAKsrL,EAAgB,MAChD,CAMA,wBAAMt5H,CAAmB9vD,GACrB,MAAMqpL,QAAiB/vL,KAAKyzB,QAAQ,WAAa/sB,EAAS,OAK1D,MAAO,CACHspL,iBALmBtqL,OAAOqqL,EAASE,YAAYC,gBAC3BxqL,OAAOqqL,EAASE,YAAYE,eAKhDC,mBAJqB1qL,OAAOqqL,EAASM,cAAcH,gBAC7BxqL,OAAOqqL,EAASM,cAAcF,eAK5D,CAMAj5H,WAAAA,CAAYryC,GACR,OAAO7kB,KAAKyzB,QAAQ,WAAa5O,EAAM,MAC3C,CAMA,qBAAM+xC,CAAgBlwD,GAClB,IAAIqpL,QAAiB/vL,KAAKyzB,QAAQ,WAAa/sB,EAAU,QAAS,OAElE,OADAqpL,EAAShhL,SAAQwC,GAAKA,EAAErO,MAAQwC,OAAO6L,EAAErO,SAClC6sL,CACX,CAIA75H,OAAAA,GACI,OAAOl2D,KAAKyzB,QAAQ,sBAAuB,MAC/C,CAMA8/D,sBAAAA,CAAuB7sF,GACnB,OAAO1G,KAAKyzB,QAAQ,WAAa/sB,EAAU,OAAQ,MACvD,CAIA0pF,gBAAAA,GACI,OAAOpwF,KAAKyzB,QAAQ,yBAA0B,MAClD,CAIA,uBAAMs9D,GACF,MAAMp9D,QAAiB3zB,KAAKyzB,QAAQ,oBAAqB,OACzD,OAAOtoB,SAASwoB,EACpB,CAMAo+D,cAAAA,CAAe9P,GACX,OAAOjiF,KAAKyzB,QAAQ,SAAWwuD,EAAW,MAC9C,CAMAuQ,cAAAA,CAAevQ,GACX,OAAOjiF,KAAKyzB,QAAQ,SAAWwuD,EAAY,UAAW,MAC1D,CAMAkQ,mBAAAA,CAAoBttE,GAChB,OAAO7kB,KAAKyzB,QAAQ,MAAQ5O,EAAO,gBAAiB,MACxD,CAMA8tE,YAAAA,CAAa3T,GACT,OAAOh/E,KAAKyzB,QAAQ,gBAAkBurD,EAAQ,MAClD,CAMAkU,qBAAAA,CAAsBo9F,GAClB,OAAOtwL,KAAKyzB,QAAQ,aAAe68J,EAAW,MAClD,CAMAh6H,eAAAA,CAAgBi6H,GACZ,OAAOvwL,KAAKyzB,QAAQ,KAAM,MAAO,OAAQ88J,EAC7C,8RChRJ,MAAAzxK,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OACAme,EAAAne,EAAA,OACAC,EAAAD,EAAA,OAEA,IAAY0vL,GAAZ,SAAYA,GACRA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,kBACH,CAHD,CAAYA,IAA0B1wL,EAAAA,2BAA1B0wL,EAA0B,KAKzB1wL,EAAAA,+BAAgC,EAAAgf,EAAAY,QAK1C,EAEC,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,+BACH,EAAAZ,EAAApa,WAAU,cACV,EAAAoa,EAAApa,WAAU,qBAad7E,EAAAA,2CAAA,SACIuB,EACAqB,EACA2rJ,EACArsJ,GAEA,KAAK,EAAAhB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMT,EAAO,CAAC,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAErDrc,EAAOY,EAAO0b,MAAMngB,EAAA2wL,8BAA8BvwK,MAWxD,OAVApgB,EAAA2wL,8BAA8BtwK,OAC1B,CACId,YAAaJ,EAAAmB,iBAAiBswK,yBAC9BC,2BAA4BH,EAA2B10I,WACvDp5C,UAAoB,OAATA,QAAS,IAATA,EAAAA,EAAa7B,EAAAiE,UAAUigF,QAClCspE,gBAAgC,OAAfA,QAAe,IAAfA,EAAAA,EAAmBxtJ,EAAAiE,UAAUigF,SAElDphF,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,KAAMA,GAC/D,EAEa7D,EAAAA,2BAA4B,EAAAgf,EAAAY,QAItC,EAEC,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,+BACH,EAAAZ,EAAApa,WAAU,qBAGd7E,EAAAA,uCAAA,SACIuB,EACAqB,EACA2rJ,GAE4C,IAD5C1sJ,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAAAJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuBZ,EAAAiB,sBAEvB,KAAK,EAAAjB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAGd,MAAMT,GAAO,EAAAre,EAAA6xB,YAAW,CAAC,CAAE9S,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAAStd,EAAWf,GAEpFgC,EAAOY,EAAO0b,MAAMngB,EAAA8wL,0BAA0B1wK,MAUpD,OATApgB,EAAA8wL,0BAA0BzwK,OACtB,CACId,YAAaJ,EAAAmB,iBAAiBswK,yBAC9BC,2BAA4BH,EAA2Bh6F,OACvD63D,gBAAgC,OAAfA,QAAe,IAAfA,EAAAA,EAAmBxtJ,EAAAiE,UAAUigF,SAElDphF,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,KAAMA,GAC/D,gCChGA,IAAI26B,EAAWx9B,EAAQ,OACnB+vL,EAAW/vL,EAAQ,OACnByD,EAASzD,EAAAA,OAAAA,OAETgwL,EAAU,IAAI3mL,MAAM,IAExB,SAASomK,IACPsgB,EAAS/5K,KAAK9W,KAAM,IAGpBA,KAAK4pI,GAAK,WACV5pI,KAAKggK,GAAK,WACVhgK,KAAK29C,GAAK,WACV39C,KAAKogK,GAAK,SACZ,CA8GA,SAAS7hD,EAAMvtG,EAAGT,GAChB,OAAQS,GAAKT,EAAMS,IAAO,GAAKT,CACjC,CAEA,SAASwgL,EAAKtgL,EAAGS,EAAGE,EAAGmE,EAAG+C,EAAGhH,EAAGZ,GAC9B,OAAQ6tG,EAAM9tG,GAAMS,EAAIE,GAAQF,EAAKqE,GAAM+C,EAAIhH,EAAK,EAAGZ,GAAKQ,EAAK,CACnE,CAEA,SAAS8/K,EAAKvgL,EAAGS,EAAGE,EAAGmE,EAAG+C,EAAGhH,EAAGZ,GAC9B,OAAQ6tG,EAAM9tG,GAAMS,EAAIqE,EAAMnE,GAAMmE,GAAO+C,EAAIhH,EAAK,EAAGZ,GAAKQ,EAAK,CACnE,CAEA,SAAS+/K,EAAKxgL,EAAGS,EAAGE,EAAGmE,EAAG+C,EAAGhH,EAAGZ,GAC9B,OAAQ6tG,EAAM9tG,GAAKS,EAAIE,EAAImE,GAAK+C,EAAIhH,EAAK,EAAGZ,GAAKQ,EAAK,CACxD,CAEA,SAASggL,EAAKzgL,EAAGS,EAAGE,EAAGmE,EAAG+C,EAAGhH,EAAGZ,GAC9B,OAAQ6tG,EAAM9tG,GAAMW,GAAKF,GAAMqE,IAAQ+C,EAAIhH,EAAK,EAAGZ,GAAKQ,EAAK,CAC/D,CA9HAotB,EAASiyI,EAAKsgB,GAEdtgB,EAAI3lK,UAAUu0B,QAAU,WAEtB,IADA,IAAIwsD,EAAImlG,EACC9lL,EAAI,EAAGA,EAAI,KAAMA,EAAG2gF,EAAE3gF,GAAKhL,KAAKkuI,OAAOnV,YAAgB,EAAJ/tH,GAE5D,IAAIyF,EAAIzQ,KAAK4pI,GACT14H,EAAIlR,KAAKggK,GACT5uJ,EAAIpR,KAAK29C,GACTpoC,EAAIvV,KAAKogK,GAEb3vJ,EAAIsgL,EAAItgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAIw7K,EAAIx7K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,IACtCv6E,EAAI2/K,EAAI3/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,GAAI,UAAY,IACtCz6E,EAAI6/K,EAAI7/K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,WAAY,IACtCl7E,EAAIsgL,EAAItgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAIw7K,EAAIx7K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,IACtCv6E,EAAI2/K,EAAI3/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,GAAI,WAAY,IACtCz6E,EAAI6/K,EAAI7/K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,WAAY,IACtCl7E,EAAIsgL,EAAItgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAIw7K,EAAIx7K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,IACtCv6E,EAAI2/K,EAAI3/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,IAAK,WAAY,IACvCz6E,EAAI6/K,EAAI7/K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,IAAK,WAAY,IACvCl7E,EAAIsgL,EAAItgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,IAAK,WAAY,GACvCp2E,EAAIw7K,EAAIx7K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,IAAK,WAAY,IACvCv6E,EAAI2/K,EAAI3/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,IAAK,WAAY,IAGvCl7E,EAAIugL,EAAIvgL,EAFRS,EAAI6/K,EAAI7/K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,IAAK,WAAY,IAEzBv6E,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAIy7K,EAAIz7K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,GACtCv6E,EAAI4/K,EAAI5/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,IAAK,UAAY,IACvCz6E,EAAI8/K,EAAI9/K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,WAAY,IACtCl7E,EAAIugL,EAAIvgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAIy7K,EAAIz7K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,IAAK,SAAY,GACvCv6E,EAAI4/K,EAAI5/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,IAAK,WAAY,IACvCz6E,EAAI8/K,EAAI9/K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,WAAY,IACtCl7E,EAAIugL,EAAIvgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,GAAI,UAAY,GACtCp2E,EAAIy7K,EAAIz7K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,IAAK,WAAY,GACvCv6E,EAAI4/K,EAAI5/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,GAAI,WAAY,IACtCz6E,EAAI8/K,EAAI9/K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,WAAY,IACtCl7E,EAAIugL,EAAIvgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,IAAK,WAAY,GACvCp2E,EAAIy7K,EAAIz7K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,GACtCv6E,EAAI4/K,EAAI5/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,GAAI,WAAY,IAGtCl7E,EAAIwgL,EAAIxgL,EAFRS,EAAI8/K,EAAI9/K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,IAAK,WAAY,IAEzBv6E,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAI07K,EAAI17K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,IACtCv6E,EAAI6/K,EAAI7/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,IAAK,WAAY,IACvCz6E,EAAI+/K,EAAI//K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,IAAK,WAAY,IACvCl7E,EAAIwgL,EAAIxgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAI07K,EAAI17K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,IACtCv6E,EAAI6/K,EAAI7/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,GAAI,WAAY,IACtCz6E,EAAI+/K,EAAI//K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,IAAK,WAAY,IACvCl7E,EAAIwgL,EAAIxgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,IAAK,UAAY,GACvCp2E,EAAI07K,EAAI17K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,IACtCv6E,EAAI6/K,EAAI7/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,GAAI,WAAY,IACtCz6E,EAAI+/K,EAAI//K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,SAAY,IACtCl7E,EAAIwgL,EAAIxgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAI07K,EAAI17K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,IAAK,WAAY,IACvCv6E,EAAI6/K,EAAI7/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,IAAK,UAAY,IAGvCl7E,EAAIygL,EAAIzgL,EAFRS,EAAI+/K,EAAI//K,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,WAAY,IAExBv6E,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAI27K,EAAI37K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,IACtCv6E,EAAI8/K,EAAI9/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,IAAK,WAAY,IACvCz6E,EAAIggL,EAAIhgL,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,WAAY,IACtCl7E,EAAIygL,EAAIzgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,IAAK,WAAY,GACvCp2E,EAAI27K,EAAI37K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,GAAI,WAAY,IACtCv6E,EAAI8/K,EAAI9/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,IAAK,WAAY,IACvCz6E,EAAIggL,EAAIhgL,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,WAAY,IACtCl7E,EAAIygL,EAAIzgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAI27K,EAAI37K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,IAAK,WAAY,IACvCv6E,EAAI8/K,EAAI9/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,GAAI,WAAY,IACtCz6E,EAAIggL,EAAIhgL,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,IAAK,WAAY,IACvCl7E,EAAIygL,EAAIzgL,EAAGS,EAAGE,EAAGmE,EAAGo2E,EAAE,GAAI,WAAY,GACtCp2E,EAAI27K,EAAI37K,EAAG9E,EAAGS,EAAGE,EAAGu6E,EAAE,IAAK,WAAY,IACvCv6E,EAAI8/K,EAAI9/K,EAAGmE,EAAG9E,EAAGS,EAAGy6E,EAAE,GAAI,UAAY,IACtCz6E,EAAIggL,EAAIhgL,EAAGE,EAAGmE,EAAG9E,EAAGk7E,EAAE,GAAI,WAAY,IAEtC3rF,KAAK4pI,GAAM5pI,KAAK4pI,GAAKn5H,EAAK,EAC1BzQ,KAAKggK,GAAMhgK,KAAKggK,GAAK9uJ,EAAK,EAC1BlR,KAAK29C,GAAM39C,KAAK29C,GAAKvsC,EAAK,EAC1BpR,KAAKogK,GAAMpgK,KAAKogK,GAAK7qJ,EAAK,CAC5B,EAEAg7J,EAAI3lK,UAAUumL,QAAU,WAEtBnxL,KAAKkuI,OAAOluI,KAAKoxL,gBAAkB,IAC/BpxL,KAAKoxL,aAAe,KACtBpxL,KAAKkuI,OAAOj9G,KAAK,EAAGjxB,KAAKoxL,aAAc,IACvCpxL,KAAKm/B,UACLn/B,KAAKoxL,aAAe,GAGtBpxL,KAAKkuI,OAAOj9G,KAAK,EAAGjxB,KAAKoxL,aAAc,IACvCpxL,KAAKkuI,OAAOxV,cAAc14H,KAAKixJ,QAAQ,GAAI,IAC3CjxJ,KAAKkuI,OAAOxV,cAAc14H,KAAKixJ,QAAQ,GAAI,IAC3CjxJ,KAAKm/B,UAGL,IAAI9O,EAAS9rB,EAAOi/B,YAAY,IAKhC,OAJAnT,EAAO2oG,aAAah5H,KAAK4pI,GAAI,GAC7Bv5G,EAAO2oG,aAAah5H,KAAKggK,GAAI,GAC7B3vI,EAAO2oG,aAAah5H,KAAK29C,GAAI,GAC7BttB,EAAO2oG,aAAah5H,KAAKogK,GAAI,IACtB/vI,CACT,EAsBAtwB,EAAOD,QAAUywK,gGCjJjB,MAAM8gB,EAAKvwL,EAAQ,OASnBhB,EAAQkhC,IAAM,SAAc3mB,EAAIC,GAC9B,MAAMg3K,EAAQ,IAAIhhK,WAAWjW,EAAGxY,OAASyY,EAAGzY,OAAS,GAErD,IAAK,IAAImJ,EAAI,EAAGA,EAAIqP,EAAGxY,OAAQmJ,IAC7B,IAAK,IAAI4F,EAAI,EAAGA,EAAI0J,EAAGzY,OAAQ+O,IAC7B0gL,EAAMtmL,EAAI4F,IAAMygL,EAAGrwJ,IAAI3mB,EAAGrP,GAAIsP,EAAG1J,IAIrC,OAAO0gL,CACT,EASAxxL,EAAQub,IAAM,SAAck2K,EAAUzhB,GACpC,IAAInhJ,EAAS,IAAI2B,WAAWihK,GAE5B,KAAQ5iK,EAAO9sB,OAASiuK,EAAQjuK,QAAW,GAAG,CAC5C,MAAMyvL,EAAQ3iK,EAAO,GAErB,IAAK,IAAI3jB,EAAI,EAAGA,EAAI8kK,EAAQjuK,OAAQmJ,IAClC2jB,EAAO3jB,IAAMqmL,EAAGrwJ,IAAI8uI,EAAQ9kK,GAAIsmL,GAIlC,IAAIv6J,EAAS,EACb,KAAOA,EAASpI,EAAO9sB,QAA6B,IAAnB8sB,EAAOoI,IAAeA,IACvDpI,EAASA,EAAOjhB,MAAMqpB,EACxB,CAEA,OAAOpI,CACT,EASA7uB,EAAQ0xL,qBAAuB,SAA+BC,GAC5D,IAAIC,EAAO,IAAIphK,WAAW,CAAC,IAC3B,IAAK,IAAItlB,EAAI,EAAGA,EAAIymL,EAAQzmL,IAC1B0mL,EAAO5xL,EAAQkhC,IAAI0wJ,EAAM,IAAIphK,WAAW,CAAC,EAAG+gK,EAAG/yK,IAAItT,MAGrD,OAAO0mL,CACT,iOC7DA,MAAAliK,EAAA1uB,EAAA,OACA6wL,EAAA7wL,EAAA,OACA2uB,EAAA3uB,EAAA,QAcO8wL,EAASC,EAAWC,GAA8C,CAAC,GAAI,GAAI,IAC5EjwI,EAAsBn8C,OAAO,GAC7B64C,EAAsB74C,OAAO,GAC7BugD,EAAsBvgD,OAAO,GAC7BqsL,EAAsBrsL,OAAO,GAC7BssL,EAAwBtsL,OAAO,KAC/BusL,EAAyBvsL,OAAO,KACtC,IAAK,IAAI+O,EAAQ,EAAGurC,EAAIzB,EAAKvtC,EAAI,EAAGC,EAAI,EAAGwD,EAAQ,GAAIA,IAAS,EAE7DzD,EAAGC,GAAK,CAACA,GAAI,EAAID,EAAI,EAAIC,GAAK,GAC/B2gL,EAAQtqL,KAAK,GAAK,EAAI2J,EAAID,IAE1B6gL,EAAUvqL,MAAQmN,EAAQ,IAAMA,EAAQ,GAAM,EAAK,IAEnD,IAAI8H,EAAIslC,EACR,IAAK,IAAIjxC,EAAI,EAAGA,EAAI,EAAGA,IACrBovC,GAAMA,GAAKzB,GAASyB,GAAK+xI,GAAOE,GAAWD,EACvChyI,EAAIiG,IAAK1pC,GAAKgiC,IAASA,GAAuB74C,OAAOkL,IAAM2tC,GAEjEuzI,EAAWxqL,KAAKiV,EAClB,CACA,MAAO21K,EAAaC,IAA+B,EAAAR,EAAAppL,OAAMupL,GAAY,GAG/DM,EAAQA,CAAC5gK,EAAWhgB,EAAWd,IAAeA,EAAI,IAAK,EAAAihL,EAAAvrB,QAAO50I,EAAGhgB,EAAGd,IAAK,EAAAihL,EAAAzrB,QAAO10I,EAAGhgB,EAAGd,GACtF2hL,EAAQA,CAAC7gK,EAAWhgB,EAAWd,IAAeA,EAAI,IAAK,EAAAihL,EAAAtrB,QAAO70I,EAAGhgB,EAAGd,IAAK,EAAAihL,EAAAxrB,QAAO30I,EAAGhgB,EAAGd,GAG5F,SAAgB4hL,EAAQ5hL,GAAmC,IAAnB6tD,EAAA38D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GACvD,MAAM4uC,EAAI,IAAIl5B,YAAY,IAE1B,IAAK,IAAI7C,EAAQ,GAAK8pD,EAAQ9pD,EAAQ,GAAIA,IAAS,CAEjD,IAAK,IAAIzD,EAAI,EAAGA,EAAI,GAAIA,IAAKw/B,EAAEx/B,GAAKN,EAAEM,GAAKN,EAAEM,EAAI,IAAMN,EAAEM,EAAI,IAAMN,EAAEM,EAAI,IAAMN,EAAEM,EAAI,IACrF,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,MAAMuhL,GAAQvhL,EAAI,GAAK,GACjBwhL,GAAQxhL,EAAI,GAAK,GACjByhL,EAAKjiJ,EAAEgiJ,GACPE,EAAKliJ,EAAEgiJ,EAAO,GACdG,EAAKP,EAAMK,EAAIC,EAAI,GAAKliJ,EAAE+hJ,GAC1BK,EAAKP,EAAMI,EAAIC,EAAI,GAAKliJ,EAAE+hJ,EAAO,GACvC,IAAK,IAAIthL,EAAI,EAAGA,EAAI,GAAIA,GAAK,GAC3BP,EAAEM,EAAIC,IAAM0hL,EACZjiL,EAAEM,EAAIC,EAAI,IAAM2hL,CAEpB,CAEA,IAAIC,EAAOniL,EAAE,GACToiL,EAAOpiL,EAAE,GACb,IAAK,IAAI6L,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAMxO,EAAQ8jL,EAAUt1K,GAClBo2K,EAAKP,EAAMS,EAAMC,EAAM/kL,GACvB6kL,EAAKP,EAAMQ,EAAMC,EAAM/kL,GACvBs+B,EAAKulJ,EAAQr1K,GACnBs2K,EAAOniL,EAAE27B,GACTymJ,EAAOpiL,EAAE27B,EAAK,GACd37B,EAAE27B,GAAMsmJ,EACRjiL,EAAE27B,EAAK,GAAKumJ,CACd,CAEA,IAAK,IAAI3hL,EAAI,EAAGA,EAAI,GAAIA,GAAK,GAAI,CAC/B,IAAK,IAAID,EAAI,EAAGA,EAAI,GAAIA,IAAKw/B,EAAEx/B,GAAKN,EAAEO,EAAID,GAC1C,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,IAAKN,EAAEO,EAAID,KAAOw/B,GAAGx/B,EAAI,GAAK,IAAMw/B,GAAGx/B,EAAI,GAAK,GAC1E,CAEAN,EAAE,IAAMwhL,EAAYz9K,GACpB/D,EAAE,IAAMyhL,EAAY19K,EACtB,CACA+7B,EAAEvf,KAAK,EACT,CAzCAnxB,EAAAA,QAAAwyL,EA2CA,MAAaS,UAAetjK,EAAAI,KAQ1B5hB,WAAAA,CACS6hB,EACAhc,EACAic,GAEsB,IADnBijK,EAAApxL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACA28D,EAAA38D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAM3B,GAJAwE,QANO,KAAA0pB,SAAAA,EACA,KAAAhc,OAAAA,EACA,KAAAic,UAAAA,EACG,KAAAijK,UAAAA,EACA,KAAAz0H,OAAAA,EAXF,KAAApuC,IAAM,EACN,KAAA8iK,OAAS,EACT,KAAA/iK,UAAW,EAEX,KAAAE,WAAY,GAWpB,EAAAZ,EAAA0Q,QAAOnQ,GAEH,GAAK/vB,KAAK8vB,UAAY9vB,KAAK8vB,UAAY,IACzC,MAAM,IAAIjsB,MAAM,4CAClB7D,KAAKU,MAAQ,IAAI4vB,WAAW,KAC5BtwB,KAAKkzL,SAAU,EAAAzjK,EAAAquG,KAAI99H,KAAKU,MAC1B,CACU65G,MAAAA,GACR+3E,EAAQtyL,KAAKkzL,QAASlzL,KAAKu+D,QAC3Bv+D,KAAKizL,OAAS,EACdjzL,KAAKmwB,IAAM,CACb,CACApsB,MAAAA,CAAOJ,IACL,EAAA6rB,EAAAiB,QAAOzwB,MACP,MAAM,SAAE8vB,EAAQ,MAAEpvB,GAAUV,KAEtBmS,GADNxO,GAAO,EAAA8rB,EAAAiB,SAAQ/sB,IACE9B,OACjB,IAAK,IAAIsuB,EAAM,EAAGA,EAAMhe,GAAO,CAC7B,MAAMwe,EAAOvnB,KAAKsI,IAAIoe,EAAW9vB,KAAKmwB,IAAKhe,EAAMge,GACjD,IAAK,IAAInlB,EAAI,EAAGA,EAAI2lB,EAAM3lB,IAAKtK,EAAMV,KAAKmwB,QAAUxsB,EAAKwsB,KACrDnwB,KAAKmwB,MAAQL,GAAU9vB,KAAKu6G,QAClC,CACA,OAAOv6G,IACT,CACUqxJ,MAAAA,GACR,GAAIrxJ,KAAKkwB,SAAU,OACnBlwB,KAAKkwB,UAAW,EAChB,MAAM,MAAExvB,EAAK,OAAEoT,EAAM,IAAEqc,EAAG,SAAEL,GAAa9vB,KAEzCU,EAAMyvB,IAAQrc,EACU,KAAV,IAATA,IAAwBqc,IAAQL,EAAW,GAAG9vB,KAAKu6G,SACxD75G,EAAMovB,EAAW,IAAM,IACvB9vB,KAAKu6G,QACP,CACU44E,SAAAA,CAAUpsL,IAClB,EAAAyoB,EAAAiB,QAAOzwB,MAAM,IACb,EAAAwvB,EAAA2uB,OAAMp3C,GACN/G,KAAKqxJ,SACL,MAAM+hC,EAAYpzL,KAAKU,OACjB,SAAEovB,GAAa9vB,KACrB,IAAK,IAAImwB,EAAM,EAAGhe,EAAMpL,EAAIlF,OAAQsuB,EAAMhe,GAAO,CAC3CnS,KAAKizL,QAAUnjK,GAAU9vB,KAAKu6G,SAClC,MAAM5pF,EAAOvnB,KAAKsI,IAAIoe,EAAW9vB,KAAKizL,OAAQ9gL,EAAMge,GACpDppB,EAAIuP,IAAI88K,EAAUxiK,SAAS5wB,KAAKizL,OAAQjzL,KAAKizL,OAAStiK,GAAOR,GAC7DnwB,KAAKizL,QAAUtiK,EACfR,GAAOQ,CACT,CACA,OAAO5pB,CACT,CACAssL,OAAAA,CAAQtsL,GAEN,IAAK/G,KAAKgzL,UAAW,MAAM,IAAInvL,MAAM,yCACrC,OAAO7D,KAAKmzL,UAAUpsL,EACxB,CACAusL,GAAAA,CAAIn1I,GAEF,OADA,EAAA3uB,EAAA0Q,QAAOie,GACAn+C,KAAKqzL,QAAQ,IAAI/iK,WAAW6tB,GACrC,CACAntB,UAAAA,CAAWjqB,GAET,IADA,EAAAyoB,EAAAnvB,QAAO0G,EAAK/G,MACRA,KAAKkwB,SAAU,MAAM,IAAIrsB,MAAM,+BAGnC,OAFA7D,KAAKmzL,UAAUpsL,GACf/G,KAAK6xB,UACE9qB,CACT,CACA/C,MAAAA,GACE,OAAOhE,KAAKgxB,WAAW,IAAIV,WAAWtwB,KAAK+vB,WAC7C,CACA8B,OAAAA,GACE7xB,KAAKowB,WAAY,EACjBpwB,KAAKU,MAAMuwB,KAAK,EAClB,CACAa,UAAAA,CAAWC,GACT,MAAM,SAAEjC,EAAQ,OAAEhc,EAAM,UAAEic,EAAS,OAAEwuC,EAAM,UAAEy0H,GAAchzL,KAY3D,OAXA+xB,IAAAA,EAAO,IAAIghK,EAAOjjK,EAAUhc,EAAQic,EAAWijK,EAAWz0H,IAC1DxsC,EAAGmhK,QAAQ58K,IAAItW,KAAKkzL,SACpBnhK,EAAG5B,IAAMnwB,KAAKmwB,IACd4B,EAAGkhK,OAASjzL,KAAKizL,OACjBlhK,EAAG7B,SAAWlwB,KAAKkwB,SACnB6B,EAAGwsC,OAASA,EAEZxsC,EAAGje,OAASA,EACZie,EAAGhC,UAAYA,EACfgC,EAAGihK,UAAYA,EACfjhK,EAAG3B,UAAYpwB,KAAKowB,UACb2B,CACT,EAvGFjyB,EAAAA,OAAAizL,EA0GA,MAAM9jC,EAAMA,CAACn7I,EAAgBgc,EAAkBC,KAC7C,EAAAN,EAAAm1F,kBAAgB,IAAM,IAAImuE,EAAOjjK,EAAUhc,EAAQic,KAExCjwB,EAAAA,SAA2BmvJ,EAAI,EAAM,IAAK,IAK1CnvJ,EAAAA,SAA2BmvJ,EAAI,EAAM,IAAK,IAC1CnvJ,EAAAA,SAA2BmvJ,EAAI,EAAM,IAAK,IAC1CnvJ,EAAAA,SAA2BmvJ,EAAI,EAAM,GAAI,IACzCnvJ,EAAAA,WAA6BmvJ,EAAI,EAAM,IAAK,IAK5CnvJ,EAAAA,WAA6BmvJ,EAAI,EAAM,IAAK,IAC5CnvJ,EAAAA,WAA6BmvJ,EAAI,EAAM,IAAK,IAC5CnvJ,EAAAA,WAA6BmvJ,EAAI,EAAM,GAAI,IAIxD,MAAMskC,EAAWA,CAACz/K,EAAgBgc,EAAkBC,KAClD,EAAAN,EAAA+jK,6BACE,eAACv5J,EAAAr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAkB,CAAC,EAAC,OACnB,IAAImxL,EAAOjjK,EAAUhc,OAAuBhS,IAAfm4B,EAAKw5J,MAAsB1jK,EAAYkK,EAAKw5J,OAAO,EAAK,IAG9E3zL,EAAAA,SAA2ByzL,EAAS,GAAM,IAAK,IAC/CzzL,EAAAA,SAA2ByzL,EAAS,GAAM,IAAK,kCCrN5D,IAAIG,EAAuB5yL,EAAQ,OAEnC,SAAS6yL,IAAiB,CAC1B,SAASC,IAA0B,CACnCA,EAAuBC,kBAAoBF,EAE3C5zL,EAAOD,QAAU,WACf,SAASg0L,EAAKnpG,EAAOopG,EAAUC,EAAeC,EAAUC,EAAclgI,GACpE,GAAIA,IAAW0/H,EAAf,CAIA,IAAI9pK,EAAM,IAAI/lB,MACZ,mLAKF,MADA+lB,EAAIhY,KAAO,sBACLgY,CAPN,CAQF,CAEA,SAASuqK,IACP,OAAOL,CACT,CAHAA,EAAKvmB,WAAaumB,EAMlB,IAAIM,EAAiB,CACnBv3F,MAAOi3F,EACPzkC,OAAQykC,EACRjiI,KAAMiiI,EACNxqK,KAAMwqK,EACN5zJ,OAAQ4zJ,EACRp2H,OAAQo2H,EACRnzJ,OAAQmzJ,EACRO,OAAQP,EAERQ,IAAKR,EACLS,QAASJ,EACTK,QAASV,EACTW,YAAaX,EACbY,WAAYP,EACZ3oH,KAAMsoH,EACNa,SAAUR,EACVtwC,MAAOswC,EACP3mB,UAAW2mB,EACXS,MAAOT,EACPU,MAAOV,EAEPW,eAAgBlB,EAChBC,kBAAmBF,GAKrB,OAFAS,EAAeW,UAAYX,EAEpBA,CACT,2pTChEA,MAAAt1K,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAme,EAAAne,EAAA,OA6GA,SAAgBk0L,EAA4C71K,GAInC,IAJoC,UACzDnd,EACAod,MAAOoT,EAASnxB,EAAM45J,GAAK,KAC3Bt3J,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAnxB,OACA45J,QAEJt3J,KAAM7D,EAAAm1L,kCAAkCx1K,OAAO9b,GAEvD,CApHa7D,EAAAA,mCAAoC,EAAAgf,EAAAY,QAA0C,EACvF,EAAAZ,EAAAa,IAAG,gBACH,EAAAZ,EAAApa,WAAU,WAad7E,EAAAA,oCAAA,SACI0yB,EACAnxB,EACAE,GAC4B,IAA5BS,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,EAAO,CACT,CAAEU,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQjf,EAAAs6J,mBAAoBp7I,UAAU,EAAOC,YAAY,IAEzDrc,EAAOY,EAAO0b,MAAMngB,EAAAm1L,kCAAkC/0K,MAE5D,OADApgB,EAAAm1L,kCAAkC90K,OAAO,CAAEd,YAAaJ,EAAAmB,iBAAiB80K,mBAAoB3zL,SAASoC,GAC/F,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAwBA7D,EAAAA,oCAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAm1L,kCAAkC/0K,KAC9D,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,QAAEoT,EAAO,KAAEnxB,EAAI,KAAE45J,GAAM,KAC7Bt3J,GACAqxL,EAA6C31K,GACjD,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiB80K,mBAAoB,MAAM,IAAIl2K,EAAA0B,iCACxE,IAAK8R,IAAYnxB,IAAS45J,EAAM,MAAM,IAAIj8I,EAAA2B,iCAI1C,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAnxB,OACA45J,QAEJt3J,OAER,EAuBA7D,EAAAA,6CAAAk1L,8BCnHAl1L,EAAQ,OAAoC,EAkB5CA,EAAQ,EAjBgC,CACtC,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,kBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,2LAEP,SAAY,kCCnBhBkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,qBCOtD,IAAIo7B,EAAWx9B,EAAQ,OACnB+uB,EAAO/uB,EAAQ,OACfyD,EAASzD,EAAAA,OAAAA,OAETwqF,EAAI,CACN,WAAY,YAAY,YAAgB,WAGtCmB,EAAI,IAAItiF,MAAM,IAElB,SAASgrL,IACPn1L,KAAKmP,OACLnP,KAAKyqH,GAAKh+B,EAEV58D,EAAK/Y,KAAK9W,KAAM,GAAI,GACtB,CAkBA,SAASo1L,EAAQj0J,GACf,OAAQA,GAAO,GAAOA,IAAQ,CAChC,CAEA,SAASk0J,EAAI3kL,EAAGQ,EAAGE,EAAGmE,GACpB,OAAU,IAAN7E,EAAiBQ,EAAIE,GAAQF,EAAKqE,EAC5B,IAAN7E,EAAiBQ,EAAIE,EAAMF,EAAIqE,EAAMnE,EAAImE,EACtCrE,EAAIE,EAAImE,CACjB,CAxBA+oB,EAAS62J,EAAKtlK,GAEdslK,EAAIvqL,UAAUuE,KAAO,WAOnB,OANAnP,KAAK4pI,GAAK,WACV5pI,KAAKggK,GAAK,WACVhgK,KAAK29C,GAAK,WACV39C,KAAKogK,GAAK,UACVpgK,KAAKsgK,GAAK,WAEHtgK,IACT,EAgBAm1L,EAAIvqL,UAAUu0B,QAAU,SAAUwsD,GAShC,IARA,IAfcxqD,EAeVsrD,EAAIzsF,KAAKyqH,GAETh6G,EAAc,EAAVzQ,KAAK4pI,GACT14H,EAAc,EAAVlR,KAAKggK,GACT5uJ,EAAc,EAAVpR,KAAK29C,GACTpoC,EAAc,EAAVvV,KAAKogK,GACT7uJ,EAAc,EAAVvR,KAAKsgK,GAEJt1J,EAAI,EAAGA,EAAI,KAAMA,EAAGyhF,EAAEzhF,GAAK2gF,EAAEutC,YAAgB,EAAJluH,GAClD,KAAOA,EAAI,KAAMA,EAAGyhF,EAAEzhF,GAAKyhF,EAAEzhF,EAAI,GAAKyhF,EAAEzhF,EAAI,GAAKyhF,EAAEzhF,EAAI,IAAMyhF,EAAEzhF,EAAI,IAEnE,IAAK,IAAI4F,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAAIF,KAAOE,EAAI,IACX2L,EAAoD,IA5B5C4kB,EA4BG1wB,IA3BF,EAAM0wB,IAAQ,IA2BPk0J,EAAG3kL,EAAGQ,EAAGE,EAAGmE,GAAKhE,EAAIk7E,EAAE77E,GAAK06E,EAAE56E,GAElDa,EAAIgE,EACJA,EAAInE,EACJA,EAAIgkL,EAAOlkL,GACXA,EAAIT,EACJA,EAAI8L,CACN,CAEAvc,KAAK4pI,GAAMn5H,EAAIzQ,KAAK4pI,GAAM,EAC1B5pI,KAAKggK,GAAM9uJ,EAAIlR,KAAKggK,GAAM,EAC1BhgK,KAAK29C,GAAMvsC,EAAIpR,KAAK29C,GAAM,EAC1B39C,KAAKogK,GAAM7qJ,EAAIvV,KAAKogK,GAAM,EAC1BpgK,KAAKsgK,GAAM/uJ,EAAIvR,KAAKsgK,GAAM,CAC5B,EAEA60B,EAAIvqL,UAAU8gH,MAAQ,WACpB,IAAIvgC,EAAI5mF,EAAOi/B,YAAY,IAQ3B,OANA2nD,EAAEygC,aAAuB,EAAV5rH,KAAK4pI,GAAQ,GAC5Bz+C,EAAEygC,aAAuB,EAAV5rH,KAAKggK,GAAQ,GAC5B70E,EAAEygC,aAAuB,EAAV5rH,KAAK29C,GAAQ,GAC5BwtC,EAAEygC,aAAuB,EAAV5rH,KAAKogK,GAAQ,IAC5Bj1E,EAAEygC,aAAuB,EAAV5rH,KAAKsgK,GAAQ,IAErBn1E,CACT,EAEAprF,EAAOD,QAAUq1L,gCC5FjBnyL,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmzD,+BAA4B,EACpC,MAAMhuD,EAASnE,EAAQ,OACjBoE,EAAapE,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClBsE,EAAyBtE,EAAQ,OACjCuE,EAAevE,EAAQ,OACvByC,EAAWzC,EAAQ,QACV,EAAIqE,EAAQG,WAAW,+BACtC,MAAM2tD,UAAkC7tD,EAAuBU,qBAC3DC,mBAAAA,CAAoBpC,GAChB,MAAO,CACHuB,EAAWN,KAAKoB,8BAA8B,EAAC,EAAIb,EAAQc,UAAUtC,EAAKnC,SAAS,EAAI2D,EAAQgB,mBAAmBxC,EAAKtD,aACpH+F,MAAML,oBAAoBpC,GAErC,CACA,gBAAM0C,CAAW3C,EAAQ4C,EAAUC,EAAaC,GAC5C,IAAKF,EAASG,eAAezG,KAAK0G,SAC9B,MAAM,IAAI7C,MAAM,yBACpB,MACMkD,EADc1B,EAAa/C,YAAYsE,QAAQrD,EAASgB,OAAOC,KAAK+B,EAAYM,GAAGC,IAAK,QACtEE,UAAUT,EAAYU,OACxC,YAAEC,EAAW,QAAEC,SAAkBnH,KAAKoH,YAAY1D,EAAQ4C,EAAUC,EAAa,CACnFlG,OAAQkD,EAASgB,OAAOC,KAAKuC,EAAIM,QACjC7F,OAAQuF,EAAIvF,SAIhB,OAFA2F,EAAQG,SAAQ,EAAInC,EAAQoC,mBAAmBhE,EAASgB,OAAOC,KAAK+B,EAAYM,GAAGC,IAAK,SACxFK,EAAQG,KAAK5B,OAAOa,EAAYU,OACzB,CAAEC,cAAaC,UAC1B,CACAK,MAAAA,CAAO7D,GACH,OAAOsvD,EAA0BxrD,GACrC,CACAC,OAAAA,GACI,OAAOurD,EAA0BtrD,IACrC,EAEJ7H,EAAQmzD,0BAA4BA,EACpCA,EAA0BtrD,KAAO1C,EAAO2C,cAAc+6F,MACtD1vC,EAA0BxrD,IAAM,CAAEK,GAAI,2ICvCtC,MAAAgX,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEA8wD,EAAA9wD,EAAA,OASahB,EAAAA,gBAAiB,EAAAgf,EAAAY,QAAiB,EAAC,EAAAX,EAAA8yC,MAAK,aAExC/xD,EAAAA,eAAiBA,EAAAw1L,eAAep1K,KAE7CpgB,EAAAA,YAAA,SAA4B0yB,GACxB,MAAMu/B,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAcsjI,SAAU/iK,EAAQ2/B,SACvE,OAAsB,OAAlBJ,EACOjyD,EAAAw1L,eAAe71K,OAAOsyC,GAEtB,IAEf,iOCvBA,MAAAviC,EAAA1uB,EAAA,OACA6wL,EAAA7wL,EAAA,OACA2uB,EAAA3uB,EAAA,OAgBM8wL,EAAoB,GACpBC,EAAsB,GACtBC,EAAuB,GACvBjwI,EAAsBn8C,OAAO,GAC7B64C,EAAsB74C,OAAO,GAC7BugD,EAAsBvgD,OAAO,GAC7BqsL,EAAsBrsL,OAAO,GAC7BssL,EAAwBtsL,OAAO,KAC/BusL,EAAyBvsL,OAAO,KACtC,IAAK,IAAI+O,EAAQ,EAAGurC,EAAIzB,EAAKvtC,EAAI,EAAGC,EAAI,EAAGwD,EAAQ,GAAIA,IAAS,EAE7DzD,EAAGC,GAAK,CAACA,GAAI,EAAID,EAAI,EAAIC,GAAK,GAC/B2gL,EAAQtqL,KAAK,GAAK,EAAI2J,EAAID,IAE1B6gL,EAAUvqL,MAAQmN,EAAQ,IAAMA,EAAQ,GAAM,EAAK,IAEnD,IAAI8H,EAAIslC,EACR,IAAK,IAAIjxC,EAAI,EAAGA,EAAI,EAAGA,IACrBovC,GAAMA,GAAKzB,GAASyB,GAAK+xI,GAAOE,GAAWD,EACvChyI,EAAIiG,IAAK1pC,GAAKgiC,IAASA,GAAuB74C,OAAOkL,IAAM2tC,GAEjEuzI,EAAWxqL,KAAKiV,EAClB,CACA,MAAO21K,EAAaC,IAA+B,EAAAR,EAAAppL,OAAMupL,GAAY,GAG/DM,EAAQA,CAAC5gK,EAAWhgB,EAAWd,IAAeA,EAAI,IAAK,EAAAihL,EAAAvrB,QAAO50I,EAAGhgB,EAAGd,IAAK,EAAAihL,EAAAzrB,QAAO10I,EAAGhgB,EAAGd,GACtF2hL,EAAQA,CAAC7gK,EAAWhgB,EAAWd,IAAeA,EAAI,IAAK,EAAAihL,EAAAtrB,QAAO70I,EAAGhgB,EAAGd,IAAK,EAAAihL,EAAAxrB,QAAO30I,EAAGhgB,EAAGd,GAG5F,SAAgB4hL,EAAQ5hL,GAAmC,IAAnB6tD,EAAA38D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GACvD,MAAM4uC,EAAI,IAAIl5B,YAAY,IAE1B,IAAK,IAAI7C,EAAQ,GAAK8pD,EAAQ9pD,EAAQ,GAAIA,IAAS,CAEjD,IAAK,IAAIzD,EAAI,EAAGA,EAAI,GAAIA,IAAKw/B,EAAEx/B,GAAKN,EAAEM,GAAKN,EAAEM,EAAI,IAAMN,EAAEM,EAAI,IAAMN,EAAEM,EAAI,IAAMN,EAAEM,EAAI,IACrF,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,MAAMuhL,GAAQvhL,EAAI,GAAK,GACjBwhL,GAAQxhL,EAAI,GAAK,GACjByhL,EAAKjiJ,EAAEgiJ,GACPE,EAAKliJ,EAAEgiJ,EAAO,GACdG,EAAKP,EAAMK,EAAIC,EAAI,GAAKliJ,EAAE+hJ,GAC1BK,EAAKP,EAAMI,EAAIC,EAAI,GAAKliJ,EAAE+hJ,EAAO,GACvC,IAAK,IAAIthL,EAAI,EAAGA,EAAI,GAAIA,GAAK,GAC3BP,EAAEM,EAAIC,IAAM0hL,EACZjiL,EAAEM,EAAIC,EAAI,IAAM2hL,CAEpB,CAEA,IAAIC,EAAOniL,EAAE,GACToiL,EAAOpiL,EAAE,GACb,IAAK,IAAI6L,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAMxO,EAAQ8jL,EAAUt1K,GAClBo2K,EAAKP,EAAMS,EAAMC,EAAM/kL,GACvB6kL,EAAKP,EAAMQ,EAAMC,EAAM/kL,GACvBs+B,EAAKulJ,EAAQr1K,GACnBs2K,EAAOniL,EAAE27B,GACTymJ,EAAOpiL,EAAE27B,EAAK,GACd37B,EAAE27B,GAAMsmJ,EACRjiL,EAAE27B,EAAK,GAAKumJ,CACd,CAEA,IAAK,IAAI3hL,EAAI,EAAGA,EAAI,GAAIA,GAAK,GAAI,CAC/B,IAAK,IAAID,EAAI,EAAGA,EAAI,GAAIA,IAAKw/B,EAAEx/B,GAAKN,EAAEO,EAAID,GAC1C,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,IAAKN,EAAEO,EAAID,KAAOw/B,GAAGx/B,EAAI,GAAK,IAAMw/B,GAAGx/B,EAAI,GAAK,GAC1E,CAEAN,EAAE,IAAMwhL,EAAYz9K,GACpB/D,EAAE,IAAMyhL,EAAY19K,EACtB,CACA+7B,EAAEvf,KAAK,EACT,CAzCAnxB,EAAAA,QAAAwyL,EA2CA,MAAaS,UAAetjK,EAAAI,KAQ1B5hB,WAAAA,CACS6hB,EACAhc,EACAic,GAEsB,IADnBijK,EAAApxL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACA28D,EAAA38D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAM3B,GAJAwE,QANO,KAAA0pB,SAAAA,EACA,KAAAhc,OAAAA,EACA,KAAAic,UAAAA,EACG,KAAAijK,UAAAA,EACA,KAAAz0H,OAAAA,EAXF,KAAApuC,IAAM,EACN,KAAA8iK,OAAS,EACT,KAAA/iK,UAAW,EAEX,KAAAE,WAAY,GAWpB,EAAAZ,EAAA0Q,QAAOnQ,GAEH,GAAK/vB,KAAK8vB,UAAY9vB,KAAK8vB,UAAY,IACzC,MAAM,IAAIjsB,MAAM,4CAClB7D,KAAKU,MAAQ,IAAI4vB,WAAW,KAC5BtwB,KAAKkzL,SAAU,EAAAzjK,EAAAquG,KAAI99H,KAAKU,MAC1B,CACU65G,MAAAA,GACH9qF,EAAAQ,OAAM,EAAAR,EAAAutI,YAAWh9J,KAAKkzL,SAC3BZ,EAAQtyL,KAAKkzL,QAASlzL,KAAKu+D,QACtB9uC,EAAAQ,OAAM,EAAAR,EAAAutI,YAAWh9J,KAAKkzL,SAC3BlzL,KAAKizL,OAAS,EACdjzL,KAAKmwB,IAAM,CACb,CACApsB,MAAAA,CAAOJ,IACL,EAAA6rB,EAAAiB,QAAOzwB,MACP,MAAM,SAAE8vB,EAAQ,MAAEpvB,GAAUV,KAEtBmS,GADNxO,GAAO,EAAA8rB,EAAAiB,SAAQ/sB,IACE9B,OACjB,IAAK,IAAIsuB,EAAM,EAAGA,EAAMhe,GAAO,CAC7B,MAAMwe,EAAOvnB,KAAKsI,IAAIoe,EAAW9vB,KAAKmwB,IAAKhe,EAAMge,GACjD,IAAK,IAAInlB,EAAI,EAAGA,EAAI2lB,EAAM3lB,IAAKtK,EAAMV,KAAKmwB,QAAUxsB,EAAKwsB,KACrDnwB,KAAKmwB,MAAQL,GAAU9vB,KAAKu6G,QAClC,CACA,OAAOv6G,IACT,CACUqxJ,MAAAA,GACR,GAAIrxJ,KAAKkwB,SAAU,OACnBlwB,KAAKkwB,UAAW,EAChB,MAAM,MAAExvB,EAAK,OAAEoT,EAAM,IAAEqc,EAAG,SAAEL,GAAa9vB,KAEzCU,EAAMyvB,IAAQrc,EACU,KAAV,IAATA,IAAwBqc,IAAQL,EAAW,GAAG9vB,KAAKu6G,SACxD75G,EAAMovB,EAAW,IAAM,IACvB9vB,KAAKu6G,QACP,CACU44E,SAAAA,CAAUpsL,IAClB,EAAAyoB,EAAAiB,QAAOzwB,MAAM,IACb,EAAAwvB,EAAA2uB,OAAMp3C,GACN/G,KAAKqxJ,SACL,MAAM+hC,EAAYpzL,KAAKU,OACjB,SAAEovB,GAAa9vB,KACrB,IAAK,IAAImwB,EAAM,EAAGhe,EAAMpL,EAAIlF,OAAQsuB,EAAMhe,GAAO,CAC3CnS,KAAKizL,QAAUnjK,GAAU9vB,KAAKu6G,SAClC,MAAM5pF,EAAOvnB,KAAKsI,IAAIoe,EAAW9vB,KAAKizL,OAAQ9gL,EAAMge,GACpDppB,EAAIuP,IAAI88K,EAAUxiK,SAAS5wB,KAAKizL,OAAQjzL,KAAKizL,OAAStiK,GAAOR,GAC7DnwB,KAAKizL,QAAUtiK,EACfR,GAAOQ,CACT,CACA,OAAO5pB,CACT,CACAssL,OAAAA,CAAQtsL,GAEN,IAAK/G,KAAKgzL,UAAW,MAAM,IAAInvL,MAAM,yCACrC,OAAO7D,KAAKmzL,UAAUpsL,EACxB,CACAusL,GAAAA,CAAIn1I,GAEF,OADA,EAAA3uB,EAAA0Q,QAAOie,GACAn+C,KAAKqzL,QAAQ,IAAI/iK,WAAW6tB,GACrC,CACAntB,UAAAA,CAAWjqB,GAET,IADA,EAAAyoB,EAAAnvB,QAAO0G,EAAK/G,MACRA,KAAKkwB,SAAU,MAAM,IAAIrsB,MAAM,+BAGnC,OAFA7D,KAAKmzL,UAAUpsL,GACf/G,KAAK6xB,UACE9qB,CACT,CACA/C,MAAAA,GACE,OAAOhE,KAAKgxB,WAAW,IAAIV,WAAWtwB,KAAK+vB,WAC7C,CACA8B,OAAAA,GACE7xB,KAAKowB,WAAY,EACjBpwB,KAAKU,MAAMuwB,KAAK,EAClB,CACAa,UAAAA,CAAWC,GACT,MAAM,SAAEjC,EAAQ,OAAEhc,EAAM,UAAEic,EAAS,OAAEwuC,EAAM,UAAEy0H,GAAchzL,KAY3D,OAXA+xB,IAAAA,EAAO,IAAIghK,EAAOjjK,EAAUhc,EAAQic,EAAWijK,EAAWz0H,IAC1DxsC,EAAGmhK,QAAQ58K,IAAItW,KAAKkzL,SACpBnhK,EAAG5B,IAAMnwB,KAAKmwB,IACd4B,EAAGkhK,OAASjzL,KAAKizL,OACjBlhK,EAAG7B,SAAWlwB,KAAKkwB,SACnB6B,EAAGwsC,OAASA,EAEZxsC,EAAGje,OAASA,EACZie,EAAGhC,UAAYA,EACfgC,EAAGihK,UAAYA,EACfjhK,EAAG3B,UAAYpwB,KAAKowB,UACb2B,CACT,EAzGFjyB,EAAAA,OAAAizL,EA4GA,MAAM9jC,EAAMA,CAACn7I,EAAgBgc,EAAkBC,KAC7C,EAAAN,EAAAm1F,kBAAgB,IAAM,IAAImuE,EAAOjjK,EAAUhc,EAAQic,KAExCjwB,EAAAA,SAA2BmvJ,EAAI,EAAM,IAAK,IAK1CnvJ,EAAAA,SAA2BmvJ,EAAI,EAAM,IAAK,IAC1CnvJ,EAAAA,SAA2BmvJ,EAAI,EAAM,IAAK,IAC1CnvJ,EAAAA,SAA2BmvJ,EAAI,EAAM,GAAI,IACzCnvJ,EAAAA,WAA6BmvJ,EAAI,EAAM,IAAK,IAK5CnvJ,EAAAA,WAA6BmvJ,EAAI,EAAM,IAAK,IAC5CnvJ,EAAAA,WAA6BmvJ,EAAI,EAAM,IAAK,IAC5CnvJ,EAAAA,WAA6BmvJ,EAAI,EAAM,GAAI,IAIxD,MAAMskC,EAAWA,CAACz/K,EAAgBgc,EAAkBC,KAClD,EAAAN,EAAA+jK,6BACE,eAACv5J,EAAAr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAkB,CAAC,EAAC,OACnB,IAAImxL,EAAOjjK,EAAUhc,OAAuBhS,IAAfm4B,EAAKw5J,MAAsB1jK,EAAYkK,EAAKw5J,OAAO,EAAK,IAG9E3zL,EAAAA,SAA2ByzL,EAAS,GAAM,IAAK,IAC/CzzL,EAAAA,SAA2ByzL,EAAS,GAAM,IAAK,kCCnO5DvwL,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ20I,gBAyCR,SAAyB/xD,GACrB,GAAkB,MAAdA,EACA,OAEJ,IAAI1wE,EAAM0wE,EAAWz1E,OAAOD,QAAQ,MAAO,IAC3C,GAAIslI,EAAY7lI,mBAAmB6H,KAAKtC,GAOpC,OANKA,EAAInJ,WAAW,OAChBmJ,EAAM,IAAMA,GAEXA,EAAIy0E,SAAS,OACdz0E,GAAY,KAETwjL,EAAcxjL,GAAKtE,MAAM,GAAI,GAIxC,GAAI,mBAAmB4G,KAAKtC,GACxB,OAAOwjL,EAAcxjL,GAGzB,OAAOA,EAAI4C,aACf,EA7DA,MAAM09H,EAAcxxI,EAAQ,MAM5B,SAAS00L,EAAcnoL,GACnB,OAAO,IAAI44E,IAAI,UAAU54E,KAAUm5E,QACvC,0BCUAzmF,EAAOD,QAAU,CAGfqvE,WAAoB,EACpBC,gBAAoB,EACpBC,aAAoB,EACpBC,aAAoB,EACpB76C,SAAoB,EACpBC,QAAoB,EACpBC,QAAoB,EAKpBC,KAAoB,EACpBC,aAAoB,EACpBC,YAAoB,EACpBy6C,SAAoB,EACpBx6C,gBAAoB,EACpBC,cAAoB,EACpBC,aAAoB,EACpBC,aAAoB,EAIpBs6C,iBAA0B,EAC1BC,aAA0B,EAC1BC,mBAA0B,EAC1BC,uBAA0B,EAG1BC,WAA0B,EAC1BC,eAA0B,EAC1BC,MAA0B,EAC1BC,QAA0B,EAC1BC,mBAA0B,EAG1BC,SAA0B,EAC1BC,OAA0B,EAE1BC,UAA0B,EAG1Bh7C,WAA0B,iCChE5BnyB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQgiI,kBAAe,EACvB,MAAM1+H,EAAiBtC,EAAQ,OACzBD,EAAYC,EAAQ,OACpB8pJ,EAAc9pJ,EAAQ,MACtB2mL,EAAiB3mL,EAAQ,OACzBqE,EAAUrE,EAAQ,MACxB,MAAMghI,UAAqB1+H,EAAeI,aAWtC6lL,OAAAA,CAAQ3lL,EAAQiB,EAAWwD,EAAOstL,GAC9B,MAAM9N,GAAM,EAAI/8B,EAAYjwG,+BAA+BxyC,EAAOxD,GAAW,GAC7E,OAAmB,MAAf8wL,GAAwB9N,EAAIpnK,OAAOk1K,GAEhC,IAAIhO,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,MAAM,EAAIowE,EAAYhwG,yCAAyCl3C,EAAQikL,EAAKhjL,EAAWwD,GAAQ25H,EAAaumD,QAAQqN,UAD7J,IAEf,CASAhM,IAAAA,CAAK/kL,EAAWnD,EAAQulG,GACpB,MAAM4gF,GAAM,EAAI/8B,EAAYjwG,+BAA+BmnF,EAAa2pB,aAAc9mJ,GAAW,GAC3Fq4E,EAAS,IAAIyqG,EAAeG,aAAajjL,EAAW3E,KAAKw6E,MAS/D,OARIusB,GACA/pB,EAAOD,OAAM,EAAI6tE,EAAYhwG,yCAAyCj2C,EAAWgjL,EAAKhjL,EAAWm9H,EAAa2pB,cAAe3pB,EAAaumD,QAAQqN,UACtJ14G,EAAOD,MAAMl8E,EAAU26B,cAAcqf,SAAS,CAC1CC,WAAYn2C,EACZo2C,SAAU4sI,EACV3sI,SAAUx5C,IACVsgI,EAAaumD,QAAQsN,UACzB34G,EAAOD,OAAM,EAAI6tE,EAAY3vG,6BAA6B0sI,IACnD3qG,CACX,CAOAusG,MAAAA,CAAO5kL,GACH,MAAMgjL,GAAM,EAAI/8B,EAAYjwG,+BAA+BmnF,EAAa2pB,aAAc9mJ,GAAW,GACjG,OAAO,IAAI8iL,EAAeG,aAAajjL,EAAW3E,KAAKw6E,MAAM,EAAIowE,EAAYgrC,+BAA+BjO,EAAKhjL,EAAWA,GAAYm9H,EAAaumD,QAAQwN,UACjK,CAUAC,WAAAA,CAAYpyL,EAAQ6zD,EAAW/1D,GAC3B,OAAO,IAAIimL,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,KAAM35E,EAAU26B,cAAcqf,SAAS,CACvFC,WAAYp3C,EACZq3C,SAAUwc,EACVvc,SAAUx5C,IACVsgI,EAAaumD,QAAQ0N,aAC7B,CAWA1mE,QAAAA,CAAS3rH,EAAQ6zD,EAAWpvD,EAAO3G,GAC/B,MAAMw0L,GAAS,EAAIprC,EAAYjwG,+BAA+BxyC,EAAOzE,GAAQ,GACvEuyL,GAAS,EAAIrrC,EAAYjwG,+BAA+BxyC,EAAOovD,GAAW,GAChF,OAAO,IAAIkwH,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,MAAM,EAAIowE,EAAYsrC,2BAA2BF,EAAQC,EAAQvyL,EAAQlC,GAASsgI,EAAaumD,QAAQ8N,SAC/J,CAUA,oBAAMC,CAAe1yL,EAAQlC,EAAQ+1D,EAAW/wD,GAC5C,MAAM6vL,GAAU,EAAIzrC,EAAYjwG,+BAA+BmnF,EAAa2pB,aAAc/nJ,GAAQ,GAC5F4lL,QAAqBtpL,KAAKopL,UAAUiN,GACpCr5G,EAAS,IAAIyqG,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,MAW5D,OAVI8uG,GACA9iL,EAAUA,SAAiBxG,KAAKw6E,KAAKqC,KAAKC,WAAW,CAACp5E,EAAQ6zD,EAAW8+H,IACzEr5G,EAAOz6E,IAAIvC,KAAKupL,OAAO7lL,KAGvB8C,EAAUA,SAAiBxG,KAAKw6E,KAAKqC,KAAKC,WAAW,CAACp5E,EAAQ6zD,IAElEylB,EAAOz6E,IAAIvC,KAAK81L,YAAYpyL,EAAQ6zD,EAAW/1D,IAC/CxB,KAAK6hB,OAAO0F,MAAM,mEAAqEgwC,EAAU9yD,WAC7F,YAAcjD,EAAOiD,SAAS,IAAM,gBAAkB6kL,GACnD,OAAOtsG,EAAOn2E,GAAGL,GAC5B,CAWA,uBAAM8vL,CAAkB5yL,EAAQyE,EAAO3G,EAAQ+1D,EAAW/wD,GACtD,MAAMwvL,GAAS,EAAIprC,EAAYjwG,+BAA+BxyC,EAAOzE,GAAQ,GACvEuyL,GAAS,EAAIrrC,EAAYjwG,+BAA+BxyC,EAAOovD,GAAW,GAChF/wD,EAAUA,SAAiBxG,KAAKw6E,KAAKqC,KAAKC,WAAW,CAACp5E,EAAQsyL,EAAQC,IACtE,MAAMlvF,SAAiB/mG,KAAKopL,UAAU6M,GAChCj5G,EAAS,IAAIyqG,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,MAO5D,OANIusB,GACA/pB,EAAOz6E,IAAIvC,KAAKqpL,QAAQ3lL,EAAQ6zD,EAAWpvD,IAE/C60E,EAAOz6E,IAAIvC,KAAKqvH,SAAS3rH,EAAQ6zD,EAAWpvD,EAAO3G,IACnDxB,KAAK6hB,OAAO0F,MAAM,wDAA0DgwC,EAAU9yD,WAClF,WAAa0D,EAAM1D,WAAa,YAAcjD,EAAOiD,SAAS,IAAM,aAAesiG,GAChF,OAAO/pB,EAAOn2E,GAAGL,GAC5B,CAQA4iG,YAAAA,CAAajhG,GACT,IAEI,OADA,IAAItH,EAAUiE,UAAUqD,IACjB,CACX,CACA,MAAOoJ,GACH,OAAO,CACX,CACJ,CAMAk4K,YAAAA,CAAa9B,GACT,OAAO,EAAI/8B,EAAY5pE,YAAYhhF,KAAKkB,WAAYymL,GAAK/kK,OAAMrR,IAC3D,GAAIA,aAAaq5I,EAAY3pE,0BACzB,OAAO,KACX,MAAM1vE,CAAC,GAEf,CAMA,eAAM63K,CAAUzB,GAEZ,OAAkB,YADI,EAAIxiL,EAAQke,iBAAgB,IAAMrjB,KAAKypL,aAAa9B,IAAM3nL,KAAKupB,YAEzF,CAIAgtK,wBAAAA,GACI,OAAOlyL,QAAQC,QAAQoB,OAAOo8H,EAAa00D,qBAC/C,CAOA,qBAAMhwF,CAAgB7hG,EAAWwD,GAC7B,MAAMw/K,GAAM,EAAI/8B,EAAYjwG,+BAA+BxyC,EAAOxD,GAAW,IACtE8xL,EAAYn+I,SAAiBj0C,QAAQoE,IAAI,CAC5CzI,KAAKypL,aAAa9B,GACR,MAATx/K,GAAiBA,EAAMoY,OAAOuhH,EAAa2pB,cAAiBzrJ,KAAKkB,WAAWs3C,WAAW7zC,GAAaN,QAAQC,QAAQ,QAEzH,IAAI8kL,EAA0B,MAAdqN,EACZh/K,EAAM,GAIV,GAHI2xK,IACA3xK,GAAOg/K,EAAWj1L,QAEP,MAAX82C,EAAiB,CACjB,IAAIo+I,EAAkBhxL,OAAO4yC,GACxB8wI,IACDsN,SAA0C12L,KAAKu2L,4BAC/CG,GAAmB,KACnBj/K,GAAOi/K,EACf,CAGA,OAFA12L,KAAK6hB,OAAO0F,MAAM,oDAAsDpf,EAAM1D,WAC1E,aAAeE,EAAUF,WAAa,YAAcgT,EAAIhT,YACrD,CAAE6zC,QAAS7gC,EAAK2xK,YAC3B,CAIAvhK,wBAAAA,GACI,OAAOi6G,EAAa2pB,YACxB,CAKAkrC,cAAAA,CAAejwL,GACX,OAAO,IAAI7F,EAAUiE,UAAU4B,EACnC,CAYA8gG,WAAAA,CAAY9jG,EAAQyE,EAAO3G,EAAQimG,EAAYjhG,GAC3C,OAAIs7H,EAAa2pB,aAAalrI,OAAOpY,GAC1BnI,KAAKo2L,eAAe1yL,EAAQlC,EAAQimG,EAAYjhG,GAEpDxG,KAAKs2L,kBAAkB5yL,EAAQyE,EAAO3G,EAAQimG,EAAYjhG,EACrE,EAEJ1G,EAAQgiI,aAAeA,EACvBA,EAAaumD,QAAU,CACnBsN,SAAU,IACVE,UAAW,IACXH,SAAU,IACVS,SAAU,IACVJ,aAAc,KAElBj0D,EAAa2pB,aAAe,IAAI5qJ,EAAUiE,UAAU,+CACpDg9H,EAAa00D,oBAAsB,oCClPnC12L,EAAQ,OAAoB,EAkB5BA,EAAQ,EAjBgB,CACtB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,gBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,kPAEP,SAAY,kCCfhBA,EAAQ,OAAsB,EAkB9BA,EAAQ,EAjBkB,CACxB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,kBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,+EAEP,SAAY,yQCpBhB,MAAAgf,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OACAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OAEA,IAAY81L,EAuDZ,SAASC,EACLC,EACAtkK,EACA9vB,EACAf,EACAK,GAEA,KAAK,EAAAhB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAGd,MAAMT,GAAO,EAAAre,EAAA6xB,YAAW,CAAC,CAAE9S,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,IAAStd,EAAWf,GACvFgC,EAAOY,EAAO0b,MAAMngB,EAAAi3L,4BAA4B72K,MAStD,OARApgB,EAAAi3L,4BAA4B52K,OACxB,CACId,YAAaJ,EAAAmB,iBAAiB42K,sBAC9BF,2BAEJnzL,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EA7EA,SAAYizL,GACRA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,oBACH,CAHD,CAAYA,IAAuB92L,EAAAA,wBAAvB82L,EAAuB,KAYtB92L,EAAAA,6BAA8B,EAAAgf,EAAAY,QAAoC,EAC3E,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,6BAaP7f,EAAAA,6CAAA,SACI0yB,EACA9vB,GAEiC,IADjCf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,OAAO40L,EAA8BD,EAAwBK,OAAQzkK,EAAS9vB,EAAWf,EAAcK,EAC3G,EAYAlC,EAAAA,8CAAA,SACI0yB,EACA9vB,GAEiC,IADjCf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,OAAO40L,EAA8BD,EAAwBM,QAAS1kK,EAAS9vB,EAAWf,EAAcK,EAC5G,8BC5DAgB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,gCCAtDF,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ8H,mBAAgB,EAExB,SAAWA,GACPA,EAAcA,EAAoB,KAAI,GAAK,OAC3CA,EAAcA,EAAqB,MAAI,GAAK,QAC5CA,EAAcA,EAA4B,aAAI,GAAK,eACnDA,EAAcA,EAA0B,WAAI,GAAK,YACpD,CALD,CAKmB9H,EAAQ8H,gBAAkB9H,EAAQ8H,cAAgB,CAAC,gCCRtE5E,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQu8B,MAAQv8B,EAAQk8B,qBAAkB,EAE1C,MAgBMm7J,EAAc,CAChB,cAXyB,GAYzB,OAXoB,GAYpB,KAVkB,MAWlB,MAfwB,IAgBxB,MAbmB,MAevB,SAAS76J,EAAWr8B,GAChB,OAvBkB,IAuBMA,EAAMoH,OAASpH,EAAMoH,OAAOxF,OAASs1L,EAAYl3L,EAAM0H,MACnF,CACA,MAAMyvL,EAAe,CACjB,cAf0B,GAgB1B,OAfqB,GAgBrB,KAdmB,GAenB,MAnByB,GAoBzB,MAjBoB,IAmBxB,SAASC,EAAYh3L,GACjB,OAxBmB,GAwBMA,EAAOgH,OAAShH,EAAOgH,OAAOxF,OAASu1L,EAAa/2L,EAAOsH,MACxF,CAQA,SAASoxG,EAAc14G,GACnB,OAAOP,EAAQk8B,gBAAgB37B,EAAOsH,KAC1C,CACA,SAAS01B,EAAiBN,EAAQH,EAAS06J,GACvC,IAAIptK,EA/Cc,GAgDdqtK,GAAW,EACf,GAAmB,UAAfD,EAAwB,CACxBptK,GAhDiB,EAkDrB,CACA,IAAK,IAAIjqB,KAAS88B,EACTw6J,GAA4B,UAAft3L,EAAM0H,OACpB4vL,GAAW,EACXrtK,GAtDa,IAwDjBA,GAAQoS,EAAWr8B,GAEvB,IAAK,IAAII,KAAUu8B,EACf1S,GAAQmtK,EAAYh3L,GAExB,OAAO+I,KAAKwG,KAAKsa,EACrB,CACA,SAASiT,EAAUlpB,GACf,MAAiB,kBAANA,EACA6F,IACN4B,SAASzH,GAEV7K,KAAKC,MAAM4K,KAAOA,GAElBA,EAAI,EADG6F,IAGJ7F,EALI6F,GAMf,CAIA,SAAS++F,EAAS4pC,GACd,OAAOA,EAAMx5I,QAAO,CAACwH,EAAGO,IAAMP,EAAI0sB,EAAUnsB,EAAE9N,QAAQ,EAC1D,CA7CApD,EAAQk8B,gBAAkB,CACtB,cAAe,IACf,OAAU,IACV,KAAQ,IACR,MAAS,IACT,MAAS,KA0Dbl8B,EAAQu8B,MAAQ,CACZ08E,cAAeA,EACfE,SAnBJ,SAAkBl8E,EAAQH,EAASp2B,EAAS8wL,GAA4B,IAAhBh6J,EAAU17B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACjE,MAAMw7B,EAAaC,EAAiBN,EAAQH,EAAS06J,GAC/CE,EAAuBhxL,GAAW42B,EAAai6J,EAAY,CAAE1vL,KAAM2vL,KAAkBh6J,EACrFm6J,EAA4B5+E,EAAS97E,IAAW87E,EAASj8E,GAAW46J,GAEtEC,GAA6B1+E,EAAc,CAAEpxG,KAAM2vL,MACnD16J,EAAUA,EAAQzkB,OAAO,CAAEjV,MAAOu0L,EAA2B9vL,KAAM2vL,KAEvE,MAAM51L,EAAMm3G,EAAS97E,GAAU87E,EAASj8E,GACxC,OAAKlhB,SAASha,GAEP,CACHq7B,OAAQA,EACRH,QAASA,EACTl7B,IAAKA,GAJE,CAAEA,IAAM8E,EAAU42B,EAAcE,EAM/C,EAIIhB,WAAYA,EACZ+6J,YAAaA,EACbx+E,SAAUA,EACV6+E,aA7BJ,SAAsBj1C,GAClB,OAAOA,EAAMx5I,QAAO,CAACwH,EAAGO,IAAMP,GAAKiL,SAAS1K,EAAE9N,OAAS8N,EAAE9N,MAAQ,IAAI,EACzE,EA4BIm6B,iBAAkBA,EAClBF,UAAWA,iCC9Gfn6B,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQm2H,cAAgBn2H,EAAQi0H,0BAA4Bj0H,EAAQqG,kBAAoBrG,EAAQyH,kBAAoBzH,EAAQ63L,oBAAsB73L,EAAQk0H,oBAAsBl0H,EAAQmG,SAAWnG,EAAQ4lG,qBAAuB5lG,EAAQwrL,qBAAuBxrL,EAAQwuJ,iBAAmBxuJ,EAAQ2uJ,iBAAmB3uJ,EAAQ2jH,cAAgB3jH,EAAQqrD,MAAQrrD,EAAQujB,eAAiBvjB,EAAQwF,UAAYxF,EAAQqoB,UAAYroB,EAAQsoB,eAAiBtoB,EAAQ83L,eAAY,EAC7c,MAAMC,EAAsB/2L,EAAQ,OAC9BoE,EAAapE,EAAQ,OACrByC,EAAWzC,EAAQ,OACnBqoF,EAAqBroF,EAAQ,OACnC,SAAS82L,EAAUjpL,GACf,OAAkB,MAAXA,EAAI00D,KAA2B,MAAZ10D,EAAI20D,IAClC,CAEA,SAASl7C,EAAeE,EAAelgB,GACnC,OAAO,IAAI/D,SAAQ,CAACC,EAASikB,KACzB,MAAMC,EAAUC,WAAWnkB,EAASgkB,GACjB,MAAflgB,GACAA,EAAYsgB,iBAAiB,SAAS,KAClCC,aAAaH,GACbD,EAAO,IAAI1kB,MAAM,WAAW,GAC9B,GAEd,CAeA,SAASyB,EAAUiO,GACf,MAAO,CACHgU,MAAO,SAAC9mB,GAAG,QAAAwJ,EAAArI,UAAAC,OAAKsT,EAAI,IAAAhL,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJ+K,EAAI/K,EAAA,GAAAxI,UAAAwI,GAAA,OAAKwe,QAAQrB,MAAMhU,EAAS9S,KAAQ0U,EAAK,EAC7DkQ,KAAM,SAAC5kB,GAAG,QAAAooB,EAAAjnB,UAAAC,OAAKsT,EAAI,IAAAhL,MAAA0e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3T,EAAI2T,EAAA,GAAAlnB,UAAAknB,GAAA,OAAKF,QAAQvD,KAAK9R,EAAS9S,KAAQ0U,EAAK,EAC3D4T,KAAM,SAACtoB,GAAG,QAAAuoB,EAAApnB,UAAAC,OAAKsT,EAAI,IAAAhL,MAAA6e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9T,EAAI8T,EAAA,GAAArnB,UAAAqnB,GAAA,OAAKL,QAAQG,KAAKxV,EAAS9S,KAAQ0U,EAAK,EAC3D0N,MAAO,SAACpiB,GAAG,QAAAyoB,EAAAtnB,UAAAC,OAAKsT,EAAI,IAAAhL,MAAA+e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhU,EAAIgU,EAAA,GAAAvnB,UAAAunB,GAAA,OAAKP,QAAQ/F,MAAMtP,EAAS9S,KAAQ0U,EAAK,EAErE,CAhCArV,EAAQ83L,UAAYA,EAWpB93L,EAAQsoB,eAAiBA,EAazBtoB,EAAQqoB,UAZR,SAAmBiB,GACf,IAAIC,EACJ,MAAO,IACY,MAAXA,GACAA,EAAUD,IACHC,GAGAA,EAAQzG,OAAM,IAAMyG,EAAUD,KAGjD,EAUAtpB,EAAQwF,UAAYA,EACpB,MAAMuc,EAASvc,EAAU,WAyGzB,SAASogG,EAAqBxiG,EAAOrB,GACjC,GAAI+1L,EAAU10L,GACV,OAAOK,EAASgB,OAAO4T,OAAO,CAACutF,EAAqBxiG,EAAMogE,KAAM,IAAKoiC,EAAqBxiG,EAAMmgE,IAAK,MAIjGngE,EAFe,kBAAXA,EACJA,EAAM2F,WAAW,MACT3F,EAAMwK,MAAM,GAGZhI,OAAOxC,GAAOuB,SAAS,IAI3BvB,EAAMuB,SAAS,IAE3B,MAAMX,EAAOP,EAASgB,OAAOC,KAAKtB,EAAMmoB,SAAkB,EAATxpB,EAAY,KAAM,OACnE,OAAIiC,EAAKjC,OAASA,EACPiC,EAAK8sB,SAAS9sB,EAAKjC,OAASA,GAChCiC,CACX,CAEA,SAASmC,EAAS/C,GACd,OAAa,MAATA,EACO,KACP00L,EAAU10L,GACF+C,EAAS/C,EAAMogE,OAAS,KAAQr9D,EAAS/C,EAAMmgE,KAEpC,kBAAXngE,GACHA,EAAM2F,WAAW,QAClB3F,EAAQ,KAAOA,GACZwC,OAAOxC,IAEK,kBAAXA,EACDA,EAEJwC,OAAOxC,EAClB,CAkBA,SAASy0L,EAAoBtnK,GAAkD,IAA1CynK,EAAUl2L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGm2L,EAAQn2L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGyuB,EAAOxuB,OACnE,MAAMklB,EAAS,GACf,IAAK,IAAI/b,EAAI8sL,EAAa,GAAI9sL,EAAI+sL,EAAU/sL,GAAK,GAC7C+b,EAAOzf,KAAK5B,OAAO,KAAO2qB,EAAOO,SAAS5lB,EAAI,GAAIA,GAAGvG,SAAS,SAIlE,OAFIszL,EAAWD,EAA8B,GAAhB/wK,EAAOllB,QAChCklB,EAAOzf,KAAK5B,OAAO,KAAO2qB,EAAOO,SAASknK,EAA8B,GAAhB/wK,EAAOllB,OAAck2L,GAAUtzL,SAAS,SAC7FsiB,CACX,CA7IAjnB,EAAQujB,eAzBRhU,eAA8Bia,EAAMC,EAAaC,EAAcphB,IAC3DmhB,EAAcA,GAAe,CAAC,GAClBE,WAAaF,EAAYE,YAAc,EACnDF,EAAYG,MAAQH,EAAYG,OAAS,IACzCH,EAAYI,YAAyC,MAA3BJ,EAAYI,aAA6BJ,EAAYI,YAC/E,IAAIC,EAAM,KACV,IAAK,IAAI5e,EAAI,EAAGA,EAAIue,EAAYE,WAAYze,IAAK,CAC7C,IAEI,aADmBse,GAEvB,CACA,MAAO/X,GACH,GAAoB,MAAhBiY,GAAwBA,EAAajY,GACrC,MAAMA,EACVqY,EAAMrY,EACNsQ,EAAOgB,MAAM,0CAA4C7X,EAAGuG,EAChE,CACA,GAAmB,MAAfnJ,GAAuBA,EAAYyhB,QACnC,MAAM,IAAIhmB,MAAM,WAChBmH,IAAMue,EAAYE,WAAa,SACzBrB,EAAemB,EAAYI,YAAcJ,EAAYG,MAAQtgB,KAAK8O,IAAI,EAAGlN,GAAKue,EAAYG,MAAOthB,EAE/G,CACA,MAAMwhB,CACV,EAmBA9pB,EAAQqrD,MAjBR,SAAejoD,GAAoB,IAAbrB,EAAMD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAC3B,GAAa,MAATsB,EACA,OAAO,KACX,cAAgBA,GACZ,IAAK,SACD,OAAIA,EAAM2F,WAAW,MACV,KAAO3F,EAAMwK,MAAM,GAAG2d,SAASxpB,EAAQ,KAGvC,KAAO6D,OAAOxC,GAAOuB,SAAS,IAAI4mB,SAASxpB,EAAQ,KAElE,IAAK,SACL,IAAK,SACD,MAAO,KAAOqB,EAAMuB,SAAS,IAAI4mB,SAASxpB,EAAQ,KAE1D,MAAO,KAAOqB,EAAMuB,SAAS,OAAO4mB,SAASxpB,EAAQ,IACzD,EAqCA/B,EAAQ2jH,cAnCR,SAAuB58G,GACnB,MAAMmxL,EAAa,CACfvrI,QAAS5lD,EAAGq2E,QAAQzwB,QACpBmgE,OAAQ/lH,EAAGq2E,QAAQ0vC,OACnBrqG,QAAS1b,EAAGq2E,QAAQ36D,QACpBrc,MAAOW,EAAGq2E,QAAQh3E,MAClBq3E,sBAA8C,QAAvB12E,EAAGq2E,QAAQzwB,QAAoB5lD,EAAGq2E,QAAQK,sBAAwB,KACzF47E,0BAAkD,QAAvBtyJ,EAAGq2E,QAAQzwB,QAAoBorI,EAAoBI,QAAQpxL,EAAGq2E,QAAQi8E,2BAA6B,KAC9HC,wBAAgD,QAAvBvyJ,EAAGq2E,QAAQzwB,QAAoBorI,EAAoBI,QAAQpxL,EAAGq2E,QAAQk8E,yBAA2B,KAC1HR,eAAuC,QAAvB/xJ,EAAGq2E,QAAQzwB,QAAoB5lD,EAAGq2E,QAAQ07E,eAAiB,KAC3EK,IAA4B,QAAvBpyJ,EAAGq2E,QAAQzwB,QAAoB5lD,EAAGq2E,QAAQ+7E,IAAM,KACrDC,cAAsC,QAAvBryJ,EAAGq2E,QAAQzwB,QAAoB5lD,EAAGq2E,QAAQg8E,cAAgB,MAE7E,OAAQryJ,EAAGc,MACP,IAAK,SACD,MAAMuwL,EAAahzL,EAAWwgJ,SAASC,QAAQ9+I,EAAG27G,OAAO/+C,UACzD,OAAO58D,EAAGge,KAAO3f,EAAWN,KAAKuzL,+BAA+B,CAC5D/kK,cAAevsB,EAAGq2E,QAAQE,cAC1Bg7G,iBAAkBF,KACfF,IAEX,IAAK,iBACD,MAAMK,EAAoBnzL,EAAWwgJ,SAASC,QAAQ9+I,EAAG27G,OAAOsjC,qBAChE,OAAOj/I,EAAGge,KAAO3f,EAAWN,KAAK0zL,sCAAsC,CACnEv1F,gBAAiBl8F,EAAGA,GAAGk8F,gBACvB8iD,UAAWh/I,EAAG27G,OAAOqjC,UACrBC,oBAAqBuyC,EACrBE,4BAA6BF,EAC7BG,KAAM3xL,EAAG27G,OAAOujC,eACbiyC,IAEX,QACI,MAAM,IAAIn0L,MAAM,wBAE5B,EASA/D,EAAQ2uJ,iBAPR,SAA0Bz2I,GACtB,MAAMqY,EAAS9sB,EAASgB,OAAO0b,MAAM,EAAIjI,EAAInW,QAC7C,IAAK,IAAImJ,EAAI,EAAGA,EAAIgN,EAAInW,OAAQmJ,IAC5BqlB,EAAOwoG,cAAc1pG,OAAOnX,EAAIhN,IAAS,EAAJA,GAEzC,OAAOqlB,CACX,EASAvwB,EAAQwuJ,iBAPR,SAA0Bj+H,GACtB,MAAM1B,EAAS,GACf,IAAK,IAAI3jB,EAAI,EAAGA,EAAIqlB,EAAOxuB,OAAQmJ,GAAK,EACpC2jB,EAAOrnB,KAAK+oB,EAAOuoG,aAAa5tH,IAEpC,OAAO2jB,CACX,EASA7uB,EAAQwrL,qBAPR,SAA8BpoL,GAC1B,MAAMu1L,EAAU/yL,OAAOxC,GACvB,OAAOisB,QAAmB,MAAVspK,IAAoB,KACpB,QAAVA,IAAsB,GACtBA,GAAW,GAAM,QACjBA,GAAW,IAAO,MAC5B,EAsBA34L,EAAQ4lG,qBAAuBA,EAiB/B5lG,EAAQmG,SAAWA,EAgBnBnG,EAAQk0H,oBAfR,SAA6B9zG,EAAMre,GAC/B,MAAM4yJ,EAAU,GACVikC,EAAiBtvL,KAAKC,MAAMxH,EAAS,IACrC82L,EAAkB92L,EAA2B,GAAjB62L,EAC5BE,EAAqBF,GAAsC,IAApBC,EAAwB,EAAI,GACzE,GAAIz4K,EAAKre,OAAS+2L,EACd,MAAM,IAAI/0L,MAAM,uCACpB,IAAImH,EAAI,EACR,KAAOA,EAAI0tL,EAAgB1tL,IACvBypJ,EAAQntJ,KAAKo+F,EAAqBxlF,EAAKlV,GAAI,KAI/C,OAFwB,IAApB2tL,GACAlkC,EAAQntJ,KAAKo+F,EAAqBxlF,EAAKlV,GAAI2tL,IACxCp1L,EAASgB,OAAO4T,OAAOs8I,EAClC,EAWA30J,EAAQ63L,oBAAsBA,EAkB9B73L,EAAQyH,kBAjBR,SAA2B8oB,GAAkD,IAA1CynK,EAAUl2L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGm2L,EAAQn2L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGyuB,EAAOxuB,OACjE,MAAMklB,EAAS,GACf,IAAK,IAAI/b,EAAI8sL,EAAa,GAAI9sL,EAAI+sL,EAAU/sL,GAAK,GAC7C+b,EAAOzf,KAAK5B,OAAO,KAAO2qB,EAAOO,SAAS5lB,EAAI,GAAIA,GAAGvG,SAAS,SAElE,IAAIo0L,EAAcnzL,OAAO,GACrBozL,EAAiBpzL,OAAOqyL,GAAYD,EAA8B,GAAhB/wK,EAAOllB,SAI7D,OAHIi3L,IAAmBpzL,OAAO,KAC1BmzL,EAAcnzL,OAAO,KAAO2qB,EAAOO,SAASknK,EAA8B,GAAhB/wK,EAAOllB,OAAck2L,GAAUtzL,SAAS,SAE/F,CACHiB,OAAOqhB,EAAOllB,WACXklB,EACH8xK,EACAC,EAER,EAKAh5L,EAAQqG,kBAHR,SAA2BkqB,GAAkD,IAA1CynK,EAAUl2L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGm2L,EAAQn2L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGyuB,EAAOxuB,OACjE,OAAOqD,EAAWN,KAAKoB,8BAA8B2xL,EAAoBtnK,EAAQynK,EAAYC,GACjG,EAaAj4L,EAAQi0H,0BAXR,SAAmCtwD,EAAU3B,GACzC,MAAMgyD,EAAS3qC,EAAmB/nB,iBAAiB2D,wBAAwBtB,EAAU3B,GAC/Ei3H,EAAe5pK,OAAOlpB,EAASw9D,EAAS11D,UACxC9J,EAAYw/D,EAASjsD,OAAO,EAAGuhL,GAC/BvwK,EAAUviB,EAASw9D,EAAS11D,SAC5BirL,EAAe7pK,OAAOlpB,EAASw9D,EAAS11D,UACxCs0D,EAAYoB,EAASjsD,OAAO,EAAGwhL,GACrC,GAAwB,IAApBv1H,EAAS5hE,OACT,MAAM,IAAIgC,MAAM,4BACpB,MAAO,CAAEiwH,SAAQ7vH,YAAWukB,UAAS65C,YACzC,EASAviE,EAAQm2H,cAPR,SAAuBp5B,EAAOmM,GAC1B,IAAK,IAAIh+F,EAAI6xF,EAAMh7F,OAAS,EAAGmJ,GAAK,EAAGA,IACnC,GAAIg+F,EAASnM,EAAM7xF,GAAIA,GACnB,OAAOA,EAEf,OAAQ,CACZ,2aC5PA,MAAAnK,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAs5C,EAAAt5C,EAAA,OAaAhB,EAAAA,WAAA,SACIoB,EACAC,EACAqxB,EACAzwB,GAC4B,IAA5BC,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAMtwB,GAAc,IAAIxB,EAAAyB,aAAcC,KAAI,EAAA63C,EAAAa,6BAA4BzoB,EAASxwB,IAE/E,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,GAAQY,EAC7E,mCCzBAiB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQm5L,8BAA2B,EACnC,MAAMh0L,EAASnE,EAAQ,OACjBo4L,EAAmBp4L,EAAQ,OAC3BqE,EAAUrE,EAAQ,MAClBD,EAAYC,EAAQ,OACpBunB,EAAKvnB,EAAQ,MACb6pJ,EAAiB7pJ,EAAQ,OACzByC,EAAWzC,EAAQ,OAuLzBhB,EAAQm5L,yBAjLR,MACIhrL,WAAAA,CAAY/M,EAAYi4L,GACpBn5L,KAAKoO,UAAY,GACjBpO,KAAKuzH,eAAiB,GACtBvzH,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,8BACrCtF,KAAKkB,WAAaA,EAClBlB,KAAKo5L,kBAAoBD,CAC7B,CAOA,gCAAME,CAA2Bp1L,GAC7B,MAAM5B,QAAoB,EAAI8C,EAAQke,iBAAgBhU,UAClD,MAAMuiB,QAAY5xB,KAAKkB,WAAWo4L,qBAAqBr1L,EAAW,CAC9D88E,WAAY,YACZw4G,+BAAgC,IAEpC,GAAW,MAAP3nK,EACA,MAAM,IAAI/tB,MAAM,0BACpB,OAAO+tB,CAAG,IAEd,OAAmB,MAAfvvB,GAEwB,MAAxBA,EAAYuiB,KAAKgF,IADV,KAGJ5pB,KAAKo5L,kBAAkBviF,OAAO2iF,mBAAmBn3L,EAAYA,YAAY4rB,QACpF,CASAwrK,qBAAAA,CAAsBC,EAAQrmG,GAC1B,MAAMloE,EAAc5nB,EAASgB,OAAOC,KAAKk1L,EAAO/1L,KAAK2C,SAAS1B,MAC9D,IAAIs9D,EAAkB,IAAI75C,EAAG,GACzB85C,EAAgB,IAAI95C,EAAG,GACvBm5C,GAAQ,EAMZ,MALoB,sBAAhBk4H,EAAO9nL,OACP4vD,GAAQ,EACRU,EAAkBw3H,EAAO/1L,KAAKu+D,gBAC9BC,EAAgBu3H,EAAO/1L,KAAKw+D,eAEzB,IAAI+2H,EAAiBxuC,eAAegvC,EAAO7uK,SAASy3C,QAASo3H,EAAO7uK,SAAS+2C,QAAS83H,EAAO7uK,SAASxpB,KAAMq4L,EAAO/1L,KAAK2C,SAAS9E,OAAQ2pB,EAAY1mB,SAAS,OAAQi1L,EAAO/1L,KAAK2C,SAAST,SAAU6zL,EAAO/1L,KAAK2C,SAAS8pD,OAAQspI,EAAO/1L,KAAK2C,SAASJ,MAAOwzL,EAAO/1L,KAAK2C,SAAS8kB,cAAesuK,EAAO/1L,KAAK2C,SAASi7D,OAAQopF,EAAeO,aAAazsI,SAASi7K,EAAO/1L,KAAK2C,SAAS87D,MAAOZ,EAAuB,2BAAhBk4H,EAAO9nL,KAAoC8nL,EAAO7uK,SAASigI,WAAajqJ,EAAUiE,UAAUigF,QAAS20G,EAAO/1L,KAAK2C,SAASi7D,OAASm4H,EAAO7uK,SAASkgI,WAAalqJ,EAAUiE,UAAUigF,QAAS7iB,EAAiBC,EAAekxB,EAC/mB,CASA8gC,iBAAAA,CAAkBwlE,EAAatmG,GAC3B,OAAOhkF,UAGH,GAFgC,MAA5BsqL,EAAYrvK,eACZqvK,EAAYrvK,mBAAqBtqB,KAAKq5L,2BAA2BM,EAAY11L,YACjD,MAA5B01L,EAAYrvK,aACZ,OAAO,KACX,MAAMovK,EAASC,EAAYrvK,aAAawwC,MAAKzwC,GAAY,MAANA,IAA2B,2BAAZA,EAAGzY,MAAiD,sBAAZyY,EAAGzY,QAC7G,OAAc,MAAV8nL,EACO,KACJ15L,KAAKy5L,sBAAsBC,EAAQrmG,EAAQ,CAE1D,CACAohC,oBAAAA,CAAqB9wH,EAAMg2L,GACvB,MAAMxuK,EAAc5nB,EAASgB,OAAOC,KAAKb,EAAKiB,MAAMH,SAAS,OACvD4uF,EAAU9vF,EAASgB,OAAOC,KAAKb,EAAK0vF,SAAS5uF,SAAS,OACtDiK,GAAa,EAAIvJ,EAAQ4iB,cAAcoD,EAAaxnB,EAAKkC,UAG/D,OAFA7F,KAAK6hB,OAAO0F,MAAM,gCAAkC4D,EAAc,cAAgBxnB,EAAKkC,SAASpB,SAAS,IACrG,aAAe4uF,EAAU,gBAAkB3kF,GACxC,IAAIzJ,EAAOyf,gBAAgBhW,EAAYi8I,EAAeO,aAAa0uC,gBAAgBj2L,EAAKy+D,OAAO,EAAIj9D,EAAQgjB,WAAWnoB,KAAKm0H,kBAAkBwlE,EAAatmG,IACrK,CACAshC,gBAAAA,CAAiBhxH,GACb,MAAMwnB,EAAc5nB,EAASgB,OAAOC,KAAKb,EAAKiB,MAAMH,SAAS,OACvDiK,GAAa,EAAIvJ,EAAQ4iB,cAAcoD,EAAaxnB,EAAKkC,UAG/D,OAFA7F,KAAK6hB,OAAO0F,MAAM,4BAA8B4D,EAAc,cAAgBxnB,EAAKkC,SAASpB,SAAS,IACjG,gBAAkBiK,GACf,IAAIzJ,EAAOigB,YAAYxW,EAClC,CACAkmH,eAAAA,CAAgBjxH,GACZ,MAAMqwD,EAASzwD,EAASgB,OAAOC,KAAKb,EAAKqwD,QAAQvvD,SAAS,OACpD0mB,EAAc5nB,EAASgB,OAAOC,KAAKb,EAAKiB,MAAMH,SAAS,OACvDiK,GAAa,EAAIvJ,EAAQ4iB,cAAcoD,EAAaxnB,EAAKkC,UAG/D,OAFA7F,KAAK6hB,OAAO0F,MAAM,2BAA6B4D,EAAc,cAAgBxnB,EAAKkC,SAASpB,SAAS,IAChG,YAAcuvD,EAAS,gBAAkBtlD,GACtC,IAAIzJ,EAAO8f,WAAWrW,EAAYslD,EAC7C,CAOA,kBAAMxvC,CAAam1K,GACf,IAAInkE,EAAemkE,EAAYxrL,OAAOzF,KAAI+F,IACtC,IAAIgnH,EACJ,OAAQhnH,EAAMmD,MACV,IAAK,aACD6jH,EAAcz1H,KAAK40H,gBAAgBnmH,EAAM9K,MACzC,MACJ,IAAK,cACD8xH,EAAcz1H,KAAK20H,iBAAiBlmH,EAAM9K,MAC1C,MACJ,IAAK,kBACD8xH,EAAcz1H,KAAKy0H,qBAAqBhmH,EAAM9K,KAAMg2L,GAO5D,OAJAlkE,EAAY7wG,KAAO,CACf2wG,UAAWokE,EAAYjkE,UACvB7wG,KAAM80K,EAAY11L,WAEfwxH,CAAW,IACnBjiC,QAAOiiC,GAA8B,MAAfA,IACzB,IAAK,IAAIxmH,KAAYjP,KAAKoO,gBAChBa,EAASumH,EAEvB,CAQAqkE,iBAAAA,CAAkBjoL,GACd,MAAO,CAACjO,EAAMm2L,EAAY71L,KACtBjE,KAAK6hB,OAAO0F,MAAM,sCAAuCtjB,GACzDjE,KAAKwkB,aAAa,CACdrW,OAAQ,CAAC,CAAEyD,OAAMjO,KAAMA,IACvB2mB,aAAc,KACdorG,UAAWtsH,KAAKC,MAAMwjB,KAAKC,MAAQ,KACnC7oB,cACD+E,MAAK,KAAM,IAAM4Z,OAAMrR,IACtBqX,QAAQ/F,MAAMtR,IACP,IACT,CAEV,CAMAwoL,cAAAA,GACI,MAAM5gF,EAAUn5G,KAAKo5L,kBAAkBjgF,QACvCn5G,KAAKuzH,eAAejsH,KAAK6xG,EAAQzwF,iBAAiB,kBAAmB1oB,KAAK65L,kBAAkB,qBAC5F75L,KAAKuzH,eAAejsH,KAAK6xG,EAAQzwF,iBAAiB,aAAc1oB,KAAK65L,kBAAkB,gBACvF75L,KAAKuzH,eAAejsH,KAAK6xG,EAAQzwF,iBAAiB,cAAe1oB,KAAK65L,kBAAkB,gBAC5F,CACA1qL,IAAAA,GAEI,OADAnP,KAAK+5L,iBACE11L,QAAQC,SACnB,CACA,UAAMgL,GACF,IAAK,IAAI6xB,KAAOnhC,KAAKuzH,qBACXvzH,KAAKo5L,kBAAkBjgF,QAAQ6wC,oBAAoB7oH,GAE7DnhC,KAAKuzH,eAAiB,EAC1B,CACAnkH,gBAAAA,CAAiBysD,GACb77D,KAAKoO,UAAU9G,KAAKu0D,EACxB,CACAtsD,kBAAAA,CAAmBssD,GACf,MAAMj7B,EAAQ5gC,KAAKoO,UAAUmG,QAAQsnD,GACrC,OAAIj7B,GAAS,IACT5gC,KAAKoO,UAAUoJ,OAAOopB,EAAO,IACtB,EAGf,qCCpKA4mI,aAHJznK,EAAOD,QAAUk6L,EAMjBA,EAASC,cAAgBA,EAGhBn5L,EAAAA,OAAAA,aAAT,IACIo5L,EAAkB,SAAyBhjF,EAASvvG,GACtD,OAAOuvG,EAAQ9oG,UAAUzG,GAAM9F,MACjC,EAIIq5K,EAASp6K,EAAQ,OAGjByD,EAASzD,EAAAA,OAAAA,OACTm9K,GAAmC,qBAAXpnF,EAAAA,EAAyBA,EAAAA,EAA2B,qBAAXjgE,OAAyBA,OAAyB,qBAATqM,KAAuBA,KAAO,CAAC,GAAG3S,YAAc,WAAa,EAS3K,IACI/I,EADA4yK,EAAYr5L,EAAQ,OAGtBymB,EADE4yK,GAAaA,EAAUC,SACjBD,EAAUC,SAAS,UAEnB,WAAkB,EAI5B,IAWIt8J,EACAu8J,EACA71L,EAbA81L,EAAax5L,EAAQ,OACrBq9K,EAAcr9K,EAAQ,OAExBs9K,EADat9K,EAAQ,OACOs9K,iBAC1B/iB,EAAiBv6J,EAAAA,OAAAA,EACnB8hJ,EAAuByY,EAAezY,qBACtC23C,EAA4Bl/B,EAAek/B,0BAC3CnzB,EAA6B/L,EAAe+L,2BAC5CozB,EAAqCn/B,EAAem/B,mCAMtD15L,EAAQ,MAARA,CAAoBk5L,EAAU9e,GAC9B,IAAI7G,EAAiB8J,EAAY9J,eAC7BomB,EAAe,CAAC,QAAS,QAAS,UAAW,QAAS,UAY1D,SAASR,EAAcr4K,EAASojG,EAAQ05D,GACtClX,EAASA,GAAU1mK,EAAQ,OAC3B8gB,EAAUA,GAAW,CAAC,EAOE,mBAAb88J,IAAwBA,EAAW15D,aAAkBwiD,GAIhExnK,KAAK2+K,aAAe/8J,EAAQ+8J,WACxBD,IAAU1+K,KAAK2+K,WAAa3+K,KAAK2+K,cAAgB/8J,EAAQ84K,oBAI7D16L,KAAK+nK,cAAgBqW,EAAiBp+K,KAAM4hB,EAAS,wBAAyB88J,GAK9E1+K,KAAKqwB,OAAS,IAAIiqK,EAClBt6L,KAAK6B,OAAS,EACd7B,KAAK26L,MAAQ,KACb36L,KAAK46L,WAAa,EAClB56L,KAAK66L,QAAU,KACf76L,KAAK+4E,OAAQ,EACb/4E,KAAKylH,YAAa,EAClBzlH,KAAK27J,SAAU,EAMf37J,KAAKmoK,MAAO,EAIZnoK,KAAK8nK,cAAe,EACpB9nK,KAAK86L,iBAAkB,EACvB96L,KAAK+6L,mBAAoB,EACzB/6L,KAAKg7L,iBAAkB,EACvBh7L,KAAKi7L,QAAS,EAGdj7L,KAAK6zK,WAAkC,IAAtBjyJ,EAAQiyJ,UAGzB7zK,KAAKw0K,cAAgB5yJ,EAAQ4yJ,YAG7Bx0K,KAAKowB,WAAY,EAKjBpwB,KAAKg/K,gBAAkBp9J,EAAQo9J,iBAAmB,OAGlDh/K,KAAKk7L,WAAa,EAGlBl7L,KAAKm7L,aAAc,EACnBn7L,KAAK6uB,QAAU,KACf7uB,KAAKm0B,SAAW,KACZvS,EAAQuS,WACL2J,IAAeA,EAAgBh9B,EAAAA,OAAAA,eACpCd,KAAK6uB,QAAU,IAAIiP,EAAclc,EAAQuS,UACzCn0B,KAAKm0B,SAAWvS,EAAQuS,SAE5B,CACA,SAAS6lK,EAASp4K,GAEhB,GADA4lJ,EAASA,GAAU1mK,EAAQ,SACrBd,gBAAgBg6L,GAAW,OAAO,IAAIA,EAASp4K,GAIrD,IAAI88J,EAAW1+K,gBAAgBwnK,EAC/BxnK,KAAKwlH,eAAiB,IAAIy0E,EAAcr4K,EAAS5hB,KAAM0+K,GAGvD1+K,KAAKklH,UAAW,EACZtjG,IAC0B,oBAAjBA,EAAQy3B,OAAqBr5C,KAAKgoK,MAAQpmJ,EAAQy3B,MAC9B,oBAApBz3B,EAAQiQ,UAAwB7xB,KAAKsoK,SAAW1mJ,EAAQiQ,UAErEqpJ,EAAOpkK,KAAK9W,KACd,CAwDA,SAASo7L,EAAiBp2E,EAAQ9wF,EAAOC,EAAUknK,EAAYC,GAC7D/zK,EAAM,mBAAoB2M,GAC1B,IAKMk2H,EALF1pJ,EAAQskH,EAAOQ,eACnB,GAAc,OAAVtxF,EACFxzB,EAAMi7J,SAAU,EAuNpB,SAAoB32C,EAAQtkH,GAE1B,GADA6mB,EAAM,cACF7mB,EAAMq4E,MAAO,OACjB,GAAIr4E,EAAMmuB,QAAS,CACjB,IAAIqF,EAAQxzB,EAAMmuB,QAAQrB,MACtB0G,GAASA,EAAMryB,SACjBnB,EAAM2vB,OAAO/oB,KAAK4sB,GAClBxzB,EAAMmB,QAAUnB,EAAMi+K,WAAa,EAAIzqJ,EAAMryB,OAEjD,CACAnB,EAAMq4E,OAAQ,EACVr4E,EAAMynK,KAIRozB,EAAav2E,IAGbtkH,EAAMonK,cAAe,EAChBpnK,EAAMo6L,kBACTp6L,EAAMo6L,iBAAkB,EACxBU,EAAcx2E,IAGpB,CA9OIy2E,CAAWz2E,EAAQtkH,QAInB,GADK46L,IAAgBlxC,EA6CzB,SAAsB1pJ,EAAOwzB,GAC3B,IAAIk2H,EAjPiBx7I,EAkPFslB,EAjPZ3vB,EAAOy6B,SAASpwB,IAAQA,aAAeqvK,GAiPA,kBAAV/pJ,QAAgCpyB,IAAVoyB,GAAwBxzB,EAAMi+K,aACtFv0B,EAAK,IAAIxH,EAAqB,QAAS,CAAC,SAAU,SAAU,cAAe1uH,IAnP/E,IAAuBtlB,EAqPrB,OAAOw7I,CACT,CAnD8BsxC,CAAah7L,EAAOwzB,IAC1Ck2H,EACFiqB,EAAervD,EAAQolC,QAClB,GAAI1pJ,EAAMi+K,YAAczqJ,GAASA,EAAMryB,OAAS,EAIrD,GAHqB,kBAAVqyB,GAAuBxzB,EAAMi+K,YAAc37K,OAAOyhF,eAAevwD,KAAW3vB,EAAOqG,YAC5FspB,EA3MR,SAA6BA,GAC3B,OAAO3vB,EAAOC,KAAK0vB,EACrB,CAyMgBwsJ,CAAoBxsJ,IAE1BmnK,EACE36L,EAAM+kH,WAAY4uD,EAAervD,EAAQ,IAAIw1E,GAA2CmB,EAAS32E,EAAQtkH,EAAOwzB,GAAO,QACtH,GAAIxzB,EAAMq4E,MACfs7F,EAAervD,EAAQ,IAAIu1E,OACtB,IAAI75L,EAAM0vB,UACf,OAAO,EAEP1vB,EAAMi7J,SAAU,EACZj7J,EAAMmuB,UAAYsF,GACpBD,EAAQxzB,EAAMmuB,QAAQ/jB,MAAMopB,GACxBxzB,EAAMi+K,YAA+B,IAAjBzqJ,EAAMryB,OAAc85L,EAAS32E,EAAQtkH,EAAOwzB,GAAO,GAAY0nK,EAAc52E,EAAQtkH,IAE7Gi7L,EAAS32E,EAAQtkH,EAAOwzB,GAAO,EAEnC,MACUmnK,IACV36L,EAAMi7J,SAAU,EAChBigC,EAAc52E,EAAQtkH,IAO1B,OAAQA,EAAMq4E,QAAUr4E,EAAMmB,OAASnB,EAAMqnK,eAAkC,IAAjBrnK,EAAMmB,OACtE,CACA,SAAS85L,EAAS32E,EAAQtkH,EAAOwzB,EAAOmnK,GAClC36L,EAAMm6L,SAA4B,IAAjBn6L,EAAMmB,SAAiBnB,EAAMynK,MAChDznK,EAAMw6L,WAAa,EACnBl2E,EAAOlN,KAAK,OAAQ5jF,KAGpBxzB,EAAMmB,QAAUnB,EAAMi+K,WAAa,EAAIzqJ,EAAMryB,OACzCw5L,EAAY36L,EAAM2vB,OAAOuyF,QAAQ1uF,GAAYxzB,EAAM2vB,OAAO/oB,KAAK4sB,GAC/DxzB,EAAMonK,cAAcyzB,EAAav2E,IAEvC42E,EAAc52E,EAAQtkH,EACxB,CA3GAsC,OAAOC,eAAe+2L,EAASpvL,UAAW,YAAa,CAIrD8xB,YAAY,EACZ9wB,IAAK,WACH,YAA4B9J,IAAxB9B,KAAKwlH,gBAGFxlH,KAAKwlH,eAAep1F,SAC7B,EACA9Z,IAAK,SAAapT,GAGXlD,KAAKwlH,iBAMVxlH,KAAKwlH,eAAep1F,UAAYltB,EAClC,IAEF82L,EAASpvL,UAAUinB,QAAUssJ,EAAYtsJ,QACzCmoK,EAASpvL,UAAUw2K,WAAajD,EAAYlK,UAC5C+lB,EAASpvL,UAAU09J,SAAW,SAAU1+I,EAAKwK,GAC3CA,EAAGxK,EACL,EAMAowK,EAASpvL,UAAUtD,KAAO,SAAU4sB,EAAOC,GACzC,IACImnK,EADA56L,EAAQV,KAAKwlH,eAcjB,OAZK9kH,EAAMi+K,WAUT2c,GAAiB,EATI,kBAAVpnK,KACTC,EAAWA,GAAYzzB,EAAMs+K,mBACZt+K,EAAMyzB,WACrBD,EAAQ3vB,EAAOC,KAAK0vB,EAAOC,GAC3BA,EAAW,IAEbmnK,GAAiB,GAKdF,EAAiBp7L,KAAMk0B,EAAOC,GAAU,EAAOmnK,EACxD,EAGAtB,EAASpvL,UAAUg4G,QAAU,SAAU1uF,GACrC,OAAOknK,EAAiBp7L,KAAMk0B,EAAO,MAAM,GAAM,EACnD,EA6DA8lK,EAASpvL,UAAUixL,SAAW,WAC5B,OAAuC,IAAhC77L,KAAKwlH,eAAeq1E,OAC7B,EAGAb,EAASpvL,UAAUkxL,YAAc,SAAUn8J,GACpC7B,IAAeA,EAAgBh9B,EAAAA,OAAAA,eACpC,IAAI+tB,EAAU,IAAIiP,EAAc6B,GAChC3/B,KAAKwlH,eAAe32F,QAAUA,EAE9B7uB,KAAKwlH,eAAerxF,SAAWn0B,KAAKwlH,eAAe32F,QAAQsF,SAK3D,IAFA,IAAI5d,EAAIvW,KAAKwlH,eAAen1F,OAAOkG,KAC/BwlK,EAAU,GACD,OAANxlL,GACLwlL,GAAWltK,EAAQ/jB,MAAMyL,EAAE5S,MAC3B4S,EAAIA,EAAEkhB,KAKR,OAHAz3B,KAAKwlH,eAAen1F,OAAO2rK,QACX,KAAZD,GAAgB/7L,KAAKwlH,eAAen1F,OAAO/oB,KAAKy0L,GACpD/7L,KAAKwlH,eAAe3jH,OAASk6L,EAAQl6L,OAC9B7B,IACT,EAGA,IAAIi8L,EAAU,WAqBd,SAASC,EAAc3rL,EAAG7P,GACxB,OAAI6P,GAAK,GAAsB,IAAjB7P,EAAMmB,QAAgBnB,EAAMq4E,MAAc,EACpDr4E,EAAMi+K,WAAmB,EACzBpuK,IAAMA,EAEJ7P,EAAMm6L,SAAWn6L,EAAMmB,OAAenB,EAAM2vB,OAAOkG,KAAK5yB,KAAK9B,OAAmBnB,EAAMmB,QAGxF0O,EAAI7P,EAAMqnK,gBAAernK,EAAMqnK,cA5BrC,SAAiCx3J,GAe/B,OAdIA,GAAK0rL,EAEP1rL,EAAI0rL,GAIJ1rL,IACAA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,EACXA,GAAKA,IAAM,GACXA,KAEKA,CACT,CAYqD4rL,CAAwB5rL,IACvEA,GAAK7P,EAAMmB,OAAe0O,EAEzB7P,EAAMq4E,MAIJr4E,EAAMmB,QAHXnB,EAAMonK,cAAe,EACd,GAGX,CA6HA,SAASyzB,EAAav2E,GACpB,IAAItkH,EAAQskH,EAAOQ,eACnBj+F,EAAM,eAAgB7mB,EAAMonK,aAAcpnK,EAAMo6L,iBAChDp6L,EAAMonK,cAAe,EAChBpnK,EAAMo6L,kBACTvzK,EAAM,eAAgB7mB,EAAMm6L,SAC5Bn6L,EAAMo6L,iBAAkB,EACxBjqK,EAAQomE,SAASukG,EAAex2E,GAEpC,CACA,SAASw2E,EAAcx2E,GACrB,IAAItkH,EAAQskH,EAAOQ,eACnBj+F,EAAM,gBAAiB7mB,EAAM0vB,UAAW1vB,EAAMmB,OAAQnB,EAAMq4E,OACvDr4E,EAAM0vB,YAAc1vB,EAAMmB,SAAUnB,EAAMq4E,QAC7CisC,EAAOlN,KAAK,YACZp3G,EAAMo6L,iBAAkB,GAS1Bp6L,EAAMonK,cAAgBpnK,EAAMm6L,UAAYn6L,EAAMq4E,OAASr4E,EAAMmB,QAAUnB,EAAMqnK,cAC7Eq0B,EAAKp3E,EACP,CAQA,SAAS42E,EAAc52E,EAAQtkH,GACxBA,EAAMy6L,cACTz6L,EAAMy6L,aAAc,EACpBtqK,EAAQomE,SAASolG,EAAgBr3E,EAAQtkH,GAE7C,CACA,SAAS27L,EAAer3E,EAAQtkH,GAwB9B,MAAQA,EAAMi7J,UAAYj7J,EAAMq4E,QAAUr4E,EAAMmB,OAASnB,EAAMqnK,eAAiBrnK,EAAMm6L,SAA4B,IAAjBn6L,EAAMmB,SAAe,CACpH,IAAIsQ,EAAMzR,EAAMmB,OAGhB,GAFA0lB,EAAM,wBACNy9F,EAAO3rE,KAAK,GACRlnC,IAAQzR,EAAMmB,OAEhB,KACJ,CACAnB,EAAMy6L,aAAc,CACtB,CAgPA,SAASmB,EAAwBr5J,GAC/B,IAAIviC,EAAQuiC,EAAKuiF,eACjB9kH,EAAMq6L,kBAAoB93J,EAAK40E,cAAc,YAAc,EACvDn3G,EAAMs6L,kBAAoBt6L,EAAMu6L,OAGlCv6L,EAAMm6L,SAAU,EAGP53J,EAAK40E,cAAc,QAAU,GACtC50E,EAAKs5J,QAET,CACA,SAASC,EAAiBv5J,GACxB1b,EAAM,4BACN0b,EAAKoW,KAAK,EACZ,CAuBA,SAASojJ,EAAQz3E,EAAQtkH,GACvB6mB,EAAM,SAAU7mB,EAAMi7J,SACjBj7J,EAAMi7J,SACT32C,EAAO3rE,KAAK,GAEd34C,EAAMs6L,iBAAkB,EACxBh2E,EAAOlN,KAAK,UACZskF,EAAKp3E,GACDtkH,EAAMm6L,UAAYn6L,EAAMi7J,SAAS32C,EAAO3rE,KAAK,EACnD,CAWA,SAAS+iJ,EAAKp3E,GACZ,IAAItkH,EAAQskH,EAAOQ,eAEnB,IADAj+F,EAAM,OAAQ7mB,EAAMm6L,SACbn6L,EAAMm6L,SAA6B,OAAlB71E,EAAO3rE,SACjC,CAmHA,SAASqjJ,EAASnsL,EAAG7P,GAEnB,OAAqB,IAAjBA,EAAMmB,OAAqB,MAE3BnB,EAAMi+K,WAAYlmJ,EAAM/3B,EAAM2vB,OAAOtiB,SAAkBwC,GAAKA,GAAK7P,EAAMmB,QAEtD42B,EAAf/3B,EAAMmuB,QAAenuB,EAAM2vB,OAAO6sC,KAAK,IAAqC,IAAxBx8D,EAAM2vB,OAAOxuB,OAAoBnB,EAAM2vB,OAAO80B,QAAmBzkD,EAAM2vB,OAAOlY,OAAOzX,EAAMmB,QACnJnB,EAAM2vB,OAAO2rK,SAGbvjK,EAAM/3B,EAAM2vB,OAAOssK,QAAQpsL,EAAG7P,EAAMmuB,SAE/B4J,GATP,IAAIA,CAUN,CACA,SAASmkK,EAAY53E,GACnB,IAAItkH,EAAQskH,EAAOQ,eACnBj+F,EAAM,cAAe7mB,EAAM+kH,YACtB/kH,EAAM+kH,aACT/kH,EAAMq4E,OAAQ,EACdloD,EAAQomE,SAAS4lG,EAAen8L,EAAOskH,GAE3C,CACA,SAAS63E,EAAcn8L,EAAOskH,GAI5B,GAHAz9F,EAAM,gBAAiB7mB,EAAM+kH,WAAY/kH,EAAMmB,SAG1CnB,EAAM+kH,YAA+B,IAAjB/kH,EAAMmB,SAC7BnB,EAAM+kH,YAAa,EACnBT,EAAOE,UAAW,EAClBF,EAAOlN,KAAK,OACRp3G,EAAM8zK,aAAa,CAGrB,IAAID,EAASvvD,EAAOM,iBACfivD,GAAUA,EAAOC,aAAeD,EAAOrkJ,WAC1C80F,EAAOnzF,SAEX,CAEJ,CASA,SAAStd,EAAQuoL,EAAI9rL,GACnB,IAAK,IAAIhG,EAAI,EAAGwG,EAAIsrL,EAAGj7L,OAAQmJ,EAAIwG,EAAGxG,IACpC,GAAI8xL,EAAG9xL,KAAOgG,EAAG,OAAOhG,EAE1B,OAAQ,CACV,CA1pBAgvL,EAASpvL,UAAUyuC,KAAO,SAAU9oC,GAClCgX,EAAM,OAAQhX,GACdA,EAAIpF,SAASoF,EAAG,IAChB,IAAI7P,EAAQV,KAAKwlH,eACbu3E,EAAQxsL,EAMZ,GALU,IAANA,IAAS7P,EAAMo6L,iBAAkB,GAK3B,IAANvqL,GAAW7P,EAAMonK,gBAA0C,IAAxBpnK,EAAMqnK,cAAsBrnK,EAAMmB,QAAUnB,EAAMqnK,cAAgBrnK,EAAMmB,OAAS,IAAMnB,EAAMq4E,OAGlI,OAFAxxD,EAAM,qBAAsB7mB,EAAMmB,OAAQnB,EAAMq4E,OAC3B,IAAjBr4E,EAAMmB,QAAgBnB,EAAMq4E,MAAO6jH,EAAY58L,MAAWu7L,EAAav7L,MACpE,KAKT,GAAU,KAHVuQ,EAAI2rL,EAAc3rL,EAAG7P,KAGNA,EAAMq4E,MAEnB,OADqB,IAAjBr4E,EAAMmB,QAAc+6L,EAAY58L,MAC7B,KA0BT,IA2BIy4B,EA3BAukK,EAASt8L,EAAMonK,aA6CnB,OA5CAvgJ,EAAM,gBAAiBy1K,IAGF,IAAjBt8L,EAAMmB,QAAgBnB,EAAMmB,OAAS0O,EAAI7P,EAAMqnK,gBAEjDxgJ,EAAM,6BADNy1K,GAAS,GAMPt8L,EAAMq4E,OAASr4E,EAAMi7J,QAEvBp0I,EAAM,mBADNy1K,GAAS,GAEAA,IACTz1K,EAAM,WACN7mB,EAAMi7J,SAAU,EAChBj7J,EAAMynK,MAAO,EAEQ,IAAjBznK,EAAMmB,SAAcnB,EAAMonK,cAAe,GAE7C9nK,KAAKgoK,MAAMtnK,EAAMqnK,eACjBrnK,EAAMynK,MAAO,EAGRznK,EAAMi7J,UAASprJ,EAAI2rL,EAAca,EAAOr8L,KAInC,QADD+3B,EAAPloB,EAAI,EAASmsL,EAASnsL,EAAG7P,GAAkB,OAE7CA,EAAMonK,aAAepnK,EAAMmB,QAAUnB,EAAMqnK,cAC3Cx3J,EAAI,IAEJ7P,EAAMmB,QAAU0O,EAChB7P,EAAMw6L,WAAa,GAEA,IAAjBx6L,EAAMmB,SAGHnB,EAAMq4E,QAAOr4E,EAAMonK,cAAe,GAGnCi1B,IAAUxsL,GAAK7P,EAAMq4E,OAAO6jH,EAAY58L,OAElC,OAARy4B,GAAcz4B,KAAK83G,KAAK,OAAQr/E,GAC7BA,CACT,EA6GAuhK,EAASpvL,UAAUo9J,MAAQ,SAAUz3J,GACnC8jK,EAAer0K,KAAM,IAAIonK,EAA2B,WACtD,EACA4yB,EAASpvL,UAAUi8E,KAAO,SAAU3lD,EAAM+7J,GACxC,IAAIjkK,EAAMh5B,KACNU,EAAQV,KAAKwlH,eACjB,OAAQ9kH,EAAMk6L,YACZ,KAAK,EACHl6L,EAAMi6L,MAAQz5J,EACd,MACF,KAAK,EACHxgC,EAAMi6L,MAAQ,CAACj6L,EAAMi6L,MAAOz5J,GAC5B,MACF,QACExgC,EAAMi6L,MAAMrzL,KAAK45B,GAGrBxgC,EAAMk6L,YAAc,EACpBrzK,EAAM,wBAAyB7mB,EAAMk6L,WAAYqC,GACjD,IACIC,IADUD,IAA6B,IAAjBA,EAASzvK,MAAkB0T,IAASrQ,EAAQssK,QAAUj8J,IAASrQ,EAAQusK,OAC7E13E,EAAQ23E,EAG5B,SAASC,EAASp4E,EAAUq4E,GAC1Bh2K,EAAM,YACF29F,IAAalsF,GACXukK,IAAwC,IAA1BA,EAAWC,aAC3BD,EAAWC,YAAa,EAkB5Bj2K,EAAM,WAEN2Z,EAAK62E,eAAe,QAAS4N,GAC7BzkF,EAAK62E,eAAe,SAAUqN,GAC9BlkF,EAAK62E,eAAe,QAAS0lF,GAC7Bv8J,EAAK62E,eAAe,QAAS98C,GAC7B/5B,EAAK62E,eAAe,SAAUulF,GAC9BtkK,EAAI++E,eAAe,MAAO2N,GAC1B1sF,EAAI++E,eAAe,MAAOslF,GAC1BrkK,EAAI++E,eAAe,OAAQ2lF,GAC3BC,GAAY,GAORj9L,EAAMw6L,YAAgBh6J,EAAKokF,iBAAkBpkF,EAAKokF,eAAeu5D,WAAY4e,IA/BnF,CACA,SAAS/3E,IACPn+F,EAAM,SACN2Z,EAAK1T,KACP,CAdI9sB,EAAM+kH,WAAY50F,EAAQomE,SAASimG,GAAYlkK,EAAIg+E,KAAK,MAAOkmF,GACnEh8J,EAAK82E,GAAG,SAAUslF,GAmBlB,IAAIG,EAgFN,SAAqBzkK,GACnB,OAAO,WACL,IAAIt4B,EAAQs4B,EAAIwsF,eAChBj+F,EAAM,cAAe7mB,EAAMw6L,YACvBx6L,EAAMw6L,YAAYx6L,EAAMw6L,aACH,IAArBx6L,EAAMw6L,YAAoBhB,EAAgBlhK,EAAK,UACjDt4B,EAAMm6L,SAAU,EAChBuB,EAAKpjK,GAET,CACF,CA1FgB4kK,CAAY5kK,GAC1BkI,EAAK82E,GAAG,QAASylF,GACjB,IAAIE,GAAY,EAsBhB,SAASD,EAAOxpK,GACd3M,EAAM,UACN,IAAIkR,EAAMyI,EAAKp2B,MAAMopB,GACrB3M,EAAM,aAAckR,IACR,IAARA,KAKwB,IAArB/3B,EAAMk6L,YAAoBl6L,EAAMi6L,QAAUz5J,GAAQxgC,EAAMk6L,WAAa,IAAqC,IAAhCrmL,EAAQ7T,EAAMi6L,MAAOz5J,MAAkBy8J,IACpHp2K,EAAM,8BAA+B7mB,EAAMw6L,YAC3Cx6L,EAAMw6L,cAERliK,EAAI6kK,QAER,CAIA,SAAS5iI,EAAQmvF,GACf7iI,EAAM,UAAW6iI,GACjBizC,IACAn8J,EAAK62E,eAAe,QAAS98C,GACU,IAAnCi/H,EAAgBh5J,EAAM,UAAgBmzI,EAAenzI,EAAMkpH,EACjE,CAMA,SAASzkC,IACPzkF,EAAK62E,eAAe,SAAUqN,GAC9Bi4E,GACF,CAEA,SAASj4E,IACP79F,EAAM,YACN2Z,EAAK62E,eAAe,QAAS4N,GAC7B03E,GACF,CAEA,SAASA,IACP91K,EAAM,UACNyR,EAAIqkK,OAAOn8J,EACb,CAUA,OAvDAlI,EAAIg/E,GAAG,OAAQ0lF,GAniBjB,SAAyBxmF,EAASzoG,EAAOsoG,GAGvC,GAAuC,oBAA5BG,EAAQmzC,gBAAgC,OAAOnzC,EAAQmzC,gBAAgB57I,EAAOsoG,GAMpFG,EAAQE,SAAYF,EAAQE,QAAQ3oG,GAAuCtE,MAAMi3B,QAAQ81E,EAAQE,QAAQ3oG,IAASyoG,EAAQE,QAAQ3oG,GAAOm0G,QAAQ7L,GAASG,EAAQE,QAAQ3oG,GAAS,CAACsoG,EAAIG,EAAQE,QAAQ3oG,IAA5JyoG,EAAQc,GAAGvpG,EAAOsoG,EACrE,CAqjBEszC,CAAgBnpH,EAAM,QAAS+5B,GAO/B/5B,EAAK81E,KAAK,QAAS2O,GAMnBzkF,EAAK81E,KAAK,SAAUoO,GAOpBlkF,EAAK42E,KAAK,OAAQ9+E,GAGbt4B,EAAMm6L,UACTtzK,EAAM,eACNyR,EAAIujK,UAECr7J,CACT,EAYA84J,EAASpvL,UAAUyyL,OAAS,SAAUn8J,GACpC,IAAIxgC,EAAQV,KAAKwlH,eACb+3E,EAAa,CACfC,YAAY,GAId,GAAyB,IAArB98L,EAAMk6L,WAAkB,OAAO56L,KAGnC,GAAyB,IAArBU,EAAMk6L,WAER,OAAI15J,GAAQA,IAASxgC,EAAMi6L,QACtBz5J,IAAMA,EAAOxgC,EAAMi6L,OAGxBj6L,EAAMi6L,MAAQ,KACdj6L,EAAMk6L,WAAa,EACnBl6L,EAAMm6L,SAAU,EACZ35J,GAAMA,EAAK42E,KAAK,SAAU93G,KAAMu9L,IAPKv9L,KAa3C,IAAKkhC,EAAM,CAET,IAAI48J,EAAQp9L,EAAMi6L,MACdxoL,EAAMzR,EAAMk6L,WAChBl6L,EAAMi6L,MAAQ,KACdj6L,EAAMk6L,WAAa,EACnBl6L,EAAMm6L,SAAU,EAChB,IAAK,IAAI7vL,EAAI,EAAGA,EAAImH,EAAKnH,IAAK8yL,EAAM9yL,GAAG8sG,KAAK,SAAU93G,KAAM,CAC1Dw9L,YAAY,IAEd,OAAOx9L,IACT,CAGA,IAAI4gC,EAAQrsB,EAAQ7T,EAAMi6L,MAAOz5J,GACjC,OAAe,IAAXN,IACJlgC,EAAMi6L,MAAMnjL,OAAOopB,EAAO,GAC1BlgC,EAAMk6L,YAAc,EACK,IAArBl6L,EAAMk6L,aAAkBl6L,EAAMi6L,MAAQj6L,EAAMi6L,MAAM,IACtDz5J,EAAK42E,KAAK,SAAU93G,KAAMu9L,IAJDv9L,IAM3B,EAIAg6L,EAASpvL,UAAUotG,GAAK,SAAU+lF,EAAIhnF,GACpC,IAAInlF,EAAMspJ,EAAOtwK,UAAUotG,GAAGlhG,KAAK9W,KAAM+9L,EAAIhnF,GACzCr2G,EAAQV,KAAKwlH,eAqBjB,MApBW,SAAPu4E,GAGFr9L,EAAMq6L,kBAAoB/6L,KAAK63G,cAAc,YAAc,GAGrC,IAAlBn3G,EAAMm6L,SAAmB76L,KAAKu8L,UAClB,aAAPwB,IACJr9L,EAAM+kH,YAAe/kH,EAAMq6L,oBAC9Br6L,EAAMq6L,kBAAoBr6L,EAAMonK,cAAe,EAC/CpnK,EAAMm6L,SAAU,EAChBn6L,EAAMo6L,iBAAkB,EACxBvzK,EAAM,cAAe7mB,EAAMmB,OAAQnB,EAAMi7J,SACrCj7J,EAAMmB,OACR05L,EAAav7L,MACHU,EAAMi7J,SAChB9qI,EAAQomE,SAASulG,EAAkBx8L,QAIlC4xB,CACT,EACAooK,EAASpvL,UAAUqsG,YAAc+iF,EAASpvL,UAAUotG,GACpDgiF,EAASpvL,UAAUmtG,eAAiB,SAAUgmF,EAAIhnF,GAChD,IAAInlF,EAAMspJ,EAAOtwK,UAAUmtG,eAAejhG,KAAK9W,KAAM+9L,EAAIhnF,GAUzD,MATW,aAAPgnF,GAOFltK,EAAQomE,SAASqlG,EAAyBt8L,MAErC4xB,CACT,EACAooK,EAASpvL,UAAUqtG,mBAAqB,SAAU8lF,GAChD,IAAInsK,EAAMspJ,EAAOtwK,UAAUqtG,mBAAmB5gC,MAAMr3E,KAAM4B,WAU1D,MATW,aAAPm8L,QAA4Bj8L,IAAPi8L,GAOvBltK,EAAQomE,SAASqlG,EAAyBt8L,MAErC4xB,CACT,EAqBAooK,EAASpvL,UAAU2xL,OAAS,WAC1B,IAAI77L,EAAQV,KAAKwlH,eAUjB,OATK9kH,EAAMm6L,UACTtzK,EAAM,UAIN7mB,EAAMm6L,SAAWn6L,EAAMq6L,kBAM3B,SAAgB/1E,EAAQtkH,GACjBA,EAAMs6L,kBACTt6L,EAAMs6L,iBAAkB,EACxBnqK,EAAQomE,SAASwlG,EAASz3E,EAAQtkH,GAEtC,CAVI67L,CAAOv8L,KAAMU,IAEfA,EAAMu6L,QAAS,EACRj7L,IACT,EAiBAg6L,EAASpvL,UAAUizL,MAAQ,WAQzB,OAPAt2K,EAAM,wBAAyBvnB,KAAKwlH,eAAeq1E,UACf,IAAhC76L,KAAKwlH,eAAeq1E,UACtBtzK,EAAM,SACNvnB,KAAKwlH,eAAeq1E,SAAU,EAC9B76L,KAAK83G,KAAK,UAEZ93G,KAAKwlH,eAAey1E,QAAS,EACtBj7L,IACT,EAUAg6L,EAASpvL,UAAUqrB,KAAO,SAAU+uF,GAClC,IAAI+pB,EAAQ/uI,KACRU,EAAQV,KAAKwlH,eACby1E,GAAS,EAwBb,IAAK,IAAIjwL,KAvBTg6G,EAAOhN,GAAG,OAAO,WAEf,GADAzwF,EAAM,eACF7mB,EAAMmuB,UAAYnuB,EAAMq4E,MAAO,CACjC,IAAI7kD,EAAQxzB,EAAMmuB,QAAQrB,MACtB0G,GAASA,EAAMryB,QAAQktI,EAAMznI,KAAK4sB,EACxC,CACA66G,EAAMznI,KAAK,KACb,IACA09G,EAAOhN,GAAG,QAAQ,SAAU9jF,IAC1B3M,EAAM,gBACF7mB,EAAMmuB,UAASqF,EAAQxzB,EAAMmuB,QAAQ/jB,MAAMopB,KAG3CxzB,EAAMi+K,YAAyB,OAAVzqJ,QAA4BpyB,IAAVoyB,MAAuCxzB,EAAMi+K,YAAgBzqJ,GAAUA,EAAMryB,UAC9GktI,EAAMznI,KAAK4sB,KAEnB+mK,GAAS,EACTj2E,EAAO64E,UAEX,IAIc74E,OACIljH,IAAZ9B,KAAKgL,IAAyC,oBAAdg6G,EAAOh6G,KACzChL,KAAKgL,GAAK,SAAoBmhB,GAC5B,OAAO,WACL,OAAO64F,EAAO74F,GAAQkrD,MAAM2tC,EAAQpjH,UACtC,CACF,CAJU,CAIRoJ,IAKN,IAAK,IAAIuF,EAAI,EAAGA,EAAIkqL,EAAa54L,OAAQ0O,IACvCy0G,EAAOhN,GAAGyiF,EAAalqL,GAAIvQ,KAAK83G,KAAK/xF,KAAK/lB,KAAMy6L,EAAalqL,KAY/D,OAPAvQ,KAAKgoK,MAAQ,SAAUz3J,GACrBgX,EAAM,gBAAiBhX,GACnB0qL,IACFA,GAAS,EACTj2E,EAAOu3E,SAEX,EACOv8L,IACT,EACsB,oBAAXsiC,SACT03J,EAASpvL,UAAU03B,OAAO00I,eAAiB,WAIzC,YAH0Cl1K,IAAtCu4L,IACFA,EAAoCv5L,EAAQ,QAEvCu5L,EAAkCr6L,KAC3C,GAEFgD,OAAOC,eAAe+2L,EAASpvL,UAAW,wBAAyB,CAIjE8xB,YAAY,EACZ9wB,IAAK,WACH,OAAO5L,KAAKwlH,eAAeuiD,aAC7B,IAEF/kK,OAAOC,eAAe+2L,EAASpvL,UAAW,iBAAkB,CAI1D8xB,YAAY,EACZ9wB,IAAK,WACH,OAAO5L,KAAKwlH,gBAAkBxlH,KAAKwlH,eAAen1F,MACpD,IAEFrtB,OAAOC,eAAe+2L,EAASpvL,UAAW,kBAAmB,CAI3D8xB,YAAY,EACZ9wB,IAAK,WACH,OAAO5L,KAAKwlH,eAAeq1E,OAC7B,EACAvkL,IAAK,SAAa5V,GACZV,KAAKwlH,iBACPxlH,KAAKwlH,eAAeq1E,QAAUn6L,EAElC,IAIFs5L,EAASgE,UAAYtB,EACrB15L,OAAOC,eAAe+2L,EAASpvL,UAAW,iBAAkB,CAI1D8xB,YAAY,EACZ9wB,IAAK,WACH,OAAO5L,KAAKwlH,eAAe3jH,MAC7B,IA+CoB,oBAAXygC,SACT03J,EAASx1L,KAAO,SAAUy5L,EAAUhkK,GAIlC,YAHan4B,IAAT0C,IACFA,EAAO1D,EAAQ,QAEV0D,EAAKw1L,EAAUiE,EAAUhkK,EAClC,iCC1/BFj3B,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQo+L,wBAAqB,EAC7B,MACMr8K,GAAS,EADC/gB,EAAQ,OACGwE,WAAW,wBA+CtCxF,EAAQo+L,mBA9CR,MACIjwL,WAAAA,CAAYI,GACRrO,KAAKm+L,aAAe,IAAIp8K,IACxB/hB,KAAKqO,QAAUA,CACnB,CACAc,IAAAA,GACI,OAAOnP,KAAKqO,QAAQc,MACxB,CASA,WAAMX,CAAM6jD,EAAQxjD,GAEhB,aADuB7O,KAAKqO,QAAQG,MAAM6jD,IAC1B3pD,KAAI01L,IAChB,MAAMC,EAAWr+L,KAAKm+L,aAAavyL,IAAIwyL,EAAOrpL,KAAKiS,QACnD,GAAgB,MAAZq3K,EACA,OAAOA,EAEXx8K,EAAO0F,MAAM,wCAA0C62K,EAAOrpL,IAC9D,MAAM7R,EAAQ2L,EAAQuvL,GAEtB,OADAp+L,KAAKm+L,aAAa7nL,IAAI8nL,EAAOrpL,GAAI,IAAIyS,QAAQtkB,IACtCA,CAAK,GAEpB,CACAokB,IAAAA,CAAKpkB,GAED,OADAlD,KAAKm+L,aAAa7nL,IAAIpT,EAAMoiB,0BAA2B,IAAIkC,QAAQtkB,IAC5DlD,KAAKqO,QAAQiZ,KAAKpkB,EAAM8sD,YACnC,CACAnpC,OAAAA,CAAQE,GAEJ,OADAA,EAAOhY,SAAQ7L,GAASlD,KAAKm+L,aAAa7nL,IAAIpT,EAAMoiB,0BAA2B,IAAIkC,QAAQtkB,MACpFlD,KAAKqO,QAAQwY,QAAQE,EAAOre,KAAIkG,GAAOA,EAAIohD,cACtD,CACAtoC,MAAAA,CAAOxkB,GAEH,OADAlD,KAAKm+L,aAAa/2K,OAAOlkB,EAAMoiB,2BACxBtlB,KAAKqO,QAAQqZ,OAAOxkB,EAAM8sD,YACrC,CACAppC,SAAAA,CAAUG,GAEN,OADAA,EAAOhY,SAAQ7L,GAASlD,KAAKm+L,aAAa/2K,OAAOlkB,EAAMoiB,6BAChDtlB,KAAKqO,QAAQuY,UAAUG,EAAOre,KAAIkG,GAAOA,EAAIohD,cACxD,iCC/CJhtD,OAAOC,eAAenD,EAAS,aAAc,CAC3CoD,OAAO,IAETpD,EAAAA,QAAkBA,EAAQw+L,aAAex+L,EAAQy+L,UAAO,EAExD,IAAIpzB,EAASI,EAAuBzqK,EAAQ,QAExCwqK,EAAaC,EAAuBzqK,EAAQ,QAE5C09L,EAAWjzB,EAAuBzqK,EAAQ,QAE9C,SAASyqK,EAAuB38J,GAAO,OAAOA,GAAOA,EAAI2mD,WAAa3mD,EAAM,CAAEm2E,QAASn2E,EAAO,CAE9F,SAAS68J,IAA2Q,OAA9PA,EAAWzoK,OAAO0nF,QAAU,SAAU7+E,GAAU,IAAK,IAAIb,EAAI,EAAGA,EAAIpJ,UAAUC,OAAQmJ,IAAK,CAAE,IAAI5J,EAASQ,UAAUoJ,GAAI,IAAK,IAAIhB,KAAO5I,EAAc4B,OAAO4H,UAAU4L,eAAeM,KAAK1V,EAAQ4I,KAAQ6B,EAAO7B,GAAO5I,EAAO4I,GAAU,CAAE,OAAO6B,CAAQ,EAAU4/J,EAASp0F,MAAMr3E,KAAM4B,UAAY,CAE5T,SAASkrK,EAAcjhK,GAAU,IAAK,IAAIb,EAAI,EAAGA,EAAIpJ,UAAUC,OAAQmJ,IAAK,CAAE,IAAI5J,EAAyB,MAAhBQ,UAAUoJ,GAAapJ,UAAUoJ,GAAK,CAAC,EAAOo9I,EAAUplJ,OAAOoc,KAAKhe,GAAqD,oBAAjC4B,OAAO00G,wBAAwC0wC,EAAUA,EAAQjwI,OAAOnV,OAAO00G,sBAAsBt2G,GAAQoyF,QAAO,SAAU16D,GAAO,OAAO91B,OAAOsyD,yBAAyBl0D,EAAQ03B,GAAK4D,UAAY,MAAO0rH,EAAQr5I,SAAQ,SAAU/E,GAAO0hK,EAAgB7/J,EAAQ7B,EAAK5I,EAAO4I,GAAO,GAAI,CAAE,OAAO6B,CAAQ,CAEhe,SAAS6/J,EAAgB98J,EAAK5E,EAAK9G,GAAiK,OAApJ8G,KAAO4E,EAAO5L,OAAOC,eAAe2L,EAAK5E,EAAK,CAAE9G,MAAOA,EAAOw5B,YAAY,EAAM+4B,cAAc,EAAMD,UAAU,IAAkB5mD,EAAI5E,GAAO9G,EAAgB0L,CAAK,CAEhN,SAAS6vL,EAAyBr9L,EAAQs9L,GAAY,GAAc,MAAVt9L,EAAgB,MAAO,CAAC,EAAG,IAAkE4I,EAAKgB,EAAnEa,EAEzF,SAAuCzK,EAAQs9L,GAAY,GAAc,MAAVt9L,EAAgB,MAAO,CAAC,EAAG,IAA2D4I,EAAKgB,EAA5Da,EAAS,CAAC,EAAO8yL,EAAa37L,OAAOoc,KAAKhe,GAAqB,IAAK4J,EAAI,EAAGA,EAAI2zL,EAAW98L,OAAQmJ,IAAOhB,EAAM20L,EAAW3zL,GAAQ0zL,EAASnqL,QAAQvK,IAAQ,IAAa6B,EAAO7B,GAAO5I,EAAO4I,IAAQ,OAAO6B,CAAQ,CAFhN+yL,CAA8Bx9L,EAAQs9L,GAAuB,GAAI17L,OAAO00G,sBAAuB,CAAE,IAAImnF,EAAmB77L,OAAO00G,sBAAsBt2G,GAAS,IAAK4J,EAAI,EAAGA,EAAI6zL,EAAiBh9L,OAAQmJ,IAAOhB,EAAM60L,EAAiB7zL,GAAQ0zL,EAASnqL,QAAQvK,IAAQ,GAAkBhH,OAAO4H,UAAUk0L,qBAAqBhoL,KAAK1V,EAAQ4I,KAAgB6B,EAAO7B,GAAO5I,EAAO4I,GAAQ,CAAE,OAAO6B,CAAQ,CAI3e,IAAI0yL,EAAO,SAAc5zG,GACvB,IAAI8hF,EAAQ9hF,EAAM8hF,MACdsyB,EAAYp0G,EAAMo0G,UAGlBj6I,GAFO6lC,EAAM88B,KACN98B,EAAMzgE,KACPygE,EAAM7lC,KACZk6I,EAASP,EAAyB9zG,EAAO,CAAC,QAAS,YAAa,OAAQ,OAAQ,QAGhFs0G,EAAMn6I,EACV,OAAOqmH,EAAOpmF,QAAQmJ,cAAc+wG,EAAKxzB,EAAS,CAAC,EAAGuzB,EAAQ,CAC5DvyB,MAAOK,EAAc,CACnBM,QAAS,gBACRX,GACHsyB,UAAWA,IACT5zB,EAAOpmF,QAAQmJ,cAAcswG,EAASz5G,QAAS,CACjD76D,KAAMygE,EAAMzgE,KACZu9F,KAAM98B,EAAM88B,KACZinC,MAAO/jE,EAAM+jE,QAEjB,EAEA5uJ,EAAQy+L,KAAOA,EAUfz+L,EAAQw+L,aARW,SAAsBzyG,GACvC,OAAO,SAAUlB,GACf,IAAIu0G,EAAapyB,EAAc,CAAC,EAAGjhF,GAEnC,OAAOs/E,EAAOpmF,QAAQmJ,cAAcqwG,EAAM9yB,EAAS,CAAC,EAAGyzB,EAAYv0G,GACrE,CACF,EAGA4zG,EAAK1yG,aAAe,CAClB3hE,KAAM,GACN+G,KAAM,eACN6zB,IAAK,KAEPy5I,EAAKjxB,UAAY,CACf7lD,KAAM6jD,EAAWvmF,QAAQrnB,OAAO6vG,WAChCrjJ,KAAMohJ,EAAWvmF,QAAQyoF,UAAU,CAAClC,EAAWvmF,QAAQ7kD,OAAQorI,EAAWvmF,QAAQpkD,SAClF8rI,MAAOnB,EAAWvmF,QAAQrnB,OAC1B5Y,IAAKwmH,EAAWvmF,QAAQ8+D,MAAM,CAAC,IAAK,OAAQ,QAC5Ck7C,UAAWzzB,EAAWvmF,QAAQpkD,QAEhC,IAAI8sI,EAAW8wB,EACfz+L,EAAAA,QAAkB2tK,gCCtElBzqK,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQq/L,4BAAyB,EACjC,MAAMC,EAAmBt+L,EAAQ,OAC3BoE,EAAapE,EAAQ,OACrBqE,EAAUrE,EAAQ,OACxB,MAAMq+L,UAA+BC,EAAiBC,eAClDpxL,WAAAA,CAAYusE,EAAM8kH,GACdl5L,MAAMo0E,GACNx6E,KAAKs/L,IAAMA,CACf,CACAC,mBAAAA,CAAoBC,GAChB,MAAMC,EAAYv6L,EAAWiJ,OAAOuxL,aAAa1/L,KAAKs/L,KAChDK,EAAaz6L,EAAWwgJ,SAASk6C,aAAa5/L,KAAKs/L,KACnDO,EAAW36L,EAAWwgJ,SAASo6C,WAAW9/L,KAAKs/L,KAC/C3wK,EAASzpB,EAAWiJ,OAAO4xL,YAAYP,EAAaC,EAAWE,EAAYE,GACjF,GAAIlxK,EAAO9sB,SAAW29L,EAAY39L,OAC9B,MAAM,IAAIgC,MAAM,qDACpB,OAAO8qB,EAAOjmB,KAAI,CAACxF,EAAO09B,KACtB,MAAMo/J,EAAgBR,EAAY5+J,GAC5BhvB,EAAO5O,OAAOoc,KAAKlc,GAAO,GAChC,MAAO,CACH0O,KAAMA,EACNqxG,OAAQ+8E,EAAc78E,iBACtB9wD,OAAQnvD,EAAM0O,GACdyjH,YAAa2qE,EAAc7pE,aAC3Bi3D,UAAW4S,EAAc/uG,WACzBttF,KAAMq8L,EAAcr8L,KACpByb,KAAM4gL,EAAc5gL,KACvB,GAET,CACA6gL,QAAAA,CAAS9xL,EAAQiR,GACb,MAAM8gL,EAAc,GAQpB,OAPAA,EAAY54L,KAAK6G,EAAOzF,KAAIkJ,IACxB,MAAMoG,EAAMpG,EAAKrJ,MAAM,KACjB2nI,EAAYl4H,EAAIA,EAAInW,OAAS,GACnC,OAAO,EAAIsD,EAAQgmD,OAAOjmD,EAAWN,KAAK8uH,eAAewc,GAAW,KAE5D,MAAR9wH,GACAA,EAAKrQ,SAAQ/E,GAAOk2L,EAAY54L,KAAY,MAAP0C,EAAc,GAAK,CAACA,MACtDk2L,CACX,CAUA,4BAAMnqE,CAAuB5nH,EAAQiR,EAAM+gL,GAAqD,IAAnCC,EAAcx+L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGu+L,EAC1E,MAAMX,QAAoBp5L,MAAMi6L,eAAergM,KAAKw6E,KAAKh5D,SAAS9a,QAAS1G,KAAKigM,SAAS9xL,EAAQiR,GAAO+gL,EAAkBC,GAC1H,OAAOpgM,KAAKu/L,oBAAoBC,EACpC,CAUA,0BAAMlS,CAAqBn/K,EAAQiR,EAAMkhL,EAAWl4L,GAChD,OAAOpI,KAAKugM,aAAavgM,KAAKw6E,KAAKh5D,SAAS9a,QAAS1G,KAAKigM,SAAS9xL,EAAQiR,IAAO/P,UAC9E,MAAMmmH,EAAex1H,KAAKu/L,oBAAoBpxL,GAC9C,IAAK,IAAIM,KAAS+mH,EAAc,CAC5B,MAAM7mG,QAAe2xK,EAAU7xL,GAC/B,GAAc,MAAVkgB,EACA,OAAOA,CACf,IACDvmB,EACP,EAEJtI,EAAQq/L,uBAAyBA,mBC5EjC,IAAI7gK,EAAWx9B,EAAQ,OACnB+uB,EAAO/uB,EAAQ,OACfyD,EAASzD,EAAAA,OAAAA,OAETwqF,EAAI,CACN,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,YAGlCmB,EAAI,IAAItiF,MAAM,KAElB,SAASq2L,IACPxgM,KAAKmP,OACLnP,KAAKyqH,GAAKh+B,EAEV58D,EAAK/Y,KAAK9W,KAAM,IAAK,IACvB,CA0BA,SAAS2mK,EAAI31J,EAAGC,EAAGN,GACjB,OAAOA,EAAKK,GAAKC,EAAIN,EACvB,CAEA,SAAS8vL,EAAKzvL,EAAGC,EAAGN,GAClB,OAAQK,EAAIC,EAAMN,GAAKK,EAAIC,EAC7B,CAEA,SAASyvL,EAAQ1vL,EAAG2vL,GAClB,OAAQ3vL,IAAM,GAAK2vL,GAAM,IAAMA,IAAO,EAAI3vL,GAAK,KAAO2vL,IAAO,EAAI3vL,GAAK,GACxE,CAEA,SAAS4vL,EAAQ5vL,EAAG2vL,GAClB,OAAQ3vL,IAAM,GAAK2vL,GAAM,KAAO3vL,IAAM,GAAK2vL,GAAM,KAAOA,IAAO,EAAI3vL,GAAK,GAC1E,CAEA,SAAS6vL,EAAQ7vL,EAAG2vL,GAClB,OAAQ3vL,IAAM,EAAI2vL,GAAM,KAAO3vL,IAAM,EAAI2vL,GAAM,IAAO3vL,IAAM,CAC9D,CAEA,SAAS8vL,EAAS9vL,EAAG2vL,GACnB,OAAQ3vL,IAAM,EAAI2vL,GAAM,KAAO3vL,IAAM,EAAI2vL,GAAM,KAAO3vL,IAAM,EAAI2vL,GAAM,GACxE,CAEA,SAASI,EAAQ/vL,EAAG2vL,GAClB,OAAQ3vL,IAAM,GAAK2vL,GAAM,KAAOA,IAAO,GAAK3vL,GAAK,GAAMA,IAAM,CAC/D,CAEA,SAASgwL,EAAShwL,EAAG2vL,GACnB,OAAQ3vL,IAAM,GAAK2vL,GAAM,KAAOA,IAAO,GAAK3vL,GAAK,IAAMA,IAAM,EAAI2vL,GAAM,GACzE,CAEA,SAASM,EAAUxwL,EAAGS,GACpB,OAAQT,IAAM,EAAMS,IAAM,EAAK,EAAI,CACrC,CA1DAotB,EAASkiK,EAAQ3wK,GAEjB2wK,EAAO51L,UAAUuE,KAAO,WAmBtB,OAlBAnP,KAAK0qH,IAAM,WACX1qH,KAAK2qH,IAAM,WACX3qH,KAAK4qH,IAAM,WACX5qH,KAAK6qH,IAAM,WACX7qH,KAAK8qH,IAAM,WACX9qH,KAAK+qH,IAAM,WACX/qH,KAAKgrH,IAAM,UACXhrH,KAAKirH,IAAM,WAEXjrH,KAAKkrH,IAAM,WACXlrH,KAAKmrH,IAAM,WACXnrH,KAAKorH,IAAM,WACXprH,KAAKqrH,IAAM,WACXrrH,KAAKsrH,IAAM,WACXtrH,KAAKurH,IAAM,UACXvrH,KAAKwrH,IAAM,WACXxrH,KAAKyrH,IAAM,UAEJzrH,IACT,EAsCAwgM,EAAO51L,UAAUu0B,QAAU,SAAUwsD,GAqBnC,IApBA,IAAIc,EAAIzsF,KAAKyqH,GAETy2E,EAAgB,EAAXlhM,KAAK0qH,IACVy2E,EAAgB,EAAXnhM,KAAK2qH,IACV3rB,EAAgB,EAAXh/F,KAAK4qH,IACVw2E,EAAgB,EAAXphM,KAAK6qH,IACVw2E,EAAgB,EAAXrhM,KAAK8qH,IACVw2E,EAAgB,EAAXthM,KAAK+qH,IACVw2E,EAAgB,EAAXvhM,KAAKgrH,IACVw2E,EAAgB,EAAXxhM,KAAKirH,IAEVpM,EAAgB,EAAX7+G,KAAKkrH,IACVyjD,EAAgB,EAAX3uK,KAAKmrH,IACV0jD,EAAgB,EAAX7uK,KAAKorH,IACV2jD,EAAgB,EAAX/uK,KAAKqrH,IACV4jD,EAAgB,EAAXjvK,KAAKsrH,IACVm2E,EAAgB,EAAXzhM,KAAKurH,IACVm2E,EAAgB,EAAX1hM,KAAKwrH,IACV5M,EAAgB,EAAX5+G,KAAKyrH,IAELzgH,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAC3ByhF,EAAEzhF,GAAK2gF,EAAEutC,YAAgB,EAAJluH,GACrByhF,EAAEzhF,EAAI,GAAK2gF,EAAEutC,YAAgB,EAAJluH,EAAQ,GAEnC,KAAOA,EAAI,IAAKA,GAAK,EAAG,CACtB,IAAI22L,EAAKl1G,EAAEzhF,EAAI,IACX21L,EAAKl0G,EAAEzhF,EAAI,GAAS,GACpB42L,EAASf,EAAOc,EAAIhB,GACpBkB,EAAUf,EAAQH,EAAIgB,GAItBG,EAASf,EAFbY,EAAKl1G,EAAEzhF,EAAI,GACX21L,EAAKl0G,EAAEzhF,EAAI,EAAQ,IAEf+2L,EAAUf,EAAQL,EAAIgB,GAGtBK,EAAOv1G,EAAEzhF,EAAI,IACbi3L,EAAOx1G,EAAEzhF,EAAI,GAAQ,GAErBk3L,EAAQz1G,EAAEzhF,EAAI,IACdm3L,EAAQ11G,EAAEzhF,EAAI,GAAS,GAEvBo3L,EAAOP,EAAUI,EAAQ,EACzBI,EAAOT,EAASI,EAAOf,EAASmB,EAAKP,GAAY,EAIrDQ,GAFAA,EAAOA,EAAMP,EAASb,EADtBmB,EAAOA,EAAML,EAAW,EACYA,GAAY,GAEnCG,EAAQjB,EADrBmB,EAAOA,EAAMD,EAAS,EACaA,GAAU,EAE7C11G,EAAEzhF,GAAKq3L,EACP51G,EAAEzhF,EAAI,GAAKo3L,CACb,CAEA,IAAK,IAAIxxL,EAAI,EAAGA,EAAI,IAAKA,GAAK,EAAG,CAC/ByxL,EAAM51G,EAAE77E,GACRwxL,EAAM31G,EAAE77E,EAAI,GAEZ,IAAI0xL,EAAO7B,EAAIS,EAAIC,EAAIniG,GACnBujG,EAAO9B,EAAI5hF,EAAI8vD,EAAIE,GAEnB2zB,EAAU9B,EAAOQ,EAAIriF,GACrB4jF,EAAU/B,EAAO7hF,EAAIqiF,GACrBwB,EAAU9B,EAAOS,EAAIpyB,GACrB0zB,EAAU/B,EAAO3xB,EAAIoyB,GAGrBuB,EAAMt3G,EAAE16E,GACRiyL,EAAMv3G,EAAE16E,EAAI,GAEZkyL,EAAMn8B,EAAG06B,EAAIC,EAAIC,GACjBwB,EAAMp8B,EAAGsI,EAAIwyB,EAAIC,GAEjBsB,EAAOpkF,EAAK+jF,EAAW,EACvBM,EAAOzB,EAAKkB,EAAUzB,EAAS+B,EAAKpkF,GAAO,EAM/CqkF,GAFAA,GAFAA,EAAOA,EAAMH,EAAM7B,EADnB+B,EAAOA,EAAMD,EAAO,EACaA,GAAQ,GAE5BH,EAAM3B,EADnB+B,EAAOA,EAAMH,EAAO,EACaA,GAAQ,GAE5BR,EAAMpB,EADnB+B,EAAOA,EAAMZ,EAAO,EACaA,GAAQ,EAGzC,IAAIc,GAAOT,EAAUF,EAAQ,EACzBY,GAAOX,EAAUF,EAAOrB,EAASiC,GAAKT,GAAY,EAEtDjB,EAAKD,EACL3iF,EAAK8iF,EACLH,EAAKD,EACLI,EAAKD,EACLH,EAAKD,EACLI,EAAKxyB,EAELoyB,EAAMD,EAAK6B,EAAMhC,EADjBhyB,EAAMF,EAAKi0B,EAAO,EACYj0B,GAAO,EACrCqyB,EAAKpiG,EACL+vE,EAAKF,EACL7vE,EAAKmiG,EACLtyB,EAAKF,EACLwyB,EAAKD,EACLvyB,EAAK9vD,EAELqiF,EAAM+B,EAAME,GAAMlC,EADlBpiF,EAAMmkF,EAAME,GAAO,EACYF,GAAQ,CACzC,CAEAhjM,KAAKkrH,IAAOlrH,KAAKkrH,IAAMrM,EAAM,EAC7B7+G,KAAKmrH,IAAOnrH,KAAKmrH,IAAMwjD,EAAM,EAC7B3uK,KAAKorH,IAAOprH,KAAKorH,IAAMyjD,EAAM,EAC7B7uK,KAAKqrH,IAAOrrH,KAAKqrH,IAAM0jD,EAAM,EAC7B/uK,KAAKsrH,IAAOtrH,KAAKsrH,IAAM2jD,EAAM,EAC7BjvK,KAAKurH,IAAOvrH,KAAKurH,IAAMk2E,EAAM,EAC7BzhM,KAAKwrH,IAAOxrH,KAAKwrH,IAAMk2E,EAAM,EAC7B1hM,KAAKyrH,IAAOzrH,KAAKyrH,IAAM7M,EAAM,EAE7B5+G,KAAK0qH,IAAO1qH,KAAK0qH,IAAMw2E,EAAKD,EAASjhM,KAAKkrH,IAAKrM,GAAO,EACtD7+G,KAAK2qH,IAAO3qH,KAAK2qH,IAAMw2E,EAAKF,EAASjhM,KAAKmrH,IAAKwjD,GAAO,EACtD3uK,KAAK4qH,IAAO5qH,KAAK4qH,IAAM5rB,EAAKiiG,EAASjhM,KAAKorH,IAAKyjD,GAAO,EACtD7uK,KAAK6qH,IAAO7qH,KAAK6qH,IAAMu2E,EAAKH,EAASjhM,KAAKqrH,IAAK0jD,GAAO,EACtD/uK,KAAK8qH,IAAO9qH,KAAK8qH,IAAMu2E,EAAKJ,EAASjhM,KAAKsrH,IAAK2jD,GAAO,EACtDjvK,KAAK+qH,IAAO/qH,KAAK+qH,IAAMu2E,EAAKL,EAASjhM,KAAKurH,IAAKk2E,GAAO,EACtDzhM,KAAKgrH,IAAOhrH,KAAKgrH,IAAMu2E,EAAKN,EAASjhM,KAAKwrH,IAAKk2E,GAAO,EACtD1hM,KAAKirH,IAAOjrH,KAAKirH,IAAMu2E,EAAKP,EAASjhM,KAAKyrH,IAAK7M,GAAO,CACxD,EAEA4hF,EAAO51L,UAAU8gH,MAAQ,WACvB,IAAIvgC,EAAI5mF,EAAOi/B,YAAY,IAE3B,SAASmoF,EAAcn6F,EAAGhgB,EAAGulB,GAC3Bo0D,EAAEygC,aAAap6F,EAAGuF,GAClBo0D,EAAEygC,aAAap6G,EAAGulB,EAAS,EAC7B,CAWA,OATA40F,EAAa3rH,KAAK0qH,IAAK1qH,KAAKkrH,IAAK,GACjCS,EAAa3rH,KAAK2qH,IAAK3qH,KAAKmrH,IAAK,GACjCQ,EAAa3rH,KAAK4qH,IAAK5qH,KAAKorH,IAAK,IACjCO,EAAa3rH,KAAK6qH,IAAK7qH,KAAKqrH,IAAK,IACjCM,EAAa3rH,KAAK8qH,IAAK9qH,KAAKsrH,IAAK,IACjCK,EAAa3rH,KAAK+qH,IAAK/qH,KAAKurH,IAAK,IACjCI,EAAa3rH,KAAKgrH,IAAKhrH,KAAKwrH,IAAK,IACjCG,EAAa3rH,KAAKirH,IAAKjrH,KAAKyrH,IAAK,IAE1BtgC,CACT,EAEAprF,EAAOD,QAAU0gM,kRCnQjB,MAAMr7B,EAA6Bz/J,OAAO,GAAK,GAAK,GAC9C0rB,EAAuB1rB,OAAO,IAGpC,SAAS0/J,EAAQ70J,GACf,OAD4B3O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACb,CAAE4vB,EAAGrC,OAAO5e,EAAI40J,GAAa3zJ,EAAG2d,OAAQ5e,GAAK6gB,EAAQ+zI,IAC7D,CAAE3zI,EAAsC,EAAnCrC,OAAQ5e,GAAK6gB,EAAQ+zI,GAAiB3zJ,EAA4B,EAAzB2d,OAAO5e,EAAI40J,GAClE,CAEA,SAAS58J,EAAMitJ,GAAyB,IAAVC,EAAE7zJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC1ByjK,EAAK,IAAI/tJ,YAAYk+I,EAAI3zJ,QACzByjK,EAAK,IAAIhuJ,YAAYk+I,EAAI3zJ,QAC7B,IAAK,IAAImJ,EAAI,EAAGA,EAAIwqJ,EAAI3zJ,OAAQmJ,IAAK,CACnC,MAAM,EAAEwmB,EAAC,EAAEhgB,GAAM4zJ,EAAQ5P,EAAIxqJ,GAAIyqJ,IAChC4P,EAAGr6J,GAAIs6J,EAAGt6J,IAAM,CAACwmB,EAAGhgB,EACvB,CACA,MAAO,CAAC6zJ,EAAIC,EACd,CA2CExlK,EAAAA,QAAAslK,EAAStlK,EAAAA,MAAAyI,EAzCX,MAAMg9J,EAAQA,CAAC/zI,EAAWhgB,IAAe9L,OAAO8rB,IAAM,IAAMJ,EAAQ1rB,OAAO8L,IAAM,GAyC/D1R,EAAAA,MAAAylK,EAvClB,MAAMC,EAAQA,CAACh0I,EAAWi0I,EAAY/0J,IAAc8gB,IAAM9gB,EAwCxD5Q,EAAAA,MAAA0lK,EAvCF,MAAME,EAAQA,CAACl0I,EAAWhgB,EAAWd,IAAe8gB,GAAM,GAAK9gB,EAAOc,IAAMd,EAuCnE5Q,EAAAA,MAAA4lK,EArCT,MAAMC,EAASA,CAACn0I,EAAWhgB,EAAWd,IAAe8gB,IAAM9gB,EAAMc,GAAM,GAAKd,EAsC1E5Q,EAAAA,OAAA6lK,EArCF,MAAMC,EAASA,CAACp0I,EAAWhgB,EAAWd,IAAe8gB,GAAM,GAAK9gB,EAAOc,IAAMd,EAqCnE5Q,EAAAA,OAAA8lK,EAnCV,MAAMC,EAASA,CAACr0I,EAAWhgB,EAAWd,IAAe8gB,GAAM,GAAK9gB,EAAOc,IAAOd,EAAI,GAmChE5Q,EAAAA,OAAA+lK,EAlClB,MAAMC,EAASA,CAACt0I,EAAWhgB,EAAWd,IAAe8gB,IAAO9gB,EAAI,GAAQc,GAAM,GAAKd,EAkCzD5Q,EAAAA,OAAAgmK,EAhC1B,MAAMC,EAAUA,CAACC,EAAYx0J,IAAcA,EAiCzC1R,EAAAA,QAAAimK,EAhCF,MAAME,EAAUA,CAACz0I,EAAWi0I,IAAej0I,EAgChC1xB,EAAAA,QAAAmmK,EA9BX,MAAMC,EAASA,CAAC10I,EAAWhgB,EAAWd,IAAe8gB,GAAK9gB,EAAMc,IAAO,GAAKd,EA+B1E5Q,EAAAA,OAAAomK,EA9BF,MAAMC,EAASA,CAAC30I,EAAWhgB,EAAWd,IAAec,GAAKd,EAAM8gB,IAAO,GAAK9gB,EA8BlE5Q,EAAAA,OAAAqmK,EA5BV,MAAMC,EAASA,CAAC50I,EAAWhgB,EAAWd,IAAec,GAAMd,EAAI,GAAQ8gB,IAAO,GAAK9gB,EA4BjE5Q,EAAAA,OAAAsmK,EA3BlB,MAAMC,EAASA,CAAC70I,EAAWhgB,EAAWd,IAAe8gB,GAAM9gB,EAAI,GAAQc,IAAO,GAAKd,EAInF,SAASnO,EAAI8iK,EAAYC,EAAYgB,EAAYC,GAC/C,MAAM/0J,GAAK8zJ,IAAO,IAAMiB,IAAO,GAC/B,MAAO,CAAE/0I,EAAI6zI,EAAKiB,GAAO90J,EAAI,GAAK,GAAM,GAAM,EAAGA,EAAO,EAAJA,EACtD,CAoB0B1R,EAAAA,OAAAumK,EACxBvmK,EAAAA,IAAAyC,EAnBF,MAAMikK,EAAQA,CAAClB,EAAYiB,EAAYE,KAAgBnB,IAAO,IAAMiB,IAAO,IAAME,IAAO,GAmBjF3mK,EAAAA,MAAA0mK,EAlBP,MAAME,EAAQA,CAACrjG,EAAagiG,EAAYiB,EAAYK,IACjDtB,EAAKiB,EAAKK,GAAOtjG,EAAM,GAAK,GAAM,GAAM,EAiB7BvjE,EAAAA,MAAA4mK,EAhBd,MAAME,EAAQA,CAACtB,EAAYiB,EAAYE,EAAYI,KAChDvB,IAAO,IAAMiB,IAAO,IAAME,IAAO,IAAMI,IAAO,GAe5B/mK,EAAAA,MAAA8mK,EAdrB,MAAME,EAAQA,CAACzjG,EAAagiG,EAAYiB,EAAYK,EAAYI,IAC7D1B,EAAKiB,EAAKK,EAAKI,GAAO1jG,EAAM,GAAK,GAAM,GAAM,EAapBvjE,EAAAA,MAAAgnK,EAZ5B,MAAME,EAAQA,CAAC1B,EAAYiB,EAAYE,EAAYI,EAAYI,KAC5D3B,IAAO,IAAMiB,IAAO,IAAME,IAAO,IAAMI,IAAO,IAAMI,IAAO,GAWpBnnK,EAAAA,MAAAknK,EAV1C,MAAME,EAAQA,CAAC7jG,EAAagiG,EAAYiB,EAAYK,EAAYI,EAAYI,IACzE9B,EAAKiB,EAAKK,EAAKI,EAAKI,GAAO9jG,EAAM,GAAK,GAAM,GAAM,EASlBvjE,EAAAA,MAAAonK,EAGnC,MAAMx0I,EAAM,CACV0yI,UAAS78J,QAAOg9J,QAChBC,QAAOE,QACPC,SAAQC,SAAQC,SAAQC,SACxBC,UAASE,UACTC,SAAQC,SAAQC,SAAQC,SACxB9jK,MAAKikK,QAAOE,QAAOE,QAAOE,QAAOI,QAAOF,SAE1ClnK,EAAAA,QAAe4yB,8BCvEf5yB,EAAQ,OAAW,EAUnBA,EAAQ,EATO,CACb,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,qpBCXX,SAASglH,OACT,CACA,SAASs+E,IAAI7mL,GACX,OAAOA,GACT,CACA,SAAS8mL,eACP,OAAuBrgM,OAAO0G,OAAO,KACvC,CACA,SAAS45L,QAAQ/mL,GACfA,EAAExN,QAAQq0L,IACZ,CACA,SAASG,YAAYhnL,GACnB,MAAmB,mBAALA,CAChB,CACA,SAASinL,eAAejnL,EAAGhL,GACzB,OAAOgL,GAAKA,EAAIhL,GAAKA,EAAIgL,IAAMhL,GAAKgL,GAAiB,iBAALA,GAA6B,mBAALA,CAC1E,CACA,IAAIknL,qBA4DAC,kBA3DJ,SAASC,cAAcpnL,EAAGhL,GACxB,OAAOkyL,uBAAyBA,qBAAuBG,SAAS11G,cAAc,MAAOu1G,qBAAqB/7G,KAAOn2E,EAAGgL,IAAMknL,qBAAqB/7G,IACjJ,CACA,SAASm8G,SAAStnL,GAChB,OAAiC,IAA1BvZ,OAAOoc,KAAK7C,GAAG1a,MACxB,CACA,SAASiiM,cAAcvnL,GACrB,OAAY,MAALA,EAAY,GAAKA,CAC1B,CACA,SAASurE,OAAOvrE,EAAGhL,GACjBgL,EAAEwnL,YAAYxyL,EAChB,CACA,SAASyyL,cAAcznL,EAAGhL,EAAGV,GAC3B,MAAMN,EAAI0zL,mBAAmB1nL,GAC7B,IAAKhM,EAAE2zL,eAAe3yL,GAAI,CACxB,MAAM20B,EAAIsuJ,QAAQ,SAClBtuJ,EAAEnxB,GAAKxD,EAAG20B,EAAEi+J,YAActzL,EAAGuzL,kBAAkB7zL,EAAG21B,EACpD,CACF,CACA,SAAS+9J,mBAAmB1nL,GAC1B,IAAKA,EACH,OAAOqnL,SACT,MAAMryL,EAAIgL,EAAE8nL,YAAc9nL,EAAE8nL,cAAgB9nL,EAAE+nL,cAC9C,OAAO/yL,GAAKA,EAAEijI,KAAOjjI,EAAIgL,EAAE+nL,aAC7B,CACA,SAASF,kBAAkB7nL,EAAGhL,GAC5Bu2E,OAAOvrE,EAAEga,MAAQha,EAAGhL,EACtB,CACA,SAASqiE,OAAOr3D,EAAGhL,EAAGV,GACpB0L,EAAEgoL,aAAahzL,EAAGV,GAAK,KACzB,CACA,SAAS2zL,OAAOjoL,GACdA,EAAEkoL,WAAWC,YAAYnoL,EAC3B,CACA,SAASooL,aAAapoL,EAAGhL,GACvB,IAAK,IAAIV,EAAI,EAAGA,EAAI0L,EAAE1a,OAAQgP,GAAK,EACjC0L,EAAE1L,IAAM0L,EAAE1L,GAAG0E,EAAEhE,EACnB,CACA,SAASijL,QAAQj4K,GACf,OAAOqnL,SAAS11G,cAAc3xE,EAChC,CACA,SAAS6R,KAAK7R,GACZ,OAAOqnL,SAASgB,eAAeroL,EACjC,CACA,SAAS6+B,QACP,OAAOhtB,KAAK,IACd,CACA,SAASuiH,OAAOp0H,EAAGhL,EAAGV,EAAGN,GACvB,OAAOgM,EAAEmM,iBAAiBnX,EAAGV,EAAGN,GAAI,IAAMgM,EAAEytI,oBAAoBz4I,EAAGV,EAAGN,EACxE,CACA,SAASs0L,KAAKtoL,EAAGhL,EAAGV,GACb,MAALA,EAAY0L,EAAEuoL,gBAAgBvzL,GAAKgL,EAAEwoL,aAAaxzL,KAAOV,GAAK0L,EAAEyoL,aAAazzL,EAAGV,EAClF,CACA,SAAS+6E,SAASrvE,GAChB,OAAOpS,MAAM3F,KAAK+X,EAAE0oL,WACtB,CACA,SAASC,SAAS3oL,EAAGhL,GACnBA,EAAI,GAAKA,EAAGgL,EAAE4oL,YAAc5zL,IAAMgL,EAAE5Y,KAAO4N,EAC7C,CAEA,SAAS6zL,sBAAsB7oL,GAC7BmnL,kBAAoBnnL,CACtB,CACA,SAAS8oL,wBACP,IAAK3B,kBACH,MAAM,IAAI7/L,MAAM,oDAClB,OAAO6/L,iBACT,CACA,SAAS4B,QAAQ/oL,GACf8oL,wBAAwBE,GAAGC,SAASl+L,KAAKiV,EAC3C,CACA,MAAMkpL,iBAAmB,GAAIC,kBAAoB,GAAIC,iBAAmB,GAAIC,gBAAkB,GAAIC,iBAAmBxhM,QAAQC,UAC7H,IAAIwhM,kBAAmB,EACvB,SAASC,kBACPD,mBAAqBA,kBAAmB,EAAID,iBAAiB78L,KAAKowB,OACpE,CACA,SAAS4sK,oBAAoBzpL,GAC3BopL,iBAAiBr+L,KAAKiV,EACxB,CACA,MAAM0pL,eAAiC,IAAIr7K,IAC3C,IAAIs7K,SAAW,EACf,SAAS9sK,QACP,MAAM7c,EAAImnL,kBACV,EAAG,CACD,KAAOwC,SAAWT,iBAAiB5jM,QAAU,CAC3C,MAAM0P,EAAIk0L,iBAAiBS,UAC3BA,WAAYd,sBAAsB7zL,GAAIxN,OAAOwN,EAAEg0L,GACjD,CACA,IAAKH,sBAAsB,MAAOK,iBAAiB5jM,OAAS,EAAGqkM,SAAW,EAAGR,kBAAkB7jM,QAC7F6jM,kBAAkBrwL,KAAlBqwL,GACF,IAAK,IAAIn0L,EAAI,EAAGA,EAAIo0L,iBAAiB9jM,OAAQ0P,GAAK,EAAG,CACnD,MAAMV,EAAI80L,iBAAiBp0L,GAC3B00L,eAAe35K,IAAIzb,KAAOo1L,eAAe1jM,IAAIsO,GAAIA,IACnD,CACA80L,iBAAiB9jM,OAAS,CAC5B,OAAS4jM,iBAAiB5jM,QAC1B,KAAO+jM,gBAAgB/jM,QACrB+jM,gBAAgBvwL,KAAhBuwL,GACFE,kBAAmB,EAAIG,eAAejK,QAASoJ,sBAAsB7oL,EACvE,CACA,SAASxY,OAAOwY,GACd,GAAmB,OAAfA,EAAE4pL,SAAmB,CACvB5pL,EAAExY,SAAUu/L,QAAQ/mL,EAAE6pL,eACtB,MAAM70L,EAAIgL,EAAE8pL,MACZ9pL,EAAE8pL,MAAQ,EAAE,GAAI9pL,EAAE4pL,UAAY5pL,EAAE4pL,SAAS5vL,EAAEgG,EAAE01B,IAAK1gC,GAAIgL,EAAE+pL,aAAav3L,QAAQi3L,oBAC/E,CACF,CACA,MAAMO,SAA2B,IAAI37K,IACrC,SAAS47K,cAAcjqL,EAAGhL,GACxBgL,GAAKA,EAAEvR,IAAMu7L,SAASn/K,OAAO7K,GAAIA,EAAEvR,EAAEuG,GACvC,CACA,SAASk1L,gBAAgBlqL,EAAGhL,EAAGV,EAAGN,GAChC,MAAQ41L,SAAUjgK,EAAGs/J,SAAU90L,EAAGg2L,WAAY17L,EAAGs7L,aAAc71L,GAAM8L,EAAEgpL,GACvEr/J,GAAKA,EAAE5tB,EAAE/G,EAAGV,GAAIN,GAAKy1L,qBAAoB,KACvC,MAAM50L,EAAIV,EAAEhI,IAAI06L,KAAK5vG,OAAO+vG,aAC5Bv4L,EAAIA,EAAE1D,QAAQ8J,GAAKkyL,QAAQlyL,GAAImL,EAAEgpL,GAAGC,SAAW,EAAE,IAC/C/0L,EAAE1B,QAAQi3L,oBAChB,CACA,SAASW,kBAAkBpqL,EAAGhL,GAC5B,MAAMV,EAAI0L,EAAEgpL,GACG,OAAf10L,EAAEs1L,WAAsB7C,QAAQzyL,EAAE61L,YAAa71L,EAAEs1L,UAAYt1L,EAAEs1L,SAAS5wL,EAAEhE,GAAIV,EAAE61L,WAAa71L,EAAEs1L,SAAW,KAAMt1L,EAAEohC,IAAM,GAC1H,CACA,SAAS20J,WAAWrqL,EAAGhL,IACF,IAAnBgL,EAAEgpL,GAAGc,MAAM,KAAcZ,iBAAiBn+L,KAAKiV,GAAIwpL,kBAAmBxpL,EAAEgpL,GAAGc,MAAMp1K,KAAK,IAAK1U,EAAEgpL,GAAGc,MAAM90L,EAAI,GAAK,IAAM,GAAKA,EAAI,EAChI,CACA,SAASs1L,OAAOtqL,EAAGhL,EAAGV,EAAGN,EAAG21B,EAAGx1B,EAAG1F,GAAa,IAAVyF,EAAC7O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAE,GACzC,MAAMwP,EAAIsyL,kBACV0B,sBAAsB7oL,GACtB,MAAM/K,EAAI+K,EAAEgpL,GAAK,CACfY,SAAU,KACVl0J,IAAK,KACL04C,MAAOj6E,EACP3M,OAAQ+gH,KACRgiF,UAAW5gK,EACX6gK,MAAO1D,eACPmC,SAAU,GACVkB,WAAY,GACZM,cAAe,GACfZ,cAAe,GACfE,aAAc,GACd17G,QAAS,IAAI7oE,IAAIxQ,EAAEq5E,UAAYx5E,EAAIA,EAAEm0L,GAAG36G,QAAU,KAClDq8G,UAAW5D,eACXgD,MAAO51L,EACPy2L,YAAY,EACZ1sH,KAAMjpE,EAAE1F,QAAUuF,EAAEm0L,GAAG/qH,MAEzBxvE,GAAKA,EAAEwG,EAAEgpE,MACT,IAAIjlC,GAAI,EACR,GAAI/jC,EAAEygC,IAAMphC,EAAIA,EAAE0L,EAAGhL,EAAEo5E,OAAS,CAAC,GAAG,SAACp1E,EAAG+C,GACtC,MAAMkZ,IAAI5vB,UAAAC,QAAA,IAAAD,UAAAC,OAAA,EAAAD,UAAAC,QAAA,OAAAC,EAAAF,UAAA,GAAkB0W,EAC5B,OAAO9G,EAAEygC,KAAO/L,EAAE10B,EAAEygC,IAAI18B,GAAI/D,EAAEygC,IAAI18B,GAAKic,MAAQhgB,EAAE01L,YAAc11L,EAAEu1L,MAAMxxL,IAAM/D,EAAEu1L,MAAMxxL,GAAGic,GAAI+jB,GAAKqxJ,WAAWrqL,EAAGhH,IAAK+C,CACtH,IAAK,GAAI9G,EAAEzN,SAAUwxC,GAAI,EAAI+tJ,QAAQ9xL,EAAE40L,eAAgB50L,EAAE20L,WAAW51L,GAAIA,EAAEiB,EAAEygC,KAAW1gC,EAAE1F,OAAQ,CAC/F,GAAI0F,EAAE41L,QAAS,CACb,MAAM5xL,EAAIq2E,SAASr6E,EAAE1F,QACrB2F,EAAE20L,UAAY30L,EAAE20L,SAAS30L,EAAE+D,GAAIA,EAAExG,QAAQy1L,OAC3C,MACEhzL,EAAE20L,UAAY30L,EAAE20L,SAAS/0L,IAC3BG,EAAE61L,OAASZ,cAAcjqL,EAAEgpL,GAAGY,UAAWM,gBAAgBlqL,EAAGhL,EAAE1F,OAAQ0F,EAAE81L,OAAQ91L,EAAE+1L,eAAgBluK,OACpG,CACAgsK,sBAAsBh0L,EACxB,CACA,MAAMm2L,gBACJC,QAAAA,GACEb,kBAAkB3mM,KAAM,GAAIA,KAAKwnM,SAAW1iF,IAC9C,CACA2iF,GAAAA,CAAIl2L,EAAGV,GACL,MAAMN,EAAIvQ,KAAKulM,GAAG0B,UAAU11L,KAAOvR,KAAKulM,GAAG0B,UAAU11L,GAAK,IAC1D,OAAOhB,EAAEjJ,KAAKuJ,GAAI,KAChB,MAAMq1B,EAAI31B,EAAEgE,QAAQ1D,IACb,IAAPq1B,GAAY31B,EAAEiH,OAAO0uB,EAAG,EAAE,CAE9B,CACAwhK,IAAAA,CAAKn2L,GACHvR,KAAK2nM,QAAU9D,SAAStyL,KAAOvR,KAAKulM,GAAG2B,YAAa,EAAIlnM,KAAK2nM,MAAMp2L,GAAIvR,KAAKulM,GAAG2B,YAAa,EAC9F,EAEF,SAASU,QAAQrrL,GACfynL,cAAcznL,EAAG,iBAAkB,q9QAGrC,CACA,SAASsrL,iBAAiBtrL,EAAGhL,EAAGV,GAC9B,MAAMN,EAAIgM,EAAE7O,QACZ,OAAO6C,EAAE,IAAMgB,EAAEV,GAAIN,CACvB,CACA,SAASu3L,mBAAmBvrL,EAAGhL,EAAGV,GAChC,MAAMN,EAAIgM,EAAE7O,QACZ,OAAO6C,EAAE,IAAMgB,EAAEV,GAAIN,CACvB,CACA,SAASw3L,kBAAkBxrL,GACzB,IAAIhL,EAAGV,EACP,MAAO,CACLO,CAAAA,GACEG,EAAIijL,QAAQ,OAAQqQ,KAAKtzL,EAAG,MAAOgL,EAAE,IAAI3K,MAAO+xL,cAAcpyL,EAAEynB,IAAKnoB,EAAI0L,EAAE,IAAIkrG,OAASo9E,KAAKtzL,EAAG,MAAOV,GAAIg0L,KAAKtzL,EAAG,QAAS,sCAC9H,EACA+G,CAAAA,CAAE/H,EAAG21B,GACH0tC,OAAOrjE,EAAGgB,EAAG20B,EACf,EACA3vB,EAAGuuG,KACHvvG,CAAAA,CAAEhF,GACAA,GAAKi0L,OAAOjzL,EACd,EAEJ,CACA,SAASy2L,gBAAgBzrL,GACvB,IAAIhL,EACJ,MAAO,CACLH,CAAAA,GACEG,EAAIijL,QAAQ,OAAQjjL,EAAE02L,UAAY,y1CAC+BpD,KAAKtzL,EAAG,OAAQ,UAAWszL,KAAKtzL,EAAG,QAAS,iBAC/G,EACA+G,CAAAA,CAAEzH,EAAGN,GACHqjE,OAAO/iE,EAAGU,EAAGhB,EACf,EACAgG,EAAGuuG,KACHvvG,CAAAA,CAAE1E,GACAA,GAAK2zL,OAAOjzL,EACd,EAEJ,CACA,SAAS22L,oBAAoB3rL,GAC3B,IAAIhL,EAAwBhB,EAAG21B,EAAGx1B,EAAG1F,EAA9B6F,EAAI0L,EAAE,IAAI3K,KAAO,GACxB,SAASnB,EAAE6H,EAAGq4B,GACZ,OAAOr4B,EAAE,KAAOA,EAAE,IAAIvD,GAAKizL,gBAAkBD,iBAC/C,CACA,IAAI32L,EAAIX,EAAE8L,GAAI/K,EAAIJ,EAAEmL,GACpB,SAASg5B,IACP,OAAOh5B,EAAE,IAAIA,EAAE,IACjB,CACA,SAAShH,IAAQ,QAAAtL,EAAArI,UAAAC,OAAHyW,EAAC,IAAAnO,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAADkO,EAAClO,GAAAxI,UAAAwI,GACb,OAAOmS,EAAE,IAAIA,EAAE,OAAQjE,EACzB,CACA,MAAO,CACLlH,CAAAA,GACEG,EAAIijL,QAAQ,MAAOjkL,EAAI6d,KAAKvd,GAAIq1B,EAAIkV,QAAS5pC,EAAEJ,IAAKyzL,KAAKtzL,EAAG,QAAS,mOACvE,EACA+G,CAAAA,CAAEA,EAAGq4B,GACHijC,OAAOt7D,EAAG/G,EAAGo/B,GAAIm3C,OAAOv2E,EAAGhB,GAAIu3E,OAAOv2E,EAAG20B,GAAI10B,EAAE8G,EAAE/G,EAAG,MAAOb,IAAM1F,EAAI,CACnE2lI,OAAOp/H,EAAG,QAASgkC,GACnBo7F,OAAOp/H,EAAG,QAASgE,IAClB7E,GAAI,EACT,EACA6F,CAAAA,CAAE+B,EAAGq4B,GACIv/B,KAAOA,EAAIX,EAAlB8L,EAAIjE,KAAuB9G,EAAIA,EAAE+E,EAAEgG,EAAGo0B,IAAMn/B,EAAE+D,EAAE,GAAI/D,EAAIJ,EAAEmL,GAAI/K,IAAMA,EAAEJ,IAAKI,EAAE8G,EAAE/G,EAAG,OACpF,EACAgE,CAAAA,CAAE+C,GACAA,GAAKksL,OAAOjzL,GAAIC,EAAE+D,IAAK7E,GAAI,EAAI4yL,QAAQt4L,EACzC,EAEJ,CACA,SAASm9L,kBAAkB5rL,GACzB,IAAIhL,EAAGV,EAAwBq1B,EAAGx1B,EAAG1F,EAAGyF,EAAGW,EAAGI,EAAG+jC,EAAGhgC,EAAG+C,EAAGq4B,EAAhDpgC,EAAIgM,EAAE,IAAI3K,KAAO,GAC3B,MAAO,CACLR,CAAAA,GACEG,EAAIijL,QAAQ,KAAM3jL,EAAI2jL,QAAQ,MAAOtuJ,EAAI9X,KAAK7d,GAAIG,EAAI0qC,QAASpwC,EAAIwpL,QAAQ,OAAQhjL,EAAI4pC,QAASypJ,KAAK75L,EAAG,MAAOyF,EAAI8L,EAAE,IAAI3K,MAAO+xL,cAAc34L,EAAEguB,IAAK5nB,EAAImL,EAAE,IAAIkrG,OAASo9E,KAAK75L,EAAG,MAAOoG,GAAIyzL,KAAK75L,EAAG,QAAS,uCAAwC65L,KAAKh0L,EAAG,QAAS,oOAAqOg0L,KAAKtzL,EAAG,MAAOgkC,EAAIh5B,EAAE,IAAI3K,KAAO,kBAAmBizL,KAAKtzL,EAAG,OAAQgE,EAAIgH,EAAE,IAAI6rL,UAAWvD,KAAKtzL,EAAG,SAAU,UAAWszL,KAAKtzL,EAAG,MAAO,uBAAwBszL,KAAKtzL,EAAG,QAAS,iBACzpB,EACA+G,CAAAA,CAAEkZ,EAAGvgB,GACH2iE,OAAOpiD,EAAGjgB,EAAGN,GAAI62E,OAAOv2E,EAAGV,GAAIi3E,OAAOj3E,EAAGq1B,GAAI4hD,OAAOj3E,EAAGH,GAAIo3E,OAAOj3E,EAAG7F,GAAI88E,OAAOv2E,EAAGC,GAAI8G,IAAMq4B,EAAI,CAC/FggG,OAAO9/H,EAAG,QAAS0L,EAAE,KACrBo0H,OAAO9/H,EAAG,QAAS0L,EAAE,MACpBjE,GAAI,EACT,EACA/B,CAAAA,CAAEib,EAAGvgB,GACC,EAAJA,GAASV,KAAOA,EAAIihB,EAAE,IAAI5f,KAAO,KAAOszL,SAASh/J,EAAG31B,GAAQ,EAAJU,GAASR,KAAOA,EAAI+gB,EAAE,IAAI5f,OAASizL,KAAK75L,EAAG,MAAOyF,GAAQ,EAAJQ,IAAU0yL,cAAc34L,EAAEguB,IAAK5nB,EAAIogB,EAAE,IAAIi2F,OAASo9E,KAAK75L,EAAG,MAAOoG,GAAQ,EAAJH,GAASskC,KAAOA,EAAI/jB,EAAE,IAAI5f,KAAO,mBAAqBizL,KAAKtzL,EAAG,MAAOgkC,GAAQ,EAAJtkC,GAASsE,KAAOA,EAAIic,EAAE,IAAI42K,WAAavD,KAAKtzL,EAAG,OAAQgE,EACrT,EACAA,CAAAA,CAAEic,GACAA,GAAKgzK,OAAOjzL,GAAI+G,GAAI,EAAIgrL,QAAQ3yJ,EAClC,EAEJ,CACA,SAAS03J,gBAAgB9rL,GACvB,IAAIhL,EAAGV,EAAGN,EAAG21B,EAAGx1B,EAAG1F,EAAGyF,EAAGW,EAAGI,EAAG+jC,EAAGhgC,EAAG+C,EAAGq4B,EAAIp0B,EAAE,GAAIiV,EAAI,GACtD,IAAK,IAAIjb,EAAI,EAAGA,EAAIo6B,EAAE9uC,OAAQ0U,GAAK,EACjCib,EAAEjb,GAAK2xL,oBAAoBJ,mBAAmBvrL,EAAGo0B,EAAGp6B,IACtD,IAAItF,EAAIsL,EAAE,GAAIolB,EAAI,GAClB,IAAK,IAAIprB,EAAI,EAAGA,EAAItF,EAAEpP,OAAQ0U,GAAK,EACjCorB,EAAEprB,GAAK4xL,kBAAkBN,iBAAiBtrL,EAAGtL,EAAGsF,IAClD,MAAO,CACLnF,CAAAA,GACEG,EAAIijL,QAAQ,OAAQ3jL,EAAI2jL,QAAQ,QAASjkL,EAAIikL,QAAQ,UAAWtuJ,EAAIsuJ,QAAQ,MAAOtuJ,EAAEi+J,YAAc,mBAAoBzzL,EAAI0qC,QAASpwC,EAAIwpL,QAAQ,QAASxpL,EAAEi9L,UAAY,iSAAkSx3L,EAAI2qC,QAAShqC,EAAIojL,QAAQ,MACle,IAAK,IAAIj+K,EAAI,EAAGA,EAAIib,EAAE3vB,OAAQ0U,GAAK,EACjCib,EAAEjb,GAAGnF,IACPI,EAAI4pC,QACJ,IAAK,IAAI7kC,EAAI,EAAGA,EAAIorB,EAAE9/B,OAAQ0U,GAAK,EACjCorB,EAAEprB,GAAGnF,IACPyzL,KAAK3+J,EAAG,QAAS,0BAA2B2+J,KAAK75L,EAAG,OAAQ,UAAW65L,KAAK75L,EAAG,MAAO,SAAU65L,KAAK75L,EAAG,QAAS,iCAAkC65L,KAAKt0L,EAAG,QAAS,yDAA0Ds0L,KAAKzzL,EAAG,QAAS,sCAAuCyzL,KAAKh0L,EAAG,OAAQ,UAAWg0L,KAAKh0L,EAAG,QAASizL,cAAc,oHAAsH,mBAAoBe,KAAKtzL,EAAG,QAASgkC,EAAIuuJ,cAAc,oFAAsFvnL,EAAE,IAAM,kBAC7lB,EACAjE,CAAAA,CAAE/B,EAAG2zC,GACH0pB,OAAOr9D,EAAGhF,EAAG24C,GAAI49B,OAAOv2E,EAAGV,GAAIi3E,OAAOj3E,EAAGN,GAAIu3E,OAAOv3E,EAAG21B,GAAI4hD,OAAOv3E,EAAGG,GAAIo3E,OAAOv3E,EAAGvF,GAAI88E,OAAOj3E,EAAGJ,GAAIq3E,OAAOj3E,EAAGO,GAC/G,IAAK,IAAIu6E,EAAI,EAAGA,EAAIn6D,EAAE3vB,OAAQ8pF,GAAK,EACjCn6D,EAAEm6D,GAAGrzE,EAAElH,EAAG,MACZ02E,OAAO12E,EAAGI,GACV,IAAK,IAAIm6E,EAAI,EAAGA,EAAIhqD,EAAE9/B,OAAQ8pF,GAAK,EACjChqD,EAAEgqD,GAAGrzE,EAAElH,EAAG,MACZmE,IAAM+C,EAAI,CACRq4H,OAAO3lI,EAAG,QAASuR,EAAE,KACrBo0H,OAAO3lI,EAAG,QAASuR,EAAE,KACrBo0H,OAAO9/H,EAAG,QAASy3L,iBACnB33D,OAAO9/H,EAAG,QAAS03L,iBACnB53D,OAAOp/H,EAAG,QAASgL,EAAE,KACrBo0H,OAAOp/H,EAAG,QAASgL,EAAE,MACpBhH,GAAI,EACT,EACAgB,CAAAA,CAAEA,EAACquF,GAAO,IAAJ16C,GAAE06C,EACN,GAAQ,GAAJ16C,EAAQ,CAEV,IAAIyhC,EACJ,IAFAh7C,EAAIp6B,EAAE,GAEDo1E,EAAI,EAAGA,EAAIh7C,EAAE9uC,OAAQ8pF,GAAK,EAAG,CAChC,MAAMj7C,EAAIo3J,mBAAmBvxL,EAAGo6B,EAAGg7C,GACnCn6D,EAAEm6D,GAAKn6D,EAAEm6D,GAAGp1E,EAAEm6B,EAAGwZ,IAAM14B,EAAEm6D,GAAKu8G,oBAAoBx3J,GAAIlf,EAAEm6D,GAAGv6E,IAAKogB,EAAEm6D,GAAGrzE,EAAElH,EAAGI,GAC5E,CACA,KAAOm6E,EAAIn6D,EAAE3vB,OAAQ8pF,GAAK,EACxBn6D,EAAEm6D,GAAGp2E,EAAE,GACTic,EAAE3vB,OAAS8uC,EAAE9uC,MACf,CACA,GAAQ,EAAJqoD,EAAO,CAET,IAAIyhC,EACJ,IAFA16E,EAAIsF,EAAE,GAEDo1E,EAAI,EAAGA,EAAI16E,EAAEpP,OAAQ8pF,GAAK,EAAG,CAChC,MAAMj7C,EAAIm3J,iBAAiBtxL,EAAGtF,EAAG06E,GACjChqD,EAAEgqD,GAAKhqD,EAAEgqD,GAAGp1E,EAAEm6B,EAAGwZ,IAAMvoB,EAAEgqD,GAAKw8G,kBAAkBz3J,GAAI/O,EAAEgqD,GAAGv6E,IAAKuwB,EAAEgqD,GAAGrzE,EAAElH,EAAG,MAC1E,CACA,KAAOu6E,EAAIhqD,EAAE9/B,OAAQ8pF,GAAK,EACxBhqD,EAAEgqD,GAAGp2E,EAAE,GACTosB,EAAE9/B,OAASoP,EAAEpP,MACf,CACI,EAAJqoD,GAAS3U,KAAOA,EAAIuuJ,cAAc,oFAAsFvtL,EAAE,IAAM,oBAAsBsuL,KAAKtzL,EAAG,QAASgkC,EACzK,EACAvqC,EAAG85G,KACH5+E,EAAG4+E,KACHvvG,CAAAA,CAAEgB,GACAA,GAAKiuL,OAAOjzL,GAAIozL,aAAanzK,EAAGjb,GAAIouL,aAAahjK,EAAGprB,GAAIhB,GAAI,EAAI+tL,QAAQhrL,EAC1E,EAEJ,CACA,MAAMgwL,gBAAmB/rL,GAAMA,EAAEisL,kBAAmBD,gBAAmBhsL,GAAMA,EAAEisL,kBAC/E,SAASlpC,SAAS/iJ,EAAGhL,EAAGV,GACtB,MAAMN,SAAWqmB,OAAS,IAAMA,OAAS,KACzC,IAAM6xK,WAAYviK,EAAI,MAAS30B,GAAKm3L,iBAAkBh4L,EAAI,IAAOa,GAAKo3L,kBAAmB39L,EAAI,IAAOuG,GAAKq3L,iBAAkBn4L,EAAI,IAAOc,GAAKy3F,SAAU53F,EAAI/B,aACnJkC,GAAKs3L,MAAOr3L,EAAI,MAASD,EAAGgkC,GAAI,EAAIhgC,EAAIlG,UAC5C,IAAIkhC,EACJ1/B,EAAE,EAAG0kC,EAAuC,OAAlChF,EAAS,MAALr/B,OAAY,EAASA,EAAE6D,KAAcw7B,SAAen/B,EAAEF,GAAG0R,OAAM,SACzE/R,EAAE,EAAG0kC,GAAI,EAAG,EACfj9B,EAAI,GACqGA,EAAtG,SAAN9G,GAAsB,OAANA,IAAoB,MAALjB,OAAY,EAASA,EAAEu4L,WAAW,gCAAgCrrI,SAAe,OAAa,GAC7H,MAAM9sB,EAAKz/B,IACTL,EAAE,EAAGyH,EAAIpH,EAAEusD,QAAU,OAAS,GAAG,EAEnC6nI,SAAQ,KACN,GAAU,OAAN9zL,EACF,OAAY,MAALjB,GAAaA,EAAEu4L,WAAW,gCAAgCpgL,iBAAiB,SAAUioB,GAAI,KACzF,MAALpgC,GAAaA,EAAEu4L,WAAW,gCAAgC9+C,oBAAoB,SAAUr5G,EAAE,CAC3F,IAEL,MAAMnf,EAAI,CAAC0U,KAAMl7B,KAAM0F,GAAG8iF,OAAOqpC,SASjC,OAAOtgH,EAAEorL,MAASz2L,IAChB,eAAgBA,GAAKL,EAAE,EAAGq1B,EAAIh1B,EAAEu3L,YAAa,qBAAsBv3L,GAAKL,EAAE,EAAGH,EAAIQ,EAAEw3L,kBAAmB,sBAAuBx3L,GAAKL,EAAE,EAAG7F,EAAIkG,EAAEy3L,mBAAoB,qBAAsBz3L,GAAKL,EAAE,EAAGJ,EAAIS,EAAE03L,kBAAmB,aAAc13L,GAAKL,EAAE,EAAGO,EAAIF,EAAE83F,UAAW,UAAW93F,GAAKL,EAAE,EAAGW,EAAIN,EAAE23L,MAAM,EACnS,CACDp4L,EACA8kC,EACAj9B,EACA/C,EACAic,EACA0U,EACAx1B,EACA1F,EACAoG,EACAI,EArB6CP,IAAMsE,EAAE,MAAYrE,IACvD,UAAVA,EAAElH,KAAmBuL,EAAE,KAAK,EACtBrE,GAAMqE,EAAErE,GAAQg5C,CAACh5C,EAAGq/B,KAChB,UAAVA,EAAEvmC,KAAmBuL,EAAErE,EAAE,EACpBy6E,IAAMp2E,EAAE,MAAYrE,IACf,UAAVA,EAAElH,KAAmBuL,EAAE,KAAK,EACvBvE,IAAMuE,EAAE,MAAYrE,IACf,WAAVA,EAAElH,KAAoBuL,EAAE,KAAK,EAwBjC,CACA,MAAMwzL,cAAcxB,gBAClBt5L,WAAAA,CAAYsD,GACVnL,QAASygM,OACP7mM,KACAuR,EACA+tJ,SACA+oC,gBACA7E,eACA,CACEiF,WAAY,EACZC,iBAAkB,EAClBC,kBAAmB,EACnBC,iBAAkB,EAClB5/F,SAAU,EACV6/F,MAAO,GAETjB,QAEJ,EAEF,SAASoB,eAAezsL,EAAGhL,GACzB,OAAOgL,EAAEi3E,QAAQ3iF,IAAOU,EAAE+hB,MAAM/iB,GAAMA,EAAEwE,KAAOlE,EAAEkE,MACnD,CACA1F,eAAe45L,KAAIlkG,GAOhB,IAND6jG,iBAAkBrsL,EAClBmsL,iBAAkBn3L,EAClBk3L,WAAY53L,EACZ83L,kBAAmBp4L,EACnB24L,OAAQhjK,EACRijK,aAAcz4L,GACfq0F,EACC,OAAO,IAAI1gG,SAAS2G,IAClB,IAAIwG,EACJ,MAAMf,EAAI,CAACI,GAAG2iF,OAAOqpC,SACrBtsH,EAAIy4L,eAAez4L,EAAGE,GAAIc,EAAIy3L,eAAez3L,EAAG,IAC3Cd,KACAF,IACDgM,EAAIysL,eAAezsL,EAAG,IACrB9L,KACAc,KACAhB,IAEL,MAAMa,EAAI,IAAI23L,MAAM,CAClBl9L,OAAQ+3L,SAAS33K,KACjB0+D,MAAO,CACLqe,SAAU35F,UACR,IAAIiJ,EACJ,MAAM/C,EAA+C,OAA1C+C,QAAgB,MAAL4tB,OAAY,EAASA,EAAEqP,KAAej9B,EAAIi9B,EAChEnkC,EAAEo2L,WAAYx8L,EAAEuK,EAAE,EAEpBkzL,WAAY53L,EACZ63L,iBAAkBn3L,EAClBo3L,kBAAmBp4L,EACnBq4L,iBAAkBrsL,EAClBssL,MAA0C,YAA7B,MAALn4L,OAAY,EAASA,EAAEm4L,OAAsB,KAA6C,OAArCr3L,EAAS,MAALd,OAAY,EAASA,EAAEm4L,OAAiBr3L,EAAI,OAE/G,GAEN,CACA,IAAI43L,GAAKpmM,OAAOC,eAAgBgS,GAAKA,CAACsH,EAAGhL,EAAGV,IAAMU,KAAKgL,EAAI6sL,GAAG7sL,EAAGhL,EAAG,CAAEmrB,YAAY,EAAI+4B,cAAc,EAAID,UAAU,EAAItyD,MAAO2N,IAAO0L,EAAEhL,GAAKV,EAAG4uB,EAAIA,CAACljB,EAAGhL,EAAGV,KAAOoE,GAAGsH,EAAe,iBAALhL,EAAgBA,EAAI,GAAKA,EAAGV,GAAIA,GAAIy6E,EAAIA,CAAC/uE,EAAGhL,EAAGV,KAC1N,IAAKU,EAAE+a,IAAI/P,GACT,MAAM0iB,UAAU,UAAYpuB,EAAE,EAC/B46B,EAAIA,CAAClvB,EAAGhL,EAAGV,KAAOy6E,EAAE/uE,EAAGhL,EAAG,2BAA4BV,EAAIA,EAAEiG,KAAKyF,GAAKhL,EAAE3F,IAAI2Q,IAAK4vE,EAAIA,CAAC5vE,EAAGhL,EAAGV,KAC7F,GAAIU,EAAE+a,IAAI/P,GACR,MAAM0iB,UAAU,qDAClB1tB,aAAa4hH,QAAU5hH,EAAEhP,IAAIga,GAAKhL,EAAE+E,IAAIiG,EAAG1L,EAAE,EAC5C2/B,EAAIA,CAACj0B,EAAGhL,EAAGV,EAAGN,KAAO+6E,EAAE/uE,EAAGhL,EAAG,0BAA2BhB,EAAIA,EAAEuG,KAAKyF,EAAG1L,GAAKU,EAAE+E,IAAIiG,EAAG1L,GAAIA,GAAIk0C,EAAIA,CAACxoC,EAAGhL,EAAGV,KAAOy6E,EAAE/uE,EAAGhL,EAAG,yBAA0BV,GACnJ,MAAMw4L,YAAcA,IAAM,GAAGx8K,KAAKC,SAAS1jB,KAAKC,MAAsB,cAAhBD,KAAK6N,UAA4B,OAAQqyL,QAAW/sL,IACxG,IAAK,IAAIhL,EAAIgL,EAAE1a,OAAS,EAAG0P,EAAI,EAAGA,IAAK,CACrC,MAAMV,EAAIzH,KAAKC,MAAMD,KAAK6N,UAAY1F,EAAI,KACzCgL,EAAEhL,GAAIgL,EAAE1L,IAAM,CAAC0L,EAAE1L,GAAI0L,EAAEhL,GAC1B,CACA,OAAOgL,CAAC,EACPgtL,OAAS,mBAAA1gL,EAAAjnB,UAAAC,OAAI0a,EAAC,IAAApS,MAAA0e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAADvM,EAACuM,GAAAlnB,UAAAknB,GAAA,OAAMvX,GAAMgL,EAAEtT,QAAO,CAAC4H,EAAGN,IAAMM,EAAE7H,KAAKuH,IAAIlM,QAAQC,QAAQiN,GAAG,EAC9E,SAASi4L,gBAAgBjtL,GACvB,OAAOvZ,OAAOoc,KAAK7C,EACrB,CACA,MAAMktL,uBAAyB7yK,OAAS,IAAMA,OAAS,KACvD,SAAS8yK,eACP,cAAcC,4BAA8B,IAAMA,4BAA8B,EAClF,CACA,SAASC,gBACP,OAAO/sE,QAAQ,GACjB,CACA,SAASgtE,iBACP,cAAcjzK,OAAS,GACzB,CACA,MAAMkzK,eAAiB,yBACvB,SAASjqK,OAAOtjB,EAAGhL,GACjBgL,GAAKsG,MAAMtR,EACb,CACA,SAASsR,MAAMtG,GACb,MAAMA,aAAa1Y,OAAS0Y,EAAE0R,QAAU,GAAG67K,mBAAmBvtL,EAAE0R,UAAW1R,GAAK,IAAI1Y,MAAM,GAAGimM,mBAAmBvtL,IAClH,CACA,SAASwtL,OAAOxtL,GACdA,aAAa1Y,OAAS0Y,EAAE0R,QAAU,GAAG67K,mBAAmBvtL,EAAE0R,UAAWrF,QAAQG,KAAKxM,IAAMqM,QAAQG,KAAK,GAAG+gL,mBAAmBvtL,IAC7H,CACA,SAASytL,cAAcztL,EAAGhL,GACxB,OAAwC,IAAjCgL,EAAEyrE,WAAWn3E,GAAMA,IAAMU,KAAagL,EAAEjV,KAAKiK,GAAIgL,CAC1D,CACA,SAAS0tL,QAAQ1tL,GACf,MAAO,YAAaA,GAAKA,EAAEkwC,QAAU,GAAGlwC,EAAE3K,QAAQ2K,EAAEkwC,UAAY,UAAWlwC,GAAKA,EAAEihK,MAAQ,GAAGjhK,EAAE3K,QAAQ2K,EAAEihK,QAAU,GAAGjhK,EAAE3K,MAC1H,CACA,SAASs4L,sBAAsB3tL,GAC7B,cAAcA,EAAEihK,MAAQ,GAC1B,CACA,SAAS2sB,kBAAkB5tL,GACzB,OAAQA,EAAEihK,MAAM19H,SAAS,UAAYvjC,EAAEihK,MAAM19H,SAAS,MACxD,CACA,SAASsqJ,eAAe7tL,GACtB,IACE,OAAOoR,KAAKC,UAAUrR,EAAG,KAAM,EACjC,CAAE,MACA,MAAO,EACT,CACF,CACA,SAASg4H,SAASh4H,GAChB,OAAOA,GAAiB,iBAALA,CACrB,CACA,MAAMq2G,eAAiB5vH,OAAO4H,UAAUnG,SACxC,SAASosJ,cAAct0I,GACrB,MAAkC,oBAA3Bq2G,eAAe97G,KAAKyF,EAC7B,CACA,SAAS8tL,eACP,OAAOA,aAAernM,OAAO0nF,QAAU,SAASnuE,GAC9C,IAAK,IAAIhL,EAAI,EAAGA,EAAI3P,UAAUC,OAAQ0P,IAAK,CACzC,IAAIV,EAAIjP,UAAU2P,GAClB,IAAK,IAAIhB,KAAKM,EACZ7N,OAAO4H,UAAU4L,eAAeM,KAAKjG,EAAGN,KAAOgM,EAAEhM,GAAKM,EAAEN,GAC5D,CACA,OAAOgM,CACT,EAAG8tL,aAAahzH,MAAMr3E,KAAM4B,UAC9B,CACA,SAAS0oM,mCAAmC/tL,EAAGhL,GAC7C,GAAS,MAALgL,EACF,MAAO,CAAC,EACV,IAAgC2pB,EAAGx1B,EAA/BG,EAAI,CAAC,EAAGN,EAAIvN,OAAOoc,KAAK7C,GAC5B,IAAK7L,EAAI,EAAGA,EAAIH,EAAE1O,OAAQ6O,IACxBw1B,EAAI31B,EAAEG,KAAMa,EAAEgD,QAAQ2xB,IAAM,KAAOr1B,EAAEq1B,GAAK3pB,EAAE2pB,IAC9C,OAAOr1B,CACT,CACA,MAAM05L,aAAe,MACnB,IACE,OAAO,IAAIpiD,SAAS,cAAb,EACT,CAAE,MACA,OAAOnC,UACT,CACD,EANoB,GAMfwkD,OAASD,aACf,SAASE,wBAAwBluL,EAAGhL,EAAGV,GACrC7N,OAAOC,eAAesZ,EAAGhL,EAAG,CAC1BrO,MAAO2N,EACP4kD,cAAc,EACdD,UAAU,GAEd,CACA,SAASk1I,mBAAmBnuL,EAAGhL,GAC7B,OAAOvO,OAAOwT,eAAeM,KAAKyF,EAAGhL,EACvC,CACAm5L,mBAAmB1kD,WAAY,oCAAsCykD,wBAAwBzkD,WAAY,kCAAmC,CAAC,GAC7I,MAAM2kD,cAAgB3kD,WAAW4kD,gCACjC,SAASC,oBAAoBtuL,GAC3B,IAAIhL,EAAGV,EAAGN,EAAG21B,EAAGx1B,EAAG1F,EACnB0/L,mBAAmBnuL,EAAG,cAAgBmuL,mBAAmBnuL,EAAG,mBAAqBkuL,wBAAwBluL,EAAG,iBAAkBA,EAAEuuL,UAAWJ,mBAAmBnuL,EAAG,oBAAsBkuL,wBAAwBluL,EAAG,iBAAkB,CAClOwuL,kBAAmB,GACnBC,cAAe,GACfC,WAAY,CAAC,EACbC,UAAW,CAAC,EACZC,qBAAsB,CAAC,EACvBC,kBAAmC,IAAIrpL,MACrC0oL,wBAAwBluL,EAAG,WAAYA,EAAE8uL,iBAA8D,OAA3C95L,EAAIgL,EAAE8uL,gBAAgBN,oBAA8Bx5L,EAAEw5L,kBAAoB,IAA6C,OAAvCl6L,EAAI0L,EAAE8uL,gBAAgBL,gBAA0Bn6L,EAAEm6L,cAAgB,IAA0C,OAApCz6L,EAAIgM,EAAE8uL,gBAAgBJ,aAAuB16L,EAAE06L,WAAa,CAAC,GAAwC,OAAnC/kK,EAAI3pB,EAAE8uL,gBAAgBH,YAAsBhlK,EAAEglK,UAAY,CAAC,GAAmD,OAA9Cx6L,EAAI6L,EAAE8uL,gBAAgBF,uBAAiCz6L,EAAEy6L,qBAAuB,CAAC,GAAgD,OAA3CngM,EAAIuR,EAAE8uL,gBAAgBD,oBAA8BpgM,EAAEogM,kBAAoC,IAAIrpL,IAChhB,CAGA,SAASupL,4BAA4B/uL,EAAGhL,GACtC,MAAMV,EAAI64L,eACV,OAAO1jD,WAAWqlD,eAAeL,cAAclwI,MAAMvqD,MAASM,GAAKN,EAAEqR,QAAQ7M,KAAO20L,gBAAkBn5L,EAAEqR,QAAQhQ,OAAS2K,IAAMhM,EAAEqR,QAAQ6qC,UAAYl7C,GAAKhB,EAAEqR,QAAQhQ,OAAS2K,GAAKhL,GAAKhB,EAAEqR,QAAQ6qC,UAAYl7C,IAC/M,CACA,SAASg6L,4BAA4BhvL,GACnCypI,WAAWqlD,eAAeL,cAAc1jM,KAAKiV,EAC/C,CACA,SAASivL,iCACP,OAAOxlD,WAAWqlD,eAAeI,qBACnC,CACA,SAASC,+BAA+BnvL,IAAI3a,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGgoM,mBACvC5jD,WAAWqlD,eAAeI,sBAAwBlvL,EAAGypI,WAAWqlD,eAAeM,8BAAgC,QACvH,CACA,SAASC,mBAAmBrvL,EAAGhL,GAC7B,GAAgB,iBAALA,EAAe,CACxB,GAAIgL,EAAEhL,GACJ,MAAO,CACLrO,MAAOqZ,EAAEhL,GACTvH,IAAKuH,GAET,CACE,MAAMV,EAAI7N,OAAOoc,KAAK7C,GACtB,IAAK,MAAMhM,KAAKM,EAAG,CACjB,MAAOq1B,EAAGx1B,GAAKH,EAAEhI,MAAM,KAAMyC,EAAI,GAAGk7B,KAAK30B,IAAKd,EAAI8L,EAAEvR,GACpD,GAAIyF,EACF,MAAO,CACLvN,MAAOuN,EACPzG,IAAKgB,EAEX,CACA,MAAO,CACL9H,WAAO,EACP8G,IAAKuH,EAET,CACF,CACE,MAAM,IAAI1N,MAAM,qBACpB,CAvCAgnM,oBAAoB7kD,YACpB6kD,oBAAoBN,cAuCpB,MAAMsB,kBAAoBA,IAAMtB,aAAac,eAAeJ,WAAYa,kCAAoCA,CAACvvL,EAAGhL,KAC9G,MAAsBhB,EAAIq7L,mBAAmBr6L,EAAnC04L,QAAQ1tL,IAAiCrZ,MACnD,GAAIqN,IAAMA,EAAEk8C,SAAW,YAAalwC,GAAKA,EAAEkwC,UAAYl8C,EAAEk8C,QAAUlwC,EAAEkwC,SAAUl8C,EAC7E,OAAOA,EACT,GAAI,YAAagM,GAAKA,EAAEkwC,QAAS,CAC/B,MAAQA,QAASvmB,GAAM3pB,EAEnBvR,EAAIi/L,QAFsBK,mCAAmC/tL,EAAG,CAClE,aACkB9L,EAAIm7L,mBAAmBrB,aAAac,eAAeJ,WAAYjgM,GAAG9H,MACtF,IAAU,MAALuN,OAAY,EAASA,EAAEg8C,WAAavmB,EACvC,OAAOz1B,CACX,GACCs7L,kCAAqCxvL,GAAMuvL,kCAAkCvvL,EAAGguL,aAAac,eAAeJ,YAAae,kCAAoCA,CAACzvL,EAAGhL,KAClK,MAAMV,EAAIo5L,QAAQ1tL,GAClB,OAAOguL,aAAac,eAAeJ,WAAWp6L,GAAKU,EAAGg5L,aAAac,eAAeJ,UAAU,EAC3FgB,kBAAqB1vL,IAAOguL,aAAac,eAAeJ,WAAaZ,aAAa,CAAC,EAAGE,aAAac,eAAeJ,WAAY1uL,GAAI,KACnI,MAAMhL,EAAIvO,OAAOoc,KAAK7C,GACtB,IAAK,MAAM1L,KAAKU,SACPg5L,aAAac,eAAeJ,WAAWp6L,EAAE,GAChDq7L,sBAAwBA,CAAC3vL,EAAGhL,KAC9B,MAAMV,EAAIU,GAAK,gBAAgBgL,aAC/B,MAAO,CACL4vL,eAAgBt7L,EAChBu7L,aAH+CpmD,WAAWn1I,GAI3D,EACAw7L,qBAAuBA,IAAM9B,aAAac,eAAeN,kBAAmBuB,aAAgB/vL,GAAMypI,WAAWqlD,eAAeD,kBAAkBx/L,IAAI2Q,GAAIgwL,aAAgBhwL,GAAMypI,WAAWqlD,eAAeD,kBAAkB90L,IAAIiG,GAAG,GAAKiwL,cAAgB,UAAWC,oBAAsB,SAAUC,gBAAkB,gBAAiBC,MAAQ,UAAUD,wBAAwBA,sBAAuBE,kBAAoB,cAAeC,uBAAyB,SAAUC,qBAAuB,6BAA8BC,0BAA4B,MAAMF,0BAA0BC,wBAAyBE,gBAAkB,SAASD,kCAAkCA,gCAAiCE,qBAAuB,MAAML,qBAAqBE,wBAAyBI,WAAa,QAAQD,6BAA6BA,2BAA4BE,iBAAmB,GAAGP,4BAA6BQ,YAAc,YAAYD,2BAA2BA,2BAA2BA,uBAAuBD,eAAeP,aAAcU,YAAc,SAASD,yBAAyBA,oBAAqBE,iBAAmB,IAAIT,8BAA8BA,8BAA8BA,0BAA2BU,WAAa,WAAWD,mBAAmBN,mBAAmBL,SAAUa,KAAO,eAAgBC,eAAiB,SAASD,YAAYD,cAAcH,eAAgBM,UAAY,UAAWC,UAAY,SAASD,gBAAiBE,UAAY,UAAWC,UAAY,SAASD,gBAAiBE,KAAO,kBAAmBC,MAAQ,IAAIH,YAAYR,eAAgBY,YAAc,IAAIpB,yBAAyBA,yBAAyBA,qBAAsBqB,UAAY,KAAKD,cAAcd,cAAcP,SAAUuB,MAAQ,IAAIR,YAAYN,eAAgBe,OAAS,IAAIX,WAAWJ,eAAgBgB,WAAa,IAAIZ,YAAYS,iBAAkBI,KAAO,wBAC7yD,SAASC,WAAW/xL,GAClB,OAAO,IAAIrP,OAAOqP,EACpB,CACA,SAASgyL,WAAWhyL,GAClB,OAAQA,GAAyB,MAApBA,EAAE3H,eAA+B,MAAN2H,CAC1C,CACA,SAASsqE,OAAW,QAAA79D,EAAApnB,UAAAC,OAAH0a,EAAC,IAAApS,MAAA6e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAD1M,EAAC0M,GAAArnB,UAAAqnB,GAChB,OAAQ1X,GAAMgL,EAAEtT,QAAO,CAAC4H,EAAGN,IAAMA,EAAEM,IAAIU,EACzC,CACA,SAASi9L,kBAAkBjyL,GACzB,OAAOA,EAAEi2D,MAAM87H,WAAWF,YAC5B,CACA,SAASK,eAAelyL,EAAGhL,EAAGV,EAAGN,GAC/B,MAAM21B,EAAI,GAAG3pB,KAAKhL,KAAKV,IACvB,OAAON,EAAI,GAAG21B,KAAK31B,IAAM21B,CAC3B,CACA,SAASwoK,YAAYnyL,GACnB,OAAOA,EAAEvP,QAAQshM,WAAWjB,cAAc,CAAC97L,EAAGV,EAAGN,EAAG21B,EAAGx1B,EAAG1F,EAAGyF,EAAGW,EAAGI,EAAG+jC,EAAGhgC,EAAG+C,IAAmS,GAA5QzH,EAAhB09L,WAAWh+L,GAAS,GAAKg+L,WAAWroK,GAAS,KAAK31B,QAAUg+L,WAAW79L,GAAS,KAAKH,KAAK21B,MAAY,KAAKr1B,OAAqBO,EAAhBm9L,WAAW/8L,GAAS,GAAK+8L,WAAWh5J,GAAS,IAAIpmB,OAAO3d,GAAK,UAAY+8L,WAAWh5L,GAAS,IAAI/D,KAAK2d,OAAOomB,GAAK,QAAUj9B,EAAQ,KAAK9G,KAAK+jC,KAAKhgC,KAAK+C,IAAU,KAAKlH,MAAiBnE,QAC7X,CACA,SAAS0hM,oBAAoBpyL,GAC3B,OAAOA,EAAEvP,QAAQshM,WAAWb,gBAAiB,SAC/C,CACA,SAASmB,eAAeryL,GACtB,OAAOA,EAAEvP,QAAQshM,WAAWX,WAAY,MAC1C,CACA,SAASkB,eAAetyL,GACtB,OAAOA,EAAEvP,QAAQshM,WAAWT,WAAY,MAC1C,CACA,SAASiB,YAAYvyL,GACnB,OAAOA,EAAEtP,OAAO1E,MAAM,OAAOG,KAAK6I,GAAMA,EAAEvE,QAAQshM,WAAWP,QAAQ,CAACl9L,EAAGN,EAAG21B,EAAGx1B,EAAG1F,IAAMujM,WAAWh+L,GAAK,GAAKg+L,WAAWroK,GAAK,KAAK31B,UAAU4e,OAAO5e,GAAK,UAAYg+L,WAAW79L,GAAW,MAANH,EAAY,KAAKA,KAAK21B,QAAQ31B,KAAK4e,OAAO+W,GAAK,QAAU,KAAK31B,KAAK21B,QAAQ/W,OAAO5e,GAAK,UAAYvF,EAAU,MAANuF,EAAkB,MAAN21B,EAAY,KAAK31B,KAAK21B,KAAKx1B,KAAK1F,MAAMuF,KAAK21B,KAAK/W,OAAOze,GAAK,MAAQ,KAAKH,KAAK21B,KAAKx1B,KAAK1F,MAAMuF,KAAK4e,OAAO+W,GAAK,QAAU,KAAK31B,KAAK21B,KAAKx1B,KAAK1F,MAAMmkB,OAAO5e,GAAK,UAAkB,MAANA,EAAkB,MAAN21B,EAAY,KAAK31B,KAAK21B,KAAKx1B,MAAMH,KAAK21B,KAAK/W,OAAOze,GAAK,MAAQ,KAAKH,KAAK21B,KAAKx1B,MAAMH,KAAK4e,OAAO+W,GAAK,QAAU,KAAK31B,KAAK21B,KAAKx1B,MAAMye,OAAO5e,GAAK,cAAY2sD,KAAK,IACjoB,CACA,SAAS6xI,YAAYxyL,GACnB,OAAOA,EAAEtP,OAAO1E,MAAM,OAAOG,KAAK6I,GAAMA,EAAEvE,QAAQshM,WAAWJ,QAAQ,CAACr9L,EAAGN,EAAG21B,EAAGx1B,EAAG1F,IAAMujM,WAAWh+L,GAAK,GAAKg+L,WAAWroK,GAAK,KAAK31B,UAAU4e,OAAO5e,GAAK,UAAYg+L,WAAW79L,GAAK,KAAKH,KAAK21B,QAAQ31B,KAAK4e,OAAO+W,GAAK,QAAUl7B,EAAI,KAAKuF,KAAK21B,KAAKx1B,KAAK1F,MAAMuF,KAAK4e,OAAO+W,GAAK,QAAU,KAAK31B,KAAK21B,KAAKx1B,MAAMH,KAAK4e,OAAO+W,GAAK,YAAUg3B,KAAK,IACjV,CACA,SAAS8xI,aAAazyL,GACpB,OAAOA,EAAEhU,MAAM,OAAOG,KAAK6I,GAAMA,EAAEtE,OAAOD,QAAQshM,WAAWH,SAAS,CAACt9L,EAAGN,EAAG21B,EAAGx1B,EAAG1F,EAAGyF,KACpF,MAAMW,EAAIm9L,WAAWroK,GAAI10B,EAAIJ,GAAKm9L,WAAW79L,GAAI6kC,EAAI/jC,GAAK+8L,WAAWvjM,GACrE,MAAa,MAANuF,GAAaglC,IAAMhlC,EAAI,IAAKE,EAAI,GAAIW,EAAU,MAANb,GAAmB,MAANA,EAAY,WAAa,IAAMA,GAAKglC,GAAK/jC,IAAMd,EAAI,GAAI1F,EAAI,EAAS,MAANuF,GAAaA,EAAI,KAAMiB,GAAK00B,EAAI/W,OAAO+W,GAAK,EAAGx1B,EAAI,EAAG1F,EAAI,IAAM0F,EAAIye,OAAOze,GAAK,EAAG1F,EAAI,IAAY,OAANuF,IAAeA,EAAI,IAAKiB,EAAI00B,EAAI/W,OAAO+W,GAAK,EAAIx1B,EAAIye,OAAOze,GAAK,GAAU,MAANH,IAAcE,EAAI,MAAO,GAAGF,EAAI21B,KAAKx1B,KAAK1F,IAAIyF,KAAOe,EAAI,KAAK00B,QAAQz1B,MAAM0e,OAAO+W,GAAK,UAAYqP,EAAI,KAAKrP,KAAKx1B,MAAMD,MAAMy1B,KAAK/W,OAAOze,GAAK,QAAUG,CAAC,MACnbqsD,KAAK,IACX,CACA,SAAS+xI,UAAU1yL,GACjB,OAAOA,EAAEtP,OAAOD,QAAQshM,WAAWR,MAAO,GAC5C,CACA,SAASoB,UAAU3yL,GACjB,OAAOA,EAAEtP,OAAOD,QAAQshM,WAAWD,MAAO,GAC5C,CACA,SAASc,YAAY5yL,EAAGhL,GACtB,OAAOgL,EAAI4S,OAAO5S,IAAMA,IAAGhL,EAAI4d,OAAO5d,IAAMA,GAAW,EAAIgL,IAAMhL,EAAI,GAAK,CAC5E,CACA,SAAS69L,kBAAkB7yL,EAAGhL,GAC5B,MAAQ27L,WAAYr8L,GAAM0L,GAAK2wL,WAAY38L,GAAMgB,EACjD,QAAU,IAANV,GAAgBgsH,QAAQtsH,GAC1B,OAAO,EACT,GAAIssH,QAAQhsH,SAAY,IAANN,EAChB,OAAQ,EACV,QAAU,IAANM,QAAsB,IAANN,EAClB,OAAO,EACT,IAAK,IAAI21B,EAAI,EAAGx1B,EAAIG,EAAEhP,OAAQqkC,GAAKx1B,EAAGw1B,IAAK,CACzC,MAAMl7B,EAAI6F,EAAEq1B,GAAIz1B,EAAIF,EAAE21B,GACtB,GAAIl7B,IAAMyF,EACR,YAAa,IAANzF,QAAsB,IAANyF,EAAe,EAAIzF,EAAIyF,EAAI0+L,YAAYnkM,EAAGyF,IAAM,EAAI,CAC/E,CACA,OAAO,CACT,CACA,SAAS4+L,eAAe9yL,EAAGhL,GACzB,OAAO49L,YAAY5yL,EAAE+yL,MAAO/9L,EAAE+9L,QAAUH,YAAY5yL,EAAEgzL,MAAOh+L,EAAEg+L,QAAUJ,YAAY5yL,EAAEizL,MAAOj+L,EAAEi+L,QAAUJ,kBAAkB7yL,EAAGhL,EACjI,CACA,SAASkK,GAAGc,EAAGhL,GACb,OAAOgL,EAAEkwC,UAAYl7C,EAAEk7C,OACzB,CACA,SAAS17C,QAAQwL,EAAGhL,GAClB,OAAQgL,EAAEkzL,UACR,IAAK,GACL,IAAK,IACH,OAAOh0L,GAAGc,EAAGhL,GACf,IAAK,IACH,OAAO89L,eAAe9yL,EAAGhL,GAAK,EAChC,IAAK,KACH,OAAOkK,GAAGc,EAAGhL,IAAM89L,eAAe9yL,EAAGhL,GAAK,EAC5C,IAAK,IACH,OAAO89L,eAAe9yL,EAAGhL,GAAK,EAChC,IAAK,KACH,OAAOkK,GAAGc,EAAGhL,IAAM89L,eAAe9yL,EAAGhL,GAAK,EAC5C,UAAK,EACH,OAAO,EACT,QACE,OAAO,EAEb,CACA,SAASm+L,sBAAsBnzL,GAC7B,OAAOsqE,KACLioH,YACAC,YACAC,aACAC,UAJKpoH,CAKLtqE,EACJ,CACA,SAASozL,WAAWpzL,GAClB,OAAOsqE,KACL6nH,YACAC,oBACAC,eACAC,eAJKhoH,CAKLtqE,EAAEtP,QAAQ1E,MAAM,OAAO20D,KAAK,IAChC,CACA,SAAS0yI,QAAQrzL,EAAGhL,GAClB,IAAKgL,EACH,OAAO,EACT,MAAM1L,EAAI8+L,WAAWp+L,GAAGhJ,MAAM,KAAKG,KAAK6sC,GAAMm6J,sBAAsBn6J,KAAI2nB,KAAK,KAAK30D,MAAM,OAAOG,KAAK6sC,GAAM25J,UAAU35J,KAAKhlC,EAAIi+L,kBAAkBjyL,GAC/I,IAAKhM,EACH,OAAO,EACT,MAAO,CAAE21B,EAAE,CAAGx1B,EAAG1F,EAAGyF,EAAGW,GAAKb,EAAGiB,EAAI,CACjCi+L,SAAUvpK,EACVumB,QAASgiJ,eAAe/9L,EAAG1F,EAAGyF,EAAGW,GACjCk+L,MAAO5+L,EACP6+L,MAAOvkM,EACPwkM,MAAO/+L,EACPy8L,WAAiB,MAAL97L,OAAY,EAASA,EAAE7I,MAAM,MAE3C,IAAK,MAAMgtC,KAAK1kC,EAAG,CACjB,MAAM0E,EAAIi5L,kBAAkBj5J,GAC5B,IAAKhgC,EACH,OAAO,EACT,MAAO,CAAE+C,EAAE,CAAGq4B,EAAGnf,EAAGvgB,EAAG0wB,GAAKpsB,EAQ5B,IAAKxE,QAR8B,CACjC0+L,SAAUn3L,EACVm0C,QAASgiJ,eAAe99J,EAAGnf,EAAGvgB,EAAG0wB,GACjC2tK,MAAO3+J,EACP4+J,MAAO/9K,EACPg+K,MAAOv+L,EACPi8L,WAAiB,MAALvrK,OAAY,EAASA,EAAEp5B,MAAM,MAE3BiJ,GACd,OAAO,CACX,CACA,OAAO,CACT,CACA,SAASq+L,aACP,OAAOA,WAAa7sM,OAAO0nF,QAAU,SAASnuE,GAC5C,IAAK,IAAIhL,EAAI,EAAGA,EAAI3P,UAAUC,OAAQ0P,IAAK,CACzC,IAAIV,EAAIjP,UAAU2P,GAClB,IAAK,IAAIhB,KAAKM,EACZ7N,OAAO4H,UAAU4L,eAAeM,KAAKjG,EAAGN,KAAOgM,EAAEhM,GAAKM,EAAEN,GAC5D,CACA,OAAOgM,CACT,EAAGszL,WAAWx4H,MAAMr3E,KAAM4B,UAC5B,CACA,SAASkuM,YAAYvzL,EAAGhL,GACtB,IAAIV,EACJ,OAAoBA,EAAb,QAAS0L,EAAQA,EAAE3Q,IAAUiF,IAAMxM,QAAQC,QAAQiY,EAAEwzL,KAAMF,WAAW,CAC3EG,KAAM,GACNC,MAAO,GACPzrM,KAAM+M,EACN2+L,QAAS,MACR3zL,EAAG,CACJ4zL,YAAaN,WAAW,CACtBO,gBAAiB,IAAI7zL,EAAEkwC,UACvB4jJ,WAAW,EACXC,OAAO,EACPC,eAAe,GACdh0L,EAAE4zL,aACLvkM,IAAKiF,EACL2/L,OAAQ,QAASj0L,QAAS,EAC1Bk0L,MAAOtmM,MAAMi3B,QAAQ7kB,EAAEk0L,OAASl0L,EAAEk0L,MAAQ,CACxC,WAEFljI,SAAUhxD,EAAEgxD,UAAY,iBAE5B,CACA,SAASmjI,mBAAmBn0L,EAAGhL,GAC7B,OAAOgL,EAAIvZ,OAAOoc,KAAK7C,GAAGtT,QAAO,CAAC4H,EAAGN,KAAOM,EAAEN,GAAKu/L,YAAYvzL,EAAEhM,GAAIgB,GAAIV,IAAI,CAAC,GAAK,CAAC,CACtF,CACA,SAAS8/L,UAAUp0L,EAAGhL,GACpB,MAAMV,EAAKN,IACT,IAAK4e,OAAO/U,MAAM+U,OAAO5e,IAAK,CAC5B,MAAM21B,EAAI31B,EAAEhI,MAAM,KAClB,IAAImI,EAAIH,EACR,IAAK,IAAIvF,EAAI,EAAGA,EAAI,EAAIk7B,EAAErkC,OAAQmJ,IAChC0F,GAAK,KACP,OAAOA,CACT,CACA,OAAOH,CAAC,EAEV,QAASq/L,QAAQ/+L,EAAE0L,GAAI,KAAK1L,EAAEU,KAChC,CACA,MAAMq/L,YAAcA,CAACr0L,EAAGhL,EAAGV,EAAGN,KAC5B,MAAM21B,EAAI3pB,EAAEhL,GAAGV,GAAIH,EAAIH,GAAK,SAASvF,EAAGyF,GACtC,OAAOkgM,UAAU3lM,EAAGyF,EACtB,EACA,OAAOzN,OAAOoc,KAAK8mB,GAAGj9B,QAAO,CAAC+B,EAAGyF,KAAOzF,GAAK0F,EAAE1F,EAAGyF,IAAY,MAANzF,EAAYyF,EAAIzF,GAAG,EAAE,EAC5E6lM,SAAYt0L,GAAMsgH,QAAQtgH,EAAEi0L,SAA2B,mBAATj0L,EAAEwzL,IACnD,SAASe,mCAAmCv0L,EAAGhL,EAAGV,GAChD,MAAMN,EAAIgM,EAAEhL,GAAGV,GACf,OAAO+/L,YAAYr0L,EAAGhL,EAAGV,GAAG,SAASq1B,EAAGx1B,GACtC,OAAQmgM,SAAStgM,EAAE21B,KAAOyqK,UAAUzqK,EAAGx1B,EACzC,GACF,CACA,SAASqgM,kCAAkCx0L,EAAGhL,EAAGV,GAC/C,MAAMN,EAAIgM,EAAEhL,GAAGV,GACf,OAAO+/L,YAAYr0L,EAAGhL,EAAGV,GAAG,SAASq1B,EAAGx1B,GACtC,OAAOmgM,SAAStgM,EAAEG,KAAMmgM,SAAStgM,EAAE21B,KAAM22F,QAAQ8zE,UAAUzqK,EAAGx1B,KAAWmgM,SAAStgM,EAAE21B,KAAWyqK,UAAUzqK,EAAGx1B,EAC9G,GACF,CACA,SAASsgM,qBAAqBz0L,GAC5B,MAAa,iBAANA,EAAuBw0L,kCAAoCD,kCACpE,CACA,SAASG,mBAAmB10L,EAAGhL,EAAGV,EAAGN,GACnC,IAAKgM,EACH,OACF,MAAQ4zL,YAAajqK,EAAGuqK,MAAO//L,EAAI87L,cAAej/H,SAAUviE,GAAM6F,EAAGJ,EAAItG,MAAMi3B,QAAQ1wB,GAAKA,EAAI,CAC9FA,GAEF,IAAK,MAAMU,KAAKX,EACd,GAAIy1B,GAAK3pB,EAAEnL,IAAMmL,EAAEnL,GAAGG,GAAI,CACxB,MAAQ6+L,gBAAiB5+L,GAAM00B,EAAGqP,EAAIy7J,qBAAqBhmM,EAArBgmM,CAAwBz0L,EAAGnL,EAAGG,GAAIgE,EAAIA,KAC1E,GAAI2wB,EAAEmqK,UAAW,CACf,GAAgB,iBAAL7+L,IAAkBo+L,QAAQr6J,EAAG/jC,GAAI,CAC1C,MAAMm/B,EAAI,WAAW4E,UAAUA,GAAKh5B,EAAEnL,GAAGG,GAAGgkC,GAAG/wC,mCAAmC+M,yCAAyCV,EAAErM,oBAAoBgN,KACjJ00B,EAAEqqK,cAAgB1tL,MAAM8tB,GAAKo5J,OAAOp5J,EACtC,CACA,OAAOp0B,EAAEnL,GAAGG,GAAGgkC,EACjB,CACE,IAAU,IAAN/jC,GAAkB,MAANA,GAAao+L,QAAQr6J,EAAG/jC,GACtC,OAAO+K,EAAEnL,GAAGG,GAAGgkC,GACjB,IAAK,MAAO5E,EAAGnf,KAAMxuB,OAAO+sJ,QAAQxzI,EAAEnL,GAAGG,IACvC,GAAIq+L,QAAQj/J,EAAGn/B,GACb,OAAOggB,CACb,EACClZ,EAAI,CACL44L,cAAe30L,EACfk0L,MAAOr/L,EACP+/L,QAAS5/L,EACTk7C,QAASlX,EACT67J,iBAAkB5G,OAAOa,eACzB9iD,SAAUhzI,GAEZ,OAAQhF,EAAEunG,KAAKx/F,IAAMA,GAAGiwI,UAC1B,CACJ,CACA,SAAS8oD,sBACP,OAAO7G,OAAOa,eAAeH,SAC/B,CACA,SAASoG,mBAAmB/0L,EAAGhL,EAAGV,GAChC,OAAOU,KAAKgL,EAAIvZ,OAAOC,eAAesZ,EAAGhL,EAAG,CAC1CrO,MAAO2N,EACP6rB,YAAY,EACZ+4B,cAAc,EACdD,UAAU,IACPj5C,EAAEhL,GAAKV,EAAG0L,CACjB,CACA,IAAIg1L,aAAe,QAASC,gBAAkB,mBAAoBC,kBAAoB,IAAKC,oBAAsB,CAC/GC,GAAI,IACJC,OAAQ,IACRC,MAAO,KACNC,KAAMC,kBAAoBD,KAAO,CAAC,EAAGR,mBAAmBQ,KAAMJ,oBAAoBC,GAAI,UAAWL,mBAAmBQ,KAAMJ,oBAAoBE,OAAQ,KAAMN,mBAAmBQ,KAAMJ,oBAAoBG,MAAO,MAAOC,MAAOE,MACjOA,MAAQ,CAAC,EAAGV,mBAAmBU,MAAOD,iBAAiBL,oBAAoBC,IAAKD,oBAAoBC,IAAKL,mBAAmBU,MAAOD,iBAAiBL,oBAAoBE,QAASF,oBAAoBE,QAASN,mBAAmBU,MAAOD,iBAAiBL,oBAAoBG,OAAQH,oBAAoBG,OACzS,IAAII,UAAY,IAChB,SAASC,eACP,cAAct7K,OAAS,GACzB,CACA,SAASu7K,cACP,cAActhL,QAAU,KAAsBA,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,wBAAAA,iDAAAA,0BAAAA,UAAAA,6BAAAA,4BAAAA,mBAAAA,+BAAAA,yBAAAA,UAAAA,yBAAAA,uDAAAA,6BAAAA,yBAAAA,oBAAAA,mCAAYuhL,iBAAmBv1E,QAAQhsG,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,wBAAAA,iDAAAA,0BAAAA,UAAAA,6BAAAA,4BAAAA,mBAAAA,+BAAAA,yBAAAA,UAAAA,yBAAAA,uDAAAA,6BAAAA,yBAAAA,oBAAAA,mCAAYuhL,yBAA2BA,iBAAmB,KAAOv1E,QAAQu1E,iBAChK,CACA,SAASC,uBAAuB91L,EAAGhL,IAC3B,MAALA,GAAaA,EAAIgL,EAAE1a,UAAY0P,EAAIgL,EAAE1a,QACtC,IAAK,IAAIgP,EAAI,EAAGN,EAAI,IAAIpG,MAAMoH,GAAIV,EAAIU,EAAGV,IACvCN,EAAEM,GAAK0L,EAAE1L,GACX,OAAON,CACT,CACA,SAAS+hM,qBAAqB/1L,GAC5B,GAAIpS,MAAMi3B,QAAQ7kB,GAChB,OAAO81L,uBAAuB91L,EAClC,CACA,SAASg2L,kBAAkBh2L,EAAGhL,GAC5B,KAAMgL,aAAahL,GACjB,MAAM,IAAI0tB,UAAU,oCACxB,CACA,SAASuzK,kBAAkBj2L,EAAGhL,GAC5B,IAAK,IAAIV,EAAI,EAAGA,EAAIU,EAAE1P,OAAQgP,IAAK,CACjC,IAAIN,EAAIgB,EAAEV,GACVN,EAAEmsB,WAAansB,EAAEmsB,aAAc,EAAInsB,EAAEklD,cAAe,EAAI,UAAWllD,IAAMA,EAAEilD,UAAW,GAAKxyD,OAAOC,eAAesZ,EAAGhM,EAAEvG,IAAKuG,EAC7H,CACF,CACA,SAASkiM,cAAcl2L,EAAGhL,EAAGV,GAC3B,OAAOU,GAAKihM,kBAAkBj2L,EAAE3R,UAAW2G,GAAIV,GAAK2hM,kBAAkBj2L,EAAG1L,GAAI0L,CAC/E,CACA,SAASm2L,mBAAmBn2L,EAAGhL,EAAGV,GAChC,OAAOU,KAAKgL,EAAIvZ,OAAOC,eAAesZ,EAAGhL,EAAG,CAC1CrO,MAAO2N,EACP6rB,YAAY,EACZ+4B,cAAc,EACdD,UAAU,IACPj5C,EAAEhL,GAAKV,EAAG0L,CACjB,CACA,SAASo2L,qBAAqBp2L,GAC5B,UAAW+lB,OAAS,KAA6B,MAAtB/lB,EAAE+lB,OAAO+nD,WAAwC,MAAnB9tE,EAAE,cACzD,OAAOpS,MAAM3F,KAAK+X,EACtB,CACA,SAASq2L,uBACP,MAAM,IAAI3zK,UAAU,wIACtB,CACA,SAAS4zK,qBAAqBt2L,GAC5B,OAAO+1L,qBAAqB/1L,IAAMo2L,qBAAqBp2L,IAAMu2L,iCAAiCv2L,IAAMq2L,sBACtG,CACA,SAASE,iCAAiCv2L,EAAGhL,GAC3C,GAAIgL,EAAG,CACL,GAAgB,iBAALA,EACT,OAAO81L,uBAAuB91L,EAAGhL,GACnC,IAAIV,EAAI7N,OAAO4H,UAAUnG,SAASqS,KAAKyF,GAAG7O,MAAM,GAAI,GACpD,GAAU,WAANmD,GAAkB0L,EAAEtO,cAAgB4C,EAAI0L,EAAEtO,YAAY2D,MAAa,QAANf,GAAqB,QAANA,EAC9E,OAAO1G,MAAM3F,KAAKqM,GACpB,GAAU,cAANA,GAAqB,2CAA2CyD,KAAKzD,GACvE,OAAOwhM,uBAAuB91L,EAAGhL,EACrC,CACF,CACA,SAASohH,aAAap2G,GACpB,IACE,OAAOoR,KAAKC,UAAUrR,EAAG,KAAM,EACjC,CAAE,MACA,MAAO,EACT,CACF,CACA,IAAIw2L,UAAY,uBAChB,SAASC,0BACP,IACE,UAAWp8K,OAAS,KAAOA,OAAO4jC,aAChC,OAAOA,aAAaC,QAAQ+2I,mBAAqBC,iBACrD,CAAE,MACA,cAAc7N,SAAW,GAC3B,CACA,OAAO,CACT,CACA,IAAIqP,OAAyB,WAC3B,SAAS12L,EAAEhL,GACTghM,kBAAkBvyM,KAAMuc,GAAIm2L,mBAAmB1yM,KAAM,UAAU,GAAK0yM,mBAAmB1yM,KAAM,kBAAc,GAASA,KAAKkzM,WAAa3hM,GAAKwhM,WAAWb,gBAAkBc,2BAA+Cb,iBAAnBnyM,KAAKkpM,QAAS,EACpN,CACA,OAAOuJ,cAAcl2L,EAAG,CACtB,CACEvS,IAAK,OACL9G,MAAO,SAASqO,EAAGV,GACjB,GAAI7Q,KAAKkpM,OAAQ,CACf,IAAI34L,EAAIoiH,aAAa9hH,IAAM,GAC3BqhM,eAAiBtpL,QAAQvD,KAAK,MAAMlN,OAAOnY,KAAKkzM,WAAY,MAAM/6L,OAAO5G,EAAG,KAAK4G,OAAO5H,GAAI,iBAAmBqY,QAAQvD,KAAK,aAAc,GAAGlN,OAAOnY,KAAKkzM,WAAY,MAAM/6L,OAAO5G,EAAG,KAAK4G,OAAO5H,EAAI,KAC7M4H,OAAO5H,GAAK,IACN,CACF,GAEF,CACEvG,IAAK,kBACL9G,MAAO,WACL,IAAK,IAAIqO,EAAI3P,UAAUC,OAAQgP,EAAI,IAAI1G,MAAMoH,GAAIhB,EAAI,EAAGA,EAAIgB,EAAGhB,IAC7DM,EAAEN,GAAK3O,UAAU2O,GACnB,GAAIvQ,KAAKkpM,OACP,GAAIgJ,eAAgB,CAClB,IAAIhsK,EACJtd,QAAQvD,KAAK,MAAMlN,OAAOnY,KAAKkzM,WAAY,kBAAmB,kBAAmBhtK,EAAItd,SAASkxB,IAAIu9B,MAAMnxC,EAAG2sK,qBAAqBhiM,GAClI,KAAO,CACL,IAAIH,EACJkY,QAAQvD,KAAK,MAAMlN,OAAOnY,KAAKkzM,WAAY,kBAAmB,kBAAmBxiM,EAAIkY,SAASkxB,IAAIu9B,MAAM3mE,EAAGmiM,qBAAqBhiM,GAClI,CACJ,KAEA0L,CACN,CA/B6B,GA+BxB42L,aAAe,yBACpB,IAAIF,OACJ,IAAIG,wBAA0B,WAC5B,IAAK,IAAI72L,EAAI3a,UAAUC,OAAQ0P,EAAI,IAAIpH,MAAMoS,GAAI1L,EAAI,EAAGA,EAAI0L,EAAG1L,IAC7DU,EAAEV,GAAKjP,UAAUiP,GACnB,OAAOU,EAAE1P,OAAS0P,EAAEtI,QAAO,SAASsH,EAAG21B,GACrC,OAAOA,EAAI31B,EAAI,GAAG4H,OAAO5H,GAAG4H,OAAO85L,WAAW95L,OAAO+tB,GAAKA,EAAI31B,CAChE,GAAG,IAAM,EACX,EAAG8iM,eAAiB,SAAS92L,EAAGhL,GAC9B,GAAI,kBAAmBgL,EAAG,CACxB,IAAI1L,EAAI,IAAIs3I,SAAS5rI,EAAE+2L,cAAf,GACR,MAAO,GAAGn7L,OAAOtH,GAAGsH,OAAO5G,EAC7B,CACE,MAAO,eAAgBgL,EAAI,GAAGpE,OAAOoE,EAAEg3L,YAAYp7L,OAAO5G,IAAMqX,QAAQG,KAAK,4DAA6DxM,EAAGhL,GAAI,GACrJ,EAAGwX,KAAO,SAASxM,GACjBqM,QAAQG,KAAK,GAAG5Q,OAAOg7L,aAAc,MAAMh7L,OAAOoE,GACpD,EACA,SAASi3L,mBAAmBj3L,EAAGhL,EAAGV,GAChC,OAAOU,KAAKgL,EAAIvZ,OAAOC,eAAesZ,EAAGhL,EAAG,CAC1CrO,MAAO2N,EACP6rB,YAAY,EACZ+4B,cAAc,EACdD,UAAU,IACPj5C,EAAEhL,GAAKV,EAAG0L,CACjB,CACA,SAASk3L,iBAAiBl3L,GACxB,IAAK,IAAIhL,EAAI,EAAGA,EAAI3P,UAAUC,OAAQ0P,IAAK,CACzC,IAAIV,EAAoB,MAAhBjP,UAAU2P,GAAa3P,UAAU2P,GAAK,CAAC,EAAGhB,EAAIvN,OAAOoc,KAAKvO,GAC3B,mBAAhC7N,OAAO00G,wBAAwCnnG,EAAIA,EAAE4H,OAAOnV,OAAO00G,sBAAsB7mG,GAAG2iF,QAAO,SAASttD,GACjH,OAAOljC,OAAOsyD,yBAAyBzkD,EAAGq1B,GAAGxJ,UAC/C,MAAMnsB,EAAExB,SAAQ,SAASm3B,GACvBstK,mBAAmBj3L,EAAG2pB,EAAGr1B,EAAEq1B,GAC7B,GACF,CACA,OAAO3pB,CACT,CACA,SAAS6rI,QAAQ7rI,EAAGhL,GAClB,IAAIV,EAAI7N,OAAOoc,KAAK7C,GACpB,GAAIvZ,OAAO00G,sBAAuB,CAChC,IAAInnG,EAAIvN,OAAO00G,sBAAsBn7F,GACrChL,IAAMhB,EAAIA,EAAEijF,QAAO,SAASttD,GAC1B,OAAOljC,OAAOsyD,yBAAyB/4C,EAAG2pB,GAAGxJ,UAC/C,KAAK7rB,EAAEvJ,KAAK+vE,MAAMxmE,EAAGN,EACvB,CACA,OAAOM,CACT,CACA,SAAS6iM,qBAAqBn3L,EAAGhL,GAC/B,OAAOA,EAAS,MAALA,EAAYA,EAAI,CAAC,EAAGvO,OAAOm6J,0BAA4Bn6J,OAAO6+F,iBAAiBtlF,EAAGvZ,OAAOm6J,0BAA0B5rJ,IAAM62I,QAAQplJ,OAAOuO,IAAIxC,SAAQ,SAAS8B,GACtK7N,OAAOC,eAAesZ,EAAG1L,EAAG7N,OAAOsyD,yBAAyB/jD,EAAGV,GACjE,IAAI0L,CACN,CACA,IAAIo3L,sBAAwB,SAASp3L,EAAGhL,GACtC,IAAKgL,EACH,OAAOhL,EACT,IAUGhB,EAVK,SAAS21B,GACf,GAAU,MAANA,EACF,MAAO,GACT,GAAIA,EAAEr9B,WAAW,MACf,OAAOq9B,EAAEl5B,QAAQ,KAAM,IACzB,GAAIk5B,EAAEr9B,WAAW,KAAM,CACrB,IAAI6H,EAAIw1B,EAAEx4B,MAAM,GAChB,OAAOgD,EAAE+1E,SAAS,KAAO/1E,EAAEhD,MAAM,GAAI,GAAKgD,CAC5C,CACA,OAAOw1B,CACT,CAAOr1B,CAAE0L,GACT,OAAOhM,EAAIA,EAAEk2E,SAAS,KAAO,GAAGtuE,OAAO5H,GAAG4H,OAAO5G,GAAK,GAAG4G,OAAO5H,EAAG,KAAK4H,OAAO5G,GAAKA,CACtF,EACA,SAASqiM,6BAA6Br3L,GACpC,IAA6E1L,EAAGN,EAI1EogC,EAJFp/B,EAAI3P,UAAUC,OAAS,QAAsB,IAAjBD,UAAU,GAAgBA,UAAU,GAAK,CAAC,EAASskC,EAAI30B,EAAEsiM,QAASnjM,OAAU,IAANw1B,EAAe,CAAC,EAAIA,EAAGl7B,EAAIuG,EAAEuiM,UAAWrjM,OAAU,IAANzF,EAAe,CAAC,EAAIA,EAAGoG,EAAIG,EAAEk7C,QAAYlX,EAAI,WAC7L,MAAO,eAAgBh5B,EAAEw3L,SAAWx3L,EAAEw3L,SAASR,WAAah3L,EAAEw3L,SAAST,aACzE,EAAG/9L,EAAIvS,OAAOoc,KAAK3O,GAAI6H,EAAI,CAAC,EACvBtV,OAAOoc,KAAK1O,GAAG7O,SAElByW,GAAyB,QAAnBq4B,EAAIp0B,EAAEs3L,eAA2B,IAANljK,OAAe,EAASA,EAAE1nC,QAAO,SAASijF,EAAGI,GAC5E,IAAItsC,EAAGysC,EAAIH,EAAE0nH,wBACb,OAAuBh0J,EAAhBzqC,EAAEuqC,SAAS2sC,GAASh8E,EAAEg8E,GAAK,YAAaH,EAAQA,EAAE7/B,QAAc6/B,EAAEkxF,MAAOtxF,EAAEO,GAAK,CACrFwnH,eAAgBj0J,GACfksC,CACL,GAAG,CAAC,KAAO,CAAC,GAEdlpF,OAAOoc,KAAK1O,GAAG3B,SAAQ,SAASm9E,GAC9B,OAAO5zE,EAAE4zE,GAAK,CACZ+nH,eAAgB1+L,EAAEuqC,SAASosC,GAAKz7E,EAAEy7E,GAAKx7E,EAAEw7E,GAE7C,IACA,IAAI16D,EAAIjV,EAAEw3L,SAAU9iM,EAAIugB,EAAE0iL,YAAavyK,EAAI1wB,EAAE0gI,KAAMp7H,EAAItF,EAAEW,KAAMs4C,EAAIj5C,EAAEtJ,KAAMgkF,EAAIn6D,EAAEwxD,MAAOtyC,EAAIlf,EAAE2iL,UAAUC,aAAcpjM,EAAIwgB,EAAE6iL,WAAYroH,EAAIzvE,EAAE+3L,QAASpjM,EAAI,CACzJu7C,QAASr7C,GAAK,GACdgjM,aAAc1jK,EACd2jK,WAAYrjM,EACZkjM,YAAaP,sBAAsBhyK,EAAGprB,GACtCg+L,gBAAiBrqJ,EACjBsqJ,YAAab,sBAAsBhoH,EAAEgmD,KAAMhmD,EAAE/5E,MAC7C6iM,eAAgB9oH,EAAE+oH,KAAO,GACzBC,eAAgBhpH,EAAEoE,KAAO,GACzB6kH,YAAat8L,EACbu8L,OAAa,MAALt4L,OAAY,EAASA,EAAEs4L,OAAOnsM,KAAI,SAASwjF,GACjD,MAAO,CACL4oH,OAAQ5oH,EAAE4oH,OACVC,WAAY7oH,EAAEt6E,KAElB,IACAo7H,QAAc,MAALhhD,OAAY,EAASA,EAAEtjF,KAAI,SAASwjF,GAC3C,MAAO,CACL8oH,WAAY9oH,EAAEt6E,KACdqjM,WAAY/oH,EAAEylD,KACdmjE,OAAQ5oH,EAAE4oH,OAEd,KAEF,GAA2B,QAApBjkM,EAAI0L,EAAEw3L,gBAA4B,IAANljM,GAAiBA,EAAEqkM,kBAAmB,CACvE,IAAI3kK,EAAIh0B,EAAEw3L,SAASmB,kBACnBhkM,EAAIwiM,qBAAqBD,iBAAiB,CAAC,EAAGviM,GAAI,CAChDgkM,kBAAmB3kK,GAEvB,CACA,GAA2B,QAApBhgC,EAAIgM,EAAEw3L,gBAA4B,IAANxjM,GAAiBA,EAAE4kM,cAAe,CACnE,IAAIlhM,EAAIsI,EAAEw3L,SAASoB,cAAe5pH,EAAIt3E,EAAE09H,KAAMxmD,EAAIl3E,EAAErC,KAAMqnK,EAAIhlK,EAAEtM,KAChEuJ,EAAIwiM,qBAAqBD,iBAAiB,CAAC,EAAGviM,GAAI,CAChDikM,cAAexB,sBAAsBpoH,EAAGJ,GACxCiqH,kBAAmBn8B,GAEvB,CACA,MAAO,eAAgB18J,EAAEw3L,SAAeL,qBAAqBD,iBAAiB,CAAC,EAAGviM,GAAI,CACpFqiM,WAAYh+J,MACLm+J,qBAAqBD,iBAAiB,CAAC,EAAGviM,GAAI,CACrDoiM,cAAe/9J,KAEnB,CACA,SAAS8/J,mBAAmB94L,GAC1B,UAAU,gBAAiBA,KAAKA,EAAE23L,YAAYp0J,SAASyxJ,cACzD,CACA,SAAS+D,qBAAqB/4L,EAAGhL,EAAGV,EAAGN,EAAG21B,EAAGx1B,EAAG1F,GAC9C,IACE,IAAIyF,EAAI8L,EAAE7L,GAAG1F,GAAIoG,EAAIX,EAAEvN,KACzB,CAAE,MAAOsO,GAEP,YADAX,EAAEW,EAEJ,CACAf,EAAE2pB,KAAO7oB,EAAEH,GAAK/M,QAAQC,QAAQ8M,GAAGpI,KAAKuH,EAAG21B,EAC7C,CACA,SAASqvK,sBAAsBh5L,GAC7B,OAAO,WACL,IAAIhL,EAAIvR,KAAM6Q,EAAIjP,UAClB,OAAO,IAAIyC,SAAQ,SAASkM,EAAG21B,GAC7B,IAAIx1B,EAAI6L,EAAE86D,MAAM9lE,EAAGV,GACnB,SAAS7F,EAAEoG,GACTkkM,qBAAqB5kM,EAAGH,EAAG21B,EAAGl7B,EAAGyF,EAAG,OAAQW,EAC9C,CACA,SAASX,EAAEW,GACTkkM,qBAAqB5kM,EAAGH,EAAG21B,EAAGl7B,EAAGyF,EAAG,QAASW,EAC/C,CACApG,OAAE,EACJ,GACF,CACF,CACA,SAASwqM,YAAYj5L,EAAGhL,GACtB,OAAY,MAALA,UAAoB+wB,OAAS,KAAO/wB,EAAE+wB,OAAOm+I,eAAiBlvK,EAAE+wB,OAAOm+I,aAAalkK,GAAKA,aAAahL,CAC/G,CACA,SAASkkM,gBAAgBl5L,EAAGhL,GAC1B,IAAIV,EAAGN,EAAG21B,EAAGx1B,EAAG1F,EAAI,CAClB0qM,MAAO,EACPpmE,KAAM,WACJ,GAAW,EAAPppG,EAAE,GACJ,MAAMA,EAAE,GACV,OAAOA,EAAE,EACX,EACAyvK,KAAM,GACNC,IAAK,IAEP,OAAOllM,EAAI,CACT+mB,KAAMhnB,EAAE,GACRolM,MAAOplM,EAAE,GACTqlM,OAAQrlM,EAAE,IACQ,mBAAV6xB,SAAyB5xB,EAAE4xB,OAAO+nD,UAAY,WACtD,OAAOrqF,IACT,GAAI0Q,EACJ,SAASD,EAAEe,GACT,OAAO,SAAS+jC,GACd,OAMJ,SAAW/jC,GACT,GAAIX,EACF,MAAM,IAAIouB,UAAU,mCACtB,KAAOj0B,GACL,IACE,GAAI6F,EAAI,EAAGN,IAAM21B,EAAW,EAAP10B,EAAE,GAASjB,EAAEulM,OAAStkM,EAAE,GAAKjB,EAAEslM,SAAW3vK,EAAI31B,EAAEulM,SAAW5vK,EAAEpvB,KAAKvG,GAAI,GAAKA,EAAEknB,SAAWyO,EAAIA,EAAEpvB,KAAKvG,EAAGiB,EAAE,KAAK4oB,KAChI,OAAO8L,EACT,OAAQ31B,EAAI,EAAG21B,IAAM10B,EAAI,CAChB,EAAPA,EAAE,GACF00B,EAAEhjC,QACAsO,EAAE,IACJ,KAAK,EACL,KAAK,EACH00B,EAAI10B,EACJ,MACF,KAAK,EACH,OAAOxG,EAAE0qM,QAAS,CAChBxyM,MAAOsO,EAAE,GACT4oB,MAAM,GAEV,KAAK,EACHpvB,EAAE0qM,QAASnlM,EAAIiB,EAAE,GAAIA,EAAI,CACvB,GAEF,SACF,KAAK,EACHA,EAAIxG,EAAE4qM,IAAIvgM,MAAOrK,EAAE2qM,KAAKtgM,MACxB,SACF,QACE,KAAkB6wB,GAAdA,EAAIl7B,EAAE2qM,MAAc9zM,OAAS,GAAKqkC,EAAEA,EAAErkC,OAAS,MAAiB,IAAT2P,EAAE,IAAqB,IAATA,EAAE,IAAW,CACpFxG,EAAI,EACJ,QACF,CACA,GAAa,IAATwG,EAAE,MAAc00B,GAAK10B,EAAE,GAAK00B,EAAE,IAAM10B,EAAE,GAAK00B,EAAE,IAAK,CACpDl7B,EAAE0qM,MAAQlkM,EAAE,GACZ,KACF,CACA,GAAa,IAATA,EAAE,IAAYxG,EAAE0qM,MAAQxvK,EAAE,GAAI,CAChCl7B,EAAE0qM,MAAQxvK,EAAE,GAAIA,EAAI10B,EACpB,KACF,CACA,GAAI00B,GAAKl7B,EAAE0qM,MAAQxvK,EAAE,GAAI,CACvBl7B,EAAE0qM,MAAQxvK,EAAE,GAAIl7B,EAAE4qM,IAAItuM,KAAKkK,GAC3B,KACF,CACA00B,EAAE,IAAMl7B,EAAE4qM,IAAIvgM,MAAOrK,EAAE2qM,KAAKtgM,MAC5B,SAEJ7D,EAAID,EAAEuF,KAAKyF,EAAGvR,EAChB,CAAE,MAAOuqC,GACP/jC,EAAI,CACF,EACA+jC,GACChlC,EAAI,CACT,CAAE,QACAM,EAAIq1B,EAAI,CACV,CACF,GAAW,EAAP10B,EAAE,GACJ,MAAMA,EAAE,GACV,MAAO,CACLtO,MAAOsO,EAAE,GAAKA,EAAE,QAAK,EACrB4oB,MAAM,EAEV,CArEWhpB,CAAE,CACPI,EACA+jC,GAEJ,CACF,CAiEF,CACA,SAASwgK,YAAYx5L,EAAGhL,GACtB,OAAOykM,aAAa3+H,MAAMr3E,KAAM4B,UAClC,CACA,SAASo0M,eACP,OAAOA,aAAeT,uBAAsB,SAASh5L,EAAGhL,GACtD,IAAOhB,EACP,OAAOklM,gBAAgBz1M,MAAM,SAASkmC,GACpC,OAAQA,EAAEwvK,OACR,KAAK,EACH,OAAOxvK,EAAEyvK,KAAKruM,KAAK,CACjB,EACA,EAAE,CAEF,IACE,CACF,EACAiV,KAEJ,KAAK,EACH,MAAqB,CACnB,EADS2pB,EAAEopG,QAIf,KAAK,EACH,OAAO/+H,EAAI21B,EAAEopG,QAAS/9H,GAAKwX,KAAKxY,GAAI,CAClC,GAEJ,KAAK,EACH,MAAO,CACL,GAGR,GACF,KAAiB8mE,MAAMr3E,KAAM4B,UAC/B,CACA,SAASq0M,uBAAuB15L,EAAGhL,GACjC,IAAIV,EAAI,mBACR,OADgC0L,EAAEvP,QAAQ6D,EAAG,IAAI7D,QAAQ,MAAO,MAASuE,EAAEvE,QAAQ6D,EAAG,IAAI7D,QAAQ,MAAO,GAE3G,CACA,SAASkpM,aAAa35L,EAAGhL,EAAGV,EAAGN,GAC7B,IAAK,IAAI21B,EAAI,KAAMx1B,GAAI,EAAI1F,EAAI44L,SAASuS,qBAAqB,UAAW1lM,EAAI,EAAGA,EAAIzF,EAAEnJ,OAAQ4O,IAAK,CAChG,IAAIW,EAAIpG,EAAEyF,GAAIe,EAAIJ,EAAE2zL,aAAa,OACjC,GAAIvzL,GAAKykM,uBAAuBzkM,EAAG+K,GAAI,CACrC2pB,EAAI90B,EAAGV,GAAI,EACX,KACF,CACF,CACA,IAAKw1B,KAAMA,EAAI09J,SAAS11G,cAAc,WAAavmF,KAAO,kBAAmBu+B,EAAElN,IAAMzc,EAAGhM,GAAI,CAC1F,IAAIglC,EAAIhlC,EAAEgM,GACVi5L,YAAYjgK,EAAG6gK,qBAAuBlwK,EAAIqP,EAC5C,CACA1kC,GAAK7N,OAAOoc,KAAKvO,GAAG9B,SAAQ,SAASuJ,GACnC4tB,IAAY,UAAN5tB,GAAuB,UAANA,EAAgB4tB,EAAE5tB,GAAKzH,EAAEyH,GAAK4tB,EAAE8+J,aAAa1sL,EAAGzH,EAAEyH,IAC3E,IACA,IAAI/C,EAAI,SAAS+C,EAAGq4B,GAClB,GAAIzK,IAAMA,EAAE+0B,QAAU,KAAM/0B,EAAEmwK,OAAS,KAAMN,aAAY,WAClD,MAAL7vK,GAAaA,EAAEu+J,YAAcv+J,EAAEu+J,WAAWC,YAAYx+J,EACxD,IAAI5tB,GAAI,CACN,IAAIkZ,EAAIlZ,EAAEq4B,GACV,OAAOp/B,IAAKigB,CACd,CACAjgB,GACF,EACA,OAAO20B,EAAE+0B,QAAU1lD,EAAEwQ,KAAK,KAAMmgB,EAAE+0B,SAAU/0B,EAAEmwK,OAAS9gM,EAAEwQ,KAAK,KAAMmgB,EAAEmwK,QAAS,CAC7EhvM,OAAQ6+B,EACRowK,WAAY5lM,EAEhB,CACA,SAAS6lM,WAAWh6L,EAAGhL,GACrB,IAAK,IAAIV,EAAIjP,UAAUC,OAAS,QAAsB,IAAjBD,UAAU,GAAgBA,UAAU,GAAK,CAAC,EAAG2O,EAAI3O,UAAUC,OAAS,EAAID,UAAU,QAAK,EAAQskC,EAAI,KAAMx1B,GAAI,EAAI1F,EAAI44L,SAASuS,qBAAqB,QAAS1lM,EAAI,EAAGA,EAAIzF,EAAEnJ,OAAQ4O,IAAK,CACzN,IAAIW,EAAIpG,EAAEyF,GAAIe,EAAIJ,EAAE2zL,aAAa,QAASxvJ,EAAInkC,EAAE2zL,aAAa,OAC7D,GAAIvzL,GAAKykM,uBAAuBzkM,EAAG+K,IAAMg5B,IAAM1kC,EAAE26E,IAAK,CACpDtlD,EAAI90B,EAAGV,GAAI,EACX,KACF,CACF,CACA,IAAKw1B,KAAMA,EAAI09J,SAAS11G,cAAc,SAAW82G,aAAa,OAAQzoL,GAAIhM,GAAI,CAC5E,IAAIgF,EAAIhF,EAAEgM,GACVi5L,YAAYjgM,EAAGihM,mBAAqBtwK,EAAI3wB,EAC1C,CACA1E,GAAK7N,OAAOoc,KAAKvO,GAAG9B,SAAQ,SAAS4hC,GACnCzK,GAAKA,EAAE8+J,aAAar0J,EAAG9/B,EAAE8/B,GAC3B,IACA,IAAIr4B,EAAI,SAASq4B,EAAGnf,GAClB,GAAI0U,IAAMA,EAAE+0B,QAAU,KAAM/0B,EAAEmwK,OAAS,KAAMN,aAAY,WAClD,MAAL7vK,GAAaA,EAAEu+J,YAAcv+J,EAAEu+J,WAAWC,YAAYx+J,EACxD,IAAIyK,GAAI,CACN,IAAI1/B,EAAI0/B,EAAEnf,GACV,OAAOjgB,IAAKN,CACd,CACAM,GACF,EACA,OAAO20B,EAAE+0B,QAAU3iD,EAAEyN,KAAK,KAAMmgB,EAAE+0B,SAAU/0B,EAAEmwK,OAAS/9L,EAAEyN,KAAK,KAAMmgB,EAAEmwK,QAAS,CAC7EI,KAAMvwK,EACNowK,WAAY5lM,EAEhB,CACA,SAASgmM,WAAWn6L,EAAGhL,GACrB,IAAIV,EAAIU,EAAEolM,MAAOpmM,EAAIgB,EAAEqlM,iBACvB,OAAO,IAAIvyM,SAAQ,SAAS6hC,EAAGx1B,GAC7B,IAAI1F,EAAIkrM,aAAa35L,EAAG2pB,EAAGr1B,EAAGN,GAAIE,EAAIzF,EAAE3D,OAAY2D,EAAEsrM,YACjD1S,SAASuS,qBAAqB,QAAQ,GAAGpS,YAAYtzL,EAC5D,GACF,CACA,SAASomM,qBAAqBt6L,EAAGhL,IACzB,MAALA,GAAaA,EAAIgL,EAAE1a,UAAY0P,EAAIgL,EAAE1a,QACtC,IAAK,IAAIgP,EAAI,EAAGN,EAAI,IAAIpG,MAAMoH,GAAIV,EAAIU,EAAGV,IACvCN,EAAEM,GAAK0L,EAAE1L,GACX,OAAON,CACT,CACA,SAASumM,kBAAkBv6L,GACzB,GAAIpS,MAAMi3B,QAAQ7kB,GAChB,OAAOA,CACX,CACA,SAASw6L,mBAAmBx6L,EAAGhL,EAAGV,EAAGN,EAAG21B,EAAGx1B,EAAG1F,GAC5C,IACE,IAAIyF,EAAI8L,EAAE7L,GAAG1F,GAAIoG,EAAIX,EAAEvN,KACzB,CAAE,MAAOsO,GAEP,YADAX,EAAEW,EAEJ,CACAf,EAAE2pB,KAAO7oB,EAAEH,GAAK/M,QAAQC,QAAQ8M,GAAGpI,KAAKuH,EAAG21B,EAC7C,CACA,SAAS8wK,oBAAoBz6L,GAC3B,OAAO,WACL,IAAIhL,EAAIvR,KAAM6Q,EAAIjP,UAClB,OAAO,IAAIyC,SAAQ,SAASkM,EAAG21B,GAC7B,IAAIx1B,EAAI6L,EAAE86D,MAAM9lE,EAAGV,GACnB,SAAS7F,EAAEoG,GACT2lM,mBAAmBrmM,EAAGH,EAAG21B,EAAGl7B,EAAGyF,EAAG,OAAQW,EAC5C,CACA,SAASX,EAAEW,GACT2lM,mBAAmBrmM,EAAGH,EAAG21B,EAAGl7B,EAAGyF,EAAG,QAASW,EAC7C,CACApG,OAAE,EACJ,GACF,CACF,CACA,SAASisM,yBAAyB16L,EAAGhL,GACnC,IAAIV,EAAS,MAAL0L,EAAY,YAAc+lB,OAAS,KAAO/lB,EAAE+lB,OAAO+nD,WAAa9tE,EAAE,cAC1E,GAAS,MAAL1L,EAAW,CACb,IAA4B7F,EAAGyF,EAA3BF,EAAI,GAAI21B,GAAI,EAAIx1B,GAAI,EACxB,IACE,IAAKG,EAAIA,EAAEiG,KAAKyF,KAAM2pB,GAAKl7B,EAAI6F,EAAE4mB,QAAQ2C,QAAU7pB,EAAEjJ,KAAK0D,EAAE9H,QAAUqO,GAAKhB,EAAE1O,SAAW0P,GAAK20B,GAAI,GAEnG,CAAE,MAAO90B,GACPV,GAAI,EAAID,EAAIW,CACd,CAAE,QACA,KACG80B,GAAiB,MAAZr1B,EAAEilM,QAAkBjlM,EAAEilM,QAC9B,CAAE,QACA,GAAIplM,EACF,MAAMD,CACV,CACF,CACA,OAAOF,CACT,CACF,CACA,SAAS2mM,qBACP,MAAM,IAAIj4K,UAAU,6IACtB,CACA,SAASk4K,iBAAiB56L,EAAGhL,GAC3B,OAAOulM,kBAAkBv6L,IAAM06L,yBAAyB16L,EAAGhL,IAAM6lM,+BAA+B76L,EAAGhL,IAAM2lM,oBAC3G,CACA,SAASE,+BAA+B76L,EAAGhL,GACzC,GAAIgL,EAAG,CACL,GAAgB,iBAALA,EACT,OAAOs6L,qBAAqBt6L,EAAGhL,GACjC,IAAIV,EAAI7N,OAAO4H,UAAUnG,SAASqS,KAAKyF,GAAG7O,MAAM,GAAI,GACpD,GAAU,WAANmD,GAAkB0L,EAAEtO,cAAgB4C,EAAI0L,EAAEtO,YAAY2D,MAAa,QAANf,GAAqB,QAANA,EAC9E,OAAO1G,MAAM3F,KAAKqM,GACpB,GAAU,cAANA,GAAqB,2CAA2CyD,KAAKzD,GACvE,OAAOgmM,qBAAqBt6L,EAAGhL,EACnC,CACF,CACA,SAAS8lM,cAAc96L,EAAGhL,GACxB,IAAIV,EAAGN,EAAG21B,EAAGx1B,EAAG1F,EAAI,CAClB0qM,MAAO,EACPpmE,KAAM,WACJ,GAAW,EAAPppG,EAAE,GACJ,MAAMA,EAAE,GACV,OAAOA,EAAE,EACX,EACAyvK,KAAM,GACNC,IAAK,IAEP,OAAOllM,EAAI,CACT+mB,KAAMhnB,EAAE,GACRolM,MAAOplM,EAAE,GACTqlM,OAAQrlM,EAAE,IACQ,mBAAV6xB,SAAyB5xB,EAAE4xB,OAAO+nD,UAAY,WACtD,OAAOrqF,IACT,GAAI0Q,EACJ,SAASD,EAAEe,GACT,OAAO,SAAS+jC,GACd,OAMJ,SAAW/jC,GACT,GAAIX,EACF,MAAM,IAAIouB,UAAU,mCACtB,KAAOj0B,GACL,IACE,GAAI6F,EAAI,EAAGN,IAAM21B,EAAW,EAAP10B,EAAE,GAASjB,EAAEulM,OAAStkM,EAAE,GAAKjB,EAAEslM,SAAW3vK,EAAI31B,EAAEulM,SAAW5vK,EAAEpvB,KAAKvG,GAAI,GAAKA,EAAEknB,SAAWyO,EAAIA,EAAEpvB,KAAKvG,EAAGiB,EAAE,KAAK4oB,KAChI,OAAO8L,EACT,OAAQ31B,EAAI,EAAG21B,IAAM10B,EAAI,CAChB,EAAPA,EAAE,GACF00B,EAAEhjC,QACAsO,EAAE,IACJ,KAAK,EACL,KAAK,EACH00B,EAAI10B,EACJ,MACF,KAAK,EACH,OAAOxG,EAAE0qM,QAAS,CAChBxyM,MAAOsO,EAAE,GACT4oB,MAAM,GAEV,KAAK,EACHpvB,EAAE0qM,QAASnlM,EAAIiB,EAAE,GAAIA,EAAI,CACvB,GAEF,SACF,KAAK,EACHA,EAAIxG,EAAE4qM,IAAIvgM,MAAOrK,EAAE2qM,KAAKtgM,MACxB,SACF,QACE,KAAkB6wB,GAAdA,EAAIl7B,EAAE2qM,MAAc9zM,OAAS,GAAKqkC,EAAEA,EAAErkC,OAAS,MAAiB,IAAT2P,EAAE,IAAqB,IAATA,EAAE,IAAW,CACpFxG,EAAI,EACJ,QACF,CACA,GAAa,IAATwG,EAAE,MAAc00B,GAAK10B,EAAE,GAAK00B,EAAE,IAAM10B,EAAE,GAAK00B,EAAE,IAAK,CACpDl7B,EAAE0qM,MAAQlkM,EAAE,GACZ,KACF,CACA,GAAa,IAATA,EAAE,IAAYxG,EAAE0qM,MAAQxvK,EAAE,GAAI,CAChCl7B,EAAE0qM,MAAQxvK,EAAE,GAAIA,EAAI10B,EACpB,KACF,CACA,GAAI00B,GAAKl7B,EAAE0qM,MAAQxvK,EAAE,GAAI,CACvBl7B,EAAE0qM,MAAQxvK,EAAE,GAAIl7B,EAAE4qM,IAAItuM,KAAKkK,GAC3B,KACF,CACA00B,EAAE,IAAMl7B,EAAE4qM,IAAIvgM,MAAOrK,EAAE2qM,KAAKtgM,MAC5B,SAEJ7D,EAAID,EAAEuF,KAAKyF,EAAGvR,EAChB,CAAE,MAAOuqC,GACP/jC,EAAI,CACF,EACA+jC,GACChlC,EAAI,CACT,CAAE,QACAM,EAAIq1B,EAAI,CACV,CACF,GAAW,EAAP10B,EAAE,GACJ,MAAMA,EAAE,GACV,MAAO,CACLtO,MAAOsO,EAAE,GAAKA,EAAE,QAAK,EACrB4oB,MAAM,EAEV,CArEWhpB,CAAE,CACPI,EACA+jC,GAEJ,CACF,CAiEF,CACA,SAAS+hK,iBAAiB/6L,GACxB,IAAKA,EACH,MAAM,IAAI1Y,MAAM,gCAElB,OADQ,IAAIskJ,SAAS,OAAQ,sBACtB52I,CAAEgL,GAAGvT,MAAK,SAAS6H,GACxB,OAAOA,EAAEk0E,OACX,IAAGniE,OAAM,SAAS/R,GAChB,MAAM+X,QAAQ/F,MAAM,0BAA0B1K,OAAOoE,EAAG,KAAM1L,GAAIA,CACpE,GACF,CACA,SAAS0mM,iBAAiBhrL,IAAK6H,GAAIuiL,MAAOC,kBACxC,GAAIA,iBAAkB,CACpB,IAAIY,WAAaZ,iBAAiBrqL,KAClCirL,YAAmC,iBAAdA,YAA0B,QAASA,aAAejrL,IAAMirL,WAAWjrL,IAC1F,CACA,IAAIkrL,OACJ,IACEA,OAAS,IAAIxxH,IAAI15D,IACnB,CAAE,MAAOhQ,GAEP,OADAqM,QAAQ/F,MAAM,0BAA2BtG,QAAI6X,GAAG,IAAIvwB,MAAM,gBAAgBsU,OAAOoE,IAEnF,CACA,IAAIm7L,SAAW,WACb,IAAIn7L,EAAIy6L,qBAAoB,WAC1B,IAAIzlM,EACJ,OAAO8lM,cAAcr3M,MAAM,SAAS6Q,GAClC,OAAQA,EAAE6kM,OACR,KAAK,EACH,cAAc3nL,MAAQ,IAAM,CAC1B,EACAupL,iBAAiB,eACf,CACF,EACA,GAEJ,KAAK,EACH,MAAqB,CACnB,GACM,OAFD/lM,EAAIV,EAAEy+H,aAEE,EAAS/9H,EAAEwzE,UAAYxzE,GAExC,KAAK,EACH,MAAO,CACL,EACAwc,OAEJ,KAAK,EACH,MAAO,CACL,GAGR,GACF,IACA,OAAO,WACL,OAAOxR,EAAE86D,MAAMr3E,KAAM4B,UACvB,CACF,CAjCe,GAkCfgnB,QAAQkxB,IAAI,WAAY29J,OAAO/vH,MAAOgwH,WAAW1uM,MAAK,SAAS6hD,GAC7DA,EAAE4sJ,OAAO/vH,MAAM1+E,MAAK,SAASuT,GAC3B,OAAOA,EAAE6R,MACX,IAAGplB,KAAK,WACN,IAAImW,KAAO63L,qBAAoB,SAASrzM,MACtC,IAAIwb,KAAMwyH,KAAMgmE,GAAIC,cAAeC,WAAYC,SAAUzwM,OAAQ0wM,kBAAmBh7E,UACpF,OAAOs6E,cAAcr3M,MAAM,SAASg4M,QAClC,OAAQA,OAAOtC,OACb,KAAK,EACH,MAAO,CACL,EACArxM,QAAQoE,IAAI,CACV6uM,iBAAiB,QACjBA,iBAAiB,SAGvB,KAAK,EACHn4L,KAAOg4L,iBAAiB9/H,WAAM,EAAQ,CACpC2gI,OAAO1oE,OACP,IACEqC,KAAOxyH,KAAK,GAAIw4L,GAAKx4L,KAAK,GAAIy4L,cAAgB,CAChD93M,QAAS,CAAC,EACVC,OAAQ,CACND,QAAS,CAAC,IAEX+3M,WAAaJ,OAAOrkE,SAAS7qI,MAAM,KAAKmF,MAAM,GAAI,GAAGwvD,KAAK,KAAM46I,SAAWnmE,KAAKsmE,SAASR,OAAOrkE,UACnG,IACE,GAAI/rI,OAAS,IAAIswM,GAAGt3F,OAAO,+DAA+DloG,OAAOxU,KAAM,QACjHm0M,UAAWzwM,OAAO6wM,kBAAP7wM,CAA0BuwM,cAAc93M,QAAS83M,cAAc73M,OAAQo4M,KAAK,WAAYN,WAAYC,UAAWC,kBAAoBH,cAAc73M,OAAOD,SAAW83M,cAAc93M,QAAS62M,OAASoB,mBAAqBpB,MAAMtC,WAC7N,OAAOt3E,UAAYg7E,kBAAkBpB,MAAMtC,aAAe0D,kBAAmB3jL,QAAG,EAAQ2oG,WAAY,CAClG,GAEJ3oG,QAAG,EAAQ2jL,kBACb,CAAE,MAAOx7L,GACP6X,GAAG,IAAIvwB,MAAM,2BAA2BsU,OAAOoE,IACjD,CACA,MAAO,CACL,GAGR,GACF,IACA,OAAO,SAASA,GACd,OAAO4C,KAAKk4D,MAAMr3E,KAAM4B,UAC1B,CACF,CA1CQ,IA0CHghB,OAAM,SAASrG,GAClB6X,GAAG7X,EACL,GACF,GACF,CACA,SAAS67L,eAAe77L,EAAGhL,GACzB,OAAO,IAAIlN,SAAQ,SAASwM,EAAGN,GAC7BgnM,iBAAiBh7L,GAAG,SAAS2pB,EAAGx1B,GAC9B,GAAIw1B,EACF31B,EAAE21B,OACC,CACH,IAAIl7B,EAAGyF,EAAGW,GAAU,MAALG,GAA+B,QAAjBvG,EAAIuG,EAAEolM,aAAyB,IAAN3rM,OAAe,EAASA,EAAEqpM,aAAe,gBAAgBl8L,OAAY,MAAL5G,GAA+B,QAAjBd,EAAIc,EAAEolM,aAAyB,IAANlmM,OAAe,EAASA,EAAEmB,KAAM,aAAcJ,EAAIw0I,WAAW50I,GAAKV,EAC/NG,EAAEW,EACJ,CACF,GAAGD,EAAEolM,MAAOplM,EAAEqlM,iBAChB,GACF,CACA,SAASyB,6BAA6B97L,EAAGhL,GACvC,IAAK,MAAMV,KAAK0L,EAAG,CACjB,MAAMhM,EAAIgB,EAAE1I,WAAWgI,EAAEe,MACzB,IAAIs0B,EAAI30B,EAAEvE,QAAQ6D,EAAEe,KAAM,IAC1B,GAAIrB,EAAG,CACL,GAAI21B,EAAEr9B,WAAW,KAAM,CAErB,OAAOq9B,EAAI,IAAIA,IAAK,CAClBoyK,eAFQznM,EAAEe,KAGV2mM,OAAQryK,EACRsyK,OAAQ3nM,EAEZ,CAAO,GAAU,KAANq1B,EACT,MAAO,CACLoyK,eAAgBznM,EAAEe,KAClB2mM,OAAQ,IACRC,OAAQ3nM,EAEd,CACA,MAAMH,EAAIG,EAAE4nM,OAASlnM,EAAE1I,WAAWgI,EAAE4nM,OACpC,IAAIztM,EAAI6F,EAAE4nM,OAASlnM,EAAEvE,QAAQ6D,EAAE4nM,MAAO,IACtC,GAAI5nM,EAAE4nM,OAAS/nM,EAAG,CAChB,GAAI1F,GAAKA,EAAEnC,WAAW,KAAM,CAE1B,OAAOmC,EAAI,IAAIA,IAAK,CAClBstM,eAFQznM,EAAE4nM,MAGVF,OAAQvtM,EACRwtM,OAAQ3nM,EAEZ,CAAO,GAAU,KAAN7F,EACT,MAAO,CACLstM,eAAgBznM,EAAE4nM,MAClBF,OAAQ,IACRC,OAAQ3nM,EAEd,CACF,CACF,CACA,SAAS6nM,YAAYn8L,EAAGhL,GACtB,IAAK,MAAMV,KAAK0L,EACd,GAAIhL,IAAMV,EAAEe,MAAQf,EAAE4nM,OAASlnM,IAAMV,EAAE4nM,MACrC,OAAO5nM,CACb,CACA,SAAS8nM,gBAAgBp8L,EAAGhL,GAC1B,MAAMV,EAAIw7L,uBACVx7L,EAAEhP,OAAS,GAAKgP,EAAE9B,SAASwB,IACpB,MAALgM,GAAaA,EAAEu+C,MAAM50B,GAAMA,EAAEt0B,OAASrB,EAAEqB,QAAS2K,EAAEjV,KAAKiJ,EAAE,IACxDgM,GAAKA,EAAE1a,OAAS,GAAK0a,EAAExN,SAASwB,IAClCgB,EAAExC,SAASm3B,IACTA,EAAE0yK,YAAYroM,EAAE,GAChB,GAEN,CACA,SAASsoM,aACP,OAAOA,WAAa71M,OAAO0nF,QAAU,SAASnuE,GAC5C,IAAK,IAAIhL,EAAI,EAAGA,EAAI3P,UAAUC,OAAQ0P,IAAK,CACzC,IAAIV,EAAIjP,UAAU2P,GAClB,IAAK,IAAIhB,KAAKM,EACZ7N,OAAO4H,UAAU4L,eAAeM,KAAKjG,EAAGN,KAAOgM,EAAEhM,GAAKM,EAAEN,GAC5D,CACA,OAAOgM,CACT,EAAGs8L,WAAWxhI,MAAMr3E,KAAM4B,UAC5B,CACAyN,eAAeypM,aAAY3zG,GAAsC,IAAnCq4E,MAAOjhK,EAAGw8L,mBAAoBxnM,GAAG4zF,EAC7D,OAAO,IAAI9gG,SAAQ,CAACwM,EAAGN,KACrB,IACEgB,EAAIV,EAAEU,GAAK,IAAI42I,SAAS,YAAa,WAAW5rI,6CAArC,CAAmF,CAC5F1L,EACAN,GAEJ,CAAE,MAAO21B,GACP31B,EAAE21B,EACJ,IAEJ,CACA72B,eAAe2pM,gBAAe5xG,GAA4D,IAAzDx1F,KAAM2K,EAAG83L,WAAY9iM,EAAGisK,MAAO3sK,EAAG+lM,iBAAkBrmM,GAAG62F,EACtF,MAAQglG,aAAclmK,GAAMgmK,sBAAsB3vL,EAAGhL,GACrD,OAAO20B,WAAa09J,SAAW,IAAMwU,eAAevnM,EAAG,CACrD8lM,MAAO,CACL/kM,KAAM2K,EACN83L,WAAY9iM,GAEdqlM,iBAAkBrmM,IACjBvH,MAAK,KACN,MAAQmjM,eAAgBz7L,EAAG07L,aAAcphM,GAAMkhM,sBAAsB3vL,EAAGhL,GACxE,OAAOsuB,OAAO70B,EAAG,+BACOuR,QAAQ1L,eAAeH,iGAGrCG,8FAEDH,6EACH1F,CAAC,IACN4X,OAAOlS,GAAMA,IAAKgmM,WAAW7lM,EAAG,CACjC8lM,MAAO,CAAC,EACRC,iBAAkBrmM,IACjBvH,MAAK,KACN,MAAQmjM,eAAgBz7L,EAAG07L,aAAcphM,GAAMkhM,sBAAsB3vL,EAAGhL,GACxE,OAAOsuB,OAAO70B,EAAG,6BACKuR,QAAQ1L,eAAeH,6FAGrCG,4FAEDH,2EACH1F,CAAC,IACJ4X,OAAOlS,GAAMA,IAClB,CACA,SAASuoM,wBAAwB18L,GAC/B,MAAQihK,MAAOjsK,EAAGK,KAAMf,GAAM0L,EAC9B,OAAO62L,wBAAwBviM,EAAGU,EACpC,CACAlC,eAAe6pM,eAAc7xG,GAAgE,IAA7D0xG,mBAAoBx8L,EAAG48L,WAAY5nM,EAAGqlM,iBAAkB/lM,GAAGw2F,EACzF,MAAQm2E,MAAOjtK,EAAGqB,KAAMs0B,EAAGv+B,KAAM+I,EAAG0oM,gBAAiBpuM,GAAMuG,EAAGd,EAAIwoM,wBAAwB1nM,GAC1F,OAAOgL,IAAMouL,cAAcl6L,KAAqBk6L,cAAcl6L,GAAtB,QAANC,EAAiCooM,aAAa,CAC9Et7B,MAAOjtK,EACPwoM,mBAAoBx8L,IACEy8L,gBAAgB,CACtCpnM,KAAMs0B,EACNmuK,WAAYrpM,EACZwyK,MAAOjtK,EACPqmM,iBAAkB/lM,KACf85L,cAAcl6L,GACrB,CACA,SAAS4oM,cAAc98L,GACrB,OAAOs8L,WAAW,CAAC,EAAGt8L,EAAG,CACvBihK,MAAO,UAAWjhK,EAAIA,EAAEihK,MAAQ,GAChC71K,KAAM4U,EAAE5U,MAAQ8kM,oBAChB2M,gBAAiB78L,EAAE68L,iBAAmB78L,EAAE3K,KACxC0nM,WAAY/8L,EAAE+8L,YAAc9M,eAEhC,CACA,SAAS+M,aACP,OAAOA,WAAav2M,OAAO0nF,QAAU,SAASnuE,GAC5C,IAAK,IAAIhL,EAAI,EAAGA,EAAI3P,UAAUC,OAAQ0P,IAAK,CACzC,IAAIV,EAAIjP,UAAU2P,GAClB,IAAK,IAAIhB,KAAKM,EACZ7N,OAAO4H,UAAU4L,eAAeM,KAAKjG,EAAGN,KAAOgM,EAAEhM,GAAKM,EAAEN,GAC5D,CACA,OAAOgM,CACT,EAAGg9L,WAAWliI,MAAMr3E,KAAM4B,UAC5B,CACA,IAAI43M,OAAS,MACX,cAAMC,GACJ,GAAIz5M,KAAK+4M,mBACP,OAAO/4M,KAAK+4M,mBACd,MAAMx8L,QAAU28L,eAAe,CAC7BC,WAAYn5M,KAAKm5M,WACjBJ,mBAAoB/4M,KAAK+4M,mBACzBnC,iBAAmBrlM,IACjB,MAAMV,EAAI7Q,KAAKw0I,KAAKklE,WAAWC,UAAUzD,aAAap+F,KAAK,CACzDvrF,IAAKhb,IAEP,UAAWqyL,SAAW,KAAO/yL,aAAaulM,kBACxC,OAAOvlM,CAAC,IAGd,OAAOgvB,OAAOtjB,EAAG,sCAClB6tL,eAAepqM,KAAKm5M,eAAgBn5M,KAAK+4M,mBAAqBx8L,EAAGvc,KAAK+4M,kBACvE,CACA,SAAMntM,CAAI2Q,EAAGhL,GACX,MAAQqoM,YAAa/oM,GAAI,GAAOU,GAAK,CACnCqoM,aAAa,GACZrpM,QAAUvQ,KAAKy5M,WAClB,IAAKz5M,KAAK65M,OAAQ,CAChB,MAAMnpM,EAAI1Q,KAAKw0I,KAAK08D,cAAelmM,EAAIhL,KAAKm5M,WAAWG,YAAc,UACrE5oM,EAAE1F,KAAO0F,EAAE1F,GAAK,CAAC,GACjB,MAAMyF,EAAIC,EAAE1F,GAAIoG,EAAI,GAAII,EAAI,CAC1Bi7C,QAASzsD,KAAKm5M,WAAW1sJ,SAAW,IAEtCzpD,OAAOC,eAAeuO,EAAG,SAAU,CACjCtO,MAAOlD,KAAKw0I,KAAK5yH,QAAQ7M,IAAM/U,KAAKw0I,KAAK5iI,KACzC8qB,YAAY,IAEd,MAAM6Y,QAAUv1C,KAAKw0I,KAAKslE,MAAMH,UAAUI,oBAAoBjiG,KAAK,CACjEwhG,WAAY7oM,EACZupM,uBAAwBxoM,EACxByoM,UAAW7oM,EACX+nM,WAAYn5M,KAAKm5M,WACjBe,OAAQl6M,KAAKw0I,aAETjkI,EAAEpB,KAAKomC,EAAE+jK,WAAY/jK,EAAE0kK,UAAW1kK,EAAEykK,8BAA+Bh6M,KAAKw0I,KAAKslE,MAAMH,UAAUQ,cAAcriG,KAAKyhG,WAAW,CAAC,EAAGhkK,EAAG,CACtIwjK,mBAAoBxoM,IAExB,CACAvQ,KAAK+vM,IAAMx/L,EAAGvQ,KAAK65M,QAAS,EAC5B,MAAM3zK,QAAU31B,EAAE3E,IAAI2Q,GACtB,OAAOsjB,OAAOqG,EAAG,GAAG+jK,QAAQjqM,KAAKm5M,mCAAmC58L,MAAO1L,QAAUq1B,IAAMA,CAC7F,CACAj4B,WAAAA,CAAWmsM,GAA6B,IAA1BjB,WAAY58L,EAAGi4H,KAAMjjI,GAAG6oM,EACpCp6M,KAAK65M,QAAS,EAAI75M,KAAK+vM,SAAM,EAAQ/vM,KAAKm5M,WAAa58L,EAAGvc,KAAKw0I,KAAOjjI,CACxE,GAEF,MAAM8oM,SACJriG,EAAAA,CAAGzmG,GACW,mBAALA,GAAmBvR,KAAKoO,UAAU7L,IAAIgP,EAC/C,CACAylG,IAAAA,CAAKzlG,GACH,MAAMV,EAAI7Q,KACVA,KAAKg4G,IAAG,SAASznG,IAAQ,QAAA2Y,EAAAtnB,UAAAC,OAAHqkC,EAAC,IAAA/7B,MAAA+e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAD+c,EAAC/c,GAAAvnB,UAAAunB,GACrB,OAAOtY,EAAE6W,OAAOnX,GAAIgB,EAAE8lE,MAAM,KAAMnxC,EACpC,GACF,CACA4xE,IAAAA,GAAW,QAAA/W,EAAAn/F,UAAAC,OAAH0P,EAAC,IAAApH,MAAA42F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAADzvF,EAACyvF,GAAAp/F,UAAAo/F,GACP,IAAInwF,EACJ,OAAO7Q,KAAKoO,UAAU8b,KAAO,GAAKlqB,KAAKoO,UAAUW,SAASwB,IACxDM,EAAIN,KAAKgB,EAAE,IACTV,CACN,CACA6W,MAAAA,CAAOnW,GACLvR,KAAKoO,UAAUgZ,OAAO7V,EACxB,CACAqV,SAAAA,GACE5mB,KAAKoO,UAAU4tL,OACjB,CACA/tL,WAAAA,CAAYsD,GACVvR,KAAK2H,KAAO,GAAI3H,KAAKoO,UAA4B,IAAIwc,IAAOrZ,IAAMvR,KAAK2H,KAAO4J,EAChF,EAEF,MAAM+oM,kBAAkBD,SACtBviG,IAAAA,GAAW,QAAAtW,EAAA5/F,UAAAC,OAAH0P,EAAC,IAAApH,MAAAq3F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAADlwF,EAACkwF,GAAA7/F,UAAA6/F,GACP,IAAI5wF,EACJ,MAAMN,EAAIpG,MAAM3F,KAAKxE,KAAKoO,WAC1B,GAAImC,EAAE1O,OAAS,EAAG,CAChB,IAAIqkC,EAAI,EACR,MAAMx1B,EAAK1F,IAAY,IAANA,IAAgBk7B,EAAI31B,EAAE1O,OAASwC,QAAQC,QAAQiM,EAAE21B,KAAKmxC,MAAM,KAAM9lE,IAAIvI,KAAK0H,GAAK1F,GACjG6F,EAAIH,GACN,CACA,OAAOrM,QAAQC,QAAQuM,EACzB,EAEF,SAAS0pM,gBAAgBh+L,EAAGhL,GAC1B,IAAKgjI,SAAShjI,GACZ,OAAO,EACT,GAAIgL,IAAMhL,EACR,IAAK,MAAMV,KAAK0L,EACd,KAAM1L,KAAKU,GACT,OAAO,EAEb,OAAO,CACT,CACA,MAAMipM,0BAA0BH,SAC9BviG,IAAAA,CAAKvmG,GACHgjI,SAAShjI,IAAMsR,MAAM,qBAAqB7iB,KAAK2H,mCAC/C,IAAK,MAAMkJ,KAAK7Q,KAAKoO,UACnB,IACE,MAAMmC,EAAIM,EAAEU,GACZ,IAAIgpM,gBAAgBhpM,EAAGhB,GAElB,CACHvQ,KAAKi7D,QAAQ,oDAAoDj7D,KAAK2H,eACtE,KACF,CAJE4J,EAAIhB,CAKR,CAAE,MAAOA,GACPw5L,OAAOx5L,GAAIvQ,KAAKi7D,QAAQ1qD,EAC1B,CACF,OAAOgB,CACT,CACAtD,WAAAA,CAAYsD,GACVnL,QAASpG,KAAKi7D,QAAUp4C,MAAO7iB,KAAK2H,KAAO4J,CAC7C,EAEF,MAAMkpM,2BAA2BJ,SAC/BviG,IAAAA,CAAKvmG,GACHgjI,SAAShjI,IAAMsR,MAAM,8BAA8B7iB,KAAK2H,iCACxD,MAAMkJ,EAAI1G,MAAM3F,KAAKxE,KAAKoO,WAC1B,GAAIyC,EAAEhP,OAAS,EAAG,CAChB,IAAI0O,EAAI,EACR,MAAM21B,EAAKl7B,IAAO++L,OAAO/+L,GAAIhL,KAAKi7D,QAAQjwD,GAAIuG,GAAIb,EAAK1F,IACrD,GAAIuvM,gBAAgBhpM,EAAGvG,IACrB,GAAIuG,EAAIvG,EAAGuF,EAAIM,EAAEhP,OACf,IACE,OAAOwC,QAAQC,QAAQuM,EAAEN,KAAKgB,IAAIvI,KAAK0H,EAAGw1B,EAC5C,CAAE,MAAOz1B,GACP,OAAOy1B,EAAEz1B,EACX,OAEFzQ,KAAKi7D,QAAQ,iDAAiDj7D,KAAK2H,eACrE,OAAO4J,CAAC,EAEV,OAAOlN,QAAQC,QAAQoM,EAAEa,GAC3B,CACA,OAAOlN,QAAQC,QAAQiN,EACzB,CACAtD,WAAAA,CAAYsD,GACVnL,QAASpG,KAAKi7D,QAAUp4C,MAAO7iB,KAAK2H,KAAO4J,CAC7C,EAEF,MAAMmpM,aACJ9B,WAAAA,CAAYrnM,GACVsuB,OAAOgxH,cAAct/I,GAAI,oCACzB,MAAMV,EAAIU,EAAEK,KACZiuB,OAAOhvB,EAAG,0CAA2C7Q,KAAK24M,gBAAgB9nM,KAAO7Q,KAAK24M,gBAAgB9nM,GAAKU,EAAGvO,OAAOoc,KAAKpf,KAAK25M,WAAW5qM,SAASwB,IACjJ,MAAM21B,EAAI30B,EAAEhB,GACZ21B,GAAKlmC,KAAK25M,UAAUppM,GAAGynG,GAAG9xE,EAAE,IAEhC,CACAy0K,YAAAA,CAAappM,GACXsuB,OAAOtuB,EAAG,uBACV,MAAMV,EAAI7Q,KAAK24M,gBAAgBpnM,GAC/BsuB,OAAOhvB,EAAG,eAAeU,yBAA0BvO,OAAOoc,KAAKvO,GAAG9B,SAASwB,IACnE,SAANA,GAAgBvQ,KAAK25M,UAAUppM,GAAGmX,OAAO7W,EAAEN,GAAG,GAElD,CACAqqM,OAAAA,CAAOC,GAAuC,IAApClB,UAAWpoM,EAAGonM,gBAAiB9nM,GAAGgqM,EAC1C73M,OAAOoc,KAAK7N,GAAGxC,SAASwB,IACtBsvB,QAAQ7/B,KAAK25M,UAAUppM,GAAI,aAAaA,8CAA+CvQ,KAAK25M,UAAUppM,GAAKgB,EAAEhB,EAAE,IAC7GvN,OAAOoc,KAAKvO,GAAG9B,SAASwB,IAC1BsvB,QAAQ7/B,KAAK24M,gBAAgBpoM,GAAI,eAAeA,8CAA+CvQ,KAAK44M,YAAY/nM,EAAEN,GAAG,GAEzH,CACAtC,WAAAA,CAAYsD,GACVvR,KAAK24M,gBAAkB,CAAC,EAAG34M,KAAK25M,UAAYpoM,EAAGvR,KAAK86M,cAAgB93M,OAAOoc,KAAK7N,EAClF,EAEF,SAASwpM,aACP,OAAOA,WAAa/3M,OAAO0nF,QAAU,SAASnuE,GAC5C,IAAK,IAAIhL,EAAI,EAAGA,EAAI3P,UAAUC,OAAQ0P,IAAK,CACzC,IAAIV,EAAIjP,UAAU2P,GAClB,IAAK,IAAIhB,KAAKM,EACZ7N,OAAO4H,UAAU4L,eAAeM,KAAKjG,EAAGN,KAAOgM,EAAEhM,GAAKM,EAAEN,GAC5D,CACA,OAAOgM,CACT,EAAGw+L,WAAW1jI,MAAMr3E,KAAM4B,UAC5B,CACA,SAASo5M,mBAAmBz+L,GAC1B,OAAOw+L,WAAW,CAChBE,iBAAkB,OAClBC,OAAO,EACPC,YAAY,EACZjG,mBAAmB,GAClB34L,EACL,CACA,SAAS6+L,kBAAkB7+L,EAAGhL,GAC5B,OAAOA,EAAE7I,KAAKmI,IACZ,MAAMN,EAAImoM,YAAYn8L,EAAG1L,EAAEwqM,aAC3B,OAAOx7K,OAAOtvB,EAAG,qBAAqBM,EAAEwqM,yCAAyC9qM,GAAK65L,eAAe,CACnG+O,WAAY5oM,EACZsjM,QAASt3L,OACJ,CACLi8L,OAAQjoM,EACR+qM,cAAeN,mBAAmBnqM,GACnC,GAEL,CACA,SAAS0qM,wBAAwBh/L,GAC/B,OAAOA,EAAIA,EAAE7T,KAAK6I,GAAY,MAANA,EAAYA,EAAIA,EAAE1I,WAAW,MAAQ0I,EAAEvE,QAAQ,KAAM,IAAMuE,IAAK,EAC1F,CACA,SAASiqM,cAAcj/L,EAAGhL,EAAGV,GAC3B,MAAQ4qM,UAAWlrM,EAAGmrM,qBAAsBx1K,EAAGy1K,YAAajrM,GAAMG,EAClE,GAAIU,EAAEqQ,QAAQg6L,UAAW,CACvBlrM,EAAE3B,SAAS0B,IACT,MAAQw6L,WAAY75L,GAAMX,EAAGe,EAAID,EAAEsqM,YAAYjwM,IAAI2Q,EAAE3K,MACrDsnM,eAAe1nM,EAAI,CACjB2nM,WAAY/nM,EACZ2nM,mBAAoBvnM,EAAEunM,mBACtBnC,iBAAmBrhK,IACjB,MAAMhgC,EAAIhE,EAAEmoM,WAAWC,UAAUzD,aAAap+F,KAAK,CACjDvrF,IAAKgpB,IAEP,GAAIhgC,aAAa6gM,kBACf,OAAO7gM,CAAC,GAEV,CACF4jM,WAAY/nM,EACZ2nM,wBAAoB,EACpBnC,iBAAmBrhK,IACjB,MAAMhgC,EAAIhE,EAAEmoM,WAAWC,UAAUzD,aAAap+F,KAAK,CACjDvrF,IAAKgpB,IAEP,GAAIhgC,aAAa6gM,kBACf,OAAO7gM,CAAC,GAEZ,IAEJ,MAAMvK,EAAI44L,SAASkY,yBACnBvrM,EAAExB,SAAS0B,IACT,MAAQgmM,KAAMrlM,EAAGklM,WAAY9kM,GAAM+kM,WAAW9lM,GAAG,QAC9C,CACDsrM,IAAK,UACLC,GAAI,UACFzmK,IACF,MAAMhgC,EAAIhE,EAAEmoM,WAAWC,UAAUpD,WAAWz+F,KAAK,CAC/CvrF,IAAKgpB,IAEP,GAAIhgC,aAAaihM,gBACf,OAAOjhM,CAAC,IAEZ/D,GAAKxG,EAAE+4L,YAAY3yL,EAAE,IACnB80B,EAAEn3B,SAAS0B,IACb,MAAQgmM,KAAMrlM,EAAGklM,WAAY9kM,GAAM+kM,WAAW9lM,GAAG,QAC9C,CACDsrM,IAAK,UACLC,GAAI,WACFzmK,IACF,MAAMhgC,EAAIhE,EAAEmoM,WAAWC,UAAUpD,WAAWz+F,KAAK,CAC/CvrF,IAAKgpB,IAEP,GAAIhgC,aAAaihM,gBACf,OAAOjhM,CAAC,IAEZ/D,GAAKoyL,SAASrtK,KAAKwtK,YAAY3yL,EAAE,IAC/BwyL,SAASrtK,KAAKwtK,YAAY/4L,EAChC,CACF,CACA,SAASixM,aACP,OAAOA,WAAaj5M,OAAO0nF,QAAU,SAASnuE,GAC5C,IAAK,IAAIhL,EAAI,EAAGA,EAAI3P,UAAUC,OAAQ0P,IAAK,CACzC,IAAIV,EAAIjP,UAAU2P,GAClB,IAAK,IAAIhB,KAAKM,EACZ7N,OAAO4H,UAAU4L,eAAeM,KAAKjG,EAAGN,KAAOgM,EAAEhM,GAAKM,EAAEN,GAC5D,CACA,OAAOgM,CACT,EAAG0/L,WAAW5kI,MAAMr3E,KAAM4B,UAC5B,CACA,SAASs6M,iBAAiB3/L,EAAGhL,MACxB,gBAAiBA,KAAOA,EAAE2iM,cAAgBrxL,MAAM,gCAAgCjR,+BACnF,MAAQsiM,YAAarjM,GAAMU,EAAGhB,EAAI8iM,eAAe9hM,EAAGV,GACpD0L,EAAE5U,KAAO4J,EAAEgjM,gBAAiBh4L,EAAE68L,gBAAkB7nM,EAAE8iM,WAAY93L,EAAEihK,MAAQjtK,EAAGgM,EAAEkwC,QAAUl7C,EAAEk7C,QAASlwC,EAAE63L,aAAe7iM,EAAE6iM,YACvH,CACA,SAAS+H,iBACP,MAAO,CACLvqM,KAAM,kBACN,kBAAMwqM,CAAa7/L,GACjB,MAAQi8L,OAAQjnM,EAAG+mM,eAAgBznM,EAAG0nM,OAAQhoM,EAAG2pM,OAAQh0K,EAAGizK,WAAYzoM,GAAM6L,EAC9E,IAAK2tL,sBAAsB34L,KAAO44L,kBAAkB54L,GAAI,CACtD,MAAQ8qM,eAAgBrxM,EAAGsxM,eAAgB7rM,SAAYy1B,EAAEq2K,gBAAgBC,uBAAuBjrM,GAChG2qM,iBAAiBxrM,EAAG1F,GACpB,MAAMoG,EAAI,CACRonM,OAAQjnM,EACR+pM,cAAe,CACbD,YAAaxqM,EACbyjM,QAAS,CACP/jM,GAEF0qM,iBAAkB,OAClBC,OAAO,EACPC,YAAY,IAEb3pM,QAAU00B,EAAE4zK,MAAMH,UAAU8C,sBAAsB3kG,KAAK,CACxDoiG,OAAQh0K,EACRw2K,eAAgBtrM,EAChB+nM,WAAYzoM,EACZ8nM,OAAQjnM,EACR8qM,eAAgBrxM,EAChBsxM,eAAgB7rM,IAElB,OAAOe,GAAKgqM,cAAc9qM,EAAGw1B,EAAG10B,GAAIyqM,WAAW,CAAC,EAAG1/L,EAAG,CACpD8/L,eAAgBrxM,GAEpB,CACA,OAAOuR,CACT,EAEJ,CACA,SAASogM,QAAQpgM,GACf,MAAMhL,EAAIgL,EAAEhU,MAAM,KAClB,OAAoB,IAAbgJ,EAAE1P,OAAe,CACtB+P,KAAML,EAAE,GACRk7C,aAAS,GACM,IAAbl7C,EAAE1P,OAAe,CACnB+P,KAAML,EAAE,GACRk7C,QAASl7C,EAAE,IACT,CACFK,KAAML,EAAE,GACRk7C,QAASl7C,EAAE,GAEf,CACA,SAASqrM,mBAAmBrgM,EAAGhL,EAAGV,EAAGN,GAAc,IAAX21B,EAACtkC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAG8O,EAAC9O,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/C,MAAMkJ,EAAIi/L,QAAQ14L,IAAMrO,MAAOuN,GAAMm7L,mBAAmBrvL,EAAGvR,GAAIoG,EAAIV,GAAKD,EACxE,GAAIW,IAAMikM,mBAAmBjkM,KAAOP,EAAEO,EAAGG,EAAGhB,GAAIa,EAAEwjM,aAAc,CAC9D,MAAMpjM,EAAIxO,OAAOoc,KAAKhO,EAAEwjM,aACxB,IAAK,MAAMr/J,KAAK/jC,EAAG,CACjB,GAAI00B,EAAEqP,GACJ,SACFrP,EAAEqP,IAAK,EACP,MAAMhgC,EAAIonM,QAAQpnK,GAAIj9B,EAAIlH,EAAEwjM,YAAYr/J,GACxCqnK,mBAAmBrgM,EAAG,CACpB3K,KAAM2D,EAAE3D,KACR66C,QAASn0C,EAAE27L,gBACVpjM,GAAG,EAAIq1B,OAAG,EACf,CACF,CACF,CACA,SAASu2K,sBAAsBlgM,EAAGhL,EAAGV,EAAGN,EAAG21B,GACzC,MAAMx1B,EAAI,GAAI1F,EAAI,GAAIyF,EAAI,GAAIW,EAAoB,IAAIwZ,IAAOpZ,EAAoB,IAAIoZ,KAAShJ,QAAS2zB,GAAMh5B,GAAK++L,cAAe/lM,GAAMhE,GAAK4pM,WAAY7iM,GAAM/C,EAC9JqnM,mBAAmBrsM,EAAGM,GAAG,CAAC2gB,EAAGvgB,EAAG0wB,KAC9B,IAAIprB,EACJ,GAAIorB,EACFprB,EAAIhB,OACD,GAAIpL,MAAMi3B,QAAQ9oB,GAAI,CACzB,MAAMpH,EAAIoH,EAAEwiD,MAAMvqB,GAAMA,EAAE8qK,cAAgBpqM,EAAEW,MAAQ2+B,EAAE8qK,cAAgBpqM,EAAEwnM,QACxE,IAAKvnM,EACH,OACFqF,EAAIykM,mBAAmB9pM,EACzB,KAAO,KAAU,IAANoH,EAGT,OAFA/B,EAAIhB,CAEE,CACR,MAAM20C,EAAImpJ,eAAe7hL,EAAG,gBAAiBA,EAAIA,EAAE0iL,YAAc,IACjEhqJ,GAAKz5C,EAAEnJ,KAAK,CACVsK,KAAMX,EAAEW,KACRq5L,WAAY,CACVr5L,KAAMX,EAAEW,KACR4rK,MAAOtzH,EACPviD,KAAM,oBAAqB6pB,EAAIA,EAAE+iL,gBAAkB,SACnD6E,gBAAiB,eAAgB5nL,EAAIA,EAAE6iL,WAAapjM,EAAEW,KACtD0nM,WAAY,GACZ7sJ,QAAS,YAAaj7B,EAAIA,EAAEi7B,aAAU,GAExClgC,IAAK29B,IAEP,IAAIyhC,EAAI,YAAan6D,EAAIA,EAAEw7G,QAAU,GACrC,MAAMt8F,EAAI6qK,wBAAwBhlM,EAAE+9L,SAElC,IAAItjM,EADF0/B,EAAE7uC,QAAU,YAAa2vB,IAE3Bm6D,EAAS,MAALn6D,GAAgC,OAAlBxgB,EAAIwgB,EAAEw7G,cAAmB,EAASh8H,EAAE/H,QAAO,CAACiI,EAAGq/B,MAA2D,KAA9C,MAALG,OAAY,EAASA,EAAEn8B,QAAQg8B,EAAEykK,cAAuB9jM,EAAE5J,KAAKipC,GAAIr/B,IAAI,KAElJ,SAAS86E,EAAE96E,GACT,MAAMq/B,EAAIr/B,EAAExI,KAAKuL,GAAMo/L,eAAe7hL,EAAGvd,KACzC,OAAOsC,EAAEi9E,OAASjjD,EAAEijD,OAAOj9E,EAAEi9E,QAAUjjD,CACzC,CACA,GAAIo7C,EAAG,CACL,MAAMz6E,EAAIy6E,EAAE9pF,OACZ,IAAK,IAAI0uC,EAAI,EAAGA,EAAIr/B,EAAGq/B,IAAK,CAC1B,MAAMt8B,EAAI03E,EAAEp7C,GAAIg7C,EAAI,GAAGt6E,EAAEW,QAAQqC,EAAE+gM,aACnCz4L,EAAEu9L,MAAMH,UAAUkD,oBAAoB/kG,KAAK,CACzC/iG,GAAqB,MAAjBd,EAAE+gM,WAAqB/jM,EAAEW,KAAO25E,EACpC35E,KAAMX,EAAEW,KACRyqM,eAAgB7qL,EAChB8pL,cAAe/kM,EACfiiM,OAAQvnM,EACRipM,OAAQ39L,KACL+vL,aAAa/gH,KAA8B,QAAvBh1E,EAAE0kM,kBAA8BvqM,EAAEpJ,QAAQ0kF,EAAE/3E,EAAE6gM,OAAOgI,IAAIztM,QAASqB,EAAEpJ,QAAQ0kF,EAAE/3E,EAAE6gM,OAAOgI,IAAI30C,OAAQn9J,EAAE1D,QAAQ0kF,EAAE/3E,EAAE6gM,OAAOiI,GAAG1tM,QAASrE,EAAE1D,QAAQ0kF,EAAE/3E,EAAE6gM,OAAOiI,GAAG50C,SAAW5xJ,EAAE0kM,iBAAmB,UAAYvqM,EAAEpJ,QAAQ0kF,EAAE/3E,EAAE6gM,OAAOgI,IAAI30C,OAAQn9J,EAAE1D,QAAQ0kF,EAAE/3E,EAAE6gM,OAAOiI,GAAG50C,QAASokC,aAAahhH,GAClT,CACF,KACC,EAAI,CAAC,EAAGrlD,GAAIA,EAAE2uK,QAAU3uK,EAAE2uK,OAAO9lM,SAASyiB,IAC3C,IAAIvgB,EACJ,MAAM0wB,EAAsB,OAAjB1wB,EAAIskC,EAAEs/J,aAAkB,EAAS5jM,EAAEugB,EAAEujL,YAChD,IAAKpzK,EACH,OACF,MAAMprB,EAAI06L,mBAAmB10L,EAAE20L,cAAe1/K,EAAEujL,WAAYpzK,EAAGplB,EAAEu9L,MAAMH,UAAUqD,cACjFzmM,GAAqB,mBAATA,EAAEw5L,MAAsBv+K,EAAEsjL,OAAOiI,GAAG50C,KAAKp5J,SAASm7C,IAC5D94C,EAAE7O,IAAI2nD,EAAE,IACN14B,EAAEsjL,OAAOgI,IAAI30C,KAAKp5J,SAASm7C,IAC7B14C,EAAEjP,IAAI2nD,EAAE,IACP,IAEL,MAAMvZ,EAAI3lC,EAAEwoF,QAAQhiE,IAAOpgB,EAAEkb,IAAIkF,KACjC,MAAO,CACLiqL,UAAW/qM,EAAE8iF,QAAQhiE,IAAOhgB,EAAE8a,IAAIkF,KAClCkqL,qBAAsB/qK,EACtBgrK,YAAalrM,EAEjB,CACA,MAAMwsM,4BAA8B,WAClC,MAAO,CACLrrM,KAAM,iCACN,2BAAM6qM,CAAsBlgM,GAC1B,MAAQ29L,OAAQ3oM,EAAGmrM,eAAgB7rM,EAAGsoM,WAAY5oM,EAAGioM,OAAQtyK,EAAGo2K,eAAgB5rM,EAAG2rM,eAAgBrxM,GAAMuR,EACzG,OAAO2tL,sBAAsBhkK,IAAMikK,kBAAkBjkK,GAAK,CACxDu1K,UAAW,GACXC,qBAAsB,GACtBC,YAAa,CACX,CACE/pM,KAAMs0B,EAAEt0B,KACR2a,IAAK2Z,EAAEs3I,MACPytB,WAAY,CACVr5L,KAAMrB,EAAEqB,KACR4rK,MAAOt3I,EAAEs3I,MACT71K,KAAM,SACNyxM,gBAAiB,GACjBE,WAAY,QAIf4C,iBAAiB3rM,EAAGvF,GAAIyxM,sBAAsBlrM,EAAGV,EAAGN,EAAGG,EAAG1F,GACjE,EAEJ,EACA,SAASkyM,aACP,OAAOA,WAAal6M,OAAO0nF,QAAU,SAASnuE,GAC5C,IAAK,IAAIhL,EAAI,EAAGA,EAAI3P,UAAUC,OAAQ0P,IAAK,CACzC,IAAIV,EAAIjP,UAAU2P,GAClB,IAAK,IAAIhB,KAAKM,EACZ7N,OAAO4H,UAAU4L,eAAeM,KAAKjG,EAAGN,KAAOgM,EAAEhM,GAAKM,EAAEN,GAC5D,CACA,OAAOgM,CACT,EAAG2gM,WAAW7lI,MAAMr3E,KAAM4B,UAC5B,CACA,MAAMu7M,gBACJ,kBAAMC,CAAa7rM,GACjB,MAAQqQ,QAAS/Q,GAAM7Q,KAAKq9M,cAAgBC,mBAAoB/sM,EAAG8rM,eAAgBn2K,EAAGo2K,eAAgB5rM,GAAM1Q,KAAKu9M,oBAAoBhsM,IAAM8qM,eAAgBrxM,EAAGsxM,eAAgB7rM,SAAYzQ,KAAK85M,MAAMH,UAAUyD,aAAatlG,KAAK,CAC/Nl2F,QAAS/Q,EACTo6L,WAAY15L,EACZ+rM,mBAAoB/sM,EACpB8rM,eAAgBn2K,EAChBo2K,eAAgB5rM,IAElB,MAAO,CACL2rM,eAAgBrxM,EAChBsxM,eAAgB7rM,EAEpB,CACA,4BAAM+rM,CAAuBjrM,GAC3B,MAAQqQ,QAAS/Q,GAAM7Q,KAAKq9M,mBACtBr9M,KAAK85M,MAAMH,UAAU6D,yBAAyB1lG,KAAK,CACvDl2F,QAAS/Q,EACTo6L,WAAY15L,IAEd,IAAIhB,EAAIw7L,kCAAkC,CACxCn6L,KAAM5R,KAAKq9M,aAAaz7L,QAAQhQ,KAChC66C,QAASzsD,KAAKq9M,aAAaz7L,QAAQ6qC,UAErCl8C,IAAMA,EAAI,CACRk8C,QAASzsD,KAAKq9M,aAAaz7L,QAAQ6qC,SAAW,GAC9CynJ,YAAa,GACbU,YAAa,CAAC,GACb3I,kBAAkB,CACnB,CAACjsM,KAAKq9M,aAAaz7L,QAAQhQ,MAAOrB,KAC/BA,GAAK,gBAAiBA,IAAMq7L,mBAAmBr7L,EAAEqkM,YAAarjM,EAAEK,MAAM1O,QAAU,YAAaqO,GAAK,UAAWA,KAAOhB,EAAEqkM,YAAcsI,WAAW,CAAC,EAAQ,MAAL3sM,OAAY,EAASA,EAAEqkM,YAAa,CAC1L,CAACrjM,EAAEK,MAAO,CACRqiM,eAAgB,YAAa1iM,EAAIA,EAAEk7C,QAAUl7C,EAAEisK,UAGnD,MAAQ8/B,mBAAoBp3K,EAAGm2K,eAAgB3rM,EAAG4rM,eAAgBtxM,GAAMhL,KAAKu9M,oBAAoBhsM,IAAM8qM,eAAgB5rM,EAAG6rM,eAAgBlrM,SAAYpR,KAAK85M,MAAMH,UAAUyD,aAAatlG,KAAK,CAC3Ll2F,QAAS/Q,EACTo6L,WAAY15L,EACZ+rM,mBAAoBp3K,EACpBm2K,eAAgB3rM,EAChB4rM,eAAgBtxM,IAElB,GAAIyF,EAAC,CACH,GAAI4kM,mBAAmB5kM,GAAI,CACzB,MAAMe,QAAUxR,KAAKy9M,gBAAgBhtM,EAAEyjM,YAAa3iM,EAAG,CAAC,GAGxD,MAAO,CACL8qM,eAAgB7qM,EAChB8qM,eAL8DtQ,kCAAkCkR,WAAW,CAAC,EAAG3rM,EAAG,CAClHisK,MAAO/sK,EAAEyjM,cACP1iM,GAKN,CAAO,CACL,MAAQ6qM,eAAgB7qM,SAAYxR,KAAK85M,MAAMH,UAAU+D,mBAAmB5lG,KAAK,CAC/El2F,QAAS5hB,KAAKq9M,aAAaz7L,QAC3BqpL,WAAY15L,EACZ8qM,eAAgB5rM,EAChBjM,KAAM,WAER,MAAO,CACL63M,eAAgB7qM,EAChB8qM,eAAgBlrM,EAEpB,CAAC,CACE,GAAI84L,sBAAsB34L,GAAI,CACjC,MAAMC,QAAUxR,KAAKy9M,gBAAgBlsM,EAAEisK,MAAOjsK,EAAG,CAAC,GAAIgkC,EAAIy2J,kCAAkCz6L,EAAGC,IAAM6qM,eAAgB9mM,SAAYvV,KAAK85M,MAAMH,UAAU+D,mBAAmB5lG,KAAK,CAC5Kl2F,QAAS5hB,KAAKq9M,aAAaz7L,QAC3BqpL,WAAY15L,EACZ8qM,eAAgB7qM,EAChBhN,KAAM,WAER,MAAO,CACL63M,eAAgB9mM,EAChB+mM,eAAgB/mK,EAEpB,CACE1yB,MAAM,yDAC0CtR,EAAEK,oBAAoBL,EAAEk7C,+PAInDl7C,EAAEK,kBAAkBL,EAAEk7C,uEAER9+B,KAAKC,UAAUxc,eAEtD,CACAmsM,mBAAAA,CAAoBhsM,GAClB,MAAMV,EAAIk7L,kCAAkC,CAC1Cn6L,KAAM5R,KAAKq9M,aAAaz7L,QAAQhQ,KAChC66C,QAASzsD,KAAKq9M,aAAaz7L,QAAQ6qC,UACjCl8C,EAAIM,GAAK,gBAAiBA,GAAKA,EAAE+jM,aAAehJ,mBAAmB/6L,EAAE+jM,YAAarjM,EAAEK,MAAM1O,MAC9F,OAAOqN,GAAKA,EAAE0jM,eAAiB,CAC7BqJ,mBAAoBzsM,EACpByrM,eAAgBzQ,oBAChBwQ,eAAgBtQ,kCAAkC,CAChDn6L,KAAML,EAAEK,KACR66C,QAASl8C,EAAE0jM,kBAEX,CACFqJ,wBAAoB,EACpBhB,eAAgBzQ,oBAChBwQ,eAAgBtQ,kCAAkC,CAChDn6L,KAAML,EAAEK,KACR66C,QAAS,YAAal7C,EAAIA,EAAEk7C,aAAU,IAG5C,CACA,qBAAMgxJ,CAAgBlsM,EAAGV,EAAGN,GAC1B,MAAM21B,EAAI72B,UACR,IAAIrE,EAAIhL,KAAK29M,cAAc/xM,IAAI2F,GAC/B,GAAIvG,EACF,OAAOA,EACT,IACE,IAAIyF,QAAUzQ,KAAK05M,WAAWC,UAAU5rL,MAAM+pF,KAAKvmG,EAAG,CAAC,GACvD,QAASd,KAAOA,aAAamtM,aAAentM,QAAUsd,MAAMxc,EAAG,CAAC,IAAKvG,QAAUyF,EAAE+d,OAAQqR,OAAO70B,EAAE+oM,UAAY/oM,EAAEspM,SAAWtpM,EAAE6pM,OAAQ,GAAGtjM,kCAAmCvR,KAAK29M,cAAcrnM,IAAI/E,EAAGvG,GAAIA,CAC3M,CAAE,MAAOyF,GACPoS,MAAM,kCAAkChS,EAAEe,6BAA6BL,mGAI5Ed,IACG,GAcF,OAAOzQ,KAAK69M,gBAAgBtsM,KAAOvR,KAAK69M,gBAAgBtsM,GAbjDlC,WACL,MAAMrE,QAAUk7B,IAAKz1B,EAAImjM,6BAA6B5oM,EAAG,CACvDyhD,QAASl7C,KACL8qM,eAAgBjrM,SAAYpR,KAAK85M,MAAMH,UAAU+D,mBAAmB5lG,KAAK,CAC7El2F,QAAS5hB,KAAKq9M,aAAaz7L,QAC3BqpL,WAAYp6L,EACZitM,aAAc9yM,EACdqxM,eAAgB5rM,EAChBstM,YAAaxsM,EACb/M,KAAM,aAER,OAAO4M,CAAC,EAEmDV,GAAI1H,MAAMgC,GAAMA,KAAKhL,KAAK69M,gBAAgBtsM,EACzG,CACAtD,WAAAA,CAAYsD,GACVvR,KAAKg+M,oBAAsB,KAAMh+M,KAAK29M,cAAgC,IAAI57L,IAAO/hB,KAAK85M,MAAQ,IAAIY,aAAa,CAC7G8C,yBAA0B,IAAIlD,UAAU,4BACxC8C,aAAc,IAAI3C,mBAAmB,sBACrCiD,mBAAoB,IAAIjD,mBAAmB,wBACzCz6M,KAAK69M,gBAAkBrT,OAAOa,eAAeF,qBAAsBnrM,KAAKq9M,aAAe9rM,EAAGvR,KAAK05M,WAAanoM,EAAEmoM,UACpH,EAEF,SAASjuC,WACP,OAAOA,SAAWzoK,OAAO0nF,QAAU,SAASnuE,GAC1C,IAAK,IAAIhL,EAAI,EAAGA,EAAI3P,UAAUC,OAAQ0P,IAAK,CACzC,IAAIV,EAAIjP,UAAU2P,GAClB,IAAK,IAAIhB,KAAKM,EACZ7N,OAAO4H,UAAU4L,eAAeM,KAAKjG,EAAGN,KAAOgM,EAAEhM,GAAKM,EAAEN,GAC5D,CACA,OAAOgM,CACT,EAAGkvJ,SAASp0F,MAAMr3E,KAAM4B,UAC1B,CACA,SAASq8M,iCAAiC1hM,EAAGhL,GAC3C,GAAS,MAALgL,EACF,MAAO,CAAC,EACV,IAAgC2pB,EAAGx1B,EAA/BG,EAAI,CAAC,EAAGN,EAAIvN,OAAOoc,KAAK7C,GAC5B,IAAK7L,EAAI,EAAGA,EAAIH,EAAE1O,OAAQ6O,IACxBw1B,EAAI31B,EAAEG,KAAMa,EAAEgD,QAAQ2xB,IAAM,KAAOr1B,EAAEq1B,GAAK3pB,EAAE2pB,IAC9C,OAAOr1B,CACT,CACA,MAAMqtM,eACJC,uBAAAA,GACE,MAAM5sM,EAAI8/L,sBAAuBxgM,EAAI7Q,KAAK4hB,QAAQ7M,IAAM/U,KAAK4hB,QAAQhQ,KACrEf,IAAMU,EAAEV,KAAOU,EAAEV,GAAK7Q,KAAKkxM,cAC7B,CACAkN,WAAAA,CAAY7sM,GACVvR,KAAK24M,gBAAgBpnM,EAAE8sM,SACvB,MAAMxtM,EAAI7Q,KAAKs+M,cAAct+M,KAAK4hB,QAASrQ,GAC3C,OAAOvR,KAAK4hB,QAAU/Q,EAAGA,CAC3B,CACA,eAAM0tM,CAAUhtM,EAAGV,GACjB,IAAIN,EACJ,MAAM21B,EAAIljC,OAAO0nF,OAAO,CAAC,EAAgC,OAA5Bn6E,EAAIvQ,KAAK4hB,QAAQizL,aAAkB,EAAStkM,EAAEgB,GAAIV,GAC1E,MAALq1B,GAAaA,EAAEuqK,aAAepsM,QAAQoE,IAAIy9B,EAAEuqK,MAAM/nM,KAAI2G,gBAC9ChL,QAAQoE,IAAIzI,KAAKw+M,kBAAkBhtM,EAAG00B,EAAEqnC,UAAU,KAE1D,MAAM78D,QAAU1Q,KAAK85M,MAAMH,UAAU8E,gBAAgB3mG,KAAK,CACxDq5F,QAAS5/L,EACTmtM,UAAWx4K,EACX2uK,OAAQ70M,KAAK4hB,QAAQizL,OACrBqF,OAAQl6M,QACJ0+M,UAAW1zM,GAAM0F,EACvBmvB,OAAO70B,EAAG,eAAeuG,kBAAkBvR,KAAK4hB,QAAQhQ,gCAAgCL,yCACxF,MAAMd,EAAIwgM,mBAAmBjxM,KAAKkxM,cAAe3/L,EAAGvG,EAAGhL,KAAK85M,MAAMH,UAAUqD,cAAe5rM,EAAKI,IAC9FA,EAAEy+L,QAAUz+L,EAAEy+L,MAAQ,IAAKjG,cAAcx4L,EAAEy+L,MAAOjwM,KAAK4hB,QAAQhQ,KAAK,EAEtE,GAAInB,GAAKA,EAAEs/L,IACT,OAAO3+L,EAAEX,GAAIA,EAAEs/L,IACjB,GAAIt/L,GAAKA,EAAEy/L,UAAYz/L,EAAE+/L,OAAQ,CAC/B,MAAMh/L,QAAUf,EAAEy/L,QAClB,OAAOz/L,EAAE+/L,QAAS,EAAI//L,EAAEs/L,MAAQt/L,EAAEs/L,IAAMv+L,GAAIJ,EAAEX,GAAIe,CACpD,CAAO,GAAIf,EAAG,CACZ,MAAMe,EAAI,WACR,MAAM+jC,QAAU9kC,EAAE7E,MAClBZ,EAAE+kM,IAAMx6J,EAAGvqC,EAAEwlM,QAAS,EAAIp/L,EAAEpG,GAC5B,MAAMuK,EAAI07L,mBAAmBjxM,KAAKkxM,cAAe3/L,EAAGvG,EAAGhL,KAAK85M,MAAMH,UAAUqD,cAC5E,OAAOznM,IAAMA,EAAEw6L,IAAMx6J,EAAGhgC,EAAEi7L,QAAS,GAAKj7J,CACzC,EALS,GAMV,OAAOv1C,KAAK2+M,UAAU,CACpBxN,QAAS5/L,EACTi/L,QAAQ,EACRqE,OAAQpkM,EACRjM,KAAMxE,KAAK4hB,QAAQhQ,KACnBm+L,IAAK,KACLG,QAAS1+L,IACPA,CACN,CAAO,CACL,GAAIX,EACF,OAAO,EACT,MAAMW,EAAI,WACR,MAAM+jC,QAAUvqC,EAAEY,MAClBZ,EAAE+kM,IAAMx6J,EAAGvqC,EAAEwlM,QAAS,EAAIp/L,EAAEpG,GAC5B,MAAMuK,EAAI07L,mBAAmBjxM,KAAKkxM,cAAe3/L,EAAGvG,EAAGhL,KAAK85M,MAAMH,UAAUqD,cAC5E,OAAOznM,IAAMA,EAAEw6L,IAAMx6J,EAAGhgC,EAAEi7L,QAAS,GAAKj7J,CACzC,EALS,GAMV,OAAOv1C,KAAK2+M,UAAU,CACpBxN,QAAS5/L,EACTi/L,QAAQ,EACRqE,OAAQ7pM,EACRxG,KAAMxE,KAAK4hB,QAAQhQ,KACnBm+L,IAAK,KACLG,QAAS1+L,IACPA,CACN,CACF,CACAotM,aAAAA,CAAcrtM,EAAGV,GACf,IAAIN,EACJ,MAAM21B,EAAIljC,OAAO0nF,OAAO,CAAC,EAAgC,OAA5Bn6E,EAAIvQ,KAAK4hB,QAAQizL,aAAkB,EAAStkM,EAAEgB,GAAIV,GAC1E,MAALq1B,GAAaA,EAAEuqK,OAASvqK,EAAEuqK,MAAM1hM,SAAS0B,IACvCzQ,KAAKw+M,kBAAkB/tM,EAAGy1B,EAAEqnC,SAAS,IAEvC,MAAM78D,EAAIugM,mBAAmBjxM,KAAKkxM,cAAe3/L,EAAG20B,EAAGlmC,KAAK85M,MAAMH,UAAUqD,cAAehyM,EAAKyF,IAC9FA,EAAEw/L,QAAUx/L,EAAEw/L,MAAQ,IAAKjG,cAAcv5L,EAAEw/L,MAAOjwM,KAAK4hB,QAAQhQ,KAAK,EAEtE,GAAIlB,EAAG,CACL,GAAoB,mBAATA,EAAEq/L,IACX,OAAO/kM,EAAE0F,GAAIA,EAAE8/L,SAAW9/L,EAAE8/L,QAAS,EAAI9/L,EAAElM,OAASxE,KAAK4hB,QAAQhQ,OAASs0B,EAAEsqK,QAAS,IAAM9/L,EAAEq/L,IAC/F,GAAoB,mBAATr/L,EAAE9E,IAAmB,CAC9B,MAAM6E,EAAIC,EAAE9E,MACZ,KAAM6E,aAAapM,SACjB,OAAO2G,EAAE0F,GAAI1Q,KAAK2+M,UAAU,CAC1BxN,QAAS5/L,EACTi/L,QAAQ,EACRhsM,KAAMxE,KAAK4hB,QAAQhQ,KACnBm+L,IAAKt/L,EACLokM,OAAQnkM,IACND,CACR,CACF,CACA,GAAIy1B,EAAE6pK,IACJ,OAAO7pK,EAAEsqK,SAAWtqK,EAAEsqK,QAAS,GAAKtqK,EAAE6pK,IACxC,GAAI7pK,EAAEt6B,IAAK,CACT,MAAM6E,EAAIy1B,EAAEt6B,MACZ,GAAI6E,aAAapM,QACf,MAAM,IAAIR,MAAM,2DACgC0N,UAAUA,2BAA2BvR,KAAK4hB,QAAQhQ,mEAGzFL,6GAEAA,kEAGX,OAAO20B,EAAE6pK,IAAMt/L,EAAGzQ,KAAK2+M,UAAU,CAC/BxN,QAAS5/L,EACTi/L,QAAQ,EACRhsM,KAAMxE,KAAK4hB,QAAQhQ,KACnBm+L,IAAK7pK,EAAE6pK,IACP8E,OAAQ3uK,IACNA,EAAE6pK,GACR,CACA,MAAM,IAAIlsM,MAAM,2DACoC0N,UAAUA,2BAA2BvR,KAAK4hB,QAAQhQ,mEAGzFL,6GAEAA,iEAGf,CACAstM,gBAAAA,CAAiBttM,EAAGV,EAAGN,GACrB,MAAM21B,EAAImzK,cAAc,CACtBznM,KAAML,EACNisK,MAAO3sK,IACLH,EAAI,IAAI8oM,OAAO,CACjBhlE,KAAMx0I,KACNm5M,WAAYjzK,IAEd,OAAOx1B,EAAEqoM,mBAAqBxoM,EAAGvQ,KAAK67M,YAAYvlM,IAAI/E,EAAGb,GAAIA,CAC/D,CACA,gCAAMouM,CAA2BvtM,GAC/B,MAAMV,QAAU7Q,KAAK85M,MAAMH,UAAUoF,cAAcjnG,KAAK,CACtD/iG,GAAIxD,EACJqQ,QAAS5hB,KAAK4hB,QACds4L,OAAQl6M,QACJ+U,GAAIxE,GAAMM,EAAGq1B,EAAImyK,6BAA6Br4M,KAAK4hB,QAAQiyL,QAAStjM,GAC1EsvB,OAAOqG,EAAG,8BACa31B,QAAQvQ,KAAK4hB,QAAQhQ,8DAEnCrB,oDAAoDvQ,KAAK4hB,QAAQhQ,MAAQ,6BAEzErB,4CAA4CvQ,KAAK4hB,QAAQhQ,8DACzDrB,qDACAA,gKAC0GA,cAEnH,MAAQioM,OAAQ9nM,GAAMw1B,EAAGl7B,EAAIquM,cAAc3oM,GAAID,QAAUzQ,KAAK85M,MAAMH,UAAUyC,aAAatkG,KAAK2zD,SAAS,CACvG12J,GAAIxE,GACH21B,EAAG,CACJtkB,QAAS5hB,KAAK4hB,QACds4L,OAAQl6M,KACRm5M,WAAYnuM,MACPwtM,OAAQpnM,EAAGmnM,OAAQ/mM,GAAMf,EAChCovB,OAAOzuB,GAAKI,EAAG,yHAAyHjB,MACxI,IAAIglC,EAAIv1C,KAAK67M,YAAYjwM,IAAIwF,EAAEQ,MAC/B,MAAM2D,EAAI,CACRi/H,KAAMx0I,KACNm5M,WAAYnuM,GAEd,OAAOuqC,IAAMA,EAAI,IAAIikK,OAAOjkM,GAAIvV,KAAK67M,YAAYvlM,IAAIlF,EAAEQ,KAAM2jC,IAAK,CAChEx1C,OAAQw1C,EACRypK,cAAezpM,EACf0pM,gBAAiBxuM,EAErB,CACA,gBAAMyuM,CAAW3tM,EAAGV,GAClB,IACE,MAAQ+oM,YAAarpM,GAAI,GAAOM,GAAK,CACnC+oM,aAAa,IACV75M,OAAQmmC,EAAG84K,cAAetuM,EAAGuuM,gBAAiBj0M,SAAYhL,KAAK8+M,2BAA2BvtM,IAAM+mM,eAAgB7nM,EAAG+nM,OAAQpnM,EAAGmnM,OAAQ/mM,EAAGuD,GAAIwgC,GAAMvqC,EAAGuK,QAAU2wB,EAAEt6B,IAAI4F,EAAGX,GAAIyH,QAAUtY,KAAK85M,MAAMH,UAAUwF,OAAOrnG,KAAK,CAC3N/iG,GAAIwgC,EACJ+iK,eAAgB7nM,EAChB8nM,OAAQ/mM,EACR4tM,aAAc7uM,EAAIgF,OAAI,EACtB8pM,oBAAqB9uM,OAAI,EAASgF,EAClCijM,OAAQpnM,EACRwQ,QAASlR,EACT4uM,eAAgBp5K,EAChBg0K,OAAQl6M,OAEV,MAAmB,mBAALsY,EAAkBA,EAAI/C,CACtC,CAAE,MAAOhF,GACP,MAAQ/L,KAAM0hC,EAAI,WAAcr1B,GAAK,CACnCrM,KAAM,WACLkM,QAAU1Q,KAAK85M,MAAMH,UAAU4F,gBAAgBznG,KAAK,CACrD/iG,GAAIxD,EACJsR,MAAOtS,EACP/L,KAAM0hC,EACNg0K,OAAQl6M,OAEV,IAAK0Q,EACH,MAAMH,EACR,OAAOG,CACT,CACF,CACA,mBAAM8uM,CAAcjuM,SACZvR,KAAK85M,MAAMH,UAAU8F,oBAAoB3nG,KAAK,CAClD4kG,eAAgBnrM,EAChBqQ,QAAS5hB,KAAK4hB,QACds4L,OAAQl6M,OAEV,MAAM6Q,EAAIuqM,kBAAkBp7M,KAAK4hB,QAAQiyL,QAAStiM,SAC5ClN,QAAQoE,IAAIoI,EAAEnI,KAAI2G,UACtB,MAAQmpM,OAAQtyK,GAAM31B,EAAGG,EAAI2oM,cAAcnzK,IAAMo2K,eAAgBtxM,EAAGqxM,eAAgB5rM,SAAYzQ,KAAKu8M,gBAAgBC,uBAAuBt2K,GAAI90B,QAAUpR,KAAK85M,MAAMH,UAAU8C,sBAAsB3kG,KAAK,CACxMoiG,OAAQl6M,KACR08M,eAAgBnsM,EAChBioM,OAAQtyK,EACRizK,WAAYzoM,EACZ4rM,eAAgBtxM,EAChBqxM,eAAgB5rM,KAEjBW,GAAKoqM,cAAc9qM,EAAG1Q,KAAMoR,EAAE,IAEnC,CACAotM,iBAAAA,GAAwC,IAAtBjtM,EAAC3P,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG4qM,cAAe37L,EAACjP,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACpC,MAAMyO,EAAIvQ,KAAKkxM,cAAehrK,EAAIlmC,KAAK4hB,QAAQhQ,KAC/CrB,EAAEgB,KAAOhB,EAAEgB,GAAK,CAAC,GACjB,MAAMb,EAAIH,EAAEgB,GAMTd,EAAI,GAA4Ce,EAAInC,UACrD,MAAQtP,OAAQwV,SAAYvV,KAAK8+M,2BAA2BvpK,GAC5D,GAAIhgC,EAAEkkM,SAAU,CACd,MAAMnhM,QAAU/C,EAAEkkM,WAClBlkM,EAAEskM,SAJUtkK,KAAMA,GAAKA,EAAEpmC,MAAQomC,EAAEpmC,KAAKoB,EAAEgB,GAAG,EAIhCH,CAAEkH,GAAI/C,EAAEskM,QAAS,EAChC,GAEF,OAAO72M,OAAOoc,KAAKpf,KAAK4hB,QAAQizL,QAAQ9lM,SAASwmC,IAC/C,MAAMhgC,EAAIvV,KAAK4hB,QAAQizL,OAAOt/J,GAC9BhgC,EAAEk7L,MAAM3wJ,SAASvuC,IAfCvG,EAACuqC,EAAGhgC,KACtB,IAAI+C,EACJ,MAAQm0C,QAAS9b,EAAG2/J,MAAO9+K,GAAMjc,EACjC7E,EAAE6kC,GAAK7kC,EAAE6kC,IAAM,CAAC,EAChB,MAAMtkC,EAAIP,EAAE6kC,GAAI5T,EAAI1wB,EAAE0/B,GAAIp6B,EAAIsmH,QAAQl7F,IAAMA,EAAE2uK,QAAiC,OAAtBh4L,EAAIqpB,EAAEwuK,kBAAuB,EAAS73L,EAAEg4L,WAC/F3uK,GAAoB,iBAAfA,EAAE4rC,WAAgC5rC,EAAE6uK,SAAW3zE,SAASrrG,MAAQjb,EAAIib,EAAI0U,EAAIvE,EAAEn9B,SAAWyM,EAAE0/B,GAAKp7B,EAAE,EAUlFvK,CAAEuqC,EAAGhgC,EAAE,IACtB,kBAAN1E,GAAyB7Q,KAAK4hB,QAAQiyL,QAAQ9kM,SAASwmC,IACzDA,EAAE+jK,aAAe/nM,GAAKd,EAAEnJ,KAAKkK,EAAE+jC,EAAE3jC,MAAM,IACrCnB,CACN,CACAivM,iBAAAA,CAAkBnuM,EAAGV,GACnB7Q,KAAKkxM,cAAc3/L,GAAKV,EAAG7Q,KAAK85M,MAAMH,UAAUgG,2BAA2B7nG,KAAK,CAC9EwhG,WAAYzoM,EACZ+Q,QAAS5hB,KAAK4hB,QACds4L,OAAQl6M,MAEZ,CACAs+M,aAAAA,CAAc/sM,EAAGV,GACf,MAAMN,EAAImgM,mBAAmB7/L,EAAEgkM,QAAU,CAAC,EAAGhkM,EAAEe,MAAOs0B,EAAIulI,SAAS,CAAC,EAAGl6J,EAAEsjM,OAAQtkM,IAAMqvM,YAAalvM,EAAGkR,QAAS5W,GAAMhL,KAAK85M,MAAMH,UAAUkG,WAAW/nG,KAAK,CACzJoiG,OAAQl6M,KACR4/M,YAAa/uM,EACb+Q,QAASrQ,EACTmtM,UAAWx4K,IACTz1B,GAAKC,EAAEmjM,SAAW,IAAI5qM,QAAO,CAACssC,EAAGhgC,KAAOvV,KAAK8/M,eAAevqM,EAAGggC,EAAG,CACpEwqK,OAAO,IACLxqK,IAAIvqC,EAAE6oM,SACV7wM,OAAOoc,KAAK7O,GAAGxB,SAASwmC,IACtB,MAAMhgC,EAAIhF,EAAEglC,IACX07J,mBAAmBjxM,KAAKkxM,cAAe37J,EAAGhgC,EAAGvV,KAAK85M,MAAMH,UAAUqD,eAAiBznM,GAAKA,EAAEw6L,KAAO/vM,KAAK2+M,UAAU,CAC/GxN,QAAS57J,EACTw6J,IAAKx6L,EAAEw6L,IACPnkM,IAAK2J,EAAE3J,IACP4kM,QAAQ,EACRqE,OAAQt/L,EACR/Q,KAAMqM,EAAEe,MACR,IAEJ,MAAMR,EAAI,IACLpG,EAAEqzM,SAEP3tM,EAAE2tM,SAAW3tM,EAAE2tM,QAAQtvM,SAASwmC,IAC9BnkC,EAAE0uC,SAASvK,IAAMnkC,EAAE9J,KAAKiuC,EAAE,IAE5B,MAAM/jC,EAAIi6J,SAAS,CAAC,EAAGl6J,EAAGV,EAAG,CAC3BwtM,QAASjtM,EACTyiM,QAASpjM,EACTokM,OAAQ3uK,IAEV,OAAOlmC,KAAK85M,MAAMH,UAAUxqM,KAAK2oG,KAAK,CACpCoiG,OAAQl6M,KACR4hB,QAASpQ,IACPA,CACN,CACAmnM,eAAAA,CAAgBpnM,GACdonM,gBAAgBpnM,EAAG,CACjBvR,KAAK85M,MACL95M,KAAKu8M,gBAAgBzC,MACrB95M,KAAK05M,YAET,CACAiF,SAAAA,CAASqB,GAA4E,IAAzE7O,QAAS5/L,EAAGsjM,OAAQhkM,EAAGrM,KAAM+L,EAAGw/L,IAAK7pK,EAAGgqK,QAASx/L,EAAG8/L,OAAQxlM,EAAGY,IAAK6E,GAAGuvM,EACjF,MAAQvzJ,QAASr7C,EAAGq/L,MAAOj/L,EAAI,WAAcX,EAAG0kC,EAAI0oK,iCAAiCptM,EAAG,CACtF,UACA,WAED1G,MAAMi3B,QAAQ5vB,GAAKA,EAAI,CACtBA,IACCzC,SAASwG,IACVvV,KAAKkxM,cAAc37L,KAAOvV,KAAKkxM,cAAc37L,GAAK,CAAC,GAAIvV,KAAKkxM,cAAc37L,GAAGhE,KAAOvR,KAAKkxM,cAAc37L,GAAGhE,GAAK,CAAC,IAAKvR,KAAKkxM,cAAc37L,GAAGhE,GAAGH,KAAOpR,KAAKkxM,cAAc37L,GAAGhE,GAAGH,GAAKq6J,SAAS,CAC1Lh/G,QAASr7C,EACTq/L,MAAO,CACL,YAEDl7J,EAAG,CACJw6J,IAAK7pK,EACLsqK,OAAQxlM,EACRklM,QAASx/L,IACPD,IAAMzQ,KAAKkxM,cAAc37L,GAAGhE,GAAGH,GAAGxF,IAAM6E,GAAG,GAEnD,CACAwvM,YAAAA,CAAa1uM,GACX,MAAQK,KAAMf,GAAMU,EAAGhB,EAAIvQ,KAAK4hB,QAAQiyL,QAAQ7rH,WAAWt3E,GAAMA,EAAEkB,OAASf,KACrE,IAAPN,GAAYvQ,KAAK4hB,QAAQiyL,QAAQr8L,OAAOjH,EAAG,GAC3C,MAAM21B,EAAIlmC,KAAK67M,YAAYjwM,IAAI2F,EAAEK,MACjC,GAAIs0B,EAAG,CACL,MAAMx1B,EAAIw1B,EAAEizK,WAAWC,gBACvBpzD,WAAWt1I,WAAas1I,WAAWt1I,GACnC,MAAM1F,EAAIiuM,wBAAwB/yK,EAAEizK,YACpCxO,cAAc3/L,WAAa2/L,cAAc3/L,GAAIhL,KAAK67M,YAAYz0L,OAAO7V,EAAEK,KACzE,CACF,CACAkuM,cAAAA,CAAevuM,EAAGV,EAAGN,GACnB,MAAM21B,EAAIA,KACR,GAAI30B,EAAEknM,MAAO,CACX,MAAMztM,EAAI6F,EAAEiqD,MAAMrqD,IAChB,IAAIW,EACJ,OAAOG,EAAEknM,QAAUhoM,EAAEmB,KAAK/I,WAAW0I,EAAEknM,SAA4B,OAAhBrnM,EAAIX,EAAEgoM,YAAiB,EAASrnM,EAAEvI,WAAW0I,EAAEknM,QAAQ,IAE5G54K,QAAQ70B,EAAG,aAAauG,EAAEknM,mBAAmBlnM,EAAEK,2CAA2C5G,GAAKA,EAAE4G,qBACnG,CACA,UAAWL,GAAKs4L,mBAAqBt4L,EAAEisK,MAAM30K,WAAW,UAAY0I,EAAEisK,MAAQ,IAAIv3F,IAAI10E,EAAEisK,MAAO5mJ,OAAOq9J,SAASimB,QAAQxyH,MAAOn2E,EAAE+nM,aAAe/nM,EAAE+nM,WAAa9M,eAAgBj7L,EAAE5J,OAAS4J,EAAE5J,KAAO8kM,oBAAoB,EACrN/7L,EAAIG,EAAEiqD,MAAM9vD,GAAMA,EAAE4G,OAASL,EAAEK,OAClC,GAAKlB,EAEA,CACH,MAAM1F,EAAI,CACR,eAAeuG,EAAEK,+BACZ,MAALrB,GAAaA,EAAEwvM,MAAQ,uEAAyE,+DAE7F,MAALxvM,GAAaA,EAAEwvM,QAAU//M,KAAKigN,aAAavvM,GAAIw1B,IAAKr1B,EAAEvJ,KAAKiK,IAAKw4L,OAAO/+L,EAAEkyD,KAAK,KAChF,MAPEh3B,IAAKr1B,EAAEvJ,KAAKiK,EAQhB,CACA2uM,eAAAA,CAAgB3uM,EAAGV,GACjBU,EAAExC,SAASwB,IACTvQ,KAAK8/M,eAAevvM,EAAGvQ,KAAK4hB,QAAQiyL,QAAS,CAC3CkM,MAAY,MAALlvM,OAAY,EAASA,EAAEkvM,OAC9B,GAEN,CACA9xM,WAAAA,CAAYsD,GACVvR,KAAK85M,MAAQ,IAAIY,aAAa,CAC5BmF,WAAY,IAAIrF,kBAAkB,cAClCrrM,KAAM,IAAIkrM,SACV0E,cAAe,IAAItE,mBAAmB,iBACtC2B,aAAc,IAAI3B,mBAAmB,gBACrCV,oBAAqB,IAAIU,mBAAmB,uBAC5CkF,2BAA4B,IAAIlF,mBAAmB,iBACnDN,cAAe,IAAIM,mBAAmB,iBACtC0E,OAAQ,IAAI7E,UAAU,UACtBuC,oBAAqB,IAAIxC,SAAS,uBAClCkF,gBAAiB,IAAIjF,UAAU,mBAC/BmE,gBAAiB,IAAIhE,mBAAmB,mBACxC8D,UAAW,IAAIjE,UACf0C,aAAc,IAAIxC,kBAAkB,gBACpCiF,oBAAqB,IAAInF,UACzBmC,sBAAuB,IAAInC,UAAU,yBACrC6F,mBAAoB,IAAI7F,YACtBt6M,KAAKysD,QAAU,QAASzsD,KAAK67M,YAA8B,IAAI95L,IAAO/hB,KAAK05M,WAAa,IAAIgB,aAAa,CAC3G0F,cAAe,IAAI/F,SACnBnE,aAAc,IAAImE,SAClB9D,WAAY,IAAI8D,SAChBtsL,MAAO,IAAIusL,UAAU,WAEvB,MAAMzpM,EAAI,CACRkE,GAAI20L,eACJ93L,KAAML,EAAEK,KACRysM,QAAS,CACPlC,iBACAc,+BAEFpJ,QAAS,GACTgB,OAAQ,CAAC,EACT+G,UAAW/R,kBAEb7pM,KAAK4R,KAAOL,EAAEK,KAAM5R,KAAK4hB,QAAU/Q,EAAG7Q,KAAKkxM,cAAgB,CAAC,EAAGlxM,KAAKm+M,0BAA2Bn+M,KAAKu8M,gBAAkB,IAAIY,gBAAgBn9M,MAAOA,KAAK24M,gBAAgB,IACjK9nM,EAAEwtM,WACF9sM,EAAE8sM,SAAW,KACdr+M,KAAK4hB,QAAU5hB,KAAKs+M,cAAcztM,EAAGU,EAC3C,EAEF,IAAI8uM,mBAAqB,KACzB,SAASlxM,KAAKoN,GACZ,MAAMhL,EAAI+5L,4BAA4B/uL,EAAE3K,KAAM2K,EAAEkwC,SAChD,GAAIl7C,EACF,OAAOA,EAAE6sM,YAAY7hM,GAAI8jM,qBAAuBA,mBAAqB9uM,GAAIA,EAC3E,CACE,MAAMV,EAAI26L,kCAAoC0S,eAC9C,OAAOmC,mBAAqB,IAAIxvM,EAAE0L,GAAIgvL,4BAA4B8U,oBAAqBA,kBACzF,CACF,CACA,SAASnB,aAAiB,QAAAx9G,EAAA9/F,UAAAC,OAAH0a,EAAC,IAAApS,MAAAu3F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAADplF,EAAColF,GAAA//F,UAAA+/F,GACtB,OAAO9hE,OAAOwgL,mBAAoB,0BAA2BA,mBAAmBnB,WAAW7nI,MAAMgpI,mBAAoB9jM,EACvH,CAEA,SAASmzH,UAAUnzH,EAAGhL,EAAGV,EAAGN,GAM1B,OAAO,IAAKM,IAAMA,EAAIxM,WAAU,SAASqM,EAAG1F,GAC1C,SAASyF,EAAE8kC,GACT,IACE/jC,EAAEjB,EAAEknB,KAAK8d,GACX,CAAE,MAAOhgC,GACPvK,EAAEuK,EACJ,CACF,CACA,SAASnE,EAAEmkC,GACT,IACE/jC,EAAEjB,EAAEslM,MAAMtgK,GACZ,CAAE,MAAOhgC,GACPvK,EAAEuK,EACJ,CACF,CACA,SAAS/D,EAAE+jC,GACTA,EAAEnb,KAAO1pB,EAAE6kC,EAAEryC,OArBjB,SAAWwN,GACT,OAAOA,aAAaG,EAAIH,EAAI,IAAIG,GAAE,SAAS7F,GACzCA,EAAE0F,EACJ,GACF,CAiB0Bw1B,CAAEqP,EAAEryC,OAAO8F,KAAKyH,EAAGW,EAC3C,CACAI,GAAGjB,EAAIA,EAAE8mE,MAAM96D,EAAGhL,GAAK,KAAKkmB,OAC9B,GACF,CACA,SAAS6oL,YAAY/jM,EAAGhL,GACtB,IAIwBhB,EAAG21B,EAAGx1B,EAAG1F,EAJ7B6F,EAAI,CAAE6kM,MAAO,EAAGpmE,KAAM,WACxB,GAAW,EAAP5+H,EAAE,GACJ,MAAMA,EAAE,GACV,OAAOA,EAAE,EACX,EAAGilM,KAAM,GAAIC,IAAK,IAClB,OAAO5qM,EAAI,CAAEysB,KAAMhnB,EAAE,GAAIolM,MAAOplM,EAAE,GAAIqlM,OAAQrlM,EAAE,IAAuB,mBAAV6xB,SAAyBt3B,EAAEs3B,OAAO+nD,UAAY,WACzG,OAAOrqF,IACT,GAAIgL,EACJ,SAASyF,EAAEe,GACT,OAAO,SAAS+jC,GACd,OAGJ,SAAW/jC,GACT,GAAIjB,EACF,MAAM,IAAI0uB,UAAU,mCACtB,KAAOpuB,GACL,IACE,GAAIN,EAAI,EAAG21B,IAAMx1B,EAAW,EAAPc,EAAE,GAAS00B,EAAE4vK,OAAStkM,EAAE,GAAK00B,EAAE2vK,SAAWnlM,EAAIw1B,EAAE4vK,SAAWplM,EAAEoG,KAAKovB,GAAI,GAAKA,EAAEzO,SAAW/mB,EAAIA,EAAEoG,KAAKovB,EAAG10B,EAAE,KAAK4oB,KAChI,OAAO1pB,EACT,OAAQw1B,EAAI,EAAGx1B,IAAMc,EAAI,CAAQ,EAAPA,EAAE,GAAQd,EAAExN,QAASsO,EAAE,IAC/C,KAAK,EACL,KAAK,EACHd,EAAIc,EACJ,MACF,KAAK,EACH,OAAOX,EAAE6kM,QAAS,CAAExyM,MAAOsO,EAAE,GAAI4oB,MAAM,GACzC,KAAK,EACHvpB,EAAE6kM,QAASxvK,EAAI10B,EAAE,GAAIA,EAAI,CAAC,GAC1B,SACF,KAAK,EACHA,EAAIX,EAAE+kM,IAAIvgM,MAAOxE,EAAE8kM,KAAKtgM,MACxB,SACF,QACE,KAAkB3E,GAAdA,EAAIG,EAAE8kM,MAAc9zM,OAAS,GAAK6O,EAAEA,EAAE7O,OAAS,MAAiB,IAAT2P,EAAE,IAAqB,IAATA,EAAE,IAAW,CACpFX,EAAI,EACJ,QACF,CACA,GAAa,IAATW,EAAE,MAAcd,GAAKc,EAAE,GAAKd,EAAE,IAAMc,EAAE,GAAKd,EAAE,IAAK,CACpDG,EAAE6kM,MAAQlkM,EAAE,GACZ,KACF,CACA,GAAa,IAATA,EAAE,IAAYX,EAAE6kM,MAAQhlM,EAAE,GAAI,CAChCG,EAAE6kM,MAAQhlM,EAAE,GAAIA,EAAIc,EACpB,KACF,CACA,GAAId,GAAKG,EAAE6kM,MAAQhlM,EAAE,GAAI,CACvBG,EAAE6kM,MAAQhlM,EAAE,GAAIG,EAAE+kM,IAAItuM,KAAKkK,GAC3B,KACF,CACAd,EAAE,IAAMG,EAAE+kM,IAAIvgM,MAAOxE,EAAE8kM,KAAKtgM,MAC5B,SAEJ7D,EAAID,EAAEuF,KAAKyF,EAAG1L,EAChB,CAAE,MAAO0kC,GACP/jC,EAAI,CAAC,EAAG+jC,GAAIrP,EAAI,CAClB,CAAE,QACA31B,EAAIG,EAAI,CACV,CACF,GAAW,EAAPc,EAAE,GACJ,MAAMA,EAAE,GACV,MAAO,CAAEtO,MAAOsO,EAAE,GAAKA,EAAE,QAAK,EAAQ4oB,MAAM,EAC9C,CApDWhpB,CAAE,CAACI,EAAG+jC,GACf,CACF,CAmDF,CA5FAm2J,+BAA+BwS,gBA6F/B,IAAIqC,WAAa,IAAI18M,MAAM,6BAA8B28M,UAAY,WACnE,SAASjkM,EAAEhL,EAAGV,QACN,IAANA,IAAiBA,EAAI0vM,YAAavgN,KAAKm3J,OAAS5lJ,EAAGvR,KAAKygN,aAAe5vM,EAAG7Q,KAAK0gN,OAAS,GAAI1gN,KAAK2gN,iBAAmB,EACtH,CACA,OAAOpkM,EAAE3R,UAAUg2M,QAAU,SAASrvM,EAAGV,GACvC,IAAIN,EAAIvQ,KACR,QAAU,IAANuR,IAAiBA,EAAI,QAAU,IAANV,IAAiBA,EAAI,GAAIU,GAAK,EACzD,MAAM,IAAI1N,MAAM,kBAAkBsU,OAAO5G,EAAG,uBAC9C,OAAO,IAAIlN,SAAQ,SAAS6hC,EAAGx1B,GAC7B,IAAI1F,EAAI,CAAE1G,QAAS4hC,EAAG3d,OAAQ7X,EAAGygF,OAAQ5/E,EAAGsvM,SAAUhwM,GAAKJ,EAAIqwM,iBAAiBvwM,EAAEmwM,QAAQ,SAAStvM,GACjG,OAAOP,GAAKO,EAAEyvM,QAChB,KACO,IAAPpwM,GAAYc,GAAKhB,EAAE4mJ,OAAS5mJ,EAAEwwM,cAAc/1M,GAAKuF,EAAEmwM,OAAOlpM,OAAO/G,EAAI,EAAG,EAAGzF,EAC7E,GACF,EAAGuR,EAAE3R,UAAUo2M,aAAe,SAASzvM,GACrC,OAAOm+H,UAAU1vI,KAAM4B,eAAW,GAAQ,SAASiP,EAAGN,EAAG21B,GACvD,IAAIx1B,EAAG1F,EAAGyF,EACV,YAAa,IAANF,IAAiBA,EAAI,QAAU,IAAN21B,IAAiBA,EAAI,GAAIo6K,YAAYtgN,MAAM,SAASoR,GAClF,OAAQA,EAAEskM,OACR,KAAK,EACH,MAAO,CAAC,EAAG11M,KAAK4gN,QAAQrwM,EAAG21B,IAC7B,KAAK,EACHx1B,EAAIU,EAAEk+H,OAAQtkI,EAAI0F,EAAE,GAAID,EAAIC,EAAE,GAAIU,EAAEskM,MAAQ,EAC9C,KAAK,EACH,OAAOtkM,EAAEukM,KAAKruM,KAAK,CAAC,EAAE,CAAG,EAAG,IAAK,CAAC,EAAGuJ,EAAE7F,IACzC,KAAK,EACH,MAAO,CAAC,EAAGoG,EAAEk+H,QACf,KAAK,EACH,OAAO7+H,IAAK,CAAC,GACf,KAAK,EACH,MAAO,CAAC,GAEd,GACF,GACF,EAAG8L,EAAE3R,UAAUq2M,cAAgB,SAAS1vM,EAAGV,GACzC,IAAIN,EAAIvQ,KACR,QAAU,IAANuR,IAAiBA,EAAI,QAAU,IAANV,IAAiBA,EAAI,GAAIU,GAAK,EACzD,MAAM,IAAI1N,MAAM,kBAAkBsU,OAAO5G,EAAG,uBAC9C,OAAOvR,KAAKkhN,sBAAsB3vM,EAAGV,GAAKxM,QAAQC,UAAY,IAAID,SAAQ,SAAS6hC,GACjF31B,EAAEowM,iBAAiBpvM,EAAI,KAAOhB,EAAEowM,iBAAiBpvM,EAAI,GAAK,IAAK4vM,aAAa5wM,EAAEowM,iBAAiBpvM,EAAI,GAAI,CAAEjN,QAAS4hC,EAAG26K,SAAUhwM,GACjI,GACF,EAAG0L,EAAE3R,UAAUw2M,SAAW,WACxB,OAAOphN,KAAKm3J,QAAU,CACxB,EAAG56I,EAAE3R,UAAUy2M,SAAW,WACxB,OAAOrhN,KAAKm3J,MACd,EAAG56I,EAAE3R,UAAU02M,SAAW,SAAS/vM,GACjCvR,KAAKm3J,OAAS5lJ,EAAGvR,KAAKuhN,gBACxB,EAAGhlM,EAAE3R,UAAU42M,QAAU,SAASjwM,GAChC,QAAU,IAANA,IAAiBA,EAAI,GAAIA,GAAK,EAChC,MAAM,IAAI1N,MAAM,kBAAkBsU,OAAO5G,EAAG,uBAC9CvR,KAAKm3J,QAAU5lJ,EAAGvR,KAAKuhN,gBACzB,EAAGhlM,EAAE3R,UAAU62M,OAAS,WACtB,IAAIlwM,EAAIvR,KACRA,KAAK0gN,OAAO3xM,SAAQ,SAAS8B,GAC3B,OAAOA,EAAE0X,OAAOhX,EAAEkvM,aACpB,IAAIzgN,KAAK0gN,OAAS,EACpB,EAAGnkM,EAAE3R,UAAU22M,eAAiB,WAC9B,IAAKvhN,KAAK0hN,sBAAuB1hN,KAAK0gN,OAAO7+M,OAAS,GAAK7B,KAAK0gN,OAAO,GAAGvvH,QAAUnxF,KAAKm3J,QACvFn3J,KAAK+gN,cAAc/gN,KAAK0gN,OAAO3yM,SAAU/N,KAAK0hN,qBAClD,EAAGnlM,EAAE3R,UAAUm2M,cAAgB,SAASxvM,GACtC,IAAIV,EAAI7Q,KAAKm3J,OACbn3J,KAAKm3J,QAAU5lJ,EAAE4/E,OAAQ5/E,EAAEjN,QAAQ,CAACuM,EAAG7Q,KAAK2hN,aAAapwM,EAAE4/E,SAC7D,EAAG50E,EAAE3R,UAAU+2M,aAAe,SAASpwM,GACrC,IAAIV,EAAI7Q,KAAMuQ,GAAI,EAClB,OAAO,WACLA,IAAMA,GAAI,EAAIM,EAAE2wM,QAAQjwM,GAC1B,CACF,EAAGgL,EAAE3R,UAAU82M,oBAAsB,WACnC,GAA2B,IAAvB1hN,KAAK0gN,OAAO7+M,OACd,IAAK,IAAI0P,EAAIvR,KAAKm3J,OAAQ5lJ,EAAI,EAAGA,IAAK,GAChCV,EAAI7Q,KAAK2gN,iBAAiBpvM,EAAI,MAC3BV,EAAE9B,SAAQ,SAAS2B,GACxB,OAAOA,EAAEpM,SACX,IAAItE,KAAK2gN,iBAAiBpvM,EAAI,GAAK,GACrC,KAEK,KAAIhB,EAAIvQ,KAAK0gN,OAAO,GAAGG,SAA5B,IAAsCtvM,EAAIvR,KAAKm3J,OAAQ5lJ,EAAI,EAAGA,IAAK,CACjE,IAAIV,EACJ,GADIA,EAAI7Q,KAAK2gN,iBAAiBpvM,EAAI,GAC3B,CACL,IAAI20B,EAAIr1B,EAAEm3E,WAAU,SAASv3E,GAC3B,OAAOA,EAAEowM,UAAYtwM,CACvB,MACQ,IAAP21B,EAAWr1B,EAAIA,EAAE2G,OAAO,EAAG0uB,IAAIn3B,SAAQ,SAAS0B,GAC/C,OAAOA,EAAEnM,SACX,GACF,CACF,CAV+C6yJ,CAWnD,EAAG56I,EAAE3R,UAAUs2M,sBAAwB,SAAS3vM,EAAGV,GACjD,OAA+B,IAAvB7Q,KAAK0gN,OAAO7+M,QAAgB7B,KAAK0gN,OAAO,GAAGG,SAAWhwM,IAAMU,GAAKvR,KAAKm3J,MAChF,EAAG56I,CACL,CA1FqE,GA2FrE,SAAS4kM,aAAa5kM,EAAGhL,GACvB,IAAIV,EAAIiwM,iBAAiBvkM,GAAG,SAAShM,GACnC,OAAOgB,EAAEsvM,UAAYtwM,EAAEswM,QACzB,IACAtkM,EAAE/E,OAAO3G,EAAI,EAAG,EAAGU,EACrB,CACA,SAASuvM,iBAAiBvkM,EAAGhL,GAC3B,IAAK,IAAIV,EAAI0L,EAAE1a,OAAS,EAAGgP,GAAK,EAAGA,IACjC,GAAIU,EAAEgL,EAAE1L,IACN,OAAOA,EACX,OAAQ,CACV,CACA,IAAI+wM,MAAQ,WACV,SAASrlM,EAAEhL,GACTvR,KAAK6hN,WAAa,IAAIrB,UAAU,EAAGjvM,EACrC,CACA,OAAOgL,EAAE3R,UAAUg2M,QAAU,WAC3B,OAAOlxE,UAAU1vI,KAAM4B,eAAW,GAAQ,SAAS2P,GACjD,IAAIV,EACJ,YAAa,IAANU,IAAiBA,EAAI,GAAI+uM,YAAYtgN,MAAM,SAASkmC,GACzD,OAAQA,EAAEwvK,OACR,KAAK,EACH,MAAO,CAAC,EAAG11M,KAAK6hN,WAAWjB,QAAQ,EAAGrvM,IACxC,KAAK,EACH,OAAOV,EAAIq1B,EAAEopG,OAAkB,CAAC,EAAPz+H,EAAE,IAEjC,GACF,GACF,EAAG0L,EAAE3R,UAAUo2M,aAAe,SAASzvM,EAAGV,GACxC,YAAa,IAANA,IAAiBA,EAAI,GAAI7Q,KAAK6hN,WAAWb,cAAa,WAC3D,OAAOzvM,GACT,GAAG,EAAGV,EACR,EAAG0L,EAAE3R,UAAUw2M,SAAW,WACxB,OAAOphN,KAAK6hN,WAAWT,UACzB,EAAG7kM,EAAE3R,UAAUq2M,cAAgB,SAAS1vM,GACtC,YAAa,IAANA,IAAiBA,EAAI,GAAIvR,KAAK6hN,WAAWZ,cAAc,EAAG1vM,EACnE,EAAGgL,EAAE3R,UAAU42M,QAAU,WACvBxhN,KAAK6hN,WAAWT,YAAcphN,KAAK6hN,WAAWL,SAChD,EAAGjlM,EAAE3R,UAAU62M,OAAS,WACtB,OAAOzhN,KAAK6hN,WAAWJ,QACzB,EAAGllM,CACL,CA7BY,GA4DR8jC,EAAGjnC,EAAGq3B,EAAGwa,EAAG62J,EAAGz2H,EA9BnB,SAAS02H,mBAAmBxlM,GAC1B,OAAa,OAANA,GAA0B,iBAALA,GAAiBA,EAAE/F,eAAe,eAAiB+F,EAAE/F,eAAe,UAClG,CACA,SAASwrM,uBAAuBzlM,GAA8B,IAAzBiM,QAASjX,EAAI,KAAK3P,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrDiP,GAAI,EACR,OAAO,IAAIxM,SAASkM,IAKW,mBAAtBgM,EAAEmM,kBAAkCnM,EAAEmM,iBAC3C,4BALShY,IACT,MAAQ2U,KAAMra,EAAGgoB,SAAUviB,GAAMC,EAAEuxM,QACvB,gBAAXj3M,EAAEk3M,MAAqC,sBAAXl3M,EAAEk3M,OAAiCH,mBAAmBtxM,KAAOF,EAAEE,GAAII,GAAI,EAAG,IAKtG4X,YAAW,KACZ5X,GAAKN,EAAE,KAAK,GACXgB,GAA8B,mBAAnBgL,EAAE4lM,eAA+B5lM,EAAE4lM,cAAc,IAAIC,MAAM,2BAA2B,GAExG,CACA/yM,eAAegzM,wBAAwB9lM,GAAW,IAARhL,EAAC3P,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC7C,MAAQ4mB,QAAS3X,EAAI,IAAKyxM,QAAS/xM,EAAI,GAAMgB,EAC7C,IAAI20B,EAAI,KACR,IACEA,QAAU87K,uBAAuBzlM,EAAG,CAAEiM,QAAS3X,GACjD,CAAE,MACF,CACA,OAAOq1B,IAAY,IAAN31B,EAAU,MAAQ21B,QAAUm8K,wBAAwB,CAAE75L,QAAS3X,EAAGyxM,QAAS/xM,EAAI,IAAM21B,GACpG,CACA72B,eAAekzM,sBAAsBhmM,GACnC,aAAa8lM,wBAAwB9lM,EAAG,CAAE+lM,QAAS,GACrD,CAEA,MAAME,sBACJv0M,WAAAA,GACEk+E,EAAEnsF,KAAMqgD,GAAI8rC,EAAEnsF,KAAMywC,GAAI07C,EAAEnsF,KAAM8hN,GAAIriL,EAAEz/B,KAAM,KAAM,YAAay/B,EAAEz/B,KAAM,OAAQ,YAAay/B,EAAEz/B,KAAM,OAAQ,m5JAAo5Jy/B,EAAEz/B,KAAM,YAAa,qBAAsBy/B,EAAEz/B,KAAM,WAAY,MAAOy/B,EAAEz/B,KAAM,MAAO,MAAOy/B,EAAEz/B,KAAM,QAASy/B,EAAEz/B,KAAM,UAAW,UAAWA,KAAKyiN,KAAO,IAAIb,KAC7pK,CACA,gBAAMc,CAAWnxM,GACf,aAAawzC,EAAE/kD,KAAMywC,EAAGwa,GAAGn0C,KAAK9W,KAAMuR,GAAIvR,IAC5C,CACA,gBAAM2iN,CAAWpxM,GACf,OAAOvR,KAAKgzB,eAAiBuvL,sBAAsBhxM,GAAsB,OAAlBvR,KAAKgzB,QAC9D,CACA,aAAMS,CAAQliB,GACZ,OAAOwzC,EAAE/kD,KAAMywC,EAAGwa,GAAGn0C,KAAK9W,MAAMgJ,MAAM6H,GAAMA,EAAE4iB,QAC5CliB,IAEJ,CACAymG,EAAAA,CAAGzmG,EAAGV,GACJk0C,EAAE/kD,KAAMywC,EAAGwa,GAAGn0C,KAAK9W,MAAMgJ,MACtBuH,GAAMA,EAAEynG,GAAGzmG,EAAGV,IAEnB,CACA+wB,GAAAA,CAAIrwB,EAAGV,GACLk0C,EAAE/kD,KAAMywC,EAAGwa,GAAGn0C,KAAK9W,MAAMgJ,MACtBuH,GAAMA,EAAEqxB,IAAIrwB,EAAGV,IAEpB,EAEFwvC,EAAoB,IAAI8yE,QAAW/5G,EAAI/J,eAAekN,GACpDvc,KAAKgzB,WAAahzB,KAAKgzB,eAAiBuvL,sBAAsBhmM,UAAWpN,KAAK,CAC5EyC,KAAM,6BACNiiM,QAAS,CACP,CACEjiM,KAAM,6BACN6mM,MAAO,6BACPj7B,MAAO,yEAAyE3wJ,KAAKC,YAI3F,MAAMvb,QAAU2tM,WAAW,oCAC3B,IAAK3tM,EACH,MAAM,IAAI1N,MAAM,kCAClB,OAAO,IAAI0N,EAAEqxM,mBACX5iN,KAAKgzB,SACL,IAEJ,EAAGyd,EAAoB,IAAI0iF,QAAWloE,EAAI57C,iBAA2B,IAAZkN,EAAC3a,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGg1B,OAC3D,OAAO52B,KAAKyiN,KAAKzB,cAAa3xM,UAAarP,KAAK6iN,MAAQ7iN,KAAK6iN,UAAY99J,EAAE/kD,KAAMqgD,EAAGjnC,GAAGtC,KAAK9W,KAAMuc,GAAIwoC,EAAE/kD,KAAM8hN,EAAGz2H,GAAGv0E,KAAK9W,OAAQA,KAAK6iN,MACxI,EAAGf,EAAoB,IAAI3uF,QAAW9nC,EAAI,WACxCrrF,KAAK6iN,MAAQ7iN,KAAKysD,QAAUzsD,KAAK6iN,IAAIp2J,QAASzsD,KAAK4R,KAAO5R,KAAK6iN,IAAIjxM,KAAM5R,KAAK+U,GAAK/U,KAAK6iN,IAAI9tM,GAAI/U,KAAKynH,KAAOznH,KAAK6iN,IAAIp7F,KACvH,EACA,MAAMq7F,sBAAwB,IAAIN,sBAClC,IAAI31H,EAAG/oC,EACP,MAAMi/J,QAAU,CACd,CACEhuM,GAAI,UACJnD,KAAM,WACN61G,KAAM,y7BACNu7F,UAAW,CACTC,OAAQ,sGACRC,QAAS,0DACTC,KAAM,gGAGV,CACEpuM,GAAI,UACJnD,KAAM,UACN61G,KAAM,qqHACNu7F,UAAW,CACTC,OAAQ,4FACRC,QAAS,gEACTC,KAAM,oGACNC,IAAK,iCAAsG,OAApEv2H,EAAuB,MAAnB48G,qBAA0B,EAASA,gBAAgBxV,eAAoB,EAASpnG,EAAE2nD,OAC7H6uE,QAAS,iCAAsG,OAApEv/J,EAAuB,MAAnB2lJ,qBAA0B,EAASA,gBAAgBxV,eAAoB,EAASnwI,EAAE0wF,SAGrI,CACEz/H,GAAI+tM,sBAAsB/tM,GAC1BnD,KAAMkxM,sBAAsBlxM,KAC5B61G,KAAMq7F,sBAAsBr7F,KAC5Bu7F,UAAW,CACTC,OAAQ,sFACRC,QAAS,iEACTC,KAAM,yGAGV,CACEpuM,GAAI,YACJnD,KAAM,aACN61G,KAAM,66BACNu7F,UAAW,CACTC,OAAQ,6EACRC,QAAS,4DACTC,KAAM,gIACNG,OAAQ,0DAGZ,CACEvuM,GAAI,QACJnD,KAAM,QACN61G,KAAM,6nYACNu7F,UAAW,CACTC,OAAQ,mFACRC,QAAS,uDACTC,KAAM,6FAGV,CACEpuM,GAAI,UACJnD,KAAM,UACN61G,KAAM,6zBACNu7F,UAAW,CACTC,OAAQ,wFAId,IAAItyM,EAAGC,EAAG8B,EAAG65E,EAAGqrB,GAAItmG,EAAGy5E,EACvB,MAAMw4H,oBACJt1M,WAAAA,CAAYsD,GACV46E,EAAEnsF,KAAMusF,GAAIJ,EAAEnsF,KAAMsR,GAAI66E,EAAEnsF,KAAM2Q,GAAG,GAAKw7E,EAAEnsF,KAAM4Q,OAAG,GAASu7E,EAAEnsF,KAAM0S,OAAG,GAAS+sB,EAAEz/B,KAAM,SAAUwwC,EAAExwC,KAAM0S,EAAGnB,GAAIwzC,EAAE/kD,KAAMsR,EAAGy5E,GAAGj0E,KAAK9W,KACtI,CACAsW,GAAAA,CAAI/E,GACF,SAAQk6B,EAAEzrC,KAAM2Q,KAAOo0C,EAAE/kD,KAAMsR,EAAGy5E,GAAGj0E,KAAK9W,SAAcA,KAAKonB,SAAUpnB,KAAKkD,MAAQqO,EAAGA,IAAMi/B,EAAExwC,KAAM4Q,EAAG,GAAG66B,EAAEzrC,KAAM0S,MAAM22L,iBAAkB7uI,aAAa0nH,QAAQz2I,EAAEzrC,KAAM4Q,GAAIW,KAAK,EACnL,CACA3F,GAAAA,GACE,OAAOm5C,EAAE/kD,KAAMusF,EAAGqrB,IAAI9gG,KAAK9W,MAAOA,KAAKkD,KACzC,CACAkkB,SACE,SAAQqkB,EAAEzrC,KAAM2Q,KAAOo0C,EAAE/kD,KAAMsR,EAAGy5E,GAAGj0E,KAAK9W,SAAcA,KAAKkD,MAAQ,KAAMuoC,EAAEzrC,KAAM4Q,IAAM4pD,aAAaE,WAAWjvB,EAAEzrC,KAAM4Q,KAAK,EAChI,EAEFD,EAAoB,IAAIgpF,QAAW/oF,EAAoB,IAAI+oF,QAAWjnF,EAAoB,IAAIinF,QAAWpN,EAAoB,IAAI4mC,QAAWvb,GAAK,WAC/I53G,KAAKkD,OAASlD,KAAKsW,IAAItW,KAAKkD,MAC9B,EAAGoO,EAAoB,IAAI6hH,QAAWpoC,EAAI,WACxC,KACGt/C,EAAEzrC,KAAM2Q,WAAaimB,OAAS,MAAQ4Z,EAAExwC,KAAM4Q,EAAG5N,OAAOoc,KAAKo7C,cAAcM,MACzEv+C,GAAMA,EAAE1T,WAAW4iC,EAAEzrC,KAAM0S,OAC1B89B,EAAExwC,KAAM2Q,GAAG,GAAK86B,EAAEzrC,KAAM4Q,IAAM5Q,KAAKsW,IAAIkkD,aAAaC,QAAQhvB,EAAEzrC,KAAM4Q,KAC1E,CAAE,MAAO2L,GACPqM,QAAQG,KAAKxM,EACf,CACA,OAAOkvB,EAAEzrC,KAAM2Q,EACjB,EACA,MAAM6yM,WAAa,CACjB3iI,SAAU,YAEZ,SAAS4iI,SAASlnM,EAAGhL,GACnB,IAAIV,EAAGN,EACP,GAA4C,OAAvCM,EAAS,MAALU,OAAY,EAASA,EAAEmyM,UAAoB7yM,EAAEhP,OAAQ,CAC5D,MAAMqkC,EAAI,IAAItb,IAAIrZ,EAAEmyM,SACpB,OAAOnnM,EAAEi3E,QAAQ9iF,GAAMw1B,EAAE5Z,IAAI5b,EAAEqE,KACjC,CACA,GAA4C,OAAvCxE,EAAS,MAALgB,OAAY,EAASA,EAAE2rJ,UAAoB3sJ,EAAE1O,OAAQ,CAC5D,MAAMqkC,EAAI,IAAItb,IAAIrZ,EAAE2rJ,SACpB,OAAO3gJ,EAAEi3E,QAAQ9iF,IAAOw1B,EAAE5Z,IAAI5b,EAAEqE,KAClC,CACA,OAAOwH,CACT,CACA,MAAMonM,mBAAqBt0M,UACzB,MAAMkC,QAAUlN,QAAQoE,IACtB8T,EAAE7T,KAAI2G,UACJ,IACE,aAAcwB,EAAE4iB,QAAQ,CACtB9rB,KAAM,2BACJm4C,SAAS0jK,WAAW3iI,SAC1B,CAAE,MACA,OAAO,CACT,MAGJ,OAAOtkE,EAAEi3E,QAAO,CAAC3iF,EAAGN,IAAMgB,EAAEhB,IAAG,EAC9BqzM,kBAAoBpa,gBAAgB,CACrCz0L,IAAI,EACJnD,MAAM,EACN61G,MAAM,EACNo8F,WAAW,EACXnB,YAAY,EACZC,YAAY,IACVmB,eAAiBta,gBAAgB,CACnCz0L,IAAI,EACJnD,MAAM,EACN66C,SAAS,EACTg7D,MAAM,EACNh0F,SAAS,EACTukF,IAAI,EACJp2E,KAAK,IAEP,SAASmiL,kBAAkBxnM,GACzB,OAAO,SAAShL,GACd,OAAa,OAANA,GAA0B,iBAALA,GAAiBgL,EAAEggF,OAAO1rF,GAAMA,KAAKU,GACnE,CACF,CACA,MAAMyyM,aAAeD,kBAAkBD,gBAAiBG,gBAAkBF,kBAAkBH,mBAC5F,SAASM,eAAe3nM,GACtB,IACE,OAAOynM,aAAaznM,IAAM0nM,gBAAgB1nM,EAC5C,CAAE,MACF,CACA,OAAO,CACT,CACA,SAAS4nM,qBAAqB5nM,EAAGhL,GAC/B,OAAOvO,OAAO+jB,OACZ/jB,OAAOuhF,oBAAoBhoE,GAAGtT,QAAO,CAAC4H,EAAGN,KACvC,GAAIA,EAAE1H,WAAW,YAAa,CAC5B,MAAMq9B,EAAI3pB,EAAEhM,GACZgB,EAAE20B,KAAOr1B,EAAEq1B,EAAEnxB,MAAQlE,EAAEq1B,EAAEnxB,IAAMmxB,EACjC,CACA,OAAOr1B,CAAC,GACP,CAAC,GAER,CACA,MAAMuzM,OAASA,CAAC7nM,EAAGhL,KACjB,GAAIA,GAAKpH,MAAMi3B,QAAQ7vB,GAAI,CACzBgL,EAAEsgB,MAAK,CAACtsB,EAAG21B,IAAM30B,EAAEgD,QAAQhE,EAAEwE,IAAMxD,EAAEgD,QAAQ2xB,EAAEnxB,MAC/C,MAAMlE,EAAI0L,EAAE1a,OAAS0P,EAAE1P,OACvB,MAAO,IACF0a,EAAE7O,MAAMmD,MACRy4L,QAAQ/sL,EAAE7O,MAAM,EAAGmD,IAE1B,CACE,OAAOy4L,QAAQ/sL,EAAE,EAClB8nM,eAAiB,CAACvB,uBACrB,SAASwB,uBAAuB/nM,GAC9B8nM,eAAet1M,SAAQM,UACrBkC,EAAEsyM,aAAatnM,SAAWhL,EAAEoxM,WAAWpmM,KAAOA,EAAEhL,EAAEsyM,WAAatyM,EAAE,GAErE,CACA,MAAMgzM,kBAAoB,CAAC,EAC3Bl1M,eAAem1M,qBAAqBjoM,EAAGhL,GACrC,IAAIV,EAAI0zM,kBAAkBhzM,EAAEwD,IAC5B,OAAOlE,IAAMA,QAAUU,EAAEmxM,WAAWnmM,GAAIgoM,kBAAkBhzM,EAAEwD,IAAMlE,GAAIA,CACxE,CACA,MAAM4zM,eAAiB,CACrBC,aAAiC,MAAnBjb,gBAA0BA,gBAAkB,CAAC,EAC3Dya,8BACAS,6BAA+BpoM,GAAM,IAAIgnM,oBAAoBhnM,IAE/D,SAASqoM,cAAoB,IAARroM,EAAC3a,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACxB,MAAQ+iN,6BAA8BpzM,EAAGmzM,aAAc7zM,EAAGqzM,eAAgB3zM,GAAM,IAC3Ek0M,kBACAloM,GACF2pB,EAAI30B,EAAE,YACT,OAAO+yM,uBAAuBzzM,GAAI,CAChCg0M,oBAAqBx1M,iBAAkB,IAAXqB,EAAC9O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC/B,MAAMoJ,EAAIm5M,qBACRtzM,EACAN,GAEF,OAAOg5L,QACJ94L,GAAMgzM,SAAShzM,EAAGC,KAClBD,GAAM2zM,OAAO3zM,EAAGC,EAAEmsB,OAFd0sK,CAGLv+L,EACJ,EACA85M,qBAAsBz1M,iBAAkB,IAAXqB,EAAC9O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAChC,MAAMoJ,EAAIm5M,qBACRtzM,EACAN,GAEF,OAAOg5L,QACJ94L,GAAMkzM,mBAAmBlzM,KACzBA,GAAMgzM,SAAShzM,EAAGC,KAClBD,GAAM2zM,OAAO3zM,EAAGC,EAAEmsB,OAHd0sK,CAILv+L,EACJ,EACA+5M,oBAAqB11M,iBAAA,IAAOqB,EAAC9O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAAK2nM,QACpCv+L,GAAMy4M,SAASz4M,EAAG0F,KAClB1F,GAAMo5M,OAAOp5M,EAAG0F,EAAEmsB,OAFkB0sK,CAGrCwZ,QAAQ,EACViC,uBAAwB31M,UACtB,MAAMqB,EAAIw1B,EAAEt6B,MAAOZ,EAAIm5M,qBAAqBtzM,EAAGN,GAAGuqD,MAC/C1pD,GAAMA,EAAE2D,KAAOrE,KACdD,SAAWkzM,mBACb34M,EAAI,CAACA,GAAK,IAEZ,OAAOyF,IAAMy1B,EAAE9e,SAAU,KAAK,EAEhC69L,uBAAwB51M,iBACtB,MAAMrE,EAAI,IAAI4f,IADgBhpB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IACX6O,EAAIzF,EAAEkf,KAAO,EAAIm6L,eAAe7wH,QACnDpiF,GAAMpG,EAAEshB,IAAIlb,EAAEQ,OAAS5G,EAAEshB,IAAIlb,EAAE2D,MAC9BsvM,qBACEhgN,QAAQoE,IACZgI,EAAE/H,KAAI2G,gBACE+B,EAAEuxM,WAAW9xM,KAAOA,EAAEO,EAAEyyM,WAAazyM,EAAE,IAGnD,EACA83L,OAAQ75L,MAAOqB,EAAG1F,KAChB,IAAIyF,EACJ,GAAIwzM,gBAAgBvzM,GAClBD,QAAU+zM,qBAAqB3zM,EAAGH,OAC/B,KAAIszM,aAAatzM,GAGpB,MAAM,IAAI7M,MAAM,yBAFhB4M,EAAIC,CAEoC,OACpCD,EAAEgjB,QAAQ,CACd9rB,KAAM,yBACN0qD,OAAQ,CACN6yJ,YAAkB,MAALl6M,OAAY,EAASA,EAAEk6M,eAGxC,MAAM9zM,QAAUX,EAAEgjB,QAAQ,CACxB9rB,KAAM,0BAER,GAAW,MAALyJ,IAAaA,EAAE0uC,SAAS0jK,WAAW3iI,UACvC,MAAM,IAAIh9E,MAAM,+BAClB,OAAOqiC,EAAE5vB,IAAI7F,EAAEsE,IAAKtE,CAAC,EAEvB00M,WAAY91M,iBAAuC,IAA9B+1M,gBAAiB10M,GAAG9O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC3C8O,GAAKw1B,EAAE9e,QACT,EAEJ,CACA,MAAMi+L,KAAOT,cAAeU,oBAAsB,CAChD,cAAe,cACf,kBAAmB,UACnBC,KAAM,OACNC,WAAY,aACZC,OAAQ,SACRC,SAAU,WACVC,SAAU,WACVC,SAAU,WACVC,QAAS,UACTC,MAAO,QACPC,QAAS,UACT,gBAAiB,gBACjBC,UAAW,YACX,oBAAqB,KACrB,WAAY,WACZC,QAAS,UACT,iBAAkB,OAClB,aAAc,KACd,sBAAuB,QACvBC,MAAO,QACP,cAAe,cACfC,UAAW,YACXC,OAAQ,SACRC,SAAU,WACVC,GAAI,KACJC,OAAQ,SACRC,OAAQ,SACRC,SAAU,WACV,+BAAgC,mBAChCC,UAAW,YACXC,SAAU,WACVC,MAAO,QACPC,MAAO,QACP,aAAc,KACdC,QAAS,UACT,gBAAiB,QACjBC,OAAQ,SACR,iBAAkB,SAClBC,KAAM,QACLC,YAAc,CACfC,YAAa,cACb7D,QAAS,kBACT8D,KAAM,OACNC,WAAY,aACZnE,OAAQ,SACRoE,SAAU,WACVC,SAAU,WACVC,SAAU,WACVrE,QAAS,UACTsE,MAAO,QACPC,QAAS,UACTC,UAAW,YACXC,cAAe,gBACfh7K,GAAI,oBACJi7K,SAAU,WACVC,QAAS,UACT1E,KAAM,iBACN2E,GAAI,aACJC,MAAO,sBACPC,MAAO,QACPC,YAAa,cACbC,UAAW,YACXC,OAAQ,SACRC,SAAU,WACVC,GAAI,aACJC,OAAQ,kBACRhF,OAAQ,SACRiF,SAAU,WACVC,iBAAkB,+BAClBC,UAAW,YACXC,SAAU,WACVC,MAAO,QACPC,MAAO,QACPC,GAAI,aACJC,QAAS,UACTC,MAAO,gBACPC,OAAQ,SACRC,OAAQ,kBACPC,cAAgB,CACjBC,OAAQ,SACRC,OAAQ,SACRC,QAAS,UACTC,GAAI,MACHC,OAAS,CACVC,aAAc,gBACdC,QAAS,UACTC,MAAO,QACPC,IAAK,MACLC,QAAS,UACTC,MAAO,QACPrE,WAAY,aACZD,KAAM,OACNsB,MAAO,QACPiD,MAAO,QACPC,SAAU,YACVC,aAAc,gBACdhD,KAAM,QACLiD,WAAa,CACdC,SAAU,WACVC,MAAO,QACPC,QAAS,UACTC,OAAQ,SACRC,MAAO,QACPC,OAAQ,UAEV,MAAMvgF,MACJ,oBAAOwgF,CAAcj5M,EAAGV,GACtB,MAAMN,EAAIM,EAAE2hE,MAAMjhE,GAClB,OAAOhB,GAAKA,EAAE1O,OAAS,GAAK0O,EAAE,IAAM,EACtC,CACA,qBAAOk6M,CAAel5M,EAAGV,GACvB,MAAMN,EAAIM,EAAE2hE,MAAMjhE,GAClB,OAAOhB,GAAKA,EAAE1O,OAAS,GAAK0O,EAAE,IAAM,EACtC,CACA,0BAAOm6M,CAAoBn5M,EAAGV,EAAGN,GAC/B,GAAIgB,EAAE+C,KAAKzD,GACT,OAAON,CACX,CACA,4BAAOo6M,CAAsBp5M,GAC3B,OAAQA,GACN,IAAK,KACH,MAAO,KACT,IAAK,KAIL,IAAK,SACH,MAAO,KAHT,IAAK,SACH,MAAO,OAGT,IAAK,SACH,MAAO,OACT,IAAK,SACH,MAAO,QACT,IAAK,SACH,MAAO,IACT,IAAK,SACH,MAAO,IACT,IAAK,SACH,MAAO,MACT,IAAK,UACH,MAAO,KACT,QACE,OAEN,CACA,0BAAOq5M,CAAoBr5M,GACzB,MAAMV,EAAIU,EAAEhJ,MAAM,KAAKiP,OAAO,EAAG,GAAG9O,KAAK6H,GAAMpF,SAASoF,EAAG,KAAO,IAClE,GAAIM,EAAEvJ,KAAK,GAAa,KAATuJ,EAAE,GACf,OAAQA,EAAE,IACR,KAAK,EACH,MAAO,UACT,KAAK,EACH,MAAO,eACT,KAAK,EACH,MAAO,OACT,KAAK,EACH,MAAO,gBACT,KAAK,EACH,MAAO,YACT,KAAK,GACH,MAAO,WACT,KAAK,GACH,MAAO,aACT,KAAK,GACH,MAAO,SACT,KAAK,GACH,MAAO,cACT,KAAK,GACH,MAAO,SACT,KAAK,GACH,MAAO,WACT,QACE,OAER,CACA,4BAAOg6M,CAAsBt5M,GAC3B,MAAMV,EAAIU,EAAEhJ,MAAM,KAAKiP,OAAO,EAAG,GAAG9O,KAAK6H,GAAMpF,SAASoF,EAAG,KAAO,IAClE,GAAIM,EAAEvJ,KAAK,KAAe,IAATuJ,EAAE,IAAYA,EAAE,GAAK,GAAI,CACxC,GAAa,IAATA,EAAE,IAAYA,EAAE,GAAK,EACvB,MAAO,UACT,GAAa,IAATA,EAAE,IAAYA,EAAE,IAAM,EACxB,MAAO,QACT,GAAa,IAATA,EAAE,IAAYA,EAAE,GAAK,EACvB,MAAO,SACT,GAAa,IAATA,EAAE,IAAqB,IAATA,EAAE,GAClB,MAAO,QACT,GAAa,IAATA,EAAE,IAAYA,EAAE,GAAK,EACvB,MAAO,cACT,GAAa,IAATA,EAAE,GACJ,MAAO,YACT,GAAa,IAATA,EAAE,IAAYA,EAAE,GAAK,EACvB,MAAO,qBACT,GAAa,IAATA,EAAE,IAAYA,EAAE,GAAK,EACvB,MAAO,aACT,GAAa,IAATA,EAAE,IAAYA,EAAE,IAAM,EACxB,MAAO,SACT,GAAa,IAATA,EAAE,GACJ,MAAO,WACT,GAAa,IAATA,EAAE,GACJ,MAAO,cACT,GAAa,IAATA,EAAE,GACJ,MAAO,SACT,GAAa,IAATA,EAAE,GACJ,MAAO,OACT,GAAa,IAATA,EAAE,GACJ,MAAO,KACX,CACF,CACA,0BAAOi6M,CAAoBv5M,GACzB,OAAOA,EAAEhJ,MAAM,KAAK1G,MACtB,CACA,sBAAOkpN,CAAgBx5M,EAAGV,GAAW,IAARN,EAAC3O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC5B,MAAMskC,EAAI8jG,MAAM8gF,oBAAoBv5M,GAAIb,EAAIs5H,MAAM8gF,oBAAoBj6M,GACtE,IAAI7F,EAAI5B,KAAKuI,IAAIu0B,EAAGx1B,GAAID,EAAI,EAC5B,MAAMW,EAAI44H,MAAMthI,IAAI,CAAC6I,EAAGV,IAAKW,IAC3B,MAAM+jC,EAAIvqC,EAAIg/H,MAAM8gF,oBAAoBt5M,GAAI+D,EAAI/D,EAAI,IAAIrH,MAAMorC,EAAI,GAAG2nB,KAAK,MAC1E,OAAO8sE,MAAMthI,IAAI6M,EAAEhN,MAAM,MAAO+P,GAAM,IAAInO,MAAM,GAAKmO,EAAEzW,QAAQq7D,KAAK,KAAO5kD,IAAG1K,SAAS,IAEzF,IAAK2C,IAAME,EAAIzF,EAAI5B,KAAKsI,IAAIw0B,EAAGx1B,IAAK1F,GAAK,EAAGA,GAAKyF,GAAK,CACpD,GAAIW,EAAE,GAAGpG,GAAKoG,EAAE,GAAGpG,GACjB,OAAO,EACT,GAAIoG,EAAE,GAAGpG,KAAOoG,EAAE,GAAGpG,GAAI,CACvB,GAAIA,IAAMyF,EACR,OAAO,EACTzF,GAAK,CACP,MAAO,GAAIoG,EAAE,GAAGpG,GAAKoG,EAAE,GAAGpG,GACxB,OAAQ,CACZ,CACF,CACA,UAAOtC,CAAI6I,EAAGV,GACZ,MAAMN,EAAI,GACV,IAAI21B,EACJ,GAAI/7B,MAAMS,UAAUlC,IAClB,OAAOyB,MAAMS,UAAUlC,IAAIoO,KAAKvF,EAAGV,GACrC,IAAKq1B,EAAI,EAAGA,EAAI30B,EAAE1P,OAAQqkC,GAAK,EAC7B31B,EAAEjJ,KAAKuJ,EAAEU,EAAE20B,KACb,OAAO31B,CACT,CACA,WAAOuqD,CAAKvpD,EAAGV,GACb,IAAIN,EAAG21B,EACP,GAAI/7B,MAAMS,UAAUkwD,KAClB,OAAO3wD,MAAMS,UAAUkwD,KAAKhkD,KAAKvF,EAAGV,GACtC,IAAKN,EAAI,EAAG21B,EAAI30B,EAAE1P,OAAQ0O,EAAI21B,EAAG31B,GAAK,EAAG,CACvC,MAAMG,EAAIa,EAAEhB,GACZ,GAAIM,EAAEH,EAAGH,GACP,OAAOG,CACX,CACF,CACA,aAAOg6E,CAAOn5E,GACZ,MAAMhB,EAAIgB,EACV,IAAI20B,EAAGx1B,EAAE,QAAAmyJ,EAAAjhK,UAAAC,OAFSgP,EAAC,IAAA1G,MAAA04J,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAADjyJ,EAACiyJ,EAAA,GAAAlhK,UAAAkhK,GAGnB,GAAI9/J,OAAO0nF,OACT,OAAO1nF,OAAO0nF,OAAOn5E,KAAMV,GAC7B,IAAKq1B,EAAI,EAAGx1B,EAAIG,EAAEhP,OAAQqkC,EAAIx1B,EAAGw1B,GAAK,EAAG,CACvC,MAAMl7B,EAAI6F,EAAEq1B,GACA,iBAALl7B,GAAuB,OAANA,GAAchI,OAAOoc,KAAKpU,GAAG+D,SAASqC,IAC5Db,EAAEa,GAAKpG,EAAEoG,EAAE,GAEf,CACA,OAAOG,CACT,CACA,sBAAOy5M,CAAgBz5M,GACrB,OAAO+zM,oBAAoB/zM,EAC7B,CACA,4BAAO05M,CAAsB15M,GAC3B,OAAO01M,YAAY11M,IAAM,EAC3B,EAEF,MAAM25M,wBAA0B,6BAA8BC,aAAe,CAC3E,CACE72M,KAAM,CAAC,cACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,aACLf,EAAIm5H,MAAMwgF,cAAc,2BAA4BjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GAC1G,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,UACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,SACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,kCAAmCjuM,GACjH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,gBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,SACLf,EAAIm5H,MAAMwgF,cAAc,2BAA4BjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GAC1G,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,mBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,gCACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,2CAA4CjuM,GAC1H,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,UACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,uBACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,iCAAkCjuM,GAChH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,cACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,cACLf,EAAIm5H,MAAMwgF,cAAc,qCAAsCjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GACpH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,UACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,SACLf,EAAIm5H,MAAMwgF,cAAc,iCAAkCjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GAChH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,UACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,SACLf,EAAIm5H,MAAMwgF,cAAc,iCAAkCjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GAChH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,UACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,eACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,kCAAmCjuM,GACjH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,yBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,eACLf,EAAIm5H,MAAMwgF,cAAc,gCAAiCjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GAC/G,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,cACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,kBACLf,EAAIm5H,MAAMwgF,cAAc,sCAAuCjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GACrH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,cACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,cACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,sCAAuCjuM,GACrH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,kBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,WACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,0CAA2CjuM,GACzH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,YACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,qCAAsCjuM,GACpH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,WACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,UACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,mCAAoCjuM,GAClH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,YACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,qCAAsCjuM,GACpH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,YACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,qCAAsCjuM,GACpH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,mBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,UACLf,EAAIm5H,MAAMwgF,cAAc,2CAA4CjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GAC1H,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,cACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,iBAAiB0C,KAAKiI,GAAK,kBAAoB,cACpD1L,EAAIm5H,MAAMwgF,cAAc,kDAAmDjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GACjI,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,iBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,qBACLf,EAAIm5H,MAAMwgF,cAAc,iCAAkCjuM,GAC7D,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,YACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,kBACLf,EAAIm5H,MAAMwgF,cAAc,2BAA4BjuM,GACvD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,kBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,kBACLf,EAAIm5H,MAAMygF,eAAe,mCAAoCluM,GAChE,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,YACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,WACLf,EAAIm5H,MAAMwgF,cAAc,6BAA8BjuM,GACzD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,cACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,aACLf,EAAIm5H,MAAMwgF,cAAc,+BAAgCjuM,GAC3D,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,YACLf,EAAIm5H,MAAMwgF,cAAc,qCAAsCjuM,GACjE,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,SACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,eACLf,EAAIm5H,MAAMwgF,cAAc,0BAA2BjuM,GACtD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,YACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,aACLf,EAAIm5H,MAAMwgF,cAAc,+BAAgCjuM,GAC3D,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,YACLf,EAAIm5H,MAAMwgF,cAAc,8BAA+BjuM,GAC1D,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,sBAAuB,gBAC9B82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,cACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,qCAAsCjuM,GACpH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,mBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,iBACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,IAAMytH,MAAMwgF,cAAc,0CAA2CjuM,GACzH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,SACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,QACLf,EAAIm5H,MAAMwgF,cAAc,4BAA6BjuM,GACxD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,UACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,SACLf,EAAIm5H,MAAMwgF,cAAc,0CAA2CjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GACzH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,YACLf,EAAIm5H,MAAMwgF,cAAc,qCAAsCjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GACpH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,4BACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,WACLf,EAAIm5H,MAAMwgF,cAAc,oDAAqDjuM,GAChF,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,YACLf,EAAIm5H,MAAMwgF,cAAc,kCAAmCjuM,GAC9D,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,gBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,QACLf,EAAIm5H,MAAMwgF,cAAc,wCAAyCjuM,GACpE,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,YACLf,EAAIm5H,MAAMwgF,cAAc,qCAAsCjuM,IAAMytH,MAAMwgF,cAAcU,wBAAyB3uM,GACpH,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,sBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,UACLf,EAAIm5H,MAAMwgF,cAAc,2CAA4CjuM,GACvE,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,QACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,iBACLf,EAAIm5H,MAAMwgF,cAAc,6BAA8BjuM,GACzD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,IAAAA,CAAKiI,GACH,MAAMhL,GAAKgL,EAAEjI,KAAK,iBAAkBzD,EAAI0L,EAAEjI,KAAK,YAC/C,OAAO/C,GAAKV,CACd,EACAu6M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,mBACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,GACpD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,kBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,iBACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,GACpD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,uBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM,UACLf,EAAIm5H,MAAMwgF,cAAcU,wBAAyB3uM,GACpD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,OACP82M,QAAAA,CAAS7uM,GACP,MAAwD2pB,GAAyB,IAArB3pB,EAAE/H,OAAO,OAAvC,yBAApB,eACV,MAAO,CACL5C,KAAMo4H,MAAMwgF,cAActkL,EAAG3pB,GAC7BkwC,QAASu9E,MAAMygF,eAAevkL,EAAG3pB,GAErC,IAED8uM,cAAgB,CACjB,CACE/2M,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,wBAAyBjuM,GACvD,MAAO,CACL3K,KAAM23M,OAAOvC,KACbv6J,QAASl7C,EAEb,GAEF,CACE+C,KAAM,CAAC,kBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,yCAA0CjuM,GACxE,MAAO,CACL3K,KAAM23M,OAAOC,aACb/8J,QAASl7C,EAEb,GAEF,CACE+C,KAAM,CAAC,aACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,iCAAkCjuM,GAAI1L,EAAIm5H,MAAM2gF,sBAAsBp5M,GACpG,MAAO,CACLK,KAAM23M,OAAOE,QACbh9J,QAASl7C,EACT+5M,YAAaz6M,EAEjB,GAEF,CACEyD,KAAM,CAAC,+BACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAM23M,OAAOI,KACZ94M,EAAIm5H,MAAMygF,eAAe,wBAAyBluM,GACrD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,cACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,6BAA8BjuM,GAAGvP,QAAQ,SAAU,KAAM6D,EAAIm5H,MAAM4gF,oBAAoBr5M,GAAIhB,EAAI,CAC3HqB,KAAM23M,OAAOG,MACbj9J,QAASl7C,GAEX,OAAOV,IAAMN,EAAE+6M,YAAcz6M,GAAIN,CACnC,GAEF,CACE+D,KAAM,CAAC,uBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,qCAAsCjuM,GAAGvP,QAAQ,SAAU,KACzF,MAAO,CACL4E,KAAM23M,OAAOI,IACbl9J,QAASl7C,EAEb,GAEF,CACE+C,IAAAA,CAAKiI,GACH,MAAMhL,GAAKgL,EAAEjI,KAAK,iBAAkBzD,EAAI0L,EAAEjI,KAAK,YAC/C,OAAO/C,GAAKV,CACd,EACAu6M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,8BAA+BjuM,GAAI1L,EAAIm5H,MAAM6gF,sBAAsBt5M,GAAIhB,EAAI,CACvGqB,KAAM23M,OAAOK,QACbn9J,QAASl7C,GAEX,OAAOV,IAAMN,EAAE+6M,YAAcz6M,GAAIN,CACnC,GAEF,CACE+D,KAAM,CAAC,mBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,mCAAoCjuM,GAAI1L,EAAI,CACxEe,KAAM23M,OAAOM,OAEf,OAAOt4M,GAAKA,EAAE1P,SAAWgP,EAAE47C,QAAUl7C,GAAIV,CAC3C,GAEF,CACEyD,KAAM,CAAC,sBAAuB,gBAC9B82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,kCAAmCjuM,IAAMytH,MAAMwgF,cAAc,mCAAoCjuM,IAAMytH,MAAMwgF,cAAc,aAAcjuM,GACvK,MAAO,CACL3K,KAAM23M,OAAO/D,WACb/4J,QAASl7C,EAEb,GAEF,CACE+C,KAAM,CAAC,SACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,uBAAwBjuM,GACtD,MAAO,CACL3K,KAAM23M,OAAOhE,KACb94J,QAASl7C,EAEb,GAEF,CACE+C,KAAM,CAAC,UACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,2BAA4BjuM,GAC1D,MAAO,CACL3K,KAAM23M,OAAO1C,MACbp6J,QAASl7C,EAEb,GAEF,CACE+C,KAAM,CAAC,UACP82M,SAAQA,KACC,CACLx5M,KAAM23M,OAAOO,SAInB,CACEx1M,KAAM,CAAC,QACP82M,SAAQA,KACC,CACLx5M,KAAM23M,OAAOQ,YAInB,CACEz1M,KAAM,CAAC,iBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,mCAAoCjuM,GAClE,MAAO,CACL3K,KAAM23M,OAAOS,aACbv9J,QAASl7C,EAEb,IAEDg6M,oBAAsB,CACvB,CACEj3M,KAAM,CAAC,cACP82M,SAAQA,KACC,CACLzjN,KAAM,MACN6jN,OAAQ,YAId,CACEl3M,KAAM,CAAC,WACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,aAAcjuM,IAAM,OAAQ1L,EAAI,CAC5DlJ,KAAMuhN,cAAcE,OACpBoC,OAAQ,UAEV,OAAOj6M,IAAMV,EAAE46M,MAAQl6M,GAAIV,CAC7B,GAEF,CACEyD,KAAM,CAAC,2BACP82M,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcC,OACpBqC,OAAQ,WAId,CACEl3M,KAAM,CAAC,SACP82M,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcC,OACpBqC,OAAQ,QACRC,MAAO,UAIb,CACEn3M,KAAM,CAAC,+BACP82M,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcC,OACpBqC,OAAQ,QACRC,MAAO,UAIb,CACEn3M,KAAM,CAAC,eACP82M,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcC,OACpBqC,OAAQ,SACRC,MAAO,sBAIb,CACEn3M,KAAM,CAAC,SACP82M,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcC,OACpBqC,OAAQ,YAId,CACEl3M,KAAM,CAAC,kBACP82M,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcC,UAI1B,CACE70M,IAAAA,CAAKiI,GACH,MAAMhL,EAAIgL,EAAEjI,KAAK,gBAAiBzD,EAAI0L,EAAEjI,KAAK,uBAC7C,OAAO/C,IAAMV,CACf,EACAu6M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAIy4H,MAAMwgF,cAAc,iBAAkBjuM,GAChD,MAAO,CACL5U,KAAMuhN,cAAcE,OACpBoC,OAAQ,QACRC,MAAOl6M,EAEX,GAEF,CACE+C,KAAM,CAAC,mBAAoB,iBAC3B82M,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcE,OACpBoC,OAAQ,WAId,CACEl3M,KAAM,CAAC,aACP82M,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcE,UAI1B,CACE90M,KAAKiI,GAC6B,eAAzBA,EAAEmvM,gBAAe,GAE1BN,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcE,OACpBoC,OAAQ,gBAId,CACEl3M,KAAKiI,GAC6B,SAAzBA,EAAEmvM,gBAAe,GAE1BN,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcE,UAI1B,CACE90M,KAAKiI,GAC2B,kBAAvBA,EAAEmvM,iBAEXN,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcE,OACpBoC,OAAQ,eAId,CACEl3M,IAAAA,CAAKiI,GACH,MAAMhL,EAAI4d,OAAOtd,OAAO0K,EAAEovM,gBAAgBpjN,MAAM,KAAK,IACrD,MAA2B,YAApBgU,EAAEqvM,WAAU,IAAqBr6M,GAAK,CAC/C,EACA65M,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcC,UAI1B,CACE70M,KAAKiI,GACwB,YAApBA,EAAEqvM,WAAU,GAErBR,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcE,UAI1B,CACE90M,KAAKiI,GACwB,UAApBA,EAAEqvM,WAAU,GAErBR,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcG,QACpBmC,OAAQ,WAId,CACEl3M,KAAKiI,GACwB,YAApBA,EAAEqvM,WAAU,GAErBR,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcG,WAI1B,CACE/0M,KAAKiI,GACwB,UAApBA,EAAEqvM,WAAU,GAErBR,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcG,WAI1B,CACE/0M,KAAKiI,GACwB,kBAApBA,EAAEqvM,WAAU,GAErBR,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcI,MAI1B,CACEh1M,KAAKiI,GACwB,SAApBA,EAAEqvM,WAAU,GAErBR,SAAQA,KACC,CACLzjN,KAAMuhN,cAAcI,OAIzBuC,mBAAqB,CACtB,CACEv3M,KAAKiI,GAC6B,mBAAzBA,EAAEmvM,gBAAe,GAE1BN,QAAAA,CAAS7uM,GACP,GAAI,WAAWjI,KAAKiI,GAClB,MAAO,CACL3K,KAAMq4M,WAAWE,OAErB,MAAMt5M,EAAIm5H,MAAMwgF,cAAc,0BAA2BjuM,GACzD,MAAO,CACL3K,KAAMq4M,WAAWC,SACjBz9J,QAAS57C,EAEb,GAEF,CACEyD,KAAM,CAAC,YACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAMq4M,WAAWG,SAChBv5M,EAAIm5H,MAAMwgF,cAAc,6BAA8BjuM,GACzD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAKiI,GACIA,EAAEjI,KAAK,WAEhB82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAMq4M,WAAWI,QAChBx5M,EAAIm5H,MAAMwgF,cAAc,4BAA6BjuM,GACxD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,IAAAA,CAAKiI,GACH,MAAMhL,EAAIgL,EAAEjI,KAAK,UAAWzD,EAAI0L,EAAEjI,KAAK,eACvC,OAAO/C,IAAMV,CACf,EACAu6M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAMq4M,WAAWK,OAChBz5M,EAAIm5H,MAAMwgF,cAAc,2BAA4BjuM,GACvD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,GAEF,CACE+C,KAAM,CAAC,4BACP82M,SAAQA,KACC,CACLx5M,KAAMq4M,WAAWE,SAIvB,CACE71M,KAAM,CAAC,mBACP82M,QAAAA,CAAS7uM,GACP,MAAMhL,EAAI,CACRK,KAAMq4M,WAAWM,QAChB15M,EAAIm5H,MAAMwgF,cAAc,4BAA6BjuM,GACxD,OAAO1L,IAAMU,EAAEk7C,QAAU57C,GAAIU,CAC/B,IAGJ,MAAMu6M,OACJ79M,WAAAA,CAAYsD,GAAW,IAARV,EAACjP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACd,GAAS,MAAL2P,GAAmB,KAANA,EACf,MAAM,IAAI1N,MAAM,sCAClB7D,KAAK+rN,IAAMx6M,EAAGvR,KAAKgsN,aAAe,CAAC,GAAS,IAANn7M,GAAY7Q,KAAKmyB,OACzD,CACA85L,KAAAA,GACE,OAAOjsN,KAAK+rN,GACd,CACAz3M,IAAAA,CAAK/C,GACH,OAAOA,EAAE+C,KAAKtU,KAAK+rN,IACrB,CACAG,YAAAA,GACElsN,KAAKgsN,aAAaG,QAAU,CAAC,EAC7B,MAAM56M,EAAIy4H,MAAMlvE,KAAKqwJ,cAAet6M,IAClC,GAAqB,mBAAVA,EAAEyD,KACX,OAAOzD,EAAEyD,KAAKtU,MAChB,GAAI6Q,EAAEyD,gBAAgBnK,MACpB,OAAO0G,EAAEyD,KAAKgf,MAAM/iB,GAAMvQ,KAAKsU,KAAK/D,KACtC,MAAM,IAAI1M,MAAM,uCAAuC,IAEzD,OAAO0N,IAAMvR,KAAKgsN,aAAaG,QAAU56M,EAAE65M,SAASprN,KAAKisN,UAAWjsN,KAAKgsN,aAAaG,OACxF,CACAC,UAAAA,GACE,OAAOpsN,KAAKgsN,aAAaG,QAAUnsN,KAAKgsN,aAAaG,QAAUnsN,KAAKksN,cACtE,CACAR,cAAAA,CAAen6M,GACb,OAAOA,EAAIM,OAAO7R,KAAKosN,aAAax6M,MAAMgD,eAAiB,GAAK5U,KAAKosN,aAAax6M,MAAQ,EAC5F,CACAy6M,iBAAAA,GACE,OAAOrsN,KAAKosN,aAAa3/J,OAC3B,CACA6/J,KAAAA,GACE,OAAOtsN,KAAKgsN,aAAazxL,GAAKv6B,KAAKgsN,aAAazxL,GAAKv6B,KAAKusN,SAC5D,CACAA,OAAAA,GACEvsN,KAAKgsN,aAAazxL,GAAK,CAAC,EACxB,MAAMhpB,EAAIy4H,MAAMlvE,KAAKuwJ,eAAgBx6M,IACnC,GAAqB,mBAAVA,EAAEyD,KACX,OAAOzD,EAAEyD,KAAKtU,MAChB,GAAI6Q,EAAEyD,gBAAgBnK,MACpB,OAAO0G,EAAEyD,KAAKgf,MAAM/iB,GAAMvQ,KAAKsU,KAAK/D,KACtC,MAAM,IAAI1M,MAAM,uCAAuC,IAEzD,OAAO0N,IAAMvR,KAAKgsN,aAAazxL,GAAKhpB,EAAE65M,SAASprN,KAAKisN,UAAWjsN,KAAKgsN,aAAazxL,EACnF,CACAqxL,SAAAA,CAAUr6M,GACR,MAAQK,KAAMf,GAAM7Q,KAAKssN,QACzB,OAAO/6M,EAAIM,OAAOhB,GAAG+D,eAAiB,GAAK/D,GAAK,EAClD,CACA86M,YAAAA,GACE,OAAO3rN,KAAKssN,QAAQ7/J,OACtB,CACA+/J,WAAAA,GACE,OAAOxsN,KAAKgsN,aAAaS,SAAWzsN,KAAKgsN,aAAaS,SAAWzsN,KAAK0sN,eACxE,CACAC,eAAAA,GAAwB,IAARp7M,EAAC3P,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACf,MAAQ+F,KAAMkJ,GAAM7Q,KAAKwsN,cACzB,OAAOj7M,EAAIM,OAAOhB,GAAG+D,eAAiB,GAAK/D,GAAK,EAClD,CACA67M,aAAAA,GACE1sN,KAAKgsN,aAAaS,SAAW,CAAC,EAC9B,MAAMl7M,EAAIy4H,MAAMlvE,KAAKywJ,qBAAsB16M,IACzC,GAAqB,mBAAVA,EAAEyD,KACX,OAAOzD,EAAEyD,KAAKtU,MAChB,GAAI6Q,EAAEyD,gBAAgBnK,MACpB,OAAO0G,EAAEyD,KAAKgf,MAAM/iB,GAAMvQ,KAAKsU,KAAK/D,KACtC,MAAM,IAAI1M,MAAM,uCAAuC,IAEzD,OAAO0N,IAAMvR,KAAKgsN,aAAaS,SAAWl7M,EAAE65M,SAASprN,KAAKisN,UAAWjsN,KAAKgsN,aAAaS,QACzF,CACAG,SAAAA,GACE,OAAO5sN,KAAKgsN,aAAaa,OAAS7sN,KAAKgsN,aAAaa,OAAS7sN,KAAK8sN,aACpE,CACAC,aAAAA,CAAcx7M,GACZ,OAAOA,EAAIM,OAAO7R,KAAK4sN,YAAYh7M,MAAMgD,eAAiB,GAAK5U,KAAK4sN,YAAYh7M,MAAQ,EAC1F,CACAk7M,WAAAA,GACE9sN,KAAKgsN,aAAaa,OAAS,CAAC,EAC5B,MAAMt7M,EAAIy4H,MAAMlvE,KAAK+wJ,oBAAqBh7M,IACxC,GAAqB,mBAAVA,EAAEyD,KACX,OAAOzD,EAAEyD,KAAKtU,MAChB,GAAI6Q,EAAEyD,gBAAgBnK,MACpB,OAAO0G,EAAEyD,KAAKgf,MAAM/iB,GAAMvQ,KAAKsU,KAAK/D,KACtC,MAAM,IAAI1M,MAAM,uCAAuC,IAEzD,OAAO0N,IAAMvR,KAAKgsN,aAAaa,OAASt7M,EAAE65M,SAASprN,KAAKisN,UAAWjsN,KAAKgsN,aAAaa,MACvF,CACA16L,KAAAA,GACE,OAAOnyB,KAAKksN,eAAgBlsN,KAAKusN,UAAWvsN,KAAK0sN,gBAAiB1sN,KAAK8sN,cAAe9sN,IACxF,CACAgtN,SAAAA,GACE,OAAOhjF,MAAMt/C,OAAO,CAAC,EAAG1qF,KAAKgsN,aAC/B,CACAiB,SAAAA,CAAU17M,GACR,MAAMV,EAAI,CAAC,EACX,IAAIN,EAAI,EACR,MAAM21B,EAAI,CAAC,EACX,IAAIx1B,EAAI,EACR,GAAI1N,OAAOoc,KAAK7N,GAAGxC,SAAS0B,IAC1B,MAAMW,EAAIG,EAAEd,GACA,iBAALW,GAAiB80B,EAAEz1B,GAAKW,EAAGV,GAAK,GAAiB,iBAALU,IAAkBP,EAAEJ,GAAKW,EAAGb,GAAK,EAAE,IACpFA,EAAI,EAAG,CACT,MAAME,EAAIzN,OAAOoc,KAAKvO,GAAIO,EAAI44H,MAAMlvE,KAAKrqD,GAAI8kC,GAAMv1C,KAAKktN,KAAK33K,KAC7D,GAAInkC,EAAG,CACL,MAAMmkC,EAAIv1C,KAAKitN,UAAUp8M,EAAEO,IAC3B,QAAU,IAANmkC,EACF,OAAOA,CACX,CACA,MAAM/jC,EAAIw4H,MAAMlvE,KACdrqD,GACC8kC,GAAMv1C,KAAKmtN,WAAW53K,KAEzB,GAAI/jC,EAAG,CACL,MAAM+jC,EAAIv1C,KAAKitN,UAAUp8M,EAAEW,IAC3B,QAAU,IAAN+jC,EACF,OAAOA,CACX,CACF,CACA,GAAI7kC,EAAI,EAAG,CACT,MAAMD,EAAIzN,OAAOoc,KAAK8mB,GAAI90B,EAAI44H,MAAMlvE,KAAKrqD,GAAIe,GAAMxR,KAAKotN,UAAU57M,GAAG,KACrE,QAAU,IAANJ,EACF,OAAOpR,KAAKqvM,eAAenpK,EAAE90B,GACjC,CACF,CACAg8M,SAAAA,CAAU77M,GAAW,IAARV,EAACjP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACZ,MAAM2O,EAAIvQ,KAAK0rN,iBAAiB92M,cAChC,IAAIsxB,EAAI30B,EAAEqD,cACV,MAAMlE,EAAIs5H,MAAMihF,sBAAsB/kL,GACtC,OAAOr1B,GAAKH,IAAMw1B,EAAIx1B,EAAEkE,eAAgBsxB,IAAM31B,CAChD,CACA8+L,cAAAA,CAAe99L,GACb,IAAIV,EAAI,CAAC,GAAIN,EAAIgB,EAAG20B,GAAI,EACxB,MAAMx1B,EAAI1Q,KAAKqsN,oBACf,GAAgB,iBAAL37M,EACT,MAAgB,MAATa,EAAE,IAAuB,MAATA,EAAE,IAAchB,EAAIgB,EAAErG,OAAO,GAAa,MAATqG,EAAE,IAAc20B,GAAI,EAAI31B,EAAIgB,EAAErG,OAAO,IAAM2F,EAAI,GAAa,MAATU,EAAE,GAAaV,EAAEvJ,KAAK,GAAKuJ,EAAEvJ,MAAM,IAAe,MAATiK,EAAE,GAAahB,EAAIgB,EAAErG,OAAO,GAAc,MAATqG,EAAE,KAAe20B,GAAI,EAAI31B,EAAIgB,EAAErG,OAAO,IAAK2F,EAAE0D,QAChOy1H,MAAM+gF,gBAAgBr6M,EAAGH,EAAG21B,KACzB,CACT,CACAgnL,IAAAA,CAAK37M,GACH,OAAOvR,KAAK4rN,WAAU,KAAQ/5M,OAAON,GAAGqD,aAC1C,CACAu4M,UAAAA,CAAW57M,GACT,OAAOvR,KAAK2sN,iBAAgB,KAAQ96M,OAAON,GAAGqD,aAChD,CACAy4M,QAAAA,CAAS97M,GACP,OAAOvR,KAAK+sN,eAAc,KAAQl7M,OAAON,GAAGqD,aAC9C,CACA+uC,EAAAA,CAAGpyC,GAAW,IAARV,EAACjP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACL,OAAO5B,KAAKotN,UAAU77M,EAAGV,IAAM7Q,KAAKktN,KAAK37M,IAAMvR,KAAKmtN,WAAW57M,EACjE,CACA+hB,IAAAA,GACE,OADI1xB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IACE0xB,MAAMziB,GAAM7Q,KAAK2jD,GAAG9yC,IAC/B,EAQF,MAAMy8M,OACJ,gBAAOC,CAAUh8M,GAAW,IAARV,EAACjP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACnB,GAAgB,iBAAL2P,EACT,MAAM,IAAI1N,MAAM,gCAClB,OAAO,IAAIioN,OAAOv6M,EAAGV,EACvB,CACA,YAAOshB,CAAM5gB,GACX,OAAO,IAAIu6M,OAAOv6M,GAAGy7M,WACvB,CACA,sBAAW/F,GACT,OAAOA,WACT,CACA,qBAAWgD,GACT,OAAOA,UACT,CACA,iBAAWV,GACT,OAAOA,MACT,CACA,wBAAWL,GACT,OAAOA,aACT,EAEF,MAAMsE,qBAAuB52L,OAAS,IAAMA,OAAS,KACrD,SAAS62L,oCACP,IAAIl8M,EACJ,OAAuH,OAA9GA,EAAI+7M,OAAOC,UAA2B,MAAjBC,mBAAwB,EAASA,cAAcjnE,UAAUmnE,WAAWhC,uBAA4B,EAASn6M,EAAEqD,eACvI,IAAK,UACH,MAAO,UACT,IAAK,iBACH,MAAO,OACT,IAAK,kBACL,IAAK,SACL,IAAK,WACL,IAAK,WACL,IAAK,QACL,IAAK,UACH,MAAO,SACT,IAAK,SACH,MAAO,SACT,QACE,OAAO,KAEb,CACA,SAAS+4M,4CACP,IAAIp8M,EAAGV,EAAGN,EACV,MAAMgM,EAAmL,OAA9KhM,EAA0I,OAArIM,EAA0G,OAArGU,EAAI+7M,OAAOC,UAA2B,MAAjBC,mBAAwB,EAASA,cAAcjnE,UAAUmnE,WAAWpB,cAAmB,EAAS/6M,EAAEK,WAAgB,EAASf,EAAE+D,eAAyBrE,EAAI,KACpM,OAAQgM,GACN,IAAK,MACL,IAAK,UACH,OAAOA,EACT,QACE,OAAO,KAEb,CACA,MAAMqxM,kBAAoBv+M,MAAOkN,EAAGhL,IAAMgL,EAAI8oM,KAAKnc,OAAO3sL,EAAGhL,GAAGqR,OAAM,IAAM,OAAQ,KAAMirM,QAAUx+M,iBAMzF,IALTy+M,UAAWvxM,EAAI,SACfwxM,aAAcx8M,EAAIk8M,oCAClBO,UAAWn9M,EAAI88M,4CACfM,WAAY19M,KACT21B,GACJtkC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACH,IAAI2zC,EAAGhgC,EACP,MAAM7E,QAAU20M,KAAKP,qBAAqB,IACrC5+K,IACDl7B,QAAUq6M,KAAKL,yBACnB,GAAU,aAANzoM,EAAkB,CACpB,MAAMjE,EAAiE,OAA5Di9B,EAAI7kC,EAAEoqD,MAAMnqB,GAAMA,EAAE57B,MAAa,MAAL/J,OAAY,EAASA,EAAE+J,OAAgBwgC,EAAI7kC,EAAE,GACpF,OAAOk9M,kBAAkBt1M,EAAG,CAAE4sM,aAAa,GAC7C,CACA,MAAMz0M,QAAU40M,KAAKR,oBAAoB3+K,GACzC,GAAU,WAAN3pB,GAAkBvR,EAAG,CACvB,MAAMsN,EAAiE,OAA5D/C,EAAI7E,EAAEoqD,MAAMnqB,GAAMA,EAAE57B,MAAa,MAAL/J,OAAY,EAASA,EAAE+J,OAAgBQ,EAAiB,IAAb9E,EAAE5O,OAAe4O,EAAE,QAAK,EAC1G,GAAI6H,EACF,OAAOs1M,kBAAkBt1M,EAC7B,CACA,MAAM9G,SAAW6zM,KAAKN,oBAAoB7+K,IAAIj9B,QAAO,CAACqP,EAAGq4B,KACvD,MAAMnf,EAAImf,EAAEqyK,UAAUnyM,IAAM8/B,EAAEqyK,UAAUzxM,GACxC,GAAIigB,EAAG,CACL,MAAMvgB,EAAIjO,OAAOoc,KAAKuxB,EAAEqyK,WAAWloJ,MAChC5Q,GAAMvZ,EAAEqyK,UAAU94J,KAAO14B,IACzBjb,EAAU,YAANtF,GAAyB,QAANA,EAAc,GAAG0/B,EAAE/+B,cAAgB,WAAW++B,EAAE/+B,OAC1E0G,EAAEhR,KAAK,IAAKqpC,EAAG/+B,KAAM2E,EAAG6xL,SAAU52K,GACpC,CACA,OAAOlZ,CAAC,GACP,IACH,OAAO2wL,KAAK,CACVR,WAAYz9L,EACZ29L,kBAAmBj4L,EACnBg4L,iBAAkBj4L,EAClBm4L,iBAAkBp3L,EAClB03L,OAAQ0kB,kBACRzkB,aAAc,CACZN,MAAOt4L,IAGb,EACA,SAAS40M,aAAmB,IAAR5oM,EAAC3a,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACvB,OAAOyjN,KAAKF,WAAW5oM,EACzB,mOCnlJA,MAAAuC,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAme,EAAAne,EAAA,OA6GA,SAAgBotN,EAA0C/uM,GAIjC,IAJkC,UACvDnd,EACAod,MAAO/d,GAAK,KACZsC,GACqBwb,EAKrB,MAAO,CACHnd,YACAod,KAAM,CACF/d,QAEJsC,MAToC,EAAAmb,EAAAY,QAAwC,EAC5E,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAA2gH,MAAK97H,EAAK9B,OAAS,EAAG,YAOgB4d,OAAO9b,GAErD,CA1GA7D,EAAAA,kCAAA,SACIuB,EACAG,GAC4B,IAA5BQ,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,EAAO,CAAC,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IACrDqnD,EAAM9iE,EAAOC,KAAKhD,EAAQ,QAC1B2sN,GAAkC,EAAArvM,EAAAY,QAAwC,EAC5E,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAA2gH,MAAKp4D,EAAIxlE,OAAQ,YAGf8B,EAAOY,EAAO0b,MAAMkuM,EAAgCjuM,MAS1D,OARAiuM,EAAgChuM,OAC5B,CACId,YAAaJ,EAAAmB,iBAAiBguM,iBAC9B5sN,OAAQ6lE,GAEZ1jE,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAsBA7D,EAAAA,kCAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,MAAM2tM,GAAkC,EAAArvM,EAAAY,QAAwC,EAC5E,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAA2gH,MAAKpgH,EAAY1b,KAAK9B,OAAS,EAAG,YAEtC,GAAIwd,EAAY1b,KAAK9B,SAAWssN,EAAgCjuM,KAAM,MAAM,IAAIlB,EAAAyB,iCAEhF,MACIrB,MAAM,KAAE/d,GAAM,KACdsC,GACAuqN,EAA2C7uM,GAC/C,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBguM,iBAAkB,MAAM,IAAIpvM,EAAA0B,iCACtE,IAAKrf,EAAM,MAAM,IAAI2d,EAAA2B,iCAErB,MAAO,CACH3e,YACAod,KAAM,CACF/d,QAEJsC,OAER,EAqBA7D,EAAAA,2CAAAouN,8BCnHAlrN,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,yKCFtD,MAAAmY,EAAAva,EAAA,OACA07C,EAAA17C,EAAA,OACA2uB,EAAA3uB,EAAA,OACAw7C,EAAAx7C,EAAA,OAgIA,MAAQu9C,gBAAiBqG,EAAKhE,WAAYiE,GAAQnI,EACrC18C,EAAAA,IAAM,CAEjB4jD,IAAK,cAAqB7/C,MACxBoK,WAAAA,GACE7H,MADWxE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAEhB,GAEFysN,SAAAA,CAAU1qN,GACR,MAAQ+/C,IAAKqB,GAAMjlD,EAAAy/C,IACnB,GAAI57C,EAAK9B,OAAS,GAAiB,IAAZ8B,EAAK,GAAa,MAAM,IAAIohD,EAAE,iCACrD,MAAM5yC,EAAMxO,EAAK,GACXiuB,EAAMjuB,EAAKitB,SAAS,EAAGze,EAAM,GACnC,IAAKA,GAAOyf,EAAI/vB,SAAWsQ,EAAK,MAAM,IAAI4yC,EAAE,2CAK5C,GAAa,IAATnzB,EAAI,GAAiB,MAAM,IAAImzB,EAAE,uCACrC,GAAe,IAAXnzB,EAAI,MAA0B,IAATA,EAAI,IAC3B,MAAM,IAAImzB,EAAE,uDACd,MAAO,CAAExvC,EAAGmvC,EAAI9yB,GAAMpgB,EAAG7N,EAAKitB,SAASze,EAAM,GAC/C,EACAqtC,KAAAA,CAAM14C,GAEJ,MAAQ48C,IAAKqB,GAAMjlD,EAAAy/C,IACb57C,EAAsB,kBAARmD,EAAmB69C,EAAI79C,GAAOA,EAClD,IAAK01C,EAAGgF,QAAQ79C,GAAO,MAAM,IAAIE,MAAM,iBACvC,IAAI2N,EAAI7N,EAAK9B,OACb,GAAI2P,EAAI,GAAgB,IAAX7N,EAAK,GAAY,MAAM,IAAIohD,EAAE,yBAC1C,GAAIphD,EAAK,KAAO6N,EAAI,EAAG,MAAM,IAAIuzC,EAAE,uCACnC,MAAQxvC,EAAG1E,EAAGW,EAAGq0C,GAAW/lD,EAAAy/C,IAAI8uK,UAAU1qN,EAAKitB,SAAS,KAChDrb,EAAG7E,EAAGc,EAAGqqF,GAAe/7F,EAAAy/C,IAAI8uK,UAAUxoK,GAC9C,GAAIg2C,EAAWh6F,OAAQ,MAAM,IAAIkjD,EAAE,+CACnC,MAAO,CAAEl0C,IAAGH,IACd,EACAkwC,UAAAA,CAAWmF,GAET,MAAMr4C,EAASgD,GAAmD,EAA5Bye,OAAOhkB,SAASuF,EAAE,GAAI,IAAe,KAAOA,EAAIA,EAChF8gB,EAAK2P,IACT,MAAMr6B,EAAMq6B,EAAI18B,SAAS,IACzB,OAAoB,EAAbqC,EAAIjF,OAAa,IAAIiF,IAAQA,CAAG,EAEnC4J,EAAIhD,EAAM8jB,EAAEu0B,EAAIr1C,IAChBG,EAAInD,EAAM8jB,EAAEu0B,EAAIl1C,IAChB+hC,EAAMliC,EAAE7O,OAAS,EACjBysN,EAAMz9M,EAAEhP,OAAS,EACjBg8F,EAAKrsE,EAAEohB,GACPy8H,EAAK79I,EAAE88L,GACb,MAAO,KAAK98L,EAAE88L,EAAM17K,EAAM,OAAOy8H,IAAKx+J,MAAMgtF,IAAKntF,GACnD,GAKF,MAAMmxC,EAAMn8C,OAAO,GAAI64C,EAAM74C,OAAO,GAAIugD,EAAMvgD,OAAO,GAAIwgD,EAAMxgD,OAAO,GAAIygD,EAAMzgD,OAAO,GAEvF,SAAgBy2C,EAAqBliB,GACnC,MAAMmiB,EArGR,SAA8BC,GAC5B,MAAMpiB,GAAO,EAAAqiB,EAAAC,eAAcF,GAC3BG,EAAGC,eACDxiB,EACA,CACExpB,EAAG,QACHS,EAAG,SAEL,CACEk1C,yBAA0B,QAC1BC,eAAgB,UAChBC,cAAe,WACfC,cAAe,WACfC,mBAAoB,UACpBtI,UAAW,WACXxtB,QAAS,aAGb,MAAM,KAAE+1B,EAAI,GAAE3J,EAAE,EAAErsC,GAAMwpB,EACxB,GAAIwsB,EAAM,CACR,IAAK3J,EAAGyH,IAAI9zC,EAAGqsC,EAAG0H,MAChB,MAAM,IAAI3gD,MAAM,qEAElB,GACkB,kBAAT4iD,GACc,kBAAdA,EAAKC,MACgB,oBAArBD,EAAKE,YAEZ,MAAM,IAAI9iD,MAAM,oEAEpB,CACA,OAAOb,OAAO8J,OAAO,IAAKmtB,GAC5B,CAqEgB2sB,CAAkB3sB,IAC1B,GAAE6iB,GAAOV,EAET1rB,EACJ0rB,EAAM1rB,SAAO,EACXitB,EAAwBC,EAAyBmJ,KACjD,MAAMt2C,EAAImtC,EAAME,WAChB,OAAOtB,EAAGnyC,YAAYimB,WAAW9rB,KAAK,CAAC,IAAQs4C,EAAGpsB,QAAQjgB,EAAEO,GAAI8rC,EAAGpsB,QAAQjgB,EAAEQ,GAC9E,GACGitC,EACJ9B,EAAM8B,WAAS,CACbC,IAEA,MAAMC,EAAOD,EAAMvtB,SAAS,GAI5B,MAAO,CAAE5f,EAFC8rC,EAAGoB,UAAUE,EAAKxtB,SAAS,EAAGksB,EAAGG,QAE/BhsC,EADF6rC,EAAGoB,UAAUE,EAAKxtB,SAASksB,EAAGG,MAAO,EAAIH,EAAGG,QAEvD,GAMH,SAASQ,EAAoBzsC,GAC3B,MAAM,EAAEP,EAAC,EAAES,GAAMkrC,EACXhL,EAAK0L,EAAG7O,IAAIj9B,GACZg2C,EAAKlK,EAAG9b,IAAIoQ,EAAIpgC,GACtB,OAAO8rC,EAAGv6C,IAAIu6C,EAAGv6C,IAAIykD,EAAIlK,EAAG9b,IAAIhwB,EAAGP,IAAKS,EAC1C,CAKA,IAAK4rC,EAAGyH,IAAIzH,EAAG7O,IAAImO,EAAM6K,IAAKxJ,EAAoBrB,EAAM8K,KACtD,MAAM,IAAIrjD,MAAM,+CAGlB,SAAS65C,EAAmBvc,GAC1B,MAAsB,kBAARA,GAAoB0gB,EAAM1gB,GAAOA,EAAMib,EAAM7rC,CAC7D,CACA,SAASg+M,EAASptL,GAChB,IAAKuc,EAAmBvc,GAAM,MAAM,IAAIt9B,MAAM,8CAChD,CAGA,SAAS25C,EAAuBxzC,GAC9B,MAAQo8C,yBAA0Be,EAAO,YAAErI,EAAW,eAAEuH,EAAc,EAAE91C,GAAM6rC,EAC9E,GAAI+K,GAA0B,kBAARn9C,EAAkB,CAGtC,GAFIwyC,EAAGgF,QAAQx3C,KAAMA,EAAMwyC,EAAGoC,WAAW50C,IAEtB,kBAARA,IAAqBm9C,EAAQrH,SAAS91C,EAAInI,QAAS,MAAM,IAAIgC,MAAM,eAC9EmG,EAAMA,EAAIqhB,SAAuB,EAAdyzB,EAAiB,IACtC,CACA,IAAI3d,EACJ,IACEA,EACiB,kBAARn3B,EACHA,EACAwyC,EAAG6B,iBAAgB,EAAA5uB,EAAA4vB,aAAY,cAAer1C,EAAK80C,GAC3D,CAAE,MAAOj8B,GACP,MAAM,IAAIhf,MAAM,uBAAuBi7C,sCAAgD90C,IACzF,CAGA,OAFIq8C,IAAgBllB,EAAM9lB,EAAIA,IAAI8lB,EAAK5wB,IACvCg+M,EAASptL,GACFA,CACT,CAEA,MAAM63D,EAAmB,IAAIj3E,IAC7B,SAASqlC,EAAeC,GACtB,KAAMA,aAAiB9J,GAAQ,MAAM,IAAI15C,MAAM,2BACjD,CAMA,MAAM05C,EAIJtvC,WAAAA,CACWw5C,EACAC,EACAC,GAET,GAJS,KAAAF,GAAAA,EACA,KAAAC,GAAAA,EACA,KAAAC,GAAAA,EAEC,MAANF,IAAe3K,EAAGx4B,QAAQmjC,GAAK,MAAM,IAAI5jD,MAAM,cACnD,GAAU,MAAN6jD,IAAe5K,EAAGx4B,QAAQojC,GAAK,MAAM,IAAI7jD,MAAM,cACnD,GAAU,MAAN8jD,IAAe7K,EAAGx4B,QAAQqjC,GAAK,MAAM,IAAI9jD,MAAM,aACrD,CAIA,iBAAOokD,CAAW1xC,GAChB,MAAM,EAAEvF,EAAC,EAAEC,GAAMsF,GAAK,CAAC,EACvB,IAAKA,IAAMumC,EAAGx4B,QAAQtT,KAAO8rC,EAAGx4B,QAAQrT,GAAI,MAAM,IAAIpN,MAAM,wBAC5D,GAAI0S,aAAagnC,EAAO,MAAM,IAAI15C,MAAM,gCACxC,MAAM+jD,EAAO58C,GAAS8xC,EAAGyH,IAAIv5C,EAAG8xC,EAAG0H,MAEnC,OAAIoD,EAAI52C,IAAM42C,EAAI32C,GAAWssC,EAAMiH,KAC5B,IAAIjH,EAAMvsC,EAAGC,EAAG6rC,EAAGlqC,IAC5B,CAEA,KAAI5B,GACF,OAAOhR,KAAK89C,WAAW9sC,CACzB,CACA,KAAIC,GACF,OAAOjR,KAAK89C,WAAW7sC,CACzB,CAQA,iBAAOi3C,CAAWC,GAChB,MAAMC,EAAQtL,EAAGuL,YAAYF,EAAOz/C,KAAK6N,GAAMA,EAAEoxC,MACjD,OAAOQ,EAAOz/C,KAAI,CAAC6N,EAAGvL,IAAMuL,EAAEunC,SAASsK,EAAMp9C,MAAKtC,IAAI60C,EAAM0K,WAC9D,CAMA,cAAOhI,CAAQn5C,GACb,MAAM4L,EAAI6qC,EAAM0K,WAAW/J,GAAU,EAAAzuB,EAAA4vB,aAAY,WAAYv4C,KAE7D,OADA4L,EAAEysC,iBACKzsC,CACT,CAGA,qBAAOmwC,CAAe7B,GACpB,OAAOzD,EAAMvtC,KAAKoI,SAASolC,EAAuBwD,GACpD,CAQAM,cAAAA,CAAeD,GACbrhD,KAAK84F,aAAez3C,EACpB23C,EAAiB5xE,OAAOpnB,KAC1B,CAGAm/C,cAAAA,GACE,GAAIn/C,KAAK4nD,MAAO,CAId,GAAIxL,EAAMoK,qBAAuB1J,EAAG8K,IAAI5nD,KAAK0nD,IAAK,OAClD,MAAM,IAAI7jD,MAAM,kBAClB,CAEA,MAAM,EAAEmN,EAAC,EAAEC,GAAMjR,KAAK89C,WAEtB,IAAKhB,EAAGx4B,QAAQtT,KAAO8rC,EAAGx4B,QAAQrT,GAAI,MAAM,IAAIpN,MAAM,4BACtD,MAAMw1B,EAAOyjB,EAAG7O,IAAIh9B,GACdowB,EAAQoc,EAAoBzsC,GAClC,IAAK8rC,EAAGyH,IAAIlrB,EAAMgI,GAAQ,MAAM,IAAIx9B,MAAM,qCAC1C,IAAK7D,KAAKsmD,gBAAiB,MAAM,IAAIziD,MAAM,yCAC7C,CACAo6C,QAAAA,GACE,MAAM,EAAEhtC,GAAMjR,KAAK89C,WACnB,GAAIhB,EAAGhrC,MAAO,OAAQgrC,EAAGhrC,MAAMb,GAC/B,MAAM,IAAIpN,MAAM,8BAClB,CAKA0c,MAAAA,CAAO8mC,GACLD,EAAeC,GACf,MAAQI,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,MAC3BynD,GAAIqB,EAAIpB,GAAIqB,EAAIpB,GAAIqB,GAAO3B,EAC7B4B,EAAKnM,EAAGyH,IAAIzH,EAAG9b,IAAI2nB,EAAIK,GAAKlM,EAAG9b,IAAI8nB,EAAID,IACvCK,EAAKpM,EAAGyH,IAAIzH,EAAG9b,IAAI4nB,EAAII,GAAKlM,EAAG9b,IAAI+nB,EAAIF,IAC7C,OAAOI,GAAMC,CACf,CAKAC,MAAAA,GACE,OAAO,IAAI5L,EAAMv9C,KAAKynD,GAAI3K,EAAGnY,IAAI3kC,KAAK0nD,IAAK1nD,KAAK2nD,GAClD,CAMAyB,MAAAA,GACE,MAAM,EAAE34C,EAAC,EAAES,GAAMkrC,EACX1T,EAAKoU,EAAG9b,IAAI9vB,EAAGg1C,IACbuB,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,KACnC,IAAIqpD,EAAKvM,EAAG0H,KAAM8E,EAAKxM,EAAG0H,KAAM+E,EAAKzM,EAAG0H,KACpCgF,EAAK1M,EAAG9b,IAAI2nB,EAAIA,GAChBc,EAAK3M,EAAG9b,IAAI4nB,EAAIA,GAChBc,EAAK5M,EAAG9b,IAAI6nB,EAAIA,GAChBc,EAAK7M,EAAG9b,IAAI2nB,EAAIC,GA4BpB,OA3BAe,EAAK7M,EAAGv6C,IAAIonD,EAAIA,GAChBJ,EAAKzM,EAAG9b,IAAI2nB,EAAIE,GAChBU,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GAChBF,EAAKvM,EAAG9b,IAAIvwB,EAAG84C,GACfD,EAAKxM,EAAG9b,IAAI0H,EAAIghB,GAChBJ,EAAKxM,EAAGv6C,IAAI8mD,EAAIC,GAChBD,EAAKvM,EAAG/W,IAAI0jB,EAAIH,GAChBA,EAAKxM,EAAGv6C,IAAIknD,EAAIH,GAChBA,EAAKxM,EAAG9b,IAAIqoB,EAAIC,GAChBD,EAAKvM,EAAG9b,IAAI2oB,EAAIN,GAChBE,EAAKzM,EAAG9b,IAAI0H,EAAI6gB,GAChBG,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfC,EAAK7M,EAAG/W,IAAIyjB,EAAIE,GAChBC,EAAK7M,EAAG9b,IAAIvwB,EAAGk5C,GACfA,EAAK7M,EAAGv6C,IAAIonD,EAAIJ,GAChBA,EAAKzM,EAAGv6C,IAAIinD,EAAIA,GAChBA,EAAK1M,EAAGv6C,IAAIgnD,EAAIC,GAChBA,EAAK1M,EAAGv6C,IAAIinD,EAAIE,GAChBF,EAAK1M,EAAG9b,IAAIwoB,EAAIG,GAChBL,EAAKxM,EAAGv6C,IAAI+mD,EAAIE,GAChBE,EAAK5M,EAAG9b,IAAI4nB,EAAIC,GAChBa,EAAK5M,EAAGv6C,IAAImnD,EAAIA,GAChBF,EAAK1M,EAAG9b,IAAI0oB,EAAIC,GAChBN,EAAKvM,EAAG/W,IAAIsjB,EAAIG,GAChBD,EAAKzM,EAAG9b,IAAI0oB,EAAID,GAChBF,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GAChBA,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GACT,IAAIhM,EAAM8L,EAAIC,EAAIC,EAC3B,CAMAhnD,GAAAA,CAAI8kD,GACFD,EAAeC,GACf,MAAQI,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,MAC3BynD,GAAIqB,EAAIpB,GAAIqB,EAAIpB,GAAIqB,GAAO3B,EACnC,IAAIgC,EAAKvM,EAAG0H,KAAM8E,EAAKxM,EAAG0H,KAAM+E,EAAKzM,EAAG0H,KACxC,MAAM/zC,EAAI2rC,EAAM3rC,EACVi4B,EAAKoU,EAAG9b,IAAIob,EAAMlrC,EAAGg1C,GAC3B,IAAIsD,EAAK1M,EAAG9b,IAAI2nB,EAAIG,GAChBW,EAAK3M,EAAG9b,IAAI4nB,EAAIG,GAChBW,EAAK5M,EAAG9b,IAAI6nB,EAAIG,GAChBW,EAAK7M,EAAGv6C,IAAIomD,EAAIC,GAChBgB,EAAK9M,EAAGv6C,IAAIumD,EAAIC,GACpBY,EAAK7M,EAAG9b,IAAI2oB,EAAIC,GAChBA,EAAK9M,EAAGv6C,IAAIinD,EAAIC,GAChBE,EAAK7M,EAAG/W,IAAI4jB,EAAIC,GAChBA,EAAK9M,EAAGv6C,IAAIomD,EAAIE,GAChB,IAAIgB,EAAK/M,EAAGv6C,IAAIumD,EAAIE,GA+BpB,OA9BAY,EAAK9M,EAAG9b,IAAI4oB,EAAIC,GAChBA,EAAK/M,EAAGv6C,IAAIinD,EAAIE,GAChBE,EAAK9M,EAAG/W,IAAI6jB,EAAIC,GAChBA,EAAK/M,EAAGv6C,IAAIqmD,EAAIC,GAChBQ,EAAKvM,EAAGv6C,IAAIwmD,EAAIC,GAChBa,EAAK/M,EAAG9b,IAAI6oB,EAAIR,GAChBA,EAAKvM,EAAGv6C,IAAIknD,EAAIC,GAChBG,EAAK/M,EAAG/W,IAAI8jB,EAAIR,GAChBE,EAAKzM,EAAG9b,IAAIvwB,EAAGm5C,GACfP,EAAKvM,EAAG9b,IAAI0H,EAAIghB,GAChBH,EAAKzM,EAAGv6C,IAAI8mD,EAAIE,GAChBF,EAAKvM,EAAG/W,IAAI0jB,EAAIF,GAChBA,EAAKzM,EAAGv6C,IAAIknD,EAAIF,GAChBD,EAAKxM,EAAG9b,IAAIqoB,EAAIE,GAChBE,EAAK3M,EAAGv6C,IAAIinD,EAAIA,GAChBC,EAAK3M,EAAGv6C,IAAIknD,EAAID,GAChBE,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfE,EAAK9M,EAAG9b,IAAI0H,EAAIkhB,GAChBH,EAAK3M,EAAGv6C,IAAIknD,EAAIC,GAChBA,EAAK5M,EAAG/W,IAAIyjB,EAAIE,GAChBA,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfE,EAAK9M,EAAGv6C,IAAIqnD,EAAIF,GAChBF,EAAK1M,EAAG9b,IAAIyoB,EAAIG,GAChBN,EAAKxM,EAAGv6C,IAAI+mD,EAAIE,GAChBA,EAAK1M,EAAG9b,IAAI6oB,EAAID,GAChBP,EAAKvM,EAAG9b,IAAI2oB,EAAIN,GAChBA,EAAKvM,EAAG/W,IAAIsjB,EAAIG,GAChBA,EAAK1M,EAAG9b,IAAI2oB,EAAIF,GAChBF,EAAKzM,EAAG9b,IAAI6oB,EAAIN,GAChBA,EAAKzM,EAAGv6C,IAAIgnD,EAAIC,GACT,IAAIjM,EAAM8L,EAAIC,EAAIC,EAC3B,CAEAvwC,QAAAA,CAASquC,GACP,OAAOrnD,KAAKuC,IAAI8kD,EAAM8B,SACxB,CAEQvB,GAAAA,GACN,OAAO5nD,KAAKugB,OAAOg9B,EAAMiH,KAC3B,CACQsF,IAAAA,CAAKv5C,GACX,OAAOk4C,EAAKsB,WAAW/pD,KAAMg5F,EAAkBzoF,GAAIi+M,IACjD,MAAMpmK,EAAQtL,EAAGuL,YAAYmmK,EAAK9lN,KAAK6N,GAAMA,EAAEoxC,MAC/C,OAAO6mK,EAAK9lN,KAAI,CAAC6N,EAAGvL,IAAMuL,EAAEunC,SAASsK,EAAMp9C,MAAKtC,IAAI60C,EAAM0K,WAAW,GAEzE,CAOA+B,cAAAA,CAAez5C,GACb,MAAM25C,EAAI3M,EAAMiH,KAChB,GAAIj0C,IAAMsxC,EAAK,OAAOqI,EAEtB,GADAqkK,EAASh+M,GACLA,IAAMguC,EAAK,OAAOv+C,KACtB,MAAM,KAAEymD,GAASrK,EACjB,IAAKqK,EAAM,OAAOgC,EAAKgmK,aAAazuN,KAAMuQ,GAG1C,IAAI,MAAE85C,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYp2C,GAC5Ck6C,EAAMP,EACNQ,EAAMR,EACN30C,EAAWvV,KACf,KAAOsqD,EAAKzI,GAAO2I,EAAK3I,GAClByI,EAAK/L,IAAKkM,EAAMA,EAAIloD,IAAIgT,IACxBi1C,EAAKjM,IAAKmM,EAAMA,EAAInoD,IAAIgT,IAC5BA,EAAIA,EAAE6zC,SACNkB,IAAO/L,EACPiM,IAAOjM,EAKT,OAHI8L,IAAOI,EAAMA,EAAItB,UACjBoB,IAAOG,EAAMA,EAAIvB,UACrBuB,EAAM,IAAInN,EAAMT,EAAG9b,IAAI0pB,EAAIjD,GAAIhB,EAAKC,MAAOgE,EAAIhD,GAAIgD,EAAI/C,IAChD8C,EAAIloD,IAAImoD,EACjB,CAWAtyC,QAAAA,CAASuyC,GACP4jK,EAAS5jK,GACT,IACI/M,EAAcgN,EADdr6C,EAAIo6C,EAER,MAAM,KAAElE,GAASrK,EACjB,GAAIqK,EAAM,CACR,MAAM,MAAE4D,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYp2C,GAClD,IAAMgG,EAAGk0C,EAAKI,EAAGC,GAAQ9qD,KAAK8pD,KAAKQ,IAC7B/zC,EAAGm0C,EAAKG,EAAGE,GAAQ/qD,KAAK8pD,KAAKU,GACnCC,EAAMhC,EAAKuC,gBAAgBX,EAAOI,GAClCC,EAAMjC,EAAKuC,gBAAgBT,EAAOG,GAClCA,EAAM,IAAInN,EAAMT,EAAG9b,IAAI0pB,EAAIjD,GAAIhB,EAAKC,MAAOgE,EAAIhD,GAAIgD,EAAI/C,IACvD/J,EAAQ6M,EAAIloD,IAAImoD,GAChBE,EAAOE,EAAIvoD,IAAIwoD,EACjB,KAAO,CACL,MAAM,EAAEx0C,EAAC,EAAEs0C,GAAM7qD,KAAK8pD,KAAKv5C,GAC3BqtC,EAAQrnC,EACRq0C,EAAOC,CACT,CAEA,OAAOtN,EAAM2K,WAAW,CAACtK,EAAOgN,IAAO,EACzC,CAQAtK,oBAAAA,CAAqBD,EAAU5vC,EAAWS,GACxC,MAAM+5C,EAAI1N,EAAMvtC,KACVgxB,EAAMA,CACVtuB,EACAjC,IACIA,IAAMoxC,GAAOpxC,IAAM8tC,GAAQ7rC,EAAE6N,OAAO0qC,GAA2Bv4C,EAAE0F,SAAS3H,GAAjCiC,EAAEs3C,eAAev5C,GAC1DgH,EAAMupB,EAAIhhC,KAAMyQ,GAAGlO,IAAIy+B,EAAIqf,EAAGnvC,IACpC,OAAOuG,EAAImwC,WAAQ9lD,EAAY2V,CACjC,CAKAqmC,QAAAA,CAAS0J,GACP,MAAQC,GAAIz2C,EAAG02C,GAAIz2C,EAAG02C,GAAIh3C,GAAM3Q,KAC1B4nD,EAAM5nD,KAAK4nD,MAGP,MAANJ,IAAYA,EAAKI,EAAM9K,EAAGlqC,IAAMkqC,EAAG5H,IAAIvkC,IAC3C,MAAMk3C,EAAK/K,EAAG9b,IAAIhwB,EAAGw2C,GACfM,EAAKhL,EAAG9b,IAAI/vB,EAAGu2C,GACfO,EAAKjL,EAAG9b,IAAIrwB,EAAG62C,GACrB,GAAII,EAAK,MAAO,CAAE52C,EAAG8rC,EAAG0H,KAAMvzC,EAAG6rC,EAAG0H,MACpC,IAAK1H,EAAGyH,IAAIwD,EAAIjL,EAAGlqC,KAAM,MAAM,IAAI/O,MAAM,oBACzC,MAAO,CAAEmN,EAAG62C,EAAI52C,EAAG62C,EACrB,CACAxB,aAAAA,GACE,MAAQ90B,EAAG05B,EAAQ,cAAE5E,GAAkBlK,EACvC,GAAI8O,IAAa3M,EAAK,OAAO,EAC7B,GAAI+H,EAAe,OAAOA,EAAc/I,EAAOv9C,MAC/C,MAAM,IAAI6D,MAAM,+DAClB,CACA0iD,aAAAA,GACE,MAAQ/0B,EAAG05B,EAAQ,cAAE3E,GAAkBnK,EACvC,OAAI8O,IAAa3M,EAAYv+C,KACzBumD,EAAsBA,EAAchJ,EAAOv9C,MACxCA,KAAKgqD,eAAe5N,EAAM5qB,EACnC,CAEAsxB,UAAAA,GAA8B,IAAnBjF,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAErB,OADA5B,KAAKm/C,iBACEzuB,EAAQ6sB,EAAOv9C,KAAM69C,EAC9B,CAEAsN,KAAAA,GAAyB,IAAnBtN,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAChB,OAAO46C,EAAGoC,WAAW5+C,KAAK8iD,WAAWjF,GACvC,EAlVgBN,EAAAvtC,KAAO,IAAIutC,EAAMnB,EAAM8K,GAAI9K,EAAM6K,GAAInK,EAAGlqC,KACxC2qC,EAAAiH,KAAO,IAAIjH,EAAMT,EAAG0H,KAAM1H,EAAGlqC,IAAKkqC,EAAG0H,MAmVvD,MAAM4G,EAAQhP,EAAMqF,WACdgH,GAAO,EAAAnM,EAAAwN,MAAKvM,EAAOnB,EAAMqK,KAAOr9C,KAAKwG,KAAKw7C,EAAQ,GAAKA,GAE7D,MAAO,CACLhP,QACAkB,gBAAiBC,EACjBC,yBACAC,sBACAC,qBAEJ,CA8eA,SAAgBkG,EAAkB9G,EAAmBgH,GAEnD,MAAM1qC,EAAI0jC,EAAG0B,MACb,IAAIhtC,EAAIqwC,EACR,IAAK,IAAI3b,EAAI9sB,EAAImlC,EAAKrY,EAAI+f,IAAQpE,EAAK3b,GAAK+f,EAAKz0C,GAAK+sC,EACtD,MAAM8M,EAAK75C,EAGL85C,EAAerF,GAAQoF,EAAK9M,EAAMA,EAClCgN,EAAaD,EAAerF,EAC5BuF,GAAMpyC,EAAImlC,GAAOgN,EACjBE,GAAMD,EAAKjN,GAAO0H,EAClByF,EAAKH,EAAahN,EAClBoN,EAAKL,EACLM,EAAK9O,EAAG5kC,IAAI4rC,EAAG0H,GACfK,EAAK/O,EAAG5kC,IAAI4rC,GAAI0H,EAAKjN,GAAO0H,GAClC,IAAIlC,EAAYA,CAACxO,EAAMthC,KACrB,IAAI+vC,EAAM4H,EACN3H,EAAMnH,EAAG5kC,IAAIjE,EAAGy3C,GAChBxH,EAAMpH,EAAG7O,IAAIgW,GACjBC,EAAMpH,EAAG9b,IAAIkjB,EAAKjwC,GAClB,IAAImwC,EAAMtH,EAAG9b,IAAIuU,EAAG2O,GACpBE,EAAMtH,EAAG5kC,IAAIksC,EAAKqH,GAClBrH,EAAMtH,EAAG9b,IAAIojB,EAAKH,GAClBA,EAAMnH,EAAG9b,IAAIojB,EAAKnwC,GAClBiwC,EAAMpH,EAAG9b,IAAIojB,EAAK7O,GAClB,IAAI4O,EAAMrH,EAAG9b,IAAIkjB,EAAKD,GACtBG,EAAMtH,EAAG5kC,IAAIisC,EAAKwH,GAClB,IAAIG,EAAOhP,EAAGyH,IAAIH,EAAKtH,EAAGlqC,KAC1BqxC,EAAMnH,EAAG9b,IAAIkjB,EAAK2H,GAClBzH,EAAMtH,EAAG9b,IAAImjB,EAAKH,GAClBE,EAAMpH,EAAGwH,KAAKL,EAAKC,EAAK4H,GACxB3H,EAAMrH,EAAGwH,KAAKF,EAAKD,EAAK2H,GAExB,IAAK,IAAI9gD,EAAIqgD,EAAIrgD,EAAIuzC,EAAKvzC,IAAK,CAC7B,IAAIo5C,EAAMp5C,EAAIi7C,EACd7B,EAAM6B,GAAQ7B,EAAM7F,EACpB,IAAIwN,EAAOjP,EAAG5kC,IAAIisC,EAAKC,GACvB,MAAMK,EAAK3H,EAAGyH,IAAIwH,EAAMjP,EAAGlqC,KAC3BqxC,EAAMnH,EAAG9b,IAAIkjB,EAAKF,GAClBA,EAAMlH,EAAG9b,IAAIgjB,EAAKA,GAClB+H,EAAOjP,EAAG9b,IAAImjB,EAAKH,GACnBE,EAAMpH,EAAGwH,KAAKL,EAAKC,EAAKO,GACxBN,EAAMrH,EAAGwH,KAAKyH,EAAM5H,EAAKM,EAC3B,CACA,MAAO,CAAEngC,QAASwnC,EAAM5oD,MAAOghD,EAAK,EAEtC,GAAIpH,EAAG0B,MAAQ2H,IAAQD,EAAK,CAE1B,MAAMmF,GAAMvO,EAAG0B,MAAQ0H,GAAOC,EACxBqF,EAAK1O,EAAGv/B,KAAKu/B,EAAGnY,IAAImf,IAC1BC,EAAYA,CAACxO,EAAMthC,KACjB,IAAI+vC,EAAMlH,EAAG7O,IAAIh6B,GACjB,MAAMgwC,EAAMnH,EAAG9b,IAAIuU,EAAGthC,GACtB+vC,EAAMlH,EAAG9b,IAAIgjB,EAAKC,GAClB,IAAI+H,EAAKlP,EAAG5kC,IAAI8rC,EAAKqH,GACrBW,EAAKlP,EAAG9b,IAAIgrB,EAAI/H,GAChB,MAAMxF,EAAK3B,EAAG9b,IAAIgrB,EAAIR,GAChBtH,EAAMpH,EAAG9b,IAAI8b,EAAG7O,IAAI+d,GAAK/3C,GACzB63C,EAAOhP,EAAGyH,IAAIL,EAAK3O,GAEzB,MAAO,CAAEjxB,QAASwnC,EAAM5oD,MADhB45C,EAAGwH,KAAK7F,EAAIuN,EAAIF,GACU,CAEtC,CAGA,OAAO/H,CACT,CA99BAjkD,EAAAA,kBAAAq8C,EAufAr8C,EAAAA,YAAA,SAA4B0J,GAC1B,MAAM4yC,EAnCR,SAAsBC,GACpB,MAAMpiB,GAAO,EAAAqiB,EAAAC,eAAcF,GAc3B,OAbAG,EAAGC,eACDxiB,EACA,CACEr1B,KAAM,OACNmF,KAAM,WACNO,YAAa,YAEf,CACEoyC,SAAU,WACVC,cAAe,WACfC,KAAM,YAGH55C,OAAO8J,OAAO,CAAE8vC,MAAM,KAAS3iB,GACxC,CAmBgB4iB,CAAarzC,IACrB,GAAEszC,EAAIvsC,EAAGwsC,GAAgBX,EACzBY,EAAgBF,EAAGG,MAAQ,EAC3BC,EAAkB,EAAIJ,EAAGG,MAAQ,EAKvC,SAASE,EAAK1sC,GACZ,OAAO4K,EAAIA,IAAI5K,EAAGssC,EACpB,CACA,SAASM,EAAK5sC,GACZ,OAAO4K,EAAIzS,OAAO6H,EAAGssC,EACvB,CAEA,MACEO,gBAAiBC,EAAK,uBACtBC,EAAsB,oBACtBC,EAAmB,mBACnBC,GACEvB,EAAkB,IACjBC,EACH1rB,OAAAA,CAAQitB,EAAIC,EAAOC,GACjB,MAAMptC,EAAImtC,EAAME,WACV9sC,EAAI8rC,EAAGpsB,QAAQjgB,EAAEO,GACjB+sC,EAAMvB,EAAGnyC,YACf,OAAIwzC,EACKE,EAAIztB,WAAW9rB,KAAK,CAACo5C,EAAMK,WAAa,EAAO,IAAQjtC,GAEvD+sC,EAAIztB,WAAW9rB,KAAK,CAAC,IAAQwM,EAAG8rC,EAAGpsB,QAAQjgB,EAAEQ,GAExD,EACAitC,SAAAA,CAAUC,GACR,MAAMhsC,EAAMgsC,EAAMt8C,OACZ00B,EAAO4nB,EAAM,GACbC,EAAOD,EAAMvtB,SAAS,GAE5B,GAAIze,IAAQ6qC,GAA2B,IAATzmB,GAA0B,IAATA,EAUxC,IAAIpkB,IAAQ+qC,GAA4B,IAAT3mB,EAAe,CAGnD,MAAO,CAAEvlB,EAFC8rC,EAAGoB,UAAUE,EAAKxtB,SAAS,EAAGksB,EAAGG,QAE/BhsC,EADF6rC,EAAGoB,UAAUE,EAAKxtB,SAASksB,EAAGG,MAAO,EAAIH,EAAGG,QAExD,CACE,MAAM,IAAIp5C,MACR,mBAAmBsO,2BAA6B6qC,yBAAqCE,uBAEzF,CAlB+D,CAC7D,MAAMlsC,EAAIwrC,EAAG6B,gBAAgBD,GAC7B,KAjCGyD,GADoB1gB,EAkCEnwB,IAjCTmwB,EAAM2b,EAAG0B,OAiCI,MAAM,IAAI36C,MAAM,yBAC7C,MAAM46C,EAAKhB,EAAoBzsC,GAC/B,IAAIC,EAAI6rC,EAAGv/B,KAAKkhC,GAKhB,OAFiC,KAAP,EAAPloB,OAFHtlB,EAAIstC,KAASA,KAGHttC,EAAI6rC,EAAGnY,IAAI1zB,IAC9B,CAAED,IAAGC,IACd,CA1CJ,IAA6BkwB,CAmD3B,IAEIwd,EAAiBxd,GACrBqb,EAAGoC,WAAWpC,EAAGqC,gBAAgB1d,EAAKib,EAAM0C,cAE9C,SAASC,EAAsB7e,GAE7B,OAAOA,EADM6c,GAAewB,CAE9B,CAMA,MAAMS,EAASA,CAAC9tC,EAAe1M,EAAcutB,IAAeyqB,EAAG6B,gBAAgBntC,EAAExD,MAAMlJ,EAAMutB,IAK7F,MAAMktB,EACJhxC,WAAAA,CACW4C,EACAH,EACAwuC,GAFA,KAAAruC,EAAAA,EACA,KAAAH,EAAAA,EACA,KAAAwuC,SAAAA,EAETl/C,KAAKm/C,gBACP,CAGA,kBAAOC,CAAYt4C,GACjB,MAAM0K,EAAI4qC,EAAM0C,YAEhB,OADAh4C,GAAM,EAAA2oB,EAAA4vB,aAAY,mBAAoBv4C,EAAS,EAAJ0K,GACpC,IAAIytC,EAAUD,EAAOl4C,EAAK,EAAG0K,GAAIwtC,EAAOl4C,EAAK0K,EAAG,EAAIA,GAC7D,CAIA,cAAO8tC,CAAQx4C,GACb,MAAM,EAAE+J,EAAC,EAAEH,GAAM5Q,EAAAy/C,IAAIC,OAAM,EAAA/vB,EAAA4vB,aAAY,MAAOv4C,IAC9C,OAAO,IAAIm4C,EAAUpuC,EAAGH,EAC1B,CAEAyuC,cAAAA,GAEE,IAAKzB,EAAmB19C,KAAK6Q,GAAI,MAAM,IAAIhN,MAAM,6BACjD,IAAK65C,EAAmB19C,KAAK0Q,GAAI,MAAM,IAAI7M,MAAM,4BACnD,CAEA67C,cAAAA,CAAeR,GACb,OAAO,IAAID,EAAUj/C,KAAK6Q,EAAG7Q,KAAK0Q,EAAGwuC,EACvC,CAEAS,gBAAAA,CAAiBC,GACf,MAAM,EAAE/uC,EAAC,EAAEH,EAAGwuC,SAAUW,GAAQ7/C,KAC1BwxB,EAAImrB,GAAc,EAAAltB,EAAA4vB,aAAY,UAAWO,IAC/C,GAAW,MAAPC,IAAgB,CAAC,EAAG,EAAG,EAAG,GAAGC,SAASD,GAAM,MAAM,IAAIh8C,MAAM,uBAChE,MAAMk8C,EAAe,IAARF,GAAqB,IAARA,EAAYhvC,EAAIurC,EAAM7rC,EAAIM,EACpD,GAAIkvC,GAAQjD,EAAG0B,MAAO,MAAM,IAAI36C,MAAM,8BACtC,MAAM0P,EAAuB,KAAP,EAANssC,GAAiB,KAAO,KAClCG,EAAIzC,EAAM0C,QAAQ1sC,EAASorC,EAAcoB,IACzCG,EAAK7C,EAAK0C,GACVI,EAAKhD,GAAM3rB,EAAI0uB,GACfE,EAAKjD,EAAKzsC,EAAIwvC,GACdG,EAAI9C,EAAMvtC,KAAKswC,qBAAqBN,EAAGG,EAAIC,GACjD,IAAKC,EAAG,MAAM,IAAIx8C,MAAM,qBAExB,OADAw8C,EAAElB,iBACKkB,CACT,CAGAE,QAAAA,GACE,OAAOxB,EAAsB/+C,KAAK0Q,EACpC,CAEA8vC,UAAAA,GACE,OAAOxgD,KAAKugD,WAAa,IAAItB,EAAUj/C,KAAK6Q,EAAGssC,GAAMn9C,KAAK0Q,GAAI1Q,KAAKk/C,UAAYl/C,IACjF,CAGAygD,aAAAA,GACE,OAAOjE,EAAGkE,WAAW1gD,KAAK2gD,WAC5B,CACAA,QAAAA,GACE,OAAO7gD,EAAAy/C,IAAIqB,WAAW,CAAE/vC,EAAG7Q,KAAK6Q,EAAGH,EAAG1Q,KAAK0Q,GAC7C,CAGAmwC,iBAAAA,GACE,OAAOrE,EAAGkE,WAAW1gD,KAAK8gD,eAC5B,CACAA,YAAAA,GACE,OAAOnC,EAAc3+C,KAAK6Q,GAAK8tC,EAAc3+C,KAAK0Q,EACpD,EAIF,MAAM2rB,EAAQ,CACZ0kB,iBAAAA,CAAkBC,GAChB,IAEE,OADAxD,EAAuBwD,IAChB,CACT,CAAE,MAAOn+B,GACP,OAAO,CACT,CACF,EACA26B,uBAAwBA,EAMxByD,iBAAkBA,KAChB,MAAMp/C,EAASwZ,EAAI6lC,iBAAiB9E,EAAM7rC,GAC1C,OAAO8K,EAAI8lC,eAAe/E,EAAM9xC,YAAYzI,GAASu6C,EAAM7rC,EAAE,EAW/D6wC,UAAAA,GAA6C,IAAlCC,EAAUz/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGg8C,EAAKh8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG27C,EAAMvtC,KAGvC,OAFA4tC,EAAM0D,eAAeD,GACrBzD,EAAMxlC,SAAS1S,OAAO,IACfk4C,CACT,GAgBF,SAAS2D,EAAUhuB,GACjB,MAAMvb,EAAMwkC,EAAGgF,QAAQjuB,GACjBvhB,EAAsB,kBAATuhB,EACbphB,GAAO6F,GAAOhG,IAASuhB,EAAa1xB,OAC1C,OAAImW,EAAY7F,IAAQ6qC,GAAiB7qC,IAAQ+qC,EAC7ClrC,EAAYG,IAAQ,EAAI6qC,GAAiB7qC,IAAQ,EAAI+qC,EACrD3pB,aAAgBgqB,CAEtB,CAuBA,MAAMb,EACJN,EAAMM,UACN,SAAUyB,GAGR,MAAMhd,EAAMqb,EAAG6B,gBAAgBF,GACzB9M,EAAuB,EAAf8M,EAAMt8C,OAAau6C,EAAMqF,WACvC,OAAOpQ,EAAQ,EAAIlQ,GAAOz7B,OAAO2rC,GAASlQ,CAC5C,EACIwb,EACJP,EAAMO,eACN,SAAUwB,GACR,OAAOhB,EAAKT,EAASyB,GACvB,EAEIuD,EAAalF,EAAGmF,QAAQvF,EAAMqF,YAIpC,SAASG,EAAWzgB,GAClB,GAAmB,kBAARA,EAAkB,MAAM,IAAIt9B,MAAM,mBAC7C,KAAMg+C,GAAO1gB,GAAOA,EAAMugB,GACxB,MAAM,IAAI79C,MAAM,uBAAuBu4C,EAAMqF,cAE/C,OAAOjF,EAAGqC,gBAAgB1d,EAAKib,EAAM0C,YACvC,CAOA,SAASgD,EAAQlC,EAAcoB,GAA0C,IAArB/mB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGmgD,EACzD,GAAI,CAAC,YAAa,aAAazuB,MAAMhiB,GAAMA,KAAK2oB,IAC9C,MAAM,IAAIp2B,MAAM,uCAClB,MAAM,KAAEe,EAAI,YAAE0F,GAAgB8xC,EAC9B,IAAI,KAAEQ,EAAI,QAAEoF,EAASC,aAAcC,GAAQjoB,EAC/B,MAAR2iB,IAAcA,GAAO,GACzBgD,GAAU,EAAAnwB,EAAA4vB,aAAY,UAAWO,GAC7BoC,IAASpC,GAAU,EAAAnwB,EAAA4vB,aAAY,oBAAqBz6C,EAAKg7C,KAK7D,MAAMwC,EAAQzF,EAAciD,GACtBrqC,EAAIioC,EAAuBwD,GAC3BqB,EAAW,CAACT,EAAWrsC,GAAIqsC,EAAWQ,IAE5C,GAAW,MAAPF,EAAa,CAEf,MAAM3wC,GAAY,IAAR2wC,EAAe53C,EAAYwyC,EAAGG,OAASiF,EACjDG,EAAS/6C,MAAK,EAAAmoB,EAAA4vB,aAAY,eAAgB9tC,GAC5C,CACA,MAAM+wC,EAAO9F,EAAGnyC,eAAeg4C,GACzB/pC,EAAI8pC,EAuBV,MAAO,CAAEE,OAAMC,MArBf,SAAeC,GAEb,MAAMlxC,EAAIorC,EAAS8F,GACnB,IAAK9E,EAAmBpsC,GAAI,OAC5B,MAAMmxC,EAAKpF,EAAK/rC,GACV8H,EAAImkC,EAAMvtC,KAAKoI,SAAS9G,GAAGwsC,WAC3BjtC,EAAIssC,EAAK/jC,EAAEpI,GACjB,GAAIH,IAAMgxC,EAAK,OAIf,MAAMnxC,EAAIysC,EAAKsF,EAAKtF,EAAK7kC,EAAIzH,EAAI0E,IACjC,GAAI7E,IAAMmxC,EAAK,OACf,IAAI3C,GAAY9lC,EAAEpI,IAAMH,EAAI,EAAI,GAAKse,OAAO/V,EAAEnI,EAAIstC,GAC9CmE,EAAQhyC,EAKZ,OAJIksC,GAAQmC,EAAsBruC,KAChCgyC,EA7ON,SAAoBhyC,GAClB,OAAOquC,EAAsBruC,GAAKysC,GAAMzsC,GAAKA,CAC/C,CA2Oc8vC,CAAW9vC,GACnBwuC,GAAY,GAEP,IAAID,EAAUpuC,EAAG6xC,EAAOxD,EACjC,EAEF,CACA,MAAM6C,EAA2B,CAAEnF,KAAMR,EAAMQ,KAAMoF,SAAS,GACxDW,EAA0B,CAAE/F,KAAMR,EAAMQ,KAAMoF,SAAS,GAuF7D,OAhEAzE,EAAMvtC,KAAKsxC,eAAe,GAgEnB,CACLlF,QACAwG,aA/MF,SAAsB5B,GAAwC,IAAnBnD,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACrD,OAAO27C,EAAMsF,eAAe7B,GAAY8B,WAAWjF,EACrD,EA8MEkF,gBArLF,SAAyBC,EAAmBC,GAAiC,IAAnBpF,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACpE,GAAI2/C,EAAUyB,GAAW,MAAM,IAAIn/C,MAAM,iCACzC,IAAK09C,EAAU0B,GAAU,MAAM,IAAIp/C,MAAM,iCAEzC,OADU05C,EAAM0C,QAAQgD,GACf7qC,SAASolC,EAAuBwF,IAAWF,WAAWjF,EACjE,EAiLE35C,KA5EF,SAAc07C,EAAcsD,GAAuC,IAArBjpB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGmgD,EACnD,MAAM,KAAEO,EAAI,MAAEC,GAAUT,EAAQlC,EAASsD,EAASjpB,GAC5CwW,EAAI2L,EAEV,OADaI,EAAG2G,eAAmC1S,EAAE7rC,KAAKmrB,UAAW0gB,EAAEqO,YAAarO,EAAE1mC,KAC/Eq5C,CAAKd,EAAMC,EACpB,EAwEE19C,OArDF,SACEZ,EACA27C,EACAj7C,GACqB,IAArBs1B,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG+gD,EAEP,MAAMU,EAAKp/C,EAGX,GAFA27C,GAAU,EAAAnwB,EAAA4vB,aAAY,UAAWO,GACjCj7C,GAAY,EAAA8qB,EAAA4vB,aAAY,YAAa16C,GACjC,WAAYs1B,EAAM,MAAM,IAAIp2B,MAAM,sCACtC,MAAM,KAAE+4C,EAAI,QAAEoF,GAAY/nB,EAE1B,IAAIupB,EACA9wC,EACJ,IACE,GAAkB,kBAAP2wC,GAAmB7G,EAAGgF,QAAQ6B,GAGvC,IACEG,EAAOvE,EAAUK,QAAQ+D,EAC3B,CAAE,MAAOI,GACP,KAAMA,aAAoB3jD,EAAAy/C,IAAImE,KAAM,MAAMD,EAC1CD,EAAOvE,EAAUG,YAAYiE,EAC/B,KACK,IAAkB,kBAAPA,GAAmC,kBAATA,EAAGxyC,GAAkC,kBAATwyC,EAAG3yC,EAIzE,MAAM,IAAI7M,MAAM,SAJyE,CACzF,MAAM,EAAEgN,EAAC,EAAEH,GAAM2yC,EACjBG,EAAO,IAAIvE,EAAUpuC,EAAGH,EAC1B,CAEA,CACAgC,EAAI6qC,EAAM0C,QAAQt7C,EACpB,CAAE,MAAOke,GACP,GAAiC,UAA5BA,EAAgBoL,QACnB,MAAM,IAAIpqB,MAAM,kEAClB,OAAO,CACT,CACA,GAAI+4C,GAAQ4G,EAAKjD,WAAY,OAAO,EAChCyB,IAASpC,EAAUxD,EAAMx3C,KAAKg7C,IAClC,MAAM,EAAE/uC,EAAC,EAAEH,GAAM8yC,EACXhyB,EAAImrB,EAAciD,GAClB+D,EAAKtG,EAAK3sC,GACVyvC,EAAKhD,EAAK3rB,EAAImyB,GACdvD,EAAKjD,EAAKtsC,EAAI8yC,GACd3D,EAAIzC,EAAMvtC,KAAKswC,qBAAqB5tC,EAAGytC,EAAIC,IAAKtC,WACtD,QAAKkC,GACK7C,EAAK6C,EAAEhvC,KACJH,CACf,EAOEysC,gBAAiBC,EACjB0B,YACA5iB,QAEJ,EAWAv8B,EAAAA,eAAA8jD,EAwEA9jD,EAAAA,oBAAA,SACEg9C,EACA7iB,GAOA,GADA5e,EAAIwoC,cAAc/G,IACbA,EAAGx4B,QAAQ2V,EAAKsW,KAAOuM,EAAGx4B,QAAQ2V,EAAKuW,KAAOsM,EAAGx4B,QAAQ2V,EAAK6pB,GACjE,MAAM,IAAIjgD,MAAM,qCAClB,MAAMkgD,EAAYH,EAAe9G,EAAI7iB,EAAK6pB,GAC1C,IAAKhH,EAAGhrC,MAAO,MAAM,IAAIjO,MAAM,gCAG/B,OAAQ0xC,IAEN,IAAIyO,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKrzC,EAAGC,EACrC+yC,EAAMlH,EAAG7O,IAAIsH,GACbyO,EAAMlH,EAAG9b,IAAIgjB,EAAK/pB,EAAK6pB,GACvBG,EAAMnH,EAAG7O,IAAI+V,GACbC,EAAMnH,EAAGv6C,IAAI0hD,EAAKD,GAClBE,EAAMpH,EAAGv6C,IAAI0hD,EAAKnH,EAAGlqC,KACrBsxC,EAAMpH,EAAG9b,IAAIkjB,EAAKjqB,EAAKuW,GACvB2T,EAAMrH,EAAGwH,KAAKrqB,EAAK6pB,EAAGhH,EAAGnY,IAAIsf,IAAOnH,EAAGyH,IAAIN,EAAKnH,EAAG0H,OACnDL,EAAMrH,EAAG9b,IAAImjB,EAAKlqB,EAAKsW,GACvB0T,EAAMnH,EAAG7O,IAAIiW,GACbG,EAAMvH,EAAG7O,IAAIkW,GACbC,EAAMtH,EAAG9b,IAAIqjB,EAAKpqB,EAAKsW,GACvB0T,EAAMnH,EAAGv6C,IAAI0hD,EAAKG,GAClBH,EAAMnH,EAAG9b,IAAIijB,EAAKC,GAClBG,EAAMvH,EAAG9b,IAAIqjB,EAAKF,GAClBC,EAAMtH,EAAG9b,IAAIqjB,EAAKpqB,EAAKuW,GACvByT,EAAMnH,EAAGv6C,IAAI0hD,EAAKG,GAClBpzC,EAAI8rC,EAAG9b,IAAIgjB,EAAKE,GAChB,MAAM,QAAE5/B,EAAO,MAAEphB,GAAU6gD,EAAUE,EAAKI,GAC1CpzC,EAAI6rC,EAAG9b,IAAIgjB,EAAKzO,GAChBtkC,EAAI6rC,EAAG9b,IAAI/vB,EAAG/N,GACd8N,EAAI8rC,EAAGwH,KAAKtzC,EAAGkzC,EAAK5/B,GACpBrT,EAAI6rC,EAAGwH,KAAKrzC,EAAG/N,EAAOohB,GACtB,MAAMmgC,EAAK3H,EAAGhrC,MAAOyjC,KAAOuH,EAAGhrC,MAAOb,GAGtC,OAFAA,EAAI6rC,EAAGwH,KAAKxH,EAAGnY,IAAI1zB,GAAIA,EAAGwzC,GAC1BzzC,EAAI8rC,EAAGvqC,IAAIvB,EAAGmzC,GACP,CAAEnzC,IAAGC,IAAG,CAEnB,8BC7sCAjO,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0iL,wBAAqB,EAmF7B1iL,EAAQ0iL,mBAlFR,MACIv0K,WAAAA,CAAYygN,EAAWptM,GACnBthB,KAAK0uN,UAAYA,EACjB1uN,KAAKshB,gBAAkBA,CAC3B,CAYA,uBAAM8C,CAAkBR,EAAYyyB,EAAaC,EAAQq4K,EAAWxmN,EAAOC,EAAawmN,GACpF,OAAO5uN,KAAK0uN,UAAUtqM,kBAAkBpkB,KAAKshB,gBAAiBsC,EAAYyyB,EAAaC,EAAQq4K,EAAWxmN,EAAOC,EAAawmN,EAClI,CAYA,0BAAMvqM,CAAqBT,EAAYyyB,EAAaC,EAAQu4K,EAAc1mN,EAAOC,EAAawmN,GAC1F,OAAO5uN,KAAK0uN,UAAUrqM,qBAAqBrkB,KAAKshB,gBAAiBsC,EAAYyyB,EAAaC,EAAQu4K,EAAc1mN,EAAOC,EAAawmN,EACxI,CACAlsM,aAAAA,CAAcva,EAAOC,GACjB,OAAOpI,KAAK0uN,UAAUhsM,cAAc1iB,KAAKshB,gBAAiBnZ,EAAOC,EACrE,CACA0mN,gBAAAA,CAAiB1mN,GACb,OAAOpI,KAAK0uN,UAAUI,iBAAiB1mN,EAC3C,CAUA,0BAAM2mN,CAAqBC,EAAYC,EAAS7mN,EAAawmN,GACzD,OAAO5uN,KAAK0uN,UAAUK,qBAAqB/uN,KAAKshB,gBAAiB0tM,EAAYC,EAAS7mN,EAAawmN,EACvG,CAUA,wBAAMM,CAAmBF,EAAYG,EAAW/mN,EAAawmN,GACzD,OAAO5uN,KAAK0uN,UAAUQ,mBAAmBlvN,KAAKshB,gBAAiB0tM,EAAYG,EAAW/mN,EAAawmN,EACvG,CAOAQ,YAAAA,CAAa/oH,GACT,OAAOrmG,KAAK0uN,UAAUU,aAAapvN,KAAKshB,gBAAiB+kF,EAC7D,CACA,oBAAMruD,CAAeq3K,EAASjnN,EAAawmN,GACvC,OAAO5uN,KAAK0uN,UAAU12K,eAAeq3K,EAASjnN,EAAawmN,EAC/D,CACA,sBAAMU,CAAiBC,EAAapnN,EAAOC,EAAawmN,GACpD,OAAO5uN,KAAK0uN,UAAUY,iBAAiBtvN,KAAKshB,gBAAiBiuM,EAAapnN,EAAOC,EAAawmN,EAClG,CACA9xD,WAAAA,CAAYt7J,EAAQ2G,EAAOC,EAAa2vC,GACpC,OAAO/3C,KAAK0uN,UAAU5xD,YAAYt7J,EAAQ2G,EAAOC,EAAa2vC,EAClE,wCC1EJ,IAAIq/B,GAAmB,EAEvB,IAAMvlE,OAAO4oB,aAAa48C,MAAM,KAAM,IAAI/mD,WAAW,GAAK,CAAE,MAAOgnD,GAAMF,GAAmB,CAAO,CAMnG,MAAMG,EAAW,IAAIjnD,WAAW,KAChC,IAAK,IAAIlX,EAAI,EAAGA,EAAI,IAAKA,IACvBm+D,EAASn+D,GAAMA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAI,EAE5Fm+D,EAAS,KAAOA,EAAS,KAAO,EAIhCx3E,EAAOD,QAAQuqH,WAAcr4G,IAC3B,GAA2B,oBAAhBylE,aAA8BA,YAAY7sE,UAAUuV,OAC7D,OAAO,IAAIs3D,aAAct3D,OAAOnO,GAGlC,IAAIq1D,EAAKj2D,EAAGo6C,EAAIksB,EAAO1sE,EAAG2sE,EAAU3lE,EAAInQ,OAAQ+1E,EAAU,EAG1D,IAAKF,EAAQ,EAAGA,EAAQC,EAASD,IAC/BtmE,EAAIY,EAAIlB,WAAW4mE,GACE,SAAZ,MAAJtmE,IAA2BsmE,EAAQ,EAAIC,IAC1CnsB,EAAKx5C,EAAIlB,WAAW4mE,EAAQ,GACN,SAAZ,MAALlsB,KACHp6C,EAAI,OAAYA,EAAI,OAAW,KAAOo6C,EAAK,OAC3CksB,MAGJE,GAAWxmE,EAAI,IAAO,EAAIA,EAAI,KAAQ,EAAIA,EAAI,MAAU,EAAI,EAO9D,IAHAi2D,EAAM,IAAI/2C,WAAWsnD,GAGhB5sE,EAAI,EAAG0sE,EAAQ,EAAG1sE,EAAI4sE,EAASF,IAClCtmE,EAAIY,EAAIlB,WAAW4mE,GACE,SAAZ,MAAJtmE,IAA2BsmE,EAAQ,EAAIC,IAC1CnsB,EAAKx5C,EAAIlB,WAAW4mE,EAAQ,GACN,SAAZ,MAALlsB,KACHp6C,EAAI,OAAYA,EAAI,OAAW,KAAOo6C,EAAK,OAC3CksB,MAGAtmE,EAAI,IAENi2D,EAAIr8D,KAAOoG,EACFA,EAAI,MAEbi2D,EAAIr8D,KAAO,IAAQoG,IAAM,EACzBi2D,EAAIr8D,KAAO,IAAY,GAAJoG,GACVA,EAAI,OAEbi2D,EAAIr8D,KAAO,IAAQoG,IAAM,GACzBi2D,EAAIr8D,KAAO,IAAQoG,IAAM,EAAI,GAC7Bi2D,EAAIr8D,KAAO,IAAY,GAAJoG,IAGnBi2D,EAAIr8D,KAAO,IAAQoG,IAAM,GACzBi2D,EAAIr8D,KAAO,IAAQoG,IAAM,GAAK,GAC9Bi2D,EAAIr8D,KAAO,IAAQoG,IAAM,EAAI,GAC7Bi2D,EAAIr8D,KAAO,IAAY,GAAJoG,GAIvB,OAAOi2D,CAAG,EAuBZtnE,EAAOD,QAAQ+3E,WAAa,CAACxQ,EAAK11D,KAChC,MAAMQ,EAAMR,GAAO01D,EAAIxlE,OAEvB,GAA2B,oBAAhBi2E,aAA8BA,YAAYltE,UAAU6U,OAC7D,OAAO,IAAIq4D,aAAcr4D,OAAO4nD,EAAIz2C,SAAS,EAAGjf,IAGlD,IAAI3G,EAAGjE,EAKP,MAAMgxE,EAAW,IAAI5tE,MAAY,EAANgI,GAE3B,IAAKpL,EAAM,EAAGiE,EAAI,EAAGA,EAAImH,GAAM,CAC7B,IAAIf,EAAIi2D,EAAIr8D,KAEZ,GAAIoG,EAAI,IAAM,CAAE2mE,EAAShxE,KAASqK,EAAG,QAAU,CAE/C,IAAI4mE,EAAQT,EAASnmE,GAErB,GAAI4mE,EAAQ,EAAKD,EAAShxE,KAAS,MAAQiE,GAAKgtE,EAAQ,MAAxD,CAKA,IAFA5mE,GAAe,IAAV4mE,EAAc,GAAiB,IAAVA,EAAc,GAAO,EAExCA,EAAQ,GAAKhtE,EAAImH,GACtBf,EAAKA,GAAK,EAAiB,GAAXi2D,EAAIr8D,KACpBgtE,IAIEA,EAAQ,EAAKD,EAAShxE,KAAS,MAE/BqK,EAAI,MACN2mE,EAAShxE,KAASqK,GAElBA,GAAK,MACL2mE,EAAShxE,KAAS,MAAWqK,GAAK,GAAM,KACxC2mE,EAAShxE,KAAS,MAAc,KAAJqK,EAlBuC,CAoBvE,CAEA,MA9DoB6mE,EAAC5Q,EAAKl1D,KAI1B,GAAIA,EAAM,OACJk1D,EAAIz2C,UAAYwmD,EAClB,OAAOvlE,OAAO4oB,aAAa48C,MAAM,KAAMhQ,EAAIxlE,SAAWsQ,EAAMk1D,EAAMA,EAAIz2C,SAAS,EAAGze,IAItF,IAAIwc,EAAS,GACb,IAAK,IAAI3jB,EAAI,EAAGA,EAAImH,EAAKnH,IACvB2jB,GAAU9c,OAAO4oB,aAAa4sC,EAAIr8D,IAEpC,OAAO2jB,CAAM,EAgDNspD,CAAcF,EAAUhxE,EAAI,EAUrChH,EAAOD,QAAQo4E,WAAa,CAAC7Q,EAAK11D,MAEhCA,EAAMA,GAAO01D,EAAIxlE,QACPwlE,EAAIxlE,SAAU8P,EAAM01D,EAAIxlE,QAGlC,IAAIsuB,EAAMxe,EAAM,EAChB,KAAOwe,GAAO,GAA2B,OAAV,IAAXk3C,EAAIl3C,KAAyBA,IAIjD,OAAIA,EAAM,GAIE,IAARA,EAJkBxe,EAMdwe,EAAMonD,EAASlQ,EAAIl3C,IAAQxe,EAAOwe,EAAMxe,CAAG,4TCiPrD7R,EAAAA,gBAAA,SACE2sD,EACApnC,EACAmwI,GAEA,MAAMzuJ,EAAyB,CAAC,EAChC,IAAK,MAAMyoN,KAAMh6D,EAAK,CACpB,MAAMlkJ,EAAIk+M,EACV,GAAU,YAANl+M,EAAiB,CACnB,IAAK+T,EAAK/T,GAAI,SACd,MAAM,SAAEm+M,EAAQ,aAAEC,GAAiBC,EAAYtqM,EAAK/T,IACpD,IAAKm+M,EAAS3vK,SAAS2M,GAAU,CAC/B,GAAIijK,EAAc,SAClB,MAAM,IAAI7rN,MACR,+BAA+B4oD,MAAYn7C,mCAAmCm+M,IAElF,CACF,CACA1oN,EAAIuK,GAAKkkJ,EAAIlkJ,EACf,CACA,OAAOvK,CACT,EAsBAjH,EAAAA,YAAA,SACE8vN,EACAjhN,EACAd,EACAgiN,GAEA,MAAMj+L,EAAyB,IAAK/jB,KAAQc,GAE5C,IAAK,MAAM2C,KAAKs+M,EAAU,CACxB,MAAM5lN,EAAMsH,GACLmuB,EAAGqwL,EAAIC,GAAMH,EAAS5lN,GAEvBgmN,EAAeH,IAAkBA,EAAc/vK,SAASxuC,GAC9D,QAAexP,IAAX6M,EAAI2C,IAAoBA,KAAK3C,EAAK,CACpC,GAAIqhN,EAAc,MAAM,IAAInsN,MAAM,8BAA8ByN,YACzDsgB,EAAItgB,EACb,MAAO,GAAIw+M,EAAI,CACb,MAAMG,EAASpiN,GAAOA,EAAIyD,GAAKzD,EAAIyD,GAAK,GACxC,IAAI4+M,EAAQvhN,EAAI3E,GAChB,GAAIkmN,EAAO,CACT,IAAK/lN,MAAMi3B,QAAQ8uL,GAAQ,MAAM,IAAIrsN,MAAM,UAAUyN,mCAErD4+M,EAAQA,EAAMxnN,KAAKiG,IACjB,GAAmB,IAAfA,EAAI9M,OAAc,MAAM,IAAIgC,MAAM,UAAUyN,mCAChD,MAAO,CACa,kBAAX3C,EAAI,GAAkBmhN,EAAGrwM,OAAOxa,EAAA6B,IAAI2Y,OAAO9Q,EAAI,KAAOA,EAAI,GAC/C,kBAAXA,EAAI,GAAkBohN,EAAGtwM,OAAOxa,EAAA6B,IAAI2Y,OAAO9Q,EAAI,KAAOA,EAAI,GAClE,IAEH,MAAMjG,EAA2B,CAAC,EAC5BnG,EAAMA,CAAC4tN,EAAc7+M,EAAW2C,KACpC,QAAkBnS,IAAd4G,EAAIynN,GAEN,YADAznN,EAAIynN,GAAQ,CAAC7+M,EAAG2C,IAGlB,MAAMm8M,EAASnrN,EAAA6B,IAAIqZ,OAAO4vM,EAAG5vM,OAAOzX,EAAIynN,GAAM,KACxCE,EAASprN,EAAA6B,IAAIqZ,OAAO4vM,EAAG5vM,OAAOlM,IACpC,GAAIm8M,IAAWC,EACb,MAAM,IAAIxsN,MACR,UAAUmG,gBAA4BmmN,YAAeC,YAAiBC,IACvE,EAEL,IAAK,MAAO/+M,EAAG2C,KAAMg8M,EAAO,CAE1B1tN,EADa0C,EAAA6B,IAAIqZ,OAAO2vM,EAAG3vM,OAAO7O,IACxBA,EAAG2C,EACf,CACA,IAAK,MAAO3C,EAAG2C,KAAMi8M,EAAO,CAC1B,MAAMC,EAAOlrN,EAAA6B,IAAIqZ,OAAO2vM,EAAG3vM,OAAO7O,IAElC,QAAUxP,IAANmS,EAAiB,CACnB,GAAI+7M,EAAc,MAAM,IAAInsN,MAAM,8BAA8BmG,KAAiBsH,YAC1E5I,EAAIynN,EACb,MAAO5tN,EAAI4tN,EAAM7+M,EAAG2C,EACtB,CACC2d,EAAY5nB,GAAOhH,OAAO+jB,OAAOre,EACpC,CACF,MAAO,GAAsB,kBAAXkpB,EAAItgB,GACpBsgB,EAAItgB,GAAKy+M,EAAGtwM,OAAOxa,EAAA6B,IAAI2Y,OAAOmS,EAAItgB,UAC7B,GAAI0+M,GAAgB1+M,KAAK3C,GAAOd,QAAkB/L,IAAX+L,EAAIyD,MAC3C,EAAAme,EAAAgxC,YAAWsvJ,EAAG5vM,OAAOxR,EAAI2C,IAAKy+M,EAAG5vM,OAAOtS,EAAIyD,KAC/C,MAAM,IAAIzN,MAAM,8BAA8ByN,IAEpD,CAEA,IAAK,MAAMA,KAAKsgB,EAAUg+L,EAASt+M,WAAWsgB,EAAItgB,GAClD,OAAOsgB,CACT,EA1gBA,MAAA3sB,EAAAnE,EAAA,OACA4R,EAAA5R,EAAA,OACAi/G,EAAAj/G,EAAA,OASAy/G,EAAAz/G,EAAA,OACA2uB,EAAA3uB,EAAA,OAKMwvN,EAAuC59M,EAAE2hI,SAAS3hI,EAAEyrC,MAAM,OAAQuhB,IACtE,EAAAjwC,EAAA8gM,gBAAe7wJ,EAAKjwC,EAAAkwC,KAAKC,SAErB4wJ,EAAyC99M,EAAE2hI,SAAS3hI,EAAEyrC,MAAM,KAAMuhB,IACtE,EAAAjwC,EAAA8gM,gBAAe7wJ,EAAKjwC,EAAAkwC,KAAKE,WAErB4wJ,EAA4C/9M,EAAE2hI,SAAS3hI,EAAEyrC,MAAM,OAAQ4H,IAC3E,GAAmB,KAAfA,EAAIlkD,QAAgC,KAAfkkD,EAAIlkD,OAC3B,MAAM,IAAIgC,MAAM,mDAClB,OAAOkiD,CAAG,IAGN2qK,EAAWh+M,EAAEgN,OAAO,CACxBixM,YAAaj+M,EAAEk+M,MACfj/E,KAAMj/H,EAAEmqF,MAAM,KAAMnqF,EAAE+sD,SAElBoxJ,EAAkBn+M,EAAEgN,OAAO,CAC/BoxM,OAAQp+M,EAAEmqF,MAAMkjB,EAAAgxG,eAAgBr+M,EAAEyrC,MAAM,KACxCsgD,IAAKiyH,IAGDM,EAAat+M,EAAEyrC,MAAM,IACrB8yK,EAAkBv+M,EAAEgN,OAAO,CAAE0gD,OAAQowJ,EAAeU,SAAUx+M,EAAEyrC,MAAM,MAItEgzK,EAAuBz+M,EAAEgN,OAAO,CACpC+sC,QAAS/5C,EAAE0+M,GACXC,YAAa3+M,EAAEyrC,MAAM,IACrBmzK,WAAY5+M,EAAEmqF,MAAM,KAAMnqF,EAAEyrC,MAAM,OAEvBr+C,EAAAA,oBAAsB4S,EAAE2hI,SAAS88E,GAAuB/8L,IACnE,GAAIA,EAAGk9L,WAAWzvN,OAAS,IACzB,MAAM,IAAIgC,MAAM,0EAClB,OAAOuwB,CAAE,IAIX,MAAMm9L,EAAU7+M,EAAEmqF,MAChB,KACAnqF,EAAEgN,OAAO,CACPgrD,MAAOh4D,EAAE0+M,GACT3kK,QAAS/5C,EAAE0+M,GACX/pN,OAAQ04G,EAAAyxG,YAINC,EAAiC/+M,EAAEyrC,MAAM,MACzCuzK,EAAgCh/M,EAAEyrC,MAAM,IACxCwzK,EAAgCj/M,EAAEyrC,MAAM,IAOjCr+C,EAAAA,WAAa,CACxB8xN,WAAkB,CAAC,GAAM,EAAY7xG,EAAA8xG,SAAmB,CAAC,GAAI,CAAC,IAAO,GACrEC,KAAkB,CAAC,EAAMd,EAAYN,EAAgB,GAAK,CAAC,EAAG,IAAI,GAClEqB,UAAkB,CAAC,GAAM,EAAYr/M,EAAE+sD,MAAc,CAAC,GAAI,CAAC,IAAO,GAClEuyJ,iBAAkB,CAAC,GAAM,EAAYt/M,EAAE+sD,MAAc,GAAK,CAAC,IAAO,GAClEwyJ,WAAkB,CAAC,GAAM,EAAYlyG,EAAAgxG,eAAgB,CAAC,GAAI,CAAC,IAAO,GAClEmB,YAAkB,CAAC,GAAM,EAAYnyG,EAAAgxG,eAAgB,CAAC,GAAI,CAAC,IAAO,GAClEoB,aAAkB,CAAC,GAAM,EAAYz/M,EAAE0+M,GAAc,GAAK,CAAC,IAAO,GAClE3kK,QAAkB,CAAC,KAAM,EAAY/5C,EAAE+sD,MAAc,GAAK,CAAC,EAAG,IAAI,GAClE2yJ,YAAkB,CAAC,IAAMX,EAAYA,EAAgB,GAAK,CAAC,EAAG,IAAI,IAGvD3xN,EAAAA,UAAY,CACvB04D,eAAwB,CAAC,GAAM,EAAqBunD,EAAAI,MAAkB,GAAK,CAAC,EAAG,IAAI,GACnFloD,YAAwB,CAAC,GAAM,EAAqB8nD,EAAAsyG,UAAkB,GAAK,CAAC,EAAG,IAAI,GACnFC,WAAwB,CAAC,EAAMhC,EAAqBmB,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFp5J,YAAwB,CAAC,GAAM,EAAqB3lD,EAAE+sD,MAAgB,GAAK,CAAC,EAAG,IAAI,GACnFnH,aAAwB,CAAC,GAAM,EAAqBm5J,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFc,cAAwB,CAAC,GAAM,EAAqBd,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFe,gBAAwB,CAAC,EAAMlC,EAAqBI,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnF+B,eAAwB,CAAC,GAAM,EAAqBhB,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFiB,mBAAwB,CAAC,GAAM,EAAqB3yG,EAAAK,WAAkB,GAAK,CAAC,EAAG,IAAI,GACnFuyG,cAAwB,CAAC,GAAM,EAAqBlB,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnF/wJ,UAAwB,CAAC,GAAMgxJ,EAAqBD,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFjxJ,OAAwB,CAAC,GAAMmxJ,EAAqBF,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFmB,QAAwB,CAAC,GAAMlB,EAAqBD,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFoB,QAAwB,CAAC,GAAMlB,EAAqBF,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFz6J,KAAwB,CAAC,IAAM,EAAqB26J,EAAkB,CAAC,GAAI,CAAC,IAAO,GACnF/wL,MAAwB,CAAC,IAAM,EAAqBluB,EAAE+sD,MAAgB,CAAC,GAAI,CAAC,IAAO,GACnF55D,SAAwB,CAAC,IAAM,EAAqB6M,EAAE+sD,MAAgB,GAAK,CAAC,IAAO,GACnFqzJ,qBAAwB,CAAC,IAAM,EAAqBpgN,EAAE+sD,MAAgB,GAAK,CAAC,IAAO,GACnFszJ,uBAAwB,CAAC,IAAM,EAAqBrgN,EAAE+sD,MAAgB,GAAK,CAAC,IAAO,GACnFuzJ,UAAwB,CAAC,IAAM,EAAqBvC,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFwC,aAAwB,CAAC,GAAMhC,EAAqBR,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFr4J,cAAwB,CAAC,GAAMt4D,EAAA8hH,oBAAqB6vG,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFyB,mBAAwB,CAAC,GAAMvB,EAAqBd,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnF34J,eAAwB,CAAC,IAAM,EAAqBs4J,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFr4J,cAAwB,CAAC,IAAM,EAAqBw5J,EAAkB,GAAK,CAAC,EAAG,IAAI,GACnFS,YAAwB,CAAC,IAAMX,EAAqBA,EAAkB,GAAK,CAAC,EAAG,IAAI,IAGxE3xN,EAAAA,mBAAiD,CAC5D,OACA,WACA,QACA,cACA,iBACA,iBACA,qBACA,WAIWA,EAAAA,sBAAoD,CAC/D,aACA,iBACA,qBACA,YACA,gBAIWA,EAAAA,WAAa,CACxBw4D,aAAoB,CAAC,GAAM,EAAem5J,EAAiB,GAAK,CAAC,EAAG,IAAI,GACxEc,cAAoB,CAAC,GAAM,EAAed,EAAiB,GAAK,CAAC,EAAG,IAAI,GACxEe,gBAAoB,CAAC,EAAMlC,EAAeI,EAAiB,GAAK,CAAC,EAAG,IAAI,GACxElvN,OAAoB,CAAC,GAAM,EAAekR,EAAEygN,MAAe,CAAC,GAAI,CAAC,IAAO,GACxE9rN,OAAoB,CAAC,GAAM,EAAeoqN,EAAiB,CAAC,GAAI,CAAC,IAAO,GACxEv5J,eAAoB,CAAC,GAAM,EAAes4J,EAAiB,GAAK,CAAC,EAAG,IAAI,GACxEe,QAAoB,CAAC,GAAM,EAAeA,EAAiB,GAAK,CAAC,EAAG,IAAI,GACxE2B,mBAAoB,CAAC,EAAM1C,EAAeK,EAAiB,GAAK,CAAC,EAAG,IAAI,GACxEuB,YAAoB,CAAC,IAAMX,EAAeA,EAAiB,GAAK,CAAC,EAAG,IAAI,IAI7D3xN,EAAAA,uBAAsD,GAEnE,MAAMszN,EAAc1gN,EAAEmqF,MACpBnqF,EAAEqkJ,KACFrkJ,EAAEgN,OAAO,CAEP1V,IAAK0I,EAAEa,OAAOwsG,EAAAgxG,eAAgBr+M,EAAEgN,OAAO,CAAE/X,KAAMo4G,EAAAgxG,eAAgB/mN,IAAK0I,EAAEyrC,MAAM,SAE5Ej7C,MAAOwP,EAAEyrC,MAAM4hE,EAAAgxG,mBAiBnB,SAASpB,EAAYtqM,GACnB,MAAO1d,EAAM0rN,EAAIC,EAAIC,EAAQ9D,EAAUC,GAAgBrqM,EACvD,MAAO,CAAE1d,OAAM0rN,KAAIC,KAAIC,SAAQ9D,WAAUC,eAC3C,CASIh9M,EAAEgN,OAAO,CAAE/X,KAAMo4G,EAAAgxG,eAAgB/mN,IAAK0I,EAAEyrC,MAAM,QAQlD,SAASq1K,EAAiC5D,GAExC,MAAM6D,EAAmE,CAAC,EAC1E,IAAK,MAAMniN,KAAKs+M,EAAU,CACxB,MAAOzuL,EAAKkyL,EAAIC,GAAM1D,EAASt+M,GAC/BmiN,EAAOtyL,GAAO,CAAC7vB,EAAG+hN,EAAIC,EACxB,CACA,OAAO5gN,EAAEujB,KAAK,CACZo6H,aAAcA,CAAC1uH,EAAaz+B,KAC1B,IAAI6D,EAAyC,GAE7C,IAAK,MAAM6K,KAAQg+M,EAAU,CAC3B,MAAMjhN,EAAMzL,EAAM0O,GAClB,QAAY9P,IAAR6M,EAAmB,SACvB,MAAOhH,EAAM0rN,EAAIC,GAAM1D,EAASh+M,GAChC,GAAKyhN,EAEE,CAEL,MAAMK,EAAuB/kN,EAAKjG,KAChCyW,IAAA,IAAE7N,EAAG2C,GAAwDkL,EAAA,MAAK,CAChEk0M,EAAGlzM,OAAO7O,GACVgiN,EAAGnzM,OAAOlM,GACX,IAGHy/M,EAAG72L,MAAK,CAACpsB,EAAGS,KAAM,EAAAue,EAAAsxF,cAAatwG,EAAE,GAAIS,EAAE,MACvC,IAAK,MAAOlH,EAAK9G,KAAUwwN,EAAI3sN,EAAIO,KAAK,CAAE0C,IAAK,CAAEA,MAAKrC,QAAQzE,SAChE,MAZE6D,EAAIO,KAAK,CAAE0C,IAAK,CAAErC,OAAMqC,IAAK0I,EAAEihN,OAASzwN,MAAOowN,EAAGnzM,OAAOxR,IAa7D,CACA,GAAIzL,EAAM0wN,QAAS,CACjB1wN,EAAM0wN,QAAQ/2L,MAAK,CAACpsB,EAAGS,KAAM,EAAAue,EAAAsxF,cAAatwG,EAAE,GAAGzG,IAAKkH,EAAE,GAAGlH,OACzD,IAAK,MAAOsH,EAAG2C,KAAM/Q,EAAM0wN,QAAS7sN,EAAIO,KAAK,CAAE0C,IAAKsH,EAAGpO,MAAO+Q,GAChE,CACAm/M,EAAY/iE,aAAa1uH,EAAG56B,EAAI,EAElCupJ,aAAez/I,IACb,MAAMgoE,EAAMu6I,EAAY9iE,aAAaz/I,GAC/B9J,EAAW,CAAC,EACZ8sN,EAA8B,CAAC,EACrC,IAAK,MAAM1iE,KAAOt4E,EAAK,CACrB,IAAIjnE,EAAO,UACP5H,EAAWmnJ,EAAInnJ,IAAIA,IACnB9G,EAAQiuJ,EAAIjuJ,MAChB,GAAIuwN,EAAOtiE,EAAInnJ,IAAIrC,MAAO,CACxB,MAAOmsN,EAAOT,EAAIC,GAAMG,EAAOtiE,EAAInnJ,IAAIrC,MAEvC,GADAiK,EAAOkiN,GACFT,GAAMrpN,EAAInI,OACb,MAAM,IAAIgC,MACR,2BAA2B+N,UAAa3M,EAAA6B,IAAIqZ,OAAOnW,YAAc/E,EAAA6B,IAAIqZ,OAAOjd,MAKhF,GAFA8G,EAAMqpN,EAAKA,EAAG5zM,OAAOzV,QAAOlI,EAC5BoB,EAAQowN,EAAG7zM,OAAOvc,IACbmwN,EAAI,CACP,GAAItsN,EAAI6K,GAAO,MAAM,IAAI/N,MAAM,oBAAoB+N,UAAa5H,WAAa9G,MAC7E6D,EAAI6K,GAAQ1O,EACZ2wN,EAAMjiN,IAAQ,EACd,QACF,CACF,MAEE5H,EAAM,CAAErC,KAAMwpJ,EAAInnJ,IAAIrC,KAAMqC,IAAKmnJ,EAAInnJ,IAAIA,KAG3C,GAAI6pN,EAAMjiN,GACR,MAAM,IAAI/N,MAAM,4CAA4C+N,SAAY1O,KACrE6D,EAAI6K,KAAO7K,EAAI6K,GAAQ,IAC5B7K,EAAI6K,GAAMtK,KAAK,CAAC0C,EAAK9G,GACvB,CACA,OAAO6D,CAAG,GAGhB,CAEajH,EAAAA,eAAiB4S,EAAE2hI,SAASm/E,EAAW1zN,EAAAi0N,YAAa/oN,IAC/D,GAAIA,EAAE0nN,qBAAuB1nN,EAAE0nN,mBAAmB7wN,OAChD,MAAM,IAAIgC,MAAM,2CAElB,GAAImH,EAAEsnN,aAAetnN,EAAEsnN,WAAWzwN,OAAQ,MAAM,IAAIgC,MAAM,oBAC1D,GAAImH,EAAEsnN,WAAY,IAAK,MAAOhhN,KAAMtG,EAAEsnN,YAAY,EAAA7iM,EAAA8gM,gBAAej/M,EAAGme,EAAAkwC,KAAKC,OACzE,GAAI50D,EAAEwnN,gBAAiB,IAAK,MAAOlhN,KAAMtG,EAAEwnN,iBAAiB,EAAA/iM,EAAA8gM,gBAAej/M,EAAGme,EAAAkwC,KAAKC,OAEnF,QAA+B99D,IAA3BkJ,EAAE8nN,sBAAsC9nN,EAAE8nN,qBAAuB,IACnE,MAAM,IAAIjvN,MAAM,qCAAqCmH,EAAE8nN,wBAEzD,QAC+BhxN,IAA7BkJ,EAAE+nN,yBACD/nN,EAAE+nN,wBAA0B,GAAK/nN,EAAE+nN,wBAA0B,KAE9D,MAAM,IAAIlvN,MAAM,sCAAsCmH,EAAE+nN,0BAE1D,GAAI/nN,EAAEwtD,qBAA8B12D,IAAZkJ,EAAE41B,MAAqB,CAC7C,MAAM5K,EAAOhrB,EAAEwtD,eAAe57B,QAAQ/6B,OAAS,EAC/C,GAAImJ,EAAE41B,MAAQ5K,EAAM,MAAM,IAAInyB,MAAM,wBAAwBmH,EAAE41B,gCAC9D,MAAMozL,EAAUhpN,EAAEwtD,eAAe57B,QAAQ5xB,EAAE41B,OAC3C,GACE51B,EAAEitD,gBACA,EAAAxoC,EAAAgxC,YAAWz1D,EAAEitD,YAAY5wD,OAAQ2sN,EAAQ3sN,SAAW2D,EAAEitD,YAAYz2D,SAAWwyN,EAAQxyN,QAEvF,MAAM,IAAIqC,MAAM,2DACpB,CACA,GAAImH,EAAEotD,cAEJ,IAAK,MAAO9mD,EAAG2C,KAAMjJ,EAAEotD,cAAe,CACpC,IAAiB,IAAZ9mD,EAAEm7C,WAA2Bx4C,EAAEA,EAAEpS,OAAS,GAC7C,MAAM,IAAIgC,MAAM,gDAClB,GAAsB,EAAlBoQ,EAAEA,EAAEpS,OAAS,GACf,MAAM,IAAIgC,MAAM,uDACpB,CAGF,GAAImH,EAAEwtD,qBAA8B12D,IAAZkJ,EAAE41B,OAAuB51B,EAAEgsD,KAAM,CAEvD,GADgBhsD,EAAEwtD,eAAe57B,QACrB/6B,OAAS,EAAImJ,EAAE41B,MAAO,MAAM,IAAI/8B,MAAM,yCASlD,MAAMgD,EAAK05G,EAAAj+G,YAAYsE,QAAQm5G,EAAAI,MAAMhgG,OAAOnV,EAAEwtD,gBAAiB,CAC7Dy7J,qBAAqB,EACrBC,oBAAoB,EACpBC,oBAAoB,IAEhBn9J,EAAO/xD,EAAA6B,IAAIqZ,OAAOnV,EAAEgsD,MAE1B,GAAInwD,EAAGutN,SAAWvtN,EAAGkO,KAAOiiD,EAC1B,MAAM,IAAInzD,MAAM,mCAAmCmzD,SAAYnwD,EAAGkO,KACtE,CACA,OAAO/J,CAAC,IAmBGlL,EAAAA,gBAAkB4S,EAAE2hI,SAASm/E,EAAW1zN,EAAAu0N,aAAcnuL,IACjE,GAAIA,EAAEssL,gBAAiB,IAAK,MAAOlhN,KAAM40B,EAAEssL,iBAAiB,EAAA/iM,EAAA8gM,gBAAej/M,EAAGme,EAAAkwC,KAAKC,OACnF,OAAO15B,CAAC,IAUV,MAAMouL,EAAkB5hN,EAAE2hI,SAASm/E,EAAW1zN,EAAAy0N,aAAc5jL,IAE1D,GAAgB,KADAA,EAAE8b,SAAW,GACV,CACjB,IAAK9b,EAAEihL,WAAY,MAAM,IAAI/tN,MAAM,8BACnC,IAAK,MAAM2wN,KAAO7jL,EAAEihL,WAAW70L,OAC7B,GAAIy3L,EAAI/B,gBAAkB+B,EAAI/B,eAAe5wN,OAC3C,MAAM,IAAIgC,MAAM,8CACtB,CACA,OAAO8sC,CAAC,IA8BV,SAAS8jL,EACPhoK,EACApnC,EACAmwI,GAEA,IAAK,MAAMlkJ,KAAKkkJ,EAAK,CACnB,GAAU,YAANlkJ,EAAiB,SACrB,IAAK+T,EAAK/T,GAAI,SACd,MAAM,SAAEm+M,GAAaE,EAAYtqM,EAAK/T,IACtC,IAAKm+M,EAAS3vK,SAAS2M,GAAU,MAAM,IAAI5oD,MAAM,QAAQ4oD,YAAkBn7C,mBAC7E,CACA,IAAK,MAAMA,KAAK+T,EAAM,CACpB,MAAM,OAAEkuM,GAAW5D,EAAYtqM,EAAK/T,IACpC,GAAIiiN,EAAOzzK,SAAS2M,SAAuB3qD,IAAX0zJ,EAAIlkJ,GAClC,MAAM,IAAIzN,MAAM,QAAQ4oD,6BAAmCn7C,IAC/D,CACF,CAyBA,SAASojN,EAAa7tN,GACpB,MAAM4lD,EAAW5lD,GAAMA,EAAGgwF,QAAUhwF,EAAGgwF,OAAOpqC,SAAY,EAC1DgoK,EAAmBhoK,EAAS3sD,EAAAy0N,WAAY1tN,EAAGgwF,QAC3C,IAAK,MAAM7rF,KAAKnE,EAAGk2B,OAAQ03L,EAAmBhoK,EAAS3sD,EAAAi0N,UAAW/oN,GAClE,IAAK,MAAMk7B,KAAKr/B,EAAG+1B,QAAS63L,EAAmBhoK,EAAS3sD,EAAAu0N,WAAYnuL,GAEpE,MAAM+rL,EAAcxlK,EAAgD5lD,EAAGgwF,OAAOo7H,WAAhDprN,EAAGgwF,OAAO+6H,WAAY70L,OAAOl7B,OAC3D,GAAIgF,EAAGk2B,OAAOl7B,OAASowN,EAAY,MAAM,IAAIpuN,MAAM,qBACnD,MAAM8wN,EAAa9tN,EAAGk2B,OAAOrvB,MAAMukN,GACnC,GAAI0C,EAAW9yN,OAAS,GAAM8yN,EAAW9yN,QAAUmB,OAAOoc,KAAKu1M,EAAW,IAAI9yN,OAC5E,MAAM,IAAIgC,MAAM,gCAAgC8wN,KAElD,MAAMzC,EAAezlK,EAAiD5lD,EAAGgwF,OAAOq7H,YAAjDrrN,EAAGgwF,OAAO+6H,WAAYh1L,QAAQ/6B,OAC7D,GAAIgF,EAAG+1B,QAAQ/6B,OAASqwN,EAAa,MAAM,IAAIruN,MAAM,sBACrD,MAAM+wN,EAAc/tN,EAAG+1B,QAAQlvB,MAAMwkN,GACrC,GAAI0C,EAAY/yN,OAAS,GAAM+yN,EAAY/yN,QAAUmB,OAAOoc,KAAKw1M,EAAY,IAAI/yN,OAC/E,MAAM,IAAIgC,MAAM,iCAAiC+wN,KACnD,OAAO/tN,CACT,CAtFa/G,EAAAA,WAAa4S,EAAEgN,OAAO,CACjCixI,MAAOj+I,EAAEi+I,MAAMj+I,EAAEiuB,OAAO,IAAIrQ,WAAW,CAAC,OAAS,QACjDumE,OAAQy9H,EACRv3L,OAAQrqB,EAAEmqF,MAAM,kCAAmC/8F,EAAA+0N,gBACnDj4L,QAASlqB,EAAEmqF,MAAM,KAAM/8F,EAAAg1N,mBAGZh1N,EAAAA,WAAa4S,EAAEgN,OAAO,CACjCixI,MAAOj+I,EAAEi+I,MAAMj+I,EAAEiuB,OAAO,IAAIrQ,WAAW,CAAC,OAAS,QACjDumE,OAAQy9H,EACRv3L,OAAQrqB,EAAEmqF,MAAM,oBAAqB/8F,EAAA+0N,gBACrCj4L,QAASlqB,EAAEmqF,MAAM,qBAAsB/8F,EAAAg1N,mBAK5Bh1N,EAAAA,WAAa4S,EAAEgN,OAAO,CACjCixI,MAAOj+I,EAAEi+I,MAAMj+I,EAAEiuB,OAAO,IAAIrQ,WAAW,CAAC,OAAS,QACjDykM,MAAOriN,EAAEmqF,MACP,KACAnqF,EAAE2kE,MACA3kE,EAAEmqF,MAAMnqF,EAAEqkJ,KAAMrkJ,EAAEsiN,MAAM,CAACtiN,EAAE5L,IAAIi5G,EAAAgxG,gBAAiBr+M,EAAEyrC,MAAM4hE,EAAAC,gBACxDttG,EAAEijJ,OAAO38E,WAsIFl5E,EAAAA,UAAY4S,EAAE2hI,SAASv0I,EAAAm1N,WAAYP,GACnC50N,EAAAA,UAAY4S,EAAE2hI,SAASv0I,EAAAo1N,WAAYR,iCC3gBhD1xN,OAAOC,eAAenD,EAAS,aAAc,CAC3CoD,OAAO,IAETpD,EAAAA,QAAkBA,EAAQq1N,sBAAmB,EAE7C,IAAIhqD,EAEJ,SAAiCv8J,GAAO,GAAIA,GAAOA,EAAI2mD,WAAc,OAAO3mD,EAAc,IAAIw8J,EAAS,CAAC,EAAG,GAAW,MAAPx8J,EAAe,IAAK,IAAI5E,KAAO4E,EAAO,GAAI5L,OAAO4H,UAAU4L,eAAeM,KAAKlI,EAAK5E,GAAM,CAAE,IAAIqrD,EAAOryD,OAAOC,gBAAkBD,OAAOsyD,yBAA2BtyD,OAAOsyD,yBAAyB1mD,EAAK5E,GAAO,CAAC,EAAOqrD,EAAKzpD,KAAOypD,EAAK/+C,IAAOtT,OAAOC,eAAemoK,EAAQphK,EAAKqrD,GAAgB+1G,EAAOphK,GAAO4E,EAAI5E,EAAQ,CAA4B,OAAtBohK,EAAOrmF,QAAUn2E,EAAYw8J,CAAU,CAF1cC,CAAwBvqK,EAAQ,QAM7C,IAAIq0N,EAAmB,SAA0BnoI,GAC/C,IAAI7tE,EAAOvd,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EwzN,EAAcj2M,EAAKk2M,OACnBA,OAAyB,IAAhBD,GAAiCA,EAC1CE,EAAan2M,EAAKi8B,MAClBA,OAAuB,IAAfk6K,EAAwB,EAAIA,EAExC,OAAO,SAAU3qI,GACf,OAAOwgF,EAAOpmF,QAAQmJ,cAAclB,EAAWrC,EAAOwgF,EAAOpmF,QAAQmJ,cAAc,MAAO,CACxFu+E,MAAO,CACLW,QAAS,cACTmoD,eAAgB,SAChB,WAAc,WAEfpqD,EAAOr+E,SAASprD,QAAQipD,EAAMiB,UAAUljF,KAAI,SAAUyjK,EAAOltG,GAC9D,IAjBmBrwD,EAAK5E,EAAK9G,EAiBzBsyN,EAAcH,EAAS,cAAgB,eAC3C,OAAOlqD,EAAOpmF,QAAQmJ,cAAc,MAAO,CACzClkF,IAAKi1D,EACLwtG,OApBiB79J,EAoBM,CACrBw+J,QAAS,gBArBWpjK,EAsBnBwrN,EAtBwBtyN,EAsBXk4C,EAtBwBpxC,KAAO4E,EAAO5L,OAAOC,eAAe2L,EAAK5E,EAAK,CAAE9G,MAAOA,EAAOw5B,YAAY,EAAM+4B,cAAc,EAAMD,UAAU,IAAkB5mD,EAAI5E,GAAO9G,EAAgB0L,IAuBlMu9J,EACL,KACF,CACF,EAEArsK,EAAQq1N,iBAAmBA,EAC3B,IAAI1nD,EAAW0nD,EACfr1N,EAAAA,QAAkB2tK,8BCpClB3tK,EAAQ,OAAuB,EAkB/BA,EAAQ,EAjBmB,CACzB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,kBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,gOAEP,SAAY,ibCnBhB,MAAAe,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACA20N,EAAA30N,EAAA,MACAC,EAAAD,EAAA,KAgBAhB,EAAAA,aAAA,SACIoB,EACAC,EACAqxB,EACAlxB,EACAoB,GAG4B,IAF5Bf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOhwB,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAkzN,EAAA7/B,+BAA8BpjK,EAASlxB,EAAaqB,EAAoBhB,EAAcK,IAG1F,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,sBCpCA,MAAM2zN,EAAa50N,EAAQ,OAErB60N,EAAS70N,EAAQ,OACjB80N,EAAiB90N,EAAQ,OACzB+0N,EAAc/0N,EAAQ,OAE5B,SAASg1N,EAAcC,EAAYC,EAAQ5nM,EAAM6L,EAAM7F,GACrD,MAAMjf,EAAO,GAAGzH,MAAMoJ,KAAKlV,UAAW,GAChCq0N,EAAU9gN,EAAKtT,OACfq0N,EAA2C,oBAAtB/gN,EAAK8gN,EAAU,GAE1C,IAAKC,IAAgBR,IACnB,MAAM,IAAI7xN,MAAM,sCAGlB,IAAIqyN,EAoBG,CACL,GAAID,EAAU,EACZ,MAAM,IAAIpyN,MAAM,8BAYlB,OATgB,IAAZoyN,GACF7nM,EAAO4nM,EACPA,EAAS/7L,OAAOn4B,GACK,IAAZm0N,GAAkBD,EAAOG,aAClCl8L,EAAO7L,EACPA,EAAO4nM,EACPA,OAASl0N,GAGJ,IAAIuC,SAAQ,SAAUC,EAASikB,GACpC,IACE,MAAM5kB,EAAOgyN,EAAOjsN,OAAO0kB,EAAM6L,GACjC31B,EAAQyxN,EAAWpyN,EAAMqyN,EAAQ/7L,GACnC,CAAE,MAAO1oB,GACPgX,EAAOhX,EACT,CACF,GACF,CAzCE,GAAI0kN,EAAU,EACZ,MAAM,IAAIpyN,MAAM,8BAGF,IAAZoyN,GACF7hM,EAAKhG,EACLA,EAAO4nM,EACPA,EAAS/7L,OAAOn4B,GACK,IAAZm0N,IACLD,EAAOG,YAA4B,qBAAP/hM,GAC9BA,EAAK6F,EACLA,OAAOn4B,IAEPsyB,EAAK6F,EACLA,EAAO7L,EACPA,EAAO4nM,EACPA,OAASl0N,IA2Bf,IACE,MAAM6B,EAAOgyN,EAAOjsN,OAAO0kB,EAAM6L,GACjC7F,EAAG,KAAM2hM,EAAWpyN,EAAMqyN,EAAQ/7L,GACpC,CAAE,MAAO1oB,GACP6iB,EAAG7iB,EACL,CACF,CAEAzR,EAAQ4J,OAASisN,EAAOjsN,OACxB5J,EAAQs2N,SAAWN,EAAa/vM,KAAK,KAAM6vM,EAAetnI,QAC1DxuF,EAAQu2N,UAAYP,EAAa/vM,KAAK,KAAM6vM,EAAeU,iBAG3Dx2N,EAAQ2E,SAAWqxN,EAAa/vM,KAAK,MAAM,SAAUpiB,EAAM87B,EAAGxF,GAC5D,OAAO47L,EAAYvnI,OAAO3qF,EAAMs2B,EAClC,4mCC3EA,MAAAnb,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAOAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OAEA,IAAYy1N,EAyJZ,SAAgBC,EAAqDr3M,GAI5C,IAJ6C,UAClEnd,EACAod,MAAO/d,GAAK,KACZsC,GACqBwb,EACrB,MAAM,YACFE,EAAW,uBACXo3M,EAAsB,iCACtBC,EAAgC,2BAChCC,EAA0B,gCAC1BC,EAA+B,0BAC/BC,EAAyB,uBACzBC,EAAsB,WACtBC,GACAj3N,EAAAk3N,2CAA2Cv3M,OAAO9b,GAEtD,MAAO,CACH3B,YACAod,KAAM,CACF/d,QAEJsC,KAAM,CACF0b,cACAo3M,yBACAE,2BAA4BD,EAAmCC,EAA6B,KAC5FE,0BAA2BD,EAAkCC,EAA4B,KACzFC,yBACAC,cAGZ,CA4JA,SAAgBE,EAAgDryH,GAIvC,IAJwC,UAC7D5iG,EACAod,MAAOhe,EAAQC,EAAMC,EAAaoB,KAAcP,GAAQ,KACxDwB,GACqBihG,EACrB,MAAM,YAAEvlF,EAAW,uBAAEo3M,EAAsB,OAAEj1N,EAAM,SAAEC,EAAQ,IAAEC,GAC3D5B,EAAAo3N,sCAAsCz3M,OAAO9b,GAEjD,MAAO,CACH3B,YACAod,KAAM,CACFhe,SACAC,OACAC,cACAoB,YACAP,WAEJwB,KAAM,CACF0b,cACAo3M,yBACAj1N,SACAC,WACAC,OAGZ,CAiIA,SAAgBy1N,EAAwDpyH,GAI/C,IAJgD,UACrE/iG,EACAod,MAAO/d,EAAMC,EAAaoB,KAAcP,GAAQ,KAChDwB,GACqBohG,EACrB,MAAM,YAAE1lF,EAAW,uBAAEo3M,GAA2B32N,EAAAs3N,8CAA8C33M,OAAO9b,GAErG,MAAO,CACH3B,YACAod,KAAM,CACF/d,OACAC,cACAoB,YACAP,WAEJwB,KAAM,CACF0b,cACAo3M,0BAGZ,CA+IA,SAAgBY,EAA4DlyH,GAInD,IAJoD,UACzEnjG,EAAS,KACTod,EAAI,KACJzb,GACqBwhG,EACrB,MAAM,YAAE9lF,EAAW,uBAAEo3M,EAAsB,iBAAEa,GACzCx3N,EAAAy3N,kDAAkD93M,OAAO9b,IACtDtC,EAAMC,EAAaoB,EAAWP,EAASU,GAAW,CACrDuc,EAAK,GACLA,EAAK,GACLA,EAAK,GACLA,EAAK1R,MAAM,EAAG,EAAI4pN,GAClBl4M,EAAK1R,OAAO,EAAI4pN,IAEpB,MAAO,CACHt1N,YACAod,KAAM,CACF/d,OACAC,cACAoB,YACAP,UACAU,WAEJc,KAAM,CACF0b,cACAo3M,yBACAa,oBAGZ,CAqHA,SAAgBE,EAAqDpwH,GAI5C,IAJ6C,UAClEplG,EACAod,MAAO/d,KAASwB,GAAQ,KACxBc,GACqByjG,EACrB,MAAM,YAAE/nF,EAAW,uBAAEo3M,GAA2B32N,EAAA23N,2CAA2Ch4M,OAAO9b,GAClG,MAAO,CACH3B,YACAod,KAAM,CACF/d,OACAwB,WAEJc,KAAM,CACF0b,cACAo3M,0BAGZ,EAnzBA,SAAYF,GACRA,EAAAA,EAAA,6DACAA,EAAAA,EAAA,mDACAA,EAAAA,EAAA,mEACAA,EAAAA,EAAA,2EACAA,EAAAA,EAAA,6DACAA,EAAAA,EAAA,kCACH,CAPD,CAAYA,IAAsBz2N,EAAAA,uBAAtBy2N,EAAsB,KAwBrBz2N,EAAAA,4CAA6C,EAAAgf,EAAAY,QAAmD,EACzG,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,2BACH,EAAAb,EAAAa,IAAG,qCACH,EAAAZ,EAAApa,WAAU,+BACV,EAAAma,EAAAa,IAAG,oCACH,EAAAZ,EAAApa,WAAU,8BACV,EAAAma,EAAA8+G,KAAI,2BACJ,EAAA7+G,EAAA2T,KAAI,gBAeR5yB,EAAAA,6CAAA,SACIuB,EACAs1N,EACAE,EACAC,EACAC,GACiC,IAAjC/0N,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,KAAK,EAAAjB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMT,EAAO,CAAC,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAErDrc,EAAOY,EAAO0b,MAAMngB,EAAAk3N,2CAA2C92M,MAerE,OAdApgB,EAAAk3N,2CAA2C72M,OACvC,CACId,YAAaJ,EAAAmB,iBAAiBs3M,qBAC9BjB,uBAAwBF,EAAuBoB,4BAC/CjB,iCAAkCC,EAA6B,EAAI,EACnEA,2BAA4BA,GAA8B,IAAI91N,EAAAiE,UAAU,GACxE8xN,gCAAiCC,EAA4B,EAAI,EACjEA,0BAA2BA,GAA6B,IAAIh2N,EAAAiE,UAAU,GACtEgyN,uBAAwBA,EACxBC,WAAYA,GAEhBpzN,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EA0BA7D,EAAAA,6CAAA,SACIuf,EACArd,GAEA,IAAKqd,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAk3N,2CAA2C92M,KACvE,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,KAAE/d,GAAM,KACdsC,GACA6yN,EAAsDn3M,GAC1D,GACI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBs3M,sBACtC/zN,EAAK8yN,yBAA2BF,EAAuBoB,4BAEvD,MAAM,IAAI34M,EAAA0B,iCACd,IAAKrf,EAAM,MAAM,IAAI2d,EAAA2B,iCAErB,MAAO,CACH3e,YACAod,KAAM,CACF/d,QAEJsC,OAER,EAyBA7D,EAAAA,sDAAA02N,EAyCa12N,EAAAA,uCAAwC,EAAAgf,EAAAY,QAA8C,EAC/F,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,2BACH,EAAAZ,EAAA2T,KAAI,WACJ,EAAA5T,EAAAa,IAAG,aACH,EAAAZ,EAAA2T,KAAI,SAkBR5yB,EAAAA,wCAAA,SACIsB,EACAC,EACAC,EACAoB,EACAlB,EACAC,EACAC,GAEiC,IADjCC,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,KAAK,EAAAjB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMlc,EAAOY,EAAO0b,MAAMngB,EAAAo3N,sCAAsCh3M,MAChEpgB,EAAAo3N,sCAAsC/2M,OAClC,CACId,YAAaJ,EAAAmB,iBAAiBs3M,qBAC9BjB,uBAAwBF,EAAuBqB,uBAC/Cp2N,SACAC,WACAC,OAEJiC,GAEJ,MAAMyb,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQ1e,EAAQ2e,UAAU,EAAOC,YAAY,GAC/C,CAAEF,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQxe,EAAaye,UAAU,EAAOC,YAAY,IAExDtd,EACAf,GAEJ,OAAO,IAAId,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EA6BA7D,EAAAA,wCAAA,SACIuf,EACArd,GAEA,IAAKqd,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAo3N,sCAAsCh3M,KAClE,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,OAAEhe,EAAM,KAAEC,EAAI,YAAEC,EAAW,UAAEoB,EAAS,QAAEP,GAAS,KACvDwB,GACAszN,EAAiD53M,GACrD,GACI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBs3M,sBACtC/zN,EAAK8yN,yBAA2BF,EAAuBqB,uBAEvD,MAAM,IAAI54M,EAAA0B,iCACd,IAAKrf,EAAM,MAAM,IAAI2d,EAAA2B,iCAErB,MAAO,CACH3e,YACAod,KAAM,CACFhe,SACAC,OACAC,cACAoB,YACAP,QAASA,GAAoB,MAEjCwB,OAER,EA4BA7D,EAAAA,iDAAAm3N,EAiCan3N,EAAAA,+CAAgD,EAAAgf,EAAAY,QAAsD,EAC/G,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,4BAcP7f,EAAAA,gDAAA,SACIuB,EACAC,EACAoB,GAEiC,IADjCP,EAAAP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAkC,GAClCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,KAAK,EAAAjB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMlc,EAAOY,EAAO0b,MAAMngB,EAAAs3N,8CAA8Cl3M,MACxEpgB,EAAAs3N,8CAA8Cj3M,OAC1C,CACId,YAAaJ,EAAAmB,iBAAiBs3M,qBAC9BjB,uBAAwBF,EAAuBsB,gCAEnDl0N,GAEJ,MAAMyb,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQxe,EAAaye,UAAU,EAAOC,YAAY,IAExDtd,EACAP,GAEJ,OAAO,IAAItB,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAyBA7D,EAAAA,gDAAA,SACIuf,EACArd,GAEA,IAAKqd,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAs3N,8CAA8Cl3M,KAC1E,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,KAAE/d,EAAI,YAAEC,EAAW,UAAEoB,EAAS,QAAEP,GAAS,KAC/CwB,GACAwzN,EAAyD93M,GAC7D,GACI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBs3M,sBACtC/zN,EAAK8yN,yBAA2BF,EAAuBsB,+BAEvD,MAAM,IAAI74M,EAAA0B,iCACd,IAAKrf,EAAM,MAAM,IAAI2d,EAAA2B,iCAErB,MAAO,CACH3e,YACAod,KAAM,CACF/d,OACAC,cACAoB,YACAP,QAASA,GAAoB,MAEjCwB,OAER,EAwBA7D,EAAAA,yDAAAq3N,EA6Bar3N,EAAAA,mDACT,EAAAgf,EAAAY,QAA0D,EACtD,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,2BACH,EAAAb,EAAAa,IAAG,sBAeX7f,EAAAA,oDAAA,SACIuB,EACAC,EACAoB,EACAP,EACAU,GACiC,IAAjCb,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,KAAK,EAAAjB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMlc,EAAOY,EAAO0b,MAAMngB,EAAAy3N,kDAAkDr3M,MAC5EpgB,EAAAy3N,kDAAkDp3M,OAC9C,CACId,YAAaJ,EAAAmB,iBAAiBs3M,qBAC9BjB,uBAAwBF,EAAuBuB,mCAC/CR,iBAAkBz0N,EAAQhB,QAE9B8B,GAEJ,MAAMyb,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQxe,EAAaye,UAAU,EAAOC,YAAY,IAExDtd,EACAP,GAEJ,IAAK,MAAMf,KAAUyB,EACjBuc,EAAK9X,KAAK,CAAEwY,OAAQ1e,EAAQ2e,UAAU,EAAOC,YAAY,IAE7D,OAAO,IAAInf,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EA2BA7D,EAAAA,oDAAA,SACIuf,EACArd,GAEA,IAAKqd,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAy3N,kDAAkDr3M,KAC9E,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,KAAE/d,EAAI,YAAEC,EAAW,UAAEoB,EAAS,QAAEP,EAAO,QAAEU,GAAS,KACxDc,GACA0zN,EAA6Dh4M,GACjE,GACI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBs3M,sBACtC/zN,EAAK8yN,yBAA2BF,EAAuBuB,mCAEvD,MAAM,IAAI94M,EAAA0B,iCACd,IAAKrf,EAAM,MAAM,IAAI2d,EAAA2B,iCAErB,MAAO,CACH3e,YACAod,KAAM,CACF/d,OACAC,cACAoB,YACAP,QAASA,GAAoB,KAC7BU,QAASA,GAAoB,MAEjCc,OAER,EA0BA7D,EAAAA,6DAAAu3N,EAsCav3N,EAAAA,4CAA6C,EAAAgf,EAAAY,QAAmD,EACzG,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,4BAYP7f,EAAAA,6CAAA,SACIuB,EACAwB,GACiC,IAAjCb,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,KAAK,EAAAjB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMlc,EAAOY,EAAO0b,MAAMngB,EAAA23N,2CAA2Cv3M,MACrEpgB,EAAA23N,2CAA2Ct3M,OACvC,CACId,YAAaJ,EAAAmB,iBAAiBs3M,qBAC9BjB,uBAAwBF,EAAuBwB,6BAEnDp0N,GAEJ,MAAMyb,EAAsB,GAC5BA,EAAK9X,KAAK,CAAEwY,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IACvD,IAAK,MAAM5e,KAAUyB,EACjBuc,EAAK9X,KAAK,CAAEwY,OAAQ1e,EAAQ2e,UAAU,EAAOC,YAAY,IAE7D,OAAO,IAAInf,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAuBA7D,EAAAA,6CAAA,SACIuf,EACArd,GAEA,IAAKqd,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAA23N,2CAA2Cv3M,KACvE,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,KAAE/d,EAAI,QAAEwB,GAAS,KACvBc,GACA6zN,EAAsDn4M,GAC1D,GACI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBs3M,sBACtC/zN,EAAK8yN,yBAA2BF,EAAuBwB,4BAEvD,MAAM,IAAI/4M,EAAA0B,iCACd,IAAKrf,EAAM,MAAM,IAAI2d,EAAA2B,iCAErB,MAAO,CACH3e,YACAod,KAAM,CACF/d,OACAwB,WAEJc,OAER,EAsBA7D,EAAAA,sDAAA03N,8BChzBAx0N,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQwqL,WAAaxqL,EAAQk4N,qBAAkB,EAU/Cl4N,EAAQk4N,gBATR,SAAyBppN,GACrB,OAAc,MAAPA,GACsB,mBAAjBA,EAAI0V,SACmB,kBAAvB1V,EAAIqpN,eACiB,kBAArBrpN,EAAIynC,aACY,kBAAhBznC,EAAI0nC,QAC2B,kBAA/B1nC,EAAIkoC,uBAC2B,kBAA/BloC,EAAIunC,qBACpB,EA+MAr2C,EAAQwqL,WA7MR,MACIr8K,WAAAA,CAAYiqN,GACRl4N,KAAKk4N,2BAA6BA,CACtC,CAWAnrK,sBAAAA,CAAuBzrC,EAAiBsC,EAAYyyB,EAAaC,EAAQq4K,EAAWxmN,GAChF,MAGMguC,EADyB,UAFZvyB,GAAc,SAAW0yB,GAAU,SAChDD,GAEsC,KAAO3wC,OAAO1F,KAAKm4N,YAAY72M,EAAiBnZ,IAAWwmN,EACvG,MAAO,CACHrqM,SAAS,EACT2zM,cAAe,GACf5hL,cACAC,SACAQ,sBAAuB92C,KAAKovN,aAAa9tM,EAAiBnZ,GAAS,KAAOguC,EAC1EA,wBAER,CAaA,uBAAM/xB,CAAkB9C,EAAiBsC,EAAYyyB,EAAaC,EAAQq4K,EAAWxmN,EAAOC,EAAawmN,GACrG,MAAMwJ,EAAax0M,GAAc,SAAW0yB,GAAU,SAChDD,EACAgiL,EAAyB,SAAZD,EACbjiL,EAAwBkiL,EAAc,KAAO3yN,OAAO1F,KAAKm4N,YAAY72M,EAAiBnZ,IAAWwmN,EACvG,GAAI3uN,KAAKovN,aAAa9tM,EAAiBnZ,GACnC,MAAO,CACHmc,SAAS,EACT2zM,cAAe,GACf5hL,cACAC,SACAQ,sBAAuB,KACvBX,yBAER,MAAMmiL,QAA6Bt4N,KAAK+uN,qBAAqBztM,EAAiB82M,EAAWjwN,EAAOC,EAAawmN,GACvG93K,EAAwBuhL,EAAc,KAAO3yN,OAAO1F,KAAKm4N,YAAY72M,EAAiBnZ,IAAWmwN,EAEjGL,EAA6B,UADhBtJ,EAAY2J,GACeA,EAC9C,MAAO,CACHh0M,QAAS2zM,GAAiBj4N,KAAKk4N,2BAC/BD,gBACA5hL,cACAC,SACAQ,wBACAX,wBAER,CAWAC,yBAAAA,CAA0B90B,EAAiBsC,EAAYyyB,EAAaC,EAAQu4K,EAAc1mN,GACtF,MAGMguC,EADyB,UAFZvyB,GAAc,SAAW0yB,GAAU,SAChDD,GAEsC,KAAO3wC,OAAO1F,KAAKm4N,YAAY72M,EAAiBnZ,IAAW0mN,EACvG,MAAO,CACHvqM,SAAS,EACT2zM,cAAe,GACf5hL,cACAC,SACAQ,sBAAuB92C,KAAKovN,aAAa9tM,EAAiBnZ,GAAS,KAAOguC,EAC1EA,wBAER,CAaA,0BAAM9xB,CAAqB/C,EAAiBsC,EAAYyyB,EAAaC,EAAQu4K,EAAc1mN,EAAOC,EAAawmN,GAC3G,MAAMwJ,EAAax0M,GAAc,SAAW0yB,GAAU,SAChDD,EACAgiL,EAAyB,SAAZD,EACbjiL,EAAwBkiL,EAAc,KAAO3yN,OAAO1F,KAAKm4N,YAAY72M,EAAiBnZ,IAAW0mN,EACvG,GAAI7uN,KAAKovN,aAAa9tM,EAAiBnZ,GACnC,MAAO,CACHmc,SAAS,EACT2zM,cAAe,GACf5hL,cACAC,SACAQ,sBAAuB,KACvBX,yBAER,MAAMmiL,QAA6Bt4N,KAAK+uN,qBAAqBztM,EAAiB82M,EAAWjwN,EAAOC,EAAawmN,GACvG93K,EAAwBuhL,EAAc,KAAO3yN,OAAO1F,KAAKm4N,YAAY72M,EAAiBnZ,IAAWmwN,EAEjGL,EAA6B,SADhBK,EAAuBzJ,GACGyJ,EAC7C,MAAO,CACHh0M,QAAS2zM,GAAiBj4N,KAAKk4N,2BAC/BD,gBACA5hL,cACAC,SACAQ,wBACAX,wBAER,CACAzzB,aAAAA,CAAcpB,EAAiBnZ,EAAOC,GAClC,OAAOpI,KAAK0qL,SAASppK,EAAiBnZ,EAAOC,EACjD,CACA0mN,gBAAAA,CAAiB1mN,GACb,OAAOpI,KAAK8qL,YAAY1iL,EAC5B,CAWA,0BAAM2mN,CAAqBztM,EAAiB0tM,EAAYC,EAAS7mN,EAAawmN,GAC1E,GAA6D,MAAzD5uN,KAAKm4N,YAAY72M,EAAiB2tM,EAAQxqN,YAC1C,MAAM,IAAIZ,MAAM,oBACpB,MAAM2E,EAAQomN,SAAyB5uN,KAAK0qL,SAASppK,EAAiB2tM,EAAS7mN,GAC/E,OAAO4mN,EACA,KAAOtpN,OAAO1F,KAAKm4N,YAAY72M,EAAiB2tM,EAAQxqN,aACxD,SACA+D,CACX,CAWA,wBAAM0mN,CAAmB5tM,EAAiB0tM,EAAYG,EAAW/mN,EAAawmN,GAC1E,GAA+D,MAA3D5uN,KAAKm4N,YAAY72M,EAAiB6tM,EAAU1qN,YAC5C,MAAM,IAAIZ,MAAM,mBAEpB,OAAOmrN,GADOJ,SAAyB5uN,KAAK0qL,SAASppK,EAAiB6tM,EAAW/mN,IAG3E,SACC,KAAO1C,OAAO1F,KAAKm4N,YAAY72M,EAAiB6tM,EAAU1qN,YACrE,CAOA2qN,YAAAA,CAAa9tM,EAAiB+kF,GAC1B,MAAMkyH,EAAOv4N,KAAKm4N,YAAY72M,EAAiB+kF,EAAa5hG,YAC5D,GAAY,MAAR8zN,EACA,MAAM,IAAI10N,MAAM,mBACpB,OAAiB,IAAV00N,CACX,CACA,oBAAMvgL,CAAeq3K,EAASjnN,EAAawmN,GACvC,OAAOz/L,OAAOkgM,IAAYT,SAAyB5uN,KAAK8qL,YAAY1iL,GACxE,CACA,sBAAMknN,CAAiB/sM,EAASgtM,EAAapnN,EAAOC,EAAawmN,GAC7D,MAAO4J,EAAWC,SAAkBp0N,QAAQoE,IAAI,CAC5CzI,KAAKkvN,mBAAmB3sM,EAASgtM,EAAapnN,EAAOC,GAClC,MAAnBwmN,EAA0B5uN,KAAK8uN,iBAAiB1mN,GAAe/D,QAAQC,QAAQsqN,KAEnF,OAAOz/L,OAAOqpM,GAAaC,CAC/B,CACA37D,WAAAA,CAAYt7J,EAAQ2G,EAAOC,EAAa2vC,GACpC,MAAoB,QAAhB5vC,EAAMma,MACCtiB,KAAKg4C,eAAex2C,EAAQ4G,EAAa2vC,GAGzC/3C,KAAKsvN,iBAAiBnnN,EAAMoa,QAAS/gB,EAAQ2G,EAAMzB,QAAS0B,EAAa2vC,EAExF,iCCvNJ/0C,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ2N,gBAmCR,SAAyBJ,GAAsB,IAAduU,EAAOhgB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACxCggB,EAAU,IAAK82M,KAAkC92M,GACjD,MAAM+2M,EAActrN,EAAO9E,MAAM,KAC3BqwN,EAAiBD,EAAYA,EAAY92N,OAAS,GAClDyL,IAA0BsU,EAAQtU,sBAClC85E,IAAgBxlE,EAAQwlE,YAC9B,GAAI95E,QACmBxL,IAAnB82N,GACAC,EAAoB/4K,SAAS84K,GAAiB,CAC9C,GAAID,EAAY92N,OAAS,EAAG,CAIxB,MAAO,GAFmB82N,EAAYA,EAAY92N,OAAS,MAE5B+2N,GACnC,CACK,GAAIE,EAA0Bh5K,SAAS84K,GAIxC,OAAOA,CAEf,CACA,IAAKxxI,QACkBtlF,IAAnB82N,GACAC,EAAoB/4K,SAAS84K,GAC7B,MAAM,IAAI/0N,MAAM,+CAA+C+0N,8IAEnE,MAAMr0F,GAAe,EAAIw0F,EAAQh0F,WAAW13H,EAAQ,CAChDg2H,mBAAmB,EACnBC,qBAAqB,IAEzB,GAAIiB,EACA,OAAOA,CACf,EAnEA,MAAMw0F,EAAUj4N,EAAQ,OAElB+3N,EAAsB,CAAC,QAAS,UAAW,UAAW,YAAa,QACnEC,EAA4B,CAAC,YAAa,WAC1CJ,EAAgC,CAClCprN,uBAAuB,EACvB85E,aAAa,gUCDjB,MAAAg3B,EAAAt9G,EAAA,OAOahB,EAAAA,GAAMkY,GAAoB,IAAIsY,WAAWtY,EAAIqY,OAAQrY,EAAIkZ,WAAYlZ,EAAI+mB,YAItF,SAASyiB,EAAQ/wC,GACf,OACEA,aAAa6f,YACP,MAAL7f,GAA0B,kBAANA,GAAyC,eAAvBA,EAAExC,YAAY2D,IAEzD,CARa9R,EAAAA,IAAOkY,GAClB,IAAIV,YAAYU,EAAIqY,OAAQrY,EAAIkZ,WAAY9nB,KAAKC,MAAM2O,EAAI+mB,WAAa,IAU7Dj/B,EAAAA,WAAckY,GACzB,IAAIqmG,SAASrmG,EAAIqY,OAAQrY,EAAIkZ,WAAYlZ,EAAI+mB,YAU/C,GAPaj/B,EAAAA,KAAOw+G,CAACt8E,EAAcj0B,IAAmBi0B,GAAS,GAAKj0B,EAAWi0B,IAASj0B,EAM3EjO,EAAAA,KAAmE,KAA5D,IAAIwwB,WAAW,IAAIhZ,YAAY,CAAC,YAAa+Y,QAAQ,IACpEvwB,EAAAmwB,KAAM,MAAM,IAAIpsB,MAAM,+CAG3B,MAAM44F,EAAwBtyF,MAAM3F,KAAK,CAAE3C,OAAQ,MAAO,CAAC49B,EAAGz0B,IAC5DA,EAAEvG,SAAS,IAAI4mB,SAAS,EAAG,OAK7BvrB,EAAAA,WAAA,SAA2Bq+C,GACzB,IAAKqD,EAAQrD,GAAQ,MAAM,IAAIt6C,MAAM,uBAErC,IAAIiD,EAAM,GACV,IAAK,IAAIkE,EAAI,EAAGA,EAAImzC,EAAMt8C,OAAQmJ,IAChClE,GAAO21F,EAAMt+C,EAAMnzC,IAErB,OAAOlE,CACT,EAGA,MAAM23G,EAAe,GAAfA,EAAuB,GAAvBA,EAA+B,GAA/BA,EAAuC,GAAvCA,EAA+C,GAA/CA,EAAuD,IAC7D,SAASC,EAAcC,GACrB,OAAIA,GAAQF,GAAaE,GAAQF,EAAkBE,EAAOF,EACtDE,GAAQF,GAAaE,GAAQF,EAAkBE,GAAQF,EAAY,IACnEE,GAAQF,GAAaE,GAAQF,EAAkBE,GAAQF,EAAY,SAAvE,CAEF,CAKA3+G,EAAAA,WAAA,SAA2BgH,GACzB,GAAmB,kBAARA,EAAkB,MAAM,IAAIjD,MAAM,mCAAqCiD,GAClF,MAAM83G,EAAK93G,EAAIjF,OACTg9G,EAAKD,EAAK,EAChB,GAAIA,EAAK,EAAG,MAAM,IAAI/6G,MAAM,0DAA4D+6G,GACxF,MAAM/hB,EAAQ,IAAIvsE,WAAWuuF,GAC7B,IAAK,IAAIC,EAAK,EAAG76E,EAAK,EAAG66E,EAAKD,EAAIC,IAAM76E,GAAM,EAAG,CAC/C,MAAMzlB,EAAKkgG,EAAc53G,EAAIgK,WAAWmzB,IAClC86E,EAAKL,EAAc53G,EAAIgK,WAAWmzB,EAAK,IAC7C,QAAWniC,IAAP0c,QAA2B1c,IAAPi9G,EAAkB,CACxC,MAAMJ,EAAO73G,EAAIm9B,GAAMn9B,EAAIm9B,EAAK,GAChC,MAAM,IAAIpgC,MAAM,+CAAiD86G,EAAO,cAAgB16E,EAC1F,CACA44D,EAAMiiB,GAAW,GAALtgG,EAAUugG,CACxB,CACA,OAAOliB,CACT,EA2BA,SAAgBsgB,EAAYnrG,GAC1B,GAAmB,kBAARA,EAAkB,MAAM,IAAInO,MAAM,2CAA2CmO,GACxF,OAAO,IAAIse,YAAW,IAAImnD,aAAct3D,OAAOnO,GACjD,CAQA,SAAgB0e,EAAQ/sB,GAEtB,GADoB,kBAATA,IAAmBA,EAAOw5G,EAAYx5G,KAC5C69C,EAAQ79C,GAAO,MAAM,IAAIE,MAAM,mCAAmCF,GACvE,OAAOA,CACT,CArCa7D,EAAAA,SAAWuP,YAGxBvP,EAAAA,UAAOuP,eAAyB2vG,EAAe54F,EAAcgO,GAC3D,IAAI6qF,EAAKpyF,KAAKC,MACd,IAAK,IAAI9hB,EAAI,EAAGA,EAAIg0G,EAAOh0G,IAAK,CAC9BopB,EAAGppB,GAEH,MAAM2kC,EAAO9iB,KAAKC,MAAQmyF,EACtBtvE,GAAQ,GAAKA,EAAOvpB,UAClB,EAAAtmB,EAAAm3F,YACNgoB,GAAMtvE,EACR,CACF,EASA7vC,EAAAA,YAAAq9G,EAWAr9G,EAAAA,QAAA4wB,EASA5wB,EAAAA,YAAA,WACE,IAAI2X,EAAM,EACV,IAAK,IAAIzM,EAAI,EAAGA,EAAIpJ,UAAOC,OAAQmJ,IAAK,CACtC,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB,IAAKw2C,EAAQ/wC,GAAI,MAAM,IAAI5M,MAAM,uBACjC4T,GAAOhH,EAAE5O,MACX,CACA,MAAM+vB,EAAM,IAAItB,WAAW7Y,GAC3B,IAAK,IAAIzM,EAAI,EAAGwxF,EAAM,EAAGxxF,EAAIpJ,UAAOC,OAAQmJ,IAAK,CAC/C,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB4mB,EAAItb,IAAI7F,EAAG+rF,GACXA,GAAO/rF,EAAE5O,MACX,CACA,OAAO+vB,CACT,EAGA9xB,EAAAA,KAAA,MAsBEuS,KAAAA,GACE,OAAOrS,KAAK8xB,YACd,GAcF,MAAMotF,EAAQ,CAAC,EAAEz6G,SAEjB3E,EAAAA,UAAA,SACEq/G,EACAllF,GAEA,QAAan4B,IAATm4B,GAA2C,oBAArBilF,EAAMpoG,KAAKmjB,GACnC,MAAM,IAAIp2B,MAAM,yCAElB,OADeb,OAAO0nF,OAAOy0B,EAAUllF,EAEzC,EAIAn6B,EAAAA,gBAAA,SAAmDs/G,GACjD,MAAMC,EAAS5+G,GAA2B2+G,IAAWr7G,OAAO2sB,EAAQjwB,IAAMuD,SACpE6vC,EAAMurE,IAIZ,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAS,IAAM01G,IACdC,CACT,EAEAv/G,EAAAA,wBAAA,SACEs/G,GAEA,MAAMC,EAAQA,CAAC5+G,EAAYw5B,IAAyBmlF,EAASnlF,GAAMl2B,OAAO2sB,EAAQjwB,IAAMuD,SAClF6vC,EAAMurE,EAAS,CAAC,GAItB,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAUuwB,GAAYmlF,EAASnlF,GAC9BolF,CACT,EAEAv/G,EAAAA,2BAAA,SACEs/G,GAEA,MAAMC,EAAQA,CAAC5+G,EAAYw5B,IAAyBmlF,EAASnlF,GAAMl2B,OAAO2sB,EAAQjwB,IAAMuD,SAClF6vC,EAAMurE,EAAS,CAAC,GAItB,OAHAC,EAAMtvF,UAAY8jB,EAAI9jB,UACtBsvF,EAAMvvF,SAAW+jB,EAAI/jB,SACrBuvF,EAAM31G,OAAUuwB,GAAYmlF,EAASnlF,GAC9BolF,CACT,EAKAv/G,EAAAA,YAAA,WAA4C,IAAhB8gG,EAAWh/F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACxC,GAAIw8G,EAAA3nG,QAA4C,oBAA3B2nG,EAAA3nG,OAAOC,gBAC1B,OAAO0nG,EAAA3nG,OAAOC,gBAAgB,IAAI4Z,WAAWswE,IAE/C,MAAM,IAAI/8F,MAAM,yCAClB,8BChPA,IAAYm1N,4FAAZ,SAAYA,GACRA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,oBACH,CAJD,CAAYA,IAAWl5N,EAAAA,YAAXk5N,EAAW,KAKVl5N,EAAAA,kBAAoB,8BCAjCA,EAAQ,OAAqB,EAmB7BA,EAAQ,EAlBiB,CACvB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,MAEX,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,qaAEP,SAAY,syLCLhBA,EAAAA,aAAA+8C,EAkDA/8C,EAAAA,eAAA,SAA+Bk+D,EAAczhD,GAC3C,GAAiB,kBAANA,EAAgB,MAAM,IAAI1Y,MAAM,mCAC3C,IAAKsG,MAAMi3B,QAAQ48B,IAAOA,EAAGn8D,OAAS0a,EAAG,MAAM,IAAI1Y,MAAM,oCACzD,MAAM+tB,EAAM,GACZ,IAAIiiB,EAAM,GACV,IAAK,IAAI7oC,EAAI,EAAGA,EAAIgzD,EAAGn8D,OAAQmJ,IAC7B6oC,EAAIvsC,KAAK02D,EAAGhzD,IACR6oC,EAAIhyC,SAAW0a,IACjBqV,EAAItqB,KAAKusC,GACTA,EAAM,IAGV,OAAOjiB,CACT,EAEA9xB,EAAAA,SAAA,SAAyBm6B,GACvB,MAAM2kC,EAAQ/hB,EAAa5iB,IACrB,GAAE6iB,EAAE,IAAE8gB,EAAG,eAAEG,EAAc,OAAEQ,EAAM,cAAEL,EAAa,OAAEO,EAAM,EAAEliD,GAAMqiD,EAChEC,EAAiBD,EAAMX,WAAa,EACpCa,EAAaF,EAAMf,qBAAuBthD,EAAI,EAAI,EAClDwiD,EAAgBA,CAACh4C,EAAkBi4C,EAAiBC,KACxDl4C,EAASA,EAAOre,KAAI,CAACsC,EAAG4F,IAAMksC,EAAGv6C,IAAIyI,EAAG+yD,EAAekB,GAAKruD,MAExDouD,EAAQj4C,EAASA,EAAOre,KAAKsC,GAAMyzD,EAAOzzD,KACzC+b,EAAO+3C,GAAcL,EAAO13C,EAAO+3C,IAExC/3C,EAAS62C,EAAIl1D,KAAKsC,GAAMA,EAAE/B,QAAO,CAAC8hB,EAAK/f,EAAG4F,IAAMksC,EAAGv6C,IAAIwoB,EAAK+xB,EAAGoiB,KAAKl0D,EAAG+b,EAAOnW,MAAMksC,EAAG0H,SAGnF2a,EAAe,SAAsBp4C,GACzC,IAAK5c,MAAMi3B,QAAQra,IAAWA,EAAOllB,SAAW0a,EAC9C,MAAM,IAAI1Y,MAAM,iEAAiE0Y,MACnFwK,EAASA,EAAOre,KAAKsC,IACnB,GAAiB,kBAANA,EAAgB,MAAM,IAAInH,MAAM,yBAAyBmH,aAAaA,MACjF,OAAO8xC,EAAGpzC,OAAOsB,EAAE,IAErB,IAAIyJ,EAAQ,EAEZ,IAAK,IAAIzJ,EAAI,EAAGA,EAAI6zD,EAAgB7zD,IAAK+b,EAASg4C,EAAch4C,GAAQ,EAAMtS,KAE9E,IAAK,IAAIzJ,EAAI,EAAGA,EAAIkzD,EAAelzD,IAAK+b,EAASg4C,EAAch4C,GAAQ,EAAOtS,KAE9E,IAAK,IAAIzJ,EAAI,EAAGA,EAAI6zD,EAAgB7zD,IAAK+b,EAASg4C,EAAch4C,GAAQ,EAAMtS,KAE9E,GAAIA,IAAU8pD,EACZ,MAAM,IAAI16D,MAAM,gDAAgD4Q,YAAgB8pD,KAClF,OAAOx3C,CACT,EAGA,OADAo4C,EAAapB,eAAiBA,EACvBoB,CACT,EAnHA,MAAA/hB,EAAAt8C,EAAA,OAcA,SAAgB+7C,EAAa5iB,GAC3B,MAAM,GAAE6iB,EAAE,IAAE8gB,EAAKC,qBAAsBC,EAAKC,eAAgBC,GAAO/jC,GAC7D,WAAEgkC,EAAU,cAAEC,EAAa,UAAEC,EAAS,EAAE5hD,GAAM0d,GAEpD,EAAAmjB,EAAAyG,eAAc/G,GACd,IAAK,MAAM9xC,IAAK,CAAC,IAAK,aAAc,iBAClC,GAAuB,kBAAZivB,EAAKjvB,KAAoBmkB,OAAOivC,cAAcnkC,EAAKjvB,IAC5D,MAAM,IAAInH,MAAM,2BAA2BmH,KAAKivB,EAAKjvB,cAAcivB,EAAKjvB,OAI5E,IAAKb,MAAMi3B,QAAQw8B,IAAQA,EAAI/7D,SAAW0a,EAAG,MAAM,IAAI1Y,MAAM,8BAC7D,MAAMw6D,EAAOT,EAAIl1D,KAAK41D,IACpB,IAAKn0D,MAAMi3B,QAAQk9B,IAAWA,EAAOz8D,SAAW0a,EAC9C,MAAM,IAAI1Y,MAAM,4BAA4By6D,KAC9C,OAAOA,EAAO51D,KAAKsC,IACjB,GAAiB,kBAANA,EAAgB,MAAM,IAAInH,MAAM,6BAA6BmH,KACxE,OAAO8xC,EAAGpzC,OAAOsB,EAAE,GACnB,IAGJ,QAAYlJ,IAARg8D,GAAoC,mBAARA,EAC9B,MAAM,IAAIj6D,MAAM,gDAAgDi6D,KAElE,GAAIG,EAAa,IAAM,EAAG,MAAM,IAAIp6D,MAAM,oCAAoCo6D,KAC9E,MAAMM,EAASN,EAAaC,EAE5B,IAAK/zD,MAAMi3B,QAAQ48B,IAAOA,EAAGn8D,SAAW08D,EACtC,MAAM,IAAI16D,MAAM,mCAClB,MAAMk6D,EAAiBC,EAAGt1D,KAAKs1D,IAC7B,IAAK7zD,MAAMi3B,QAAQ48B,IAAOA,EAAGn8D,SAAW0a,EACtC,MAAM,IAAI1Y,MAAM,mCAAmCm6D,KACrD,OAAOA,EAAGt1D,KAAKsC,IACb,GAAiB,kBAANA,IAAmB8xC,EAAGx4B,QAAQtZ,GACvC,MAAM,IAAInH,MAAM,iCAAiCmH,KACnD,OAAO8xC,EAAGpzC,OAAOsB,EAAE,GACnB,IAGJ,IAAKmzD,IAAc,CAAC,EAAG,EAAG,GAAGre,SAASqe,GACpC,MAAM,IAAIt6D,MAAM,4BAA4Bs6D,KAC9C,MAAMK,EAAa94D,OAAOy4D,GAC1B,IAAIM,EAAUluD,IAAc,EAAA6sC,EAAAshB,OAAM5hB,EAAIvsC,EAAGiuD,GAKzC,OAHkB,IAAdL,EAAiBM,EAAUluD,GAAcusC,EAAG9b,IAAI8b,EAAG6hB,KAAKpuD,GAAIA,GACzC,IAAd4tD,IAAiBM,EAAUluD,GAAcusC,EAAG9b,IAAI8b,EAAG6hB,KAAK7hB,EAAG6hB,KAAKpuD,IAAKA,IAEvEvN,OAAO8J,OAAO,IAAKmtB,EAAMskC,SAAQE,SAAQV,iBAAgBH,IAAKS,GACvE,gCC/DAr7D,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQm5N,qBAAkB,EAC1B,MAAMC,EAAqBp4N,EAAQ,OAInC,MAAMm4N,UAAwBC,EAAmB9uC,iBAC7Cn8K,WAAAA,CAAYs8K,EAAsB4uC,EAAe3uC,GAC7CpkL,MAAMmkL,EAAsBC,GAC5BxqL,KAAKm5N,cAAgBA,CACzB,CAUAjxN,UAAAA,CAAWoZ,EAAiBnZ,EAAOC,GAC/B,OAAOpI,KAAKm5N,cAAczuC,SAASppK,EAAiBnZ,EAAOC,EAC/D,CASA+vN,WAAAA,CAAY72M,EAAiBnZ,GACzB,OAAOnI,KAAKm5N,cAAchB,YAAY72M,EAAiBnZ,EAAM1D,WACjE,CACA05G,aAAAA,CAAc/1G,GACV,OAAOpI,KAAKm5N,cAAcruC,YAAY1iL,EAC1C,EAEJtI,EAAQm5N,gBAAkBA,8HCpCnB,MAAMG,EAAoB,iDCFjCp2N,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,kCCAtDF,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ2hI,gBAAa,EACrB,MAAM5gI,EAAYC,EAAQ,OACpBqE,EAAUrE,EAAQ,MAuXxBhB,EAAQ2hI,WArXR,MACIxzH,WAAAA,CAAY/M,GAAqJ,IAAzIm4N,EAAmBz3N,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAAQ03N,EAAU13N,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAG23N,EAAM33N,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAK43N,EAAY53N,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,OAAQ63N,EAAc73N,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,WAAY83N,EAAY93N,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAE63N,EAAS/3N,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC3J9B,KAAK45N,oBAAqB,EAC1B55N,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,gBACrCtF,KAAK63J,cAAgB,KACrB73J,KAAKkB,WAAaA,EAClBlB,KAAKq5N,oBAAsB3zN,OAAO2zN,GAClCr5N,KAAKs5N,WAAaA,EAClBt5N,KAAKu5N,OAASA,EACdv5N,KAAKw5N,aAAeA,EACpBx5N,KAAKy5N,eAAiBA,EACtBz5N,KAAK25N,UAAYA,EACjB35N,KAAK05N,aAAeA,CACxB,CAOA,2BAAMG,CAAsBr4I,GACxB,MAAM7tD,QAAiB3zB,KAAKkB,WAAW44N,YAAY,WAAY,CAC3Dt4I,EACA,CACIrtD,SAAU,OACVwtD,mBAAoB,aACpBZ,WAAY,YACZa,SAAS,KAGjB,GAAsB,MAAlBjuD,EAAS9Q,MAAe,CACxB,IAA6B,QAAzB8Q,EAAS9Q,MAAM6rC,OAA4C,QAAzB/6B,EAAS9Q,MAAM6rC,OAA4C,QAAzB/6B,EAAS9Q,MAAM6rC,OAA4C,QAAzB/6B,EAAS9Q,MAAM6rC,KACrH,OAAO,KAEX,MAAM,IAAI7qD,MAAM8vB,EAAS9Q,MAAMoL,QACnC,CACA,OAAO0F,EAAShF,MACpB,CAOA,4BAAMorM,CAAuBC,GAEzB,MAAMrmM,QAAiB3zB,KAAKkB,WAAW44N,YAAY,yBAA0B,CACzE,CACI,YAAeE,EAAgBtxN,KAAI6I,GAAKA,EAAEoZ,aAC1C,QAAW,CACP,6BAA+B,MAGxC/H,OAAMrR,IAEL,GAAiB,MAAbA,EAAE0c,UAAoB1c,EAAE0c,QAAQ6xB,SAAS,WAAavuC,EAAE0c,QAAQ6xB,SAAS,WACzE,MAAO,CACHj9B,MAAO,CACH6rC,MAAO,MACPzgC,QAAS1c,EAAE0c,UAIvB,MAAM1c,CAAC,IAEX,GAAsB,MAAlBoiB,EAAS9Q,MAAe,CAExB,IAA6B,QAAzB8Q,EAAS9Q,MAAM6rC,OAA4C,QAAzB/6B,EAAS9Q,MAAM6rC,KACjD,MAAM,IAAI7qD,MAAM8vB,EAAS9Q,MAAMoL,SACnC,OAAO,IACX,CACA,OAAO0F,EAAShF,OAAOsrM,iBAC3B,CASA,gBAAMC,CAAWrzN,EAAI+a,GACjB,GAAgC,MAA5B5hB,KAAK25N,WAAWQ,SAChB,MAAM,IAAIt2N,MAAM,gCACL,MAAX+d,IACAA,EAAU,CAAC,GACf,MAAM6R,QAAgB1F,MAAM/tB,KAAK25N,UAAUQ,SAAU,CACjDhuM,OAAQ,OACRF,KAAM0B,KAAKC,UAAU,CACjB0kC,QAAS,MACTv9C,GAAI,EACJoX,OAAQ,kBACRkmC,OAAQ,CAACxrD,EAAGpC,SAAS,UAAW,IACrBmd,EACHuS,SAAU,aAGtB9H,QAAS,CACL,eAAgB,sBAGxB,GAAIoH,EAAQ2mM,GAAI,CAGZ,aAF6B3mM,EAAQjF,QAEfG,MAC1B,CACA,MAAM,IAAI9qB,YAAY4vB,EAAQrF,OAClC,CAQAisM,YAAAA,CAAav2G,GACT,MAAMw2G,EAASx2G,EAASx5F,aAAaw5F,EAASx5F,aAAazoB,OAAS,GACpE,IAAKy4N,EAAOt4N,UAAUue,OAAO1f,EAAU26B,cAAcx5B,WACjD,OAAO,KACX,GAAkE,aAA9DnB,EAAU05N,kBAAkBC,sBAAsBF,GAClD,OAAO,KACX,MAAMG,EAAgB55N,EAAU05N,kBAAkBG,eAAeJ,GACjE,OAAIG,EAAc1/K,SAASpwB,aAAe3qB,KAAK25N,WAAWjzN,QAC/C,KACJ+zN,EAAcz/K,QACzB,CAOA,yBAAM2/K,CAAoBn5I,GACtB,MAAMQ,QAAchiF,KAAK65N,sBAAsBr4I,GAC/C,GAAa,MAATQ,EACA,OAAO,KACX,MAAM44I,EAAiB54I,EAAMJ,QAAQ9mB,MAAKvpD,GAAsB,QAAjBA,EAAEspN,aAC3CC,EAAmD,GAAlCp1N,OAAOk1N,EAAe5/K,UAOvC+/K,EAFyC,UAF3BD,EAD+C,MAAlCp1N,OAAOs8E,EAAMg5I,WAAWn5N,SAKH,UAGtD,OAFA7B,KAAK6hB,OAAO0F,MAAM,gCAAkCi6D,EAAO,kBAAoBs5I,EAAer2N,SAAS,IACnG,wBAA0Bu9E,EAAMg5I,WAAWn5N,OAAS,kBAAoBk5N,GACrEA,CACX,CAOA,uBAAME,GACF,IAAIz5I,QAAaxhF,KAAKkB,WAAW6gF,UACjC,MAAMm5I,EAAQ,GACd,IAAK,IAAIlwN,EAAI,EAAGA,EAAIhL,KAAKu5N,OAAQvuN,IAC7BkwN,EAAM5zN,KAAKk6E,EAAOx2E,GAEtB,MAAMgiB,EAAW,GACjB,IAAK,IAAIhiB,EAAI,EAAGA,EAAIhL,KAAKs5N,WAAYtuN,IACjCgiB,EAAS1lB,KAAK,WACV,IAAId,EAAU,KACd,KAAkB,MAAXA,GAAiB,CACpB,GAAqB,IAAjB00N,EAAMr5N,OACN,MAAM,IAAIgC,MAAM,8BACpB,MAAM+8B,EAAQx3B,KAAKC,MAAMD,KAAK6N,SAAWikN,EAAMr5N,QACzCi4L,EAAaohC,EAAMt6L,GACzBs6L,EAAM1jN,OAAOopB,EAAO,GACpBp6B,QAAgBxG,KAAK26N,oBAAoB7gC,EAC7C,CACA,OAAOtzL,CACV,EAXa,IAalB,MAAM20N,QAAiB92N,QAAQoE,IAAIukB,GACnC,IAAItb,EAAM,KAIV,OAHAypN,EAASpsN,SAAQwC,GAAY,MAAPG,GAAeA,EAAMH,EAAIG,EAAMH,EAAI,IAC9C,MAAPG,GACA1R,KAAK6hB,OAAO0F,MAAM,8BAAgCi6D,EAAO,wBAA0B9vE,EAAIjN,SAAS,KAC7FiN,CACX,CAOA,iBAAMskD,CAAYgkK,GACd,GAA0B,QAAtBh6N,KAAKw5N,cAAiD,SAAtBx5N,KAAKw5N,cAA2Bx5N,KAAK45N,mBAAqB,CAE1F,MAAMrwI,QAAavpF,KAAK+5N,uBAAuBC,GAC/C,GAAY,MAARzwI,EAAc,CACd,IAAI6xI,EAAgB11N,OAAO6jF,EAAKvpF,KAAKy5N,iBAKrC,OAJI2B,EAAgB,QAChBA,EAAgB,OAChBA,EAAgBp7N,KAAKq5N,sBACrB+B,EAAgBp7N,KAAKq5N,qBAClB+B,CACX,CACAp7N,KAAK6hB,OAAOkH,KAAK,iHAEjB/oB,KAAK45N,oBAAqB,CAC9B,CACA,MAAOyB,EAAeC,SAAsBj3N,QAAQoE,IAAI,CACpDzI,KAAKu7N,mBACLv7N,KAAKkB,WAAWs6N,4BAA4B,CACxCC,uBAAwBzB,IACzBhxN,MAAK8kB,IACJ,IAAIktB,EAAW,EACf,IAAK,IAAIhwC,EAAI,GAAIA,GAAK,EAAGA,IAAK,CAC1B,MAAMrH,EAAOmqB,EAAKA,EAAKjsB,OAASmJ,EAAI,GACxB,MAARrH,IACAq3C,EAAW5xC,KAAKsI,IAAIspC,EAAUr3C,EAAK+3N,mBAC3C,CACA,OAAOh2N,OAAOs1C,EAAS,MAG/B,IAAIt5C,EAAM25N,EAOV,OANI35N,EAAM45N,IACN55N,EAAM45N,GACN55N,EAAM,QACNA,EAAM,OACNA,EAAM1B,KAAKq5N,sBACX33N,EAAM1B,KAAKq5N,qBACR33N,CACX,CAMA65N,gBAAAA,GACI,GAA0B,MAAtBv7N,KAAK63J,eAAyBhrI,KAAKC,MAAQ9sB,KAAK63J,cAActiC,UA3OtD,IA2O+E,CACvF,IAAI3mH,EAAM,CACN2mH,UAAW1oG,KAAKC,MAChBtmB,QAAS,MAEboI,EAAIpI,QAAUxG,KAAKi7N,oBAAoBr4M,OAAMrR,IAGzC,MAFIvR,KAAK63J,gBAAkBjpJ,IACvB5O,KAAK63J,cAAgB,MACnBtmJ,CAAC,IAEXvR,KAAK63J,cAAgBjpJ,CACzB,CACA,OAAO5O,KAAK63J,cAAcrxJ,OAC9B,CAQA,gBAAMs2E,CAAWk9I,GACb,IAAI2B,QAA6B37N,KAAKg2D,YAAYgkK,GACf,MAA/Bh6N,KAAK25N,WAAWiC,cAChBD,EAAuB37N,KAAK25N,UAAUiC,YAAYD,IACtD,IAAIj6N,EAAMi6N,EAAqBl3N,SAAS,IAWxC,OAVyB,MAArBzE,KAAK05N,aACLh4N,GAAO,IAAM1B,KAAK05N,aAAaiC,GAG/Bj6N,GAAO,KAEP1B,KAAK25N,WAAWjzN,UAChBhF,GAAO,IAAM1B,KAAK25N,UAAUjzN,SAEhC1G,KAAK6hB,OAAO0F,MAAM,iCAAmC7lB,GAC9CA,CACX,CAQAm6N,cAAAA,CAAeC,EAAct1N,GAAkC,IAAzBu1N,IAAgBn6N,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAClD,GAAe,MAAX4E,EACA,OAAO,GACX,MAAMu7K,EAAUv7K,EAAQ+B,MAAM,KAC1Bw5K,EAAQlgL,OAAS,IACjB2E,EAAUu7K,EAAQ,IAEtB,MAAM/pK,EAAMxR,EAAQ+B,MAAM,KACpByzN,EAAUt2N,OAAOsS,EAAI,IAE3B,OADkB+jN,EAAmBr2N,OAAOsS,EAAI,IAAM,IAClCgkN,EAAUt2N,OAAOo2N,GAAgB,QACzD,CASAG,iBAAAA,CAAkBp1N,EAAIq1N,EAAe11N,GACjC,GAAe,MAAXA,EACA,OAAO,EACX,MAAMu7K,EAAUv7K,EAAQ+B,MAAM,KAC1Bw5K,EAAQlgL,OAAS,IACjB2E,EAAUu7K,EAAQ,IAED,MAAjBm6C,GAAyBA,EAAgB,GACzCr1N,EAAGtE,IAAI1B,EAAU0pB,qBAAqB4xM,oBAAoB,CACtD/+E,MAAO8+E,KAGf,MAAMlkN,EAAMxR,EAAQ+B,MAAM,KAC1B,GAAIyP,EAAInW,OAAS,OAEZ,CACD,IAAIH,EAAMgE,OAAOsS,EAAI,IACrB,GAAIA,EAAInW,OAAS,EAAG,CAChB,MAAMu6N,EAAY12N,OAAOsS,EAAI,IACvBqkN,EAAW32N,OAAOw2N,GAAkB,IAAS/2N,EAAQ+iB,cAAciC,uBAAuBtjB,IAEhGnF,GADuB06N,EAAY12N,OAAO,KAAW22N,CAEzD,CACAx1N,EAAGtE,IAAI1B,EAAU0pB,qBAAqB+xM,oBAAoB,CACtDC,cAAe76N,IAEvB,CACJ,CASA86N,eAAAA,CAAgB31N,EAAIq1N,EAAe11N,GAC/B,GAAe,MAAXA,EACA,OAAO,EACX,MAAMu7K,EAAUv7K,EAAQ+B,MAAM,KAC1Bw5K,EAAQlgL,OAAS,IACjB2E,EAAUu7K,EAAQ,IAGtB,MAAM/pK,EAAMxR,EAAQ+B,MAAM,KAC1B,GAAIyP,EAAInW,OAAS,EAAjB,CACI,MAAMw6N,EAAW32N,OAAOw2N,GAAkB,KAAU/2N,EAAQ+iB,cAAciC,uBAAuBtjB,GAAM,IACjGm1N,EAAUt2N,OAAOsS,EAAI,IACrBokN,EAAY12N,OAAOsS,EAAI,IACvBykN,EAAe,IAAI57N,EAAUiE,UAAUkT,EAAI,IACjDnR,EAAGtE,IAAI1B,EAAU26B,cAAcqf,SAAS,CACpCC,WAAYj0C,EAAG4jB,SACfswB,SAAU0hL,EACVzhL,SAAUohL,EAAaC,EAAWL,EAAUt2N,OAAO,OAG3D,MACJ,CAQAg3N,QAAAA,CAAS71N,EAAI+a,GACT,MAAMkiG,EAAWjjH,EAAUyB,YAAYkC,KAAKqC,GACtC81N,EAAU38N,KAAKq6N,aAAav2G,GAClC,OAAe,MAAX64G,EACO,MACX38N,KAAK6hB,OAAOwD,KAAK,gDAAkDy+F,EAAS7/G,UAAY,SAAW04N,EAAQl4N,SAAS,KAC7GzE,KAAKk6N,WAAWrzN,EAAI+a,GAC/B,iCChXS,IAAIipC,EAAE/pD,EAAQ,OAASwQ,EAAEgxB,OAAOC,IAAI,iBAAiB/wB,EAAE8wB,OAAOC,IAAI,kBAAkBjqB,EAAEtV,OAAO4H,UAAU4L,eAAejG,EAAEs6C,EAAEyiC,mDAAmDV,kBAAkBr2E,EAAE,CAACvM,KAAI,EAAGwhF,KAAI,EAAGC,QAAO,EAAGC,UAAS,GAChP,SAAStyE,EAAEhI,EAAEX,EAAEkgC,GAAG,IAAIz/B,EAAEqE,EAAE,CAAC,EAAEhE,EAAE,KAAKigB,EAAE,KAAiF,IAAItgB,UAAhF,IAASy/B,IAAIp/B,EAAE,GAAGo/B,QAAG,IAASlgC,EAAEzG,MAAMuH,EAAE,GAAGd,EAAEzG,UAAK,IAASyG,EAAE+6E,MAAMh6D,EAAE/gB,EAAE+6E,KAAc/6E,EAAE6H,EAAExB,KAAKrG,EAAES,KAAKqF,EAAEC,eAAetF,KAAKqE,EAAErE,GAAGT,EAAES,IAAI,GAAGE,GAAGA,EAAEy6E,aAAa,IAAI36E,KAAKT,EAAEW,EAAEy6E,kBAAe,IAASt2E,EAAErE,KAAKqE,EAAErE,GAAGT,EAAES,IAAI,MAAM,CAAC46E,SAASx6E,EAAE3J,KAAKyJ,EAAEpH,IAAIuH,EAAEi6E,IAAIh6D,EAAEm5D,MAAMp1E,EAAEw2E,OAAOx7E,EAAE6kC,QAAQ,CAACt1C,EAAQmtF,SAASz7E,EAAE1R,EAAQ88N,IAAIxjN,EAAEtZ,EAAQ+8N,KAAKzjN,gCCT1WpW,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQg9N,8BAA2B,EACnC,MAAM90N,EAAsBlH,EAAQ,OAC9BqE,EAAUrE,EAAQ,OACxB,MAAMg8N,UAAiC90N,EAAoBC,kBACvDgG,WAAAA,CAAY6vG,GACR13G,MAAM03G,EADel8G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,iCAAoDA,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAEhF,CACA,gBAAMoG,CAAWC,EAAOC,GACpB,MAAMurB,QAAiB,EAAIxuB,EAAQ44G,SAAS/9G,KAAKusB,IAAM,YAAcpkB,EAAMG,OAAS,cAAetI,KAAKg+G,mBAAoB51G,GAC5H,OAAO1C,OAAO0D,KAAKC,MAAkC,KAA5BsqB,EAASopM,OAAOtgE,IAAIj0J,OACjD,CACA,mBAAM21G,CAAc/1G,GAEhB,aADuB,EAAIjD,EAAQ44G,SAAS/9G,KAAKusB,IAAM,kCAAmCvsB,KAAKg+G,mBAAoB51G,IACnG20N,OAAOC,IAAIx0N,MAAQ,GACvC,EAEJ1I,EAAQg9N,yBAA2BA,kWCjBnC,MAAAh+M,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAIA8wD,EAAA9wD,EAAA,OAiCA,SAAgBm8N,EAAkB3kH,GAC9B,OAAO,EAAAx5F,EAAAY,QAAoB,EAAC,EAAAX,EAAA2T,KAAI,UAAU,EAAA3T,EAAA2T,KAAI,eAAe,EAAA5T,EAAA8+G,KAAI,2BAA4BtlB,EACjG,CAGA,SAAgB4kH,EAAaC,EAA0BC,GACnD,MAAMtG,EAAyBqG,EAAYrG,uBAC3C,GAA+B,IAA3BA,GAAgCsG,IAAiB13N,OAAO,GACxD,OAAOA,OAAO,GACX,CACH,MACM23N,GADYD,EAAe13N,OAAOoxN,GACZh3N,EAAAw9N,oBAAsB53N,OAAO,IAAM5F,EAAAw9N,oBACzD57N,EAAM27N,EAASF,EAAYpG,WAAaoG,EAAYpG,WAAasG,EACvE,OAAO33N,OAAOhE,GAEtB,CAcA,SAAgB67N,EAAYC,EAAsCC,GAC9D,OAAIA,GAASD,EAAkBE,iBAAiBD,MACrCD,EAAkBE,iBAElBF,EAAkBG,gBAEjC,CAlEa79N,EAAAA,qBAAuB,IACvBA,EAAAA,oBAAsB4F,OAAO5F,EAAA89N,sBA8B1C99N,EAAAA,kBAAAm9N,EAKAn9N,EAAAA,aAAAo9N,EAaap9N,EAAAA,yBAA0B,EAAAgf,EAAAY,QAA0B,EAC7D,EAAAX,EAAApa,WAAU,+BACV,EAAAoa,EAAApa,WAAU,8BACV,EAAAoa,EAAA2T,KAAI,kBACJuqM,EAAkB,oBAClBA,EAAkB,sBAGTn9N,EAAAA,yBAA2BA,EAAA+9N,wBAAwB39M,KAGhEpgB,EAAAA,YAAAy9N,EASAz9N,EAAAA,kBAAA,SAAkC09N,EAAsCC,EAAeL,GAEnF,OAAOF,EADaK,EAAYC,EAAmBC,GAClBL,EACrC,EAQat9N,EAAAA,yBAA0B,EAAAgf,EAAAY,QAA0B,EAAC,EAAAX,EAAA2T,KAAI,oBACzD5yB,EAAAA,yBAA2BA,EAAAg+N,wBAAwB59M,KAEhEpgB,EAAAA,qBAAA,SAAqCuB,GACjC,MAAM0wD,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAc8rK,kBAAmB18N,EAAK8wD,SAC7E,OAAsB,OAAlBJ,EACOjyD,EAAA+9N,wBAAwBp+M,OAAOsyC,GAE/B,IAEf,EAEAjyD,EAAAA,qBAAA,SAAqC0yB,GACjC,MAAMu/B,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAc+rK,kBAAmBxrM,EAAQ2/B,SAChF,OAAsB,OAAlBJ,EACOjyD,EAAAg+N,wBAAwBr+M,OAAOsyC,GAE/B,IAEf,mH9MlGA,MAAA27G,EAAA5sK,EAAA,OACA2uB,EAAA3uB,EAAA,OAIMojH,EAA2B,IAAI5sG,YAAY,CAC/C,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,aAKhF6sG,EAA4B,IAAI7sG,YAAY,CAChD,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,aAOhF8sG,EAA2B,IAAI9sG,YAAY,IACjD,MAAa+sG,UAAeqpD,EAAA99I,OAY1B3hB,WAAAA,GACE7H,MAAM,GAAI,GAAI,GAAG,GAVT,KAAAmqC,EAA2B,EAAf4zE,EAAU,GACtB,KAAA3zE,EAA2B,EAAf2zE,EAAU,GACtB,KAAA1zE,EAA2B,EAAf0zE,EAAU,GACtB,KAAAzzE,EAA2B,EAAfyzE,EAAU,GACtB,KAAAp/D,EAA2B,EAAfo/D,EAAU,GACtB,KAAAp5B,EAA2B,EAAfo5B,EAAU,GACtB,KAAAl5D,EAA2B,EAAfk5D,EAAU,GACtB,KAAAh5B,EAA2B,EAAfg5B,EAAU,EAIhC,CACUv4G,GAAAA,GACR,MAAM,EAAE2kC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEqU,EAAC,EAAEgmC,EAAC,EAAE9/B,EAAC,EAAEkgC,GAAMnrF,KACnC,MAAO,CAACuwC,EAAGC,EAAGC,EAAGC,EAAGqU,EAAGgmC,EAAG9/B,EAAGkgC,EAC/B,CAEU70E,GAAAA,CACRi6B,EAAWC,EAAWC,EAAWC,EAAWqU,EAAWgmC,EAAW9/B,EAAWkgC,GAE7EnrF,KAAKuwC,EAAQ,EAAJA,EACTvwC,KAAKwwC,EAAQ,EAAJA,EACTxwC,KAAKywC,EAAQ,EAAJA,EACTzwC,KAAK0wC,EAAQ,EAAJA,EACT1wC,KAAK+kD,EAAQ,EAAJA,EACT/kD,KAAK+qF,EAAQ,EAAJA,EACT/qF,KAAKirD,EAAQ,EAAJA,EACTjrD,KAAKmrF,EAAQ,EAAJA,CACX,CACUt6D,OAAAA,CAAQN,EAAgBwG,GAEhC,IAAK,IAAI/rB,EAAI,EAAGA,EAAI,GAAIA,IAAK+rB,GAAU,EAAGqtF,EAASp5G,GAAKulB,EAAK+zF,UAAUvtF,GAAQ,GAC/E,IAAK,IAAI/rB,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAC5B,MAAMu5G,EAAMH,EAASp5G,EAAI,IACnBw5G,EAAKJ,EAASp5G,EAAI,GAClBy5G,GAAK,EAAAh1F,EAAA6uF,MAAKiG,EAAK,IAAK,EAAA90F,EAAA6uF,MAAKiG,EAAK,IAAOA,IAAQ,EAC7C71C,GAAK,EAAAj/C,EAAA6uF,MAAKkG,EAAI,KAAM,EAAA/0F,EAAA6uF,MAAKkG,EAAI,IAAOA,IAAO,GACjDJ,EAASp5G,GAAM0jE,EAAK01C,EAASp5G,EAAI,GAAKy5G,EAAKL,EAASp5G,EAAI,IAAO,CACjE,CAEA,IAAI,EAAEulC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEqU,EAAC,EAAEgmC,EAAC,EAAE9/B,EAAC,EAAEkgC,GAAMnrF,KACjC,IAAK,IAAIgL,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MACM05G,EAAMv5B,IADG,EAAA17D,EAAA6uF,MAAKv5D,EAAG,IAAK,EAAAt1B,EAAA6uF,MAAKv5D,EAAG,KAAM,EAAAt1B,EAAA6uF,MAAKv5D,EAAG,MACzB,EAAA2oH,EAAAh+I,KAAIq1B,EAAGgmC,EAAG9/B,GAAKi5D,EAASl5G,GAAKo5G,EAASp5G,GAAM,EAE/D25G,IADS,EAAAl1F,EAAA6uF,MAAK/tE,EAAG,IAAK,EAAA9gB,EAAA6uF,MAAK/tE,EAAG,KAAM,EAAA9gB,EAAA6uF,MAAK/tE,EAAG,MAC7B,EAAAm9H,EAAA/9I,KAAI4gB,EAAGC,EAAGC,GAAM,EACrC06C,EAAIlgC,EACJA,EAAI8/B,EACJA,EAAIhmC,EACJA,EAAKrU,EAAIg0E,EAAM,EACfh0E,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAKm0E,EAAKC,EAAM,CAClB,CAEAp0E,EAAKA,EAAIvwC,KAAKuwC,EAAK,EACnBC,EAAKA,EAAIxwC,KAAKwwC,EAAK,EACnBC,EAAKA,EAAIzwC,KAAKywC,EAAK,EACnBC,EAAKA,EAAI1wC,KAAK0wC,EAAK,EACnBqU,EAAKA,EAAI/kD,KAAK+kD,EAAK,EACnBgmC,EAAKA,EAAI/qF,KAAK+qF,EAAK,EACnB9/B,EAAKA,EAAIjrD,KAAKirD,EAAK,EACnBkgC,EAAKA,EAAInrF,KAAKmrF,EAAK,EACnBnrF,KAAKsW,IAAIi6B,EAAGC,EAAGC,EAAGC,EAAGqU,EAAGgmC,EAAG9/B,EAAGkgC,EAChC,CACUp6D,UAAAA,GACRqzF,EAASnzF,KAAK,EAChB,CACAY,OAAAA,GACE7xB,KAAKsW,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9BtW,KAAKqwB,OAAOY,KAAK,EACnB,EA3EFnxB,EAAAA,OAAAukH,EAiFA,MAAM45G,UAAe55G,EASnBp2G,WAAAA,GACE7H,QATQ,KAAAmqC,GAAI,WACJ,KAAAC,EAAI,UACJ,KAAAC,EAAI,UACJ,KAAAC,GAAI,UACJ,KAAAqU,GAAI,QACJ,KAAAgmC,EAAI,WACJ,KAAA9/B,EAAI,WACJ,KAAAkgC,GAAI,WAGZnrF,KAAK+vB,UAAY,EACnB,EAIWjwB,EAAAA,QAAgC,EAAA2vB,EAAAm1F,kBAAgB,IAAM,IAAIP,IAE1DvkH,EAAAA,QAAgC,EAAA2vB,EAAAm1F,kBAAgB,IAAM,IAAIq5G,0G+MvIvE,MAAAjsM,EAAAlxB,EAAA,OACAojJ,EAAApjJ,EAAA,OACAqjJ,EAAArjJ,EAAA,OAEAy/D,EAAAz/D,EAAA,OAEAhB,EAAAA,cAAA,MAKEmO,WAAAA,CAAYw2I,EAA0By5E,GACpC,IAAMz5E,IAAoBy5E,EACxB,MAAM,IAAI/5E,EAAAQ,uBAAuB,mDAEnC,GAAgC,kBAArBF,EACT,KAAM,+CAGR,GADAA,EAAmBA,EAAiB9vI,eAC/BuvI,EAAAvtC,cAAcngG,eAAeiuI,GAChC,KAAM,4BAER,KAAKG,UAAY,MACjB,KAAKC,aAAeX,EAAAvtC,cAAc8tC,GAClC,KAAKy5E,aAAeA,CACtB,CAEAr5N,MAAAA,CAAOsD,GACL,MAAqB,kBAAVA,EACF,KAAKg2N,cAAch2N,GAAO,GACP,kBAAVA,GACT,KAAKi2N,eAAej2N,GAAO,EAItC,CAEAk2N,WAAAA,CAAYl2N,GACV,MAAqB,kBAAVA,EACF,KAAKg2N,cAAch2N,GAAO,GACP,kBAAVA,EACT,KAAKi2N,eAAej2N,GAAO,GAE3B9D,QAAQC,SAAQ,EAE3B,CAIA65N,aAAAA,CAAch2N,EAAekH,GAE3B,MAAM4iB,EAAa9pB,EAAMI,MAAM,KAGzB28I,EAAejzH,EAAW,GAAK,IAAMA,EAAW,GAEhDqsM,EAAiBn5E,IAErB,MAAMo5E,EAAoB,KAAK15E,aAAa25E,cAAcvsM,EAAW,IAGrE,OAAO,KAAK4yH,aAAa45E,WAAWt5E,EAAkBo5E,EAAmB,KAAKL,aAAa,EAG7F,GAAI7uN,EACF,OAAO,EAAAkxD,EAAA+kF,iBAAgBJ,GAAcl8I,MAAKm8I,GACxCm5E,EAAcn5E,KAEX,CACL,MAAMA,GAAmB,EAAA5kF,EAAA45E,YAAW+K,GACpC,OAAOo5E,EAAcn5E,GAEzB,CAIAi5E,cAAAA,CAAej2N,EAAoBkH,GACjC,MAAM61I,EAAe,CAAC/8I,EAAc,OAAE+0D,KAAK,KAAMlrC,EAAU7R,OAAOhY,EAAe,UAAI+0D,KAAK,KAC1F,IAAIwhK,GAAW,EAEf,MAAMJ,EAAiBn5E,IACrBh9I,EAAiB,UAAEO,KAAKzE,IACtB,MAAMs6N,EAAoB,KAAK15E,aAAa25E,cAAcv6N,GAChC,KAAK4gJ,aAAa45E,WAC1Ct5E,EACAo5E,EACA,KAAKL,gBAGLQ,GAAW,MAGRA,GAGT,GAAIrvN,EACF,OAAO,EAAAkxD,EAAA+kF,iBAAgBJ,GAAcl8I,MAAKm8I,GACxCm5E,EAAcn5E,KAEX,CACL,MAAMA,GAAmB,EAAA5kF,EAAA45E,YAAW+K,GACpC,OAAOo5E,EAAcn5E,GAEzB,iCCtGFniJ,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQgkG,wBAAqB,EAC7B,MAAM7+F,EAASnE,EAAQ,OACjBqE,EAAUrE,EAAQ,OAClBw5J,EAAuBx5J,EAAQ,OAC/By5J,EAAmBz5J,EAAQ,OAC3BioF,EAAiBjoF,EAAQ,OACzB+iG,EAAS,CACX,CAAEjyF,KAAM,YAAajK,KAAM,QAC3B,CAAEiK,KAAM,UAAWjK,KAAM,cAE7B,MAAMm8F,UAA2Bw2D,EAAqBE,mBAWlD32D,MAAAA,CAAOngG,EAAQ4C,EAAUa,EAASw3N,GAC9B,OAAO,IAAIpkE,EAAiBl+E,eAAe34E,EAAQ1D,KAAKw6E,KAAMx6E,KAAKwhB,SAASk5I,oBAAoBtuJ,OAAO9F,EAASg+D,iBAAkBn9D,IAAU,EAAIozJ,EAAiBj+E,gBAAgBh2E,EAASk7D,MAAQsiC,EAAmB62D,SAASikE,eAAiB96H,EAAmB62D,SAASkkE,OAAQF,GACvR,CAWAG,mBAAAA,CAAoBC,EAAQz4N,EAAUkiB,EAASvkB,GAC3C,OAAO,IAAIs2J,EAAiBl+E,eAAe0iJ,EAAQ/+N,KAAKw6E,KAAMx6E,KAAKwhB,SAASk5I,oBAAoBskE,mBAAmB14N,EAASg+D,iBAAkBrgE,EAAWyB,OAAO8iB,IAAWliB,EAASk7D,MAAQsiC,EAAmB62D,SAASikE,eAAiB96H,EAAmB62D,SAASkkE,OACzQ,CACA5wN,WAAAA,CAAYusE,GACRp0E,MAAMo0E,EACV,CACA,oBAAM0qB,CAAexhG,EAAQ4C,EAAUi+F,GACnC,MACM06H,EAAc71N,KAAKC,MAAMwjB,KAAKC,MAAQ,KAAQy3E,EAC9CtgG,QAAkBjE,KAAKw6E,KAAK4qB,WAAWliB,iBAAiBx/E,EAAQmgG,EAAQ,SAAU,CACpF,YAAa,KAAOv9F,EAAS0I,gBAC7B,SAAW,EAAI7J,EAAQgmD,OAAO8zK,KAElC,MAAO,CACH1rN,OAPe,SAQfiV,QAASy2M,EAAYx6N,SAAS,IAC9BR,UAAWA,EAEnB,CACA,sBAAM0gG,CAAiBr+F,EAAUkiB,EAASjV,EAAQtP,GAC9C,GAAe,WAAXsP,EACA,MAAM,IAAItO,EAAOse,2BAA2B,kBAChD,MAAMurG,EAAkBppH,OAAO8iB,GAG/B,GADmBsmG,EADMppH,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,MACCpnB,OAAO1F,KAAKw6E,KAAK+oB,iBAEtE,MAAM,IAAIt+F,EAAOse,2BAA2B,0BAKhD,UAJoBvjB,KAAKw6E,KAAK4qB,WAAW9hB,iBAAiBr/E,EAAWqC,EAASs7D,QAASiiC,EAAQ,SAAU,CACrG,YAAa,KAAOv9F,EAAS0I,gBAC7B,SAAW,EAAI7J,EAAQgmD,OAAO2jE,KAG9B,MAAM,IAAI7pH,EAAOse,2BAA2B,sBAEhD,OAAO,IACX,CAUA,eAAMksC,CAAU/rD,EAAQ4C,EAAU+vB,EAAO7vB,EAASD,GAC9C,MAAMs7D,EAAgB7hE,KAAKw6E,KAAKkpB,wBAAwBp9F,EAASu7D,cAAcjtD,eAC/E,GAAqB,MAAjBitD,EACA,MAAM,IAAIh+D,MAAM,0BACpB,GAAIwyB,UAAgB,EAAIlxB,EAAQke,iBAAgB,IAAMrjB,KAAKw6E,KAAKgrB,oBAAoBl/F,EAASg8D,QAAQ79D,WAAY6B,IAAWtG,KAAKupB,aAC7H,MAAM,IAAItkB,EAAO61J,0BAA0B,uBAE/Ct0J,IAAYA,QAAgBxG,KAAKw6E,KAAKqC,KAAKC,cAC3C,MAAM,YAAE51E,EAAW,QAAEC,SAAkB06D,EAAcx7D,WAAW3C,EAAQ4C,EAAUC,EAAaC,GACzFw2E,EAASh9E,KAAK6jG,OAAOngG,EAAQ4C,EAAUa,EAAS06D,EAAcr6D,OAAOlB,IAG3E,aAFM02E,EAAOS,SAASv2E,EAAaV,GACnCxG,KAAK6hB,OAAO0F,MAAM,mDAAqDjhB,EAAS2mD,gBACzE/lD,CACX,CAYA,gCAAMwoD,CAA2BhsD,EAAQ4C,EAAUkiB,EAASjV,EAAQtP,EAAWoyB,EAAO7vB,GAClF,GAAI6vB,UAAgB,EAAIlxB,EAAQke,iBAAgB,IAAMrjB,KAAKw6E,KAAK6qB,WAAW/+F,IAAWtG,KAAKupB,aACvF,MAAM,IAAItkB,EAAO61J,0BAA0B,iCAEzC,EAAI31J,EAAQke,iBAAgB,IAAMrjB,KAAK2kG,iBAAiBr+F,EAAUkiB,EAASjV,EAAQtP,IAAYjE,KAAKupB,aAAchY,GAAMA,aAAatM,EAAOse,6BAClJ,MAAMy5D,EAASh9E,KAAK8+N,oBAAoBp7N,EAAQ4C,EAAUkiB,EAASmF,KAAKwE,MAAMluB,IAI9E,OAHAuC,IAAYA,QAAgBxG,KAAKw6E,KAAKqC,KAAKC,cAC3C98E,KAAK6hB,OAAO0F,MAAM,oEAAsEjhB,EAAS2mD,eAC7F,iBAAmBzkC,EAAU,eAAiBvkB,GAC3C,OAAO+4E,EAAOn2E,GAAGL,GAC5B,CAKA,kBAAMsnD,CAAaxnD,EAAUE,GAEzB,OADAA,IAAYA,QAAgBxG,KAAKw6E,KAAKqC,KAAKC,cACpCiM,EAAeS,aAAaivE,UAAUnyJ,EAASk7D,MAAQsiC,EAAmB62D,SAASikE,eAAe92N,GAAKg8F,EAAmB62D,SAASkkE,OAAO/2N,GAAItB,EACzJ,EAEJ1G,EAAQgkG,mBAAqBA,EAC7BA,EAAmB62D,SAAW,CAC1BkkE,OAAQ,CAAE/2N,GAAI,IAAKy0E,GAAI,GACvBqiJ,eAAgB,CAAE92N,GAAI,KAAMy0E,GAAI,+GChIpCv5E,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQo/N,2BAAwB,EAChC,MAAMj6N,EAASnE,EAAQ,OACjByC,EAAWzC,EAAQ,OACzB,MAAMo+N,EACFjxN,WAAAA,CAAYW,GACR5O,KAAK4/E,UAAYhxE,EAAIgxE,UACrB5/E,KAAKkyB,OAAStjB,EAAIsjB,OAClBlyB,KAAKm/N,mBAAqBvwN,EAAIuwN,mBAC9Bn/N,KAAK4+E,YAAchwE,EAAIgwE,YACvB5+E,KAAKo/N,oBAAsBxwN,EAAIwwN,mBACnC,CACAzgJ,cAAAA,GACI,OAAO3+E,KAAK4+E,WAChB,CACAivG,YAAAA,GACI,OAAOtqL,EAASgB,OAAOC,KAAKxE,KAAK4/E,UACrC,CACAy/I,SAAAA,GACI,OAAOr/N,KAAKkyB,MAChB,CACAotM,qBAAAA,GACI,OAAOt/N,KAAKm/N,kBAChB,CACAI,sBAAAA,GACI,OAAOv/N,KAAKo/N,mBAChB,CAOAI,0BAAAA,GACI,MAAMJ,EAAsB,IAAIp/N,KAAKo/N,qBACrC,IAAK,IAAIp0N,EAAI,EAAGA,EAAI,GAAIA,IACpBo0N,EAAoBp0N,EAAI,GAAKo0N,EAAoBp0N,GAGrD,OADAo0N,EAAoB,GAAKp/N,KAAKkyB,OAAOqjG,UAC9B6pG,CACX,CAOAK,oBAAAA,CAAqBxvD,GACjB,MAAMrwF,EAAY,IAAI5/E,KAAK4/E,WAE3B,OADA36E,EAAOyqK,oBAAoBK,WAAWnwF,EAAW,IAAI36E,EAAOyqK,oBAAoBS,cAAcF,KACvFrwF,CACX,CAOA8/I,6BAAAA,CAA8BC,GAC1B,MAAM/gJ,EAAc5+E,KAAK4+E,YAAc,EACvC,IAAIugJ,EAAqBn/N,KAAKm/N,mBAI9B,OAHIvgJ,EAAc35E,EAAOyqK,oBAAoBY,yBAA2B,IACpE6uD,EAAqBQ,GAElBR,CACX,CACAtyC,WAAAA,CAAY36J,GACR,OAAO,IAAIgtM,EAAsB,CAC7Bt/I,UAAW5/E,KAAKy/N,qBAAqBvtM,EAAO+9I,OAC5CmvD,oBAAqBp/N,KAAKw/N,6BAC1B5gJ,YAAa5+E,KAAK4+E,YAAc,EAChCugJ,mBAAoBn/N,KAAK0/N,8BAA8BxtM,EAAOqjG,WAC9DrjG,UAER,EAEJpyB,EAAQo/N,sBAAwBA,iHCtDhCp/N,EAAAA,QAAA0hD,EAIA1hD,EAAAA,OAAA0lD,EAIA1lD,EAAAA,MAAA,SAAsB4uJ,EAAexrJ,GACnC,GAAqB,mBAAVA,EAAqB,MAAM,IAAIW,MAAM6qJ,EAAQ,0BAA4BxrJ,EACtF,EASApD,EAAAA,WAAA8+C,EAUA9+C,EAAAA,oBAAAmlD,EAKAnlD,EAAAA,YAAA87F,EAiBA97F,EAAAA,WAAA4gD,EAmBA5gD,EAAAA,gBAAA,SAAgCq+C,GAC9B,OAAOy9C,EAAYh9C,EAAWT,GAChC,EACAr+C,EAAAA,gBAAA,SAAgCq+C,GAE9B,OADAqH,EAAOrH,GACAy9C,EAAYh9C,EAAWtuB,WAAW9rB,KAAK25C,GAAOvwC,WACvD,EAEA9N,EAAAA,gBAAA++C,EAGA/+C,EAAAA,gBAAA,SAAgCyQ,EAAoB4B,GAClD,OAAO0sC,EAAgBtuC,EAAG4B,GAAKvE,SACjC,EAEA9N,EAAAA,mBAAA,SAAmCyQ,GACjC,OAAOmwC,EAAWuE,EAAoB10C,GACxC,EAWAzQ,EAAAA,YAAA,SAA4B4uJ,EAAe5nJ,EAAU6nJ,GACnD,IAAI/8H,EACJ,GAAmB,kBAAR9qB,EACT,IACE8qB,EAAM8uB,EAAW55C,EACnB,CAAE,MAAOyK,GACP,MAAM,IAAI1N,MAAM6qJ,EAAQ,6CAA+Cn9I,EACzE,KACK,KAAIiwC,EAAQ16C,GAKjB,MAAM,IAAIjD,MAAM6qJ,EAAQ,qCAFxB98H,EAAMtB,WAAW9rB,KAAKsC,EAGxB,CACA,MAAMqL,EAAMyf,EAAI/vB,OAChB,GAA8B,kBAAnB8sJ,GAA+Bx8I,IAAQw8I,EAChD,MAAM,IAAI9qJ,MAAM6qJ,EAAQ,cAAgBC,EAAiB,kBAAoBx8I,GAC/E,OAAOyf,CACT,EAKA9xB,EAAAA,YAAAuK,EAiBAvK,EAAAA,WAAA,SAA2B2Q,EAAeS,GACxC,GAAIT,EAAE5O,SAAWqP,EAAErP,OAAQ,OAAO,EAClC,IAAI8tC,EAAO,EACX,IAAK,IAAI3kC,EAAI,EAAGA,EAAIyF,EAAE5O,OAAQmJ,IAAK2kC,GAAQl/B,EAAEzF,GAAKkG,EAAElG,GACpD,OAAgB,IAAT2kC,CACT,EASA7vC,EAAAA,YAAA,SAA4BkS,GAC1B,GAAmB,kBAARA,EAAkB,MAAM,IAAInO,MAAM,mBAC7C,OAAO,IAAIysB,YAAW,IAAImnD,aAAct3D,OAAOnO,GACjD,EAKAlS,EAAAA,QAAAw+C,EASAx+C,EAAAA,SAAA,SAAyB4uJ,EAAen+I,EAAWmB,EAAaC,GAM9D,IAAK2sC,EAAQ/tC,EAAGmB,EAAKC,GACnB,MAAM,IAAI9N,MAAM,kBAAoB6qJ,EAAQ,KAAOh9I,EAAM,WAAaC,EAAM,SAAWpB,EAC3F,EAQAzQ,EAAAA,OAAA,SAAuByQ,GACrB,IAAI4B,EACJ,IAAKA,EAAM,EAAG5B,EAAIsxC,EAAKtxC,IAAMguC,EAAKpsC,GAAO,GACzC,OAAOA,CACT,EAOArS,EAAAA,OAAA,SAAuByQ,EAAW4f,GAChC,OAAQ5f,GAAK7K,OAAOyqB,GAAQouB,CAC9B,EAKAz+C,EAAAA,OAAA,SAAuByQ,EAAW4f,EAAajtB,GAC7C,OAAOqN,GAAMrN,EAAQq7C,EAAMsD,IAAQn8C,OAAOyqB,EAC5C,EAoBArwB,EAAAA,eAAA,SACEu9F,EACAC,EACAyxD,GAEA,GAAuB,kBAAZ1xD,GAAwBA,EAAU,EAAG,MAAM,IAAIx5F,MAAM,4BAChE,GAAwB,kBAAby5F,GAAyBA,EAAW,EAAG,MAAM,IAAIz5F,MAAM,6BAClE,GAAsB,oBAAXkrJ,EAAuB,MAAM,IAAIlrJ,MAAM,6BAElD,IAAIoQ,EAAI46I,EAAIxxD,GACR/rF,EAAIu9I,EAAIxxD,GACRryF,EAAI,EACR,MAAMgkJ,EAAQA,KACZ/6I,EAAEgd,KAAK,GACP3f,EAAE2f,KAAK,GACPjmB,EAAI,CAAC,EAEDwmB,EAAI,mBAAAvnB,EAAArI,UAAAC,OAAIqP,EAAe,IAAA/G,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAf8G,EAAe9G,GAAAxI,UAAAwI,GAAA,OAAK2kJ,EAAOz9I,EAAG2C,KAAM/C,EAAE,EAC9CwsF,EAAS,WAAiB,IAAhBp7C,EAAI1gD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGitJ,IAErBv9I,EAAIkgB,EAAEs9H,EAAK,CAAC,IAAQxsG,GACpBruC,EAAIud,IACgB,IAAhB8wB,EAAKzgD,SACTyP,EAAIkgB,EAAEs9H,EAAK,CAAC,IAAQxsG,GACpBruC,EAAIud,IACN,EACMy9H,EAAMA,KAEV,GAAIjkJ,KAAO,IAAM,MAAM,IAAInH,MAAM,2BACjC,IAAIsO,EAAM,EACV,MAAMpL,EAAoB,GAC1B,KAAOoL,EAAMmrF,GAAU,CACrBrpF,EAAIud,IACJ,MAAMqsE,EAAK5pF,EAAEvG,QACb3G,EAAIO,KAAKu2F,GACT1rF,GAAO8B,EAAEpS,MACX,CACA,OAAOwI,KAAetD,EAAI,EAU5B,MARiBmoJ,CAAC5sG,EAAkB6sG,KAGlC,IAAIv9H,EACJ,IAHAo9H,IACAtxD,EAAOp7C,KAEE1wB,EAAMu9H,EAAKF,OAASvxD,IAE7B,OADAsxD,IACOp9H,CAAG,CAGd,EAmBA9xB,EAAAA,eAAA,SACE49D,EACAq0E,GAC6B,IAA7B2d,EAAA9tJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA2B,CAAC,EAE5B,MAAM+tJ,EAAaA,CAACC,EAAoBjoJ,EAAiBkoJ,KACvD,MAAMC,EAAWV,EAAaznJ,GAC9B,GAAwB,oBAAbmoJ,EAAyB,MAAM,IAAIjsJ,MAAM,8BAEpD,MAAM8K,EAAM+uD,EAAOkyF,GACnB,KAAIC,QAAsB/tJ,IAAR6M,KACbmhJ,EAASnhJ,EAAK+uD,GACjB,MAAM,IAAI75D,MACR,SAAWgO,OAAO+9I,GAAa,yBAA2BjoJ,EAAO,SAAWgH,EAEhF,EAEF,IAAK,MAAOihJ,EAAWjoJ,KAAS3E,OAAO+sJ,QAAQhe,GAAa4d,EAAWC,EAAWjoJ,GAAO,GACzF,IAAK,MAAOioJ,EAAWjoJ,KAAS3E,OAAO+sJ,QAAQL,GAAgBC,EAAWC,EAAWjoJ,GAAO,GAC5F,OAAO+1D,CACT,EAqBA59D,EAAAA,SAAA,SACEi3G,GAEA,MAAMruG,EAAM,IAAIixF,QAChB,OAAO,SAACkjB,GACN,MAAMluG,EAAMjG,EAAIkD,IAAIixG,GACpB,QAAY/6G,IAAR6M,EAAmB,OAAOA,EAAI,QAAAka,EAAAjnB,UAAAC,OAFjBsT,EAAO,IAAAhL,MAAA0e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAP3T,EAAO2T,EAAA,GAAAlnB,UAAAknB,GAGxB,MAAM82M,EAAW7oH,EAAG8F,KAAQ1nG,GAE5B,OADAzM,EAAI4N,IAAIumG,EAAK+iH,GACNA,CACT,CACF,EAtWA,MAAM/9K,EAAsBn8C,OAAO,GAC7B64C,EAAsB74C,OAAO,GAC7BugD,EAAsBvgD,OAAO,GAWnC,SAAgB87C,EAAQ/wC,GACtB,OAAOA,aAAa6f,YAAemO,YAAYC,OAAOjuB,IAA6B,eAAvBA,EAAExC,YAAY2D,IAC5E,CAEA,SAAgB4zC,EAAOjyB,GACrB,IAAKiuB,EAAQjuB,GAAO,MAAM,IAAI1vB,MAAM,sBACtC,CAOA,MAAM44F,EAAwBtyF,MAAM3F,KAAK,CAAE3C,OAAQ,MAAO,CAAC49B,EAAGz0B,IAC5DA,EAAEvG,SAAS,IAAI4mB,SAAS,EAAG,OAK7B,SAAgBuzB,EAAWT,GACzBqH,EAAOrH,GAEP,IAAIr3C,EAAM,GACV,IAAK,IAAIkE,EAAI,EAAGA,EAAImzC,EAAMt8C,OAAQmJ,IAChClE,GAAO21F,EAAMt+C,EAAMnzC,IAErB,OAAOlE,CACT,CAEA,SAAgBm+C,EAAoB9jB,GAClC,MAAMr6B,EAAMq6B,EAAI18B,SAAS,IACzB,OAAoB,EAAbqC,EAAIjF,OAAa,IAAMiF,EAAMA,CACtC,CAEA,SAAgB80F,EAAY90F,GAC1B,GAAmB,kBAARA,EAAkB,MAAM,IAAIjD,MAAM,mCAAqCiD,GAClF,MAAe,KAARA,EAAa+6C,EAAMn8C,OAAO,KAAOoB,EAC1C,CAGA,MAAM23G,EAAS,CAAE2mB,GAAI,GAAIU,GAAI,GAAIv1F,EAAG,GAAIw6C,EAAG,GAAIt6E,EAAG,GAAIo6C,EAAG,KACzD,SAAS6zD,EAAc1f,GACrB,OAAIA,GAAMyf,EAAO2mB,IAAMpmC,GAAMyf,EAAOqnB,GAAW9mC,EAAKyf,EAAO2mB,GACvDpmC,GAAMyf,EAAOluE,GAAKyuD,GAAMyf,EAAO1zB,EAAUiU,GAAMyf,EAAOluE,EAAI,IAC1DyuD,GAAMyf,EAAOhuG,GAAKuuF,GAAMyf,EAAO5zD,EAAUm0C,GAAMyf,EAAOhuG,EAAI,SAA9D,CAEF,CAKA,SAAgBiwC,EAAW55C,GACzB,GAAmB,kBAARA,EAAkB,MAAM,IAAIjD,MAAM,mCAAqCiD,GAClF,MAAM83G,EAAK93G,EAAIjF,OACTg9G,EAAKD,EAAK,EAChB,GAAIA,EAAK,EAAG,MAAM,IAAI/6G,MAAM,mDAAqD+6G,GACjF,MAAM/hB,EAAQ,IAAIvsE,WAAWuuF,GAC7B,IAAK,IAAIC,EAAK,EAAG76E,EAAK,EAAG66E,EAAKD,EAAIC,IAAM76E,GAAM,EAAG,CAC/C,MAAMzlB,EAAKkgG,EAAc53G,EAAIgK,WAAWmzB,IAClC86E,EAAKL,EAAc53G,EAAIgK,WAAWmzB,EAAK,IAC7C,QAAWniC,IAAP0c,QAA2B1c,IAAPi9G,EAAkB,CACxC,MAAMJ,EAAO73G,EAAIm9B,GAAMn9B,EAAIm9B,EAAK,GAChC,MAAM,IAAIpgC,MAAM,+CAAiD86G,EAAO,cAAgB16E,EAC1F,CACA44D,EAAMiiB,GAAW,GAALtgG,EAAUugG,CACxB,CACA,OAAOliB,CACT,CAWA,SAAgBh+C,EAAgBtuC,EAAoB4B,GAClD,OAAOuuC,EAAWnwC,EAAE9L,SAAS,IAAI4mB,SAAe,EAANlZ,EAAS,KACrD,CA0CA,SAAgB9H,IACd,IAAIoN,EAAM,EACV,IAAK,IAAIzM,EAAI,EAAGA,EAAIpJ,UAAOC,OAAQmJ,IAAK,CACtC,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjBw6C,EAAO/0C,GACPgH,GAAOhH,EAAE5O,MACX,CACA,MAAM+vB,EAAM,IAAItB,WAAW7Y,GAC3B,IAAK,IAAIzM,EAAI,EAAGwxF,EAAM,EAAGxxF,EAAIpJ,UAAOC,OAAQmJ,IAAK,CAC/C,MAAMyF,EAAWzF,EAAC,GAAApJ,UAAAC,QAADmJ,OAAClJ,EAAAF,UAADoJ,GACjB4mB,EAAItb,IAAI7F,EAAG+rF,GACXA,GAAO/rF,EAAE5O,MACX,CACA,OAAO+vB,CACT,CAuBA,MAAMiuM,EAAYtvN,GAA2B,kBAANA,GAAkBsxC,GAAOtxC,EAEhE,SAAgB+tC,EAAQ/tC,EAAWmB,EAAaC,GAC9C,OAAOkuN,EAAStvN,IAAMsvN,EAASnuN,IAAQmuN,EAASluN,IAAQD,GAAOnB,GAAKA,EAAIoB,CAC1E,CAiDa7R,EAAAA,QAAWyQ,IAAuB01C,GAAOvgD,OAAO6K,EAAI,IAAMguC,EAIvE,MAAMswG,EAAOlrJ,GAAe,IAAI2sB,WAAW3sB,GACrCmrJ,EAAQ92I,GAAasY,WAAW9rB,KAAKwT,GA6D3C,MAAMo3I,EAAe,CACnBC,OAAS1gJ,GAAqC,kBAARA,EACtC2gJ,SAAW3gJ,GAAqC,oBAARA,EACxC4gJ,QAAU5gJ,GAAqC,mBAARA,EACvCgyB,OAAShyB,GAAqC,kBAARA,EACtC6gJ,mBAAqB7gJ,GAAqC,kBAARA,GAAoB6yC,EAAQ7yC,GAC9EyvD,cAAgBzvD,GAAsBwgB,OAAOivC,cAAczvD,GAC3DkuF,MAAQluF,GAAsBxE,MAAMi3B,QAAQzyB,GAC5C8gJ,MAAOA,CAAC9gJ,EAAU+uD,IAAsBA,EAAe5gB,GAAGx4B,QAAQ3V,GAClE/J,KAAO+J,GAAqC,oBAARA,GAAsBwgB,OAAOivC,cAAczvD,EAAIohB,YAuCxEjwB,EAAAA,eAAiBggO,KAC5B,MAAM,IAAIj8N,MAAM,kBAAkB,6TC7OvB/D,EAAAA,iBAAmB,CAC9BigO,QAAS,UACTC,OAAQ,SACRC,eAAgB,iBAChBC,OAAQ,SACRC,WAAY,cAKDrgO,EAAAA,gBAAkB,CAC7BsgO,cAAe,gBACfC,gBAAiB,mBAKNvgO,EAAAA,mBAAqB,CAChCwgO,SAAU,WACVC,SAAU,WACVC,eAAgB,iBAChBC,eAAgB,kBAKL3gO,EAAAA,2BAA6B,CACxC0gO,eAAgB,iBAChBC,eAAgB,kBAML3gO,EAAAA,4BAA8B,CACzC4gO,UAAW,YACXC,SAAU,YAMC7gO,EAAAA,UAAY,CACvB8gO,OAAQ,SACR1xK,QAAS,WAMEpvD,EAAAA,sBAAwB,CACnC+gO,GAAI,KACJC,GAAI,MAOOhhO,EAAAA,QAAU,CACrB+gO,GAAI,EACJC,GAAI,GASOhhO,EAAAA,oBAAsB,CACjCihO,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,sCACJC,GAAI,sCACJC,GAAI,sCACJC,GAAI,uCAQOxhO,EAAAA,qBAAuB,CAClCihO,GAAI,MACJC,GAAI,MACJC,GAAI,MACJE,GAAI,sCACJC,GAAI,sCACJC,GAAI,uCAQOvhO,EAAAA,qBAAuB,CAClCohO,GAAI,MACJI,GAAI,2jBCrNN,MAAAzgO,EAAAC,EAAA,OACAC,EAAAD,EAAA,KACAE,EAAAF,EAAA,OACAG,EAAAH,EAAA,OAoBAhB,EAAAA,uBAAA,SACIoB,EACAC,EACAE,EACAqB,EACAyzF,EACAp0F,GACiC,IAAjCC,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,+DAEZ,MAAMI,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAtB,EAAAsgO,yCAAwClgO,EAAMqB,EAAWyzF,EAAuBn0F,IAGpF,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,GAAQY,EAC7E,KAgBAjC,EAAAA,mBAAA,SACIoB,EACAC,EACAE,EACA80F,EACAzzF,GAGiC,IAFjCf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,+DAEZ,MAAOU,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAtB,EAAAugO,qCAAoCngO,EAAMsB,EAAoBwzF,EAAuBh0F,EAASH,IAGlG,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,KAmBAjC,EAAAA,gCAAA,SACIoB,EACAC,EACAC,EACAC,EACAC,EACAoB,EACAlB,EACAC,GAG4B,IAF5BE,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,SAAAC,IAAAF,UAAA,IAAAA,UAAA,IAAGZ,EAAA2xB,0DAEZ,MAAOhwB,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,UAC5B,EAAAtB,EAAAwgO,kDACFvgO,EACAE,EACAC,EACAC,EACAqB,EACAnB,EACAC,EACAU,EACc,OAAdJ,QAAc,IAAdA,OAAc,EAAdA,EAAgBg/E,WAChB/+E,IAIR,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,KAoBAjC,EAAAA,sCAAA,SACIoB,EACAC,EACAC,EACAC,EACAC,EACAoB,EACAlB,EACAC,EACAC,GAG4B,IAF5BC,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,GAAAD,UAAA,SAAAE,EAC/BE,EAASJ,UAAAC,OAAA,SAAAC,IAAAF,UAAA,IAAAA,UAAA,IAAGZ,EAAA2xB,0DAEZ,MAAOhwB,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,UAC5B,EAAAtB,EAAAygO,wDACFxgO,EACAE,EACAC,EACAC,EACAqB,EACAnB,EACAC,EACAC,EACAS,EACc,OAAdJ,QAAc,IAAdA,OAAc,EAAdA,EAAgBg/E,WAChB/+E,IAIR,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,iNC/KA,MAAA+c,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OACAme,EAAAne,EAAA,OAQahB,EAAAA,8CAA+C,EAAAgf,EAAAY,QAAqD,EAC7G,EAAAZ,EAAAa,IAAG,iBAWP7f,EAAAA,+CAAA,SACIuB,EACAW,GAEA,KAAK,EAAAhB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMT,EAAO,CAAC,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAErDrc,EAAOY,EAAO0b,MAAMngB,EAAA6hO,6CAA6CzhN,MAQvE,OAPApgB,EAAA6hO,6CAA6CxhN,OACzC,CACId,YAAaJ,EAAAmB,iBAAiBwhN,+BAElCj+N,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,8BCtCA7D,EAAQ,OAAO,EAUfA,EAAQ,EATG,CACT,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,iuBCXX,MAAAgf,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OAsGA,SAAgB+gO,EAAgC1iN,GAIvB,IAJwB,UAC7Cnd,EACAod,MAAOoT,EAASjxB,KAAUI,GAAa,KACvCgC,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAjxB,QACAI,gBAEJgC,KAAM7D,EAAAgiO,sBAAsBriN,OAAO9b,GAE3C,CA5Ga7D,EAAAA,uBAAwB,EAAAgf,EAAAY,QAA8B,EAAC,EAAAZ,EAAAa,IAAG,iBAYvE7f,EAAAA,wBAAA,SACI0yB,EACAjxB,GAE4B,IAD5BI,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,GAAO,EAAAre,EAAA6xB,YAAW,CAAC,CAAE9S,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,IAASze,EAAOI,GAEnFgC,EAAOY,EAAO0b,MAAMngB,EAAAgiO,sBAAsB5hN,MAGhD,OAFApgB,EAAAgiO,sBAAsB3hN,OAAO,CAAEd,YAAaJ,EAAAmB,iBAAiB2hN,QAAUp+N,GAEhE,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAuBA7D,EAAAA,wBAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAgiO,sBAAsB5hN,KAAM,MAAM,IAAIlB,EAAAyB,iCAEtE,MACIrB,MAAM,QAAEoT,EAAO,MAAEjxB,EAAK,aAAEI,GAAc,KACtCgC,GACAk+N,EAAiCxiN,GACrC,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiB2hN,OAAQ,MAAM,IAAI/iN,EAAA0B,iCAC5D,IAAK8R,IAAYjxB,EAAO,MAAM,IAAIyd,EAAA2B,iCAIlC,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAjxB,QACAI,gBAEJgC,OAER,EAsBA7D,EAAAA,iCAAA+hO,8BC5GA/hO,EAAQ,OAAsB,EAU9BA,EAAQ,EATkB,CACxB,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,84BCXX0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,iCCEA,IAAI4W,oBACJ,IAAIsrN,EAAQ,IAAI1xM,WAAW,IACZ,SAAS2xM,IAEtB,IAAKvrN,KAGHA,EAAoC,qBAAXD,QAA0BA,OAAOC,iBAAmBD,OAAOC,gBAAgBqP,KAAKtP,SAA+B,qBAAbqgF,UAAgE,oBAA7BA,SAASpgF,iBAAkCogF,SAASpgF,gBAAgBqP,KAAK+wE,WAGrO,MAAM,IAAIjzF,MAAM,4GAIpB,OAAO6S,EAAgBsrN,EACzB,CClBA,8HCMA,QAJA,SAAkB5vK,GAChB,MAAuB,kBAATA,GAAqB8vK,EAAM5tN,KAAK89C,EAChD,ECIA,IAFA,IAAI+vK,EAAY,GAEPn3N,EAAI,EAAGA,EAAI,MAAOA,EACzBm3N,EAAU76N,MAAM0D,EAAI,KAAOvG,SAAS,IAAIyG,OAAO,IAoBjD,QAjBA,SAAmB8M,GACjB,IAAI+e,EAASn1B,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,EAG7EwwD,GAAQ+vK,EAAUnqN,EAAI+e,EAAS,IAAMorM,EAAUnqN,EAAI+e,EAAS,IAAMorM,EAAUnqN,EAAI+e,EAAS,IAAMorM,EAAUnqN,EAAI+e,EAAS,IAAM,IAAMorM,EAAUnqN,EAAI+e,EAAS,IAAMorM,EAAUnqN,EAAI+e,EAAS,IAAM,IAAMorM,EAAUnqN,EAAI+e,EAAS,IAAMorM,EAAUnqN,EAAI+e,EAAS,IAAM,IAAMorM,EAAUnqN,EAAI+e,EAAS,IAAMorM,EAAUnqN,EAAI+e,EAAS,IAAM,IAAMorM,EAAUnqN,EAAI+e,EAAS,KAAOorM,EAAUnqN,EAAI+e,EAAS,KAAOorM,EAAUnqN,EAAI+e,EAAS,KAAOorM,EAAUnqN,EAAI+e,EAAS,KAAOorM,EAAUnqN,EAAI+e,EAAS,KAAOorM,EAAUnqN,EAAI+e,EAAS,MAAMniB,cAMzf,IAAKy/H,EAASjiF,GACZ,MAAMnzB,UAAU,+BAGlB,OAAOmzB,CACT,ECJA,QApBA,SAAYxwC,EAASylD,EAAKtwC,GAExB,IAAIqrM,GADJxgN,EAAUA,GAAW,CAAC,GACH3K,SAAW2K,EAAQqgN,KAAOA,KAK7C,GAHAG,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvB/6J,EAAK,CACPtwC,EAASA,GAAU,EAEnB,IAAK,IAAI/rB,EAAI,EAAGA,EAAI,KAAMA,EACxBq8D,EAAItwC,EAAS/rB,GAAKo3N,EAAKp3N,GAGzB,OAAOq8D,CACT,CAEA,OAAOz5C,EAAUw0M,EACnB,gCCpBAp/N,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQk9B,kBAAe,EACvB,MAAMlzB,EAAUhJ,EAAQ,OA2CxBhB,EAAQk9B,aAxCR,SAAsBL,EAAOC,EAASp2B,EAASmB,GAC3C,IAAK+T,SAAS5R,EAAQuyB,MAAMc,UAAU32B,IAClC,OAAO,KACX,IAAI42B,EAAatzB,EAAQuyB,MAAMgB,iBAAiB,GAAIT,EAASj1B,GACzDjG,EAAM8E,EAAU42B,EAChBE,EAAa,EACbC,EAAU,EACd,MAAMR,EAAS,GACT67E,EAAW9uG,EAAQuyB,MAAMw8E,SAASj8E,GACxChU,QAAQkxB,IAAI,6CAA8C8+D,GAC1D,IAAK,IAAI5tG,EAAI,EAAGA,EAAI2xB,EAAM96B,SAAUmJ,EAAG,CACnC,MAAMwyB,EAAOb,EAAM3xB,GACbyyB,EAAY3zB,EAAQuyB,MAAMC,WAAWkB,GACrCE,EAAUl3B,EAAUi3B,EACpBG,EAAY9zB,EAAQuyB,MAAMc,UAAUK,EAAKt6B,OAC/C,IAAIy6B,EAAU,EAId,GAHiB,MAAbH,EAAKjB,MAAgBiB,EAAKjB,KAAKC,mBAAqBh2B,IACpDm3B,EAAUH,EAAKjB,KAAKE,SAAWj2B,EAAUg3B,EAAKjB,KAAKC,qBAEnDkB,EAAUC,EAAUH,EAAKt6B,OAEzB,GADA0lB,QAAQkxB,IAAI,4BAA8B9uC,EAAI,4CAA8C2yB,EAAU,aAAeD,EAAU,WAAaF,EAAKt6B,OAC7I8H,IAAM2xB,EAAM96B,OAAS,EACrB,MAAO,CAAEH,IAAM8E,GAAW42B,EAAaK,GAAcH,EAAaK,QAY1E,GATAP,GAAcK,EACdF,GAAWK,EACXN,GAAcK,EACdZ,EAAOz1B,KAAKk2B,GACZ97B,EAAO8E,EAAU42B,EAAcE,EAC/B1U,QAAQkxB,IAAI,4BAA8B9uC,EAAI,iBAAkBtJ,GAChEknB,QAAQkxB,IAAI,4BAA8B9uC,EAAI,mBAAoBuyB,GAClE3U,QAAQkxB,IAAI,4BAA8B9uC,EAAI,kBAAmBsyB,KAE7DC,EAAUq7E,EAAWl3G,GAEzB,OAAOoI,EAAQuyB,MAAM48E,SAASl8E,EAAQH,EAASp2B,EAASmB,EAAM21B,EAClE,CACA,MAAO,CAAE57B,MACb,0BC3CA,IAAI2gO,EAAsB,CACxBC,cAAc,EACd55N,KAAK,EACL65N,QAAQ,GAGV,SAASjuF,EAAiBtiI,GACxB,MAAsB,kBAARA,KAAsBA,EAAI/E,MAC1C,CAEA,SAASu1N,EAAYC,EAAgB7gN,GACnC,IAAIjU,EAAQ80N,EAAel6N,MAAM,KAAKirF,OAAO8gD,GAGzC3/E,EAgDN,SAA4B+tK,GAG1B,IAAI9wN,EAAO,GACP1O,EAAQ,GACRy/N,EAAeD,EAAiBn6N,MAAM,KACtCo6N,EAAa9gO,OAAS,GACxB+P,EAAO+wN,EAAa50N,QACpB7K,EAAQy/N,EAAazlK,KAAK,MAE1Bh6D,EAAQw/N,EAGV,MAAO,CAAE9wN,KAAMA,EAAM1O,MAAOA,EAC9B,CA9De0/N,CADUj1N,EAAMI,SAEzB6D,EAAO+iD,EAAO/iD,KACd1O,EAAQyxD,EAAOzxD,MAEnB0e,EAAUA,EACN5e,OAAO0nF,OAAO,CAAC,EAAG23I,EAAqBzgN,GACvCygN,EAEJ,IACEn/N,EAAQ0e,EAAQ0gN,aAAeO,mBAAmB3/N,GAASA,CAC7D,CAAE,MAAOqO,GACPqX,QAAQ/F,MACN,8EACE3f,EACA,gEACFqO,EAEJ,CAEA,IAAIo2E,EAAS,CACX/1E,KAAMA,EACN1O,MAAOA,GAwBT,OArBAyK,EAAMoB,SAAQ,SAAU+zN,GACtB,IAAIC,EAAQD,EAAKv6N,MAAM,KACnByB,EAAM+4N,EAAMh1N,QAAQi1N,WAAWpuN,cAC/B1R,EAAQ6/N,EAAM7lK,KAAK,KACX,YAARlzD,EACF29E,EAAOgqF,QAAU,IAAI9kJ,KAAK3pB,GACT,YAAR8G,EACT29E,EAAOiqF,OAASzmK,SAASjI,EAAO,IACf,WAAR8G,EACT29E,EAAO2tD,QAAS,EACC,aAARtrI,EACT29E,EAAOstD,UAAW,EACD,aAARjrI,EACT29E,EAAOutD,SAAWhyI,EACD,gBAAR8G,EACT29E,EAAOs7I,aAAc,EAErBt7I,EAAO39E,GAAO9G,CAElB,IAEOykF,CACT,CAkBA,SAASx1D,EAAMlyB,EAAO2hB,GAKpB,GAJAA,EAAUA,EACN5e,OAAO0nF,OAAO,CAAC,EAAG23I,EAAqBzgN,GACvCygN,GAECpiO,EACH,OAAK2hB,EAAQlZ,IAGJ,CAAC,EAFD,GAMX,GAAIzI,EAAMosB,QACR,GAA0C,oBAA/BpsB,EAAMosB,QAAQ62M,aAGvBjjO,EAAQA,EAAMosB,QAAQ62M,oBACjB,GAAIjjO,EAAMosB,QAAQ,cAEvBpsB,EAAQA,EAAMosB,QAAQ,kBACjB,CAEL,IAAI82M,EACFljO,EAAMosB,QACJrpB,OAAOoc,KAAKnf,EAAMosB,SAASyuC,MAAK,SAAU9wD,GACxC,MAA6B,eAAtBA,EAAI4K,aACb,KAGCuuN,IAAOljO,EAAMosB,QAAQs7D,QAAW/lE,EAAQ2gN,QAC3C35M,QAAQG,KACN,oOAGJ9oB,EAAQkjO,CACV,CAMF,GAJKh5N,MAAMi3B,QAAQnhC,KACjBA,EAAQ,CAACA,IAGN2hB,EAAQlZ,IAIN,CAEL,OAAOzI,EAAMuzF,OAAO8gD,GAAkBrrI,QAAO,SAAUk/E,EAASn2E,GAC9D,IAAI21E,EAAS66I,EAAYxwN,EAAK4P,GAE9B,OADAumE,EAAQR,EAAO/1E,MAAQ+1E,EAChBQ,CACT,GALc,CAAC,EAMjB,CAVE,OAAOloF,EAAMuzF,OAAO8gD,GAAkB5rI,KAAI,SAAUsJ,GAClD,OAAOwwN,EAAYxwN,EAAK4P,EAC1B,GASJ,CAsFA7hB,EAAOD,QAAUqyB,EACjBpyB,EAAOD,QAAQqyB,MAAQA,EACvBpyB,EAAOD,QAAQ0iO,YAAcA,EAC7BziO,EAAOD,QAAQwoF,mBA5Ef,SAA4B86I,GAC1B,GAAIj5N,MAAMi3B,QAAQgiM,GAChB,OAAOA,EAET,GAA6B,kBAAlBA,EACT,MAAO,GAGT,IAEIl0N,EACA8vF,EACAqkI,EACAC,EACAC,EANAC,EAAiB,GACjBrzM,EAAM,EAOV,SAASszM,IACP,KAAOtzM,EAAMizM,EAAcvhO,QAAU,KAAKyS,KAAK8uN,EAAcnxN,OAAOke,KAClEA,GAAO,EAET,OAAOA,EAAMizM,EAAcvhO,MAC7B,CAQA,KAAOsuB,EAAMizM,EAAcvhO,QAAQ,CAIjC,IAHAqN,EAAQihB,EACRozM,GAAwB,EAEjBE,KAEL,GAAW,OADXzkI,EAAKokI,EAAcnxN,OAAOke,IACV,CAQd,IANAkzM,EAAYlzM,EACZA,GAAO,EAEPszM,IACAH,EAAYnzM,EAELA,EAAMizM,EAAcvhO,QAjBjB,OAFdm9F,EAAKokI,EAAcnxN,OAAOke,KAEE,MAAP6uE,GAAqB,MAAPA,GAkB7B7uE,GAAO,EAILA,EAAMizM,EAAcvhO,QAAwC,MAA9BuhO,EAAcnxN,OAAOke,IAErDozM,GAAwB,EAExBpzM,EAAMmzM,EACNE,EAAel8N,KAAK87N,EAAct6N,UAAUoG,EAAOm0N,IACnDn0N,EAAQihB,GAIRA,EAAMkzM,EAAY,CAEtB,MACElzM,GAAO,IAINozM,GAAyBpzM,GAAOizM,EAAcvhO,SACjD2hO,EAAel8N,KAAK87N,EAAct6N,UAAUoG,EAAOk0N,EAAcvhO,QAErE,CAEA,OAAO2hO,CACT,0BCrMA,MAAM1pJ,EAAU,GASVC,EAAQ,IAAIpiD,YAAY,CAC5B,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAGzDqiD,EAAO,IAAI1pD,WAAW,CAC1B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAGpD2pD,EAAQ,IAAItiD,YAAY,CAC5B,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IACtD,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAClD,KAAM,MAAO,MAAO,MAAO,EAAG,IAG1BuiD,EAAO,IAAI5pD,WAAW,CAC1B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,KAkStBvwB,EAAOD,QA/Re00B,CAAC7sB,EAAM+vB,EAAM0iD,EAAYC,EAAOvL,EAAOwL,EAAa1iD,EAAMqC,KAE9E,MAAMnD,EAAOmD,EAAKnD,KAGlB,IASIyjD,EACAtpD,EACAoyC,EACA10B,EACAlX,EAGA+6C,EAhBArgE,EAAM,EACN2mB,EAAM,EACNpnB,EAAM,EAAGC,EAAM,EACf6oE,EAAO,EACPC,EAAO,EACPC,EAAO,EACPrhD,EAAO,EACP46C,EAAO,EACP0G,EAAO,EAMPtiE,EAAO,KAGX,MAAM6uD,EAAQ,IAAIvvC,YAAYmiD,IACxBc,EAAO,IAAIjjD,YAAYmiD,IAC7B,IAEIrgD,EAAWC,EAASC,EAFpB3C,EAAQ,KAoCZ,IAAK7kB,EAAM,EAAGA,GAAO2nE,EAAS3nE,IAC5B+0D,EAAM/0D,GAAO,EAEf,IAAK2mB,EAAM,EAAGA,EAAMuhD,EAAOvhD,IACzBouC,EAAMxvC,EAAK0iD,EAAathD,MAK1B,IADA0hD,EAAO1jD,EACFnlB,EAAMmoE,EAASnoE,GAAO,GACN,IAAfu1D,EAAMv1D,GADkBA,KAM9B,GAHI6oE,EAAO7oE,IACT6oE,EAAO7oE,GAEG,IAARA,EAaF,OATAm9D,EAAMwL,KAAkB,SAMxBxL,EAAMwL,KAAkB,SAExBrgD,EAAKnD,KAAO,EACL,EAET,IAAKplB,EAAM,EAAGA,EAAMC,GACC,IAAfu1D,EAAMx1D,GADaA,KASzB,IANI8oE,EAAO9oE,IACT8oE,EAAO9oE,GAIT2nB,EAAO,EACFlnB,EAAM,EAAGA,GAAO2nE,EAAS3nE,IAG5B,GAFAknB,IAAS,EACTA,GAAQ6tC,EAAM/0D,GACVknB,EAAO,EACT,OAAQ,EAGZ,GAAIA,EAAO,IApIC,IAoIK1xB,GAA0B,IAARgK,GACjC,OAAQ,EAKV,IADAipE,EAAK,GAAK,EACLzoE,EAAM,EAAGA,EAAM2nE,EAAS3nE,IAC3ByoE,EAAKzoE,EAAM,GAAKyoE,EAAKzoE,GAAO+0D,EAAM/0D,GAIpC,IAAK2mB,EAAM,EAAGA,EAAMuhD,EAAOvhD,IACM,IAA3BpB,EAAK0iD,EAAathD,KACpBlB,EAAKgjD,EAAKljD,EAAK0iD,EAAathD,OAAWA,GAiE3C,GAlNY,IAuLRnxB,GACF0Q,EAAO2e,EAAQY,EACf46C,EAAQ,IAxLC,IA0LA7qE,GACT0Q,EAAO0hE,EACP/iD,EAAQgjD,EACRxH,EAAQ,MAGRn6D,EAAO4hE,EACPjjD,EAAQkjD,EACR1H,EAAQ,GAIVmI,EAAO,EACP7hD,EAAM,EACN3mB,EAAMT,EACN+lB,EAAO6iD,EACPG,EAAOD,EACPE,EAAO,EACPrX,GAAO,EACP4Q,EAAO,GAAKuG,EACZ7rC,EAAOslC,EAAO,EA9MH,IAiNNtsE,GAAiBssE,EAtNJ,KAMN,IAiNTtsE,GAAkBssE,EAtNF,IAuNjB,OAAO,EAIT,OAAS,CAEPx6C,EAAYtnB,EAAMuoE,EACd9iD,EAAKkB,GAAO,EAAI05C,GAClB94C,EAAU,EACVC,EAAW/B,EAAKkB,IAETlB,EAAKkB,IAAQ05C,GACpB94C,EAAU1C,EAAMY,EAAKkB,GAAO05C,GAC5B74C,EAAWthB,EAAKuf,EAAKkB,GAAO05C,KAG5B94C,EAAU,GACVC,EAAW,GAIb4gD,EAAO,GAAMpoE,EAAMuoE,EACnBzpD,EAAO,GAAKwpD,EACZ/oE,EAAMuf,EACN,GACEA,GAAQspD,EACRzL,EAAMr3C,GAAQkjD,GAAQD,GAAQzpD,GAASwI,GAAa,GAAOC,GAAW,GAAMC,QAC5D,IAAT1I,GAIT,IADAspD,EAAO,GAAMpoE,EAAM,EACZwoE,EAAOJ,GACZA,IAAS,EAWX,GATa,IAATA,GACFI,GAAQJ,EAAO,EACfI,GAAQJ,GAERI,EAAO,EAIT7hD,IACqB,MAAfouC,EAAM/0D,GAAY,CACtB,GAAIA,IAAQR,EAAO,MACnBQ,EAAMulB,EAAK0iD,EAAaxiD,EAAKkB,GAC/B,CAGA,GAAI3mB,EAAMqoE,IAASG,EAAOhsC,KAAU00B,EAAK,CAYvC,IAVa,IAATqX,IACFA,EAAOF,GAIT/iD,GAAQ/lB,EAGR+oE,EAAOtoE,EAAMuoE,EACbrhD,EAAO,GAAKohD,EACLA,EAAOC,EAAO/oE,IACnB0nB,GAAQ6tC,EAAMuT,EAAOC,KACjBrhD,GAAQ,KACZohD,IACAphD,IAAS,EAKX,GADA46C,GAAQ,GAAKwG,EAxRN,IAyRF9yE,GAAiBssE,EA9RR,KAMN,IAyRLtsE,GAAkBssE,EA9RN,IA+Rb,OAAO,EAIT5Q,EAAMsX,EAAOhsC,EAIbmgC,EAAMzL,GAAQmX,GAAQ,GAAOC,GAAQ,GAAOhjD,EAAO6iD,CACrD,CACF,CAeA,OAVa,IAATK,IAIF7L,EAAMr3C,EAAOkjD,GAAUxoE,EAAMuoE,GAAS,GAAO,IAAM,IAKrDzgD,EAAKnD,KAAO0jD,EACL,CAAC,yHCpTV16E,EAAAA,WAAA4jO,EAQA5jO,EAAAA,eAAA6jO,EAkCA7jO,EAAAA,aAAA+gH,EAuiBA/gH,EAAAA,WAAA,SACEi9B,EACAH,EACA2wC,EACAtzC,GAGA,MAAM2kC,EAAQ,CAAEglK,UAAU,EAAMC,OAAO,KAAS5pM,GAEhD,OADY,IAAIooF,EAAWtlF,EAAQH,EAASgiC,GACjCjwC,OAAO4+C,EACpB,EAtnBA,MAAAtoE,EAAAnE,EAAA,OACA4R,EAAA5R,EAAA,OACAw+G,EAAAx+G,EAAA,OACA+2D,EAAA/2D,EAAA,OACAi/G,EAAAj/G,EAAA,OACAy/G,EAAAz/G,EAAA,OAOA2uB,EAAA3uB,EAAA,OAeA,SAAgB4iO,EAAWzjO,GACzB,GAAIA,EAAMu4D,eAAgB,CACxB,QAAoB12D,IAAhB7B,EAAM2gC,MAAqB,MAAM,IAAI/8B,MAAM,uBAC/C,OAAO5D,EAAMu4D,eAAe57B,QAAQ38B,EAAM2gC,MAC5C,CAAO,GAAI3gC,EAAMg4D,YAAa,OAAOh4D,EAAMg4D,YACtC,MAAM,IAAIp0D,MAAM,mCACvB,CAEA,SAAgB8/N,EACd34N,EACA6C,EACAgiN,GAC0B,IAA1BqE,EAAkBtyN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,IAEd,eAAE42D,EAAc,KAAExB,GAAShsD,EAKD,kBAAnBwtD,IAA6BA,EAAiBvzD,EAAA6B,IAAI2Y,OAAO+4C,KAChE,EAAA/oC,EAAA+xB,SAAQgX,KAAiBA,EAAiBunD,EAAAI,MAAM1gG,OAAO+4C,IACrD,mBAAoBxtD,QAAyBlJ,IAAnB02D,IAC9BA,EAAiB3qD,GAAK2qD,gBACJ,kBAATxB,IAAmBA,EAAO/xD,EAAA6B,IAAI2Y,OAAOu3C,SAEnCl1D,IAATk1D,IAAoBA,EAAOnpD,GAAKmpD,MACpC,IAOIg9J,EAPApiM,EAAkB,IAAK/jB,KAAQ7C,EAAGwtD,iBAAgBxB,QAatD,MAZM,mBAAoBhsD,QAA6BlJ,IAAvB8vB,EAAI4mC,uBAAqC5mC,EAAI4mC,oBACxD12D,IAAjB8vB,EAAI/rB,WAAwB+rB,EAAI/rB,SAAW06G,EAAAyB,kBACrB,OAAtBpwF,EAAIumC,sBAA+BvmC,EAAIumC,cAC3CvmC,EAAMimC,EAAKisK,YAAYjsK,EAAKk8J,UAAWniM,EAAK/jB,EAAKgiN,GACjDh4J,EAAKg9J,eAAe10M,OAAOyR,GAGvBA,EAAI4mC,qBAAgC12D,IAAd8vB,EAAIgP,MAC5BozL,EAAUpiM,EAAI4mC,eAAe57B,QAAQhL,EAAIgP,OAClChP,EAAIqmC,cAAa+7J,EAAUpiM,EAAIqmC,aACpC+7J,IAAYE,IACd,EAAA50G,EAAAykH,aAAY/P,GAAWA,EAAQ3sN,OAAQuqB,EAAI0mC,aAAc1mC,EAAI2gM,eACxD3gM,CACT,CAEA,SAAgBivF,EAAa5gH,GAA4D,IAA9B+jO,EAAsBpiO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC3EqiO,EAAS,SACTC,EAAiB3jH,EAAA4jH,cAAcC,IACnC,MAAMpQ,EAAU0P,EAAWzjO,GACrBklD,EAAQm6D,EAAAxmD,UAAUr5C,OAAOu0M,EAAQ3sN,QACvC,IAAIM,EAAOw9C,EAAMx9C,KACbkG,EAAMs3C,EACV,MAAMilD,EAAQ,CAACjlD,GACf,GAAmB,OAAfA,EAAMx9C,KAER,OADAu8N,EAAiB3jH,EAAA4jH,cAAcE,QACxB,CACLJ,OAAQ,UACRt8N,KAAM,KACNquB,KAAMmvB,EACNm/K,WAAYtQ,EAAQ3sN,OACpB68N,iBACAK,QAAStkO,EAAMo4D,aAAe6rK,GAE3B,CAEL,GADmB,SAAf/+K,EAAMx9C,MAAkC,QAAfw9C,EAAMx9C,OAAgBs8N,EAAS,UACzC,OAAf9+K,EAAMx9C,KAAe,CACvB,IAAK1H,EAAMq4D,aAAc,MAAM,IAAIz0D,MAAM,sCACzC,IAAIsoK,EAAQ7sD,EAAAxmD,UAAUr5C,OAAOxf,EAAMq4D,cAChB,SAAf6zG,EAAMxkK,MAAkC,QAAfwkK,EAAMxkK,OAAgBs8N,EAAS,UAC5D75H,EAAM9iG,KAAK6kK,GACXt+J,EAAMs+J,EACNxkK,GAAQ,IAAIwkK,EAAMxkK,MACpB,CAEA,GAAiB,QAAbkG,EAAIlG,KAAgB,CACtB,IAAK1H,EAAMsyN,cAAe,MAAM,IAAI1uN,MAAM,wCAC1C,IAAIsoK,EAAQ7sD,EAAAxmD,UAAUr5C,OAAOxf,EAAMsyN,eAChB,QAAfpmD,EAAMxkK,OAAgBs8N,EAAS,UACnC75H,EAAM9iG,KAAK6kK,GACXt+J,EAAMs+J,EACNxkK,GAAQ,IAAIwkK,EAAMxkK,MACpB,CACA,MAAMquB,EAAOo0E,EAAMA,EAAMvoG,OAAS,GAClC,GAAkB,OAAdm0B,EAAKruB,MAA+B,QAAdquB,EAAKruB,KAC7B,MAAM,IAAI9D,MAAM,6CAClB,MACM+tB,EAAM,CACVjqB,OACAs8N,SACAjuM,OACAsuM,WALiBhlH,EAAAxmD,UAAU34C,OAAO6V,GAMlCkuM,iBACAK,QAAStkO,EAAMo4D,aAAe6rK,GAEhC,GAAe,WAAXD,IAAwBD,IAA2B/jO,EAAMu4D,eAC3D,MAAM,IAAI30D,MACR,6JAGJ,OAAO+tB,CACT,CACF,CAEa9xB,EAAAA,QAAWqxF,GAA2B/nF,KAAKwG,KAAKuhF,EAAS,GAatE,MAAMqzI,EAAkBjxM,GAAaskC,EAAK+pD,oBAAoBzhG,OAAOoT,GAyDrE,SAASkxM,EACPC,EACAzkO,EACAg6B,GAEA,IACI9yB,EADAE,EAAgBqL,EAAEihN,MAItB,GAAyB,YAArB+Q,EAAUT,OAAsB,CAClC,MAAMU,EAAmBD,EAAUH,UAAYhkH,EAAA4jH,cAAcE,QAAU,GAAK,GAC5E,GAAIpkO,EAAMi4D,kBAAmB,EAAAzoC,EAAAgxC,YAAWxgE,EAAMi4D,eAAgBzoC,EAAAixF,yBAC5Dv5G,EAAU,CAAC,IAAImpB,WAAWq0M,QACrB,KAAI1kO,EAAMm4D,cAEV,MAAM,IAAIv0D,MAAM,wCADrBsD,EArEN,SAAmBixD,EAA8BwsK,EAAiBC,GAChE,IAAKzsK,IAAkBA,EAAcv2D,OAAQ,MAAM,IAAIgC,MAAM,YAC7D,MAAMk0K,EAAQA,IAAM,IAAIznJ,WAAWs0M,GAI7BE,EAAQ1sK,EAAcv7B,MAC1B,CAACpsB,EAAGS,IAAMszN,EAAe/zN,EAAE,IAAI5O,OAAS2iO,EAAetzN,EAAE,IAAIrP,SAE/D,IAAK,MAAOuyB,EAAI2wM,KAAYD,EAAO,CAEjC,MAAMz9N,EAAS09N,EAAQr3N,MAAM,GAAI,GAC3Bs3N,EAAMD,EAAQA,EAAQljO,OAAS,GAC/BuvF,EAAOkuB,EAAAxmD,UAAUr5C,OAAOpY,GAE9B,IAAI2zN,EAAsB,GAC1B,GAAkB,UAAd5pI,EAAKzpF,KAAkB,CACzB,MAAM2Q,EAAI84E,EAAK94E,EACT/H,EAAI6gF,EAAK6zI,QAAQpjO,OAASyW,EAChC,IAAK,IAAItN,EAAI,EAAGA,EAAIsN,EAAGtN,IAAKgwN,EAAW1zN,KAAKywK,KAC5C,IAAK,IAAI/sK,EAAI,EAAGA,EAAIuF,EAAGvF,IAAKgwN,EAAW1zN,KAAKoL,EAAEihN,MAChD,MAAO,GAAkB,UAAdviI,EAAKzpF,KACd,IAAK,MAAMu9N,KAAQ9zI,EAAK6zI,QAASjK,EAAW1zN,KAAKywK,SAC5C,CACL,IAAK8sD,EAAe,MAAM,IAAIhhO,MAAM,mCACpC,MAAMqtN,GAAW,EAAA5xG,EAAA6lH,aAAY99N,EAAQ29N,GACrC,IAAK,MAAM5zN,KAAKyzN,EAAe,CAC7B,IAAKzzN,EAAEg0N,gBAAiB,SACxB,MAAMC,EAAgBtlH,EAAAM,OAAO5gG,OAAOpY,GAC9Bi+N,EAAYl0N,EAAE+O,OAAOklN,GAC3B,QAAkBvjO,IAAdwjO,EAAyB,SAC7B,MAAMC,EAAUF,EAAc7xI,QAAQxoF,IACpC,KAAK,EAAAykB,EAAA+xB,SAAQx2C,GAAI,OAAO,EACxB,IAEE,OADA,EAAAykB,EAAA8gM,gBAAevlN,EAAGykB,EAAAkwC,KAAKE,UAChB,CACT,CAAE,MAAOtuD,GACP,OAAO,CACT,KAEIi0N,EAAYp0N,EAAEg0N,gBAClB/9N,EACAi+N,EACAC,EAAQ78N,KAAK03D,GAAW,CAAC,CAAEA,SAAQ8wJ,YAAYn5C,QAEjD,GAAKytD,EACL,OAAOA,EAAUrtN,OAAOqsN,EAAepwM,GACzC,CACF,CAEA,OAAO4mM,EAAWptN,UAAUuK,OAAO,CAAC9Q,EAAQm9N,EAAepwM,IAC7D,CACA,MAAM,IAAIvwB,MAAM,uBAClB,CAgBgB4hO,CAAUxlO,EAAMm4D,cAAeusK,EAAkB1qM,EAAK4qM,cACJ,CAChE,KAAO,CAGL,MAAM9sD,EAAQA,IAAM,IAAIznJ,WAAW,IAC7Bo1M,EAAWA,IAAM,IAAIp1M,WAAW,IACtC,IAAIq1M,EAAcjzN,EAAEihN,MAChBiS,EAA6B,GACjC,MAAMC,EAAQnB,EAAU1uM,KAAKruB,KAC7B,GAAc,OAAVk+N,EAAgB,CAClB,MAAMvtN,EAAIosN,EAAU1uM,KAAK1d,EACnBytC,EAA+B,CAAC,GACtC,IAAK,IAAI/6C,EAAI,EAAGA,EAAIsN,EAAGtN,IAAK+6C,EAAIz+C,KAAKywK,KACrC4tD,EAAc5lH,EAAAM,OAAOlgG,OAAO4lC,EAC9B,MAAO,GAAc,OAAV8/K,EAETF,EAAc5lH,EAAAM,OAAOlgG,OAAO,CAAC43J,WACxB,GAAc,QAAV8tD,EACTF,EAAc5lH,EAAAM,OAAOlgG,OAAO,CAAC43J,IAAS2tD,WACjC,GAAc,SAAVG,EACTF,EAAcjzN,EAAEihN,MAChBiS,EAAe,CAAC7tD,IAAS2tD,UACpB,GAAc,YAAVG,IAAwB5rM,EAAKk6L,mBACtC,MAAM,IAAItwN,MAAM,kCACd6gO,EAAU/8N,KAAKm4C,SAAS,UAEtB6lL,EAAY9jO,QAAU6iO,EAAUJ,WAAWziO,SAC7C+jO,EAAe7lH,EAAAM,OAAO5gG,OAAOkmN,GAAaj9N,KAAKsC,IAC7C,GAAU,IAANA,EAAS,OAAO0H,EAAEihN,MACtB,IAAI,EAAAlkM,EAAA+xB,SAAQx2C,GAAI,OAAOA,EACvB,MAAM,IAAInH,MAAM,oBAAoBmH,IAAI,KAG5C46N,EAAeA,EAAaztN,OAAOusN,EAAUJ,aAEtB,WAArBI,EAAUT,SAAqB98N,EAAUy+N,GACzClB,EAAU/8N,KAAKkB,WAAW,WAC5BxB,EAAS04G,EAAAM,OAAOlgG,OAAO,CAAC4/F,EAAAM,OAAOlgG,OAAO,CAAC,EAAG,IAAImQ,WAAWb,EAAA+wC,OAAOzwC,eACvD20M,EAAU/8N,KAAKkB,WAAW,OACnCxB,EAAS04G,EAAAM,OAAOlgG,OAAO,IAAI4/F,EAAAM,OAAO5gG,OAAOkmN,GAAcjB,EAAUJ,aACxDI,EAAU/8N,KAAKkB,WAAW,SACL,WAArB67N,EAAUT,SAAqB58N,EAASs+N,EACrD,CACA,IAAIx0I,EAAS,IAAM,EAAI4uB,EAAAyxG,SAASrxM,OAAO9Y,GAAQxF,OAC3CikO,GAAe,EAKnB,OAJI3+N,IACFgqF,GAAU4uB,EAAAK,WAAWjgG,OAAOhZ,GAAStF,OACrCikO,GAAe,GAEV,CAAE30I,SAAQ20I,eACnB,CAyBA,SAASC,EAAU7/L,GAA+C,IAC5D7+B,EADwB4yB,EAAAr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAe,CAAC,EAAGyxB,EAAOzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG6tB,EAAAgxF,QAKzD,GAHI,WAAYv6E,IAAK,EAAAzW,EAAA+xB,SAAQtb,EAAE7+B,UAC7BA,EAAS6+B,EAAE7+B,QAET,YAAa6+B,EAAG,CAClB,GAAyB,kBAAdA,EAAEx/B,QACX,MAAM,IAAI7C,MAAM,mCAAmCqiC,EAAEx/B,WACvDW,EAASi4G,EAAAxmD,UAAU34C,QAAO,EAAAm/F,EAAA+B,SAAQhuF,GAAS5T,OAAOymB,EAAEx/B,SACtD,CACA,IAAKW,EAAQ,MAAM,IAAIxD,MAAM,kCAC7B,GAAwB,kBAAbqiC,EAAE1kC,OACX,MAAM,IAAIqC,MACR,kCACEqiC,EAAE1kC,mDACyC0kC,EAAE1kC,WAEnD,GAAI6F,IAAW4yB,EAAKg6L,qBAAyD,YAAlC30G,EAAAxmD,UAAUr5C,OAAOpY,GAAQM,KAClE,MAAM,IAAI9D,MACR,kIAIJ,OADKo2B,EAAKi6L,qBAAoB,EAAA50G,EAAAykH,aAAY18N,GACnCA,CACT,CA9CavH,EAAAA,QAAUsiH,CAAC3xG,EAAWS,KACjC,MAAMX,EAAIE,EAAIS,EACd,OAAIX,EAAI,IAAY,EACXA,EAAI,GAAW,EACjB,CAAC,EA0DV,MAAa8xG,EAgBXp0G,WAAAA,CACE8uB,EACQH,EACA3C,GAER,GAHQ,KAAA2C,QAAAA,EACA,KAAA3C,KAAAA,EAfF,KAAA+rM,gBAA4B,GAiBH,kBAApB/rM,EAAKgsM,WACd,MAAM,IAAIpiO,MACR,+BACEo2B,EAAKgsM,uDACsChsM,EAAKgsM,eAWtD,MAEMC,OAA0BpkO,IAAdm4B,EAAKksM,KAAqBzgO,OAAO0gO,KAA2BnsM,EAAKksM,KACnF,GAAyB,kBAAdD,EACT,MAAM,IAAIriO,MACR,yBAAyBo2B,EAAKksM,iDAAiDlsM,EAAKksM,SAMxF,MAAME,OAAoCvkO,IAA1Bm4B,EAAKqsM,iBAAiC,GAAKrsM,EAAKqsM,iBAChE,GAAuB,kBAAZD,EACT,MAAM,IAAIxiO,MACR,qCAAqCo2B,EAAKqsM,6DAA6DrsM,EAAKqsM,qBAKhH,GADAtmO,KAAKmmO,KAAOD,EAAYG,OACIvkO,IAAxBm4B,EAAKssM,iBAAiCp8N,MAAMi3B,QAAQnH,EAAKssM,gBAC3D,MAAM,IAAI1iO,MAAM,oCAAoCo2B,EAAKssM,kBAC3D,MAAMlzM,EAAU4G,EAAK5G,SAAW5D,EAAAgxF,QAChC,IAAIj/G,EAAS,GAETglO,EAAa,GACjB,IAAK,MAAMtgM,KAAKtJ,EAAS,CACvB,MAAMv1B,EAAS0+N,EAAU7/L,EAAGjM,EAAMA,EAAK5G,SACvCmzM,GAAc,GAAK,EAAIzmH,EAAAyxG,SAASrxM,OAAO9Y,GAAQxF,OAC/CL,GAAU0kC,EAAE1kC,MACd,CACA,GAAkC,kBAAvBy4B,EAAKwsM,cACd,MAAM,IAAI5iO,MAAM,mCAAmCo2B,EAAKwsM,iBAC1D,IAAIC,EACFF,EACA,GACA,EAAIzmH,EAAAyxG,SAASrxM,OAAOm/F,EAAAxmD,UAAU34C,QAAO,EAAAm/F,EAAA+B,SAAQhuF,GAAS5T,OAAOwa,EAAKwsM,iBAAiB5kO,OACrF2kO,GAAc,EAAIzmH,EAAAgxG,eAAe5wM,OAAOyc,EAAQ/6B,QAAQA,OAExD6kO,GAAgB,EAAI3mH,EAAAgxG,eAAe5wM,OAAOyc,EAAQ/6B,OAAS,GAAGA,OAC9D7B,KAAKwmO,WAAaA,EAClBxmO,KAAK0mO,aAAeA,EACpB1mO,KAAKwB,OAASA,EACd,MAAMmlO,EAAYx8N,MAAM3F,KAAKu4B,GAC7B,GAAI9C,EAAKssM,eACP,IAAK,IAAIv7N,EAAI,EAAGA,EAAIivB,EAAKssM,eAAe1kO,OAAQmJ,IAC9ChL,KAAKgmO,gBAAgB1+N,KAAKq/N,EAAUr/N,KAAK2yB,EAAKssM,eAAev7N,IAAM,GAEvE,MAAM47N,EAAY,IAAIh8M,IACtB5qB,KAAK6mO,iBAAmBF,EAAUj+N,KAAKsC,IACrC,MAAM87N,EAAanD,EAAe34N,OAAGlJ,OAAWA,EAAWm4B,EAAKi6L,qBAChE,EAAA3zG,EAAAwmH,iBAAgBD,GAChB,MAAM98N,EAAM,GAAG/E,EAAA6B,IAAIqZ,OAAO2mN,EAAW9vK,SAAU8vK,EAAWlmM,QAC1D,IAAK3G,EAAK+sM,eAAiBJ,EAAUt6M,IAAItiB,GACvC,MAAM,IAAInG,MAAM,gDAAgDmG,KAClE48N,EAAUrkO,IAAIyH,GACd,MAAM06N,EAAY7jH,EAAaimH,EAAY7sM,EAAK+pM,wBAC1CnvL,EAAO6uL,EAAWoD,GAClBG,EAAWxC,EAAcC,EAAWoC,EAAY9mO,KAAKi6B,MACrD/2B,EAAQ2xC,EAAKrzC,OAASy4B,EAAKgsM,WAAavgO,QAAO,EAAA5F,EAAAonO,SAAQD,EAAS91I,SACtE,MAAO,CAAEuzI,YAAWoC,aAAYtlO,OAAQqzC,EAAKrzC,OAAQ0B,QAAO+jO,WAAU,GAE1E,CACQE,aAAAA,CAAcloK,GACpB,IAAK9vC,OAAOivC,cAAca,IAAQ,EAAIA,GAAOA,GAAOj/D,KAAK6mO,iBAAiBhlO,OACxE,MAAM,IAAIgC,MAAM,qBAAqBo7D,KACvC,OAAOA,CACT,CACQmoK,WAAAA,CAAYp0E,GAClB,OAAOA,EAAQtlJ,QAAQmvB,MAAK,CAACpsB,EAAGS,KAC9B,MAAM4tG,EAAK9+G,KAAK6mO,iBAAiB7mO,KAAKmnO,cAAc12N,IAC9C42N,EAAKrnO,KAAK6mO,iBAAiB7mO,KAAKmnO,cAAcj2N,IAC9CnK,GAAM,EAAA0oB,EAAAsxF,cAAajC,EAAGgoH,WAAW9vK,KAAOqwK,EAAGP,WAAW9vK,MAC5D,OAAY,IAARjwD,EAAkBA,EACf+3G,EAAGgoH,WAAWlmM,MAASymM,EAAGP,WAAWlmM,KAAM,GAEtD,CACQ0mM,WAAAA,CAAY1qM,GAClB,MAAM2qM,EAAU3qM,EAAQl0B,KAAKw9B,GAAM6/L,EAAU7/L,EAAGlmC,KAAKi6B,KAAMj6B,KAAKi6B,KAAK5G,WAErE,OADgBuJ,EAAQl0B,KAAI,CAAC+2B,EAAG7uB,IAAMA,IACvBisB,MAAK,CAACpsB,EAAGS,KACtB,MAAMs2N,EAAK5qM,EAAQnsB,GAAGjP,OAChBimO,EAAK7qM,EAAQ1rB,GAAG1P,OAChBuF,GAAM,EAAAjH,EAAAsiH,SAAQolH,EAAIC,GACxB,OAAY,IAAR1gO,EAAkBA,GACf,EAAA0oB,EAAAsxF,cAAawmH,EAAQ92N,GAAI82N,EAAQr2N,GAAG,GAE/C,CACQw2N,UAAAA,CAAWC,GACjB,OAAO3nO,KAAKi6B,KAAKgsM,WAAavgO,QAAO,EAAA5F,EAAAonO,SAAQS,GAC/C,CAGA,WAAIC,GACF,OAAO5nO,KAAK6mO,iBACTn+N,KAAI,CAACynI,EAAIv/H,IAAMA,IACfisB,MAAK,CAACpsB,EAAGS,KAAM,EAAApR,EAAAsiH,SAAQpiH,KAAK6mO,iBAAiB31N,GAAGhO,MAAOlD,KAAK6mO,iBAAiBp2N,GAAGvN,QACrF,CACA,YAAI2kO,GACF,OAAO7nO,KAAK4nO,QAAQh6N,SACtB,CAIA,UAAIk6N,GACF,OAAO9nO,KAAK6mO,iBAAiBn+N,KAAI,CAACynI,EAAIv/H,IAAMA,GAC9C,CACA,UAAIm3N,GACF,OAAO/nO,KAAK8nO,OAAOl6N,SACrB,CAIAo6N,UAAAA,CAAWh1E,GAAkE,IAA/C6hC,EAAKjzL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAUqmO,IAAYrmO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAAS6G,EAAG7G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAS/DuvF,EAASnxF,KAAKi6B,KAAKiuM,aAAeloO,KAAK0mO,aAAe1mO,KAAKwmO,WAC3DV,GAAe,EACf3kM,EAAM,EACNgnM,EAAe,GACnB,MAAMC,EAAepoO,KAAKwB,OACpBowB,EAAM,GACZ,IAAIlwB,EACJ,IAAK,MAAMu9D,KAAOj/D,KAAKgmO,gBAAiB,CACtChmO,KAAKmnO,cAAcloK,GACnB,MAAM,SAAEgoK,EAAQ,OAAEzlO,GAAWxB,KAAK6mO,iBAAiB5nK,GACnD,IAAIopK,EAAYl3I,EAAS81I,EAAS91I,QAC7B20I,GAAgBmB,EAASnB,eAAcuC,GAAa,GACzD,MAAMC,EAAcD,EAAY,EAAItoH,EAAAgxG,eAAe5wM,OAAOghB,GAAKt/B,OAQ/D,GAPAH,EAAM1B,KAAK0nO,WAAWY,GACtBn3I,EAASk3I,EACLpB,EAASnB,eAAcA,GAAe,GAC1C3kM,IACAgnM,GAAgB3mO,EAChBowB,EAAItqB,KAAK23D,IAEJx2D,GAAO2/N,EAAe1mO,GAAOymO,EAChC,MAAO,CAAEn1E,QAASphI,EAAKlwB,MAAKyvF,OAAQm3I,EAAahyM,MAAO6xM,EAC5D,CACA,IAAK,MAAMlpK,KAAO+zF,EAAS,CACzBhzJ,KAAKmnO,cAAcloK,GACnB,MAAM,SAAEgoK,EAAQ,OAAEzlO,EAAM,MAAE0B,GAAUlD,KAAK6mO,iBAAiB5nK,GAC1D,IAAIopK,EAAYl3I,EAAS81I,EAAS91I,QAC7B20I,GAAgBmB,EAASnB,eAAcuC,GAAa,GACzD,MAAMC,EAAcD,EAAY,EAAItoH,EAAAgxG,eAAe5wM,OAAOghB,GAAKt/B,OAG/D,GAFAH,EAAM1B,KAAK0nO,WAAWY,KAElBzzC,GAASrzL,EAAS2mO,EAAeC,EAAe1mO,EAAM1B,KAAKmmO,SAI3D8B,GAAgB/kO,GAAS,MAC7BiuF,EAASk3I,EACLpB,EAASnB,eAAcA,GAAe,GAC1C3kM,IACAgnM,GAAgB3mO,EAChBowB,EAAItqB,KAAK23D,IAEJx2D,GAAO2/N,EAAe1mO,GAAOymO,GAChC,MAAO,CAAEn1E,QAASphI,EAAKlwB,MAAKyvF,OAAQm3I,EAAahyM,MAAO6xM,EAC5D,CACA,GAAI1/N,EAAK,CAEP,MAAO,CAAEuqJ,QAASphI,EAAKlwB,MAAKyvF,OADVA,EAAS,EAAI4uB,EAAAgxG,eAAe5wM,OAAOghB,GAAKt/B,OACXy0B,MAAO6xM,EACxD,CAEF,CAGApjJ,UACE,MAAM,QAAE6iJ,GAAY5nO,KACd60L,EAAQ70L,KAAKgoO,WAAWJ,GAAS,GAAM,GAC7C,OAAI/yC,GACG70L,KAAKgoO,WAAWJ,EACzB,CAEQW,MAAAA,CAAOh7J,GACb,GAAiB,QAAbA,EACF,OAAOvtE,KAAKgoO,WACVhoO,KAAK6mO,iBAAiBn+N,KAAI,CAAC+2B,EAAG7uB,IAAMA,KACpC,GACA,GACA,GAGJ,GAAiB,YAAb28D,EAAwB,OAAOvtE,KAAK+kF,UACxC,MAAMphF,EAA6C,CACjD6kO,OAAQA,IAAMxoO,KAAK8nO,OACnBW,OAAQA,IAAMzoO,KAAK+nO,OACnBW,SAAUA,IAAM1oO,KAAK6nO,SACrBc,QAASA,IAAM3oO,KAAK4nO,SAEtB,GAAIr6J,EAAS1kE,WAAW,SAAU,CAChC,MAAO+/N,EAAWvvM,GAAQk0C,EAAS7/D,MAAM,GAAGnF,MAAM,KAClD,IAAK5E,EAAKilO,GAAY,MAAM,IAAI/kO,MAAM,oCAAoC0pE,KAC1EA,EAAWl0C,EACX,MAAMw7J,EAAQ70L,KAAKgoO,WAAWrkO,EAAKilO,MAAc,GAAM,GACvD,GAAI/zC,EAAO,OAAOA,CACpB,CACA,GAAItnH,EAAS1kE,WAAW,SAAU,CAChC,MAAMggO,EAAYt7J,EAAS7/D,MAAM,GACjC,IAAK/J,EAAKklO,GAAY,MAAM,IAAIhlO,MAAM,oCAAoC0pE,KAC1E,OAAOvtE,KAAKgoO,WAAWrkO,EAAKklO,KAC9B,CACA,MAAM,IAAIhlO,MAAM,oCAAoC0pE,IACtD,CAEA5+C,MAAAA,CAAO4+C,GACL,MAAM78D,EAAI1Q,KAAKuoO,OAAOh7J,GACtB,IAAK78D,EAAG,OACR,MAAM,QAAEsiJ,EAAO,OAAE7hE,EAAM,MAAE76D,GAAU5lB,EACnC,IAAIo4N,EAAa9oO,KAAKi6B,KAAKiuM,aAC3B,MAAMxB,EAAe1mO,KAAKi6B,KAAKiuM,aAC3B/2I,EACAA,GAAUnxF,KAAK0mO,aAAe1mO,KAAKwmO,YAEjCuC,EAAY/oO,KAAK0nO,WAAWhB,GAClC,IAAIhlO,EAAMgP,EAAEhP,IACZ,MAAMsnO,EAAS1yM,EAAQt2B,KAAKwB,OAASunO,EACjCC,EAAShpO,KAAKmmO,OAAM2C,GAAa,GACrC,IAAI/rM,EAASi2H,EACTp2H,EAAUzyB,MAAM3F,KAAKxE,KAAK48B,SAC9B,GAAIksM,EAAY,CAGd,GAFApnO,EAAMqnO,EAEFC,EAAS,GAAI,MAAM,IAAInlO,MAAM,qCAAqCmlO,KACtEpsM,EAAQt1B,KAAK,CAAEZ,QAAS1G,KAAKi6B,KAAKwsM,cAAejlO,OAAQwnO,GAC3D,CACIhpO,KAAKi6B,KAAK4pM,QACZ9mM,EAAS/8B,KAAKonO,YAAYrqM,GAC1BH,EAAU58B,KAAKsnO,YAAY1qM,GAASl0B,KAAKsC,GAAM4xB,EAAQ5xB,MAEzD,MAAM4mB,EAAM,CACVmL,OAAQA,EAAOr0B,KAAKsC,GAAMhL,KAAK6mO,iBAAiB77N,GAAG87N,aACnDlqM,UACAl7B,MACAyvF,OAAQnxF,KAAKi6B,KAAKiuM,aAAex3N,EAAEygF,OAASu1I,EAC5CsC,SAAUF,GAEZ,IAAIjiO,EACJ,GAAI7G,KAAKi6B,KAAK2pM,SAAU,CACtB,MAAM,OAAE7mM,EAAM,QAAEH,GAAYhL,EAC5B/qB,EAAK,IAAI05G,EAAAj+G,YAAYtC,KAAKi6B,MAC1B,IAAK,MAAMjvB,KAAK+xB,EAAQl2B,EAAG6xD,SAAS1tD,GACpC,IAAK,MAAMk7B,KAAKtJ,EACd/1B,EAAG8xD,UAAU,IAAKzyB,EAAG7+B,OAAQ0+N,EAAU7/L,EAAGlmC,KAAKi6B,KAAMj6B,KAAKi6B,KAAK5G,UACnE,CACA,OAAOrwB,OAAO0nF,OAAO94D,EAAK,CAAE/qB,MAE9B,EAlSF/G,EAAAA,WAAAuiH,2gBCvUA7yG,EAAA1O,EAAA,KAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,+BCDAkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQk3I,cA8DR,SAAuBvmI,EAAGS,GACtB,IAAI6H,EAEJ,MAAMkwN,EAAWx4N,EAAEkhI,KAAOlhI,EAAEkhI,KAAK9vI,OAAS,EACpCqnO,EAAWh4N,EAAEygI,KAAOzgI,EAAEygI,KAAK9vI,OAAS,EAE1C,GADAkX,EAAMmwN,EAAWD,EACL,IAARlwN,EACA,OAAOA,EAGX,MAAMowN,EAAQ14N,EAAEslI,UAAYtlI,EAAEslI,oBAAoBlpH,KAAOpc,EAAEslI,SAASi8B,UAAYo3D,EAC1EC,EAAQn4N,EAAE6kI,UAAY7kI,EAAE6kI,oBAAoBlpH,KAAO3b,EAAE6kI,SAASi8B,UAAYo3D,EAEhF,GADArwN,EAAMowN,EAAQE,EACF,IAARtwN,EACA,OAAOA,EAIX,OADAA,GAAOtI,EAAEulI,eAAiB,IAAM9kI,EAAE8kI,eAAiB,GAC5Cj9H,CACX,EA5EA,MAAMqwN,EAAW,qLCPjB,MAAAtqN,EAAAhe,EAAA,OAGA8wD,EAAA9wD,EAAA,OASahB,EAAAA,2BAA4B,EAAAgf,EAAAY,QAA4B,EAAC,EAAAZ,EAAAa,IAAG,WAE5D7f,EAAAA,2BAA6BA,EAAAwpO,0BAA0BppN,KAEpEpgB,EAAAA,uBAAA,SAAuCuB,GACnC,MAAM0wD,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAcs3K,oBAAqBloO,EAAK8wD,SAC/E,OAAsB,OAAlBJ,EACOjyD,EAAAwpO,0BAA0B7pN,OAAOsyC,GAEjC,IAEf,gCCtBA/uD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ+0I,YA2CR,SAAqBxnI,EAAQm8N,EAAcC,GACvC,GAAc,MAAVp8N,GAAkC,MAAhBm8N,EAClB,OAEJ,IAAIE,EACAC,GACiB,IAAjBF,GACAC,GAAO,EAAIr3F,EAAkBoC,iBAAiBpnI,GAC9Cs8N,GAAU,EAAIt3F,EAAkBoC,iBAAiB+0F,KAGjDE,EAAOr8N,EACPs8N,EAAUH,GAEd,GAAY,MAARE,GAA2B,MAAXC,EAChB,OAWJ,GAAID,GAAQC,EACR,OAAO,EAIX,MAAM1qK,EAAMyqK,EAAK7kG,YAAY8kG,GAC7B,GAAI1qK,GAAO,EACP,OAAO,EAKX,GAAIyqK,EAAK7nO,SAAW8nO,EAAQ9nO,OAASo9D,EACjC,OAAO,EAIX,GAAqC,MAAjCyqK,EAAK5gO,UAAUm2D,EAAM,EAAGA,GACxB,OAAO,EAGX,OAAQ2qK,EAAmBt1N,KAAKo1N,EACpC,EA1FA,MAAMr3F,EAAoBvxI,EAAQ,OAK5B8oO,EAAqB,wqCCP3B5mO,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmqH,oBAAiB,EAmEzBnqH,EAAQmqH,eAlER,MACIh8G,WAAAA,CAAY47N,GACR7pO,KAAK89G,SAAW,CAAC,EACjB,IAAK,IAAIgsH,KAAYD,EACjB,GAAuB,MAAnBC,EAASxhO,OAEb,IAAK,IAAIia,KAAWunN,EAASznN,OAAQ,CACjC,MAAM,QAAE3b,EAAO,SAAEjF,GAAaqoO,EAASznN,OAAOE,GAC9CviB,KAAK89G,SAASv7F,KAAa,CAAC,EAC5BviB,KAAK89G,SAASv7F,GAAS7b,EAAQjC,YAAc,CACzC6D,OAAQwhO,EAASxhO,OACjB7G,WAER,CAER,CASAipL,QAAAA,CAASppK,EAAiBnZ,EAAOC,GAC7B,IAAIi+F,EAAel+F,EAAM1D,WACzB,MAAMslO,EAAc/pO,KAAK89G,SAASx8F,GAClC,GAAmB,MAAfyoN,EACA,MAAM,IAAIlmO,MAAM,mBACpB,MAAM00N,EAAOwR,EAAY1jI,GACzB,GAAY,MAARkyH,EACA,MAAM,IAAI10N,MAAM,mBACpB,GAAI00N,EAAKjwN,OAAOO,WAAW,WAAY,CACnC,MAAMmhO,EAAM/rH,WAAWs6G,EAAKjwN,OAAOQ,UAAU,IAC7C,OAAOzE,QAAQC,QAAQoB,OAAO0D,KAAKC,MAAY,IAAN2gO,GAAevlO,SAAS,KACrE,CACA,OAAOzE,KAAKkI,WAAWqwN,EAAMnwN,EACjC,CAOA0iL,WAAAA,CAAY1iL,GACR,OAAOpI,KAAKm+G,cAAc/1G,EAC9B,CAUA+vN,WAAAA,CAAY72M,EAAiBnZ,GACzB,MAAM4hO,EAAc/pO,KAAK89G,SAASx8F,GAClC,GAAmB,MAAfyoN,EACA,MAAM,IAAIlmO,MAAM,mBACpB,MAAM00N,EAAOwR,EAAY5hO,EAAM1D,YAC/B,GAAY,MAAR8zN,EACA,MAAM,IAAI10N,MAAM,mBACpB,MAAuB,YAAhB00N,EAAKjwN,QAAwB,EAAIiwN,EAAK92N,QACjD,uDClEJuB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmqO,oBAAiB,EACzB,MAAM72K,EAAWtyD,EAAQ,OACnBopO,EAAgBppO,EAAQ,MACxBy4J,EAAkBz4J,EAAQ,OAC1BgmH,EAAchmH,EAAQ,OACtBmE,EAASnE,EAAQ,OACjBugB,EAAsBvgB,EAAQ,OAC9BuyD,EAAavyD,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClBqrD,EAAoBrrD,EAAQ,OAC5B4qB,EAAiB5qB,EAAQ,OACzBwyD,EAAUxyD,EAAQ,OAClByK,EAAezK,EAAQ,MAC7B,MAAMmpO,UAAuB1wE,EAAgBC,cACzCvrJ,WAAAA,CAAYqT,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsBC,EAASzT,GACvG,MAAXyT,IACAA,EAAU,CAAC,GACfA,EAAQuoN,wBAA0B,OAClCvoN,EAAQwoN,mBAAqB,GAC7BxoN,EAAQyoN,kBAAoB,IAC5BjkO,MAAMkb,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsBC,EAASzT,GACpHnO,KAAK4lB,KAAOytC,EAAWS,SAASC,SAChC/zD,KAAK8lB,iBAAmBokN,EAAch3K,WAC1C,CACA,6BAAMo3K,CAAwBn/M,GAC1B,MAAM5c,QAAcvO,KAAKkO,eAAeM,MAAM,CAAC,CAAC,CAAExE,IAAK,OAAQ9G,MAAOlD,KAAK4lB,MAAQ,CAAE5b,IAAK,cAAe9G,MAAOioB,MAAkBvc,GAAQ,IAAI5O,KAAK8lB,iBAAiB9lB,KAAM4O,KAC1K,IAAK,IAAI1L,KAASqL,EACd,GAAIrL,EAAMxC,QAAU6K,EAAa0gD,eAAeY,SAAW3pD,EAAMxC,QAAU6K,EAAa0gD,eAAeuC,aACnG,MAAM,IAAIs4D,EAAY6C,UAAU,sCAE5C,CAUA4gH,qBAAAA,CAAsB/oO,EAAQgpO,EAAiBC,GAC3C,OAAO/kO,OAAO8kO,GAAmBxqO,KAAK4hB,QAAQwoN,kBACvC5oO,EAASkE,OAAO+kO,GAAkBzqO,KAAK4hB,QAAQyoN,iBAAmB,QAC7E,CAcA,wBAAM/4G,CAAmBxjG,EAAM48M,EAAUviO,EAAOopH,EAAI3vG,EAASje,EAAMgnO,GAC/D,GAAI78M,EAAK++F,qBAAuBjrG,EAAQgrG,OACpC,MAAM,IAAIvrG,EAAoBkD,kBAAkB,iCACpD,GAAqB,MAAjBomN,GAAyB78M,EAAKwI,QAAUq0M,EACxC,MAAM,IAAItpN,EAAoBkD,kBAAkB,wCACpD,MAAM+G,EAAYtrB,KAAKwhB,SAASqkF,eAAethG,EAAOC,KAAKkmO,EAAS91K,WAAWC,aAAc,QAC7F,GAAIlxD,EAAK6yC,cAAgB1oB,EAAKwI,QACzB/xB,EAAOC,KAAKb,EAAKspD,eAAgB,OAAO1sC,OAAO+K,IAChD3nB,EAAKi/D,cAAgBhhD,EAAQktG,iBAC7BnrH,EAAK+D,YAAczC,EAAO2C,cAAc66F,OACvC9+F,EAAKm/D,YACLn/D,EAAKg/D,QAAQx6D,IACdxE,EAAKw0C,eAAiBo5E,EAAGp6E,WAAWn3C,KAAKshB,iBACzC,MAAM,IAAID,EAAoBkD,kBAAkB,wBAExD,CAgBA,0BAAMqmN,CAAqBlnO,EAAQif,EAAY4uG,EAAI/9D,EAAIk3K,EAAU9oN,EAASipN,EAAYn9M,EAAOkgG,GACzF,MAAMtgG,EAAkBI,aAAiBkiC,gBAAkBliC,GAAQ,EAAIvoB,EAAQooB,uBAAuBG,GACtGm9M,EAAW1wE,oBAAsBn6J,KAAKo6J,+BAA+Bz3I,EAAY4uG,EAAIjkG,GACrF,IACI,MAAM,gBAAE+kG,EAAe,KAAEvkG,SAAe,EAAI3oB,EAAQke,iBAAgBhU,UAChE,MAAM,iBAAE0T,EAAgB,SAAE4Q,GAAaw4B,EAAkBgD,gBAAgB0/D,YAAY7uH,KAAKshB,gBAAiBiwG,EAAGhlG,IAAK,CAC/G+1C,QAAS5+D,EACT8vD,KACAo5D,aAAchrG,EAAQgrG,OACtBkC,gBAAiBltG,EAAQktG,gBACzB3mH,MAAOwa,EAAWxa,MAClB3B,QAASqkO,EAAW3nN,eACpB0qG,oBACD5tH,KAAK4hB,QAAQ0wG,mBAAoBhlG,EAAgBb,SAAQ8lG,EAAa,IAAY,MACrF,MAAO,CACHF,gBAAiBryH,KAAK8iB,iBAAiBC,GACvC+K,WAAY6F,EACf,GACF,MAAMpiB,GAAKA,aAAama,EAAe2C,cAAcf,EAAgBb,QAClEq+M,GAAaplO,OAAOglO,EAASt2K,eAAiB,MAAQ,MACtD1b,EAAW5qB,EAAKioB,QAAUjoB,EAAK8+F,OAC/BjpH,EAAO,IAAI3D,KAAK2hB,qBAAqBmM,EAAKnqB,MAChDA,EAAK4+D,WAAW7+D,SACV1D,KAAKsxH,mBAAmBxjG,EAAM48M,EAAU/nN,EAAWxa,MAAOopH,EAAI3vG,EAASje,GAC7E,MAAOuyC,EAAas8E,EAAiB/wD,SAAoBp9D,QAAQoE,IAAI,CACjEzI,KAAKyjB,oBAAoB8tG,EAAGC,SAASn+D,EAAWS,SAASC,WAAW,EAAM+2K,EAAWnnO,EAAK6yC,YAAa7zB,EAAWxa,MAAO,CAAE4tC,QAASjoB,EAAKioB,QAAS7xB,WAAY4J,EAAK8+F,OAAQl0E,YAAYmyL,EAAW3wE,qBAAsB5sI,EAAgBb,QACxOzsB,KAAKijB,wBAAwBtf,EAAMmqB,EAAM+8M,EAAW3nN,eAAgBmvG,EAAiB/kG,EAAgBb,QACrGo+M,EAAW1wE,oBAEf7sI,EAAgBb,OAAOoB,iBACvB0jG,EAAG9vD,WAAW9+C,EAAWxa,MAAM1D,YAAcg9D,EAC7C,MAAMywD,EAAQ,IAAIg4G,EAAch3K,YAAYlzD,KAAM,CAC9Ck2C,cACA3pB,IAAKglG,EAAGhlG,IACR6jC,OAAQoiE,EACRz8E,QAASjoB,EAAKioB,QACdvvC,cAAeqkO,EAAW3nN,eAC1B+1B,cAAenrB,EACfnqB,OACAugB,WAAY4J,EAAK8+F,OACjBxgE,cAAet+B,EAAK++F,eACpBt5D,WAAYzlC,EAAKylC,WACjBC,KACAq6D,SAAS,IAGb,aADMqE,EAAMQ,QACLR,CACX,CACA,MAAO3gH,GAEH,MADA+b,EAAgBI,MAAMnc,GAChBA,CACV,CACJ,CAaA,YAAM7H,CAAOhG,EAAQqnO,EAAkBpoN,EAAYivG,EAAKhwG,EAASgsG,EAAkBxlH,EAAayiO,GAC5FjpN,IAAY,CAAC,EACbA,EAAQ0hK,gBAAkBtjL,KAAK4hB,QAAQuoN,sBACvCvoN,EAAQktG,kBAAoBppH,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,KAAQlL,EAAQ0hK,eAC3E,MAAMonD,GAAW,EAAIt3K,EAAS3zC,QAAQsrN,GACtC,GAA8B,MAA1BL,EAASt2K,cACT,MAAM,IAAI0yD,EAAY6C,UAAU,kCACpC,MAAMmhH,GAAaplO,OAAOglO,EAASt2K,eAAiB,MAAQ,MAC5DxyC,EAAQgrG,SAAW5sH,KAAKuqO,sBAAsBO,EAAWlpN,EAAQ2hK,kBAAmB3hK,EAAQ4hK,qBACtFxjL,KAAKsqO,wBAAwBI,EAAS91K,WAAWC,cACvD,MAAMvpC,EAAYtrB,KAAKwhB,SAASqkF,eAAethG,EAAOC,KAAKkmO,EAAS91K,WAAWC,aAAc,QACvFg9D,GAAmB,EAAI1sH,EAAQooB,uBAAuBnlB,GAM5D,OALkB,MAAdyiO,IACAA,EAAa,CACT3wE,qBAAsBl6J,KAAK0iB,cAAcC,EAAYkvG,EAAiBplG,QACtEvJ,eAAgBljB,KAAKgyH,gBAAgBtuH,EAAQif,EAAY2I,EAAU7mB,SAAS,OAAQotH,KAErFD,EAAIlpH,KAAI6oH,IACJ,CACHU,aAAcV,EACdW,MAAOlyH,KAAK4qO,qBAAqBlnO,EAAQif,EAAY4uG,EAAIw5G,EAAkBL,EAAU9oN,EAASipN,EAAYh5G,EAAiBplG,OAAQmhG,MAG/I,CASA,iBAAMo9G,CAAYv3K,EAAOrrD,GACrB,GAAuB,kBAAXqrD,EACR,OAAOA,EACX,MAAM7hC,QAAY0hC,EAAQ4B,MAAMH,SAAStB,GAAO,EAAMzzD,KAAK4hB,QAAQk4H,kBAAmB1xI,GACtF,GAAW,MAAPwpB,EACA,MAAM,IAAIk1F,EAAY6C,UAAU,iBACpC,GAAgB,eAAZ/3F,EAAIkzB,IACJ,MAAM,IAAIgiE,EAAY6C,UAAU,mBACpC,OAAO/3F,CACX,CAeA,iCAAMq5M,CAA4BvnO,EAAQif,EAAYgmG,EAAY4I,EAAI25G,EAAStpN,EAASipN,EAAYziO,EAAawlH,GAC7G,MAAMtgG,GAAkB,EAAInoB,EAAQooB,uBAAuBnlB,GACrD+xJ,EAAoBn6J,KAAKo6J,+BAA+Bz3I,EAAY4uG,EAAIjkG,GAC9E,IACI,MAAM,gBAAE+kG,EAAe,YAAE84G,SAAsB,EAAIhmO,EAAQke,iBAAgBhU,UACvE,MAAM,iBAAE0T,EAAgB,SAAE4Q,GAAaw4B,EAAkBgD,gBAAgB6/D,sBAAsBhvH,KAAKshB,gBAAiBiwG,EAAGhlG,IAAK,CACzHpkB,MAAOwa,EAAWxa,MAClBm6D,QAAS5+D,EACT8vD,GAAI03K,EACJ1pO,OAAQmhB,EAAWnhB,OACnBorH,aAAchrG,EAAQgrG,OACtBkC,gBAAiBltG,EAAQktG,gBACzBlB,oBACD5tH,KAAK4hB,QAAQ0wG,mBAAoBhlG,EAAgBb,SAAQ8lG,EAAa,IAAY,MACrF,MAAO,CACHF,gBAAiBryH,KAAK8iB,iBAAiBC,GACvCooN,kBAAmBx3M,EACtB,GACF,MAAMpiB,GAAKA,aAAama,EAAe2C,cAAcf,EAAgBb,QACxE,GAAI0+M,EAAY3pO,QAAU,GACtB,MAAM,IAAI6f,EAAoBkD,kBAAkB,8CACpD,MAAM7S,EAAMhM,OAAOijH,EAAWC,aAAe,MACvCj3G,EAAMjM,OAAOijH,EAAW7sF,aAAe,MAC7C,GAAIqvM,EAAY3pO,OAASkQ,EACrB,MAAM,IAAIo1G,EAAY6C,UAAU,4BACpC,GAAIwhH,EAAY3pO,OAASmQ,EACrB,MAAM,IAAIm1G,EAAY6C,UAAU,4BACpC,MAAM,QAAEN,EAAO,cAAEC,EAAa,cAAE51D,SAAwBJ,EAAQ4B,MAAM8zD,YAAYL,EAAYwiH,EAAY3pO,OAAQogB,EAAQ8Y,QAAS16B,KAAK4hB,QAAQk4H,kBAAmBxsH,EAAgBb,QAC7KqB,QAAa,EAAI3oB,EAAQke,iBAAiBkvG,GAAepmE,EAAkBgD,gBAAgB4/D,mBAAmBwC,EAAGhlG,IAAK,CACxHinC,GAAI61D,EACJ0D,MAAOo+G,EAAYp+G,MACnBvmH,QAASqkO,EAAW3nN,eACpB0qG,oBACD5tH,KAAK4hB,QAAQ0wG,mBAAoBhlG,EAAgBb,SAAQ8lG,EAAa,IAAY,OAAO,KAAM7mG,EAAe2C,aAAcf,EAAgBb,QACzIisB,EAAW5qB,EAAKioB,QAAUjoB,EAAK8+F,OAC/BjpH,EAAO,IAAI3D,KAAK2hB,qBAAqBmM,EAAKnqB,MAChDA,EAAK4+D,WAAW7+D,SACV1D,KAAKsxH,mBAAmBxjG,EAAMw7F,EAAe3mG,EAAWxa,MAAOopH,EAAI3vG,EAASje,EAAMgf,EAAWnhB,QACnG,MAAO00C,EAAas8E,EAAiB/wD,SAAoBp9D,QAAQoE,IAAI,CACjEzI,KAAKyjB,oBAAoB8tG,EAAGC,SAASn+D,EAAWS,SAASC,WAAW,EAAMo3K,EAAY3pO,OAAQmC,EAAK6yC,YAAa7zB,EAAWxa,MAAO,CAAE4tC,QAASjoB,EAAKioB,QAAS7xB,WAAY4J,EAAK8+F,OAAQl0E,YAAYmyL,EAAW3wE,qBAAsB9xJ,GACjOpI,KAAKijB,wBAAwBtf,EAAMmqB,EAAM+8M,EAAW3nN,eAAgBmvG,EAAiB/kG,EAAgBb,QACrG0tI,IAEJ7sI,EAAgBb,OAAOoB,iBACvB0jG,EAAG9vD,WAAW9+C,EAAWxa,MAAM1D,YAAcg9D,EAC7C,MAAMywD,EAAQ,IAAIg4G,EAAch3K,YAAYlzD,KAAM,CAC9Ck2C,cACA3pB,IAAKglG,EAAGhlG,IACR6jC,OAAQoiE,EACRz8E,QAASjoB,EAAKioB,QACdvvC,cAAeqkO,EAAW3nN,eAC1B+1B,cAAenrB,EACfnqB,OACAugB,WAAY4J,EAAK8+F,OACjBxgE,cAAet+B,EAAK++F,eACpBt5D,WAAYzlC,EAAKylC,WACjBC,GAAI61D,EACJ51D,MAAOk1D,EAAWp8F,IAClBmnC,gBACAm6D,SAAS,IAGb,aADMqE,EAAMQ,QACLR,CACX,CACA,MAAO3gH,GAEH,MADA+b,EAAgBI,MAAMnc,GAChBA,CACV,CACJ,CAYA,oBAAM65N,CAAe1nO,EAAQ+vD,EAAO9wC,EAAYivG,EAAKhwG,EAASgsG,EAAkBxlH,GAC5E,IAAKpI,KAAKgiB,cACN,MAAM,IAAIne,MAAM,uCACpB+d,IAAY,CAAC,EACbA,EAAQ0hK,gBAAkBtjL,KAAK4hB,QAAQuoN,sBACvCvoN,EAAQktG,kBAAoBppH,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,KAAQlL,EAAQ0hK,eAC3E,MAAMzxD,GAAmB,EAAI1sH,EAAQooB,uBAAuBnlB,GACtD8xJ,EAAuBl6J,KAAK0iB,cAAcC,EAAYkvG,EAAiBplG,QACvEvJ,EAAiBljB,KAAKgyH,gBAAgBtuH,EAAQif,EAAY,KAAMkvG,GACtEjwG,EAAQ4hK,gBAAkB99K,OAAO1F,KAAK4hB,QAAQyoN,iBAC9CzoN,EAAQ2hK,oBAAsB79K,OAAO1F,KAAK4hB,QAAQwoN,kBAC9CznN,EAAWkrG,QACXjsG,EAAQgrG,SAAWstC,EACdlxJ,MAAK2F,GAAO3O,KAAKyhB,OAAOstM,qBAAqB/uN,KAAKshB,gBAAiBM,EAAQ2hK,kBAAmB5gK,EAAWxa,MAAOC,EAAauG,KAC7H3F,MAAKqiO,GAAerrO,KAAKuqO,sBAAsB5nN,EAAWnhB,OAAQ6pO,EAAazpN,EAAQ4hK,iBAG5F5hK,EAAQgrG,OAAS5sH,KAAKuqO,sBAAsB5nN,EAAWnhB,OAAQogB,EAAQ2hK,kBAAmB3hK,EAAQ4hK,eAEtG,IACI,IAAI76D,QAAmB3oH,KAAKgrO,YAAYv3K,EAAOo+D,EAAiBplG,QAChE,GAAuB,MAAnB7K,EAAQ8Y,UACsB,MAA7BiuF,EAAWE,gBAA0BjnG,EAAQ8Y,QAAQ74B,OAAS8mH,EAAWE,gBAC1E,MAAM,IAAI/B,EAAY6C,UAAU,mCACpC,GAAIhnG,EAAWkrG,QAAS,CACpB,MAAQxE,QAASiiH,SAAuBh4K,EAAQ4B,MAAM8zD,YAAYL,EAAYjjH,OAAOijH,EAAWC,aAAe,MAAO,KAAM5oH,KAAK4hB,QAAQk4H,kBAAmBjoB,EAAiBplG,QAC7K,OAAOmlG,EAAIlpH,KAAI6oH,IACJ,CACHW,MAAOlyH,KAAKirO,4BAA4BvnO,EAAQif,EAAYgmG,EAAY4I,EAAI+5G,EAAc1pN,EAAS,CAC/Fs4I,uBACAh3I,kBACD2uG,EAAiBplG,OAAQmhG,GAC5BqE,aAAcV,KAG1B,CACK,CACD,MAAM7/G,EAAMhM,OAAOijH,EAAWC,aAAe,MACvCj3G,EAAMjM,OAAOijH,EAAW7sF,aAAe,MAC7C,GAAInZ,EAAWnhB,OAASkQ,EACpB,MAAM,IAAIo1G,EAAY6C,UAAU,4BACpC,GAAIhnG,EAAWnhB,OAASmQ,EACpB,MAAM,IAAIm1G,EAAY6C,UAAU,4BACpC,MAAM,QAAEN,EAAO,cAAEC,EAAa,cAAE51D,SAAwBJ,EAAQ4B,MAAM8zD,YAAYL,EAAYhmG,EAAWnhB,OAAQogB,EAAQ8Y,QAAS16B,KAAK4hB,QAAQk4H,kBAAmBjoB,EAAiBplG,QACnL,aAAczsB,KAAK0J,OAAOhG,EAAQ2lH,EAAS1mG,EAAYivG,EAAKhwG,EAASgsG,EAAkBiE,EAAiBplG,OAAQ,CAC5GvJ,iBACAg3I,0BACAxxJ,KAAI/E,IACG,CACHuuH,MAAOvuH,EAAKuuH,MAAMlpH,MAAKkpH,IACnBA,EAAMz+D,MAAQk1D,EAAWp8F,IACzB2lG,EAAMx+D,cAAgBA,EACfw+D,KAEXD,aAActuH,EAAKsuH,gBAG/B,CACJ,CACA,MAAO1gH,GAEH,MADAsgH,EAAiBnkG,MAAMnc,GACjBA,CACV,CACJ,EAEJzR,EAAQmqO,eAAiBA,8BC/VzBnqO,EAAQ,OAAkB,EAU1BA,EAAQ,EATc,CACpB,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,2UCXkB,oBAAlBkD,OAAO0G,OAEhB3J,EAAOD,QAAU,SAAkBggC,EAAMC,GACnCA,IACFD,EAAKE,OAASD,EACdD,EAAKl1B,UAAY5H,OAAO0G,OAAOq2B,EAAUn1B,UAAW,CAClDqD,YAAa,CACX/K,MAAO48B,EACPpD,YAAY,EACZ84B,UAAU,EACVC,cAAc,KAItB,EAGA11D,EAAOD,QAAU,SAAkBggC,EAAMC,GACvC,GAAIA,EAAW,CACbD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASr1B,UAAYm1B,EAAUn1B,UAC/Bk1B,EAAKl1B,UAAY,IAAIq1B,EACrBH,EAAKl1B,UAAUqD,YAAc6xB,CAC/B,CACF,gCCxBF98B,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ4xI,YAAc5xI,EAAQulE,UAAYvlE,EAAQwyK,WAAaxyK,EAAQ+0I,YAAc/0I,EAAQi1I,YAAcj1I,EAAQynF,UAAYznF,EAAQk3I,cAAgBl3I,EAAQ60I,OAAS70I,EAAQ4M,mBAAqB5M,EAAQ20I,gBAAkB30I,EAAQ2sD,QAAU3sD,EAAQwzI,eAAiBxzI,EAAQq4I,MAAQr4I,EAAQ2N,gBAAkB3N,EAAQsN,cAAgBtN,EAAQ22I,UAAY32I,EAAQi0I,uBAAoB,EAC5Xj0I,EAAQqyB,MAyCR,SAAengB,EAAK4P,GAChB,OAAO2pN,EAAS52F,OAAOxiH,MAAMngB,EAAK4P,EACtC,EA1CA9hB,EAAQ83I,SA+CR,SAAkB5lI,GACd,OAAOu5N,EAAS52F,OAAOiD,SAAS5lI,EACpC,EAhDA,IAAIkgI,EAAapxI,EAAQ,OACzBkC,OAAOC,eAAenD,EAAS,oBAAqB,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAOsmI,EAAW6B,iBAAmB,IAChI,IAAI5B,EAAcrxI,EAAQ,OAC1BkC,OAAOC,eAAenD,EAAS,YAAa,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAOumI,EAAYsE,SAAW,IACjH,IAAI+0F,EAAkB1qO,EAAQ,MAC9BkC,OAAOC,eAAenD,EAAS,gBAAiB,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO4/N,EAAgBp+N,aAAe,IAC7H,IAAII,EAAoB1M,EAAQ,OAChCkC,OAAOC,eAAenD,EAAS,kBAAmB,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO4B,EAAkBC,eAAiB,IACnI,IAAIwkI,EAAUnxI,EAAQ,OACtBkC,OAAOC,eAAenD,EAAS,QAAS,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAOqmI,EAAQkG,KAAO,IACrG,IAAInG,EAAelxI,EAAQ,OAC3BkC,OAAOC,eAAenD,EAAS,iBAAkB,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAOomI,EAAasB,cAAgB,IAC5H,IAAIZ,EAAY5xI,EAAQ,OACxBkC,OAAOC,eAAenD,EAAS,UAAW,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO8mI,EAAUjmF,OAAS,IAC3G,IAAI4lF,EAAoBvxI,EAAQ,OAChCkC,OAAOC,eAAenD,EAAS,kBAAmB,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAOymI,EAAkBoC,eAAiB,IACnI,IAAInC,EAAcxxI,EAAQ,MAC1BkC,OAAOC,eAAenD,EAAS,qBAAsB,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO0mI,EAAY5lI,kBAAoB,IACnI,IAAI0lI,EAAWtxI,EAAQ,OACvBkC,OAAOC,eAAenD,EAAS,SAAU,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAOwmI,EAASuC,MAAQ,IACxG,IAAIlC,EAAkB3xI,EAAQ,OAC9BkC,OAAOC,eAAenD,EAAS,gBAAiB,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO6mI,EAAgBuE,aAAe,IAC7H,IAAIy0F,EAAc3qO,EAAQ,OAC1BkC,OAAOC,eAAenD,EAAS,YAAa,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO6/N,EAAYlkJ,SAAW,IACjH,IAAIgrD,EAAgBzxI,EAAQ,OAC5BkC,OAAOC,eAAenD,EAAS,cAAe,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO2mI,EAAcwC,WAAa,IACvH,IAAIvC,EAAgB1xI,EAAQ,OAC5BkC,OAAOC,eAAenD,EAAS,cAAe,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO4mI,EAAcqC,WAAa,IACvH,IAAI67B,EAAe5vK,EAAQ,OAC3BkC,OAAOC,eAAenD,EAAS,aAAc,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO8kK,EAAa4B,UAAY,IACpH,IAAI3B,EAAc7vK,EAAQ,OAC1BkC,OAAOC,eAAenD,EAAS,YAAa,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO+kK,EAAYtrG,SAAW,IACjH,IAAIqmK,EAAgB5qO,EAAQ,OAC5BkC,OAAOC,eAAenD,EAAS,cAAe,CAAE48B,YAAY,EAAM9wB,IAAK,WAAc,OAAO8/N,EAAch6F,WAAa,IACvH,MAAM65F,EAAWzqO,EAAQ,2GCvCzB,MAAA0uB,EAAA1uB,EAAA,OACA2uB,EAAA3uB,EAAA,OAEA,MAAa6qO,UAAgCl8M,EAAAI,KAQ3C5hB,WAAAA,CAAYrJ,EAAawF,GACvBhE,QAJM,KAAA8pB,UAAW,EACX,KAAAE,WAAY,GAIlB,EAAAZ,EAAA5qB,MAAWA,GACX,MAAMoF,GAAM,EAAAylB,EAAAiB,SAAQtmB,GAEpB,GADApK,KAAK4rO,MAAQhnO,EAAK8E,SACe,oBAAtB1J,KAAK4rO,MAAM7nO,OACpB,MAAM,IAAIF,MAAM,uDAClB7D,KAAK8vB,SAAW9vB,KAAK4rO,MAAM97M,SAC3B9vB,KAAK+vB,UAAY/vB,KAAK4rO,MAAM77M,UAC5B,MAAMD,EAAW9vB,KAAK8vB,SAChB0sE,EAAM,IAAIlsE,WAAWR,GAE3B0sE,EAAIlmF,IAAItM,EAAInI,OAASiuB,EAAWlrB,EAAK8E,SAAS3F,OAAOiG,GAAKhG,SAAWgG,GACrE,IAAK,IAAIgB,EAAI,EAAGA,EAAIwxF,EAAI36F,OAAQmJ,IAAKwxF,EAAIxxF,IAAM,GAC/ChL,KAAK4rO,MAAM7nO,OAAOy4F,GAElBx8F,KAAK6rO,MAAQjnO,EAAK8E,SAElB,IAAK,IAAIsB,EAAI,EAAGA,EAAIwxF,EAAI36F,OAAQmJ,IAAKwxF,EAAIxxF,IAAM,IAC/ChL,KAAK6rO,MAAM9nO,OAAOy4F,GAClBA,EAAIvrE,KAAK,EACX,CACAltB,MAAAA,CAAOsjE,GAGL,OAFA,EAAA73C,EAAAiB,QAAazwB,MACbA,KAAK4rO,MAAM7nO,OAAOsjE,GACXrnE,IACT,CACAgxB,UAAAA,CAAWjqB,IACT,EAAAyoB,EAAAiB,QAAazwB,OACb,EAAAwvB,EAAA2uB,OAAYp3C,EAAK/G,KAAK+vB,WACtB/vB,KAAKkwB,UAAW,EAChBlwB,KAAK4rO,MAAM56M,WAAWjqB,GACtB/G,KAAK6rO,MAAM9nO,OAAOgD,GAClB/G,KAAK6rO,MAAM76M,WAAWjqB,GACtB/G,KAAK6xB,SACP,CACA7tB,MAAAA,GACE,MAAM+C,EAAM,IAAIupB,WAAWtwB,KAAK6rO,MAAM97M,WAEtC,OADA/vB,KAAKgxB,WAAWjqB,GACTA,CACT,CACA+qB,UAAAA,CAAWC,GAETA,IAAAA,EAAO/uB,OAAO0G,OAAO1G,OAAOyhF,eAAezkF,MAAO,CAAC,IACnD,MAAM,MAAE6rO,EAAK,MAAED,EAAK,SAAE17M,EAAQ,UAAEE,EAAS,SAAEN,EAAQ,UAAEC,GAAc/vB,KAQnE,OANA+xB,EAAG7B,SAAWA,EACd6B,EAAG3B,UAAYA,EACf2B,EAAGjC,SAAWA,EACdiC,EAAGhC,UAAYA,EACfgC,EAAG85M,MAAQA,EAAM/5M,WAAWC,EAAG85M,OAC/B95M,EAAG65M,MAAQA,EAAM95M,WAAWC,EAAG65M,OACxB75M,CACT,CACAF,OAAAA,GACE7xB,KAAKowB,WAAY,EACjBpwB,KAAK6rO,MAAMh6M,UACX7xB,KAAK4rO,MAAM/5M,SACb,EAlEF/xB,EAAAA,KAAA6rO,EA2Ea7rO,EAAAA,KAAOiK,CAACnF,EAAaoF,EAAYikB,IAC5C,IAAI09M,EAAU/mO,EAAMoF,GAAKjG,OAAOkqB,GAASjqB,SAC3ClE,EAAAA,KAAAA,OAAc,CAAC8E,EAAaoF,IAAe,IAAI2hO,EAAU/mO,EAAMoF,+TChF/D,MAAA8U,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OAkHA,SAAgBgrO,EAAqC3sN,GAI5B,IAJ6B,UAClDnd,EACAod,MAAOoT,EAASnxB,EAAMqB,KAAcf,GAAa,KACjDgC,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAnxB,OACAqB,YACAf,gBAEJgC,KAAM7D,EAAAisO,2BAA2BtsN,OAAO9b,GAEhD,CAzHa7D,EAAAA,4BAA6B,EAAAgf,EAAAY,QAAmC,EAAC,EAAAZ,EAAAa,IAAG,iBAajF7f,EAAAA,6BAAA,SACI0yB,EACAnxB,EACAqB,GAE4B,IAD5Bf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAEjDtd,EACAf,GAGEgC,EAAOY,EAAO0b,MAAMngB,EAAAisO,2BAA2B7rN,MAGrD,OAFApgB,EAAAisO,2BAA2B5rN,OAAO,CAAEd,YAAaJ,EAAAmB,iBAAiB4rN,aAAeroO,GAE1E,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAwBA7D,EAAAA,6BAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAisO,2BAA2B7rN,KAAM,MAAM,IAAIlB,EAAAyB,iCAE3E,MACIrB,MAAM,QAAEoT,EAAO,KAAEnxB,EAAI,UAAEqB,EAAS,aAAEf,GAAc,KAChDgC,GACAmoO,EAAsCzsN,GAC1C,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiB4rN,YAAa,MAAM,IAAIhtN,EAAA0B,iCACjE,IAAK8R,IAAYnxB,IAASqB,EAAW,MAAM,IAAIsc,EAAA2B,iCAI/C,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAnxB,OACAqB,YACAf,gBAEJgC,OAER,EAuBA7D,EAAAA,sCAAAgsO,gCC5HA9oO,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmsO,aAAensO,EAAQosO,mBAAqBpsO,EAAQqsO,uBAAoB,EAChF,MAAM/4K,EAAWtyD,EAAQ,OACnBuyD,EAAavyD,EAAQ,OACrByC,EAAWzC,EAAQ,OACnBsrO,EAAqBtrO,EAAQ,OAC7BqE,EAAUrE,EAAQ,OAClB00C,EAAU10C,EAAQ,OAClBs4I,EAA2Bt4I,EAAQ,OACnC20C,EAAW30C,EAAQ,OACzB,IAAIqrO,EAQJ,SAASD,EAAmBt9N,GACxB,MAA2B,kBAAZA,EAAI4kD,IACe,kBAAtB5kD,EAAIorI,cACe,kBAAnBprI,EAAI2oD,WACW,kBAAf3oD,EAAIzG,QACZ,EAAIqtC,EAAQ6W,aAAaz9C,EACjC,EAbA,SAAWu9N,GACPA,EAAkBA,EAA2B,SAAK,GAAK,UACvDA,EAAkBA,EAA0B,QAAK,GAAK,SACtDA,EAAkBA,EAA8B,WAAI,GAAK,aACzDA,EAAkBA,EAA2B,QAAI,GAAK,UACtDA,EAAkBA,EAA4B,SAAI,GAAK,UAC1D,CAND,CAMGA,EAAoBrsO,EAAQqsO,oBAAsBrsO,EAAQqsO,kBAAoB,CAAC,IAQlFrsO,EAAQosO,mBAAqBA,EAC7B,MAAMD,UAAqBz2L,EAAQE,MAC/BznC,WAAAA,CAAY0nC,EAASC,GACbs2L,EAAmBt2L,KACnBA,EAAUrpB,KAAO,aACrBnmB,MAAMuvC,EAASC,GACf51C,KAAKqsO,wBAA0B,KAC/BrsO,KAAKuqK,eAAiB,EACtBvqK,KAAK4lB,KAAOytC,EAAWS,SAASw4K,mBAC5BJ,EAAmBt2L,GACnB51C,KAAKU,MAAQyrO,EAAkBh8G,YAG/BnwH,KAAKwzD,GAAK5d,EAAU4d,GACpBxzD,KAAKg6I,aAAyC,MAA1BpkG,EAAUokG,aAAuB,KAAOt0I,OAAOkwC,EAAUokG,cAC7Eh6I,KAAKu3D,UAAY3hB,EAAU2hB,UAC3Bv3D,KAAKmI,MAAQytC,EAAUztC,MACvBnI,KAAKusO,OAAS32L,EAAU22L,QAE5BvsO,KAAK61C,sBACL71C,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,YAActF,KAAKslB,0BAA4B,OACtC,MAA1CtlB,KAAKk2C,YAAYC,wBACjBn2C,KAAKk2C,YAAcl2C,KAAK21C,QAAQl0B,OAAO20B,0BAA0Bp2C,KAAKshB,gBAAiBthB,KAAK4F,WAAWowC,UAAWh2C,KAAKk2C,YAAYG,aAAe,IAAKr2C,KAAKk2C,YAAYI,QAAU,OAAQt2C,KAAKg6I,aAAch6I,KAAKmI,OAASnI,KAAK21C,QAAQ/tB,iBAAiBlhB,SAEjQ,CACA8lD,cAAAA,GACwB,GAAhBxsD,KAAKysD,UACc,IAAfzsD,KAAKU,QACLV,KAAKU,MAAQyrO,EAAkBK,UACnCxsO,KAAKysD,QAAU,GAEC,MAAhBzsD,KAAKysD,UAELzsD,KAAKysD,QAAU,EAEvB,CAKA5W,mBAAAA,GAC2B,MAAnB71C,KAAK81C,aACL91C,KAAK81C,WAAa91C,KAAK+1C,QAAU/1C,KAAK4F,WAAWowC,UAAYh2C,KAAKi2C,yBAE1E,CAGA,sBAAMS,GACF,GAAwB,MAApB12C,KAAKk2C,YACL,OAAO,KACX,MAAMS,QAAkB32C,KAAK21C,QAAQl0B,OAAO4C,qBAAqBrkB,KAAKshB,gBAAiBthB,KAAK4F,WAAWowC,UAAWh2C,KAAKk2C,YAAYG,aAAe,IAAKr2C,KAAKk2C,YAAYI,QAAU,OAAQt2C,KAAKg6I,aAAch6I,KAAKmI,OAASnI,KAAK21C,QAAQ/tB,iBAAiBlhB,SAEzP,OADA1G,KAAKk2C,YAAcS,EACZA,CACX,CACAC,YAAAA,GACI,OAAOznB,OAAOnvB,KAAKk2C,YAAYC,uBAAyB,IAC5D,CACAU,cAAAA,GACI,OAAO1nB,OAAOnvB,KAAKk2C,YAAYY,uBAAyB,IAC5D,CAGAI,eAAAA,GACI,OAAOl3C,KAAKwzD,EAChB,CACApc,gBAAAA,GACI,OAAOp3C,KAAKu3D,SAChB,CACArK,YAAAA,GACI,OAAOltD,KAAKi0D,iBAAiBxvD,SAAS,MAC1C,CACAwyC,aAAAA,GACI,OAAOj3C,KAAKusO,MAChB,CACAp/K,YAAAA,GACI,OAAOntD,KAAKu3D,SAChB,CACA/C,iBAAAA,GACI,OAAOx0D,KAAKi0D,gBAChB,CACAA,cAAAA,GACI,GAAe,MAAXj0D,KAAKwzD,GACL,OAAO,KACX,MAAMi5K,GAAY,EAAIr5K,EAAS3zC,QAAQzf,KAAKwzD,IAC5C,OAAOjwD,EAASgB,OAAOC,KAAKioO,EAAU73K,WAAWC,aAAc,MACnE,CAIAR,mBAAAA,GACI,OAAOr0D,KAAKwzD,EAChB,CAIAk5K,SAAAA,GACI,MAAO,aAAe1sO,KAAKwzD,GAAG7+C,aAClC,CACAg4N,cAAAA,GACI,GAAe,MAAX3sO,KAAKwzD,GACL,OAAO,KAEX,OAAiC,KADjB,EAAIJ,EAAS3zC,QAAQzf,KAAKwzD,IAC1Bo5K,cACpB,CACAx/K,UAAAA,GACI,OAAOptD,KAAKU,QAAUyrO,EAAkBK,UAAYxsO,KAAKU,QAAUyrO,EAAkB77G,QAAUtwH,KAAKU,QAAUyrO,EAAkBp9K,OACpI,CACApoC,cAAAA,GACI,OAAO3mB,KAAKU,QAAUyrO,EAAkBp9K,OAC5C,CACAzB,kBAAAA,GACI,OAAOttD,KAAK2sO,iBAAmB9/M,KAAKC,KACxC,CACA2gC,QAAAA,GACI,OAAOztD,KAAKU,QAAUyrO,EAAkB77G,MAC5C,CACA9iE,YAAAA,GACI,OAAOxtD,KAAKU,QAAUyrO,EAAkBK,QAC5C,CACAr8K,YAAAA,GACI,OAAO9rD,QAAQC,QAAQtE,KAAK2sO,iBAAmB9/M,KAAKC,MACxD,CACAwqB,YAAAA,GACI,OAAO,CACX,CAGArB,sBAAAA,GACI,OAAOj2C,KAAKg6I,aAAeh6I,KAAK+1C,OACpC,CACA/uC,SAAAA,GACI,OAAO,EAAIyuC,EAASgC,eAAez3C,KAAKg6I,aAAch6I,KAAK21C,QAAQj0B,OAAO1hB,KAAK21C,QAAQn0B,SAASqG,4BAA6B7nB,KAAK21C,QAAQl0B,OAC9I,CACAu1B,kBAAAA,GACI,MAAM2d,GAAS,EAAIvB,EAAS3zC,QAAQzf,KAAKwzD,IACnChyD,GAAUkE,OAAOivD,EAAOP,eAAiB,MAAQ,MACvD,OAAO,EAAI3e,EAASgC,eAAej2C,EAASxB,KAAK81C,WAAYL,EAASme,cAAcC,MAAO7zD,KAAK21C,QAAQl0B,OAC5G,CACA7b,QAAAA,GACI,MAAM+uD,GAAS,EAAIvB,EAAS3zC,QAAQzf,KAAKwzD,IACnChyD,GAAUkE,OAAOivD,EAAOP,eAAiB,MAAQ,MACvD,OAAO,EAAI3e,EAASgC,eAAej2C,EAAQi0C,EAASme,cAAcC,MAAO7zD,KAAK21C,QAAQl0B,OAC1F,CACAk2B,UAAAA,GACI,MAAO,CACHC,kBAAkB,EAAInC,EAASgC,eAAez3C,KAAK81C,WAAYL,EAASme,cAAcC,MAAO7zD,KAAK21C,QAAQl0B,QAC1Go2B,kBAAkB,EAAIpC,EAASgC,eAAez3C,KAAK+1C,QAAS/1C,KAAK21C,QAAQj0B,OAAO1hB,KAAK21C,QAAQn0B,SAASqG,4BAA6B7nB,KAAK21C,QAAQl0B,QAChJq2B,SAAUA,CAAC1vC,EAAa2vC,IAAuB/3C,KAAK21C,QAAQl0B,OAAOu2B,eAAeh4C,KAAK81C,WAAY1tC,EAAa2vC,GAExH,CACAhB,2BAAAA,GAEI,OAA2B,UADD/2C,KAAK81C,WAAa91C,KAAKk2C,YAAYG,aACvBr2C,KAAKg3C,qBAAqBhB,SACpE,CAGA,sBAAM62L,GAA8B,IAAbvlN,IAAI1lB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACvB,GAAI5B,KAAKU,QAAUyrO,EAAkB77G,QAAUtwH,KAAKU,QAAUyrO,EAAkBp9K,QAC5E,OAAO,EACX,GAAI/uD,KAAKU,QAAUyrO,EAAkBK,SACjC,OAAO,EACX,MACMrhN,GADY,EAAIioC,EAAS3zC,QAAQzf,KAAKwzD,IACdoB,WAAWC,aACnClhC,QAAiBylH,EAAyBQ,uBAAuBmS,iBAAiB/rJ,KAAKusB,IAAKpB,EAAanrB,KAAK21C,QAAQ/zB,QAAQk4H,mBAEpI,OADA95I,KAAK6hB,OAAO0F,MAAM,oCAAqCoM,GAC/CA,EAAS+6B,MACb,KAAK0qF,EAAyBsS,2BAA2B98F,KACrD5uD,KAAKusO,OAAS54M,EAAShwB,KAAKkhB,KAE5B,MAAiB,kBADM7kB,KAAK21C,QAAQn0B,SAASgnF,cAAcxoG,KAAKusO,SAE5DvsO,KAAKU,MAAQyrO,EAAkBK,SAC3BllN,SACMtnB,KAAKulB,gBACR,GAEJ,KACX,KAAK6zH,EAAyBsS,2BAA2B38F,QASrD,OARI/uD,KAAKU,QAAUyrO,EAAkBh8G,WACjCnwH,KAAKU,MAAQyrO,EAAkBp9K,QAG/B/uD,KAAKU,MAAQyrO,EAAkB77G,OAE/BhpG,SACMtnB,KAAKulB,gBACR,EACX,KAAK6zH,EAAyBsS,2BAA2BohF,QAOrD,OANA9sO,KAAKusO,OAAS54M,EAAShwB,KAAKkhB,KACxB7kB,KAAKU,QAAUyrO,EAAkBh8G,aACjCnwH,KAAKU,MAAQyrO,EAAkBY,QAC3BzlN,SACMtnB,KAAKulB,gBAEZ,KACX,KAAK6zH,EAAyBsS,2BAA2Bx8F,QAMrD,OALIlvD,KAAKU,QAAUyrO,EAAkBh8G,aACjCnwH,KAAKU,MAAQyrO,EAAkBY,QAC3BzlN,SACMtnB,KAAKulB,gBAEZ,KACX,KAAK6zH,EAAyBsS,2BAA2BshF,cACrD,OAAO,KACX,QAII,OAHAhtO,KAAKU,MAAQyrO,EAAkB77G,OAC3BhpG,SACMtnB,KAAKulB,gBACR,EAEnB,CAUA,oBAAM+oC,CAAelmD,GAAuC,IAA1BmmD,EAAoB3sD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACrD,GAAI5B,KAAKU,QAAUyrO,EAAkBh8G,WACjC,MAAM,IAAItsH,MAAM,gCAKpB,IAJK7D,KAAK+4C,YACN/4C,KAAK+4C,WAAY,QACX/4C,KAAKulB,iBAEPnd,EAAYyhB,UAAY7pB,KAAKU,QAAUyrO,EAAkBh8G,YAAcnwH,KAAKU,QAAUyrO,EAAkBY,gBACtG/sO,KAAK6sO,kBAAiB,GACxB7sO,KAAKU,QAAUyrO,EAAkBh8G,YAAcnwH,KAAKU,QAAUyrO,EAAkBY,eAC1E,EAAI5nO,EAAQijB,gBAAuC,IAAvBmmC,EAA6BnmD,GAEvE,GAAIpI,KAAKytD,WACL,MAAM,IAAI2+K,EAAmB/qD,iBAAiB,eAClD,GAAIrhL,KAAK2mB,iBACL,MAAM,IAAIylN,EAAmB/qD,iBAAiB,eACtD,CAGArxH,SAAAA,GACI,MAAO,IACA5pD,MAAM4pD,YACTwD,GAAIxzD,KAAKwzD,GACTwmF,aAAmC,MAArBh6I,KAAKg6I,aAAuB,KAAOh6I,KAAKg6I,aAAav1I,SAAS,IAC5E8yD,UAAWv3D,KAAKu3D,UAChBpvD,MAAOnI,KAAKmI,MACZokO,OAAQvsO,KAAKusO,OAErB,CACAl1L,YAAAA,GACI,OAAOr3C,KAAKu3D,SAChB,CACAlf,kBAAAA,GACI,OAAOh0C,QAAQC,QAAQ,CACnBg0C,SAAS,EAAI7C,EAASgC,eAAe,GAAIz3C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,QACrFk3B,eAAe,EACfC,UAAU,EAAInD,EAASgC,eAAe,GAAIz3C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,SAE9F,CAGA,WAAMgF,CAAMa,GACR,GAAItnB,KAAKU,QAAUyrO,EAAkBh8G,WAAY,CAG7C,GAAY,aADMnwH,KAAK6sO,kBAAiB,GAIpC,OAFIvlN,SACMtnB,KAAKulB,gBACR,CAEf,CACA,OAAO,CACX,CACA0B,KAAAA,CAAMK,GACF,OAAOjjB,QAAQC,SAAQ,EAC3B,EAEJxE,EAAQmsO,aAAeA,0GC9SvB,MAAAgB,EAAAnsO,EAAA,OACA2uB,EAAA3uB,EAAA,OAQM6uB,EAAMA,CAAClf,EAAWS,EAAWE,IAAeX,EAAIS,EAAMT,EAAIW,EAAMF,EAAIE,EAKpE8yG,EAA0B,IAAI5sG,YAAY,CAC9C,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,aAKhF41N,EAAoB,IAAI51N,YAAY,CACxC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,aAKhF8sG,EAA2B,IAAI9sG,YAAY,IACjD,MAAM+sG,UAAe4oH,EAAAE,KAYnBl/N,WAAAA,GACE7H,MAAM,GAAI,GAAI,GAAG,GAVnB,KAAAmqC,EAAY,EAAR28L,EAAG,GACP,KAAA18L,EAAY,EAAR08L,EAAG,GACP,KAAAz8L,EAAY,EAARy8L,EAAG,GACP,KAAAx8L,EAAY,EAARw8L,EAAG,GACP,KAAAnoL,EAAY,EAARmoL,EAAG,GACP,KAAAniJ,EAAY,EAARmiJ,EAAG,GACP,KAAAjiL,EAAY,EAARiiL,EAAG,GACP,KAAA/hJ,EAAY,EAAR+hJ,EAAG,EAIP,CACUthO,GAAAA,GACR,MAAM,EAAE2kC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEqU,EAAC,EAAEgmC,EAAC,EAAE9/B,EAAC,EAAEkgC,GAAMnrF,KACnC,MAAO,CAACuwC,EAAGC,EAAGC,EAAGC,EAAGqU,EAAGgmC,EAAG9/B,EAAGkgC,EAC/B,CAEU70E,GAAAA,CACRi6B,EAAWC,EAAWC,EAAWC,EAAWqU,EAAWgmC,EAAW9/B,EAAWkgC,GAE7EnrF,KAAKuwC,EAAQ,EAAJA,EACTvwC,KAAKwwC,EAAQ,EAAJA,EACTxwC,KAAKywC,EAAQ,EAAJA,EACTzwC,KAAK0wC,EAAQ,EAAJA,EACT1wC,KAAK+kD,EAAQ,EAAJA,EACT/kD,KAAK+qF,EAAQ,EAAJA,EACT/qF,KAAKirD,EAAQ,EAAJA,EACTjrD,KAAKmrF,EAAQ,EAAJA,CACX,CACUt6D,OAAAA,CAAQN,EAAgBwG,GAEhC,IAAK,IAAI/rB,EAAI,EAAGA,EAAI,GAAIA,IAAK+rB,GAAU,EAAGqtF,EAASp5G,GAAKulB,EAAK+zF,UAAUvtF,GAAQ,GAC/E,IAAK,IAAI/rB,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAC5B,MAAMu5G,EAAMH,EAASp5G,EAAI,IACnBw5G,EAAKJ,EAASp5G,EAAI,GAClBy5G,GAAK,EAAAh1F,EAAA6uF,MAAKiG,EAAK,IAAK,EAAA90F,EAAA6uF,MAAKiG,EAAK,IAAOA,IAAQ,EAC7C71C,GAAK,EAAAj/C,EAAA6uF,MAAKkG,EAAI,KAAM,EAAA/0F,EAAA6uF,MAAKkG,EAAI,IAAOA,IAAO,GACjDJ,EAASp5G,GAAM0jE,EAAK01C,EAASp5G,EAAI,GAAKy5G,EAAKL,EAASp5G,EAAI,IAAO,CACjE,CAEA,IAAI,EAAEulC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEqU,EAAC,EAAEgmC,EAAC,EAAE9/B,EAAC,EAAEkgC,GAAMnrF,KACjC,IAAK,IAAIgL,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MACM05G,EAAMv5B,IADG,EAAA17D,EAAA6uF,MAAKv5D,EAAG,IAAK,EAAAt1B,EAAA6uF,MAAKv5D,EAAG,KAAM,EAAAt1B,EAAA6uF,MAAKv5D,EAAG,OAxE3Ct0C,EAyEsBs0C,GAAGgmC,GAzEuBt6E,EAyEpBw6C,GAAKi5D,EAASl5G,GAAKo5G,EAASp5G,GAAM,EAE/D25G,IADS,EAAAl1F,EAAA6uF,MAAK/tE,EAAG,IAAK,EAAA9gB,EAAA6uF,MAAK/tE,EAAG,KAAM,EAAA9gB,EAAA6uF,MAAK/tE,EAAG,KAC7B5gB,EAAI4gB,EAAGC,EAAGC,GAAM,EACrC06C,EAAIlgC,EACJA,EAAI8/B,EACJA,EAAIhmC,EACJA,EAAKrU,EAAIg0E,EAAM,EACfh0E,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAKm0E,EAAKC,EAAM,CAClB,CApFQj1F,IAACjf,EAsFT8/B,EAAKA,EAAIvwC,KAAKuwC,EAAK,EACnBC,EAAKA,EAAIxwC,KAAKwwC,EAAK,EACnBC,EAAKA,EAAIzwC,KAAKywC,EAAK,EACnBC,EAAKA,EAAI1wC,KAAK0wC,EAAK,EACnBqU,EAAKA,EAAI/kD,KAAK+kD,EAAK,EACnBgmC,EAAKA,EAAI/qF,KAAK+qF,EAAK,EACnB9/B,EAAKA,EAAIjrD,KAAKirD,EAAK,EACnBkgC,EAAKA,EAAInrF,KAAKmrF,EAAK,EACnBnrF,KAAKsW,IAAIi6B,EAAGC,EAAGC,EAAGC,EAAGqU,EAAGgmC,EAAG9/B,EAAGkgC,EAChC,CACUp6D,UAAAA,GACRqzF,EAASnzF,KAAK,EAChB,CACAY,OAAAA,GACE7xB,KAAKsW,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9BtW,KAAKqwB,OAAOY,KAAK,EACnB,EAGF,MAAMgtM,UAAe55G,EASnBp2G,WAAAA,GACE7H,QATF,KAAAmqC,GAAI,WACJ,KAAAC,EAAI,UACJ,KAAAC,EAAI,UACJ,KAAAC,GAAI,UACJ,KAAAqU,GAAI,QACJ,KAAAgmC,EAAI,WACJ,KAAA9/B,EAAI,WACJ,KAAAkgC,GAAI,WAGFnrF,KAAK+vB,UAAY,EACnB,EAOWjwB,EAAAA,QAAyB,EAAA2vB,EAAAm1F,kBAAgB,IAAM,IAAIP,IACnDvkH,EAAAA,QAAyB,EAAA2vB,EAAAm1F,kBAAgB,IAAM,IAAIq5G,gCC/HhEn+N,EAAQ,OAAyB,EAmDjCA,EAAQ,EAlDqB,CAC3B,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,KACT,EAAK,KAEP,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,KACT,EAAK,KAEP,SAAY,QAGf,CACD,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,2KAEP,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,2KAEP,SAAY,0CChDxBkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQstO,8BAA2B,EACnC,MAAMA,UAAiCvpO,MACnCoK,WAAAA,CAAYxN,GACR2F,MAAM3F,GAENuC,OAAOknG,eAAelqG,KAAMotO,EAAyBxiO,UACzD,EAEJ9K,EAAQstO,yBAA2BA,gCCTnCpqO,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQgvB,0BAAuB,EAC/B,MAAMu+M,EAAiBvsO,EAAQ,OACzByC,EAAWzC,EAAQ,OACzB,MAAMguB,UAA6Bu+M,EAAeC,aAC9Cr/N,WAAAA,CAAY6f,EAAM1lB,GACdhC,QACApG,KAAKoI,YAAcA,EACnB,IAEIpI,KAAKutO,OAASz/M,EAAK7B,KAAKuhN,YACxBxtO,KAAKytO,cACT,CACA,MAAOl8N,GAEHuc,EAAK4/M,cAAc1kO,MAAK2kO,IACpBvnO,MAAMkzE,OAAO/1E,EAASgB,OAAOC,KAAKmpO,IAClCvnO,MAAMmzE,OAAO,IACd32D,OAAMrR,IACLnL,MAAMwnO,QAAQr8N,EAAE,GAExB,CACmB,MAAfnJ,GACAA,EAAYsgB,iBAAiB,SAAS,KAClCtiB,MAAMwnO,QAAQxlO,EAAY4lB,QACrBhuB,KAAKutO,OAAOhrG,QACbviI,KAAKutO,OAAO9rB,OAAOr5M,EAAY4lB,OAAO,GAEtD,CAKA,kBAAMy/M,GACF,OAAa,CACT,MAAMI,QAAiB7tO,KAAKutO,OAAOl0L,OAAOz2B,OAAMrR,IAC5CqX,QAAQ/F,MAAMtR,GACP,QAEX,GAAwB,MAApBvR,KAAKoI,aAAuBpI,KAAKoI,YAAYyhB,QAC7C,OACJ,GAAgB,MAAZgkN,GAAoBA,EAASzzM,KAE7B,YADAh0B,MAAMmzE,QAGVnzE,MAAMkzE,OAAO/1E,EAASgB,OAAOC,KAAKqpO,EAAS3qO,OAC/C,CACJ,EAEJpD,EAAQgvB,qBAAuBA,+FjK3ClBhvB,EAAAA,OACW,kBAAfkmJ,YAA2B,WAAYA,WAAaA,WAAWvvI,YAAS3U,gCkKHjFkB,OAAOC,eAAenD,EAAS,KAA/BkD,CACE05B,YAAY,EACZ9wB,IAAK,WACH,OAAOkiO,EAAMvvC,IACf,IAcFz+L,EAAQ,QAAU,EAElB,IAAIguO,EAAQhtO,EAAQ,OAEhBitO,EAAoBjtO,EAAQ,OAE5B2sK,EAAWqgE,EAAMvvC,KACrBz+L,EAAQ,GAAU2tK,gCC7BlBzqK,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQkuO,sBAAmB,EAC3B,MAAMviO,EAAkB3K,EAAQ,OAC1ByuH,EAAoBzuH,EAAQ,OAC5BsyD,EAAWtyD,EAAQ,OACnBmE,EAASnE,EAAQ,OACjBgmH,EAAchmH,EAAQ,OACtBwJ,EAAcxJ,EAAQ,OACtBuC,EAAavC,EAAQ,OACrBugB,EAAsBvgB,EAAQ,OAC9BuyD,EAAavyD,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClBqrD,EAAoBrrD,EAAQ,OAC5B4qB,EAAiB5qB,EAAQ,OACzBwyD,EAAUxyD,EAAQ,OACxB,MAAMktO,UAAyBz+G,EAAkBE,gBAa7CxhH,WAAAA,CAAYqT,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsBssN,EAAOrsN,EAASzT,GAC7H/H,MAAMkb,EAAiBpT,EAAgBqT,EAAoBC,EAAUC,EAAQC,EAAQC,EAAsBC,EAASzT,GACpHnO,KAAK4lB,KAAOytC,EAAWS,SAASo6K,WAChCluO,KAAK8lB,iBAAmBra,EAAgBa,cACxCtM,KAAKsmB,kBAAoB,CACrB7a,EAAgB0iO,mBAAmBh+G,WACnC1kH,EAAgB0iO,mBAAmB5gL,mBACnC9hD,EAAgB0iO,mBAAmBpB,QACnCthO,EAAgB0iO,mBAAmB/9G,eACnC3kH,EAAgB0iO,mBAAmBp/K,SAEvC/uD,KAAKkmB,cAAgB,CACjBza,EAAgB0iO,mBAAmBh+G,WACnC1kH,EAAgB0iO,mBAAmBpB,QACnCthO,EAAgB0iO,mBAAmB/9G,gBAEvCpwH,KAAKiuO,MAAQA,CACjB,CACA,4BAAMtpN,CAAuBjZ,EAAM+C,GAC/B,GAAI/C,EAAKhL,QAAU+K,EAAgB0iO,mBAAmBpB,SAAWrhO,EAAKhL,QAAU+K,EAAgB0iO,mBAAmB5gL,mBAG/G,OAFI7hD,EAAKhL,QAAU+K,EAAgB0iO,mBAAmBpB,SAAWrhO,EAAKhL,QAAU+K,EAAgB0iO,mBAAmB5gL,qBAC/G7hD,EAAKhL,MAAQ+K,EAAgB0iO,mBAAmB/9G,iBAC7C,CAEf,CACAprG,iBAAAA,CAAkBtZ,EAAM+C,GACpB,OAAI/C,EAAKhL,QAAU+K,EAAgB0iO,mBAAmB79G,QAClD5kH,EAAKhL,MAAQ+K,EAAgB0iO,mBAAmB59G,cACzClsH,QAAQC,SAAQ,IAEpBD,QAAQC,SAAQ,EAC3B,CACA6gB,kBAAAA,CAAmBzZ,EAAM+C,GACrB,OAAI/C,EAAKhL,QAAU+K,EAAgB0iO,mBAAmB59G,eAClD7kH,EAAKhL,MAAQ+K,EAAgB0iO,mBAAmB79G,OACzCjsH,QAAQC,SAAQ,IAEpBD,QAAQC,SAAQ,EAC3B,CAMA8pO,cAAAA,CAAezqO,GACX,OAAOA,EAAKi/D,YAAc,IAC9B,CAOAyrK,gBAAAA,GACI,MAAMr6K,EAAS1pD,EAAY,IAE3B,MAAO,CAAE0pD,SAAQ7oC,YADG9nB,EAAW,UAAUU,OAAOiwD,GAAQhwD,SAE5D,CASAsqO,kBAAAA,CAAmBC,GACf,OAAOA,EAAcvlO,MAAK8W,GACR,MAAVA,EACO,KACJ9f,KAAKiuO,MAAMr6I,mBAAmB9zE,KACtC8C,OAAMrR,IACLvR,KAAK6hB,OAAOgB,MAAM,gCAAiCtR,GAC5C,OAEf,CAaA+/G,kBAAAA,CAAmBxjG,EAAMnL,EAAY4uG,EAAI3vG,EAAS4sN,EAAWC,GACzD,GAAIl9G,EAAGp6E,WAAWn3C,KAAKshB,mBAAqBwM,EAAKs/F,gBAC7C,MAAM,IAAI/rG,EAAoBkD,kBAAkB,uCACpD,GAA+B,MAA3B3C,EAAQ8sG,iBAA2B8/G,EAAU55K,WAAWw0D,sBAAwBxnG,EAAQ8sG,gBAAgBjqH,SAAS,OACjH,MAAM,IAAI4c,EAAoBkD,kBAAkB,0CACpD,GAAK5B,EAAWkrG,SAKZ,GAAI4gH,IAAa9rN,EAAWnhB,OACxB,MAAM,IAAI6f,EAAoBkD,kBAAkB,0DALpD,GAAIuJ,EAAKwI,OAAS3T,EAAWnhB,OACzB,MAAM,IAAI6f,EAAoBkD,kBAAkB,0BAM5D,CAcA,0BAAMmqN,CAAqBn9G,EAAIi9G,EAAWC,EAAUE,EAA2BvmO,GAC3E,IAAIumB,QAAeggN,EAKnB,GAJc,MAAVhgN,IACAA,QAAe3uB,KAAKiuO,MAAMr6I,mBAAmB46I,EAAUI,eACxC,MAAfxmO,GACAA,EAAYylB,iBACD,OAAXc,EACA,MAAM,IAAItN,EAAoBkD,kBAAkB,iEAEpD,GADAgtG,EAAGs9G,OAASlgN,EACR6/M,EAAUI,eAAiBjgN,EAAOhqB,UAClC,MAAM,IAAI0c,EAAoBkD,kBAAkB,sCACpD,GAAIoK,EAAOqlE,SAAWy6I,EAClB,MAAM,IAAIptN,EAAoBkD,kBAAkB,0EACpD,GAAKoK,EAAOqlE,SAAW,GAAMy6I,EACzB,MAAM,IAAI5qO,MAAM,kFACxB,CAYA6F,MAAAA,CAAOhG,EAAQif,EAAYivG,EAAKhwG,EAASgsG,EAAkBxlH,EAAayiO,GAKpE,GAJe,MAAXjpN,IACAA,EAAU,CAAC,GACG,MAAdipN,IACAA,EAAa,CAAC,GACa,MAA3BjpN,EAAQ8sG,iBAA8D,KAAnC9sG,EAAQ8sG,gBAAgB7sH,OAC3D,MAAM,IAAIilH,EAAY6C,UAAU,mCACpC,MAAM,OAAE31D,EAAM,YAAE7oC,GAAgBnrB,KAAKquO,mBAC/B/iN,EAAYtrB,KAAKwhB,SAASqkF,eAAe16E,GACzC0mG,GAAmB,EAAI1sH,EAAQooB,uBAAuBnlB,GAC5DyiO,EAAW9mN,uBAAyB/jB,KAAK0iB,cAAcC,EAAYkvG,EAAiBplG,QACpF,MAAMslG,EAAqB/xH,KAAKwhB,SAASqG,2BAEzC,OADAgjN,EAAW3nN,iBAAmBljB,KAAKgyH,gBAAgBtuH,EAAQif,EAAY2I,EAAU7mB,SAAS,OAAQotH,GAC3FD,EAAIlpH,KAAI6oH,IACJ,CACHU,aAAcV,EACdW,MAAO,WACH,MAAM5kG,GAAkB,EAAInoB,EAAQooB,uBAAuBskG,EAAiBplG,QACtE0lG,EAAmBnyH,KAAKoyH,8BAA8BzvG,EAAY4uG,EAAIjkG,IACtE,kBAAEwhN,EAAiB,KAAEhhN,SAAe,EAAI3oB,EAAQke,iBAAgBhU,UAClE,MAAM,YAAEs/G,EAAW,SAAEh7F,GAAaw4B,EAAkBgD,gBAAgBs/D,cAAczuH,KAAKshB,gBAAiBiwG,EAAGhlG,IAAKwlG,EAAoB,CAChI5mG,cACA3pB,OAAQmhB,EAAWnhB,OACnBogE,QAASl+D,EACTyE,MAAOwa,EAAWxa,MAAM1D,WACxBiqH,gBAAiB9sG,EAAQ8sG,gBACzBP,UAAWxrG,EAAWkrG,QACtBrnH,QAASqkO,EAAW3nN,eACpB0qG,oBACD5tH,KAAK4hB,QAAQ0wG,mBAAoBhlG,EAAgBb,SAAQ8lG,EAAa,IAAY,MACrF,MAAO,CACHu8G,kBAAmB9uO,KAAKsuO,mBAAmB3/G,GAC3C7gG,WAAY6F,EACf,GACF,KAAMjI,EAAe2C,aAAcf,EAAgBb,QAChD+hN,GAAY,EAAIp7K,EAAS3zC,QAAQqO,EAAK0lC,IACtCi7K,GAAY/oO,OAAO8oO,EAAUp6K,eAAiB,MAAQ,MAC5D,IACIp0D,KAAKsxH,mBAAmBxjG,EAAMnL,EAAY4uG,EAAI3vG,EAAS4sN,EAAWC,GAClE,MAAOv4L,SAAqB7xC,QAAQoE,IAAI,CACpCzI,KAAKyjB,oBAAoB8tG,EAAGC,SAASn+D,EAAWS,SAASo6K,aAAa,EAAOO,EAAU3gN,EAAKwI,MAAO3T,EAAWxa,MAAO2lB,EAAM+8M,EAAW9mN,qBAAsBuJ,EAAgBb,QAC5KzsB,KAAKyyH,4BAA4B3kG,EAAKwI,MAAO67F,GAC7CnyH,KAAK0uO,qBAAqBn9G,EAAIi9G,EAAWC,EAAUK,EAAmBxhN,EAAgBb,UAEpFylG,EAAQ,IAAIzmH,EAAgBa,cAActM,KAAM,CAClDk2C,cACA3pB,IAAKglG,EAAGhlG,IACR6jC,OAAmC,IAA3Bo+K,EAAU5B,eAClB72L,QAASjoB,EAAKioB,QACdvvC,cAAeqkO,EAAW3nN,eAC1B6rN,sBAAuB/uO,KAAKwhB,SAAS0kF,eAAejhG,EAAO2C,cAAc66F,KAAM8uB,EAAGp6E,WAAWn3C,KAAKshB,iBAAkB5d,EAAQif,EAAWxa,MAAO2lB,EAAKwI,MAAOhL,EAAU7mB,SAAS,OAAQzE,KAAK6wH,oBAAqBnrH,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,OAAQ,GAAO,EAAMgB,EAAKo0C,gBAAiB,GAAI6vD,GAC7Rv+D,GAAI1lC,EAAK0lC,GACTQ,OAAQA,EAAOvvD,SAAS,OACxBopH,QAASlrG,EAAWkrG,UAAW,IAGnC,aADMqE,EAAMQ,QACLR,CACX,CACA,MAAO3gH,GAEH,MADA+b,EAAgBI,MAAMnc,GAChBA,CACV,CACH,EA9CM,MAiDnB,CASA,sBAAMy9N,CAAiBv7K,EAAOrrD,GAC1B,GAAuB,kBAAXqrD,EACR,OAAOA,EACX,MAAM7hC,QAAY0hC,EAAQ4B,MAAMH,SAAStB,GAAO,EAAMzzD,KAAK4hB,QAAQk4H,kBAAmB1xI,GACtF,GAAW,MAAPwpB,EACA,MAAM,IAAIk1F,EAAY6C,UAAU,iBACpC,GAAgB,oBAAZ/3F,EAAIkzB,IACJ,MAAM,IAAIgiE,EAAY6C,UAAU,0BACpC,OAAO/3F,CACX,CAWA,oBAAMw5M,CAAe1nO,EAAQ+vD,EAAO9wC,EAAYivG,EAAKhE,EAAkBxlH,GACnE,IAAKpI,KAAKgiB,cACN,MAAM,IAAIne,MAAM,uCACpB,MAAMypB,GAAkB,EAAInoB,EAAQooB,uBAAuBnlB,GACrDyiO,EAAa,CACf9mN,qBAAsB/jB,KAAK0iB,cAAcC,EAAY2K,EAAgBb,QACrEvJ,eAAgBljB,KAAKgyH,gBAAgBtuH,EAAQif,EAAY,KAAM2K,IAEnE,IACI,MAAM2hN,EAAyBtsN,EAAWkrG,QAGrC,KAH+Cg9G,EAAW9mN,qBAAqB/a,MAAKR,GAASxI,KAAKyhB,OAAOytM,mBAAmBlvN,KAAKshB,gBAAiBqB,EAAWnhB,OAAQmhB,EAAWxa,MAAOmlB,EAAgBb,OAAQjkB,KAAQoa,OAAMrR,IAC9N+b,EAAgBI,MAAMnc,GACf,QAELi4G,QAAwBxpH,KAAKgvO,iBAAiBv7K,EAAOnmC,EAAgBb,QACrE/a,EAAMhM,OAAO8jH,EAAgBV,iBAAmB,MAChDn3G,EAAMjM,OAAO8jH,EAAgBT,iBAAmB,MACtD,GAAIpmG,EAAWkrG,QAAS,CACpB,GAAIlrG,EAAWnhB,OAASkQ,EACpB,MAAM,IAAIo1G,EAAY6C,UAAU,2CACpC,GAAIhnG,EAAWnhB,OAASmQ,EACpB,MAAM,IAAIm1G,EAAY6C,UAAU,0CACxC,KACK,CACD,MAAMnoH,QAAeytO,EAErB,GADA3hN,EAAgBb,OAAOoB,iBACT,IAATrsB,EAAe,KAAQkQ,EACxB,MAAM,IAAIo1G,EAAY6C,UAAU,2CACpC,GAAc,KAATnoH,EAAgB,KAAQmQ,EACzB,MAAM,IAAIm1G,EAAY6C,UAAU,0CACxC,CACA,OAAO3pH,KAAK0J,OAAOhG,EAAQif,EAAYivG,EAAK,KAAMhE,EAAkBxlH,EAAayiO,GAAYniO,KAAI/E,IACtF,CACHuuH,MAAOvuH,EAAKuuH,MAAMlpH,MAAKkpH,IACnBA,EAAMz+D,MAAQ+1D,EAAgBj9F,IAC9B2lG,EAAMg9G,QAAU1lH,EAAgBl/D,GAChC4nE,EAAMi9G,cAAgB3lH,EAAgBxgB,SACtC,MAAMylI,EAAWv8G,EAAMtsH,WAAWowC,UAClC,GAAIy4L,EAAW/8N,EACX,MAAM,IAAIo1G,EAAY6C,UAAU,2CACpC,GAAI8kH,EAAW98N,EACX,MAAM,IAAIm1G,EAAY6C,UAAU,2CACpC,OAAOuI,CAAK,IAEhBD,aAActuH,EAAKsuH,gBAG/B,CACA,MAAO1gH,GAEH,MADA+b,EAAgBI,MAAMnc,GAChBA,CACV,CACJ,EAEJzR,EAAQkuO,iBAAmBA,+FC9T3B,MAAAx+M,EAAA1uB,EAAA,OACA2uB,EAAA3uB,EAAA,OAgBA,MAAsBqsO,UAAgC19M,EAAAI,KAcpD5hB,WAAAA,CACW6hB,EACFC,EACEC,EACAC,GAET7pB,QALS,KAAA0pB,SAAAA,EACF,KAAAC,UAAAA,EACE,KAAAC,UAAAA,EACA,KAAAC,KAAAA,EATD,KAAAC,UAAW,EACX,KAAAruB,OAAS,EACT,KAAAsuB,IAAM,EACN,KAAAC,WAAY,EASpBpwB,KAAKqwB,OAAS,IAAIC,WAAWR,GAC7B9vB,KAAKuwB,MAAO,EAAAd,EAAAe,YAAWxwB,KAAKqwB,OAC9B,CACAtsB,MAAAA,CAAOJ,IACL,EAAA6rB,EAAAiB,QAAOzwB,MACP,MAAM,KAAEuwB,EAAI,OAAEF,EAAM,SAAEP,GAAa9vB,KAE7BmS,GADNxO,GAAO,EAAA8rB,EAAAiB,SAAQ/sB,IACE9B,OACjB,IAAK,IAAIsuB,EAAM,EAAGA,EAAMhe,GAAO,CAC7B,MAAMwe,EAAOvnB,KAAKsI,IAAIoe,EAAW9vB,KAAKmwB,IAAKhe,EAAMge,GAEjD,GAAIQ,IAASb,EAKbO,EAAO/Z,IAAI3S,EAAKitB,SAAST,EAAKA,EAAMQ,GAAO3wB,KAAKmwB,KAChDnwB,KAAKmwB,KAAOQ,EACZR,GAAOQ,EACH3wB,KAAKmwB,MAAQL,IACf9vB,KAAK6wB,QAAQN,EAAM,GACnBvwB,KAAKmwB,IAAM,OAVb,CACE,MAAMW,GAAW,EAAArB,EAAAe,YAAW7sB,GAC5B,KAAOmsB,GAAY3d,EAAMge,EAAKA,GAAOL,EAAU9vB,KAAK6wB,QAAQC,EAAUX,EAExE,CAQF,CAGA,OAFAnwB,KAAK6B,QAAU8B,EAAK9B,OACpB7B,KAAK+wB,aACE/wB,IACT,CACAgxB,UAAAA,CAAWjqB,IACT,EAAAyoB,EAAAiB,QAAOzwB,OACP,EAAAwvB,EAAAnvB,QAAO0G,EAAK/G,MACZA,KAAKkwB,UAAW,EAIhB,MAAM,OAAEG,EAAM,KAAEE,EAAI,SAAET,EAAQ,KAAEG,GAASjwB,KACzC,IAAI,IAAEmwB,GAAQnwB,KAEdqwB,EAAOF,KAAS,IAChBnwB,KAAKqwB,OAAOO,SAAST,GAAKc,KAAK,GAE3BjxB,KAAKgwB,UAAYF,EAAWK,IAC9BnwB,KAAK6wB,QAAQN,EAAM,GACnBJ,EAAM,GAGR,IAAK,IAAInlB,EAAImlB,EAAKnlB,EAAI8kB,EAAU9kB,IAAKqlB,EAAOrlB,GAAK,GAhFrD,SAAsBulB,EAAgBW,EAAoBhuB,EAAe+sB,GACvE,GAAiC,oBAAtBM,EAAKY,aAA6B,OAAOZ,EAAKY,aAAaD,EAAYhuB,EAAO+sB,GACzF,MAAMmB,EAAO1rB,OAAO,IACd2rB,EAAW3rB,OAAO,YAClB4rB,EAAKnC,OAAQjsB,GAASkuB,EAAQC,GAC9BE,EAAKpC,OAAOjsB,EAAQmuB,GACpBG,EAAIvB,EAAO,EAAI,EACfze,EAAIye,EAAO,EAAI,EACrBM,EAAKkB,UAAUP,EAAaM,EAAGF,EAAIrB,GACnCM,EAAKkB,UAAUP,EAAa1f,EAAG+f,EAAItB,EACrC,CA0EIkB,CAAaZ,EAAMT,EAAW,EAAGpqB,OAAqB,EAAd1F,KAAK6B,QAAaouB,GAC1DjwB,KAAK6wB,QAAQN,EAAM,GACnB,MAAMmB,GAAQ,EAAAjC,EAAAe,YAAWzpB,GACnBoL,EAAMnS,KAAK+vB,UAEjB,GAAI5d,EAAM,EAAG,MAAM,IAAItO,MAAM,+CAC7B,MAAM8tB,EAASxf,EAAM,EACfzR,EAAQV,KAAK4L,MACnB,GAAI+lB,EAASjxB,EAAMmB,OAAQ,MAAM,IAAIgC,MAAM,sCAC3C,IAAK,IAAImH,EAAI,EAAGA,EAAI2mB,EAAQ3mB,IAAK0mB,EAAMD,UAAU,EAAIzmB,EAAGtK,EAAMsK,GAAIilB,EACpE,CACAjsB,MAAAA,GACE,MAAM,OAAEqsB,EAAM,UAAEN,GAAc/vB,KAC9BA,KAAKgxB,WAAWX,GAChB,MAAMuB,EAAMvB,EAAO3iB,MAAM,EAAGqiB,GAE5B,OADA/vB,KAAK6xB,UACED,CACT,CACAE,UAAAA,CAAWC,GACTA,IAAAA,EAAO,IAAK/xB,KAAKiO,aACjB8jB,EAAGzb,OAAOtW,KAAK4L,OACf,MAAM,SAAEkkB,EAAQ,OAAEO,EAAM,OAAExuB,EAAM,SAAEquB,EAAQ,UAAEE,EAAS,IAAED,GAAQnwB,KAM/D,OALA+xB,EAAGlwB,OAASA,EACZkwB,EAAG5B,IAAMA,EACT4B,EAAG7B,SAAWA,EACd6B,EAAG3B,UAAYA,EACXvuB,EAASiuB,GAAUiC,EAAG1B,OAAO/Z,IAAI+Z,GAC9B0B,CACT,EAnGFjyB,EAAAA,KAAAqtO,yBCjBA,QAA0BiC,IAIN,WA6DlB,OAAO,WASL,OApEF,SAAoBC,GAClB,IAAIC,EAAc,GAClB,GAAwB,IAApBD,EAASxtO,OAAgB,MAAO,GAEpC,GAA2B,kBAAhBwtO,EAAS,GAClB,MAAM,IAAIpwM,UAAU,kCAAoCowM,EAAS,IAInE,GAAIA,EAAS,GAAG78J,MAAM,iBAAmB68J,EAASxtO,OAAS,EAAG,CAC5D,IAAIsjD,EAAQkqL,EAASthO,QACrBshO,EAAS,GAAKlqL,EAAQkqL,EAAS,EACjC,CAGIA,EAAS,GAAG78J,MAAM,gBACpB68J,EAAS,GAAKA,EAAS,GAAGriO,QAAQ,gBAAiB,UAEnDqiO,EAAS,GAAKA,EAAS,GAAGriO,QAAQ,gBAAiB,SAGrD,IAAK,IAAIhC,EAAI,EAAGA,EAAIqkO,EAASxtO,OAAQmJ,IAAK,CACxC,IAAIukO,EAAYF,EAASrkO,GAEzB,GAAyB,kBAAdukO,EACT,MAAM,IAAItwM,UAAU,kCAAoCswM,GAGxC,KAAdA,IAEAvkO,EAAI,IAENukO,EAAYA,EAAUviO,QAAQ,SAAU,KAIxCuiO,EAFEvkO,EAAIqkO,EAASxtO,OAAS,EAEZ0tO,EAAUviO,QAAQ,SAAU,IAG5BuiO,EAAUviO,QAAQ,SAAU,KAG1CsiO,EAAYhoO,KAAKioO,GAEnB,CAEA,IAAIv9N,EAAMs9N,EAAYpyK,KAAK,KAOvBvvD,GAHJqE,EAAMA,EAAIhF,QAAQ,kBAAmB,OAGrBzE,MAAM,KAGtB,OAFMoF,EAAMI,SAAWJ,EAAM9L,OAAS,EAAI,IAAK,IAAM8L,EAAMuvD,KAAK,IAGlE,CAWSgoH,CANqB,kBAAjBtjL,UAAU,GACXA,UAAU,GAEV,GAAG8L,MAAMoJ,KAAKlV,WAI1B,CAEF,EA5EuC7B,EAAOD,QAASC,EAAOD,QAAUsvO,SACA,2BAAjBxwN,EAAAA,GAAiB,gECDxE5b,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0vO,wBAAqB,EAC7B,MAAMC,EAAyB3uO,EAAQ,OACjC4uO,EAAqB5uO,EAAQ,OAC7B6uO,EAA2B7uO,EAAQ,OACnC8uO,EAA6B9uO,EAAQ,OACrCqE,EAAUrE,EAAQ,OAClBo4N,EAAqBp4N,EAAQ,OAC7B4qB,EAAiB5qB,EAAQ,OACzB+uO,EAAwB/uO,EAAQ,OAChC+gB,GAAS,EAAI1c,EAAQG,WAAW,wBAKtC,MAAMkqO,UAA2BtW,EAAmB9uC,iBAChD,yBAAO0lD,CAAmBvlD,EAAsBuqB,EAAQtqB,GACpD,MAAMulD,EAAY,CACd,IAAIN,EAAuBO,qBAAqBl7B,EAAOpsM,KAAIohO,IAChD,CACHxhO,OAAQwhO,EAASmG,YACjB5tN,OAAQynN,EAASznN,YAGzB,IAAIqtN,EAAmB9xH,iBAAiBk3F,EAAOpsM,KAAIohO,IACxC,CACHxhO,OAAQwhO,EAASoG,QACjB7tN,OAAQynN,EAASznN,YAGzB,IAAIstN,EAAyBQ,uBAAuBr7B,EAAOpsM,KAAIohO,IACpD,CACHxhO,OAAQwhO,EAASsG,gBACjB/tN,OAAQynN,EAASznN,YAGzB,IAAIutN,EAA2B9S,yBAAyBhoB,EAAOpsM,KAAIohO,IACxD,CACHxhO,OAAQwhO,EAASuG,kBACjBhuN,OAAQynN,EAASznN,YAGzB,IAAIwtN,EAAsBS,oBAAoBx7B,EAAOpsM,KAAIohO,IAC9C,CACHxhO,OAAQwhO,EAASyG,WACjBluN,OAAQynN,EAASznN,aAI7B,OAAO,IAAImtN,EAAmBjlD,EAAsBuqB,EAAQi7B,EAAWvlD,EAC3E,CACAv8K,WAAAA,CAAYs8K,EAAsBimD,EAAeT,EAAWvlD,GACxDpkL,MAAMmkL,EAAsBC,GAC5BxqL,KAAKwwO,cAAgB,CAAC,EACtB,IAAK,IAAI1G,KAAY0G,EACjB,IAAK,IAAIjuN,KAAWunN,EAASznN,OAAQ,CACjC,MAAM,QAAE3b,EAAO,SAAEjF,GAAaqoO,EAASznN,OAAOE,GAC9CviB,KAAKwwO,cAAcjuN,KAAa,CAAC,EACjCviB,KAAKwwO,cAAcjuN,GAAS7b,EAAQjC,YAAchD,CACtD,CAEJzB,KAAK+vO,UAAYA,EAAUrnO,KAAIqnF,IACpB,CACH0gJ,SAAU1gJ,EACVs/F,YAAa,QAGzB,CAMAqhD,sBAAAA,GACI,OAAO1wO,KAAK+vO,UAAUj1K,MAAKvpD,IAAuB,IAAlBA,EAAE89K,aACtC,CAOAshD,4BAAAA,GACI,IAAIthD,EAAcrvL,KAAK+vO,UAAUv8I,QAAOjiF,IAAuB,IAAlBA,EAAE89K,aAA0C,OAAlB99K,EAAE89K,cAKzE,OAJ2B,IAAvBA,EAAYxtL,SACZ7B,KAAK+vO,UAAUhhO,SAAQwC,GAAKA,EAAE89K,YAAc,OAC5CA,EAAcrvL,KAAK+vO,WAEhB1gD,CACX,CASA,6CAAMuhD,CAAwCtvN,EAAiBnZ,EAAOC,GAClE,IACI,aAAa,EAAIjD,EAAQwqL,YAAY3vL,KAAK2wO,+BAA+BjoO,KAAIkG,GAAO,WAChF,IACI,MAAMpG,QAAcoG,EAAI6hO,SAAS/lD,SAASppK,EAAiBnZ,EAAOC,GAGlE,OAFAyZ,EAAO0F,MAAM,4BAA8B3Y,EAAI6hO,SAASxiO,YAAY2D,KAAO,KAAMpJ,EAAM/D,SAAS,KAChGmK,EAAIygL,aAAc,EACX7mL,CACX,CACA,MAAO+I,GAIH,MAHmB,MAAfnJ,GACAA,EAAYylB,iBAChBjf,EAAIygL,aAAc,EACZ99K,CACV,CACH,EAbmF,KAcxF,CACA,MAAOA,GAGH,MAFmB,MAAfnJ,GACAA,EAAYylB,iBACVtc,EAAEupD,MAAKlxC,KAASA,aAAe8B,EAAe2C,iBAAkB9c,EAAE,EAC5E,CACJ,CAUArJ,UAAAA,CAAWoZ,EAAiBnZ,EAAOC,GAC/B,OAAO,EAAIjD,EAAQke,iBAAgB,KAC/B,MAAMwsK,EAAsB7vL,KAAK0wO,yBACjC,OAA2B,MAAvB7gD,EACOA,EAAoB4gD,SAAS/lD,SAASppK,EAAiBnZ,EAAOC,GAAawa,OAAMgH,IACjE,MAAfxhB,GACAA,EAAYylB,iBAChBgiK,EAAoBR,aAAc,EAC3BrvL,KAAK4wO,wCAAwCtvN,EAAiBnZ,EAAOC,MAG7EpI,KAAK4wO,wCAAwCtvN,EAAiBnZ,EAAOC,EAAY,GACzF,KAAMsjB,EAAe2C,aAAcjmB,EAC1C,CACA+vN,WAAAA,CAAY72M,EAAiBnZ,GACzB,OAA2C,MAAvCnI,KAAKwwO,cAAclvN,GACZ,KACJthB,KAAKwwO,cAAclvN,GAAiBnZ,EAAM1D,WACrD,CAOA,gDAAMosO,CAA2CzoO,GAC7C,IACI,aAAa,EAAIjD,EAAQwqL,YAAY3vL,KAAK2wO,+BAA+BjoO,KAAIkG,GAAO,WAChF,IACI,MAAMpG,QAAcoG,EAAI6hO,SAAS3lD,YAAY1iL,GAG7C,OAFAyZ,EAAO0F,MAAM,gCAAkC3Y,EAAI6hO,SAASxiO,YAAY2D,KAAO,KAAMpJ,EAAM/D,SAAS,KACpGmK,EAAIygL,aAAc,EACX7mL,CACX,CACA,MAAO+I,GAIH,MAHmB,MAAfnJ,GACAA,EAAYylB,iBAChBjf,EAAIygL,aAAc,EACZ99K,CACV,CACH,EAbmF,KAcxF,CACA,MAAOA,GAGH,MAFmB,MAAfnJ,GACAA,EAAYylB,iBACVtc,EAAEupD,MAAKlxC,KAASA,aAAe8B,EAAe2C,iBAAkB9c,EAAE,EAC5E,CACJ,CACA4sG,aAAAA,CAAc/1G,GACV,OAAO,EAAIjD,EAAQke,iBAAgB,KAC/B,MAAMwsK,EAAsB7vL,KAAK0wO,yBACjC,OAA2B,MAAvB7gD,EACOA,EAAoB4gD,SAAS3lD,YAAY1iL,GAAawa,OAAMgH,IAC5C,MAAfxhB,GACAA,EAAYylB,iBAChBgiK,EAAoBR,aAAc,EAC3BrvL,KAAK6wO,2CAA2CzoO,MAGxDpI,KAAK6wO,2CAA2CzoO,EAAY,GACpE,KAAMsjB,EAAe2C,aAAcjmB,EAC1C,EAEJtI,EAAQ0vO,mBAAqBA,gCChM7B,MAAMsB,EAAchwO,EAAAA,OAAAA,OACd+/D,EAAS//D,EAAQ,OACjByD,EAASzD,EAAAA,OAAAA,OACTiwO,EAAUjwO,EAAQ,OAClBkwO,EAAiBlwO,EAAAA,OAAAA,UACjBmwO,EAAYnwO,EAAQ,OAGpBowO,EAAiB,CAErBrwK,OAAQ,KACRC,WAAY,EACZC,WAAY,EACZowK,qBAAsB,CAAC,EAAG,GAC1BnwK,IAAK,KAEDowK,EAAc,CAClBvwK,OAAQ,KACRC,WAAY,IACZC,WAAY,IACZowK,qBAAsB,CAAC,EAAG,GAC1BnwK,IAAK,KAEDqwK,EAAiB,CACrBxwK,OAAQ,OACRC,WAAY,IACZC,WAAY,IACZowK,qBAAsB,CAAC,EAAG,GAC1BnwK,IAAK,KAEDswK,EAAa,CACjBzwK,OAAQ,KACRC,WAAY,GACZC,WAAY,IACZowK,qBAAsB,CAAC,EAAG,GAC1BnwK,IAAK,KAKDuwK,EAAqB,CACzBC,YAAa,EACbC,gBAAiB,CACf74L,UAAU,EACV84L,WAAW,GAEbC,eAAgB,CACd/4L,UAAU,EACV84L,WAAW,IAITE,EAAmB,CACvB,2BACA,uBACA,iCACA,iBACA,kBACA,oBACA,0BACA,iBACA,YACA,gCAGIC,EAAW,CACfv5N,EAAG,MACHi9B,EAAG,SACHhlC,EAAG,YACHgG,EAAG,gBAKCu7N,EAAoB,cAMpBC,EAAW,CACfl9K,aAAc,EACd88K,eAAgB,GAChBxqH,YAAa,GACb6qH,eAAgB,GAChB5oH,oBAAqB,GACrB6oH,YAAa,EACbC,sBAAuB,GACvBC,iBAAkB,EAClBC,aAAc,EACdC,aAAc,EACdC,gBAAiB,IAIbC,EAAW,CAAC,EAClB,IAAK,IAAIvnO,EAAI,EAAGoU,EAAOpc,OAAOoc,KAAK2yN,GAAW/mO,EAAIoU,EAAKvd,OAAQmJ,IAAK,CAClE,MAAMwnO,EAAcpzN,EAAKpU,GACnBynO,EAAcV,EAAS3yN,EAAKpU,IAAIvG,WACtC8tO,EAASE,GAAeD,CAC1B,CAEA,MAAME,EAAc,CAClB79K,aAAc89K,EACdhB,eAAgBgB,EAChBxrH,YA8GF,SAAqB/4F,GACnB,MAAMiC,EAVR,SAAuBjC,GACrB,OAAO7pB,EAAOC,KAAK4pB,EAAM,OAC3B,CAQiBwkN,CAAaxkN,GAE5B,OADcyyC,EAAO+5G,QAAQvqJ,EAE/B,EAjHE2hN,eAAgBW,EAChBvpH,oBA4VF,SAA+BzlH,GAC7B,IAAI0sB,EACJ,QAAavuB,IAAT6B,KAAuC,kBAATA,GAAqBA,aAAgBkO,QAOrE,MAAM,IAAIhO,MAAM,4DALdwsB,EADE1sB,EAAK6uE,MAAM,uBACJjuE,EAAOC,KAAKb,EAAM,OAElB68D,EAAOj8D,EAAOC,KAAKb,EAAM,SAKtC,OAAOk9D,EAAO+5G,QAAQvqJ,EACxB,EAvWE4hN,YAAaY,EACbX,sBAAuBW,EACvBV,iBAsJF,SAAiCxuO,EAAM0vB,GACrC,MAAO,CAAC1vB,EAAK+qD,MAAMv2C,OAAOw6N,EAAUhvO,EAAKmvO,aAC3C,EAvJEV,aA0UF,SAA6BW,GAC3B,IAAI1iN,EAAS9rB,EAAOC,KAAK,IAQzB,OAPAuuO,EAAMhkO,SAAQpL,IACZ0sB,EAAS9rB,EAAO4T,OAAO,CAACkY,EAAQ2iN,EAAYrvO,EAAKmc,UACjDuQ,EAAS9rB,EAAO4T,OAAO,CAACkY,EAAQ2iN,EAAYrvO,EAAKsvO,oBACjD5iN,EAAS9rB,EAAO4T,OAAO,CAACkY,EAAQ9rB,EAAOC,KAAK,CAAC,EAAG,EAAG,GAAG2T,OAAO06N,EAAalvO,EAAKuvO,cAAe,IAAIxlO,OAAO,MACzG2iB,EAAS9rB,EAAO4T,OAAO,CAACkY,EAAQ9rB,EAAOC,KAAK,CAAC,EAAG,EAAG,GAAG2T,OAAO06N,EAAalvO,EAAKwvO,4BAA6B,IAAIzlO,OAAO,MACvH2iB,EAAS9rB,EAAO4T,OAAO,CAACkY,EAAQ9rB,EAAOC,KAAK,CAAC,GAAG2T,OAAO06N,EAAalvO,EAAKyvO,kBAAmB,IAAI1lO,OAAO,KAAK,IAEvGilO,EAAUtiN,EACnB,EAnVEgiN,aA6RF,SAA6BgB,GAC3B,IAAIC,EAAcD,EAAY7B,YAC1B+B,EAAQ,GACZ3B,EAAiB7iO,SAAQykO,IACvBD,EAAMjsO,QAAQ+rO,EAAYG,IAAgB,CAAC,GAAG56L,UAC9C26L,EAAMjsO,QAAQ+rO,EAAYG,IAAgB,CAAC,GAAG9B,UAAU,IAG1D,MAAmC,IAA5B6B,EAAMA,EAAM1xO,OAAS,IAC1B0xO,EAAMl+N,MAER,KAAOk+N,EAAM1xO,OAAS,IAAM,GAC1B0xO,EAAMjsO,MAAK,GAEb,GACE+rO,EAAY9qK,YACZp+D,MAAMi3B,QAAQiyM,EAAY9qK,WAAWzxC,OACrCu8M,EAAY9qK,WAAWzxC,KAAKj1B,OAAS,EACrC,CACA,KAAO0xO,EAAM1xO,OAASwxO,EAAY9qK,WAAWkrK,WAC3CF,EAAMjsO,MAAK,GAEbisO,EAAQA,EAAMp7N,OAAOk7N,EAAY9qK,WAAWzxC,KAC9C,CACA,QAAoBh1B,IAAhBwxO,GAA6BC,EAAM1xO,OAAS,EAAIyxO,EAClD,MAAM,IAAIzvO,MAAM,4DACS/B,IAAhBwxO,IACTA,EAAclqO,KAAKwG,KAAK2jO,EAAM1xO,OAAS,IAEzC,OAAO,IAAIsI,MAAMmpO,GAAariN,KAAK,GAAGvoB,KAAI,CAAC+2B,EAAGmB,IAC5C2yM,EAAc,EAAR3yM,EAAY,IAAM,EACxB2yM,EAAc,EAAR3yM,EAAY,IAAM,EACxB2yM,EAAc,EAAR3yM,EAAY,IAAM,EACxB2yM,EAAc,EAAR3yM,EAAY,IAAM,EACxB2yM,EAAc,EAAR3yM,KACNhzB,SACJ,GA7TM8lO,EAAa,CACjB,EAAIpzM,GAAUqzM,EAAcrzM,GAAO,GAAM77B,SAAS,OAClD,GAAK67B,GAAUqzM,EAAcrzM,GAAO,GAAM77B,SAAS,OACnD,GAAK67B,GAAUqzM,EAAcrzM,GAAO,GAAM77B,SAAS,QACnD,GAAK67B,GAAUqzM,EAAcrzM,GAAO,GAAM77B,SAAS,OACnD,GAAK67B,GAAUqzM,EAAcrzM,GAAO,GAAM77B,SAAS,OACnD,EAAGmvO,EACH,GAAIA,EACJ,EAkGF,SAAgCtzM,EAAOjN,GACrC,MAAMo5B,EAAUnsB,EAAM,GAGhBwyM,EAAca,EAFpBrzM,EAAQA,EAAM5yB,MAAM,IAEqB,GAEzC,IAAIhH,EAAU,KAEd,OAAQ+lD,GACN,KAAK,GACH/lD,EAAUqqO,EAAQ1vH,QAAQhuF,GAASlT,OAAO,CAAExY,KAAM,MAAO/C,KAAMkuO,IAC/D,MACF,KAAK,GACHpsO,EAAUqqO,EAAQ1vH,QAAQhuF,GAASlT,OAAO,CAAExY,KAAM,KAAM/C,KAAMkuO,IAC9D,MACF,KAAK,EAEDpsO,EADyB,KAAvBosO,EAAYjxO,OACJkvO,EAAQ1vH,QAAQhuF,GAASlT,OAAO,CAAExY,KAAM,OAAQ/C,KAAMkuO,IAEtD/B,EAAQ1vH,QAAQhuF,GAASlT,OAAO,CAAExY,KAAM,MAAO/C,KAAMkuO,IAEjE,MACF,KAAK,EACHpsO,EAAUqqO,EAAQ1vH,QAAQhuF,GAASlT,OAAO,CAAExY,KAAM,KAAMmY,OAAQgzN,IAIpE,MAAO,CACLpkL,KAAMjC,EACN/lD,UACAosO,YAAaA,EAAYruO,SAAS,OAEtC,EAjIE,EA6IF,SAA4B67B,GAC1B,MAAM2mF,EAAS,GACf,IAAInnG,EAAQ+zN,EAAgBC,EAAcC,EAA2BC,EACjEC,EAAeN,EAAcrzM,GAAO,GACxC,KAAO2zM,EAAapyO,OAAS,GAC3Bie,EAASm0N,EAAavmO,MAAM,EAAG,IAAIjJ,SAAS,OAC5CovO,EAAiBI,EAAavmO,MAAM,GAAI,IAAIjJ,SAAS,OACrDqvO,EAAe3oO,SAAS8oO,EAAavmO,MAAM,GAAI,IAAIjJ,SAAS,OAAQ,IACpEsvO,EAA4B5oO,SAAS8oO,EAAavmO,MAAM,GAAI,IAAIjJ,SAAS,OAAQ,IACjFuvO,EAAkB7oO,SAAS8oO,EAAavmO,MAAM,GAAI,IAAIjJ,SAAS,OAAQ,IAEvEwvO,EAAeA,EAAavmO,MAAM,IAElCu5G,EAAO3/G,KAAK,CACVwY,SACAmzN,iBAAkBY,EAClBX,cAAeY,EACfX,4BAA6BY,EAC7BX,kBAAmBY,IAGvB,OAAO/sH,CACT,EAlKE,EAkOF,SAA4B3mF,GAC1B,MAAMizM,EAAQjzM,EAAM5yB,QAAQE,UAAUlF,KAAIs5B,GACxC,IACY,EAAPA,MACO,EAAPA,MACO,EAAPA,MACO,EAAPA,MACO,GAAPA,MAEL/4B,QAAO,CAACirO,EAAUC,IAAYD,EAAS/7N,OAAOg8N,IAAU,IAC1D,KAAOZ,EAAM1xO,OAAmC,EAA1B+vO,EAAiB/vO,QACrC0xO,EAAMjsO,MAAK,GAEb,MAAM+rO,EAAc,CAClB7B,YAAalxM,EAAMz+B,QAQrB,GANA+vO,EAAiB7iO,SAAQ,CAACykO,EAAa5yM,KACrCyyM,EAAYG,GAAe,CACzB56L,SAAU26L,EAAc,EAAR3yM,GAChB8wM,UAAW6B,EAAc,EAAR3yM,EAAY,GAC9B,IAEC2yM,EAAM1xO,OAAmC,EAA1B+vO,EAAiB/vO,OAAY,CAC9C,MAAMuyO,EAAYb,EAAM7lO,MAAgC,EAA1BkkO,EAAiB/vO,QAC/CwxO,EAAY9qK,WAAa,CACvBkrK,UAAqC,EAA1B7B,EAAiB/vO,OAC5Bi1B,KAAMs9M,EACNC,aAAcD,EAAUnrO,QACtB,CAAC0lB,EAAQgX,EAAK/E,IACZA,EAAQ,IAAM,EACVjS,IAAU,EACVA,GAAUgX,IAChB,GAGN,MACE0tM,EAAY9qK,WAAa,CACvBkrK,UAAqC,EAA1B7B,EAAiB/vO,OAC5Bi1B,KAAM,GACNu9M,cAAc,GAGlB,OAAOhB,CACT,EA5QE,GA+LF,SAA6B/yM,GAC3B,MAAM38B,EAAOgwO,EAAcrzM,GAAO,GAC5Bg0M,EAAc3wO,EAAKi1H,aAAa,GAChCm7G,EAA4BpwO,EAAKi1H,aAAa,GAC9Co7G,EAAkBrwO,EAAK6rI,aAAa,GACpC+kG,EAAkB7uO,OAAO,KAAO/B,EAAK+J,MAAM,GAAI,IAAIjJ,SAAS,QAC5D+vO,EAAkB9uO,OAAO,KAAO/B,EAAK+J,MAAM,GAAI,IAAIjJ,SAAS,QAC5DgwO,EAAO9wO,EAAK6rI,aAAa,IAC/B,IAAIklG,EAAU,GACd,MAAMC,EAAW,IAAIhxO,EAAK+J,MAAMgnO,EAASA,EAAUD,IACnDC,GAAWD,EACX,MAAMG,EAA8BjxO,EAAK+J,MAAMgnO,EAASA,EAAU,IAAIjwO,SAAS,OAC/EiwO,GAAW,GACX,MAAMG,EAAUlxO,EAAKu8I,UAAUw0F,GAC/BA,IACA,MAAMI,EAAc,GACpB,IAAK,IAAIC,EAAM,EAAGA,EAAMF,EAASE,IAAO,CACtC,MAAOC,EAAYC,GAAYC,EAAiBvxO,EAAM+wO,GACtDA,EAAUO,EACVH,EAAYxtO,KAAK0tO,EACnB,CACA,MAAO,CACL9B,cAAeoB,EACfnB,4BAA6BY,EAC7BX,kBAAmBY,EACnBmB,kBAAmBZ,EACnBa,kBAAmBZ,EACnBG,WACAU,+BAAgCT,EAChCU,aAAcR,EACdS,kBAAmBT,EAAY,GAAGU,oBAEtC,GA5NMC,EAAiB,aAOvB,SAASC,EAAkBC,GACzB,OAAQr1M,IAAK,CACXq1M,QAASxqO,SAASwqO,GAClBr1M,MAAOugC,EAAO1gD,OAAO,UAAWmgB,EAAOnR,OAAOjf,mBAElD,CAEA,SAAS0jO,EAActzM,GACrB,OAAOA,EAAM1yB,UAAU3E,QAAO,CAACqtB,EAAO/C,EAAMqN,IACnCtK,EAAQ/C,EAAOnqB,KAAK8O,IAAI,GAAI0oB,IAClC,EACL,CAEA,SAASiyM,EAAc+C,EAAO9+M,GAC5B,MAAMwJ,EAAQ,GAGd,QAFax+B,IAATg1B,IAAoBA,EAAO,GAEjB,KADd8+M,EAAQxsO,KAAKC,MAAMusO,IACF,MAAO,CAAC,GACzB,KAAOA,EAAQ,GACbt1M,EAAMh5B,KAAKsuO,EAASxsO,KAAK8O,IAAI,EAAG4e,GAAQ,GACxC8+M,EAAQxsO,KAAKC,MAAMusO,EAAQxsO,KAAK8O,IAAI,EAAG4e,IAEzC,OAAOwJ,EAAM1yB,SACf,CAEA,SAAS4yD,EAAQ78D,GACf,OAAOY,EAAOC,KAAKssO,EAAYntO,GACjC,CAEA,SAAS42K,EAAS52K,EAAM62K,EAAQC,GAC9B,IAAIv3K,EAAQ,EACR4zB,EAAO,EACX,MAAM4jJ,GAAQ,GAAKD,GAAW,EAExB9rJ,EAAS,GACf,IAAK,IAAI3jB,EAAI,EAAGA,EAAIrH,EAAK9B,SAAUmJ,EAIjC,IAHA9H,EAASA,GAASs3K,EAAU72K,EAAKqH,GACjC8rB,GAAQ0jJ,EAED1jJ,GAAQ2jJ,GACb3jJ,GAAQ2jJ,EACR9rJ,EAAOrnB,KAAMpE,GAAS4zB,EAAQ4jJ,GAQlC,OAJI5jJ,EAAO,GACTnI,EAAOrnB,KAAMpE,GAAUu3K,EAAU3jJ,EAAS4jJ,GAGrC/rJ,CACT,CAEA,SAASglN,EAAerzM,EAAOrzB,GAC7B,IAAIojB,EAAS9rB,EAAOC,KAAK+1K,EAAQj6I,EAAO,EAAG,IAI3C,OAHIrzB,GAAuB,EAAfqzB,EAAMz+B,OAAa,IAAM,IACnCwuB,EAASA,EAAO3iB,MAAM,GAAI,IAErB2iB,CACT,CAEA,SAAS2iN,EAAalsO,GACpB,YAAYhF,IAARgF,IACgB,kBAARA,GAAoBA,aAAe+K,SAC3C/K,EAAI0rE,MAAM,uBACLjuE,EAAOC,KAAKsC,EAAK,OAEnBA,CACT,CAMA,SAAS6rO,EAAW7rO,GAClB,MAAMupB,EAAS2iN,EAAYlsO,GAC3B,OAAO+5D,EAAO+5G,QAAQvqJ,EACxB,CA4FA,SAAS6kN,EAAkBvxO,EAAM+wO,GAC/B,MAAMmB,EAAoBlyO,EAAK+J,MAAMgnO,EAASA,EAAU,IACxDA,GAAW,GACX,MAAOoB,EAAkBb,GAlB3B,SAAwBtxO,EAAM+wO,GAC5B,MAAMn3F,EAAY55I,EAAKu8I,UAAUw0F,GAEjC,OADAA,IACQn3F,GACN,KAAK,IACH,MAAO,CAAC55I,EAAK6rI,aAAaklG,GAAUA,EAAU,GAChD,KAAK,IACH,MAAO,CAAC/wO,EAAKi1H,aAAa87G,GAAUA,EAAU,GAChD,KAAK,IACH,MAAO,CAACvpO,SAASxH,EAAK+J,MAAMgnO,EAASA,EAAU,GAAGjwO,SAAS,OAAQ,IAAKiwO,EAAU,GACpF,QACE,MAAO,CAACn3F,EAAWm3F,GAEzB,CAKuCqB,CAAcpyO,EAAM+wO,GACzDA,EAAUO,EACV,MAAMe,EAAaryO,EAAK+J,MAAMgnO,EAASA,EAAUoB,GAEjD,OADApB,GAAWoB,EACJ,CAAC,CACNN,oBAAqBK,EAAkBpxO,SAAS,OAChDwxO,YAAaD,EAAWvxO,SAAS,QAChCiwO,EACL,CAyJA,SAASwB,EAAWC,EAAMC,GACxB,MAAMtxL,EAAMqxL,EAAK3iJ,QAAOjgE,GAAQA,EAAK6iN,UAAYA,IAEjD,OADatxL,EAAIjjD,OAAS,EAAIijD,EAAI,GAAGnhD,KAAO,IAE9C,CAEA,SAAS0yO,EAAiBF,EAAMC,GAC9B,OAAoC,OAA7BF,EAAUC,EAAMC,EACzB,CAEA,SAASE,EAAWC,EAAcC,GAChC,MAAMC,EAAa,CAAC,EAIpB,GAHAzzO,OAAOoc,KAAKm3N,GAAc15M,OAAO9tB,SAAS/E,IACxCysO,EAAWzsO,GAAOusO,EAAavsO,EAAI,KAEnB,IAAdwsO,EAAoB,CACtB,MAAME,EAAY,qBAClB1zO,OAAOC,eAAewzO,EAAY,aAAc,CAC9C7qO,GAAAA,GAME,OALK5L,KAAK02O,IACR1zO,OAAOC,eAAejD,KAAM02O,EAAW,CACrCxzO,MAAOyzO,EAAc32O,KAAKm2O,QAGvBn2O,KAAK02O,EACd,GAEJ,CACA,OAAOD,CACT,CAEA,SAASG,EAAUC,GACjB,IAAKA,EAASpyO,WAAW+tE,MAAM,SAC7B,MAAM,IAAI3uE,MAAM,+BAGlB,OAAOizO,EAAgC,MADfpxO,OAAOmxO,GAEjC,CAEA,SAASC,EAAe1iL,GACtB,IAAKA,EAAc3vD,WAAW+tE,MAAM,SAClC,MAAM,IAAI3uE,MAAM,oCAElB,MAAMkzO,EAAkBrxO,OAAO0uD,GACzB4iL,EAAsBD,EAAgBtyO,SAAS,IAC/CwyO,EAAsBD,EAAoBn1O,OAChD,IAAIq1O,EAAeC,EAiBnB,OAhBIF,EAAsB,IAAM,SAAS3iO,KAAK0iO,IAC5CE,EAAgB,GAChBC,GAAeJ,EAAkBjF,GAAmBrtO,SAAS,KACpDwyO,EAAsB,GAAK,QAAQ3iO,KAAK0iO,IACjDE,EAAgB,IAChBC,GAAeJ,EA9bY,YA8b8BtyO,SAAS,KACzDwyO,EAAsB,GAAK,QAAQ3iO,KAAK0iO,IACjDE,EAAgB,IAChBC,GAAeJ,EAhcY,SAgc8BtyO,SAAS,KACzDwyO,EAAsB,GAAK,QAAQ3iO,KAAK0iO,IACjDE,EAAgB,IAChBC,GAAeJ,EAlcW,MAkc8BtyO,SAAS,MAEjEyyO,EAAgB,IAChBC,GApc0B,IAocXJ,GAAyCtyO,SAAS,KAE5D0yO,EAAcD,CACvB,CAEA,SAASE,EAAUC,EAAWC,GAC5B,MAAMP,EAAkBQ,EAAcF,GAAW,GACjD,GAAKN,EAAkB,QAAW,GAChC,MAAM,IAAIlzO,MAAM,oCAElB,MAAM8qB,EAASooN,EAAkB,MACjC,OAAOO,EAAe3oN,EAAOlqB,SAAS,IAAMkqB,CAC9C,CAEA,SAAS4oN,EAAeF,EAAWC,GACjC,IAAIxnE,EAAS5sK,EACb,GAAIm0O,EAAU3pO,OAAO,GAAG8kE,MAAM,YAC5Bs9F,EAAUunE,EAAU3pO,OAAO,GAC3BxK,EAAQm0O,EAAU3pO,MAAM,GAAI,OACvB,IAAI2pO,EAAU3pO,OAAO,GAAG8kE,MAAM,gBACnC,MAAM,IAAI3uE,MAAM,yCAEhBX,EAAQm0O,CACV,CAEA,IAAKn0O,EAAMsvE,MAAM,SAAU,MAAM,IAAI3uE,MAAM,qCAE3C,MAAM40L,EAAU/yL,OAAOxC,GAEjB6zO,EAAkBjnE,EACnB2oB,EAAUq5C,EAAoBD,EAAS/hE,GACvC2oB,EAAUq5C,EAEf,GAAkB,MAAZhiE,GAAoB2oB,EAAU,MAAS,IACzCs+C,EA5egB,qBA6elB,MAAM,IAAIlzO,MAAM,oCAGlB,OAAOyzO,EAAeP,EAAgBtyO,SAAS,IAAMsyO,CACvD,CA4gBA,SAASJ,EAAeR,GACtB,MAAMxnN,EAAS,CAAC,EAiBhB,OAhBAwnN,EAAKpnO,SAAQ+1C,IACPA,EAAIsxL,UAAYX,GACb9mN,EAAO6oN,cACV7oN,EAAO6oN,YAAc,IAEvB7oN,EAAO6oN,YAAYlwO,KAAKw9C,EAAInhD,OAER,oBAAhBmhD,EAAIsxL,SACqB,MAAvBznN,EAAOm2B,EAAIsxL,WAAkBznN,EAAOm2B,EAAIsxL,SAAW,IACvDznN,EAAOm2B,EAAIsxL,SAAS9uO,KAAKw9C,EAAInhD,OAE7BgrB,EAAOm2B,EAAIsxL,SAAWtxL,EAAInhD,IAE9B,IAGKgrB,CACT,CAEA5uB,EAAOD,QAAU,CACfqgB,OApeF,SAAiBs3N,EAAWC,GAE1B,MAAM/zO,EAAOstO,EAAUwG,QAGH31O,IAAhB41O,IAA2BA,GAAc,GAE7C,MAAMC,SAAsC71O,IAAnB6B,EAAKM,gBAAiDnC,IAAtB6B,EAAKi0O,cAG9D,IAAIC,EAsFAC,EAAeC,EAYfrpL,EAAMokL,EAAapsO,EAjGvB,QAAqB5E,IAAjB6B,EAAK0vB,SAA0BskN,EAG5B,SAAqB71O,IAAjB6B,EAAK0vB,SAAyBskN,EACvC,MAAM,IAAI9zO,MAAM,0DAGhB,IACGF,EAAK0vB,QAAQwtC,aACc/+D,IAA5B6B,EAAK0vB,QAAQytC,iBACeh/D,IAA5B6B,EAAK0vB,QAAQ0tC,aACZ52D,MAAMi3B,QAAQz9B,EAAK0vB,QAAQ89M,4BACPrvO,IAArB6B,EAAK0vB,QAAQ2tC,IACb,MAAM,IAAIn9D,MAAM,mBAClBg0O,EAAcl0O,EAAK0vB,OACrB,MAdE1vB,EAAK0vB,QAAU69M,EACf2G,EAAc3G,EAgBhB,QAAuBpvO,IAAnB6B,EAAK4xH,WAA4BoiH,GAE9B,QAAuB71O,IAAnB6B,EAAK4xH,WAA2BoiH,EACzC,MAAM,IAAI9zO,MAAM,iEAFhBF,EAAK4xH,UAAYnsH,KAAKC,OAAM,IAAIwjB,MAAOmlJ,UAAY,KAKrD,QAAkBlwK,IAAd6B,EAAKwyO,KAAoB,MAAM,IAAItyO,MAAM,oCAG7C,IAAKwyO,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,IACvC,MAAM,IAAI1uO,MAAM,kDAGlB,GAAIwyO,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,KACtC,GAAK8D,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,IASlC,CACL,MAAMyF,EAAK9B,EAAUvyO,EAAKwyO,KAAM5D,EAAS,IACzC,IAAKyF,EAAGrG,iBAAoBqG,EAAGrG,eAAeD,YAAcsG,EAAGrG,eAAe/4L,SAC5E,MAAM,IAAI/0C,MAAM,mHAEpB,KAdgD,CAC9C,IAAI6zO,EAMF,MAAM,IAAI7zO,MAAM,oHALhBF,EAAKwyO,KAAK7uO,KAAK,CACb8uO,QAAS7D,EAAS,GAClB5uO,KAAM4tO,GAKZ,CAQF,IAAK8E,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,OAAW8D,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,KAAQ,CAC9F,IAAImF,EAMF,MAAM,IAAI7zO,MAAM,+DALhBF,EAAKwyO,KAAK7uO,KAAK,CACb8uO,QAAS7D,EAAS,IAClB5uO,KAhpBmB,IAqpBzB,CAIA,GAAI0yO,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,MACpChuO,EAAOC,KAAK0xO,EAAUvyO,EAAKwyO,KAAM5D,EAAS,KAAQ,QAAQ1wO,OAAS,IACrE,MAAM,IAAIgC,MAAM,iDA0BlB,GArBKwyO,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,KAAUoF,IAAkBD,GACnE/zO,EAAKwyO,KAAK7uO,KAAK,CACb8uO,QAAS7D,EAAS,GAClB5uO,KArqBoB,OA2qBnB0yO,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,MAAWoF,IAAkBD,GACpE/zO,EAAKwyO,KAAK7uO,KAAK,CACb8uO,QAAS7D,EAAS,IAClB5uO,KA7qBoB,IAmrBpB0yO,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,OAAQwF,EAAmB/E,EAAYkD,EAAUvyO,EAAKwyO,KAAM5D,EAAS,OAEzG5uO,EAAKirO,eAAckJ,EAAgB9E,EAAYrvO,EAAKirO,eACpDkJ,GAAiBC,IAAqBA,EAAiBx3N,OAAOu3N,GAChE,MAAM,IAAIj0O,MAAM,oDAQlB,GALAi0O,EAAgBA,GAAiBC,EAC7BD,IAAen0O,EAAKirO,aAAekJ,EAAcrzO,SAAS,QAI1D4xO,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,IAAO,CAC7C,MAAM0F,EAAW/B,EAAUvyO,EAAKwyO,KAAM5D,EAAS,IAM/C,GAJA7rO,EAAUuxO,EAASvxO,QACnBosO,EAAcmF,EAASnF,YACvBpkL,EAAOupL,EAASvpL,UAEI5sD,IAAhBgxO,QAAsChxO,IAAT4sD,EAAoB,CACnD,IAAI98B,EACJ,IACEA,EAAMm/M,EAAQ1vH,QAAQw2H,GAAap4N,OAAO/Y,EAC5C,CAAE,MAAO6K,GACP,MAAM,IAAI1N,MAAM,kCAClB,CACA,OAAQ+tB,EAAIjqB,MACV,IAAK,MACHmrO,EAAclhN,EAAIhtB,KAClB8pD,EAAO,GACP,MACF,IAAK,KACHokL,EAAclhN,EAAIhtB,KAClB8pD,EAAO,GACP,MACF,IAAK,MAIL,IAAK,OACHokL,EAAclhN,EAAIhtB,KAClB8pD,EAAO,EACP,MACF,IAAK,KACHokL,EAAclhN,EAAI9R,OAClB4uC,EAAO,EACP,MACF,QACE,MAAM,IAAI7qD,MAAM,sCAOpBo0O,EAASnF,YAAcvuO,EAAOC,KAAKsuO,GAAaruO,SAAS,OACzDwzO,EAASvpL,KAAOA,CAClB,CACF,CAGA,GAAI2nL,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,IAAO,CACzB2D,EAAUvyO,EAAKwyO,KAAM5D,EAAS,IACtCxjO,SAAQmpO,IAClB,QAAqBp2O,IAAjBo2O,EAAMp4N,aACmBhe,IAA3Bo2O,EAAMjF,uBACkBnxO,IAAxBo2O,EAAMhF,oBACgCpxO,IAAtCo2O,EAAM/E,kCACsBrxO,IAA5Bo2O,EAAM9E,kBACN,MAAM,IAAIvvO,MAAM,8BAElB,IACEmtO,EAAe1zL,gBAAgB2C,QAAQ+yL,EAAYkF,EAAMp4N,QAC3D,CAAE,MAAOvO,GACP,MAAM,IAAI1N,MAAM,4CAClB,CACA,MAAMs0O,EAAUnF,EAAYkF,EAAMjF,kBAClC,KAAMkF,aAAmB5zO,IAA8B,IAAnB4zO,EAAQt2O,OAC1C,MAAM,IAAIgC,MAAM,iDAElB,GAAmC,kBAAxBq0O,EAAMhF,eACf9pO,KAAKC,MAAM6uO,EAAMhF,iBAAmBgF,EAAMhF,cAC1C,MAAM,IAAIrvO,MAAM,gDAElB,GAAiD,kBAAtCq0O,EAAM/E,6BACf/pO,KAAKC,MAAM6uO,EAAM/E,+BAAiC+E,EAAM/E,4BACxD,MAAM,IAAItvO,MAAM,8DAElB,GAAuC,kBAA5Bq0O,EAAM9E,mBACfhqO,KAAKC,MAAM6uO,EAAM9E,qBAAuB8E,EAAM9E,kBAC9C,MAAM,IAAIvvO,MAAM,mDAClB,GAEJ,CAEA,IAGIwzO,EAHA9jO,EAAS,KAMb,GALAA,GAAUskO,EAAYh3K,OAKlBl9D,EAAKywD,eAAiBzwD,EAAKkzO,SAAU,CACvCQ,EAAYP,EAAcpxO,OAAO/B,EAAKywD,gBAEtC,GADqBwiL,EAASlxO,OAAO/B,EAAKkzO,aACrBQ,EACnB,MAAM,IAAIxzO,MAAM,0CAEpB,MACEwzO,EADS1zO,EAAKywD,cACF0iL,EAAcpxO,OAAO/B,EAAKywD,gBAC7BzwD,EAAKkzO,SACFD,EAASlxO,OAAO/B,EAAKkzO,WAErB,GAKdtjO,GAAU8jO,EAGV,MAAMe,EAAiBvF,EAAalvO,EAAK4xH,WACzC,KAAO6iH,EAAev2O,OAAS,GAC7Bu2O,EAAex1H,QAAQ,GAGzB,MAAMuzH,EAAOxyO,EAAKwyO,KAClB,IAAIkC,EAAW,GACflC,EAAKpnO,SAAQ+1C,IACX,MAAMwzL,EAAmBt1O,OAAOoc,KAAKszN,GAGrC,GAFIiF,GAAgBW,EAAiBhxO,KAAKmuO,IAEK,IAA3C6C,EAAiB/jO,QAAQuwC,EAAIsxL,SAC/B,MAAM,IAAIvyO,MAAM,oBAAsBihD,EAAIsxL,SAG5C,IAAI91M,EACJ,GAAIwkB,EAAIsxL,UAAYX,EAAgB,CAElC4C,EAAS/wO,KAAKyqO,EAASjtL,EAAIsxL,UAG3B91M,GAAQi4M,EADQ7F,EAAY5tL,EAAIsxL,UAChBtxL,EAAInhD,KACtB,KAAO,CACL,MAAMgrB,EApuBZ,SAAyBhrB,GAEvB,OADAA,EAAK28B,MAAQugC,EAAOphD,OAAO9b,EAAK28B,MAAOnR,OAAOjf,kBAAkBowB,MACzD38B,CACT,CAiuBqB60O,CAAe1zL,EAAInhD,MAClC00O,EAAS/wO,KAAKqnB,EAAOgnN,SACrBr1M,EAAQ3R,EAAO2R,KACjB,CAGA+3M,EAAWA,EAASlgO,OAAO,CAAC,GAAGA,OAAO06N,EAAavyM,EAAMz+B,SAAS6L,OAAO,IAEzE2qO,EAAWA,EAASlgO,OAAOmoB,EAAM,IAKnC,IAAIm4M,EAAYL,EAAejgO,OAAOkgO,GAKtC,MAEMK,EAAal4K,EAFJj8D,EAAO4T,OAAO,CAAC5T,EAAOC,KAAK+O,EAAQ,QAAShP,EAAOC,KAAK+1K,EAAQk+D,EAAW,EAAG,OAO7F,IAAIE,EACJ,GAAIhB,EAAgB,CASlB,IAAIG,EAQF,MAAM,IAAIj0O,MAAM,2GARC,CACjB,MAAMI,EAAY+sO,EAAe/xL,UAAUG,YAAY76C,EAAOC,KAAKb,EAAKM,UAAW,QAAQy7C,eAAe/7C,EAAKi0O,cACzGgB,EAAkBr0O,EAAOC,KAAKP,EAAU07C,iBAAiB+4L,GAAY51L,YAAW,IACtF,GAAIg1L,IAAkBA,EAAcv3N,OAAOq4N,GACzC,MAAM,IAAI/0O,MAAM,sFAElB80O,EAAWhG,EAAUhvO,EAAKM,UAAY,IAAMN,EAAKi0O,aACnD,CAGF,CAgBA,OAdIe,IAAUF,EAAYA,EAAUtgO,OAAOwgO,IAEvCtC,EAAgB1yO,EAAKwyO,KAAM5D,EAAS,MACtC5uO,EAAKipO,eAAiBjpO,EAAK4xH,UAAY2gH,EAAUvyO,EAAKwyO,KAAM5D,EAAS,IACrE5uO,EAAKk1O,qBAAuB,IAAIhsN,KAA2B,IAAtBlpB,EAAKipO,gBAAuB16D,eAEnEvuK,EAAKm1O,gBAAkB,IAAIjsN,KAAsB,IAAjBlpB,EAAK4xH,WAAkB28C,cACvDvuK,EAAKotI,WAAa4nG,EAClBh1O,EAAK0/K,eAAiB1/K,EAAKotI,SAAWlwE,EAAO1gD,OAAO5M,EAAQklO,EAAWtpN,OAAOjf,kBAAoB,GAClGvM,EAAK4P,OAASA,EACd5P,EAAKo1O,UAAYl4K,EAAO1gD,OAAO,OAAQs4N,EAAWtpN,OAAOjf,kBAIlDomO,EAAU3yO,EACnB,EAsLE8b,OAlLF,SAAiB4jK,EAAgBhwJ,GAC/B,GAA8B,kBAAnBgwJ,EAA6B,MAAM,IAAIx/K,MAAM,4CACxD,GAAiD,OAA7Cw/K,EAAe31K,MAAM,EAAG,GAAGkH,cAAwB,MAAM,IAAI/Q,MAAM,0CACvE,MAAMm1O,EAAUn4K,EAAOphD,OAAO4jK,EAAgBl0J,OAAOjf,kBACrDmzK,EAAiBA,EAAezuK,cAChC,MAAMrB,EAASylO,EAAQzlO,OACvB,IAAI+sB,EAAQ04M,EAAQ14M,MAKpB,MAAMq4M,EAAWr4M,EAAM5yB,OAAO,KAExBurO,EAAa34M,EAAM5yB,MAAM,GAAI,KACnC4yB,EAAQA,EAAM5yB,MAAM,GAAI,KAExB,IAAIwrO,EAAYvF,EAAcgF,GAAU,GACxC,MAAMf,EAAesB,EAAUxrO,OAAO,GAAG,GAGzC,GAFAwrO,EAAYA,EAAUxrO,MAAM,GAAI,KAE1BkqO,IAAgB,CAAC,EAAG,EAAG,EAAG,KAA4B,KAArBsB,EAAUr3O,OAC/C,MAAM,IAAIgC,MAAM,qCAQlB,IAAIs1O,EAAgB5lO,EAAOi/D,MAAM,8BAEjC,GADI2mK,IAAkBA,EAAc,KAAIA,EAAgB5lO,EAAOi/D,MAAM,eAChE2mK,EACH,MAAM,IAAIt1O,MAAM,0CAGlB,MAAMu1O,EAAeD,EAAc,GACnC,IAAIE,EACJ,GAAKhmN,EAeE,CACL,QACqBvxB,IAAnBuxB,EAAQwtC,aACe/+D,IAAvBuxB,EAAQytC,iBACeh/D,IAAvBuxB,EAAQ0tC,aACP52D,MAAMi3B,QAAQ/N,EAAQ89M,4BACPrvO,IAAhBuxB,EAAQ2tC,IACR,MAAM,IAAIn9D,MAAM,mBAClBw1O,EAAchmN,CAChB,MAvBE,OAAQ+lN,GACN,KAAKlI,EAAerwK,OAClBw4K,EAAcnI,EACd,MACF,KAAKE,EAAYvwK,OACfw4K,EAAcjI,EACd,MACF,KAAKC,EAAexwK,OAClBw4K,EAAchI,EACd,MACF,KAAKC,EAAWzwK,OACdw4K,EAAc/H,EAapB,IAAK+H,GAAeA,EAAYx4K,SAAWu4K,EACzC,MAAM,IAAIv1O,MAAM,8BAGlB,MAAMX,EAAQi2O,EAAc,GAC5B,IAAItC,EAAUziL,EAAeklL,EAC7B,GAAIp2O,EAAO,CACT,MAAM4sK,EAAUqpE,EAAc,GAC9B,IACEtC,EAAW1rO,SAASisO,EAASl0O,EAAQ4sK,GAAS,GAChD,CAAE,MAAOv+J,GACPslO,EAAW,KACXyC,GAAiB,CACnB,CACAllL,EAAgBmjL,EAAcr0O,EAAQ4sK,GAAS,EACjD,MACE+mE,EAAW,KACXziL,EAAgB,KAIlB,MAAMmhE,EAAYq+G,EAAatzM,EAAM5yB,MAAM,EAAG,IACxCorO,EAAkB,IAAIjsN,KAAiB,IAAZ0oG,GAAkB28C,cACnD5xI,EAAQA,EAAM5yB,MAAM,GAEpB,MAAMyoO,EAAO,GACb,IAAIC,EAASmD,EAAQC,EAAWnB,EAsB5BzL,EAAgBiM,EAnBpB,KAAOv4M,EAAMz+B,OAAS,GAAG,CACvB,MAAM8zO,EAAUr1M,EAAM,GAAG77B,WACzB2xO,EAAU7D,EAASoD,IAAYF,EAC/B8D,EAAS7F,EAAWiC,IAAYD,EAAiBC,GACjDr1M,EAAQA,EAAM5yB,MAAM,GAEpB8rO,EAAY5F,EAAatzM,EAAM5yB,MAAM,EAAG,IACxC4yB,EAAQA,EAAM5yB,MAAM,GAEpB2qO,EAAW/3M,EAAM5yB,MAAM,EAAG8rO,GAC1Bl5M,EAAQA,EAAM5yB,MAAM8rO,GAGpBrD,EAAK7uO,KAAK,CACR8uO,UACAzyO,KAAM41O,EAAOlB,EAAUgB,IAE3B,CAKIhD,EAAgBF,EAAM5D,EAAS,MACjC3F,EAAiBr3G,EAAY2gH,EAAUC,EAAM5D,EAAS,IACtDsG,EAAuB,IAAIhsN,KAAsB,IAAjB+/M,GAAuB16D,eAGzD,MACMwmE,EAAal4K,EADJj8D,EAAO4T,OAAO,CAAC5T,EAAOC,KAAK+O,EAAQ,QAAShP,EAAOC,KAAK+1K,EAAQ0+D,EAAY,EAAG,OAGxFh1O,EAAY+sO,EAAe/xL,UAAUG,YAAY85L,GAAWx5L,eAAek4L,GAC3E6B,EAAYl1O,EAAOC,KAAKP,EAAU07C,iBAAiB+4L,GAAY51L,YAAW,IAEhF,GAAIuzL,EAAgBF,EAAM5D,EAAS,MAAU2D,EAAUC,EAAM5D,EAAS,OAAWkH,EAAUh1O,SAAS,OAClG,MAAM,IAAIZ,MAAM,0EAGlB,IAAI61O,EAAc,CAChBr2D,iBACAtyC,UAAU,EACVx9H,SACAwlO,UAAWl4K,EAAO1gD,OAAO,OAAQ84N,EAAW9gO,OAAOwgO,GAAWxpN,OAAOjf,kBACrEmjB,QAASgmN,EACTxC,WACAziL,gBACAmhE,YACAujH,kBACAlK,aAAc6K,EAAUh1O,SAAS,OACjCR,UAAWi1O,EAAUz0O,SAAS,OAC9BmzO,eACAzB,QAWF,OARImD,UACKI,EAAY7C,SAGjBjK,IACF8M,EAAc12O,OAAO0nF,OAAOgvJ,EAAa,CAAE9M,iBAAgBiM,0BAGtDvC,EAAUoD,GAAa,EAChC,EA0BEx1O,KAliBF,SAAey1O,EAAgBC,GAC7B,MAAMC,EAAY5I,EAAU0I,GACtB34L,EAAagyL,EAAY4G,GAC/B,GAAIC,EAAU9oG,UAAY8oG,EAAUx2D,eAAgB,OAAOw2D,EAE3D,QAAmB/3O,IAAfk/C,GAAkD,KAAtBA,EAAWn/C,SACtCmvO,EAAe30M,MAAM0kB,kBAAkBC,GAC1C,MAAM,IAAIn9C,MAAM,6DAGlB,IAAIi0O,EAAeC,EAUnB,GARI1B,EAAgBwD,EAAU1D,KAAM5D,EAAS,OAC3CwF,EAAmB/E,EAAYkD,EAAU2D,EAAU1D,KAAM5D,EAAS,OAGhEsH,EAAUjL,eACZkJ,EAAgB9E,EAAY6G,EAAUjL,eAGpCkJ,GAAiBC,IAAqBA,EAAiBx3N,OAAOu3N,GAChE,MAAM,IAAIj0O,MAAM,4DAIlBi0O,EAAgBC,GAAoBD,EAEpC,MAAMnzO,EAAYJ,EAAOC,KAAKwsO,EAAepuL,aAAa5B,GAAY,IAGtE,GAAI82L,IAAkBnzO,EAAU4b,OAAOu3N,GACrC,MAAM,IAAIj0O,MAAM,6EAGlB,MAAMy8B,EAAQugC,EAAOphD,OAAOo6N,EAAUd,UAAW5pN,OAAOjf,kBAAkBowB,MAOpEo4M,EAAal4K,EAFJj8D,EAAO4T,OAAO,CAAC5T,EAAOC,KAAKq1O,EAAUtmO,OAAQ,QAASogO,EAAcrzM,MAO7Ew5M,EAAS9I,EAAe9sO,KAAKw0O,EAAY13L,EAAY,CAAEpE,MAAM,IACnEi9L,EAAU51O,UAAYM,EAAOC,KAAKs1O,EAAOj5L,qBAAqBp8C,SAAS,OACvE,MAAMk0O,EAAWhG,EAAUkH,EAAU51O,UAAY,IAAM61O,EAAO56L,UAS9D,OANA26L,EAAUjL,aAAejqO,EAAUF,SAAS,OAC5Co1O,EAAUjC,aAAekC,EAAO56L,SAChC26L,EAAUd,UAAYl4K,EAAO1gD,OAAO,OAAQmgB,EAAMnoB,OAAOwgO,GAAWxpN,OAAOjf,kBAC3E2pO,EAAU9oG,UAAW,EACrB8oG,EAAUx2D,eAAiBxiH,EAAO1gD,OAAO05N,EAAUtmO,OAAQ+sB,EAAMnoB,OAAOwgO,GAAWxpN,OAAOjf,kBAEnFomO,EAAUuD,EACnB,EAyeEjD,WACAE,gBACAM,WACAG,2TCnmCF,MAAAl9L,EAAAv5C,EAAA,OAEAw5C,EAAAx5C,EAAA,OACAwiK,EAAAxiK,EAAA,OACAi5O,EAAAj5O,EAAA,OACAk5O,EAAAl5O,EAAA,OACAm5O,EAAAn5O,EAAA,OACAo5O,EAAAp5O,EAAA,OACAm0F,EAAAn0F,EAAA,OACAq5O,EAAAr5O,EAAA,OACAs5O,EAAAt5O,EAAA,OACAu5O,EAAAv5O,EAAA,OACAw5O,EAAAx5O,EAAA,OACAy5O,EAAAz5O,EAAA,MACA05O,EAAA15O,EAAA,OACA25O,EAAA35O,EAAA,OAGA,IAAYmxD,EA2BZ,SAAgByoL,EAAWnpO,GACvB,OAAQA,GACJ,KAAK0gD,EAAc0oL,cACf,OAAO,EACX,KAAK1oL,EAAc8rK,kBACf,OAAOyc,EAAAI,yBACX,KAAK3oL,EAAc+rK,kBACf,OAAOwc,EAAAK,yBACX,KAAK5oL,EAAc6oL,mBACf,OAAOT,EAAAU,0BACX,KAAK9oL,EAAc+oL,yBACf,OAAO,GACX,KAAK/oL,EAAcgpL,4BACf,OAAO,IACX,KAAKhpL,EAAcsjI,SACf,OAAOykD,EAAAkB,eACX,KAAKjpL,EAAcs3K,oBACf,OAAO0Q,EAAAkB,2BACX,KAAKlpL,EAAcmpL,eACf,OAAOlB,EAAAmB,qBACX,KAAKppL,EAAcC,aACf,OAAOioL,EAAAmB,mBACX,KAAKrpL,EAAcm8F,gBACf,OAAOgsF,EAAAmB,sBACX,KAAKtpL,EAAcorH,gBACf,OAAOi9D,EAAAkB,sBACX,KAAKvpL,EAAcwpL,sBACf,OAAOxmJ,EAAAymJ,wCACX,KAAKzpL,EAAc+mF,kBACf,OAAOuhG,EAAAoB,wBACX,KAAK1pL,EAAcqrH,uBACf,OAAOg9D,EAAAsB,8BACX,KAAK3pL,EAAc4iH,aACf,OAAO4lE,EAAAoB,mBACX,KAAK5pL,EAAc8iH,oBACf,OAAO0lE,EAAAqB,2BACX,QACI,MAAMj4O,MAAM,2BAA2B0N,KAEnD,CAsDA,SAAgBwqO,EAAyBxqO,GACrC,OAAQA,GACJ,KAAK0gD,EAAc8rK,kBACf,OAAO9rK,EAAc+rK,kBACzB,KAAK/rK,EAAc+oL,yBACf,OAAO/oL,EAAcgpL,4BACzB,KAAKhpL,EAAcorH,gBACf,OAAOprH,EAAcqrH,uBACzB,KAAKrrH,EAAc4iH,aACf,OAAO5iH,EAAc8iH,oBACzB,KAAK9iH,EAAc+rK,kBACnB,KAAK/rK,EAAcgpL,4BACnB,KAAKhpL,EAAcsjI,SACnB,KAAKtjI,EAAcs3K,oBACnB,KAAKt3K,EAAcmpL,eACnB,KAAKnpL,EAAcC,aACnB,KAAKD,EAAc6oL,mBACnB,KAAK7oL,EAAcm8F,gBACnB,KAAKn8F,EAAc0oL,cACnB,KAAK1oL,EAAcwpL,sBACnB,KAAKxpL,EAAc+mF,kBACnB,KAAK/mF,EAAcqrH,uBACnB,KAAKrrH,EAAc8iH,oBACf,OAAO9iH,EAAc0oL,cAEjC,CAEA,SAASqB,EAAOC,EAAiCC,GAC7C,GAA8B,IAA1BD,EAAep6O,OACf,OAAOq6O,EACJ,CACH,MAAMC,EACF9hM,EAAAgB,aACA0+L,EAAAqC,kBACAH,EACKzoJ,QAAO,CAACghG,EAASxpL,IAAMA,IAAMixO,EAAe1nO,QAAQigL,KACpD9rL,KAAK8rL,GAAYkmD,EAAWlmD,GAAW10L,EAAAu8O,UAAYv8O,EAAAw8O,cACnDrzO,QAAO,CAACwH,EAAGS,IAAMT,EAAIS,IAC9B,OAAIirO,IAAkB74E,EAAAhvE,cACX6nJ,EAAgBr8O,EAAAu8O,UAEhBF,EAGnB,CAMA,SAAgBI,EAAcN,GAC1B,OAAOD,EAAOC,EAAgB5hM,EAAAgB,aAClC,CAgBA,SAAgBmhM,EAAkBrqL,GAC9B,MAAM8pL,EAAiB,GACvB,IAAIQ,EAAqB,EACzB,KAAOA,EAAqBtqL,EAAQtwD,QAAQ,CACxC,MAAM66O,EAAYvqL,EAAQiuF,aAAaq8F,GACvCR,EAAe30O,KAAKo1O,GACpB,MAAMC,EAAcxqL,EAAQiuF,aAAaq8F,EAAqB38O,EAAAu8O,WAC9DI,GAAsB38O,EAAAu8O,UAAYv8O,EAAAw8O,YAAcK,EAEpD,OAAOV,CACX,EAtMA,SAAYhqL,GACRA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,2CACAA,EAAAA,EAAA,uDACAA,EAAAA,EAAA,6DACAA,EAAAA,EAAA,6CACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,qCACAA,EAAAA,EAAA,kDACAA,EAAAA,EAAA,wBACAA,EAAAA,EAAA,0CACAA,EAAAA,EAAA,oDACAA,EAAAA,EAAA,gCACAA,EAAAA,EAAA,8CAGAA,EAAAA,EAAA,qCACH,CApBD,CAAYA,IAAanyD,EAAAA,cAAbmyD,EAAa,KAsBZnyD,EAAAA,UAAY,EACZA,EAAAA,YAAc,EAI3BA,EAAAA,WAAA46O,EAyCA56O,EAAAA,gBAAA,SAAgCyR,GAC5B,OAAQA,GACJ,KAAK0gD,EAAc8rK,kBACnB,KAAK9rK,EAAc6oL,mBACnB,KAAK7oL,EAAc+oL,yBACnB,KAAK/oL,EAAcs3K,oBACnB,KAAKt3K,EAAcorH,gBACnB,KAAKprH,EAAcwpL,sBACnB,KAAKxpL,EAAc+mF,kBACnB,KAAK/mF,EAAc4iH,aACnB,KAAK5iH,EAAcm8F,gBACf,OAAO,EACX,KAAKn8F,EAAc0oL,cACnB,KAAK1oL,EAAc+rK,kBACnB,KAAK/rK,EAAcgpL,4BACnB,KAAKhpL,EAAcmpL,eACnB,KAAKnpL,EAAcC,aACnB,KAAKD,EAAcsjI,SACnB,KAAKtjI,EAAcqrH,uBACnB,KAAKrrH,EAAc8iH,oBACf,OAAO,EACX,QACI,MAAMlxK,MAAM,2BAA2B0N,KAEnD,EAEAzR,EAAAA,mBAAA,SAAmCyR,GAC/B,OAAQA,GACJ,KAAK0gD,EAAc+rK,kBACnB,KAAK/rK,EAAcgpL,4BACnB,KAAKhpL,EAAcmpL,eACnB,KAAKnpL,EAAcC,aACnB,KAAKD,EAAcsjI,SACnB,KAAKtjI,EAAcqrH,uBACnB,KAAKrrH,EAAc8iH,oBACf,OAAO,EACX,KAAK9iH,EAAc0oL,cACnB,KAAK1oL,EAAc8rK,kBACnB,KAAK9rK,EAAc6oL,mBACnB,KAAK7oL,EAAc+oL,yBACnB,KAAK/oL,EAAcs3K,oBACnB,KAAKt3K,EAAcorH,gBACnB,KAAKprH,EAAcwpL,sBACnB,KAAKxpL,EAAc+mF,kBACnB,KAAK/mF,EAAc4iH,aACnB,KAAK5iH,EAAcm8F,gBACf,OAAO,EACX,QACI,MAAMvqJ,MAAM,2BAA2B0N,KAEnD,EAEAzR,EAAAA,yBAAAi8O,EA8CAj8O,EAAAA,WAAA,SAA2Bm8O,GACvB,OAAOD,EAAOC,EAAgB3hM,EAAAsiM,UAClC,EAEA98O,EAAAA,cAAAy8O,EAIAz8O,EAAAA,iBAAA,SAAiC+8O,EAA0B1qL,GACvD,IAAIsqL,EAAqB,EACzB,KAAOA,EAAqB38O,EAAAu8O,UAAYv8O,EAAAw8O,aAAenqL,EAAQtwD,QAAQ,CACnE,MAAM66O,EAAYvqL,EAAQiuF,aAAaq8F,GACjCE,EAAcxqL,EAAQiuF,aAAaq8F,EAAqB38O,EAAAu8O,WACxDS,EAAYL,EAAqB38O,EAAAu8O,UAAYv8O,EAAAw8O,YACnD,GAAII,GAAaG,EACb,OAAO1qL,EAAQzkD,MAAMovO,EAAWA,EAAYH,GAEhDF,EAAqBK,EAAYH,EAErC,OAAO,IACX,EAEA78O,EAAAA,kBAAA08O,EAYA18O,EAAAA,qBAAA,SAAqCuB,GAGjC,OAAOk7O,EAFgBC,EAAkBn7O,EAAK8wD,SACLzpD,IAAIqzO,GAEjD,8BC9NA,SAAS77M,EAAO3vB,GACd,IAAK4e,OAAOivC,cAAc7tD,IAAMA,EAAI,EAAG,MAAM,IAAI1M,MAAM,2BAA2B0M,IACpF,CAEA,SAASshD,EAAK3gD,GACZ,GAAiB,mBAANA,EAAiB,MAAM,IAAIrN,MAAM,yBAAyBqN,IACvE,CAUA,SAASitC,EAAMjtC,GACb,MAReT,EAQFS,aANEof,YACP,MAAL7f,GAA0B,kBAANA,GAAyC,eAAvBA,EAAExC,YAAY2D,MAKtC,MAAM,IAAI/N,MAAM,uBAAuB,IAR1D,IAAiB4M,EAQyCxG,EAAArI,UAAAC,OADbslD,EAAiB,IAAAh9C,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAjB+8C,EAAiB/8C,EAAA,GAAAxI,UAAAwI,GAE5D,GAAI+8C,EAAQtlD,OAAS,IAAMslD,EAAQrH,SAAS5uC,EAAErP,QAC5C,MAAM,IAAIgC,MAAM,iCAAiCsjD,oBAA0Bj2C,EAAErP,SACjF,CAQA,SAAS+C,EAAKA,GACZ,GAAoB,oBAATA,GAA8C,oBAAhBA,EAAK8E,OAC5C,MAAM,IAAI7F,MAAM,mDAClBq8B,EAAOt7B,EAAKmrB,WACZmQ,EAAOt7B,EAAKkrB,SACd,CAEA,SAASW,EAAO6uI,GAAmC,IAApBy9E,IAAan7O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC1C,GAAI09J,EAASlvI,UAAW,MAAM,IAAIvsB,MAAM,oCACxC,GAAIk5O,GAAiBz9E,EAASpvI,SAAU,MAAM,IAAIrsB,MAAM,wCAC1D,CACA,SAASxD,EAAO0G,EAAUu4J,GACxBnhH,EAAMp3C,GACN,MAAM2K,EAAM4tJ,EAASvvI,UACrB,GAAIhpB,EAAIlF,OAAS6P,EACf,MAAM,IAAI7N,MAAM,yDAAyD6N,IAE7E,0GAES5R,EAAAA,OAAAogC,EAAQpgC,EAAAA,KAAA+xD,EAAM/xD,EAAAA,MAAAq+C,EAAOr+C,EAAAA,KAAA8E,EAAM9E,EAAAA,OAAA2wB,EAAQ3wB,EAAAA,OAAAO,EAE5C,MAAMw/B,EAAS,CAAEK,SAAQ2xB,OAAM1T,QAAOv5C,OAAM6rB,SAAQpwB,UACpDP,EAAAA,QAAe+/B,mBClDf,MAAMt1B,EAAOzJ,EAAQ,OAErB,SAASk8O,EAAUr5O,GACjB3D,KAAKyK,KAAOF,EAAKivG,KAEfx5G,KAAK2D,KADe,kBAAVA,GACE,IAAI8zE,aAAct3D,OAAOxc,GAEzB,IAAI2sB,WAAW3sB,EAE/B,CAEAq5O,EAASryO,cAAgB,SAAwB9I,GAC/C,OAAgB,EAATA,CACT,EAEAm7O,EAASpyO,UAAUC,UAAY,WAC7B,OAAO7K,KAAK2D,KAAK9B,MACnB,EAEAm7O,EAASpyO,UAAUD,cAAgB,WACjC,OAAOqyO,EAASryO,cAAc3K,KAAK2D,KAAK9B,OAC1C,EAEAm7O,EAASpyO,UAAUE,MAAQ,SAAUC,GACnC,IAAK,IAAIC,EAAI,EAAGwG,EAAIxR,KAAK2D,KAAK9B,OAAQmJ,EAAIwG,EAAGxG,IAC3CD,EAAUK,IAAIpL,KAAK2D,KAAKqH,GAAI,EAEhC,EAEAjL,EAAOD,QAAUk9O,gCC5BjB,IAAIz4O,EAASzD,EAAAA,OAAAA,OACTkzB,EAAYlzB,EAAAA,OAAAA,UAGhB,SAAS+vL,EAAU7iD,GACjBh6G,EAAUld,KAAK9W,MAEfA,KAAKkuI,OAAS3pI,EAAOi/B,YAAYwqG,GACjChuI,KAAKouI,WAAaJ,EAClBhuI,KAAKoxL,aAAe,EACpBpxL,KAAKixJ,QAAU,CAAC,EAAG,EAAG,EAAG,GAEzBjxJ,KAAKi9O,YAAa,CACpB,CAXen8O,EAAQ,MAavBw9B,CAASuyJ,EAAU78J,GAEnB68J,EAASjmL,UAAUqpB,WAAa,SAAUC,EAAOC,EAAU60E,GACzD,IAAInmF,EAAQ,KACZ,IACE7iB,KAAK+D,OAAOmwB,EAAOC,EACrB,CAAE,MAAOvK,GACP/G,EAAQ+G,CACV,CAEAo/E,EAASnmF,EACX,EAEAguK,EAASjmL,UAAU80B,OAAS,SAAUspE,GACpC,IAAInmF,EAAQ,KACZ,IACE7iB,KAAKsH,KAAKtH,KAAKgE,SACjB,CAAE,MAAO4lB,GACP/G,EAAQ+G,CACV,CAEAo/E,EAASnmF,EACX,EAEA,IAAI0b,EAAsC,qBAAfjO,WACvBkO,EAAwC,qBAAhBC,aACJ,qBAAfnO,YACPmO,YAAYC,SACXn6B,EAAOqG,qBAAqB0lB,YAAc/rB,EAAOo6B,qBA6CpDkyJ,EAASjmL,UAAU7G,OAAS,SAAUJ,EAAMwwB,GAC1C,GAAIn0B,KAAKi9O,WAAY,MAAM,IAAIp5O,MAAM,yBAErCF,EA9CF,SAAmBA,EAAMwwB,GAGvB,GAAIxwB,aAAgBY,EAAQ,OAAOZ,EAGnC,GAAoB,kBAATA,EAAmB,OAAOY,EAAOC,KAAKb,EAAMwwB,GAMvD,GAAIqK,GAAkBC,YAAYC,OAAO/6B,GAAO,CAC9C,GAAwB,IAApBA,EAAKo7B,WAAkB,OAAOx6B,EAAO0b,MAAM,GAC/C,IAAI2R,EAAMrtB,EAAOC,KAAKb,EAAK0sB,OAAQ1sB,EAAKutB,WAAYvtB,EAAKo7B,YAGzD,GAAInN,EAAImN,aAAep7B,EAAKo7B,WAAY,OAAOnN,CACjD,CAMA,GAAI2M,GAAiB56B,aAAgB2sB,WAAY,OAAO/rB,EAAOC,KAAKb,GAOpE,GACEY,EAAOy6B,SAASr7B,IAChBA,EAAKsK,aACgC,oBAA9BtK,EAAKsK,YAAY+wB,UACxBr7B,EAAKsK,YAAY+wB,SAASr7B,GAE1B,OAAOY,EAAOC,KAAKb,GAGrB,MAAM,IAAIs7B,UAAU,gGACtB,CAKSl6B,CAASpB,EAAMwwB,GAKtB,IAFA,IAAI6tD,EAAQhiF,KAAKkuI,OACbn3G,EAAS,EACN/2B,KAAKoxL,aAAeztL,EAAK9B,OAASk1B,GAAU/2B,KAAKouI,YAAY,CAClE,IAAK,IAAIpjI,EAAIhL,KAAKoxL,aAAcpmL,EAAIhL,KAAKouI,YAAapsD,EAAMh3E,KAAOrH,EAAKozB,KACxE/2B,KAAKm/B,UACLn/B,KAAKoxL,aAAe,CACtB,CACA,KAAOr6J,EAASpzB,EAAK9B,QAAQmgF,EAAMhiF,KAAKoxL,gBAAkBztL,EAAKozB,KAG/D,IAAK,IAAInmB,EAAI,EAAG8H,EAAsB,EAAd/U,EAAK9B,OAAY6W,EAAQ,IAAK9H,EACpD5Q,KAAKixJ,QAAQrgJ,IAAM8H,GACnBA,EAAS1Y,KAAKixJ,QAAQrgJ,GAAK,WAAgB,GAC/B,IAAG5Q,KAAKixJ,QAAQrgJ,IAAM,WAAe8H,GAGnD,OAAO1Y,IACT,EAEA6wL,EAASjmL,UAAUu0B,QAAU,WAC3B,MAAM,IAAIt7B,MAAM,6BAClB,EAEAgtL,EAASjmL,UAAU5G,OAAS,SAAUmwB,GACpC,GAAIn0B,KAAKi9O,WAAY,MAAM,IAAIp5O,MAAM,yBACrC7D,KAAKi9O,YAAa,EAElB,IAAIj5O,EAAShE,KAAKmxL,eACDrvL,IAAbqyB,IAAwBnwB,EAASA,EAAOS,SAAS0vB,IAGrDn0B,KAAKkuI,OAAOj9G,KAAK,GACjBjxB,KAAKoxL,aAAe,EACpB,IAAK,IAAIpmL,EAAI,EAAGA,EAAI,IAAKA,EAAGhL,KAAKixJ,QAAQjmJ,GAAK,EAE9C,OAAOhH,CACT,EAEA6sL,EAASjmL,UAAUumL,QAAU,WAC3B,MAAM,IAAIttL,MAAM,6BAClB,EAEA9D,EAAOD,QAAU+wL,gCCxIjB7tL,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ8jG,sBAAmB,EAC3B,MAAM3+F,EAASnE,EAAQ,OACjBqE,EAAUrE,EAAQ,OAClByC,EAAWzC,EAAQ,OACnBy5J,EAAmBz5J,EAAQ,OAC3Bw5J,EAAuBx5J,EAAQ,OAC/BioF,EAAiBjoF,EAAQ,OACzBg7C,EAAa,CACf,CAAElqC,KAAM,YAAajK,KAAM,QAC3B,CAAEiK,KAAM,UAAWjK,KAAM,cAE7B,MAAMi8F,UAAyB02D,EAAqBE,mBAShD72D,IAAAA,CAAKr9F,EAAUkiB,EAASvkB,GACpB,OAAO,IAAIs2J,EAAiBl+E,eAAe/1E,EAASk7D,MAAQl7D,EAASg8D,QAAUh8D,EAASs7D,QAAS5hE,KAAKw6E,KAAMx6E,KAAKwhB,SAASk5I,oBAAoBwiF,WAAW52O,EAASg+D,iBAAkBrgE,EAAWukB,EAA+B,MAAtBliB,EAAS+7D,WAA4C,KAAvB/7D,EAAS+7D,UAAmB,IAAK,EAAIl9D,EAAQwyL,qBAAqBp0L,EAASgB,OAAOC,KAAK8B,EAAS+7D,UAAW,QAAQ35D,IAAIvD,EAAQgmD,QAAS7kD,EAASk7D,MAAQoiC,EAAiB+2D,SAASwiF,YAAcv5I,EAAiB+2D,SAASyiF,KACrc,CAQAC,aAAAA,CAAc/2O,GACV,OAAOA,EAASw8D,UAAY,mBAAqB,YACrD,CACA,0CAAM9/C,GACF,MAAO,CACHs6N,uBAAwBt9O,KAAKw6E,KAAKonD,OAAOsoD,aAAa,WAE9D,CAUA,4BAAMzlF,CAAuB/gG,EAAQ4C,EAAUi+F,GAC3C,MAAM06H,EAAc71N,KAAKC,MAAMwjB,KAAKC,MAAQ,KAAQy3E,EAC9CtgG,QAAkBjE,KAAKw6E,KAAK4qB,WAAWliB,iBAAiBx/E,EAAQo4C,EAAY,aAAc,CAC5F,YAAa,KAAOx1C,EAAS0I,gBAC7B,SAAW,EAAI7J,EAAQgmD,OAAO8zK,KAElC,MAAO,CACH1rN,OAAQvT,KAAKq9O,cAAc/2O,GAC3BkiB,QAASy2M,EAAYx6N,SAAS,IAC9BR,YAER,CAWA,sBAAM0gG,CAAiBr+F,EAAUkiB,EAASjV,EAAQtP,EAAWs5O,GACzD,MAAMxe,EAASz4N,EAASw8D,UAAYx8D,EAASg8D,QAAUh8D,EAASs7D,QAC1Dl+D,EAAS4C,EAASw8D,UAAYx8D,EAASs7D,QAAUt7D,EAASg8D,QAChE,IAAKh8D,EAASw8D,iBAAmB9iE,KAAKw6E,KAAKxrB,UAAU+vK,EAAOt6N,WAAY6B,GACpE,MAAM,IAAIrB,EAAOse,2BAA2B,8BAEhD,GAAIhQ,IAAWvT,KAAKq9O,cAAc/2O,GAC9B,MAAM,IAAIrB,EAAOse,2BAA2B,kBAChD,MAAMgiF,EAAmB7/F,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,MAClD0wN,EAAY93O,OAAO8iB,GAEzB,GADmBg1N,EAAYj4I,EAAoB7/F,OAAO1F,KAAKw6E,KAAK+oB,iBAEhE,MAAM,IAAIt+F,EAAOse,2BAA2B,0BAChD,SAAUvjB,KAAKglG,mBAAmBx8E,EAAS+0N,GACvC,MAAM,IAAIt4O,EAAOse,2BAA2B,0BAKhD,UAJoBvjB,KAAKw6E,KAAK4qB,WAAW9hB,iBAAiBr/E,EAAWP,EAAQo4C,EAAY,aAAc,CACnG,YAAa,KAAOx1C,EAAS0I,gBAC7B,SAAW,EAAI7J,EAAQgmD,OAAOqyL,KAG9B,MAAM,IAAIv4O,EAAOse,2BAA2B,sBAChD,OAAO,IACX,CAOA,wBAAMshF,CAAmBr8E,GACrB,MAAMsE,EAAMD,KAAKC,MACX2wN,EAAsE,KAAjDtyO,SAASqd,GAAWxoB,KAAKw6E,KAAK+oB,iBACzD,OAAIk6I,EAAoB3wN,EACb,EACJ2wN,CACX,CAQA,wBAAMz4I,CAAmBx8E,EAAS+0N,GAI9B,OAHoB,MAAhBA,GAAyD,MAAjCA,EAAaD,mBACrCC,QAAqBv9O,KAAKgjB,wCAEvBu6N,EAAaD,iBAAmBnyO,SAASqd,EACpD,CAWA,aAAMwwB,CAAQ1yC,EAAUkiB,EAASjV,EAAQtP,EAAWiI,EAAY1F,GAC5D,MAAMu4N,EAASz4N,EAASw8D,UAAYx8D,EAASg8D,QAAUh8D,EAASs7D,QAChE,IAAK11D,EAAY,CACb,MAAOuzB,EAAGi+M,SAAmBr5O,QAAQoE,IAAI,EACrC,EAAItD,EAAQke,iBAAgB,IAAMrjB,KAAK2kG,iBAAiBr+F,EAAUkiB,EAASjV,EAAQtP,IAAYjE,KAAKupB,aAAchY,GAAMA,aAAatM,EAAOse,8BAC5I,EAAIpe,EAAQke,iBAAgB,IAAMrjB,KAAKw6E,KAAKtqB,gBAAgB6uK,EAAQz4N,IAAWtG,KAAKupB,eAExF,GAAIm0N,IAAcz4O,EAAO6qD,iBAAiBC,aACtC,MAAM,IAAI9qD,EAAO61J,0BAA0B,yCACnD,CACAt0J,IAAYA,QAAgBxG,KAAKw6E,KAAKqC,KAAKC,cAC3C,MAAM6gK,EAAa39O,KAAK2jG,KAAKr9F,EAAUZ,OAAO8iB,GAAUmF,KAAKwE,MAAMluB,IAOnE,OANIqC,EAASk7D,OACTm8K,EAAW1gK,UAAUj9E,KAAKw6E,KAAK4rB,OAAO+5B,QAAQ4+F,EAAQ/+N,KAAKwhB,SAAS9a,QAASJ,EAAS6B,MAAO7B,EAAS9E,QAAS,GAChF,KAA/B8E,EAAS4xC,mBACTylM,EAAW1gK,UAAUj9E,KAAKw6E,KAAK4rB,OAAO+5B,QAAQ4+F,EAAQ/+N,KAAKwhB,SAAS9a,QAASJ,EAAS27D,SAAU37D,EAAS4xC,mBAAoB,GACjIl4C,KAAK6hB,OAAO0F,MAAM,8CAAgDjhB,EAAS2mD,eACvE,aAAezmD,GACZ,OAAOm3O,EAAW92O,GAAGL,GAChC,CAKA,gBAAMsiG,CAAWxiG,EAAUE,GAEvB,OADAA,IAAYA,QAAgBxG,KAAKw6E,KAAKqC,KAAKC,cACpCiM,EAAeS,aAAaivE,UAAUnyJ,EAASk7D,MAAQoiC,EAAiB+2D,SAASwiF,YAAYr1O,GAAK87F,EAAiB+2D,SAASyiF,KAAKt1O,GAAItB,EAChJ,EAEJ1G,EAAQ8jG,iBAAmBA,EAC3BA,EAAiB+2D,SAAW,CACxByiF,KAAM,CAAEt1O,GAAI,IAAKy0E,GAAI,GACrB4gK,YAAa,CAAEr1O,GAAI,IAAMy0E,GAAI,qOClKjC,MAAAz9D,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OACAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OAEA,IAAY88O,EAoDZ,SAASC,EACLC,EACAtrN,EACA9vB,EACAf,EACAK,GAEA,KAAK,EAAAhB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMT,GAAO,EAAAre,EAAA6xB,YAAW,CAAC,CAAE9S,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,IAAStd,EAAWf,GAEvFgC,EAAOY,EAAO0b,MAAMngB,EAAAi+O,wBAAwB79N,MASlD,OARApgB,EAAAi+O,wBAAwB59N,OACpB,CACId,YAAaJ,EAAAmB,iBAAiB49N,kBAC9BF,uBAEJn6O,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EA1EA,SAAYi6O,GACRA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,oBACH,CAHD,CAAYA,IAAmB99O,EAAAA,oBAAnB89O,EAAmB,KAYlB99O,EAAAA,yBAA0B,EAAAgf,EAAAY,QAAgC,EAAC,EAAAZ,EAAAa,IAAG,gBAAgB,EAAAb,EAAAa,IAAG,yBAY9F7f,EAAAA,gCAAA,SACI0yB,EACA9vB,GAEiC,IADjCf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,OAAO47O,EAA0BD,EAAoB3mD,OAAQzkK,EAAS9vB,EAAWf,EAAcK,EACnG,EAYAlC,EAAAA,iCAAA,SACI0yB,EACA9vB,GAEiC,IADjCf,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,OAAO47O,EAA0BD,EAAoB1mD,QAAS1kK,EAAS9vB,EAAWf,EAAcK,EACpG,8BCrDAlC,EAAQ,OAAgC,EA6DxCA,EAAQ,EA5D4B,CAClC,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,MAEX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,MAEX,SAAY,QAGf,CACD,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,UACR,QAAW,CACT,OAAU,uFAEZ,SAAY,CAAC,CACX,KAAQ,UACR,QAAW,CACT,OAAU,uFAEZ,SAAY,MAEb,CACD,KAAQ,OACR,QAAW,CACT,EAAK,8HAEP,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,8HAEP,SAAY,4CC1DxBkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmwH,YAAcnwH,EAAQm+O,kBAAoBn+O,EAAQowH,sBAAmB,EAC7E,MAAM1kH,EAAiB1K,EAAQ,MACzBuyD,EAAavyD,EAAQ,OACrBmE,EAASnE,EAAQ,OACjB00C,EAAU10C,EAAQ,OAClByC,EAAWzC,EAAQ,OACnB20C,EAAW30C,EAAQ,OACnBqE,EAAUrE,EAAQ,OACxB,IAAIovH,EAWJ,SAAS+tH,EAAkBrvO,GACvB,MAAgC,kBAAjBA,EAAIlI,SACS,kBAAhBkI,EAAIpN,SACZ,EAAIg0C,EAAQ6W,aAAaz9C,EACjC,EAdA,SAAWshH,GACPA,EAAiBA,EAAyB,QAAK,GAAK,SACpDA,EAAiBA,EAA0B,SAAK,GAAK,UACrDA,EAAiBA,EAAgC,eAAK,GAAK,gBAC3DA,EAAiBA,EAAqC,oBAAK,GAAK,qBAChEA,EAAiBA,EAA6B,WAAI,GAAK,aACvDA,EAAiBA,EAAiC,eAAI,GAAK,iBAC3DA,EAAiBA,EAAmC,iBAAI,GAAK,mBAC7DA,EAAiBA,EAAgC,cAAI,GAAK,eAC7D,CATD,CASGA,EAAmBpwH,EAAQowH,mBAAqBpwH,EAAQowH,iBAAmB,CAAC,IAM/EpwH,EAAQm+O,kBAAoBA,EAC5B,MAAMhuH,UAAoBzkH,EAAeS,aACrCgC,WAAAA,CAAY0nC,EAAS2W,GACb2xL,EAAkB3xL,KAClBA,EAAa//B,KAAO,YACxBnmB,MAAMuvC,EAAS2W,GACftsD,KAAK03C,WAAajC,EAASme,cAAc6oG,IACzCz8J,KAAK4lB,KAAOytC,EAAWS,SAASk8D,SAC5BiuH,EAAkB3xL,GAClBtsD,KAAKU,MAAQwvH,EAAiBC,YAG9BnwH,KAAK0G,QAAU4lD,EAAa5lD,QAC5B1G,KAAKwB,OAASkE,OAAO4mD,EAAa9qD,QAClCxB,KAAK6kB,KAAOynC,EAAaznC,KACzB7kB,KAAKiH,KAAOqlD,EAAarlD,KACzBjH,KAAKywF,sBAAwBnkC,EAAamkC,uBAAyBzwF,KAAK2D,KAAK+/D,wBAEjF1jE,KAAK61C,sBACL71C,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,WAAatF,KAAKslB,0BAA4B,MACvF,CACAknC,cAAAA,GACI,GAAoB,MAAhBxsD,KAAKysD,QAAiB,CACtB,OAAQzsD,KAAKU,OACT,KAAM,EACFV,KAAKU,MAAQwvH,EAAiBI,OAC9B,MACJ,KAAM,EACFtwH,KAAKU,MAAQwvH,EAAiBvjE,cAC9B,MACJ,KAAK,EACD3sD,KAAKU,MAAQwvH,EAAiBC,WAC9B,MACJ,KAAK,EACDnwH,KAAKU,MAAQwvH,EAAiBE,eAC9B,MACJ,KAAK,EACDpwH,KAAKU,MAAQwvH,EAAiBG,iBAC9B,MACJ,KAAK,EACDrwH,KAAKU,MAAQwvH,EAAiBK,cAGtCvwH,KAAKysD,QAAU,CACnB,CACJ,CAGAS,YAAAA,GACI,OAAOltD,KAAK6kB,IAChB,CACAsyB,UAAAA,GACI,OAAOn3C,KAAK0G,OAChB,CAIAw3O,iBAAAA,GACI,OAAIl+O,KAAKU,QAAUwvH,EAAiBC,WACzB,KACJnwH,KAAK0G,OAChB,CACAgmO,SAAAA,GACI,OAAI1sO,KAAKU,QAAUwvH,EAAiBC,WACzB,KACJ,WAAanwH,KAAK0G,QAAU,WAAauiH,oBAAoB95F,OAAOnvB,KAAKwB,QAAU,KAAWiD,SAAS,IAClH,CAKAkoO,cAAAA,GACI,OAA2F,IAApFx9M,OAAOnvB,KAAK21C,QAAQ66E,sBAAsBxwH,KAAK2D,KAAM3D,KAAKywF,uBACrE,CACArjC,UAAAA,GACI,OAAOptD,KAAKU,QAAUwvH,EAAiBK,eAAiBvwH,KAAKU,QAAUwvH,EAAiBvjE,eAAiB3sD,KAAKU,QAAUwvH,EAAiBI,MAC7I,CACA/4E,WAAAA,GACI,OAAOv3C,KAAKU,QAAUwvH,EAAiBG,gBAC3C,CACA/4E,YAAAA,GACI,OAAOt3C,KAAKu3C,eAAkBv3C,KAAKU,QAAUwvH,EAAiBE,gBAAkBpwH,KAAK2sO,iBAAmB9/M,KAAKC,KACjH,CACA0gC,YAAAA,GACI,OAAOxtD,KAAKU,QAAUwvH,EAAiBK,aAC3C,CACA9iE,QAAAA,GACI,OAAOztD,KAAKU,QAAUwvH,EAAiBI,QAAWtwH,KAAKU,QAAUwvH,EAAiBnhE,SAAwB,MAAb/uD,KAAK6kB,IACtG,CACA8B,cAAAA,GACI,OAAO3mB,KAAKU,QAAUwvH,EAAiBvjE,aAC3C,CACAW,kBAAAA,GACI,OAAOttD,KAAKU,QAAUwvH,EAAiBvjE,eAAiB3sD,KAAKU,QAAUwvH,EAAiB3iE,kBAC5F,CACAzU,SAAAA,GACI,GAAI94C,KAAKU,QAAUwvH,EAAiBC,WAChC,OAAO,EAGX,OAFenwH,KAAK21C,QAAQ66E,sBAAsBxwH,KAAK2D,KAAM3D,KAAKywF,uBACzC/qF,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,OAClB9sB,KAAK21C,QAAQ/zB,QAAQkuG,aAC/D,CACAquH,QAAAA,GACI,OAAOn+O,KAAKU,QAAUwvH,EAAiBG,gBAC3C,CAGAzqH,QAAAA,GACI,OAAO,EAAI6vC,EAASgC,eAAez3C,KAAKwB,OAAQxB,KAAK03C,WAAY13C,KAAK21C,QAAQl0B,OAClF,CAIAsiD,gBAAAA,GACI,OAAO,EAAItuB,EAASgC,eAAez3C,KAAK2D,KAAKogE,mBAAoB/jE,KAAK21C,QAAQj0B,OAAO1hB,KAAK2D,KAAKqgE,mBAAoBhkE,KAAK21C,QAAQl0B,OACpI,CAWA,+BAAM28N,CAA0Bh2O,EAAammD,EAAsB8vL,GAC/D,GAAIr+O,KAAKU,QAAUwvH,EAAiBE,gBAAkBpwH,KAAKU,QAAUwvH,EAAiBnhE,QAClF,MAAM,IAAIlrD,MAAM,8BACpB,MAAM8qB,QAAe3uB,KAAK21C,QAAQ+5E,OAAOj8B,kBAAkBzzF,KAAK0G,QAASnD,EAASgB,OAAOC,KAAKxE,KAAK2D,KAAKigE,iBAAkB,OAAQ5jE,KAAKywF,uBAAuB,CAACrlE,EAAevG,EAAM5d,EAAMq3O,KAChK,MAAlBD,GACAA,EAAex5N,EAAMuG,EAAeprB,KAAKywF,sBAAuB6tJ,EAAQ,GAC7El2O,EAAammD,GACG,MAAfnmD,GACAA,EAAYylB,iBAChB7tB,KAAK6kB,KAAO8J,EAAO9nB,GAAGmwD,KACtBh3D,KAAKiH,KAAO0nB,EAAO1nB,KACfjH,KAAKU,QAAUwvH,EAAiBK,eAChCvwH,KAAKU,QAAUwvH,EAAiBI,SAChCtwH,KAAKU,MAAQwvH,EAAiBG,wBAE5BrwH,KAAKulB,cACf,CAIA,uBAAMg5N,GACF,MAAM5vN,QAAe3uB,KAAK21C,QAAQ+5E,OAAOt8B,iBAAiBpzF,KAAK0G,QAASnD,EAASgB,OAAOC,KAAKxE,KAAK2D,KAAKigE,iBAAkB,QACzH,OAAc,MAAVj1C,EACO,KACJ,CACH9J,KAAM8J,EAAO9nB,GAAGmwD,KAChB/vD,KAAM0nB,EAAO1nB,KACbmkB,cAAeuD,EAAO9nB,GAAGukB,cACzBozN,oBAAqBx+O,KAAKywF,sBAElC,CAYA,YAAMtkF,CAAOzI,EAAQ0E,EAAa8D,GAC9BlM,KAAKguD,YAAYtqD,GACjB,MAAMirB,QAAe3uB,KAAK21C,QAAQn0B,SAASysC,eAAevqD,QAAc1D,KAAK64C,UAAU3sC,IAAa,EAAM9D,GAK1G,OAJApI,KAAK8kB,WAAa6J,EAAO,GACrB3uB,KAAKU,QAAUwvH,EAAiBC,YAAcnwH,KAAKU,QAAUwvH,EAAiB3iE,0BACxEvtD,KAAKulB,aAAa2qG,EAAiBE,gBAEtCzhG,EAAO,EAClB,CACA,sBAAMu/B,CAAiB9lD,GACnB,GAAIpI,KAAKU,QAAUwvH,EAAiBE,gBAAkBpwH,KAAKU,QAAUwvH,EAAiBK,cAClF,OAAOlsH,QAAQC,UACnB,GAAItE,KAAKU,QAAUwvH,EAAiBC,YAAcnwH,KAAKU,QAAUwvH,EAAiB3iE,mBAC9E,MAAM,IAAI1pD,MAAM,iBACpB,MAAMypB,GAAkB,EAAInoB,EAAQooB,uBAAuBnlB,GACrDumB,QAAetqB,QAAQ8pD,KAAK,CAC9BnuD,KAAKouD,yBAAyB9gC,EAAgBb,QAC9CzsB,KAAKquD,cAAc6hE,EAAiBE,eAAgB,MAAO9iG,EAAgBb,QAAQzjB,MAAK,IAAM,MAOlG,GALAskB,EAAgBI,QACD,IAAXiB,GACA3uB,KAAK6hB,OAAO0F,MAAM,oDACP,IAAXoH,GACA3uB,KAAK6hB,OAAO0F,MAAM,0DACP,IAAXoH,EAKA,OAJA3uB,KAAK6hB,OAAO0F,MAAM,uEACdvnB,KAAKU,QAAUwvH,EAAiBC,YAAcnwH,KAAKU,QAAUwvH,EAAiB3iE,0BACxEvtD,KAAKulB,aAAa2qG,EAAiBvjE,gBAI7C3sD,KAAKU,QAAUwvH,EAAiBC,YAAcnwH,KAAKU,QAAUwvH,EAAiB3iE,0BACxEvtD,KAAKulB,aAAa2qG,EAAiBE,eAEjD,CASA,cAAMquH,CAAS/6O,GACX,IAAK1D,KAAKm+O,WACN,MAAM,IAAIt6O,MAAM,sCACpB,MAAMgD,QAAW7G,KAAK21C,QAAQ+5E,OAAOp9B,eAAetyF,KAAK6kB,MACzD,aAAa7kB,KAAK21C,QAAQn0B,SAASylF,mBAAmBvjG,GAAU1D,KAAKq3C,eAAgBr3C,KAAK2D,KAAM,CAC5Fs+E,UAAWp7E,EAAGo7E,UACd72D,cAAevkB,EAAGukB,cAClB4rC,KAAMnwD,EAAGmwD,KACTlwD,IAAKD,EAAGC,IACRk4E,OAAQn4E,EAAG+3E,aACZ5+E,KAAKywF,sBAAuBzwF,KAAKiH,KAAM,KAAMjH,KAAK21C,QAAQwxD,cAAc,EAC/E,CAOA,WAAM96F,CAAM3I,EAAQ0E,GAChB,IAAIu7G,EACJ,IACIA,QAAc3jH,KAAK21C,QAAQn0B,SAASysC,eAAevqD,QAAc1D,KAAKy+O,SAAS/6O,IAAS,EAAM0E,EAClG,CACA,MAAOmJ,GAEH,GADAvR,KAAK6hB,OAAOwD,KAAK,oEACbrlB,KAAKU,QAAUwvH,EAAiBK,cAEhC,OADAvwH,KAAK6hB,OAAOwD,KAAK,gGACVrlB,KAAKilB,UAEhB,SAAWjlB,KAAK21C,QAAQn0B,SAAS0uC,gBAAgBlwD,KAAKq3C,eAAgBr3C,KAAK2D,QAAWsB,EAAO6qD,iBAAiBlB,KAG1G,OAFA5uD,KAAK6hB,OAAOwD,KAAK,qGACXrlB,KAAKulB,aAAa2qG,EAAiBK,eAClC,KAEX,MAAMh/G,CACV,CAMA,OALAvR,KAAKilB,UAAY0+F,EAAM,GACnB3jH,KAAKU,QAAUwvH,EAAiBE,gBAAkBpwH,KAAKU,QAAUwvH,EAAiBG,kBAClFrwH,KAAKU,QAAUwvH,EAAiBnhE,SAAW/uD,KAAKU,QAAUwvH,EAAiBI,cACrEtwH,KAAKulB,aAAa2qG,EAAiBK,eAEtC5M,EAAM,EACjB,CAQA,qBAAM+6H,CAAgBt2O,GAClB,GAAIpI,KAAKU,QAAUwvH,EAAiBK,cAChC,OAAOlsH,QAAQC,UACnB,GAAItE,KAAKU,QAAUwvH,EAAiBG,iBAChC,MAAM,IAAIxsH,MAAM,wCACpB,MAAMypB,EAAkB,IAAIsiC,gBACT,MAAfxnD,GACAA,EAAYsgB,iBAAiB,SAAS,IAAM4E,EAAgBI,MAAMtlB,EAAY4lB,UAClF,MAAM4D,QAAYvtB,QAAQ8pD,KAAK,CAC3BnuD,KAAK6vD,uBAAuBviC,EAAgBb,QAC5CzsB,KAAKquD,cAAc6hE,EAAiBK,cAAe,KAAMjjG,EAAgBb,QAAQzjB,MAAK,IAAM,IAC5FhJ,KAAKquD,cAAc6hE,EAAiBI,OAAQ,KAAMhjG,EAAgBb,QAAQzjB,MAAK,IAAM,MAGzF,GADAskB,EAAgBI,QACJ,IAARkE,EAAJ,CAIA,GAAY,IAARA,EAEA,MADA5xB,KAAK6hB,OAAO0F,MAAM,0DACZ,IAAI1jB,MAAM,oCAEpB7D,KAAK6hB,OAAO0F,MAAM,6CACdqK,IAAQ3sB,EAAO6qD,iBAAiBlB,MAC5B5uD,KAAKU,QAAUwvH,EAAiBK,qBAC1BvwH,KAAKulB,aAAa2qG,EAAiBK,eAE7C3+F,IAAQ3sB,EAAO6qD,iBAAiBC,cAAgBn+B,IAAQ3sB,EAAO6qD,iBAAiBf,SAC5E/uD,KAAKU,QAAUwvH,EAAiBK,eAChCvwH,KAAKU,QAAUwvH,EAAiBI,cAC1BtwH,KAAKulB,aAAa2qG,EAAiBI,OAbjD,MAFItwH,KAAK6hB,OAAO0F,MAAM,gEAiB1B,CAGAyoC,SAAAA,GACI,MAAO,IACA5pD,MAAM4pD,YACTtpD,QAAS1G,KAAK0G,QACdlF,OAAQxB,KAAKwB,OAAOiD,SAAS,IAC7BgsF,sBAAuBzwF,KAAKywF,sBAC5B5rE,KAAM7kB,KAAK6kB,KACX5d,KAAMjH,KAAKiH,KAEnB,CASA,wBAAMgpD,GACF,GAAIjwD,KAAKU,QAAUwvH,EAAiBC,YAAcnwH,KAAKU,QAAUwvH,EAAiB3iE,mBAAoB,CAElG,aADqB,EAAIpoD,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAAS0uC,gBAAgBlwD,KAAKq3C,eAAgBr3C,KAAK2D,SAEnH,KAAKsB,EAAO6qD,iBAAiBlD,SAEzB,OADA5sD,KAAKU,MAAQwvH,EAAiBE,gBACvB,EACX,KAAKnrH,EAAO6qD,iBAAiBf,QAEzB,OADA/uD,KAAKU,MAAQwvH,EAAiBvjE,eACvB,EACX,KAAK1nD,EAAO6qD,iBAAiBlB,KAEzB,OADA5uD,KAAKU,MAAQwvH,EAAiBK,eACvB,EAEf,aAAWvwH,KAAKmwD,iBACZnwD,KAAKU,MAAQwvH,EAAiBvjE,eACvB,EAGf,CACA,GAAI3sD,KAAKU,QAAUwvH,EAAiBE,gBAAkBpwH,KAAKU,QAAUwvH,EAAiBG,kBAAoBrwH,KAAKU,QAAUwvH,EAAiBnhE,QAAS,CAE/I,aADqB,EAAI5pD,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAAS0uC,gBAAgBlwD,KAAKq3C,eAAgBr3C,KAAK2D,SAEnH,KAAKsB,EAAO6qD,iBAAiBlB,KAEzB,OADA5uD,KAAKU,MAAQwvH,EAAiBK,eACvB,EACX,KAAKtrH,EAAO6qD,iBAAiBC,aAC7B,KAAK9qD,EAAO6qD,iBAAiBf,QAEzB,OADA/uD,KAAKU,MAAQwvH,EAAiBI,QACvB,EACX,KAAKrrH,EAAO6qD,iBAAiBlD,SACzB,MAAMh7B,QAAY5xB,KAAKu+O,oBACvB,GAAW,MAAP3sN,GAAeA,EAAIxG,eAAiBprB,KAAKywF,sBAIzC,OAHAzwF,KAAK6kB,KAAO+M,EAAI/M,KAChB7kB,KAAKiH,KAAO2qB,EAAI3qB,KAChBjH,KAAKU,MAAQwvH,EAAiBG,kBACvB,EAIvB,CACJ,CACA,WAAM5pG,CAAMa,GACR,MAAMZ,QAAgB1mB,KAAKiwD,qBAG3B,OAFIvpC,GAAWY,SACLtnB,KAAKulB,eACRmB,CACX,CACA,WAAMO,CAAMK,GACR,OAAQtnB,KAAKU,OACT,KAAKwvH,EAAiBC,WAClB,GAAInwH,KAAKowD,OAASvjC,KAAKC,MAInB,OAHA9sB,KAAKU,MAAQwvH,EAAiB3iE,mBAC1BjmC,SACMtnB,KAAKulB,gBACR,EAEX,MACJ,KAAK2qG,EAAiBE,eAClB,GAAIpwH,KAAK2sO,iBAAmB9/M,KAAKC,MAI7B,OAHA9sB,KAAKU,MAAQwvH,EAAiBnhE,QAC1BznC,SACMtnB,KAAKulB,gBACR,EAEf,KAAK2qG,EAAiBnhE,QAElB,GAAI3lD,KAAKC,MAAMwjB,KAAKC,MAAQ,KAAQ,MAAQ,EACxC,IACI,MAAM8E,QAAY5xB,KAAKu+O,oBACvB,GAAW,MAAP3sN,GAAeA,EAAIxG,eAAiBprB,KAAKywF,sBAMzC,OALAzwF,KAAK6kB,KAAO+M,EAAI/M,KAChB7kB,KAAKiH,KAAO2qB,EAAI3qB,KAChBjH,KAAKU,MAAQwvH,EAAiBG,iBAC1B/oG,SACMtnB,KAAKulB,gBACR,CAEf,CACA,MAAOhU,GACHvR,KAAK6hB,OAAOgB,MAAM,YAAc7iB,KAAKslB,0BAA4B,MAAO/T,EAC5E,EAIhB,EAEJzR,EAAQmwH,YAAcA,4aC1atB,MAAApvH,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACA69O,EAAA79O,EAAA,OACAC,EAAAD,EAAA,KAkBAhB,EAAAA,YAAA,SACIoB,EACAC,EACAqxB,EACAnxB,EACAE,EACAC,EACAC,GAG4B,IAF5BE,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOzwB,EAAgBC,IAAW,EAAApB,EAAAqB,YAAWb,EAAOI,GAE9CU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAo8O,EAAAC,8BAA6BpsN,EAASnxB,EAAMa,EAAgBV,EAAQC,EAAUE,EAAcK,IAGhG,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,sBCvCA,IAAIsuB,EAASvvB,EAAQ,OACjByD,EAAS8rB,EAAO9rB,OAGpB,SAAS04J,EAAWjkI,EAAK3J,GACvB,IAAK,IAAIrlB,KAAOgvB,EACd3J,EAAIrlB,GAAOgvB,EAAIhvB,EAEnB,CASA,SAAS60O,EAAYhiI,EAAK89B,EAAkB94I,GAC1C,OAAO0C,EAAOs4G,EAAK89B,EAAkB94I,EACvC,CAVI0C,EAAOC,MAAQD,EAAO0b,OAAS1b,EAAOi/B,aAAej/B,EAAO+5I,gBAC9Dv+I,EAAOD,QAAUuwB,GAGjB4sI,EAAU5sI,EAAQvwB,GAClBA,EAAQyE,OAASs6O,GAOnBA,EAAWj0O,UAAY5H,OAAO0G,OAAOnF,EAAOqG,WAG5CqyJ,EAAU14J,EAAQs6O,GAElBA,EAAWr6O,KAAO,SAAUq4G,EAAK89B,EAAkB94I,GACjD,GAAmB,kBAARg7G,EACT,MAAM,IAAI59E,UAAU,iCAEtB,OAAO16B,EAAOs4G,EAAK89B,EAAkB94I,EACvC,EAEAg9O,EAAW5+N,MAAQ,SAAUiK,EAAM+G,EAAMkD,GACvC,GAAoB,kBAATjK,EACT,MAAM,IAAI+U,UAAU,6BAEtB,IAAIooC,EAAM9iE,EAAO2lB,GAUjB,YATapoB,IAATmvB,EACsB,kBAAbkD,EACTkzC,EAAIp2C,KAAKA,EAAMkD,GAEfkzC,EAAIp2C,KAAKA,GAGXo2C,EAAIp2C,KAAK,GAEJo2C,CACT,EAEAw3K,EAAWr7M,YAAc,SAAUtZ,GACjC,GAAoB,kBAATA,EACT,MAAM,IAAI+U,UAAU,6BAEtB,OAAO16B,EAAO2lB,EAChB,EAEA20N,EAAWvgG,gBAAkB,SAAUp0H,GACrC,GAAoB,kBAATA,EACT,MAAM,IAAI+U,UAAU,6BAEtB,OAAO5O,EAAOkqH,WAAWrwH,EAC3B,gCCpCAlnB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQwzI,oBAAiB,EACzBxzI,EAAQw0I,iBAUR,SAA0B3wI,GACtB,OAAOmvK,EAASnvK,IAAkB,KAATA,CAC7B,EAXA7D,EAAQg/O,OAaR,SAAgBn7O,GACZ,OAAOA,aAAgBkpB,MAAQzR,EAAUzX,EAAKquK,UAClD,EAdAlyK,EAAQuxK,cAgBR,SAAuB1tK,GACnB,MAAgB,KAATA,GAAgBA,aAAgBkO,QAA8B,KAApBlO,EAAKc,UAC1D,EAjBA3E,EAAQgzK,SAAWA,EACnBhzK,EAAQy0I,SAAWA,EACnBz0I,EAAQsb,UAAYA,EACpBtb,EAAQu0I,SAgCR,SAAkBxiF,EAAMktL,EAAa9wN,GACjC,GAAI4jC,EACA,OACJ,MAAMz9B,EAA4B,oBAAhB2qN,EAA6BA,OAAcj9O,EAC7D,IAAI8f,EAAiC,oBAAhBm9N,EAA6B9wN,EAAU8wN,EAGvDxqG,EAAS3yH,KACVA,EAAU,mBACd,MAAMgI,EAAM,IAAI0pH,GAAe,EAAIxpI,EAAQ6oH,cAAc/wG,IACzD,IAAIwS,EAGA,MAAMxK,EAFNwK,EAAGxK,EAGX,EA7CA,MAAM9f,EAAUhJ,EAAQ,OAexB,SAASgyK,EAASnvK,GACd,MAAuB,kBAATA,GAAqBA,aAAgBkO,MACvD,CAEA,SAAS0iI,EAAS5wI,GACd,MAA6C,qBAAtC,EAAImG,EAAQ8oH,gBAAgBjvH,EACvC,CAEA,SAASyX,EAAUzX,GACf,MAAuB,kBAATA,GAAqBA,EAAO,IAAM,CACpD,CAyBA,MAAM2vI,UAAuBzvI,OAE7B/D,EAAQwzI,eAAiBA,8BCxFzBtwI,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0sL,iBAAc,EACtB1sL,EAAQ0sL,YAAc,CAClB,CACI,KAAQ,OACR,KAAQ,eACR,eAAkB,wBAEtB,CACI,KAAQ,SACR,KAAQ,+CACR,QAAW,CACP,CACI,KAAQ,mBACR,KAAQ,sBAEZ,CACI,KAAQ,qBACR,KAAQ,2BAEZ,CACI,KAAQ,cACR,KAAQ,2BAEZ,CACI,KAAQ,qBACR,KAAQ,sBAEZ,CACI,KAAQ,QACR,KAAQ,sBAEZ,CACI,KAAQ,QACR,KAAQ,wBAIpB,CACI,KAAQ,SACR,KAAQ,oEACR,QAAW,CACP,CACI,KAAQ,WACR,KAAQ,yEAIpB,CACI,KAAQ,SACR,KAAQ,sBACR,QAAW,CACP,CACI,KAAQ,MACR,KAAQ,uBAEZ,CACI,KAAQ,OACR,KAAQ,yBAIpB,CACI,KAAQ,SACR,KAAQ,4DACR,QAAW,CACP,CACI,KAAQ,cACR,KAAQ,gDAEZ,CACI,KAAQ,aACR,KAAQ,2BAEZ,CACI,KAAQ,aACR,KAAQ,uBAEZ,CACI,KAAQ,eACR,KAAQ,sBAEZ,CACI,KAAQ,uBACR,KAAQ,sBAEZ,CACI,KAAQ,wBACR,KAAQ,8BAIpB,CACI,KAAQ,YACR,KAAQ,uBACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,gBACR,KAAQ,qEAEZ,CACI,KAAQ,gBACR,KAAQ,8DAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,iCACR,OAAU,CACN,CACI,KAAQ,gBACR,KAAQ,qEAEZ,CACI,KAAQ,gBACR,KAAQ,8DAGhB,QAAW,GACX,iBAAoB,YAExB,CACI,KAAQ,WACR,KAAQ,2BACR,OAAU,CACN,CACI,KAAQ,UACR,KAAQ,iBAEZ,CACI,KAAQ,gBACR,KAAQ,qEAEZ,CACI,KAAQ,gBACR,KAAQ,8DAGhB,QAAW,GACX,iBAAoB,cAIhC,CACI,KAAQ,OACR,KAAQ,uBACR,eAAkB,gCAEtB,CACI,KAAQ,YACR,KAAQ,+BACR,MAAS,CACL,CACI,KAAQ,WACR,KAAQ,gBACR,OAAU,GACV,QAAW,CACP,CACI,KAAQ,wBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,kBACR,OAAU,GACV,QAAW,CACP,CACI,KAAQ,uBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,qBACR,OAAU,CACN,CACI,KAAQ,gBACR,KAAQ,8DAGhB,QAAW,CACP,CACI,KAAQ,uBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,kBACR,OAAU,CACN,CACI,KAAQ,SACR,KAAQ,uBAGhB,QAAW,CACP,CACI,KAAQ,kBAGhB,iBAAoB,QAExB,CACI,KAAQ,WACR,KAAQ,sBACR,OAAU,GACV,QAAW,CACP,CACI,KAAQ,kBAGhB,iBAAoB,UAIhC,CACI,KAAQ,cACR,KAAQ,cACR,OAAU,CACN,CACI,KAAQ,gBACR,KAAQ,+DAIpB,CACI,KAAQ,QACR,KAAQ,iCACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,cACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,sBACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,SACR,KAAQ,4DACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,qCACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,cACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,sBACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,UACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,SACR,KAAQ,4DACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,gCACR,KAAQ,SACR,QAAW,CACP,CACI,KAAQ,iBACR,KAAQ,oDACR,KAAQ,OAEZ,CACI,KAAQ,UACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,0BACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,kBACR,KAAQ,gBACR,KAAQ,OAEZ,CACI,KAAQ,eACR,KAAQ,gBACR,KAAQ,UAIpB,CACI,KAAQ,QACR,KAAQ,6BACR,KAAQ,OACR,SAAY,CACR,CACI,KAAQ,cACR,KAAQ,iCACR,KAAQ,UAEZ,CACI,KAAQ,kBACR,KAAQ,qCACR,KAAQ,UAEZ,CACI,KAAQ,aACR,KAAQ,gCACR,KAAQ,qeC/UxB,MAAA3rL,EAAAC,EAAA,OACAC,EAAAD,EAAA,KACAE,EAAAF,EAAA,OACAk+O,EAAAl+O,EAAA,OACA8wD,EAAA9wD,EAAA,OACAG,EAAAH,EAAA,MAqBAhB,EAAAA,0BAAA,SACIoB,EACAC,EACA47K,EACAE,EACAxhI,EACAC,EACAj6C,GAGiC,IAFjCmC,EAAOhC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGf,EAAA0iK,QAAQ3lE,WAClB77F,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,+DAEZ,MAAMg9O,GAAU,EAAArtL,EAAAstL,YAAW,CAACttL,EAAAK,cAAcwpL,wBACpCzgM,QAAiB95C,EAAWyzF,kCAAkCsqJ,GAC9D58O,GAAc,IAAIxB,EAAAyB,aAAcC,IAClC1B,EAAA26B,cAAckf,cAAc,CACxBI,WAAY35C,EAAMwD,UAClBw2C,iBAAkBv3C,EAAQe,UAC1By2C,MAAO6jM,EACPjkM,WACAh5C,eAEJ,EAAAf,EAAAk+O,gDAA+Cv7O,EAAQe,UAAW82C,EAAeC,EAAM15C,IACvF,EAAAg9O,EAAAI,iCAAgCx7O,EAAQe,UAAWlD,EAAUs7K,EAAeE,EAAiBj7K,IAGjG,aADM,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,EAAOyC,GAAU7B,GACpE6B,EAAQe,SACnB,KAgBA7E,EAAAA,8BAAA,SACIoB,EACAC,EACAE,EACAo6C,EACAC,GAGiC,IAFjC/5C,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,+DAEZ,MAAOo9O,EAAwBl9O,IAAW,EAAApB,EAAAqB,YAAWq5C,EAAe95C,GAC9DU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAtB,EAAAq+O,gDAA+Cj+O,EAAMg+O,EAAwB3jM,EAAMv5C,EAASH,IAGhG,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,EAAOs6C,KAAkBt5C,GAAUJ,EACxG,iCCjFAjC,EAAQ,OAAmB,EAU3BA,EAAQ,EATe,CACrB,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,geCXX,MAAAgf,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAGA8wD,EAAA9wD,EAAA,OAQahB,EAAAA,0BAA2B,EAAAgf,EAAAY,QAA2B,EAAC,EAAAX,EAAApa,WAAU,oBAEjE7E,EAAAA,0BAA4BA,EAAAy/O,yBAAyBr/N,KAElEpgB,EAAAA,sBAAA,SAAsCuB,GAClC,MAAM0wD,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAc6oL,mBAAoBz5O,EAAK8wD,SAC9E,OAAsB,OAAlBJ,EACOjyD,EAAAy/O,yBAAyB9/N,OAAOsyC,GAEhC,IAEf,mBCfA,IAAIzzB,EAAWx9B,EAAQ,OACnB0+O,EAAS1+O,EAAQ,OACjB+uB,EAAO/uB,EAAQ,OACfyD,EAASzD,EAAAA,OAAAA,OAET2rF,EAAI,IAAItiF,MAAM,IAElB,SAASs1O,IACPz/O,KAAKmP,OAELnP,KAAKyqH,GAAKh+B,EAEV58D,EAAK/Y,KAAK9W,KAAM,GAAI,GACtB,CAEAs+B,EAASmhN,EAAQD,GAEjBC,EAAO70O,UAAUuE,KAAO,WAUtB,OATAnP,KAAK4pI,GAAK,WACV5pI,KAAKggK,GAAK,UACVhgK,KAAK29C,GAAK,UACV39C,KAAKogK,GAAK,WACVpgK,KAAKsgK,GAAK,WACVtgK,KAAKugK,GAAK,WACVvgK,KAAK0/O,GAAK,WACV1/O,KAAKgmK,GAAK,WAEHhmK,IACT,EAEAy/O,EAAO70O,UAAU8gH,MAAQ,WACvB,IAAIvgC,EAAI5mF,EAAOi/B,YAAY,IAU3B,OARA2nD,EAAEygC,aAAa5rH,KAAK4pI,GAAI,GACxBz+C,EAAEygC,aAAa5rH,KAAKggK,GAAI,GACxB70E,EAAEygC,aAAa5rH,KAAK29C,GAAI,GACxBwtC,EAAEygC,aAAa5rH,KAAKogK,GAAI,IACxBj1E,EAAEygC,aAAa5rH,KAAKsgK,GAAI,IACxBn1E,EAAEygC,aAAa5rH,KAAKugK,GAAI,IACxBp1E,EAAEygC,aAAa5rH,KAAK0/O,GAAI,IAEjBv0J,CACT,EAEAprF,EAAOD,QAAU2/O,2gBCpDjBjwO,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,oBCOA,IAAIw+B,EAAWx9B,EAAQ,OACnB+uB,EAAO/uB,EAAQ,OACfyD,EAASzD,EAAAA,OAAAA,OAETwqF,EAAI,CACN,WAAY,YAAY,YAAgB,WAGtCmB,EAAI,IAAItiF,MAAM,IAElB,SAASw1O,IACP3/O,KAAKmP,OACLnP,KAAKyqH,GAAKh+B,EAEV58D,EAAK/Y,KAAK9W,KAAM,GAAI,GACtB,CAkBA,SAAS4/O,EAAOz+M,GACd,OAAQA,GAAO,EAAMA,IAAQ,EAC/B,CAEA,SAASi0J,EAAQj0J,GACf,OAAQA,GAAO,GAAOA,IAAQ,CAChC,CAEA,SAASk0J,EAAI3kL,EAAGQ,EAAGE,EAAGmE,GACpB,OAAU,IAAN7E,EAAiBQ,EAAIE,GAAQF,EAAKqE,EAC5B,IAAN7E,EAAiBQ,EAAIE,EAAMF,EAAIqE,EAAMnE,EAAImE,EACtCrE,EAAIE,EAAImE,CACjB,CA5BA+oB,EAASqhN,EAAM9vN,GAEf8vN,EAAK/0O,UAAUuE,KAAO,WAOpB,OANAnP,KAAK4pI,GAAK,WACV5pI,KAAKggK,GAAK,WACVhgK,KAAK29C,GAAK,WACV39C,KAAKogK,GAAK,UACVpgK,KAAKsgK,GAAK,WAEHtgK,IACT,EAoBA2/O,EAAK/0O,UAAUu0B,QAAU,SAAUwsD,GASjC,IARA,IAnBcxqD,EAmBVsrD,EAAIzsF,KAAKyqH,GAETh6G,EAAc,EAAVzQ,KAAK4pI,GACT14H,EAAc,EAAVlR,KAAKggK,GACT5uJ,EAAc,EAAVpR,KAAK29C,GACTpoC,EAAc,EAAVvV,KAAKogK,GACT7uJ,EAAc,EAAVvR,KAAKsgK,GAEJt1J,EAAI,EAAGA,EAAI,KAAMA,EAAGyhF,EAAEzhF,GAAK2gF,EAAEutC,YAAgB,EAAJluH,GAClD,KAAOA,EAAI,KAAMA,EAAGyhF,EAAEzhF,IA5BRm2B,EA4BmBsrD,EAAEzhF,EAAI,GAAKyhF,EAAEzhF,EAAI,GAAKyhF,EAAEzhF,EAAI,IAAMyhF,EAAEzhF,EAAI,MA3B1D,EAAMm2B,IAAQ,GA6B7B,IAAK,IAAIvwB,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAAIF,KAAOE,EAAI,IACX2L,EAAKqjO,EAAMnvO,GAAK4kL,EAAG3kL,EAAGQ,EAAGE,EAAGmE,GAAKhE,EAAIk7E,EAAE77E,GAAK06E,EAAE56E,GAAM,EAExDa,EAAIgE,EACJA,EAAInE,EACJA,EAAIgkL,EAAOlkL,GACXA,EAAIT,EACJA,EAAI8L,CACN,CAEAvc,KAAK4pI,GAAMn5H,EAAIzQ,KAAK4pI,GAAM,EAC1B5pI,KAAKggK,GAAM9uJ,EAAIlR,KAAKggK,GAAM,EAC1BhgK,KAAK29C,GAAMvsC,EAAIpR,KAAK29C,GAAM,EAC1B39C,KAAKogK,GAAM7qJ,EAAIvV,KAAKogK,GAAM,EAC1BpgK,KAAKsgK,GAAM/uJ,EAAIvR,KAAKsgK,GAAM,CAC5B,EAEAq/E,EAAK/0O,UAAU8gH,MAAQ,WACrB,IAAIvgC,EAAI5mF,EAAOi/B,YAAY,IAQ3B,OANA2nD,EAAEygC,aAAuB,EAAV5rH,KAAK4pI,GAAQ,GAC5Bz+C,EAAEygC,aAAuB,EAAV5rH,KAAKggK,GAAQ,GAC5B70E,EAAEygC,aAAuB,EAAV5rH,KAAK29C,GAAQ,GAC5BwtC,EAAEygC,aAAuB,EAAV5rH,KAAKogK,GAAQ,IAC5Bj1E,EAAEygC,aAAuB,EAAV5rH,KAAKsgK,GAAQ,IAErBn1E,CACT,EAEAprF,EAAOD,QAAU6/O,sCCjGjB,IAAIvqL,EAAmBp1D,MAAQA,KAAKo1D,kBAAqBpyD,OAAO0G,OAAU,SAASw8B,EAAG5tB,EAAGhH,EAAGk5C,QAC7E1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B,IAAI+jD,EAAOryD,OAAOsyD,yBAAyBh9C,EAAGhH,GACzC+jD,KAAS,QAASA,GAAQ/8C,EAAEi9C,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAE34B,YAAY,EAAM9wB,IAAK,WAAa,OAAO0M,EAAEhH,EAAI,IAE5DtO,OAAOC,eAAeijC,EAAGskB,EAAI6K,EACjC,EAAM,SAASnvB,EAAG5tB,EAAGhH,EAAGk5C,QACT1oD,IAAP0oD,IAAkBA,EAAKl5C,GAC3B40B,EAAEskB,GAAMlyC,EAAEhH,EACd,GACI9B,EAAgBxP,MAAQA,KAAKwP,cAAiB,SAAS8I,EAAGxY,GAC1D,IAAK,IAAIyW,KAAK+B,EAAa,YAAN/B,GAAoBvT,OAAO4H,UAAU4L,eAAeM,KAAKhX,EAASyW,IAAI6+C,EAAgBt1D,EAASwY,EAAG/B,EAC3H,EACAvT,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDsM,EAAa1O,EAAQ,OAAmChB,GACxD0P,EAAa1O,EAAQ,OAAiChB,GACtD0P,EAAa1O,EAAQ,OAAmChB,GACxD0P,EAAa1O,EAAQ,OAAyChB,GAC9D0P,EAAa1O,EAAQ,OAA2ChB,GAChE0P,EAAa1O,EAAQ,OAA2ChB,GAChE0P,EAAa1O,EAAQ,OAA8ChB,GACnE0P,EAAa1O,EAAQ,OAAiDhB,GACtE0P,EAAa1O,EAAQ,OAA+ChB,GACpE0P,EAAa1O,EAAQ,OAAwDhB,GAC7E0P,EAAa1O,EAAQ,OAAkDhB,GACvE0P,EAAa1O,EAAQ,OAAyChB,GAC9D0P,EAAa1O,EAAQ,OAAuDhB,GAC5E0P,EAAa1O,EAAQ,OAA6ChB,GAClE0P,EAAa1O,EAAQ,OAA0ChB,GAC/D0P,EAAa1O,EAAQ,OAAsChB,GAC3D0P,EAAa1O,EAAQ,OAAwChB,GAC7D0P,EAAa1O,EAAQ,OAA6ChB,GAClE0P,EAAa1O,EAAQ,OAA+ChB,GACpE0P,EAAa1O,EAAQ,OAA8ChB,GACnE0P,EAAa1O,EAAQ,OAAgDhB,GACrE0P,EAAa1O,EAAQ,OAAuChB,GAC5D0P,EAAa1O,EAAQ,OAA2DhB,GAChF0P,EAAa1O,EAAQ,MAAkDhB,GACvE0P,EAAa1O,EAAQ,OAAyDhB,GAC9E0P,EAAa1O,EAAQ,OAA6DhB,GAClF0P,EAAa1O,EAAQ,OAAgEhB,GACrF0P,EAAa1O,EAAQ,OAAkEhB,GACvF0P,EAAa1O,EAAQ,KAAwEhB,GAC7F0P,EAAa1O,EAAQ,OAAiDhB,GACtE0P,EAAa1O,EAAQ,OAAqChB,GAC1D0P,EAAa1O,EAAQ,OAA4ChB,GACjE0P,EAAa1O,EAAQ,OAAiChB,GACtD0P,EAAa1O,EAAQ,OAAmChB,8PCjDxD,MAAAgf,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAC,EAAAD,EAAA,OACAme,EAAAne,EAAA,OA6IA,SAAgB++O,EAAwC1gO,GAI/B,IAJgC,UACrDnd,EACAod,MAAOoT,EAASnxB,EAAM4+H,EAAU1+H,KAAUI,GAAa,KACvDgC,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAnxB,OACA4+H,WACA1+H,QACAI,gBAEJgC,KAAM7D,EAAAggP,8BAA8BrgO,OAAO9b,GAEnD,CAnJa7D,EAAAA,+BAAgC,EAAAgf,EAAAY,QAAsC,EAC/E,EAAAZ,EAAAa,IAAG,gBACH,EAAAZ,EAAA2T,KAAI,WACJ,EAAA5T,EAAAa,IAAG,cAiBP7f,EAAAA,gCAAA,SACI0yB,EACAnxB,EACA4+H,EACA1+H,EACAC,EACAC,GAE4B,IAD5BE,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuC,GACvCI,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,GAAO,EAAAre,EAAA6xB,YACT,CACI,CAAE9S,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,GAC7C,CAAEF,OAAQmgH,EAAUlgH,UAAU,EAAOC,YAAY,IAErDze,EACAI,GAGEgC,EAAOY,EAAO0b,MAAMngB,EAAAggP,8BAA8B5/N,MAUxD,OATApgB,EAAAggP,8BAA8B3/N,OAC1B,CACId,YAAaJ,EAAAmB,iBAAiB2/N,eAC9Bv+O,OAAQkE,OAAOlE,GACfC,YAEJkC,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EA2BA7D,EAAAA,gCAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAggP,8BAA8B5/N,KAAM,MAAM,IAAIlB,EAAAyB,iCAE9E,MACIrB,MAAM,QAAEoT,EAAO,KAAEnxB,EAAI,SAAE4+H,EAAQ,MAAE1+H,EAAK,aAAEI,GAAc,KACtDgC,GACAk8O,EAAyCxgO,GAC7C,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiB2/N,eAAgB,MAAM,IAAI/gO,EAAA0B,iCACpE,IAAK8R,IAAYnxB,IAAS4+H,IAAa1+H,EAAO,MAAM,IAAIyd,EAAA2B,iCAIxD,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAnxB,OACA4+H,WACA1+H,QACAI,gBAEJgC,OAER,EA0BA7D,EAAAA,yCAAA+/O,mBCpIA9/O,EAAOD,QAAUo7K,EAEjB,IAAIpkE,EAAKh2G,EAAAA,OAAAA,aAoBT,SAASo6K,IACPpkE,EAAGhgG,KAAK9W,KACV,CArBec,EAAQ,MAEvBw9B,CAAS48I,EAAQpkE,GACjBokE,EAAO8e,SAAWl5L,EAAQ,OAC1Bo6K,EAAO2C,SAAW/8K,EAAQ,OAC1Bo6K,EAAO1T,OAAS1mK,EAAQ,OACxBo6K,EAAOlnJ,UAAYlzB,EAAQ,OAC3Bo6K,EAAOnnJ,YAAcjzB,EAAQ,MAC7Bo6K,EAAOhrJ,SAAWpvB,EAAQ,OAC1Bo6K,EAAO8kE,SAAWl/O,EAAQ,OAG1Bo6K,EAAOA,OAASA,EAWhBA,EAAOtwK,UAAUi8E,KAAO,SAAS3lD,EAAMtf,GACrC,IAAIxgB,EAASpB,KAEb,SAAS09L,EAAOxpK,GACVgN,EAAKs0B,WACH,IAAUt0B,EAAKp2B,MAAMopB,IAAU9yB,EAAOy8L,OACxCz8L,EAAOy8L,OAGb,CAIA,SAASJ,IACHr8L,EAAO8jH,UAAY9jH,EAAOm7L,QAC5Bn7L,EAAOm7L,QAEX,CANAn7L,EAAO42G,GAAG,OAAQ0lF,GAQlBx8J,EAAK82E,GAAG,QAASylF,GAIZv8J,EAAK++M,UAAcr+N,IAA2B,IAAhBA,EAAQ4L,MACzCpsB,EAAO42G,GAAG,MAAO0N,GACjBtkH,EAAO42G,GAAG,QAAS2N,IAGrB,IAAIu6H,GAAW,EACf,SAASx6H,IACHw6H,IACJA,GAAW,EAEXh/M,EAAK1T,MACP,CAGA,SAASm4F,IACHu6H,IACJA,GAAW,EAEiB,oBAAjBh/M,EAAKrP,SAAwBqP,EAAKrP,UAC/C,CAGA,SAASopC,EAAQmvF,GAEf,GADA+1F,IACwC,IAApCrpI,EAAGe,cAAc73G,KAAM,SACzB,MAAMoqJ,CAEV,CAMA,SAAS+1F,IACP/+O,EAAO22G,eAAe,OAAQ2lF,GAC9Bx8J,EAAK62E,eAAe,QAAS0lF,GAE7Br8L,EAAO22G,eAAe,MAAO2N,GAC7BtkH,EAAO22G,eAAe,QAAS4N,GAE/BvkH,EAAO22G,eAAe,QAAS98C,GAC/B/5B,EAAK62E,eAAe,QAAS98C,GAE7B75D,EAAO22G,eAAe,MAAOooI,GAC7B/+O,EAAO22G,eAAe,QAASooI,GAE/Bj/M,EAAK62E,eAAe,QAASooI,EAC/B,CAUA,OA5BA/+O,EAAO42G,GAAG,QAAS/8C,GACnB/5B,EAAK82E,GAAG,QAAS/8C,GAmBjB75D,EAAO42G,GAAG,MAAOmoI,GACjB/+O,EAAO42G,GAAG,QAASmoI,GAEnBj/M,EAAK82E,GAAG,QAASmoI,GAEjBj/M,EAAK42E,KAAK,OAAQ12G,GAGX8/B,CACT,gCC/HAl+B,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQw4J,oBAAiB,EACzB,MAAMh2E,EAAmBxhF,EAAQ,OAC3By5J,EAAmBz5J,EAAQ,OAC3Bs/O,EAAat/O,EAAQ,MACrBoE,EAAapE,EAAQ,OACrBqE,EAAUrE,EAAQ,OACxB,MAAMw3J,UAAuBh2E,EAAiBG,eAC1C49J,WAAAA,CAAY35O,GACR,OAAO,IAAIxB,EAAWo7O,SAASF,EAAWjzO,SAAUzG,EAAS1G,KAAKw6E,KAAKxnD,UAAUutN,QAAQH,EAAWjzO,SACxG,CAWAkiH,QAAAA,CAAS3rH,EAAQ6zD,EAAWpvD,EAAO3G,GAC/B,MAAMg/O,EAAQxgP,KAAKqgP,YAAYl4O,GAC/B,OAAO,IAAIoyJ,EAAiBl+E,eAAe34E,EAAQ1D,KAAKw6E,KAAMgmK,EAAM9lF,oBAAoB7/G,SAAS0c,EAAW/1D,GAAS82J,EAAeqC,SAASw7B,SACjJ,CAWAh2D,OAAAA,CAAQz8H,EAAQ+8O,EAASt4O,EAAO3G,GAC5B,MAAMg/O,EAAQxgP,KAAKqgP,YAAYl4O,GAC/B,OAAO,IAAIoyJ,EAAiBl+E,eAAe34E,EAAQ1D,KAAKw6E,KAAMgmK,EAAM9lF,oBAAoBgmF,QAAQD,EAASj/O,GAAS82J,EAAeqC,SAASgmF,QAC9I,CAQAv3I,YAAAA,CAAajhG,GACT,OAAOnI,KAAKw6E,KAAKosB,UAAUD,eAAex+F,EAC9C,CAOA,qBAAMq+F,CAAgB9/F,EAASyB,GAC3B,MAAMq4O,EAAQxgP,KAAKqgP,YAAYl4O,GACzBmwC,QAAgBkoM,EAAMI,WAAWl6O,GACjCm6O,GAAY,EAAI17O,EAAQc,UAAUqyC,GAGxC,OAFAt4C,KAAK6hB,OAAO0F,MAAM,oDAAsDpf,EACpE,aAAezB,EAAU,YAAcm6O,EAAUp8O,YAC9Co8O,CACX,CAIAh5N,wBAAAA,GACI,OAAO7nB,KAAKw6E,KAAKqC,KAAKw7E,oBAC1B,CAaA,iBAAM7wD,CAAY9jG,EAAQyE,EAAO3G,EAAQ+1D,EAAW/wD,GAChD,MAAMw2E,EAASh9E,KAAKqvH,SAAS3rH,EAAQ6zD,EAAWpvD,EAAO3G,GAIvD,OAHAgF,EAAUA,SAAiBxG,KAAKw6E,KAAKqC,KAAKC,aAC1C98E,KAAK6hB,OAAO0F,MAAM,kDAAoDgwC,EAAU9yD,WAC5E,WAAa0D,EAAM1D,WAAa,YAAcjD,EAAOiD,SAAS,KAC3D,OAAOu4E,EAAOn2E,GAAGL,GAC5B,EAEJ1G,EAAQw4J,eAAiBA,EACzBA,EAAeC,UAAY,qEAC3BD,EAAeE,WAAa,qEAC5BF,EAAeqC,SAAW,CACtBw7B,SAAU,CAAEruL,GAAI,IAAKy0E,GAAI,GACzBokK,QAAS,CAAE74O,GAAI,IAAKy0E,GAAI,kCC9F5Bv5E,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQghP,qBAAkB,EAC1B,IAAI38F,EAAWrjJ,EAAQ,OAgBvBhB,EAAQghP,gBAfR,SAAyBrhN,GAErB,YADU,IAANA,IAAgBA,EAAI,CAAC,GAClB,IAAIp7B,SAAQ,SAAUC,EAASikB,GAClC,GAAsB,qBAAXqO,OACP,OAAOrO,EAAO,IAAI1kB,MAAM,wCAE5B,IAAIk9O,EAAQnqN,OAAOmqN,MACnB,IAAKA,EACD,OAAOx4N,EAAO,IAAI47H,EAAS68F,qBAAqB,uCAEpDD,EAAM73C,SACDlgM,MAAK,WAAc,OAAO1E,EAAQy8O,EAAQ,IAC1Cn+N,OAAM,SAAUgH,GAAO,OAAOrB,EAAOqB,EAAM,GACpD,GACJ,8BCfA,SAASq3N,EAAYjvO,GACjB,GAAW,MAAPA,EACA,OAAO,KACX,GAAqB,kBAATA,GAAsC,kBAATA,EACrC,OAAO,KACX,IACI,OAAOtM,OAAOsM,EAClB,CACA,MAAOT,GACH,OAAO,IACX,CACJ,CAEA,IAAI+6G,EAoBJ,SAASt9F,EAAgBrnB,GACrB,MAAsB,oBAAVA,EACkB,MAAnBA,OAAK7F,GACM,kBAAV6F,EAVhB,SAAuB6kB,GACnB,IAAK,IAAIxiB,KAAOwiB,EACZ,IAAKwC,EAAgBxC,EAAOxiB,IACxB,OAAO,EAEf,OAAO,CACX,CAKek3O,CAAcv5O,GAClBA,GAAQ,GACnB,CAgDA,SAASsmH,EAAa9yD,EAAK3uC,GACvB,GAAW,MAAP2uC,EACA,OAAO,KACX,MAAMgmL,EAAe,CAAC,EACtB,IAAK,IAAIvxF,KAAapjI,EAAQ,CAC1B,MAAM7d,EAAMwsD,EAAIy0F,GACVjoJ,EAAO6kB,EAAOojI,GACpB,GAAsB,oBAAVjoJ,EAOZ,GAAW,MAAPgH,GAAeqgB,EAAgBrnB,GAC/Bw5O,EAAavxF,GAAa,UAG9B,GAAIjoJ,IAAS2kH,EAAcC,KAAO5kH,IAAS2kH,EAAcyB,YACrDozH,EAAavxF,GAAajhJ,OAEzB,GAAIhH,IAAS2kH,EAAcuQ,SAAWl1H,IAAS2kH,EAAc80H,gBAAiB,CAC/E,GAAqB,mBAATzyO,EACR,OAAO,KACXwyO,EAAavxF,GAAajhJ,CAC9B,MACK,GAAIhH,IAAS2kH,EAAcn9F,QAAUxnB,IAAS2kH,EAAcY,eAAgB,CAC7E,GAAqB,kBAATv+G,EACR,OAAO,KACX,GAAIyL,MAAMzL,GACN,OAAO,KACXwyO,EAAavxF,GAAajhJ,CAC9B,MACK,GAAIhH,IAAS2kH,EAAc5mH,QAAUiC,IAAS2kH,EAAc+0H,eAAgB,CAC7E,MAAM1yN,EAASsyN,EAAYtyO,GAC3B,GAAc,MAAVggB,EACA,OAAO,KACXwyN,EAAavxF,GAAajhI,CAC9B,MACK,GAAIhnB,IAAS2kH,EAAcz6G,QAAUlK,IAAS2kH,EAAcsC,eAAgB,CAC7E,GAAqB,kBAATjgH,EACR,OAAO,KACXwyO,EAAavxF,GAAajhJ,CAC9B,KACK,CAED,MAAMggB,EAASs/F,EAAat/G,EAAKhH,GACjC,GAAc,MAAVgnB,EACA,OAAO,KACXwyN,EAAavxF,GAAajhI,CAC9B,KA3CA,CACI,MAAMA,EAAShnB,EAAKgH,GACpB,GAAc,MAAVggB,EACA,OAAO,KACXwyN,EAAavxF,GAAajhI,CAE9B,CAsCJ,CACA,OAAOwyN,CACX,CA9IAn+O,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmuH,aAAenuH,EAAQ8uB,YAAc9uB,EAAQkvB,gBAAkBlvB,EAAQwsH,cAAgBxsH,EAAQmhP,iBAAc,EAarHnhP,EAAQmhP,YAAcA,EAEtB,SAAW30H,GACPA,EAAcA,EAAsB,OAAI,GAAK,SAC7CA,EAAcA,EAAuB,QAAI,GAAK,UAC9CA,EAAcA,EAAsB,OAAI,GAAK,SAC7CA,EAAcA,EAAsB,OAAI,GAAK,SAC7CA,EAAcA,EAAmB,IAAI,GAAK,MAC1CA,EAAcA,EAA8B,eAAI,KAAO,iBACvDA,EAAcA,EAA+B,gBAAI,KAAO,kBACxDA,EAAcA,EAA8B,eAAI,KAAO,iBACvDA,EAAcA,EAA8B,eAAI,KAAO,iBACvDA,EAAcA,EAA2B,YAAI,KAAO,aACvD,CAXD,CAWGA,EAAgBxsH,EAAQwsH,gBAAkBxsH,EAAQwsH,cAAgB,CAAC,IAetExsH,EAAQkvB,gBAAkBA,EA8C1BlvB,EAAQ8uB,YA7CR,SAAqB0yN,EAAW3yO,GAC5B,MAAMhH,EAAO25O,EACb,GAAsB,oBAAV35O,EAAsB,CAC9B,MAAMgnB,EAAShnB,EAAKgH,GACpB,GAAc,MAAVggB,EACA,OACJ,OAAOA,CACX,CACA,GAAW,MAAPhgB,GAAeqgB,EAAgBrnB,GAC/B,OAAO,KAEX,GAAIA,IAAS2kH,EAAcC,KAAO5kH,IAAS2kH,EAAcyB,YACrD,OAAOp/G,EAEN,GAAIhH,IAAS2kH,EAAcuQ,SAAWl1H,IAAS2kH,EAAc80H,gBAAiB,CAC/E,GAAqB,mBAATzyO,EACR,OACJ,OAAOA,CACX,CACK,GAAIhH,IAAS2kH,EAAcn9F,QAAUxnB,IAAS2kH,EAAcY,eAAgB,CAC7E,GAAqB,kBAATv+G,EACR,OACJ,GAAIyL,MAAMzL,GACN,OACJ,OAAOA,CACX,CACK,GAAIhH,IAAS2kH,EAAc5mH,QAAUiC,IAAS2kH,EAAc+0H,eAAgB,CAC7E,MAAM1yN,EAASsyN,EAAYtyO,GAC3B,GAAc,MAAVggB,EACA,OACJ,OAAOA,CACX,CACK,GAAIhnB,IAAS2kH,EAAcz6G,QAAUlK,IAAS2kH,EAAcsC,eAAgB,CAC7E,GAAqB,kBAATjgH,EACR,OACJ,OAAOA,CACX,CACK,CAED,MAAMggB,EAASs/F,EAAat/G,EAAKhH,GACjC,GAAc,MAAVgnB,EACA,OACJ,OAAOA,CACX,CACJ,EAwDA7uB,EAAQmuH,aAAeA,0JChJvB,MAAAnvG,EAAAhe,EAAA,OAEA8wD,EAAA9wD,EAAA,OAMahB,EAAAA,sBAAuB,EAAAgf,EAAAY,QAAuB,IAE9C5f,EAAAA,qBAAuBA,EAAAyhP,qBAAqBrhO,KAEzDpgB,EAAAA,kBAAA,SAAkC0yB,GAC9B,MAAMu/B,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAcmpL,eAAgB5oN,EAAQ2/B,SAC7E,OAAsB,OAAlBJ,EACOjyD,EAAAyhP,qBAAqB9hO,OAAOsyC,GAE5B,IAEf,gaCnBAviD,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,cCHA,IAOI0hP,EACAC,EARA5wN,EAAU9wB,EAAOD,QAAU,CAAC,EAUhC,SAAS4hP,IACL,MAAM,IAAI79O,MAAM,kCACpB,CACA,SAAS89O,IACL,MAAM,IAAI99O,MAAM,oCACpB,CAqBA,SAAS+9O,EAAWC,GAChB,GAAIL,IAAqB/4N,WAErB,OAAOA,WAAWo5N,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqB/4N,WAEhE,OADA+4N,EAAmB/4N,WACZA,WAAWo5N,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,EACjC,CAAE,MAAMtwO,GACJ,IAEI,OAAOiwO,EAAiB1qO,KAAK,KAAM+qO,EAAK,EAC5C,CAAE,MAAMtwO,GAEJ,OAAOiwO,EAAiB1qO,KAAK9W,KAAM6hP,EAAK,EAC5C,CACJ,CAGJ,EA5CC,WACG,IAEQL,EADsB,oBAAf/4N,WACYA,WAEAi5N,CAE3B,CAAE,MAAOnwO,GACLiwO,EAAmBE,CACvB,CACA,IAEQD,EADwB,oBAAjB94N,aACcA,aAEAg5N,CAE7B,CAAE,MAAOpwO,GACLkwO,EAAqBE,CACzB,CACH,CAnBA,GAwED,IAEIG,EAFA1pE,EAAQ,GACR2pE,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaD,IAGlBC,GAAW,EACPD,EAAajgP,OACbu2K,EAAQ0pE,EAAa3pO,OAAOigK,GAE5B4pE,GAAc,EAEd5pE,EAAMv2K,QACNqgP,IAER,CAEA,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAIv5N,EAAUo5N,EAAWK,GACzBF,GAAW,EAGX,IADA,IAAI5vO,EAAMimK,EAAMv2K,OACVsQ,GAAK,CAGP,IAFA2vO,EAAe1pE,EACfA,EAAQ,KACC4pE,EAAa7vO,GACd2vO,GACAA,EAAaE,GAAY5+C,MAGjC4+C,GAAc,EACd7vO,EAAMimK,EAAMv2K,MAChB,CACAigP,EAAe,KACfC,GAAW,EAnEf,SAAyBI,GACrB,GAAIV,IAAuB94N,aAEvB,OAAOA,aAAaw5N,GAGxB,IAAKV,IAAuBE,IAAwBF,IAAuB94N,aAEvE,OADA84N,EAAqB94N,aACdA,aAAaw5N,GAExB,IAEI,OAAOV,EAAmBU,EAC9B,CAAE,MAAO5wO,GACL,IAEI,OAAOkwO,EAAmB3qO,KAAK,KAAMqrO,EACzC,CAAE,MAAO5wO,GAGL,OAAOkwO,EAAmB3qO,KAAK9W,KAAMmiP,EACzC,CACJ,CAIJ,CA0CIC,CAAgB55N,EAlBhB,CAmBJ,CAgBA,SAAS65N,EAAKR,EAAKhlJ,GACf78F,KAAK6hP,IAAMA,EACX7hP,KAAK68F,MAAQA,CACjB,CAWA,SAASioB,IAAQ,CA5BjBj0F,EAAQomE,SAAW,SAAU4qJ,GACzB,IAAI1sO,EAAO,IAAIhL,MAAMvI,UAAUC,OAAS,GACxC,GAAID,UAAUC,OAAS,EACnB,IAAK,IAAImJ,EAAI,EAAGA,EAAIpJ,UAAUC,OAAQmJ,IAClCmK,EAAKnK,EAAI,GAAKpJ,UAAUoJ,GAGhCotK,EAAM9wK,KAAK,IAAI+6O,EAAKR,EAAK1sO,IACJ,IAAjBijK,EAAMv2K,QAAiBkgP,GACvBH,EAAWM,EAEnB,EAOAG,EAAKz3O,UAAUw4L,IAAM,WACjBpjM,KAAK6hP,IAAIxqK,MAAM,KAAMr3E,KAAK68F,MAC9B,EACAhsE,EAAQ69H,MAAQ,UAChB79H,EAAQs7L,SAAU,EAClBt7L,EAAQyxN,IAAM,CAAC,EACfzxN,EAAQ0xN,KAAO,GACf1xN,EAAQ47B,QAAU,GAClB57B,EAAQ2xN,SAAW,CAAC,EAIpB3xN,EAAQmnF,GAAK8M,EACbj0F,EAAQomF,YAAc6N,EACtBj0F,EAAQmmF,KAAO8N,EACfj0F,EAAQ+Q,IAAMkjF,EACdj0F,EAAQknF,eAAiB+M,EACzBj0F,EAAQonF,mBAAqB6M,EAC7Bj0F,EAAQinF,KAAOgN,EACfj0F,EAAQw5H,gBAAkBvlC,EAC1Bj0F,EAAQy5H,oBAAsBxlC,EAE9Bj0F,EAAQziB,UAAY,SAAUwD,GAAQ,MAAO,EAAG,EAEhDif,EAAQ4xN,QAAU,SAAU7wO,GACxB,MAAM,IAAI/N,MAAM,mCACpB,EAEAgtB,EAAQ6xN,IAAM,WAAc,MAAO,GAAI,EACvC7xN,EAAQ8xN,MAAQ,SAAUvmG,GACtB,MAAM,IAAIv4I,MAAM,iCACpB,EACAgtB,EAAQ+xN,MAAQ,WAAa,OAAO,CAAG,gCCtLvC5/O,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQgG,0BAAuB,EAC/B,MAAMb,EAASnE,EAAQ,OACjBoE,EAAapE,EAAQ,OACrBqE,EAAUrE,EAAQ,OAClB+gB,GAAS,EAAI1c,EAAQG,WAAW,0BACtC,MAAMQ,EACFmI,WAAAA,CAAYvH,GACR1G,KAAK0G,QAAUA,CACnB,CAmBA,qCAAMm8O,CAAgCn/O,EAAQq6E,EAAU+kK,EAAeryJ,EAAuBxO,EAAWvE,EAAKypB,EAAc3gG,GACxH,MAAMwnL,EAAsB80D,EAAgBryJ,EAAwB,EAC9D9hE,QAAe,EAAIxpB,EAAQke,iBAAgB,IAAM06D,EAAS+vG,0BAA0B,CACtF7rG,UAAWA,GACZ+rG,KACH,GAAc,MAAVr/J,EACA,OAAOA,EAAOuD,OAElB,GAAoB,MAAhBi1E,EACA,OAAO,KAEX,MAAMr5E,QAAaq5E,EAAalpB,gBAAgBv6E,EAAOe,WAAY+B,GAMnE,OALAqb,EAAO0F,MAAM,qHACuBuG,EAAK4vD,IAAI77E,OAAS,QACtDggB,EAAO0F,MAAM,qEAAsEuG,EAAKsxD,mBACxFtxD,EAAK4vD,IAAI3uE,SAAQlI,GAAM62E,EAAIp2E,KAAKT,KAEzBinB,EAAKsxD,kBAAkB0jK,EAClC,CACA/8O,mBAAAA,CAAoBpC,GAChB,MAAO,CACHA,EAAKynB,cACLznB,EAAKo6E,SAASv8D,SAAS9a,QAE/B,CACAi/F,aAAAA,CAAchiG,GACV,OAAOuB,EAAWN,KAAKoB,8BAA8BhG,KAAK+F,oBAAoBpC,GAClF,CACA,iBAAMyD,CAAY1D,EAAQ4C,EAAQ6Y,EAAyE4hE,EAAYv6E,GAAS,IAA5F,GAAEK,EAAE,SAAEk3E,EAAQ,eAAEmpB,EAAc,aAAEC,EAAY,sBAAE1W,GAAuBtxE,EACrG,MAAM4jO,EAAiB/iP,KAAK+F,oBAAoB,IACzCg7E,EACHhD,WACA3yD,cAAeqlE,IAEbuyJ,EAAiB99O,EAAWN,KAAKoB,8BAA8B+8O,GACrE,IAAKz8O,EAAS+9D,YAAY2+K,GACtB,MAAM,IAAIn/O,MAAM,uBACpB,MAAMo/O,QAAoBllK,EAASC,WAAWiU,eAAeprF,EAAGmwD,KAAMnwD,EAAGo7E,WACzEpgE,EAAO0F,MAAM,wCAAyC07N,GACtD,MAAMvlK,EAAM,GAGZ,GAFsB,MAAlBwpB,IACAA,QAAuBlnG,KAAK6iP,gCAAgCn/O,EAAQq6E,EAAUl3E,EAAGm4E,OAAQyR,EAAuB5pF,EAAGo7E,UAAWvE,EAAKypB,EAAc3gG,IAC/H,MAAlB0gG,EACA,MAAM,IAAIrjG,MAAM,kCAIpB,OAHAk/O,EAAez7O,QAAQ4/F,EAAel3C,aACtC+yL,EAAez7O,KAAK27O,EAAY5wJ,OAAOxwF,UAAWohP,EAAY5wJ,OAAO3pF,IAAIvD,EAAQmpJ,kBAAkB72F,QACnGsrL,EAAez7O,KAAK27O,EAAY9yN,KACzB,CAAEjpB,YAAaw2E,EAAKv2E,QAAS47O,EACxC,CACAjuH,kBAAAA,CAAmBnmG,GACf,OAAO,EAAIxpB,EAAQspJ,kBAAkB9/H,GAAQlqB,SAAS,MAC1D,EAEJ3E,EAAQgG,qBAAuBA,EAC/BA,EAAqBY,QAAU,GAC/BZ,EAAqB6B,KAAO1C,EAAO2C,cAAc86F,WACjD58F,EAAqB2B,IAAM,CAAEK,GAAI,iCCpFjC9E,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ22I,UAiBR,SAAmBysG,EAASC,GAExB,GAAIA,IAAeD,EACf,OAAO,EAGX,GAAY,IADAA,EAAQ3uO,QAAQ4uO,GACb,CAGX,GAA0C,MAAtCA,EAAWA,EAAWthP,OAAS,GAC/B,OAAO,EAKX,GAAIqhP,EAAQr6O,WAAWs6O,IAA8C,MAA/BD,EAAQC,EAAWthP,QACrD,OAAO,CAEf,CACA,OAAO,CACX,s5BCVO,MAAMuhP,EACXv8O,GAEO,YAAaA,6CC9BhB,SAAiBlD,GACrB,OAAOA,EAAKsF,QACV,CAAC+I,EAAKud,IAASvd,EAAMud,EAAK9qB,SAAS,IAAI4mB,SAAS,EAAG,MACnD,KAEJ,SAEM,SAAiB1nB,GACM,IAAvBA,EAAK4Q,QAAQ,QACf5Q,EAAOA,EAAKuH,OAAO,IAEjBvH,EAAK9B,OAAS,IAAM,IACtB8B,EAAO,IAAMA,GAGf,IAAIqG,EAAMrG,EAAK6uE,MAAM,SAErB,OAAY,OAARxoE,EACKq5O,EAAAA,OAAO7+O,KAAK,IAGd6+O,EAAAA,OAAO7+O,KAAKwF,EAAItB,KAAK6mB,GAASpkB,SAASokB,EAAM,MACtD,ICtBM,SAAU+zN,EAAOzmJ,GAKrB,OAHI,IAAI/kB,YAAY,SAGLr4D,OAAOo9E,EACxB,CAEM,SAAU0mJ,EAAOtjP,GAIrB,OAFI,IAAIw3E,aAEOt3D,OAAOlgB,EACxB,yDCbM,SAAUujP,EAAO7/O,GACrB,OAAO8/O,IAAAA,OAAY9/O,EACrB,qDAEM,SAAiBA,GACrB,OAAO8/O,IAAAA,OAAY9/O,EACrB,ICNM,SAAUwc,EAAOxc,GACrB,OAAOA,EAAKc,SAAS,SACvB,CAEM,SAAUgb,EAAO9b,GACrB,OAAO0/O,EAAAA,OAAO7+O,KAAKb,EAAM,SAC3B,wHCEM,SAAU+/O,EAAeC,GAC7B,MAAMthG,EAAS,IAAItgI,IAOnB,OANI4hO,EAAIthG,QACNshG,EAAIthG,OAAOtzI,SAASwC,UAClB,IAAI9Q,EAAe,QAATmpI,EAAAr4H,EAAE9Q,WAAO,IAAAmpI,EAAAA,EAAAr4H,EAAEK,KACrBywI,EAAO/rI,IAAI/E,EAAEm9C,KAAMjuD,EAAI,IAGpB4hJ,CACT,UAGgBuhG,EACdC,GACc,QAAA55O,EAAArI,UAAAC,OAAXsT,EAAW,IAAAhL,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAX+K,EAAW/K,EAAA,GAAAxI,UAAAwI,GAEd,GAAIy5O,EAAM1uO,KAAKtT,QAAUsT,EAAKtT,OAC5B,MAAM,IAAIgC,MAAM,2BAElB,MAAMwmB,EAA6B,GACnC,IAAI40C,EAAM,EAMV,OALA4kL,EAAM1uO,KAAKpG,SAAS+0O,IAClBz5N,EAAGy5N,EAAMlyO,MAAQuD,EAAK8pD,GACtBA,GAAO,CAAC,IAGH50C,CACT,UAGgB05N,EACdC,GACuB,IAAvBn5N,EAAAjpB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAqB,GAErBoiP,EAAWj1O,SAASgc,IAClB,GAAI,aAAcA,EAChBg5N,EAAiBh5N,EAAIF,SAAUA,EAASE,EAAInZ,YAE5C,QAA2B9P,IAAvB+oB,EAASE,EAAInZ,MACf,MAAM,IAAI/N,MAAM,sBAAsBknB,EAAInZ,qBAE7C,GAEL,CAGM,SAAUqyO,EAAiBv9O,GAC/B,OAAOA,aAAmB5B,EAAAA,UAAY4B,EAAU,IAAI5B,EAAAA,UAAU4B,EAChE,CC9CA,MAAMw9O,UAAoBjlN,UACxBhxB,WAAAA,CAAYk2O,EAASC,GACnB,IAAIvjJ,EACJ,MAAM,QACJ5yE,KACGo2N,GACDF,GACE,KACJxyG,GACEwyG,EAEJ/9O,MAD4B,IAAhBurI,EAAK9vI,OAAeosB,EAAU,YAAc0jH,EAAKz0E,KAAK,KAAO,OAASjvC,GAElFjuB,KAAKkD,WAAQ,EACblD,KAAKgK,SAAM,EACXhK,KAAK2H,UAAO,EACZ3H,KAAKskP,gBAAa,EAClBtkP,KAAK2xI,UAAO,EACZ3xI,KAAKukP,YAAS,EACdvkP,KAAKokP,cAAW,EAChBphP,OAAO0nF,OAAO1qF,KAAMqkP,GACpBrkP,KAAK4R,KAAO5R,KAAKiO,YAAY2D,KAE7B5R,KAAKokP,SAAW,KACd,IAAII,EAEJ,OAA6B,OAArBA,EAAU3jJ,GAAkB2jJ,EAAU3jJ,EAAS,CAACsjJ,KAAYC,IAAW,CAErF,EAeA,SAAS7vG,EAASvjI,GAChB,MAAoB,kBAANA,GAAuB,MAALA,CAClC,CAiBA,SAASyzO,EAAMvhP,GACb,MAAwB,kBAAVA,EAAqByqB,KAAKC,UAAU1qB,GAAS,GAAKA,CAClE,CAiBA,SAASwhP,EAAU/1N,EAAQi8D,EAASlrE,EAAQxc,GAC1C,IAAe,IAAXyrB,EACF,QACoB,IAAXA,EACTA,EAAS,CAAC,EACiB,kBAAXA,IAChBA,EAAS,CACPV,QAASU,IAIb,MAAM,KACJgjH,EAAI,OACJ4yG,GACE35J,GACE,KACJjjF,GACE+X,GACE,WACJ4kO,EAAU,QACVr2N,EAAU,6BAA+BtmB,EAAO,KAAO28O,EAAa,qBAAuBA,EAAa,IAAM,IAAM,oBAAsBG,EAAMvhP,GAAS,KACvJyrB,EACJ,MAAO,CACLzrB,QACAyE,OACA28O,aACAt6O,IAAK2nI,EAAKA,EAAK9vI,OAAS,GACxB8vI,OACA4yG,YACG51N,EACHV,UAEJ,CAKA,SAAU02N,EAAWh2N,EAAQi8D,EAASlrE,EAAQxc,GAnF9C,IAAoB8N,EACXujI,EADWvjI,EAoFF2d,IAnFoC,oBAAvB3d,EAAEsxB,OAAO+nD,YAoFpC17D,EAAS,CAACA,IAGZ,IAAK,MAAM9d,KAAK8d,EAAQ,CACtB,MAAMw1N,EAAUO,EAAU7zO,EAAG+5E,EAASlrE,EAAQxc,GAE1CihP,UACIA,EAEZ,CACA,CAMA,SAAU/gD,EAAIlgM,EAAOwc,EAAQkC,QACX,IAAZA,IACFA,EAAU,CAAC,GAGb,MAAM,KACJ+vH,EAAO,GAAE,OACT4yG,EAAS,CAACrhP,GAAM,OAChB0hP,GAAS,EAAK,KACdj2M,GAAO,GACL/sB,EACEqwB,EAAM,CACV0/F,OACA4yG,UAGF,GAAIK,IACF1hP,EAAQwc,EAAOmlO,QAAQ3hP,EAAO+uC,GAE1BtD,GAAwB,SAAhBjvB,EAAO/X,MAAmB4sI,EAAS70H,EAAO8M,SAAW+nH,EAASrxI,KAAWiH,MAAMi3B,QAAQl+B,IACjG,IAAK,MAAM8G,KAAO9G,OACWpB,IAAvB4d,EAAO8M,OAAOxiB,WACT9G,EAAM8G,GAMrB,IAAI86O,GAAQ,EAEZ,IAAK,MAAMX,KAAWzkO,EAAOqlO,UAAU7hP,EAAO+uC,GAC5C6yM,GAAQ,OACF,CAACX,OAASriP,GAGlB,IAAK,IAAKwP,EAAG2C,EAAGvD,KAAMgP,EAAOqwI,QAAQ7sJ,EAAO+uC,GAAM,CAChD,MAAMgtE,EAAKmkF,EAAInvL,EAAGvD,EAAG,CACnBihI,UAAY7vI,IAANwP,EAAkBqgI,EAAO,IAAIA,EAAMrgI,GACzCizO,YAAcziP,IAANwP,EAAkBizO,EAAS,IAAIA,EAAQtwO,GAC/C2wO,SACAj2M,SAGF,IAAK,MAAMpyB,KAAK0iG,EACV1iG,EAAE,IACJuoO,GAAQ,OACF,CAACvoO,EAAE,QAAIza,IACJ8iP,IACT3wO,EAAIsI,EAAE,QAEIza,IAANwP,EACFpO,EAAQ+Q,EACC/Q,aAAiB6e,IAC1B7e,EAAMoT,IAAIhF,EAAG2C,GACJ/Q,aAAiB0nB,IAC1B1nB,EAAMX,IAAI0R,GACDsgI,EAASrxI,KAClBA,EAAMoO,GAAK2C,GAIrB,CAEE,GAAI6wO,EACF,IAAK,MAAMX,KAAWzkO,EAAOslO,QAAQ9hP,EAAO+uC,GAC1C6yM,GAAQ,OACF,CAACX,OAASriP,GAIhBgjP,SACI,MAAChjP,EAAWoB,GAEtB,CAQA,MAAM+hP,EACJh3O,WAAAA,CAAY08E,GACV3qF,KAAK4lB,UAAO,EACZ5lB,KAAK2H,UAAO,EACZ3H,KAAKwsB,YAAS,EACdxsB,KAAK6kP,aAAU,EACf7kP,KAAK+kP,eAAY,EACjB/kP,KAAKglP,aAAU,EACfhlP,KAAK+vJ,aAAU,EACf,MAAM,KACJpoJ,EAAI,OACJ6kB,EAAM,UACNu4N,EAAS,QACTC,EAAO,QACPH,EAAU3hP,GAASA,EAAK,QACxB6sJ,EAAU,YAAc,GACtBplE,EACJ3qF,KAAK2H,KAAOA,EACZ3H,KAAKwsB,OAASA,EACdxsB,KAAK+vJ,QAAUA,EACf/vJ,KAAK6kP,QAAUA,EAGb7kP,KAAK+kP,UADHA,EACe,CAAC7hP,EAAO0nF,IAEhB+5J,EADQI,EAAU7hP,EAAO0nF,GACNA,EAAS5qF,KAAMkD,GAG1B,IAAM,GAIvBlD,KAAKglP,QADHA,EACa,CAAC9hP,EAAO0nF,IAEd+5J,EADQK,EAAQ9hP,EAAO0nF,GACJA,EAAS5qF,KAAMkD,GAG5B,IAAM,EAE3B,CAME28B,MAAAA,CAAO38B,GACL,OAkDJ,SAAgBA,EAAOwc,GACrB,MAAMiP,EAAS0lH,EAASnxI,EAAOwc,GAE/B,GAAIiP,EAAO,GACT,MAAMA,EAAO,EAEjB,CAxDWkR,CAAO38B,EAAOlD,KACzB,CAME0J,MAAAA,CAAOxG,GACL,OAAOwG,EAAOxG,EAAOlD,KACzB,CAME2jD,EAAAA,CAAGzgD,GACD,OAAOygD,EAAGzgD,EAAOlD,KACrB,CAOE2uC,IAAAA,CAAKzrC,GACH,OAmDJ,SAAcA,EAAOwc,GACnB,MAAMiP,EAAS0lH,EAASnxI,EAAOwc,EAAQ,CACrCklO,QAAQ,EACRj2M,MAAM,IAGR,GAAIhgB,EAAO,GACT,MAAMA,EAAO,GAEb,OAAOA,EAAO,EAElB,CA9DWggB,CAAKzrC,EAAOlD,KACvB,CAWEq0I,QAAAA,CAASnxI,EAAO0e,GAKd,YAJgB,IAAZA,IACFA,EAAU,CAAC,GAGNyyH,EAASnxI,EAAOlD,KAAM4hB,EACjC,EAkBA,SAASlY,EAAOxG,EAAOwc,GACrB,MAAMiP,EAAS0lH,EAASnxI,EAAOwc,EAAQ,CACrCklO,QAAQ,IAGV,GAAIj2N,EAAO,GACT,MAAMA,EAAO,GAEb,OAAOA,EAAO,EAElB,CAqBA,SAASg1B,EAAGzgD,EAAOwc,GAEjB,OADe20H,EAASnxI,EAAOwc,GAChB,EACjB,CAMA,SAAS20H,EAASnxI,EAAOwc,EAAQkC,QACf,IAAZA,IACFA,EAAU,CAAC,GAGb,MAAMsjO,EAAS9hD,EAAIlgM,EAAOwc,EAAQkC,GAC5BozM,EA5SR,SAAuB/0N,GACrB,MAAM,KACJm6B,EAAI,MACJl3B,GACEjD,EAAMw3B,OACV,OAAO2C,OAAOt4B,EAAYoB,CAC5B,CAsSgBiiP,CAAcD,GAE5B,GAAIlwB,EAAM,GAAI,CAQZ,MAAO,CAPO,IAAIkvB,EAAYlvB,EAAM,IAAI,YACtC,IAAK,MAAMz4M,KAAK2oO,EACV3oO,EAAE,WACEA,EAAE,GAGlB,SACmBza,EACnB,CAEI,MAAO,MAACA,EADEkzN,EAAM,GAGpB,CAgBA,SAASp2M,EAAOhN,EAAMmzO,GACpB,OAAO,IAAIE,EAAO,CAChBt9O,KAAMiK,EACN4a,OAAQ,KACRu4N,aAEJ,CAsLA,SAASloJ,EAAMuoJ,GACb,OAAO,IAAIH,EAAO,CAChBt9O,KAAM,QACN6kB,OAAQ44N,EAER,QAACr1F,CAAQ7sJ,GACP,GAAIkiP,GAAWj7O,MAAMi3B,QAAQl+B,GAC3B,IAAK,MAAO8H,EAAGiJ,KAAM/Q,EAAM6sJ,eACnB,CAAC/kJ,EAAGiJ,EAAGmxO,EAGvB,EAEIP,QAAQ3hP,GACCiH,MAAMi3B,QAAQl+B,GAASA,EAAMwK,QAAUxK,EAGhD6hP,UAAU7hP,GACDiH,MAAMi3B,QAAQl+B,IAAU,0CAA4CuhP,EAAMvhP,IAIvF,CAyGA,SAASmiP,EAAQnuF,GACf,MAAM/vC,EAAcs9H,EAAMvtF,GACpB36I,SAAW26I,EACjB,OAAO,IAAI+tF,EAAO,CAChBt9O,KAAM,UACN6kB,OAAc,WAANjQ,GAAwB,WAANA,GAAwB,YAANA,EAAkB26I,EAAW,KAEzE6tF,UAAU7hP,GACDA,IAAUg0J,GAAY,yBAA2B/vC,EAAc,oBAAsBs9H,EAAMvhP,IAIxG,CAoCA,SAASoiP,EAAS5lO,GAChB,OAAO,IAAIulO,EAAO,IAAKvlO,EACrBqlO,UAAWA,CAAC7hP,EAAO+uC,IAAkB,OAAV/uC,GAAkBwc,EAAOqlO,UAAU7hP,EAAO+uC,GACrE+yM,QAASA,CAAC9hP,EAAO+uC,IAAkB,OAAV/uC,GAAkBwc,EAAOslO,QAAQ9hP,EAAO+uC,IAErE,CAKA,SAAS/R,IACP,OAAOthB,EAAO,UAAU1b,GACE,kBAAVA,IAAuBkX,MAAMlX,IAAU,oCAAsCuhP,EAAMvhP,IAErG,CAsCA,SAASqiP,EAAS7lO,GAChB,OAAO,IAAIulO,EAAO,IAAKvlO,EACrBqlO,UAAWA,CAAC7hP,EAAO+uC,SAAkBnwC,IAAVoB,GAAuBwc,EAAOqlO,UAAU7hP,EAAO+uC,GAC1E+yM,QAASA,CAAC9hP,EAAO+uC,SAAkBnwC,IAAVoB,GAAuBwc,EAAOslO,QAAQ9hP,EAAO+uC,IAE1E,CAoEA,SAAStR,IACP,OAAO/hB,EAAO,UAAU1b,GACE,kBAAVA,GAAsB,oCAAsCuhP,EAAMvhP,IAEpF,CAmCA,SAASyE,EAAK6kB,GACZ,MAAMpN,EAAOpc,OAAOoc,KAAKoN,GACzB,OAAO,IAAIy4N,EAAO,CAChBt9O,KAAM,OACN6kB,SAEA,QAACujI,CAAQ7sJ,GACP,GAAIqxI,EAASrxI,GACX,IAAK,MAAMoO,KAAK8N,OACR,CAAC9N,EAAGpO,EAAMoO,GAAIkb,EAAOlb,GAGrC,EAEIyzO,UAAU7hP,GACDqxI,EAASrxI,IAAU,qCAAuCuhP,EAAMvhP,IAI7E,CAKA,SAASsiP,EAAMC,GACb,MAAMt+H,EAAcs+H,EAAQ/8O,KAAIgI,GAAKA,EAAE/I,OAAMu1D,KAAK,OAClD,OAAO,IAAI+nL,EAAO,CAChBt9O,KAAM,QACN6kB,OAAQ,KAERq4N,QAAOA,CAAC3hP,EAAO+uC,KACMwzM,EAAQ3qL,MAAKpqD,IAC9B,MAAOa,GAAKb,EAAE2jI,SAASnxI,EAAO,CAC5B0hP,QAAQ,IAEV,OAAQrzO,CAAC,KACLqiN,KACYixB,QAAQ3hP,EAAO+uC,GAGnC8yM,SAAAA,CAAU7hP,EAAO+uC,GACf,MAAMmyM,EAAW,GAEjB,IAAK,MAAMl4J,KAAKu5J,EAAS,CACvB,SAAUP,GAAU9hD,EAAIlgM,EAAOgpF,EAAGj6C,IAC3BkT,GAAS+/L,EAEhB,IAAK//L,EAAM,GACT,MAAO,GAEP,IAAK,MAAOg/L,KAAYe,EAClBf,GACFC,EAAS98O,KAAK68O,EAI5B,CAEM,MAAO,CAAC,6CAA+Ch9H,EAAc,oBAAsBs9H,EAAMvhP,MAAWkhP,EAClH,GAGA,CAKA,SAASxwB,IACP,OAAOh1M,EAAO,WAAW,KAAM,GACjC,CCt5BO,eAAe8mO,EACpBxkP,EACAykP,EACA5kK,GAQA,GAAI4kK,EAAW9jP,QAhC2B,GAiCxC,aAAa+jP,EACX1kP,EACAykP,EACA5kK,GAEG,CACL,MAAM8kK,EP3FM,SAAUhpJ,EAAY3yE,GACpC,OAAO/f,MAAMktE,MAAM,EAAG,IAAIltE,MAAMf,KAAKwG,KAAKitF,EAAMh7F,OAASqoB,KAAQxhB,KAC/D,CAAC+2B,EAAGmB,IAAUi8D,EAAMnvF,MAAMkzB,EAAQ1W,GAAO0W,EAAQ,GAAK1W,IAE1D,COuFoBitD,CAAOwuK,EAvCiB,IAmDxC,aAXsBthP,QAAQoE,IAO5Bo9O,EAAQn9O,KAAKo9O,GACXF,EAAkC1kP,EAAY4kP,EAAO/kK,OAG1CtpB,MAChB,CACH,CAEA,eAAemuL,EACb1kP,EACAykP,EACAI,GAQA,MAAMhlK,EAAa,OAAAglK,QAAA,IAAAA,EAAAA,EAAsB7kP,EAAW6/E,YAC5C79E,MAAO8iP,EAAY,QAAEp7J,SACrB1pF,EAAW+kP,kCAAkCN,EAAY5kK,GAYjE,OAXiBilK,EAAat9O,KAAI,CAAC8pB,EAASysC,IAC1B,OAAZzsC,EACK,KAEF,CACL7tB,UAAWghP,EAAW1mL,GACtBzsC,UACAo4D,YAKN,CAGO,eAAe6oF,GACpBvyK,EACAmB,EACAF,EACA4+E,EACAmlK,SAEI/jP,GAAWA,EAAQN,OAAS,GAC9BQ,EAAY6B,QAAQ/B,GAItB,MAAM8rB,EAAU5rB,EAAY8jP,WACtBC,EAAWn4N,EAAQ+hC,YAGnBq2L,EADkBhkP,EAAYikP,WAAWF,GACJ3hP,SAAS,UAC9C4R,EAAc,CAClB8d,SAAU,SACV4sD,WAAY,OAAAA,QAAU,IAAVA,EAAAA,EAAc7/E,EAAW6/E,YAGvC,GAAImlK,EAAiB,CACnB,MAAMnlO,GACJ5W,MAAMi3B,QAAQ8kN,GAAmBA,EAAkBj4N,EAAQs4N,iBAC3D79O,KAAKsB,GAAQA,EAAI2gB,aAEnBtU,EAAiB,SAAI,CACnB8d,SAAU,SACVpT,YAEH,CAEG5e,IACFkU,EAAOmwO,WAAY,GAGrB,MAAMrxO,EAAO,CAACkxO,EAAoBhwO,GAG5Bub,EAAMloB,QADYxI,EAAW44N,YAAY,sBAAuB3kN,GACxCsxO,IAC9B,GAAI,UAAW70N,EAAK,CAClB,IAAI80N,EACJ,GAAI,SAAU90N,EAAI/O,QAChB6jO,EAAuB,QAAhB98G,EAAAh4G,EAAI/O,MAAMlf,YAAM,IAAAimI,OAAA,EAAAA,EAAA88G,KACnBA,GAAQv8O,MAAMi3B,QAAQslN,IAAO,CAC/B,MAAMC,EAAc,SACdC,EAAWD,EAAcD,EAAKxpL,KAAKypL,GACzC/9N,QAAQ/F,MAAM+O,EAAI/O,MAAMoL,QAAS24N,EAClC,CAEH,MAAM,IAAIC,EAAAA,qBACR,mCAAqCj1N,EAAI/O,MAAMoL,QAC/Cy4N,EAEH,CACD,OAAO90N,EAAIjD,MACb,CAGA,SAASm4N,GAAoBt6N,GAC3B,ODuyBF,SAAgB9M,EAAQ89C,EAAWqnL,GACjC,OAAO,IAAII,EAAO,IAAKvlO,EACrBmlO,QAASA,CAAC3hP,EAAO+uC,IACR0R,EAAGzgD,EAAOs6D,GAAa99C,EAAOmlO,QAAQA,EAAQ3hP,EAAO+uC,GAAMA,GAAOvyB,EAAOmlO,QAAQ3hP,EAAO+uC,IAGrG,CC7yBS2yM,CAAOmC,GAAgBv6N,GAASw6N,IAAmB9jP,GACpD,UAAWA,EACNA,EAEA,IACFA,EACHyrB,OAAQjlB,EAAOxG,EAAMyrB,OAAQnC,KAIrC,CAGA,MAAMw6N,GAAmBD,GAAgBnzB,KAGzC,SAASmzB,GAAsBp4N,GAC7B,OAAO62N,EAAM,CACX79O,EAAK,CACH2qD,QAAS+yL,EAAQ,OACjBtwO,GAAI4rB,IACJhS,WAEFhnB,EAAK,CACH2qD,QAAS+yL,EAAQ,OACjBtwO,GAAI4rB,IACJ9d,MAAOlb,EAAK,CACV+mD,KAAMklK,IACN3lM,QAAS0S,IACTh9B,KAAM4hP,EDmWL3mO,EAAO,OAAO,KAAM,UC/V7B,CAeA,MAAM6nO,IAZiCvjP,GAarCyE,EAAK,CACHiiB,IAAK07N,EAASE,EAAM,CAAC79O,EAAK,IAAKg5B,OAC/B+lN,KAAMpB,EAASzoJ,EAAMl8D,MACrB9V,SAAU06N,EACRD,EACEzoJ,EACEyoJ,EACE39O,EAAK,CACHs/O,WD8WLroO,EAAO,WAAW1b,GACC,mBAAVA,IC9WJ3B,MAAOo/B,IACPqa,SAAU9a,IACVv8B,KAAMk5F,EAAMl8D,KACZumN,UAAW3B,EAASrlN,WAM9BinN,cAAe5B,EAASrlN,OA9BnB4mN,GACLn/O,EAAK,CACHijF,QAASjjF,EAAK,CACZ65E,KAAMthD,MAERh9B,aANN,IAAuCA,2CAlNhC,eACLlB,EACA6oB,EACAlnB,EACAqvB,GAEAhxB,EAAYiiP,EAAiBjiP,GACxBgxB,IACHA,EAAWE,MAGb,MAAMrsB,EAAK,IAAIvE,EAAAA,YASf,GARAuE,EAAGtE,IACD,IAAI+d,EAAAA,uBAAuB,CACzBte,YACAod,KAAc,OAARyL,QAAA,IAAAA,EAAAA,EAAY,GAClBlnB,eAI4B7B,IAA5BkxB,EAASi7B,eACX,MAAM,IAAIpqD,MACR,uEAIJ,aAAamvB,EAASi7B,eAAepnD,EAAI,GAC3C,sBAIO,eACL3F,EACAykP,EACA5kK,GASA,aALsB2kK,EACpBxkP,EACAykP,EACA5kK,IAEar4E,KAAKimB,GACXA,EACH,CAAEhqB,UAAWgqB,EAAOhqB,UAAW6tB,QAAS7D,EAAO6D,SAC/C,MAER,iEClCa40N,GAQXn5O,WAAAA,CACW/M,EACAwoG,EACAzvE,GAFA,KAAU/4B,WAAVA,EACA,KAAMwoG,OAANA,EACA,KAAIzvE,KAAJA,EAET,KAAKt1B,UAAkB,OAAN+kG,QAAA,IAAAA,OAAA,EAAAA,EAAQ/kG,UAG3B,qBAAO8/M,GACL,MAAO,CACL4iC,oBAAqB,YACrBtmK,WAAY,aAYhB,YAAOumK,CAAM/6N,EAAc0N,GAEvB,MAAM,IAAIp2B,MAAM,+CAkBpB,UAAOy+O,GAEH,MAAM,IAAIz+O,MAAM,6CAuBpB,oBAAMoqD,CACJpnD,EACA1E,EACA83B,eAMA,QAJan4B,IAATm4B,IACFA,EAAO,KAAKA,MAGVmpN,EAAuBv8O,GACrB1E,GACF0E,EAAG3C,KAAK/B,QAQV,GALA0E,EAAG4jB,SAAsB,QAAXm/G,EAAA/iI,EAAG4jB,gBAAQ,IAAAm/G,EAAAA,EAAI,KAAKlgC,OAAO/kG,UACzCkC,EAAG0gP,uBACK,KAAKrmP,WAAWsmP,mBAAmBvtN,EAAKotN,sBAC9CplK,UAEE9/E,EACF,IAAK,MAAMuB,KAAUvB,EACnB0E,EAAG4gP,YAAY/jP,GAKrB,MAAMmtF,GADNhqF,QAAW,KAAK6iG,OAAO+uE,gBAAgB5xK,IACtBmpD,YAEjB,IACE,aAAa03L,GAA6B,KAAKxmP,WAAY2vF,EAAO52D,EACnE,CAAC,MAAOrQ,GAGP,GAAIA,aAAe+9N,GAAc,CAK/B,MAAMC,EAAQpE,EACZJ,EAAuBv8O,IACH,QAAhBm5J,EAAAn5J,EAAGm0N,kBAAa,IAAAh7D,OAAA,EAAAA,EAAA,KAAM,IAAI1vI,WACd,QAAZqtB,EAAA92C,EAAG5C,iBAAS,IAAA05C,EAAAA,EAAI,IAAIrtB,YAEpBu3N,QAAiB,KAAK3mP,WAAWoxF,eAAes1J,EAAO,CAC3D7mK,WAAY,cAEd,GAAK8mK,EAEE,CACL,MAAMnB,EAAoB,QAAbtmF,EAAAynF,EAASjjO,YAAI,IAAAw7I,OAAA,EAAAA,EAAE0nF,YAC5B,MAAOpB,EAAa,IAAIG,EAAAA,qBAAqBj9N,EAAIqE,QAASy4N,GAA5C98N,CACf,CAJC,MAAMA,CAKT,CACC,MAAMA,CAET,EAUH,aAAMm+N,CACJC,EAIA/tN,kBAEan4B,IAATm4B,IACFA,EAAO,KAAKA,MAEd,MAAMstN,SACE,KAAKrmP,WAAWsmP,mBAAmBvtN,EAAKotN,sBAC9CplK,UAEF,IAAIvE,EAAMsqK,EAAct/O,KAAKmI,YAC3B,GAAIuyO,EAAuBvyO,EAAEhK,IAAK,CAChC,IAAIA,EAA2BgK,EAAEhK,GAIjC,OAHIgK,EAAE1O,SACJ0E,EAAG3C,KAAK2M,EAAE1O,SAEL0E,CACR,CAAM,CACL,IAAIA,EAAkBgK,EAAEhK,GACpB1E,EAAmB,QAATynI,EAAA/4H,EAAE1O,eAAO,IAAAynI,EAAAA,EAAI,GAQ3B,OANA/iI,EAAG4jB,SAAsB,QAAXu1I,EAAAn5J,EAAG4jB,gBAAQ,IAAAu1I,EAAAA,EAAI,KAAKt2D,OAAO/kG,UACzCkC,EAAG0gP,gBAAkBA,EAErBplP,EAAQ4M,SAASk5O,IACfphP,EAAG4gP,YAAYQ,EAAG,IAEbphP,CACR,KAGH,MAAMqhP,QAAkB,KAAKx+I,OAAOy+I,oBAAoBzqK,GAElD0qK,EAA+B,GAErC,IAAK,IAAI92O,EAAI,EAAGA,EAAIosE,EAAI77E,OAAQyP,GAAK,EAAG,CACtC,MAAMzK,EAAKqhP,EAAU52O,GACfu/E,EAAQhqF,EAAGmpD,YAEjB,IACEo4L,EAAK9gP,WACGogP,GAA6B,KAAKxmP,WAAY2vF,EAAO52D,GAE9D,CAAC,MAAOrQ,GAGP,GAAIA,aAAe+9N,GAAc,CAK/B,MAAMC,EAAQpE,EACZJ,EAAuBv8O,IACH,QAAhB+iI,EAAA/iI,EAAGm0N,kBAAa,IAAApxF,OAAA,EAAAA,EAAA,KAAM,IAAIt5G,WACd,QAAZ0vI,EAAAn5J,EAAG5C,iBAAS,IAAA+7J,EAAAA,EAAI,IAAI1vI,YAEpBu3N,QAAiB,KAAK3mP,WAAWoxF,eAAes1J,EAAO,CAC3D7mK,WAAY,cAEd,GAAK8mK,EAEE,CACL,MAAMnB,EAAoB,QAAb/oM,EAAAkqM,EAASjjO,YAAI,IAAA+4B,OAAA,EAAAA,EAAEmqM,YAC5B,MAAOpB,EAAa,IAAIG,EAAAA,qBAAqBj9N,EAAIqE,QAASy4N,GAA5C98N,CACf,CAJC,MAAMA,CAKT,CACC,MAAMA,CAET,CACF,CAED,OAAOw+N,EAaT,cAAMC,CACJxhP,EACA1E,EACA4+E,EACAmlK,GAEA,IAMIv3N,EANA44N,SACI,KAAKrmP,WAAWsmP,mBACV,OAAVzmK,QAAA,IAAAA,EAAAA,EAAc,KAAK7/E,WAAW6/E,aAEhCkB,UA4BF,GAzBImhK,EAAuBv8O,IACrB1E,IACF0E,EAAG3C,KAAK/B,GACR0E,QAAW,KAAK6iG,OAAO+uE,gBAAgB5xK,IAKzC8nB,QAAe,KAAKztB,WAAWuyK,oBAAoB5sK,EAAI,CAAEk6E,iBAEzDl6E,EAAG4jB,SAAW5jB,EAAG4jB,UAAY,KAAKi/E,OAAO/kG,UACzCkC,EAAG0gP,gBAAkBA,EAEjBplP,IACF0E,QAAW,KAAK6iG,OAAO+uE,gBAAgB5xK,IAEzC8nB,QAAe8kJ,GACb,KAAKvyK,WACL2F,EACA1E,EACA4+E,EACAmlK,IAIAv3N,EAAOzrB,MAAM0mB,IACf,MAAM,IAAI0+N,GAAc35N,EAAOzrB,OAGjC,OAAOyrB,EAAOzrB,OAIlB,MAAMolP,WAAsBzkP,MAC1BoK,WAAAA,CACWs6O,EACTt6N,GAEA,MAAMA,GAHG,KAAkBs6N,mBAAlBA,GA4Bb,eAAeb,GACbxmP,EACA4uL,EACAluK,GAEA,MAAM4mO,EAAc5mO,GAAW,CAC7B6mO,cAAe7mO,EAAQ6mO,cACvBpB,oBAAqBzlO,EAAQylO,qBAAuBzlO,EAAQm/D,YAGxD98E,QAAkB/C,EAAWizF,mBACjC27F,EACA04D,GAGIt6N,SACEhtB,EAAWqhH,mBACft+G,EACA2d,GAAWA,EAAQm/D,aAErB79E,MAEF,GAAIgrB,EAAOtE,IACT,MAAM,IAAI+9N,GACR,mBAAmB1jP,aAAqB0pB,KAAKC,UAAUM,OAI3D,OAAOjqB,CACT,CAEA,MAAM0jP,WAAqB9jP,MACzBoK,WAAAA,CAAYggB,GACV,MAAMA,IAOJ,SAAUy6N,GAAY11N,GAC1B21N,GAAY31N,CACd,UAKgBE,KACd,OAAkB,OAAdy1N,GACKvB,GAAeE,QAEjBqB,EACT,CAGA,IAAIA,GAA6B,KC9ZjC,MAAMC,GAAsB,IAAIh+N,IAAI,CAAC,0BAA2B,eAE1Di+N,GAAY,IAAI9mO,IAShB,SAAU+mO,GAAM9+O,GACpB,YAA8BlI,IAAvB+mP,GAAUj9O,IAAI5B,EACvB,0CATM,SAAcA,GAClB,IAAK4+O,GAAoBt8N,IAAItiB,GAC3B,MAAM,IAAInG,MAAM,mBAElBglP,GAAUvyO,IAAItM,GAAK,EACrB,aCNM,MAAO++O,WAAiBllP,MAC5BoK,WAAAA,CAAYggB,GACV,MAAMA,GACN,KAAKrc,KAAO,kBAmBHo3O,GACX/6O,WAAAA,CAAqBm8F,GAAA,KAAKA,MAALA,EAEd,YAAOj4E,CAAMu0N,SAClB,MAAMuC,EAAkB,wBAClBC,EAAe,uBAEfC,EAA4B,GAClC,IAAK,IAAIn+O,EAAI,EAAGA,EAAI07O,EAAK7kP,OAAQmJ,IAAK,CACpC,GAAIk+O,EAAavhI,KAAK++H,EAAK17O,IAAK,CAC9Bm+O,EAAa9zO,MACb,QACD,CAED,MAAM+zO,EAA6C,QAAhCx/G,EAAAq/G,EAAgBthI,KAAK++H,EAAK17O,WAAM,IAAA4+H,OAAA,EAAAA,EAAA,GAC9Cw/G,GAGLD,EAAa7hP,KAAK,IAAIxC,EAAAA,UAAUskP,GACjC,CACD,OAAO,IAAIJ,GAAkBG,IAI3B,MAAOE,WAAoBxlP,MAS/BoK,WAAAA,CACEojE,EACAi4K,EACSC,EACA7C,EACTxsC,EACAsvC,GAEA,MAAMD,EAAUrsL,KAAK,MAAMlwD,QAAQ,gBAAiB,KAL3C,KAASu8O,UAATA,EACA,KAAI7C,KAAJA,EAKT,KAAK7jO,MAAQ,CAAEwuD,YAAWi4K,eAAcE,iBAAgBtvC,UACxD,KAAKuvC,mBAAqBT,GAAkB72N,MAAMu0N,GAG7C,YAAOv0N,CAAMu0N,GAClB,IAAKA,EACH,OAAO,KAGT,MAAMgD,EAAsBhD,EAAK1+J,WAAWluC,GAC1CA,EAAIjxC,WAAW,8BAEjB,IAA6B,IAAzB6gP,EACF,OAAO,KAET,MAAMC,EAAiBjD,EAAKgD,GACtBH,EAAY,CAACI,GACnB,IAAIH,EACJ,GAAIE,EAAsB,EAAIhD,EAAK7kP,OAOjC,GAAsC,uBAAlC6kP,EAAKgD,EAAsB,GAA6B,CAC1D,MAAME,EAAc,sBACdC,EAAaD,EAAYjiI,KAAK++H,EAAKgD,EAAsB,IAAK,GAC9DI,EAAcF,EAAYjiI,KAAK++H,EAAKgD,EAAsB,IAAK,GACrEF,EAAiB,CACf,IAAI1kP,EAAAA,UAAU+kP,GACd,IAAI/kP,EAAAA,UAAUglP,IAEhBP,EAAUjiP,QACLo/O,EAAKh5O,MAAMg8O,EAAsB,EAAGA,EAAsB,GAEhE,MAKI,GAAIhD,EAAKgD,EAAsB,GAAG7gP,WAAW,sBAAuB,CACvE,MAAMkhP,EAAa,oCACbC,EAAYD,EAAWpiI,KAAK++H,EAAKgD,EAAsB,IAAK,GAC5DO,EAAaF,EAAWpiI,KAAK++H,EAAKgD,EAAsB,IAAK,GACnEH,EAAUjiP,QACLo/O,EAAKh5O,MAAMg8O,EAAsB,EAAGA,EAAsB,IAE/DF,EAAiB,CAACQ,EAAWC,EAC9B,CAEH,MAEMC,EADJ,sGACuCviI,KAAKgiI,GAGxCQ,EADJ,kHAC2CxiI,KAAKgiI,GAG5CS,EADJ,qHACiDziI,KAAKgiI,GACxD,GAAIO,EAAsB,CACxB,MAAOG,EAAiBC,EAAahB,GACnCY,EAAqBx8O,MAAM,EAAG,GAC1B2jE,EAAY,CAChB3iB,KAAM27L,EACNnqN,OAAQ/0B,SAASm/O,IAEnB,OAAO,IAAIjB,GACTh4K,EACAi4K,EACAC,EACA7C,OACA5kP,EACA0nP,EAEH,CAAM,GAAIW,EAAwB,CACjC,MAAOI,EAAMC,EAAMH,EAAiBC,EAAahB,GAC/Ca,EAAuBz8O,MAAM,EAAG,GAC5B2jE,EAAY,CAChB3iB,KAAM27L,EACNnqN,OAAQ/0B,SAASm/O,IAEbG,EAAW,CAAEF,OAAMC,KAAMr/O,SAASq/O,IACxC,OAAO,IAAInB,GACTh4K,EACAi4K,EACAC,EACA7C,EACA+D,EACAjB,EAEH,CAAM,GAAIY,EAA2B,CACpC,MAAOM,EAAaL,EAAiBC,EAAahB,GAChDc,EAA0B18O,MAAM,EAAG,GAC/BwsM,EAASwwC,EACTr5K,EAAY,CAChB3iB,KAAM27L,EACNnqN,OAAQ/0B,SAASm/O,IAEnB,OAAO,IAAIjB,GACTh4K,EACAi4K,EACAC,EACA7C,EACAxsC,EACAsvC,EAEH,CACC,OAAO,KAIX,WAAIrwI,GACF,OAAO,KAAKswI,mBAAmBr/I,MAC7B,KAAKq/I,mBAAmBr/I,MAAMvoG,OAAS,GAI3C,qBAAI8oP,GACF,OAAO,KAAKlB,mBAAmBr/I,MAG1B3lG,QAAAA,GACL,OAAO,KAAKwpB,SAKV,MAAO28N,WAAqB/mP,MAGhCoK,WAAAA,CACWygD,EACAjuD,EACAimP,GAET,QAJS,KAAIh4L,KAAJA,EACA,KAAGjuD,IAAHA,EACA,KAAIimP,KAAJA,EAGLA,IACF,KAAK+C,mBAAqBT,GAAkB72N,MAAMu0N,IAI/C,YAAOv0N,CACZvI,EACAihO,GAEA,MAAMC,EAAoBlhO,EAAInlB,WAG9B,IAAIsmP,EAgBA15K,EAfJ,GAAIy5K,EAAUhrM,SAAS,yBAA0B,CAC/C,IAAIkrM,EAAaF,EAAUviP,MAAM,0BACjC,GAA0B,IAAtByiP,EAAWnpP,OACb,OAAO,KAEPkpP,EAAoBC,EAAW,EAElC,KAAM,CACL,MAAMvtL,EAAUqtL,EAAUt4K,MAAM,uBAChC,IAAK/U,GAAWA,EAAQ57D,OAAS,EAC/B,OAAO,KAETkpP,EAAoBttL,EAAQ,GAAG+U,MAAM,aAAc,EACpD,CAGD,IACEnB,EAAYlmE,SAAS4/O,EACtB,CAAC,MAAOE,GACP,OAAO,IACR,CAGD,IAAI71G,EAAWy1G,EAAUj/O,IAAIylE,GAC7B,YAAiBvvE,IAAbszI,EACK,IAAIw1G,GAAav5K,EAAW+jE,EAAUxrH,EAAI88N,OAInDtxG,EAAW81G,GAAiBt/O,IAAIylE,QACfvvE,IAAbszI,EACK,IAAIw1G,GAAav5K,EAAW+jE,EAAUxrH,EAAI88N,MAI5C,MAGT,WAAIvtI,SACF,OAA8B,QAAvBywB,EAAA,KAAK6/G,0BAAkB,IAAA7/G,OAAA,EAAAA,EAAEx/B,MAC9B,KAAKq/I,mBAAmBr/I,MAAMvoG,OAAS,GAI3C,qBAAI8oP,SACF,OAA8B,QAAvB/gH,EAAA,KAAK6/G,0BAAkB,IAAA7/G,OAAA,EAAAA,EAAEx/B,MAG3B3lG,QAAAA,GACL,OAAO,KAAKhE,KAIA,SAAA0qP,GAAevhO,EAAUihO,GACnC/B,GAAe,eACjBlgO,QAAQkxB,IAAI,qBAAsBlwB,GAGpC,MAAMwhO,EAAc/B,GAAYl3N,MAAMvI,EAAI88N,MAC1C,GAAI0E,EACF,OAAOA,EAGT,MAAMC,EAAeT,GAAaz4N,MAAMvI,EAAKihO,GAC7C,GAAIQ,EACF,OAAOA,EAET,GAAIzhO,EAAI88N,KAAM,CACZ,MAAMtiJ,EAAU,CACdx4F,IAAK,SAAUC,EAAQC,GACrB,MAAa,sBAATA,EACKD,EAAO8+O,kBAAkBvgJ,MACd,YAATt+F,EACFD,EAAO8+O,kBAAkBvgJ,MAC9BxgF,EAAI+gO,kBAAkBvgJ,MAAMvoG,OAAS,GAMhC2K,QAAQZ,OAAOhK,aAK5B,OADAgoB,EAAI+gO,kBAAoB3B,GAAkB72N,MAAMvI,EAAI88N,MAC7C,IAAI/6O,MAAMie,EAAKw6E,EACvB,CACD,OAAOx6E,CACT,CAEa,MAAA0hO,GAAgB,CAE3BC,mBAAoB,IACpBC,4BAA6B,IAC7BC,6BAA8B,IAC9BC,2BAA4B,IAG5BC,mBAAoB,IACpBC,6BAA8B,KAG9BC,cAAe,IACfC,iBAAkB,KAClBC,iBAAkB,KAClBC,cAAe,KACfC,gBAAiB,KACjBC,qBAAsB,KACtBC,gBAAiB,KACjBC,qBAAsB,KACtBC,gBAAiB,KACjBC,qBAAsB,KACtBC,yBAA0B,KAC1BC,gBAAiB,KACjBC,kBAAmB,KACnBC,eAAgB,KAChBC,oBAAqB,KACrBC,qBAAsB,KACtBC,4BAA6B,KAC7BC,8BAA+B,KAC/BC,uBAAwB,KACxBC,gBAAiB,KACjBC,wBAAyB,KAGzBC,gBAAiB,KACjBC,kBAAmB,KACnBC,sBAAuB,KACvBC,mBAAoB,KACpBC,uBAAwB,KACxBC,kBAAmB,KACnBC,mBAAoB,KAGpBC,+BAAgC,IAChCC,6BAA8B,KAC9BC,6BAA8B,KAC9BC,yBAA0B,KAC1BC,uBAAwB,KACxBC,qBAAsB,KACtBC,kBAAmB,KACnBC,2BAA4B,KAC5BC,iBAAkB,KAClBC,yBAA0B,KAC1BC,iBAAkB,KAClBC,sBAAuB,KACvBC,sBAAuB,KACvBC,sBAAuB,KACvBC,iCAAkC,KAClCC,sBAAuB,KACvBC,2BAA4B,KAC5BC,yBAA0B,KAG1BC,0BAA2B,KAG3BC,WAAY,KAGD1D,GAAmB,IAAInpO,IAAI,CAEtC,CACEupO,GAAcC,mBACd,8CAEF,CACED,GAAcE,4BACd,wCAEF,CACEF,GAAcG,6BACd,2DAEF,CACEH,GAAcI,2BACd,yDAIF,CACEJ,GAAcK,mBACd,qDAEF,CACEL,GAAcM,6BACd,wEAIF,CAACN,GAAcO,cAAe,iCAC9B,CAACP,GAAcQ,iBAAkB,qCACjC,CAACR,GAAcS,iBAAkB,oCACjC,CAACT,GAAcU,cAAe,iCAC9B,CAACV,GAAcW,gBAAiB,oCAChC,CACEX,GAAcY,qBACd,4CAEF,CAACZ,GAAca,gBAAiB,mCAChC,CAACb,GAAcc,qBAAsB,yCACrC,CACEd,GAAce,gBACd,8DAEF,CAACf,GAAcgB,qBAAsB,yCACrC,CACEhB,GAAciB,yBACd,8CAEF,CAACjB,GAAckB,gBAAiB,mCAChC,CAAClB,GAAcmB,kBAAmB,sCAClC,CAACnB,GAAcoB,eAAgB,sCAC/B,CAACpB,GAAcqB,oBAAqB,wCACpC,CAACrB,GAAcsB,qBAAsB,yCACrC,CACEtB,GAAcuB,4BACd,iDAEF,CACEvB,GAAcwB,8BACd,mDAEF,CACExB,GAAcyB,uBACd,2CAEF,CAACzB,GAAc0B,gBAAiB,mCAChC,CACE1B,GAAc2B,wBACd,iDAIF,CAAC3B,GAAc4B,gBAAiB,qCAChC,CAAC5B,GAAc6B,kBAAmB,wCAClC,CACE7B,GAAc8B,sBACd,6CAEF,CAAC9B,GAAc+B,mBAAoB,yCACnC,CACE/B,GAAcgC,uBACd,8CAEF,CAAChC,GAAciC,kBAAmB,wCAClC,CAACjC,GAAckC,mBAAoB,yCAGnC,CACElC,GAAcmC,+BACd,6DAEF,CACEnC,GAAcoC,6BACd,oDAEF,CACEpC,GAAcqC,6BACd,wDAEF,CAACrC,GAAcsC,yBAA0B,qCACzC,CAACtC,GAAcuC,uBAAwB,mCACvC,CACEvC,GAAcwC,qBACd,oDAEF,CAACxC,GAAcyC,kBAAmB,oCAClC,CACEzC,GAAc0C,2BACd,mEAEF,CAAC1C,GAAc2C,iBAAkB,kCACjC,CAAC3C,GAAc4C,yBAA0B,qCACzC,CAAC5C,GAAc6C,iBAAkB,kCACjC,CACE7C,GAAc8C,sBACd,wDAEF,CACE9C,GAAc+C,sBACd,+DAEF,CACE/C,GAAcgD,sBACd,mDAEF,CACEhD,GAAciD,iCACd,yDAEF,CACEjD,GAAckD,sBACd,2DAEF,CACElD,GAAcmD,2BACd,0EAEF,CACEnD,GAAcoD,yBACd,6DAIF,CACEpD,GAAcqD,0BACd,gEAIF,CACErD,GAAcsD,WACd,mECnfG,IAAIC,GAAW,WAQlB,OAPAA,GAAW7rP,OAAO0nF,QAAU,SAAkBnuE,GAC1C,IAAK,IAAI7L,EAAG1F,EAAI,EAAGuF,EAAI3O,UAAUC,OAAQmJ,EAAIuF,EAAGvF,IAE5C,IAAK,IAAIuL,KADT7F,EAAI9O,UAAUoJ,GACOhI,OAAO4H,UAAU4L,eAAeM,KAAKpG,EAAG6F,KAAIgG,EAAEhG,GAAK7F,EAAE6F,IAE9E,OAAOgG,CACf,EACWsyO,GAASx3K,MAAMr3E,KAAM4B,UAChC,ECTWktP,GAAW,WAQlB,OAPAA,GAAW9rP,OAAO0nF,QAAU,SAAkBnuE,GAC1C,IAAK,IAAI7L,EAAG1F,EAAI,EAAGuF,EAAI3O,UAAUC,OAAQmJ,EAAIuF,EAAGvF,IAE5C,IAAK,IAAIuL,KADT7F,EAAI9O,UAAUoJ,GACOhI,OAAO4H,UAAU4L,eAAeM,KAAKpG,EAAG6F,KAAIgG,EAAEhG,GAAK7F,EAAE6F,IAE9E,OAAOgG,CACf,EACWuyO,GAASz3K,MAAMr3E,KAAM4B,UAChC,ECIO,SAASohK,GAAUhxJ,GACtB,OAAOA,EAAI4C,aACf,CC5CA,IAAIm6O,GAAuB,CAAC,qBAAsB,wBAE9CC,GAAuB,eAqB3B,SAAShiP,GAAQ/M,EAAOysC,EAAIxpC,GACxB,OAAIwpC,aAAcx/B,OACPjN,EAAM+M,QAAQ0/B,EAAIxpC,GACtBwpC,EAAGzjC,QAAO,SAAUhJ,EAAOysC,GAAM,OAAOzsC,EAAM+M,QAAQ0/B,EAAIxpC,EAAO,GAAIjD,EAChF,CC3BO,SAASgvP,GAAQhvP,EAAO2hB,GAE3B,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GDKlC,SAAgB3hB,EAAO2hB,QACV,IAAZA,IAAsBA,EAAU,CAAC,GAMrC,IALA,IAAIgoH,EAAKhoH,EAAQstO,YAAaA,OAAqB,IAAPtlH,EAAgBmlH,GAAuBnlH,EAAIo2B,EAAKp+I,EAAQutO,YAAaA,OAAqB,IAAPnvF,EAAgBgvF,GAAuBhvF,EAAIriH,EAAK/7B,EAAQsqB,UAAWA,OAAmB,IAAPyR,EAAgBqlH,GAAYrlH,EAAIyiH,EAAKx+I,EAAQwtO,UAAWA,OAAmB,IAAPhvF,EAAgB,IAAMA,EACpSzxI,EAAS3hB,GAAQA,GAAQ/M,EAAOivP,EAAa,UAAWC,EAAa,MACrEjgP,EAAQ,EACRse,EAAMmB,EAAO9sB,OAEe,OAAzB8sB,EAAO1c,OAAO/C,IACjBA,IACJ,KAAkC,OAA3Byf,EAAO1c,OAAOub,EAAM,IACvBA,IAEJ,OAAOmB,EAAOjhB,MAAMwB,EAAOse,GAAKjlB,MAAM,MAAMG,IAAIwjC,GAAWgxB,KAAKkyL,EACpE,CCjBW9+L,CAAOrwD,EAAO6uP,GAAS,CAAEM,UAAW,KAAOxtO,GACtD,OCCaytO,GACJ,kBAAOC,CACZ7/F,EACAzsE,GAEA,MAAM4sE,OACW9tJ,IAAf2tJ,EAAM79I,KAAqB29O,IAAU9/F,EAAM79I,WAAQ9P,EACrD,OAAQ2tJ,EAAM9nJ,MACZ,IAAK,OACH,OAAO6nP,EAAAA,KAAW5/F,GAEpB,IAAK,KACH,OAAO4/F,EAAAA,GAAS5/F,GAElB,IAAK,KACH,OAAO4/F,EAAAA,GAAS5/F,GAElB,IAAK,MACH,OAAO4/F,EAAAA,IAAU5/F,GAEnB,IAAK,MACH,OAAO4/F,EAAAA,IAAU5/F,GAEnB,IAAK,MACH,OAAO4/F,EAAAA,IAAU5/F,GAEnB,IAAK,MACH,OAAO4/F,EAAAA,IAAU5/F,GAEnB,IAAK,MACH,OAAO4/F,EAAAA,IAAU5/F,GAEnB,IAAK,MACH,OAAO4/F,EAAAA,IAAU5/F,GAEnB,IAAK,MACH,OAAO4/F,EAAAA,IAAU5/F,GAEnB,IAAK,MACH,OAAO4/F,EAAAA,IAAU5/F,GAEnB,IAAK,OACH,OAAO4/F,EAAAA,KAAW5/F,GAEpB,IAAK,OACH,OAAO4/F,EAAAA,KAAW5/F,GAEpB,IAAK,OACH,OAAO4/F,EAAAA,KAAW5/F,GAEpB,IAAK,OACH,OAAO4/F,EAAAA,KAAW5/F,GAEpB,IAAK,QACH,OAAO4/F,EAAAA,MAAY5/F,GAErB,IAAK,SACH,OAAO4/F,EAAAA,IAAU5/F,GAEnB,IAAK,YACH,OAAO4/F,EAAAA,UAAgB5/F,GAEzB,QACE,GAAI,QAASH,EAAM9nJ,KACjB,OAAO6nP,EAAAA,IACLH,GAASC,YACP,CACE19O,UAAM9P,EACN6F,KAAM8nJ,EAAM9nJ,KAAK8nP,KAEnBzsK,GAEF4sE,GAEG,GAAI,WAAYH,EAAM9nJ,KAC3B,OAAO6nP,EAAAA,OACLH,GAASC,YACP,CACE19O,UAAM9P,EACN6F,KAAM8nJ,EAAM9nJ,KAAK+nP,QAEnB1sK,GAEF4sE,GAEG,GAAI,YAAaH,EAAM9nJ,KAAM,CAElC,IAAKq7E,EACH,MAAM,IAAI+lK,GAAS,mCAGrB,MAAM4G,EAAUlgG,EAAM9nJ,KAAKgoP,QACrBC,EAAW5sK,EAAMwQ,QAAQj3E,GAAMA,EAAE3K,OAAS+9O,IAChD,GAAwB,IAApBC,EAAS/tP,OACX,MAAM,IAAIknP,GAAS,mBAAmBp7N,KAAKC,UAAU6hI,MAEvD,OAAO4/F,GAASQ,cAAcD,EAAS,GAAI5sK,EAAO4sE,EACnD,CAAM,GAAI,UAAWH,EAAM9nJ,KAAM,CAChC,IAAImoP,EAAUrgG,EAAM9nJ,KAAKk1F,MAAM,GAC3BkzJ,EAAWtgG,EAAM9nJ,KAAKk1F,MAAM,GAC5BmzJ,EAAcX,GAASC,YACzB,CACE19O,UAAM9P,EACN6F,KAAMmoP,GAER9sK,GAEF,OAAOwsK,EAAAA,MAAYQ,EAAaD,EAAUngG,EAC3C,CACC,MAAM,IAAI/rJ,MAAM,wBAAwB4rJ,MAMzC,oBAAOogG,CACZI,GAEa,IADbjtK,EAAsBphF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,MACtBgQ,EAAahQ,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAEb,OAAQmuP,EAAQtoP,KAAKy6D,MACnB,IAAK,SAAU,CACb,MAAM8tL,EAAeD,EAAQtoP,KAAKsiG,OAAOvhG,KAAK+mJ,GACrC4/F,GAASC,YAAY7/F,EAAOzsE,KAErC,OAAOwsK,EAAAA,OAAaU,EAAct+O,EACnC,CAED,IAAK,OAAQ,CACX,IAAI6/I,EAAWw+F,EAAQtoP,KAAK8pJ,SAAS/oJ,KAAKszH,IACxC,MAAMpqH,EAAO29O,IAAUvzH,EAAQpqH,MAC/B,IAAKoqH,EAAQ/xB,OACX,OAAOulJ,EAAAA,OAAa,GAAI59O,GAG1B,MAAMs+O,EAAel0H,EAAQ/xB,OAAOvhG,KAClC,CAACmiD,EAAuB7/C,KACjB,OAAA6/C,QAAC,IAADA,OAAC,EAADA,EAAgBj5C,MACZy9O,GAASC,YAAYzkM,EAAem4B,GAGtCqsK,GAASC,YACd,CAAE3nP,KAAMkjD,EAAcj5C,KAAM5G,EAAEvG,YAC9Bu+E,KAIN,OAAOwsK,EAAAA,OAAaU,EAAct+O,EAAK,IAGzC,YAAa9P,IAAT8P,EAGK49O,EAAAA,SAAe/9F,GAAU/6B,UAAU9kH,GAGrC49O,EAAAA,SAAe/9F,EAAU7/I,EACjC,CAED,IAAK,QACH,OAAOy9O,GAASC,YACd,CAAE3nP,KAAMsoP,EAAQtoP,KAAKzE,MAAO0O,KAAMq+O,EAAQr+O,MAC1CoxE,KC5IH,MAAMmtK,GAA2B,eAK3BC,GAOXniP,WAAAA,CAA2B01O,GAAA,KAAGA,IAAHA,EACzB,KAAK0M,SAAWD,GAAsBE,cAAc3M,GAEpD,MAAM4M,EAAiB,IAAIxuO,IAC3B4hO,EAAIr5N,aAAavb,SAASsb,IACxB,MAAMmmO,EAAKjsB,GAAQ4rB,GAA0B9lO,EAAGzY,MAChD2+O,EAAej6O,IAAImtO,IAAAA,OAAY+M,GAAK,CAClCj4I,OAAQ,KAAK83I,SAASzkP,IAAIye,EAAGzY,MAC7BA,KAAMyY,EAAGzY,MACT,IAGJ,KAAK2+O,eAAiBA,EAMjBpwO,MAAAA,CAAOswO,EAAgBpmO,GAC5B,OAAO,KAAKqmO,QAAQP,GAA0BM,EAAQpmO,GAGhDqmO,OAAAA,CAAQC,EAAmBF,EAAgBpmO,GACjD,MAAMgG,EAASgzN,EAAAA,OAAOpjO,MAAM,KACtBuxH,EAAa+9G,IAAUkB,GACvBl4I,EAAS,KAAK83I,SAASzkP,IAAI4lI,GACjC,IAAKj5B,EACH,MAAM,IAAI10G,MAAM,mBAAmB2tI,KAErC,MAAMr/H,EAAMomG,EAAOp4F,OAAOkK,EAAIgG,GACxB1sB,EAAO0sB,EAAO3iB,MAAM,EAAGyE,GAC7B,OAAOkxO,EAAAA,OAAOlrO,OAAO,CAACosN,GAAQosB,EAAWF,GAAS9sP,IAG5C,oBAAO2sP,CAAc3M,GAC3B,MAAMiN,EAAYjN,EAAIr5N,aAAa5hB,KAAK2hB,IACtC,IAAI6lO,EAAe7lO,EAAGlV,KAAKzM,KAAKm0G,YAC9B,OAAAwyI,GAASC,YACPzyI,EACA1yG,MAAM3F,KAAK,IAAiB,QAAZolI,EAAA+5G,EAAI94N,gBAAQ,IAAA++G,EAAAA,EAAI,MAAkB,QAATo2B,EAAA2jF,EAAI3gK,aAAK,IAAAg9E,EAAAA,EAAI,KACvD,IAEH,MAAMpuJ,EAAO29O,IAAUllO,EAAGzY,MAC1B,MAAO,CAACA,EAAM49O,EAAAA,OAAaU,EAAct+O,GAAM,IAGjD,OAAO,IAAImQ,IAAI6uO,GAMVnxO,MAAAA,CACL4K,GAGkB,kBAAPA,IACTA,EAAkB,SAHpBzoB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,OAGDyhP,EAAAA,OAAO7+O,KAAK6lB,EAAI,OAASo5N,IAAAA,OAAYp5N,IAEjE,IAAIk6M,EAAUkf,IAAAA,OAAYp5N,EAAG3c,MAAM,EAAG,IAClC/J,EAAO0mB,EAAG3c,MAAM,GACpB,MAAMmhB,EAAU,KAAK0hO,eAAe3kP,IAAI24N,GACxC,OAAK11M,EAGE,CACLlrB,KAAMkrB,EAAQ0pF,OAAO94F,OAAO9b,GAC5BiO,KAAMid,EAAQjd,MAJP,KAWJiD,MAAAA,CACLwV,EACAgrE,GAEA,OAAOw7J,GAAqBh8O,OAAOwV,EAAIgrE,EAAc,KAAKsuJ,MAmB9D,MAAMkN,GACG,aAAOh8O,CACZwV,EACAgrE,EACAsuJ,GAEA,MAAME,EAAQF,EAAIr5N,aAAakpE,QAAQxoF,GAAMqf,EAAGzY,OAAS5G,EAAE4G,OAAM,GACjE,QAAc9P,IAAV+hP,EAEF,OADAj7N,QAAQ/F,MAAM,6BACP,KAGT,MAAM1N,EAAO0uO,EAAM1uO,KAAKzM,KAAKooP,IACpB,CACLl/O,KAAMk/O,EAASl/O,KACfjK,KAAMkpP,GAAqBE,cAAcD,EAASnpP,MAClDhE,KAAMktP,GAAqBG,cACzBF,EACAzmO,EAAG1mB,KAAKmtP,EAASl/O,MACjB+xO,EAAI3gK,WAKJiuK,EAAkBJ,GAAqBK,mBAC3CrN,EAAMh5N,UAmBR,MAAO,CACL1V,OACA0V,SAlBewqE,EAAa3sF,KAAI,CAACkc,EAAMq6C,IACnCA,EAAMgyL,EAAgBpvP,OACjB,CACL+P,KAAMq/O,EAAgBhyL,GAAKrtD,QACxBgT,GAKE,CACLhT,UAAM9P,KACH8iB,MAWH,oBAAOmsO,CAAcI,GAC3B,GAAuB,kBAAZA,EACT,OAAOA,EAGT,GAAI,QAASA,EACX,MAAO,OAAO,KAAKJ,cAAcI,EAAQ1B,QAE3C,GAAI,WAAY0B,EACd,MAAO,UAAU,KAAKJ,cAAcI,EAAQzB,WAE9C,GAAI,YAAayB,EACf,OAAOA,EAAQxB,QAEjB,GAAI,UAAWwB,EACb,MAAO,SAASA,EAAQt0J,MAAM,OAAOs0J,EAAQt0J,MAAM,MAGrD,MAAM,IAAIh5F,MAAM,qBAAqBstP,KAG/B,oBAAOH,CACbF,EACAntP,EACAq/E,GAEA,GAA6B,kBAAlB8tK,EAASnpP,KAClB,OAAOhE,EAAKc,WAEd,GAAIqsP,EAASnpP,KAAK6O,eAAe,OAC/B,MACE,IACkB7S,EACf+E,KAAK6M,GACJ,KAAKy7O,cACH,CAAEp/O,KAAM,GAAIjK,KAAmBmpP,EAASnpP,KAAM8nP,KAC9Cl6O,KAGH2nD,KAAK,MACR,IAGJ,GAAI4zL,EAASnpP,KAAK6O,eAAe,UAC/B,OAAgB,OAAT7S,EACH,OACA,KAAKqtP,cACH,CAAEp/O,KAAM,GAAIjK,KAAsBmpP,EAASnpP,KAAM+nP,QACjD/rP,EACAq/E,GAGR,GAAI8tK,EAASnpP,KAAK6O,eAAe,WAAY,CAC3C,QAAc1U,IAAVkhF,EACF,MAAM,IAAIn/E,MAAM,mCAElB,MAAM+rP,EAAW5sK,EAAMwQ,QACpBj3E,GAAMA,EAAE3K,OAA0Bk/O,EAASnpP,KAAMgoP,UAEpD,GAAwB,IAApBC,EAAS/tP,OACX,MAAM,IAAIgC,MACR,mBAAoCitP,EAASnpP,KAAMgoP,WAGvD,OAAOkB,GAAqBO,qBAC1BxB,EAAS,GACTjsP,EACAq/E,EAEH,CAED,MAAO,UAGD,2BAAOouK,CACbnB,EACAtsP,EACAq/E,GAEA,OAAQitK,EAAQtoP,KAAKy6D,MACnB,IAAK,SAAU,CACb,MAAM1iD,EAA6BuwO,EAAQtoP,KAc3C,MAAO,KAbQ3E,OAAOoc,KAAKzb,GACxB+E,KAAK4I,IACJ,MAAMm+I,EAAQ/vI,EAAOuqF,OAAOnvC,MAAMjQ,GAAMA,EAAEj5C,OAASN,IACnD,IAAKm+I,EACH,MAAM,IAAI5rJ,MAAM,uBAElB,OACEyN,EACA,KACAu/O,GAAqBG,cAAcvhG,EAAO9rJ,EAAK2N,GAAI0xE,EAAM,IAG5D9lB,KAAK,MACe,IACxB,CAED,IAAK,OACH,GAAqC,IAAjC+yL,EAAQtoP,KAAK8pJ,SAAS5vJ,OACxB,MAAO,KAGT,GAAIouP,EAAQtoP,KAAK8pJ,SAAS,GAAG7/I,KAAM,CACjC,MAAM6/I,EAAWw+F,EAAQtoP,KAAK8pJ,SACxBz1B,EAAUh5H,OAAOoc,KAAKzb,GAAM,GAC5B0tP,EAAW1tP,EAAKq4H,GAChBs1H,EAActuP,OAAOoc,KAAKiyO,GAC7B3oP,KAAKmiD,UACJ,MAAM0mM,EAAYF,EAASxmM,GACrBimM,EAA4B,QAAjBlnH,EAAA6nB,EAASz1B,UAAQ,IAAA4N,OAAA,EAAAA,EAAE9uE,MACjC7mD,GAAgBA,EAAErC,OAASi5C,IAE9B,IAAKimM,EACH,MAAM,IAAIjtP,MAAM,0BAElB,OACEgnD,EACA,KACAgmM,GAAqBG,cAAcF,EAAUS,EAAWvuK,EAAM,IAGjE9lB,KAAK,MAEFs0L,EAAcjC,IAAUvzH,EAAS,CAAEy1H,YAAY,IACrD,OAA2B,IAAvBH,EAAYzvP,OACP2vP,EAEF,GAAGA,OAAiBF,KAC5B,CAIC,MAAO,uCAIX,IAAK,QACH,OAAOT,GAAqBE,cAAcd,EAAQtoP,KAAKzE,QAKrD,yBAAOguP,CACbrmO,EACAtX,GAEA,OAAOsX,EACJniB,KAAK8pB,IACJ,MAAMk/N,EAkBd,SAAsBjiG,GACpB,MAAM9gI,EAAS8gI,EAAMziJ,QAAQ,WAAY,OACzC,OAAO2hB,EAAO1c,OAAO,GAAG0C,cAAgBga,EAAOjhB,MAAM,EACvD,CArBwBikP,CAAan/N,EAAQ5gB,MACrC,GAAI4gB,EAAQhc,eAAe,YAAa,CACtC,MAAMo7O,EAAYr+O,EAAS,GAAGA,OAAYm+O,IAAYA,EACtD,OAAOb,GAAqBK,mBACZ1+N,EAAS3H,SACvB+mO,EAEH,CACC,MAAO,IACWp/N,EAChB5gB,KAAM2B,EAAS,GAAGA,OAAYm+O,IAAYA,EAE7C,IAEFj6L,QAWP,SAAS8sK,GAAQosB,EAAmBF,GCvW7B,IAA0B7uO,EDyW/B,IAAIiwO,EAAW,GAAGlB,UCxWA,IAAZ/uO,IAAsBA,EAAU,CAAC,GAC9BqtO,GDsWYwB,ECtWG5B,GAAS,CAAEO,UAAW,KAAOxtO,MDwWrD,OAAOyhO,EAAAA,OAAO7+O,MAAKstP,EAAAA,EAAAA,IAAOD,GAAUnkP,MAAM,EAAG,GAC/C,CE1WgB,SAAAqkP,GAAYpO,EAAUqO,GACpC,OAAQA,EAAWrqP,KAAKy6D,MACtB,IAAK,SACH,OAAO4vL,EAAWrqP,KAAKsiG,OACpBvhG,KAAKmiD,GAAMonM,GAAStO,EAAK94L,EAAEljD,QAC3BsB,QAAO,CAAC8hB,EAAKb,IAASa,EAAMb,GAAM,GAGvC,IAAK,OAAQ,CACX,MAAMgoO,EAAeF,EAAWrqP,KAAK8pJ,SAAS/oJ,KAAKszH,GAC5CA,EAAQ/xB,OAIN+xB,EAAQ/xB,OACZvhG,KAAKmiD,GAOGonM,GAAStO,EALG,kBAAN94L,GAAkB,SAAUA,EAKpBA,EAAEljD,KAJAkjD,KAMxB5hD,QAAO,CAAC8hB,EAAKb,IAASa,EAAMb,GAAM,GAb5B,IAgBX,OAAO9gB,KAAKuI,OAAOugP,GAAgB,CACpC,CAED,IAAK,QACH,OAAOD,GAAStO,EAAKqO,EAAWrqP,KAAKzE,OAG3C,CAIA,SAAS+uP,GAAStO,EAAUwO,WAC1B,OAAQA,GACN,IAAK,OAEL,IAAK,KAEL,IAAK,KA0BL,IAAK,QAEL,IAAK,SACH,OAAO,EA3BT,IAAK,MAEL,IAAK,MACH,OAAO,EACT,IAAK,MAEL,IAAK,MAEL,IAAK,MACH,OAAO,EACT,IAAK,MAEL,IAAK,MAEL,IAAK,MACH,OAAO,EACT,IAAK,OAEL,IAAK,OACH,OAAO,GACT,IAAK,OAEL,IAAK,OAML,IAAK,YACH,OAAO,GACT,QACE,GAAI,QAASA,EACX,OAAO,EAET,GAAI,WAAYA,EACd,OAAO,EAAIF,GAAStO,EAAKwO,EAAGzC,QAE9B,GAAI,YAAayC,EACf,OAAO,EAAIF,GAAStO,EAAKwO,EAAGC,SAE9B,GAAI,YAAaD,EAAI,CACnB,MAAMvC,EAA8D,QAAnD5vF,EAAS,QAATp2B,EAAA+5G,EAAI3gK,aAAK,IAAA4mD,OAAA,EAAAA,EAAEp2C,QAAQj3E,GAAMA,EAAE3K,OAASugP,EAAGxC,iBAAY,IAAA3vF,EAAAA,EAAA,GACpE,GAAwB,IAApB4vF,EAAS/tP,OACX,MAAM,IAAIknP,GAAS,mBAAmBp7N,KAAKC,UAAUukO,MAIvD,OAAOJ,GAAYpO,EAFLiM,EAAS,GAGxB,CACD,GAAI,UAAWuC,EAAI,CACjB,IAAIrC,EAAUqC,EAAGt1J,MAAM,GACnBw1J,EAAYF,EAAGt1J,MAAM,GACzB,OAAOo1J,GAAStO,EAAKmM,GAAWuC,CACjC,CACD,MAAM,IAAIxuP,MAAM,gBAAgB8pB,KAAKC,UAAUukO,MAErD,CCpGO,MAAMG,GAAqB,EAE5B,SAAUp3H,GAAc22H,GAC5B,OAAOttP,EAAOC,MAAKstP,EAAAA,EAAAA,IAAOD,GAAUnkP,MAAM,EAAG4kP,IAC/C,OCIaC,GAaXtkP,WAAAA,CAAmB01O,GACjB,QAAqB7hP,IAAjB6hP,EAAI94N,SAEN,YADA,KAAK2nO,eAAiB,IAAIzwO,KAG5B,MAAM0wO,EAAyB9O,EAAI94N,SAASniB,KAAKqiB,GACxC,CAACA,EAAInZ,KAAWy9O,GAASQ,cAAc9kO,EAAK44N,EAAI3gK,UAGzD,KAAKwvK,eAAiB,IAAIzwO,IAAI0wO,GAC9B,KAAK9O,IAAMA,EAGN,YAAMxjO,CAAgBuqO,EAAgBl4N,GAC3C,MAAMnC,EAASgzN,EAAAA,OAAOpjO,MAAM,KACtBs4F,EAAS,KAAKi6I,eAAe5mP,IAAI8+O,GACvC,IAAKnyI,EACH,MAAM,IAAI10G,MAAM,oBAAoB6mP,KAEtC,MAAMv4O,EAAMomG,EAAOp4F,OAAOqS,EAASnC,GACnC,IAAIqiO,EAAcriO,EAAO3iB,MAAM,EAAGyE,GAC9B+oH,EAAgBq3H,GAAmBI,qBAAqBjI,GAC5D,OAAOrH,EAAAA,OAAOlrO,OAAO,CAAC+iH,EAAew3H,IAGhCjzO,MAAAA,CAAgBirO,EAAgB/mP,GAGrC,GADsB4uP,GAAmBI,qBAAqBjI,GAC5C35O,QAAQpN,EAAK+J,MAAM,EAAG,IACtC,MAAM,IAAI7J,MAAM,iCAElB,OAAO,KAAK+uP,gBAAgBlI,EAAa/mP,GAGpCkvP,SAAAA,CAAmBlvP,GACxB,MAAMmvP,EAAuBnvP,EAAK+J,MAAM,EAAG,GACrCg9O,EAAcvgP,MAAM3F,KAAK,KAAKguP,eAAepzO,QAAQ07C,MAAM9wD,GAC/DuoP,GAAmBI,qBAAqB3oP,GAAKuW,OAAOuyO,KAEtD,IAAKpI,EACH,MAAM,IAAI7mP,MAAM,mCAGlB,OAAO,KAAK+uP,gBAAmBlI,EAAoB/mP,GAG9CivP,eAAAA,CAAyBlI,EAAgBrgO,GAE9C,MAAM1mB,EAAO0mB,EAAGuG,SAAS0hO,IACnB/5I,EAAS,KAAKi6I,eAAe5mP,IAAI8+O,GACvC,IAAKnyI,EACH,MAAM,IAAI10G,MAAM,oBAAoB6mP,KAEtC,OAAOnyI,EAAO94F,OAAO9b,GAGhBovP,MAAAA,CAAOrI,EAAgBsI,GAC5B,MAAM93H,EAAgBq3H,GAAmBI,qBAAqBjI,GAC9D,MAAO,CACL3zN,OAAQ,EACRonB,MAAOslM,IAAAA,OACLuP,EAAa3P,EAAAA,OAAOlrO,OAAO,CAAC+iH,EAAe83H,IAAe93H,IAKzDhxG,IAAAA,CAAK8nO,SACV,OAAOM,IAA2D,QAArC1oH,EAAAmoH,GAAY,KAAKpO,IAAKqO,UAAe,IAAApoH,EAAAA,EAAA,GAQ7D,2BAAO+oH,CAAqB/gP,GAKjC,OAAOspH,GAJuB,WAAWq0H,IAAU39O,EAAM,CACvD6/O,YAAY,EACZwB,8BAA8B,cC/FvBC,GAWXjlP,WAAAA,CAAmB01O,GACjB,QAAmB7hP,IAAf6hP,EAAIx1O,OAEN,YADA,KAAKskP,QAAU,IAAI1wO,KAGrB,MAAM0wO,EAAmC9O,EAAIx1O,OAAOzF,KAAK+F,IACvD,IAAI0kP,EAA2B,CAC7BvhP,KAAMnD,EAAMmD,KACZjK,KAAM,CACJy6D,KAAM,SACN6nC,OAAQx7F,EAAMw7F,OAAOvhG,KAAKmiD,IACjB,CAAEj5C,KAAMi5C,EAAEj5C,KAAMjK,KAAMkjD,EAAEljD,WAIrC,MAAO,CAAC8G,EAAMmD,KAAMy9O,GAASQ,cAAcsD,EAAcxP,EAAI3gK,OAAO,IAEtE,KAAKyvK,QAAU,IAAI1wO,IAAI0wO,GAEvB,KAAKW,eAAiB,IAAIrxO,SACTjgB,IAAf6hP,EAAIx1O,OACA,GACAw1O,EAAIx1O,OAAOzF,KAAK6I,GAAM,CACpB4O,EAAckzO,GAAmB9hP,EAAEK,OACnCL,EAAEK,SAKL6N,MAAAA,CACLq6B,GAEA,IAAIw5M,EAEJ,IACEA,EAAS7zO,EAAcq6B,EACxB,CAAC,MAAOvoC,GACP,OAAO,IACR,CACD,MAAMgiP,EAAOpzO,EAAcmzO,EAAO5lP,MAAM,EAAG,IAGrCwiI,EAAY,KAAKkjH,eAAexnP,IAAI2nP,GAC1C,QAAkBzxP,IAAdouI,EACF,OAAO,KAGT,MAAM33B,EAAS,KAAKk6I,QAAQ7mP,IAAIskI,GAChC,IAAK33B,EACH,MAAM,IAAI10G,MAAM,kBAAkBqsI,KAMpC,MAAO,CAAEvsI,KAJI40G,EAAO94F,OAAO6zO,EAAO5lP,MAAM,IAIzBkE,KAAMs+H,IAInB,SAAUmjH,GAAmBzhP,GACjC,OAAOspH,GAAc,SAAStpH,IAChC,OCxEa4hP,GAWXvlP,WAAAA,CAAmB01O,GACjB,QAAkB7hP,IAAd6hP,EAAI3gK,MAEN,YADA,KAAKywK,YAAc,IAAI1xO,KAGzB,MAAM0wO,EAAyB9O,EAAI3gK,MAAMt6E,KAAKqiB,GACrC,CAACA,EAAInZ,KAAWy9O,GAASQ,cAAc9kO,EAAK44N,EAAI3gK,UAGzD,KAAKywK,YAAc,IAAI1xO,IAAI0wO,GAC3B,KAAK9O,IAAMA,EAGNxjO,MAAAA,CAAgB4iE,EAAap7E,GAClC,MAAM0oB,EAASgzN,EAAAA,OAAOpjO,MAAM,KACtBs4F,EAAS,KAAKk7I,YAAY7nP,IAAIm3E,GACpC,IAAKw1B,EACH,MAAM,IAAI10G,MAAM,iBAAiBk/E,KAEnC,MAAM5wE,EAAMomG,EAAOp4F,OAAOxY,EAAM0oB,GAEhC,OAAOA,EAAO3iB,MAAM,EAAGyE,GAGlBsN,MAAAA,CAAgBsjE,EAAa2wK,GAClC,MAAMn7I,EAAS,KAAKk7I,YAAY7nP,IAAIm3E,GACpC,IAAKw1B,EACH,MAAM,IAAI10G,MAAM,iBAAiBk/E,KAEnC,OAAOw1B,EAAO94F,OAAOi0O,UCjCZC,GAuBX1lP,WAAAA,CAAY01O,GACV,KAAKtkO,YAAc,IAAI+wO,GAAsBzM,GAC7C,KAAK94N,SAAW,IAAI0nO,GAAmB5O,GACvC,KAAKx1O,OAAS,IAAI+kP,GAAgBvP,GAClC,KAAK3gK,MAAQ,IAAIwwK,GAAgB7P,6PC2GrC,MAAMptH,GACJtoH,WAAAA,CAAYiS,EAAMo4F,GAChB,IAAKnpF,OAAO/T,UAAU8E,GACpB,MAAM,IAAI+e,UAAU,2BAYtBj/B,KAAKkgB,KAAOA,EAUZlgB,KAAKs4G,SAAWA,CACpB,CAiBEke,qBAAAA,GACE,MAAO,CAAC,CACZ,CAcE/2G,MAAAA,CAAOvO,EAAG6lB,GACR,MAAM,IAAIlzB,MAAM,qBACpB,CAwBEsc,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GACb,MAAM,IAAIlzB,MAAM,qBACpB,CAkBE4yH,OAAAA,CAAQvlH,EAAG6lB,GACT,GAAI,EAAI/2B,KAAKkgB,KACX,MAAM,IAAI62E,WAAW,sBAEvB,OAAO/2F,KAAKkgB,IAChB,CAkBEw2G,SAAAA,CAAUpe,GACR,MAAMqe,EAAK3zH,OAAO0G,OAAO1J,KAAKiO,YAAYrD,WAG1C,OAFA5H,OAAO0nF,OAAOisC,EAAI32H,MAClB22H,EAAGre,SAAWA,EACPqe,CACX,CAsBEC,SAAAA,CAAU7vG,GAEZ,EAEA,IAAc6sO,GAAGr9H,GA8FjB,MAAMW,WAAuBX,GAY3BY,OAAAA,GACE,MAAM,IAAItzH,MAAM,6BACpB,EA0EA,MAAMyzH,WAAqBJ,GACzBjpH,WAAAA,CAAYsqG,EAAQxhF,EAAQuhF,GAC1B,KAAMC,aAAkBge,IACtB,MAAM,IAAIt3F,UAAU,2BAGtB,QAAIn9B,IAAci1B,EAChBA,EAAS,OACJ,IAAK5H,OAAO/T,UAAU2b,GAC3B,MAAM,IAAIkI,UAAU,uCAGtB74B,MAAMmyG,EAAOr4F,KAAMo4F,GAAYC,EAAOD,UAGtCt4G,KAAKu4G,OAASA,EAQdv4G,KAAK+2B,OAASA,CAClB,CAGEogG,OAAAA,GACE,OAASn3H,KAAKu4G,kBAAkBgf,IACpBv3H,KAAKu4G,kBAAkBif,EACvC,CAGE/3G,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ/2B,KAAKu4G,OAAO94F,OAAOvO,EAAG6lB,EAAS/2B,KAAK+2B,OAC/C,CAGE5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAIb,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ/2B,KAAKu4G,OAAOp4F,OAAO6Y,EAAK9nB,EAAG6lB,EAAS/2B,KAAK+2B,OACpD,EAmBA,MAAMwgG,WAAahB,GACjBtoH,WAAAA,CAAYiS,EAAMo4F,GAEhB,GADAlyG,MAAM8Z,EAAMo4F,GACR,EAAIt4G,KAAKkgB,KACX,MAAM,IAAI62E,WAAW,+BAE3B,CAGEt3E,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAEumH,WAAW1gG,EAAQ/2B,KAAKkgB,KACrC,CAGEC,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAEwmH,YAAY1+F,EAAKjC,EAAQ/2B,KAAKkgB,MACzBlgB,KAAKkgB,IAChB,EAmBA,MAAMs3G,WAAejB,GACnBtoH,WAAAA,CAAYiS,EAAMo4F,GAEhB,GADAlyG,MAAO8Z,EAAMo4F,GACT,EAAIt4G,KAAKkgB,KACX,MAAM,IAAI62E,WAAW,+BAE3B,CAGEt3E,MAAAA,CAAOvO,EAAG6lB,GAIR,YAHIj1B,IAAci1B,IAChBA,EAAS,GAEJ7lB,EAAEymH,WAAW5gG,EAAQ/2B,KAAKkgB,KACrC,CAGEC,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GAKb,YAJIj1B,IAAci1B,IAChBA,EAAS,GAEX7lB,EAAE0mH,YAAY5+F,EAAKjC,EAAQ/2B,KAAKkgB,MACzBlgB,KAAKkgB,IAChB,EAuFA,MAAMi4G,GAAQ/uH,KAAK8O,IAAI,EAAG,IAI1B,SAASkgH,GAAYp/F,GACnB,MAAMq/F,EAAOjvH,KAAKC,MAAM2vB,EAAMm/F,IAE9B,MAAO,CAACE,OAAMC,KADDt/F,EAAOq/F,EAAOF,GAE7B,CAEA,SAASI,GAAaF,EAAMC,GAC1B,OAAOD,EAAOF,GAAQG,CACxB,CAaA,MAAME,WAAmBjC,GACvBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACb,CAGE74F,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMuhG,EAAOpnH,EAAEunH,aAAa1hG,GAE5B,OAAOwhG,GADMrnH,EAAEunH,aAAa1hG,EAAS,GACXuhG,EAC9B,CAGEn4G,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMxuB,EAAQ6vH,GAAYp/F,GAG1B,OAFA9nB,EAAEwnH,cAAcnwH,EAAM+vH,KAAMvhG,GAC5B7lB,EAAEwnH,cAAcnwH,EAAM8vH,KAAMthG,EAAS,GAC9B,CACX,EAoDA,MAAM+hG,WAAkBvC,GACtBtoH,WAAAA,CAAYqqG,GACVlyG,MAAM,EAAGkyG,EACb,CAGE74F,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMuhG,EAAOpnH,EAAEunH,aAAa1hG,GAE5B,OAAOwhG,GADMrnH,EAAE6nH,YAAYhiG,EAAS,GACVuhG,EAC9B,CAGEn4G,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMxuB,EAAQ6vH,GAAYp/F,GAG1B,OAFA9nB,EAAEwnH,cAAcnwH,EAAM+vH,KAAMvhG,GAC5B7lB,EAAE8nH,aAAazwH,EAAM8vH,KAAMthG,EAAS,GAC7B,CACX,EAgUA,MAAMmjG,WAAkB3D,GACtBtoH,WAAAA,CAAYg8F,EAAQqO,EAAU6hB,GAC5B,IAAMhwH,MAAMi3B,QAAQ6oE,KACXA,EAAOhhG,QAAO,CAAC8hB,EAAK9W,IAAM8W,GAAQ9W,aAAasiH,KAAS,GAC/D,MAAM,IAAIt3F,UAAU,4CAEjB,mBAAqBq5E,QAClBx2G,IAAcq4H,IACpBA,EAAiB7hB,EACjBA,OAAWx2G,GAIb,IAAK,MAAMs4H,KAAMnwB,EACf,GAAK,EAAImwB,EAAGl6G,WACJpe,IAAcs4H,EAAG9hB,SACvB,MAAM,IAAIz0G,MAAM,wDAIpB,IAAIqc,GAAQ,EACZ,IACEA,EAAO+pF,EAAOhhG,QAAO,CAACiX,EAAMk6G,IAAOl6G,EAAOk6G,EAAG3D,WAAW,EAC9D,CAAM,MAAOllH,GACb,CACInL,MAAM8Z,EAAMo4F,GAYZt4G,KAAKiqG,OAASA,EAWdjqG,KAAKm6H,iBAAmBA,CAC5B,CAGE1D,OAAAA,CAAQvlH,EAAG6lB,GACT,GAAI,GAAK/2B,KAAKkgB,KACZ,OAAOlgB,KAAKkgB,UAEVpe,IAAci1B,IAChBA,EAAS,GAEX,IAAI7W,EAAO,EACX,IACEA,EAAOlgB,KAAKiqG,OAAOhhG,QAAO,CAACiX,EAAMk6G,KAC/B,MAAMC,EAAMD,EAAG3D,QAAQvlH,EAAG6lB,GAE1B,OADAA,GAAUsjG,EACHn6G,EAAOm6G,CAAG,GAChB,EACT,CAAM,MAAO9oH,GACP,MAAM,IAAIwlF,WAAW,qBAC3B,CACI,OAAO72E,CACX,CAGET,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMmK,EAAOlhC,KAAKw2H,wBAClB,IAAK,MAAM4D,KAAMp6H,KAAKiqG,OAKpB,QAJInoG,IAAcs4H,EAAG9hB,WACnBp3E,EAAKk5F,EAAG9hB,UAAY8hB,EAAG36G,OAAOvO,EAAG6lB,IAEnCA,GAAUqjG,EAAG3D,QAAQvlH,EAAG6lB,GACpB/2B,KAAKm6H,gBACDjpH,EAAErP,SAAWk1B,EACnB,MAGJ,OAAOmK,CACX,CAOE/gB,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAMujG,EAAcvjG,EACpB,IAAIwjG,EAAa,EACbC,EAAY,EAChB,IAAK,MAAMJ,KAAMp6H,KAAKiqG,OAAQ,CAC5B,IAAI/pF,EAAOk6G,EAAGl6G,KAEd,GADAs6G,EAAa,EAAIt6G,EAAQA,EAAO,OAC5Bpe,IAAcs4H,EAAG9hB,SAAU,CAC7B,MAAMmiB,EAAKzhG,EAAIohG,EAAG9hB,eACdx2G,IAAc24H,IAChBD,EAAYJ,EAAGj6G,OAAOs6G,EAAIvpH,EAAG6lB,GACzB,EAAI7W,IAGNA,EAAOk6G,EAAG3D,QAAQvlH,EAAG6lB,IAGjC,CACMwjG,EAAaxjG,EACbA,GAAU7W,CAChB,CAKI,OAAQq6G,EAAaC,EAAaF,CACtC,CAGE1D,SAAAA,CAAU7vG,GACR,MAAMma,EAAOlhC,KAAKw2H,wBAClB,IAAK,MAAM4D,KAAMp6H,KAAKiqG,YACfnoG,IAAcs4H,EAAG9hB,UACd,EAAIvxF,EAAOllB,SACjBq/B,EAAKk5F,EAAG9hB,UAAYvxF,EAAOhZ,SAG/B,OAAOmzB,CACX,CAUEw5F,SAAAA,CAAUpiB,GACR,GAAI,kBAAoBA,EACtB,MAAM,IAAIr5E,UAAU,2BAEtB,IAAK,MAAMm7F,KAAMp6H,KAAKiqG,OACpB,GAAImwB,EAAG9hB,WAAaA,EAClB,OAAO8hB,CAGf,CAaEO,QAAAA,CAASriB,GACP,GAAI,kBAAoBA,EACtB,MAAM,IAAIr5E,UAAU,2BAEtB,IAAIlI,EAAS,EACb,IAAK,MAAMqjG,KAAMp6H,KAAKiqG,OAAQ,CAC5B,GAAImwB,EAAG9hB,WAAaA,EAClB,OAAOvhF,EAEL,EAAIqjG,EAAGl6G,KACT6W,GAAU,EACD,GAAKA,IACdA,GAAUqjG,EAAGl6G,KAErB,CACA,EAiBA,MAAM06G,GACJ3sH,WAAAA,CAAYqqG,GAKVt4G,KAAKs4G,SAAWA,CACpB,CAME74F,MAAAA,GACE,MAAM,IAAI5b,MAAM,iCACpB,CAMEsc,MAAAA,GACE,MAAM,IAAItc,MAAM,iCACpB,EAoBA,MAAMg3H,WAAiCD,GACrC3sH,WAAAA,CAAYsqG,EAAQD,GAClB,KAAOC,aAAkB2e,IAChB3e,EAAO4e,WACd,MAAM,IAAIl4F,UAAU,qDAGtB74B,MAAMkyG,GAAYC,EAAOD,UAAY,WAIrCt4G,KAAKu4G,OAASA,CAClB,CAGE94F,MAAAA,CAAOvO,EAAG6lB,GACR,OAAO/2B,KAAKu4G,OAAO94F,OAAOvO,EAAG6lB,EACjC,CAGE5W,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GACb,OAAO/2B,KAAKu4G,OAAOp4F,OAAO6Y,EAAK9nB,EAAG6lB,EACtC,EA8DA,MAAM+jG,WAAcvE,GAClBtoH,WAAAA,CAAY8sH,EAAOC,EAAe1iB,GAChC,MAAM2iB,EAAQF,aAAiBxD,IAChBwD,aAAiBvD,GAChC,GAAIyD,EACFF,EAAQ,IAAIF,GAAyB,IAAIvD,GAAayD,SACjD,GAAKA,aAAiB7D,IACf6D,EAAM5D,UAClB4D,EAAQ,IAAIF,GAAyBE,QAChC,KAAMA,aAAiBH,IAC5B,MAAM,IAAI37F,UAAU,oEAMtB,QAHIn9B,IAAck5H,IAChBA,EAAgB,QAEX,OAASA,GACNA,aAAyBzE,IACjC,MAAM,IAAIt3F,UAAU,0CAEtB,GAAI,OAAS+7F,EAAe,CAC1B,GAAI,EAAIA,EAAc96G,KACpB,MAAM,IAAIrc,MAAM,8CAEd/B,IAAck5H,EAAc1iB,WAC9B0iB,EAAgBA,EAActE,UAAU,WAEhD,CAMI,IAAIx2G,GAAQ,EACR86G,IACF96G,EAAO86G,EAAc96G,KAChB,GAAKA,GAAS+6G,IACjB/6G,GAAQ66G,EAAMxiB,OAAOr4F,OAGzB9Z,MAAM8Z,EAAMo4F,GAUZt4G,KAAKk7H,cAAgBH,EAOrB/6H,KAAKm7H,wBAA0BF,EAS/Bj7H,KAAKg7H,cAAgBA,EAYrBh7H,KAAKo7H,SAAW,CAAC,EAGjB,IAAIC,EAAwBr7H,KAAKs7H,wBAAwBv1G,KAAK/lB,MAe9DA,KAAKu7H,iBAAmB,SAASviG,GAC/B,OAAOqiG,EAAsBriG,EACnC,EAeIh5B,KAAKw7H,uBAAyB,SAASC,GACrCJ,EAAwBI,EAAI11G,KAAK/lB,KACvC,CACA,CAGEy2H,OAAAA,CAAQvlH,EAAG6lB,GACT,GAAI,GAAK/2B,KAAKkgB,KACZ,OAAOlgB,KAAKkgB,UAEVpe,IAAci1B,IAChBA,EAAS,GAKX,MAAM2kG,EAAM17H,KAAK27H,WAAWzqH,EAAG6lB,GAC/B,IAAK2kG,EACH,MAAM,IAAI73H,MAAM,qDAElB,OAAO63H,EAAIjF,QAAQvlH,EAAG6lB,EAC1B,CA+BEukG,uBAAAA,CAAwBtiG,GACtB,GAAIA,EAAIxiB,eAAexW,KAAKk7H,cAAc5iB,UAAW,CACnD,GAAIt4G,KAAKg7H,eACFhiG,EAAIxiB,eAAexW,KAAKg7H,cAAc1iB,UAC3C,OAEF,MAAMojB,EAAM17H,KAAKo7H,SAASpiG,EAAIh5B,KAAKk7H,cAAc5iB,WACjD,GAAIojB,KACMA,EAAInjB,QACHv/E,EAAIxiB,eAAeklH,EAAIpjB,WAChC,OAAOojB,CAEf,MACM,IAAK,MAAM52E,KAAO9kD,KAAKo7H,SAAU,CAC/B,MAAMM,EAAM17H,KAAKo7H,SAASt2E,GAC1B,GAAI9rB,EAAIxiB,eAAeklH,EAAIpjB,UACzB,OAAOojB,CAEjB,CAEI,MAAM,IAAI73H,MAAM,8BACpB,CAQE4b,MAAAA,CAAOvO,EAAG6lB,GAIR,IAAImK,OAHAp/B,IAAci1B,IAChBA,EAAS,GAGX,MAAM6kG,EAAM57H,KAAKk7H,cACXH,EAAQa,EAAIn8G,OAAOvO,EAAG6lB,GAC5B,IAAI8kG,EAAM77H,KAAKo7H,SAASL,GACxB,QAAIj5H,IAAc+5H,EAAK,CACrB,IAAIC,EAAgB,EACpBD,EAAM77H,KAAKg7H,cACPh7H,KAAKm7H,0BACPW,EAAgBF,EAAIrjB,OAAOr4F,MAE7BghB,EAAOlhC,KAAKw2H,wBACZt1F,EAAK06F,EAAItjB,UAAYyiB,EACrB75F,EAAK26F,EAAIvjB,UAAYt4G,KAAKg7H,cAAcv7G,OAAOvO,EAAG6lB,EAAS+kG,EACjE,MACM56F,EAAO26F,EAAIp8G,OAAOvO,EAAG6lB,GAEvB,OAAOmK,CACX,CAQE/gB,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,MAAM2kG,EAAM17H,KAAKu7H,iBAAiBviG,GAClC,QAAIl3B,IAAc45H,EAAK,CACrB,MAAME,EAAM57H,KAAKk7H,cACXW,EAAM77H,KAAKg7H,cACjB,IAAIc,EAAgB,EAKpB,OAJI97H,KAAKm7H,0BACPW,EAAgBF,EAAIrjB,OAAOr4F,MAE7B07G,EAAIz7G,OAAO6Y,EAAI4iG,EAAItjB,UAAWpnG,EAAG6lB,GAC1B+kG,EAAgBD,EAAI17G,OAAO6Y,EAAI6iG,EAAIvjB,UAAWpnG,EACnB6lB,EAAS+kG,EACjD,CACI,OAAOJ,EAAIv7G,OAAO6Y,EAAK9nB,EAAG6lB,EAC9B,CAeEglG,UAAAA,CAAWC,EAASzjB,EAAQD,GAC1B,MAAMqe,EAAK,IAAIsF,GAAcj8H,KAAMg8H,EAASzjB,EAAQD,GAEpD,OADAt4G,KAAKo7H,SAASY,GAAWrF,EAClBA,CACX,CAgBEgF,UAAAA,CAAWO,EAAInlG,GACb,IAAIilG,EAAUE,EAOd,OANI33H,EAAOy6B,SAASk9F,UACdp6H,IAAci1B,IAChBA,EAAS,GAEXilG,EAAUh8H,KAAKk7H,cAAcz7G,OAAOy8G,EAAInlG,IAEnC/2B,KAAKo7H,SAASY,EACzB,EAgCA,MAAMC,WAAsB1F,GAC1BtoH,WAAAA,CAAYkuH,EAAOH,EAASzjB,EAAQD,GAClC,KAAM6jB,aAAiBrB,IACrB,MAAM,IAAI77F,UAAU,yBAEtB,IAAM9P,OAAO/T,UAAU4gH,IAAc,EAAIA,EACvC,MAAM,IAAI/8F,UAAU,4CAOtB,GALK,kBAAoBs5E,QACjBz2G,IAAcw2G,IACpBA,EAAWC,EACXA,EAAS,MAEPA,EAAQ,CACV,KAAMA,aAAkBge,IACtB,MAAM,IAAIt3F,UAAU,2BAEtB,GAAK,OAASk9F,EAAMnB,eACZ,GAAKziB,EAAOr4F,MACZq4F,EAAOr4F,KAAOi8G,EAAMnB,cAAc96G,KACxC,MAAM,IAAIrc,MAAM,iDAElB,GAAI,kBAAoBy0G,EACtB,MAAM,IAAIr5E,UAAU,sCAE5B,CACI,IAAI/e,EAAOi8G,EAAMj8G,KACb,EAAIi8G,EAAMj8G,OACZA,EAAOq4F,EAASA,EAAOr4F,KAAO,EACzB,GAAKA,GAASi8G,EAAMhB,0BACvBj7G,GAAQi8G,EAAMjB,cAAc3iB,OAAOr4F,OAGvC9Z,MAAM8Z,EAAMo4F,GAGZt4G,KAAKm8H,MAAQA,EAKbn8H,KAAKg8H,QAAUA,EAMfh8H,KAAKu4G,OAASA,GAAU,IAC5B,CAGEke,OAAAA,CAAQvlH,EAAG6lB,GACT,GAAI,GAAK/2B,KAAKkgB,KAGZ,OAAOlgB,KAAKkgB,UAEVpe,IAAci1B,IAChBA,EAAS,GAEX,IAAI+kG,EAAgB,EAKpB,OAJI97H,KAAKm8H,MAAMhB,0BACbW,EAAgB97H,KAAKm8H,MAAMjB,cAAc3iB,OAAOr4F,MAG3C47G,EAAgB97H,KAAKu4G,OAAOke,QAAQvlH,EAAG6lB,EAAS+kG,EAC3D,CAGEr8G,MAAAA,CAAOvO,EAAG6lB,GACR,MAAMmK,EAAOlhC,KAAKw2H,wBAIlB,QAHI10H,IAAci1B,IAChBA,EAAS,GAEP/2B,OAASA,KAAKm8H,MAAMR,WAAWzqH,EAAG6lB,GACpC,MAAM,IAAIlzB,MAAM,oBAElB,IAAIi4H,EAAgB,EAWpB,OAVI97H,KAAKm8H,MAAMhB,0BACbW,EAAgB97H,KAAKm8H,MAAMjB,cAAc3iB,OAAOr4F,MAE9ClgB,KAAKu4G,OACPr3E,EAAKlhC,KAAKs4G,UAAYt4G,KAAKu4G,OAAO94F,OAAOvO,EAAG6lB,EAAS+kG,GAC5C97H,KAAKs4G,SACdp3E,EAAKlhC,KAAKs4G,WAAY,EACbt4G,KAAKm8H,MAAMhB,0BACpBj6F,EAAKlhC,KAAKm8H,MAAMjB,cAAc5iB,UAAYt4G,KAAKg8H,SAE1C96F,CACX,CAGE/gB,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,QACTj1B,IAAci1B,IAChBA,EAAS,GAEX,IAAI+kG,EAAgB,EAIpB,GAHI97H,KAAKm8H,MAAMhB,0BACbW,EAAgB97H,KAAKm8H,MAAMjB,cAAc3iB,OAAOr4F,MAE9ClgB,KAAKu4G,SACAv/E,EAAIxiB,eAAexW,KAAKs4G,UAC/B,MAAM,IAAIr5E,UAAU,0BAA4Bj/B,KAAKs4G,UAEvDt4G,KAAKm8H,MAAMjB,cAAc/6G,OAAOngB,KAAKg8H,QAAS9qH,EAAG6lB,GACjD,IAAI7W,EAAO47G,EACX,GAAI97H,KAAKu4G,SACPv4G,KAAKu4G,OAAOp4F,OAAO6Y,EAAIh5B,KAAKs4G,UAAWpnG,EAAG6lB,EAAS+kG,GACnD57G,GAAQlgB,KAAKu4G,OAAOke,QAAQvlH,EAAG6lB,EAAS+kG,GACnC,GAAK97H,KAAKm8H,MAAMj8G,MACbA,EAAOlgB,KAAKm8H,MAAMj8G,MACxB,MAAM,IAAIrc,MAAM,6CAGpB,OAAOqc,CACX,CAIE02G,SAAAA,CAAU7vG,GACR,GAAI/mB,KAAKu4G,OACP,OAAOv4G,KAAKu4G,OAAOqe,UAAU7vG,EAEnC,EAyVA,MAAM8sO,WAAat9H,GACjBtoH,WAAAA,CAAYpM,EAAQy2G,GAClB,KAAQz2G,aAAkBq1H,IAAmBr1H,EAAOs1H,WAC1ChoG,OAAO/T,UAAUvZ,IAAY,GAAKA,GAC1C,MAAM,IAAIo9B,UAAU,yEAItB,IAAI/e,GAAQ,EACNre,aAAkBq1H,KACtBh3G,EAAOre,GAETuE,MAAM8Z,EAAMo4F,GAOZt4G,KAAK6B,OAASA,CAClB,CAGE40H,OAAAA,CAAQvlH,EAAG6lB,GACT,IAAI7W,EAAOlgB,KAAKkgB,KAIhB,OAHI,EAAIA,IACNA,EAAOlgB,KAAK6B,OAAO4d,OAAOvO,EAAG6lB,IAExB7W,CACX,CAGET,MAAAA,CAAOvO,EAAG6lB,QACJj1B,IAAci1B,IAChBA,EAAS,GAEX,IAAI7W,EAAOlgB,KAAKkgB,KAIhB,OAHI,EAAIA,IACNA,EAAOlgB,KAAK6B,OAAO4d,OAAOvO,EAAG6lB,IAExB7lB,EAAExD,MAAMqpB,EAAQA,EAAS7W,EACpC,CAOEC,MAAAA,CAAO6Y,EAAK9nB,EAAG6lB,GACb,IAAI7W,EAAOlgB,KAAK6B,OAIhB,GAHI7B,KAAK6B,kBAAkBq1H,KACzBh3G,EAAO8Y,EAAIn3B,SAEP0C,EAAOy6B,SAAShG,IACZ9Y,IAAS8Y,EAAIn3B,OACrB,MAAM,IAAIo9B,UAp9DhB,SAA0BrtB,EAAMsxB,GAC9B,OAAIA,EAAGo1E,SACE1mG,EAAO,IAAMsxB,EAAGo1E,SAAW,IAE7B1mG,CACT,CA+8D0BilH,CAAiB,cAAe72H,MAC9B,qBAAuBkgB,EAAO,mBAEtD,GAAK6W,EAAS7W,EAAQhP,EAAErP,OACtB,MAAM,IAAIk1F,WAAW,4BAMvB,OAJA7lF,EAAEpG,MAAMkuB,EAAIv0B,SAAS,OAAQsyB,EAAQ7W,EAAM,OACvClgB,KAAK6B,kBAAkBq1H,IACzBl3H,KAAK6B,OAAOse,OAAOD,EAAMhP,EAAG6lB,GAEvB7W,CACX,EA6OA,IAAA6W,GAAkBA,CAACwhF,EAAQxhF,EAAQuhF,IAAa,IAAIgf,GAAa/e,EAAQxhF,EAAQuhF,GAgBtEwlB,GAAIxlB,GAAY,IAAIif,GAAK,EAAGjf,GAgE3BumB,GAAIvmB,GAAY,IAAIwgB,GAAUxgB,GAuC1C54F,GAAkBA,CAACuqF,EAAQqO,EAAU6hB,IAAmB,IAAID,GAAUjwB,EAAQqO,EAAU6hB,GASxFgC,GAAiBA,CAACpB,EAAOC,EAAe1iB,IAAa,IAAIwiB,GAAMC,EAAOC,EAAe1iB,GAMrFmnB,GAAgBA,CAAC59H,EAAQy2G,IAAa,IAAIu7I,GAAKhyP,EAAQy2G,SCxoF1Cw7I,GAEX7lP,WAAAA,CAAYwxB,GAAM,CAElBtf,MAAAA,CAAOswO,EAAgBpmO,GACrB,OAAQklO,IAAUkB,IAChB,IAAK,gBACH,OAoGR,SAA4BtxO,GAAgC,IAA/B,SAAE67B,EAAQ,MAAEI,EAAK,MAAE75C,GAAY4d,EAC1D,OAAO40O,GAAW,CAChBr5M,cAAe,CAAEM,WAAUI,QAAO75C,MAAOA,EAAMwD,aAEnD,CAxGeivP,CAAoB3pO,GAE7B,IAAK,SACH,OAuGR,SAAqBu6E,GAAe,IAAd,MAAErjG,GAAYqjG,EAClC,OAAOmvJ,GAAW,CAChBrpK,OAAQ,CAAEnpF,MAAOA,EAAMwD,aAE3B,CA3GekvP,CAAa5pO,GAEtB,IAAK,WACH,OA0GR,SAAuB06E,GAAkB,IAAjB,SAAE/pD,GAAe+pD,EACvC,OAAOgvJ,GAAW,CAChBl5M,SAAU,CAAEG,aAEhB,CA9Gek5M,CAAe7pO,GAExB,IAAK,wBACH,OA6GR,SAAoC86E,GAM9B,IAN+B,KACnC9sF,EAAI,KACJiqC,EAAI,SACJtH,EAAQ,MACRI,EAAK,MACL75C,GACI4jG,EACJ,OAAO4uJ,GACL,CACEI,sBAAuB,CACrB97O,KAAMA,EAAKtT,WACXu9C,OACAtH,WACAI,QACA75C,MAAOA,EAAMwD,aAGjBqvP,GAAOz4H,WAAW,GAAGz7G,KAAOoiC,EAAKzgD,OAErC,CAhIewyP,CAA4BhqO,GAErC,IAAK,sBACH,OAqIR,SAAkCg9E,GAAoB,IAAnB,WAAEitJ,GAAiBjtJ,EACpD,OAAO0sJ,GAAW,CAChBQ,oBAAqB,CAAED,WAAYA,EAAWvvP,aAElD,CAzIeyvP,CAA0BnqO,GAEnC,IAAK,uBACH,OAwIR,SAAmC+vL,GAAkB,IAAjB,SAAEp/J,GAAeo/J,EACnD,OAAO25C,GAAW,CAChBU,qBAAsB,CAAEz5M,aAE5B,CA5Ie05M,CAA2BrqO,GAEpC,IAAK,yBACH,OAyHR,SAAqC+8E,GAAoB,IAAnB,WAAEktJ,GAAiBltJ,EACvD,OAAO2sJ,GAAW,CAChBY,uBAAwB,CAAEL,WAAYA,EAAWvvP,aAErD,CA7He6vP,CAA6BvqO,GAEtC,IAAK,wBACH,OAwIR,SAAoCwwL,GAAoB,IAAnB,WAAEy5C,GAAiBz5C,EACtD,OAAOk5C,GAAW,CAChBc,sBAAuB,CAAEP,WAAYA,EAAWvvP,aAEpD,CA5Ie+vP,CAA4BzqO,GAErC,IAAK,WACH,OA2IR,SAAuB21L,GAAe,IAAd,MAAE5kK,GAAY4kK,EACpC,OAAO+zC,GAAW,CAChBtwN,SAAU,CAAE2X,UAEhB,CA/Ie25M,CAAe1qO,GAExB,IAAK,mBACH,OA8IR,SAA+B2qO,GAAkC,IAAjC,KAAE38O,EAAI,KAAEiqC,EAAI,MAAElH,EAAK,MAAE75C,GAAYyzP,EAC/D,OAAOjB,GACL,CACEkB,iBAAkB,CAChB58O,KAAMA,EAAKtT,WACXu9C,OACAlH,QACA75C,MAAOA,EAAMwD,aAGjBqvP,GAAOz4H,WAAW,GAAGz7G,KAAOoiC,EAAKzgD,OAErC,CA1JeqzP,CAAuB7qO,GAEhC,IAAK,iBACH,OAyJR,SAA6B8qO,GAA2B,IAA1B,KAAE98O,EAAI,KAAEiqC,EAAI,MAAE/gD,GAAY4zP,EACtD,OAAOpB,GACL,CACEqB,eAAgB,CACd/8O,KAAMA,EAAKtT,WACXu9C,OACA/gD,MAAOA,EAAMwD,aAGjBqvP,GAAOz4H,WAAW,IAAIz7G,KAAOoiC,EAAKzgD,OAEtC,CApKewzP,CAAqBhrO,GAE9B,IAAK,mBACH,OAmKR,SAA+BirO,GAA+B,IAA9B,SAAEt6M,EAAQ,KAAEsH,EAAI,MAAE/gD,GAAY+zP,EAC5D,OAAOvB,GACL,CACEwB,iBAAkB,CAChBv6M,WACAsH,OACA/gD,MAAOA,EAAMwD,aAGjBqvP,GAAOz4H,WAAW,IAAIz7G,KAAOoiC,EAAKzgD,OAEtC,CA9Ke2zP,CAAuBnrO,GAEhC,QACE,MAAM,IAAIxmB,MAAM,wBAAwB4sP,MAK9CgF,WAAAA,CAAYC,EAAiBC,GAC3B,MAAM,IAAI9xP,MAAM,+BAIpB,MAAM+xP,WAAyBhC,GAgB7B3lP,WAAAA,CAAmBqqG,GACjB,OAAO,EAAGA,GADO,KAAQA,SAARA,EAfnB,KAAAC,OAAS74F,GAOP,CACEo+G,GAAiB,UACjBA,GAAiB,iBACjB2B,GAAkB1oG,GAAoB+mG,MAAqB,GAAI,UAEjE,KAAKxlB,UAOPn4F,MAAAA,CAAO6Y,EAAoB9nB,GAAqB,IAAV6lB,EAAMn1B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAC7C,GAAY,OAARo3B,QAAwBl3B,IAARk3B,EAClB,OAAO,KAAKu/E,OAAOr4F,KAGrB,MAAMvc,EAAO,CACXkyP,MAAOtxP,EAAOC,KAAKw0B,EAAK,SAG1B,OAAO,KAAKu/E,OAAOp4F,OAAOxc,EAAMuN,EAAG6lB,GAGrCtX,MAAAA,CAAOvO,GAAqB,IAAV6lB,EAAMn1B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAEzB,OADa,KAAK22G,OAAO94F,OAAOvO,EAAG6lB,GAChB,MAAEtyB,WAGvBgyH,OAAAA,CAAQvlH,GAAqB,IAAV6lB,EAAMn1B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAC1B,OACEk8H,KAAmB59G,KACnB49G,KAAmB59G,KACnB,IAAImI,IAAJ,CAAO,IAAIiI,WAAWpf,GAAGxD,MAAMqpB,EAAQA,EAAS,GAAI,GAAI,MAAMtY,YAKpE,SAASq3O,GAAiBx9I,GACxB,OAAO,IAAIs9I,GAAiBt9I,EAC9B,CAEA,SAASy9I,GAAUz9I,GACjB,OAAOmnB,GAAkB,GAAInnB,EAC/B,CA+GA,MAAM87I,GAASj4H,GAAmB2B,GAAiB,gBAiFnD,SAASi2H,GAAW10O,EAAkBo+G,GACpC,MAAMvsH,EAAI3M,EAAO0b,MAAM,OAAAw9G,QAAA,IAAAA,EAAAA,EAAWu4H,IAC5B91O,EAAOk0O,GAAOj0O,OAAOd,EAAanO,GAExC,YAAgBpP,IAAZ27H,EACKvsH,EAAExD,MAAM,EAAGwS,GAGbhP,CACT,CAzFAkjP,GAAOr4H,WACL,EACAr8G,GAAoB,CAClBm/G,GAAkB,YAClBA,GAAkB,SAClBk3H,GAAU,WAEZ,iBAEF3B,GAAOr4H,WAAW,EAAGr8G,GAAoB,CAACq2O,GAAU,WAAY,UAChE3B,GAAOr4H,WACL,EACAr8G,GAAoB,CAACm/G,GAAkB,cACvC,YAEFu1H,GAAOr4H,WACL,EACAr8G,GAAoB,CAClBq2O,GAAU,QACVD,GAAiB,QACjBj3H,GAAkB,YAClBA,GAAkB,SAClBk3H,GAAU,WAEZ,yBAEF3B,GAAOr4H,WACL,EACAr8G,GAAoB,CAACq2O,GAAU,gBAC/B,uBAEF3B,GAAOr4H,WACL,EACAr8G,GAAoB,CAACm/G,GAAkB,cACvC,wBAEFu1H,GAAOr4H,WACL,EACAr8G,GAAoB,CAACq2O,GAAU,gBAC/B,0BAEF3B,GAAOr4H,WACL,EACAr8G,GAAoB,CAACq2O,GAAU,gBAC/B,yBAEF3B,GAAOr4H,WACL,EACAr8G,GAAoB,CAACm/G,GAAkB,WACvC,YAEFu1H,GAAOr4H,WACL,EACAr8G,GAAoB,CAClBq2O,GAAU,QACVD,GAAiB,QACjBj3H,GAAkB,SAClBk3H,GAAU,WAEZ,oBAEF3B,GAAOr4H,WACL,GACAr8G,GAAoB,CAClBq2O,GAAU,QACVD,GAAiB,QACjBC,GAAU,WAEZ,kBAEF3B,GAAOr4H,WACL,GACAr8G,GAAoB,CAClBm/G,GAAkB,YAClBi3H,GAAiB,QACjBC,GAAU,WAEZ,oBAcF,MAAMC,GAAqB5sP,KAAKuI,OAC3B3O,OAAO+jB,OAAOqtO,GAAOh5H,UAAU1yH,KAAKmI,GAAWA,EAAEqP,cCrTzC+1O,GAGXhoP,WAAAA,CAAoB01O,GAAA,KAAGA,IAAHA,EAEb,YAAMxjO,CAAgBuqO,EAAgBl4N,GAC3C,GACO,UADCk4N,EACQ,CACZ,MAAMr6N,EAAS9rB,EAAO0b,MAAMi2O,EAAAA,sBACtB/jP,EAAMgkP,GAAqBh2O,OAAOqS,EAASnC,GACjD,OAAOA,EAAO3iB,MAAM,EAAGyE,EACxB,CAEC,MAAM,IAAItO,MAAM,yBAAyB6mP,KAKxCjrO,MAAAA,CAAgBirO,EAAgBrgO,GACrC,OAAO,KAAKuoO,gBAAgBlI,EAAargO,GAGpCuoO,eAAAA,CAAyBlI,EAAgBrgO,GAC9C,GACO,UADCqgO,EAEJ,OA2BR,SAAqCrgO,GACnC,OAAO8rO,GAAqB12O,OAAO4K,EACrC,CA7Be+rO,CAAmB/rO,GAG1B,MAAM,IAAIxmB,MAAM,yBAAyB6mP,KAMxCqI,MAAAA,CAAOrI,EAAgB2L,GAC5B,GACO,UADC3L,EAEJ,MAAO,CACLr+G,SAAU6pH,EAAAA,sBAIZ,MAAM,IAAIryP,MAAM,yBAAyB6mP,KAKxCxgO,IAAAA,CAAK8nO,SACV,OAA4C,QAArCpoH,EAAAmoH,GAAY,KAAKpO,IAAKqO,UAAe,IAAApoH,EAAAA,EAAA,GAQhD,MAAM0sH,WAA4B1C,GAKhC3lP,WAAAA,CACEsqG,EACA1pF,EACA0pN,EACAjgI,GAEA,MAAMC,EAAOr4F,KAAMo4F,GACnB,KAAKC,OAASA,EACd,KAAK1pF,QAAUA,EACf,KAAK0pN,QAAUA,EAGjB94N,MAAAA,CAAOvO,EAAW6lB,GAChB,OAAO,KAAKlI,QAAQ,KAAK0pF,OAAO94F,OAAOvO,EAAG6lB,IAG5C5W,MAAAA,CAAO6Y,EAAQ9nB,EAAW6lB,GACxB,OAAO,KAAKwhF,OAAOp4F,OAAO,KAAKo4N,QAAQv/M,GAAM9nB,EAAG6lB,GAGlD0/F,OAAAA,CAAQvlH,EAAW6lB,GACjB,OAAO,KAAKwhF,OAAOke,QAAQvlH,EAAG6lB,IAIlC,SAASw/N,GAAUj+I,GACjB,OAAO,IAAIg+I,GACT72H,GAAkB,KACjBvuH,GAAc,IAAIpM,EAAAA,UAAUoM,KAC5BlH,GAAmBA,EAAIjF,YACxBuzG,EAEJ,CAEA,MAAM69I,GAAuBz2O,GAAoB,CAC/Co+G,GAAiB,WACjBA,GAAiB,SACjBy4H,GAAU,oBACVA,GAAU,SACV72O,GACE,EFy7EY44F,GEz7EO,uBFy7EK,IAAIkgB,GAAWlgB,MEx7EvC,mBFw7EYA,aG/hFHk+I,GACXvoP,WAAAA,CAAYwoP,GAAS,CAErBh3O,MAAAA,CACEi3O,GAEA,MAAM,IAAI7yP,MAAM,8CCRP8yP,GACX1oP,WAAAA,CAAYwoP,GAAS,CAErBt2O,MAAAA,CAAgB2zM,EAAe8iC,GAC7B,MAAM,IAAI/yP,MAAM,2CAElB4b,MAAAA,CAAgBq0M,EAAe+iC,GAC7B,MAAM,IAAIhzP,MAAM,kDCAPizP,GAMX7oP,WAAAA,CAAY01O,GACV,KAAKtkO,YAAc,IAAIy0O,GAAuBnQ,GAC9C,KAAK94N,SAAW,IAAIorO,GAAoBtS,GACxC,KAAKx1O,OAAS,IAAIqoP,GAAkB7S,GACpC,KAAK3gK,MAAQ,IAAI2zK,GAAiBhT,8CClBhC,SAAehgP,GACnB,OAAO,IAAIm0E,aAAcr4D,QAAOqyO,EAAAA,EAAAA,IAAOnuP,GACzC,aCegBozP,GACd/0P,GAGA,IAAIgzK,EAAQ,CAACquE,EAAAA,OAAO7+O,KAAK,CAAC,GAAI,IAAK,GAAI,IAAK,IAAK,OAAO,QAAAqkB,EAAAjnB,UAAAC,OAFrDsT,EAA6B,IAAAhL,MAAA0e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAA7B3T,EAA6B2T,EAAA,GAAAlnB,UAAAknB,GAGhC3T,EAAKpG,SAAS8tG,IACZm4D,EAAM1tK,KAAKu1G,aAAewmI,EAAAA,OAASxmI,EAAMonI,EAAiBpnI,GAAK93G,WAAW,IAE5E,MAAOiyP,GAASlyP,EAAAA,UAAUmwK,uBACxBD,EACAivE,EAAiBjiP,IAEnB,OAAOg1P,CACT,kEAzBEC,EACA30M,EACAtgD,GAEA,MAAMquB,EAASgzN,EAAAA,OAAOlrO,OAAO,CAC3B8+O,EAAclyP,WACds+O,EAAAA,OAAO7+O,KAAK89C,GACZtgD,EAAU+C,aAEZ,OAAO,IAAID,EAAAA,WAAUgtP,EAAAA,EAAAA,IAAOzhO,GAC9B,kBCfO,MAAMsC,GAAmB,IAAI7tB,EAAAA,UAClC,+CAEWoyP,GAAwB,IAAIpyP,EAAAA,UACvC,6JAG+BqyP,GAMhC,IANiC,KAChC91P,EAAI,MACJE,GAID41P,EACC,OAAOryP,EAAAA,UAAUmwK,uBACf,CAAC1zK,EAAMwD,WAAY4tB,GAAiB5tB,WAAY1D,EAAK0D,YACrDmyP,IACA,EACJ,mCCpBA,IAAIrgK,EAAyB,qBAAT5zD,KAAuBA,KAAOm0N,GAC9CC,EAAY,WAChB,SAAStsK,IACT/qF,KAAK+tB,OAAQ,EACb/tB,KAAKs3P,aAAezgK,EAAOygK,YAC3B,CAEA,OADAvsK,EAAEngF,UAAYisF,EACP,IAAI9L,CACX,CAPgB,IAQhB,SAAU9nD,IAEO,SAAWnjC,GAE1B,IAAIy3P,EACY,oBAAqBt0N,EADjCs0N,EAEQ,WAAYt0N,GAAQ,aAAcX,OAF1Ci1N,EAIA,eAAgBt0N,GAChB,SAAUA,GACT,WACC,IAEE,OADA,IAAIo6F,MACG,CACjB,CAAU,MAAO9rH,GACP,OAAO,CACjB,CACA,CAPO,GANDgmP,EAcQ,aAAct0N,EAdtBs0N,EAeW,gBAAiBt0N,EAOhC,GAAIs0N,EACF,IAAIC,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFh5N,YAAYC,QACZ,SAAS9vB,GACP,OAAOA,GAAO4oP,EAAYjjP,QAAQvR,OAAO4H,UAAUnG,SAASqS,KAAKlI,KAAS,CAClF,EAGE,SAAS8oP,EAAc9lP,GAIrB,GAHoB,kBAATA,IACTA,EAAOC,OAAOD,IAEZ,4BAA4B0C,KAAK1C,GACnC,MAAM,IAAIqtB,UAAU,0CAEtB,OAAOrtB,EAAKgD,aAChB,CAEE,SAAS+iP,EAAez0P,GAItB,MAHqB,kBAAVA,IACTA,EAAQ2O,OAAO3O,IAEVA,CACX,CAGE,SAAS00P,EAAY7iC,GACnB,IAAI1qI,EAAW,CACb5yD,KAAM,WACJ,IAAIv0B,EAAQ6xN,EAAMhnN,QAClB,MAAO,CAACqsB,UAAgBt4B,IAAVoB,EAAqBA,MAAOA,EAClD,GASI,OANIq0P,IACFltK,EAAS/nD,OAAO+nD,UAAY,WAC1B,OAAOA,CACf,GAGWA,CACX,CAEE,SAASwtK,EAAQxrO,GACfrsB,KAAK0I,IAAM,CAAC,EAER2jB,aAAmBwrO,EACrBxrO,EAAQtd,SAAQ,SAAS7L,EAAO0O,GAC9B5R,KAAK8nF,OAAOl2E,EAAM1O,EAC1B,GAASlD,MACMmK,MAAMi3B,QAAQ/U,GACvBA,EAAQtd,SAAQ,SAASmjB,GACvBlyB,KAAK8nF,OAAO51D,EAAO,GAAIA,EAAO,GACtC,GAASlyB,MACMqsB,GACTrpB,OAAOuhF,oBAAoBl4D,GAAStd,SAAQ,SAAS6C,GACnD5R,KAAK8nF,OAAOl2E,EAAMya,EAAQza,GAClC,GAAS5R,KAET,CA8DE,SAAS83P,EAAS7rO,GAChB,GAAIA,EAAK8rO,SACP,OAAO1zP,QAAQkkB,OAAO,IAAI0W,UAAU,iBAEtChT,EAAK8rO,UAAW,CACpB,CAEE,SAASC,EAAgBzqB,GACvB,OAAO,IAAIlpO,SAAQ,SAASC,EAASikB,GACnCglN,EAAOl3B,OAAS,WACd/xM,EAAQipO,EAAO5+M,OACvB,EACM4+M,EAAOtyK,QAAU,WACf1yC,EAAOglN,EAAO1qN,MACtB,CACA,GACA,CAEE,SAASo1O,EAAsBx4H,GAC7B,IAAI8tG,EAAS,IAAI2qB,WACb7uO,EAAU2uO,EAAgBzqB,GAE9B,OADAA,EAAO4qB,kBAAkB14H,GAClBp2G,CACX,CAmBE,SAAS+uO,EAAY/wL,GACnB,GAAIA,EAAI35D,MACN,OAAO25D,EAAI35D,MAAM,GAEjB,IAAI6iB,EAAO,IAAID,WAAW+2C,EAAItoC,YAE9B,OADAxO,EAAKja,IAAI,IAAIga,WAAW+2C,IACjB92C,EAAKF,MAElB,CAEE,SAASgoO,IA0FP,OAzFAr4P,KAAK+3P,UAAW,EAEhB/3P,KAAKs4P,UAAY,SAASrsO,GAhM5B,IAAoBrd,EAiMhB5O,KAAKu4P,UAAYtsO,EACZA,EAEsB,kBAATA,EAChBjsB,KAAKw4P,UAAYvsO,EACRsrO,GAAgBl6H,KAAKzyH,UAAU6tP,cAAcxsO,GACtDjsB,KAAK04P,UAAYzsO,EACRsrO,GAAoBoB,SAAS/tP,UAAU6tP,cAAcxsO,GAC9DjsB,KAAK44P,cAAgB3sO,EACZsrO,GAAwBsB,gBAAgBjuP,UAAU6tP,cAAcxsO,GACzEjsB,KAAKw4P,UAAYvsO,EAAKxnB,WACb8yP,GAAuBA,KA5MlB3oP,EA4M6Cqd,IA3MjDoyF,SAASzzG,UAAU6tP,cAAc7pP,KA4M3C5O,KAAK84P,iBAAmBV,EAAYnsO,EAAKoE,QAEzCrwB,KAAKu4P,UAAY,IAAIl7H,KAAK,CAACr9H,KAAK84P,oBACvBvB,IAAwB94N,YAAY7zB,UAAU6tP,cAAcxsO,IAASwrO,EAAkBxrO,IAChGjsB,KAAK84P,iBAAmBV,EAAYnsO,GAEpCjsB,KAAKw4P,UAAYvsO,EAAOjpB,OAAO4H,UAAUnG,SAASqS,KAAKmV,GAhBvDjsB,KAAKw4P,UAAY,GAmBdx4P,KAAKqsB,QAAQzgB,IAAI,kBACA,kBAATqgB,EACTjsB,KAAKqsB,QAAQ/V,IAAI,eAAgB,4BACxBtW,KAAK04P,WAAa14P,KAAK04P,UAAU/wP,KAC1C3H,KAAKqsB,QAAQ/V,IAAI,eAAgBtW,KAAK04P,UAAU/wP,MACvC4vP,GAAwBsB,gBAAgBjuP,UAAU6tP,cAAcxsO,IACzEjsB,KAAKqsB,QAAQ/V,IAAI,eAAgB,mDAG3C,EAEQihP,IACFv3P,KAAKy/H,KAAO,WACV,IAAIs5H,EAAWjB,EAAS93P,MACxB,GAAI+4P,EACF,OAAOA,EAGT,GAAI/4P,KAAK04P,UACP,OAAOr0P,QAAQC,QAAQtE,KAAK04P,WACvB,GAAI14P,KAAK84P,iBACd,OAAOz0P,QAAQC,QAAQ,IAAI+4H,KAAK,CAACr9H,KAAK84P,oBACjC,GAAI94P,KAAK44P,cACd,MAAM,IAAI/0P,MAAM,wCAEhB,OAAOQ,QAAQC,QAAQ,IAAI+4H,KAAK,CAACr9H,KAAKw4P,YAEhD,EAEMx4P,KAAK0tO,YAAc,WACjB,OAAI1tO,KAAK84P,iBACAhB,EAAS93P,OAASqE,QAAQC,QAAQtE,KAAK84P,kBAEvC94P,KAAKy/H,OAAOz2H,KAAKivP,EAElC,GAGIj4P,KAAKouB,KAAO,WACV,IAAI2qO,EAAWjB,EAAS93P,MACxB,GAAI+4P,EACF,OAAOA,EAGT,GAAI/4P,KAAK04P,UACP,OAjGN,SAAwBj5H,GACtB,IAAI8tG,EAAS,IAAI2qB,WACb7uO,EAAU2uO,EAAgBzqB,GAE9B,OADAA,EAAOyrB,WAAWv5H,GACXp2G,CACX,CA4Fe4vO,CAAej5P,KAAK04P,WACtB,GAAI14P,KAAK84P,iBACd,OAAOz0P,QAAQC,QA5FrB,SAA+B+iE,GAI7B,IAHA,IAAI92C,EAAO,IAAID,WAAW+2C,GACtBwuL,EAAQ,IAAI1rP,MAAMomB,EAAK1uB,QAElBmJ,EAAI,EAAGA,EAAIulB,EAAK1uB,OAAQmJ,IAC/B6qP,EAAM7qP,GAAK6G,OAAO4oB,aAAalK,EAAKvlB,IAEtC,OAAO6qP,EAAM34L,KAAK,GACtB,CAoF+Bg8L,CAAsBl5P,KAAK84P,mBAC7C,GAAI94P,KAAK44P,cACd,MAAM,IAAI/0P,MAAM,wCAEhB,OAAOQ,QAAQC,QAAQtE,KAAKw4P,UAEpC,EAEQjB,IACFv3P,KAAKm5P,SAAW,WACd,OAAOn5P,KAAKouB,OAAOplB,KAAKyW,EAChC,GAGIzf,KAAKwuB,KAAO,WACV,OAAOxuB,KAAKouB,OAAOplB,KAAK2kB,KAAKwE,MACnC,EAEWnyB,IACX,CA3ME63P,EAAQjtP,UAAUk9E,OAAS,SAASl2E,EAAM1O,GACxC0O,EAAO8lP,EAAc9lP,GACrB1O,EAAQy0P,EAAez0P,GACvB,IAAIk2P,EAAWp5P,KAAK0I,IAAIkJ,GACxB5R,KAAK0I,IAAIkJ,GAAQwnP,EAAWA,EAAW,KAAOl2P,EAAQA,CAC1D,EAEE20P,EAAQjtP,UAAkB,OAAI,SAASgH,UAC9B5R,KAAK0I,IAAIgvP,EAAc9lP,GAClC,EAEEimP,EAAQjtP,UAAUgB,IAAM,SAASgG,GAE/B,OADAA,EAAO8lP,EAAc9lP,GACd5R,KAAKssB,IAAI1a,GAAQ5R,KAAK0I,IAAIkJ,GAAQ,IAC7C,EAEEimP,EAAQjtP,UAAU0hB,IAAM,SAAS1a,GAC/B,OAAO5R,KAAK0I,IAAI8N,eAAekhP,EAAc9lP,GACjD,EAEEimP,EAAQjtP,UAAU0L,IAAM,SAAS1E,EAAM1O,GACrClD,KAAK0I,IAAIgvP,EAAc9lP,IAAS+lP,EAAez0P,EACnD,EAEE20P,EAAQjtP,UAAUmE,QAAU,SAASi6F,EAAUqwJ,GAC7C,IAAK,IAAIznP,KAAQ5R,KAAK0I,IAChB1I,KAAK0I,IAAI8N,eAAe5E,IAC1Bo3F,EAASlyF,KAAKuiP,EAASr5P,KAAK0I,IAAIkJ,GAAOA,EAAM5R,KAGrD,EAEE63P,EAAQjtP,UAAUwU,KAAO,WACvB,IAAI21M,EAAQ,GAIZ,OAHA/0N,KAAK+O,SAAQ,SAAS7L,EAAO0O,GAC3BmjN,EAAMztN,KAAKsK,EACjB,IACWgmP,EAAY7iC,EACvB,EAEE8iC,EAAQjtP,UAAUmc,OAAS,WACzB,IAAIguM,EAAQ,GAIZ,OAHA/0N,KAAK+O,SAAQ,SAAS7L,GACpB6xN,EAAMztN,KAAKpE,EACjB,IACW00P,EAAY7iC,EACvB,EAEE8iC,EAAQjtP,UAAUmlJ,QAAU,WAC1B,IAAIglE,EAAQ,GAIZ,OAHA/0N,KAAK+O,SAAQ,SAAS7L,EAAO0O,GAC3BmjN,EAAMztN,KAAK,CAACsK,EAAM1O,GACxB,IACW00P,EAAY7iC,EACvB,EAEMwiC,IACFM,EAAQjtP,UAAU03B,OAAO+nD,UAAYwtK,EAAQjtP,UAAUmlJ,SAqJzD,IAAI5e,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAASnlH,EAAQ/rB,EAAO2hB,GAEtB,IAAIqK,GADJrK,EAAUA,GAAW,CAAC,GACHqK,KAEnB,GAAIhsB,aAAiB+rB,EAAS,CAC5B,GAAI/rB,EAAM83P,SACR,MAAM,IAAI94N,UAAU,gBAEtBj/B,KAAKusB,IAAMtsB,EAAMssB,IACjBvsB,KAAKs5P,YAAcr5P,EAAMq5P,YACpB13O,EAAQyK,UACXrsB,KAAKqsB,QAAU,IAAIwrO,EAAQ53P,EAAMosB,UAEnCrsB,KAAKmsB,OAASlsB,EAAMksB,OACpBnsB,KAAKyK,KAAOxK,EAAMwK,KAClBzK,KAAKysB,OAASxsB,EAAMwsB,OACfR,GAA2B,MAAnBhsB,EAAMs4P,YACjBtsO,EAAOhsB,EAAMs4P,UACbt4P,EAAM83P,UAAW,EAEzB,MACM/3P,KAAKusB,IAAM1a,OAAO5R,GAYpB,GATAD,KAAKs5P,YAAc13O,EAAQ03O,aAAet5P,KAAKs5P,aAAe,eAC1D13O,EAAQyK,SAAYrsB,KAAKqsB,UAC3BrsB,KAAKqsB,QAAU,IAAIwrO,EAAQj2O,EAAQyK,UAErCrsB,KAAKmsB,OAjCP,SAAyBA,GACvB,IAAIotO,EAAUptO,EAAOxX,cACrB,OAAOw8H,EAAQ58H,QAAQglP,IAAY,EAAIA,EAAUptO,CACrD,CA8BkBqtO,CAAgB53O,EAAQuK,QAAUnsB,KAAKmsB,QAAU,OAC/DnsB,KAAKyK,KAAOmX,EAAQnX,MAAQzK,KAAKyK,MAAQ,KACzCzK,KAAKysB,OAAS7K,EAAQ6K,QAAUzsB,KAAKysB,OACrCzsB,KAAKy5P,SAAW,MAEK,QAAhBz5P,KAAKmsB,QAAoC,SAAhBnsB,KAAKmsB,SAAsBF,EACvD,MAAM,IAAIgT,UAAU,6CAEtBj/B,KAAKs4P,UAAUrsO,EACnB,CAME,SAASxM,EAAOwM,GACd,IAAIytO,EAAO,IAAIf,SAYf,OAXA1sO,EACGhf,OACA1E,MAAM,KACNwG,SAAQ,SAASovC,GAChB,GAAIA,EAAO,CACT,IAAI51C,EAAQ41C,EAAM51C,MAAM,KACpBqJ,EAAOrJ,EAAMwF,QAAQf,QAAQ,MAAO,KACpC9J,EAAQqF,EAAM20D,KAAK,KAAKlwD,QAAQ,MAAO,KAC3C0sP,EAAK5xK,OAAO+6I,mBAAmBjxN,GAAOixN,mBAAmB3/N,GACnE,CACA,IACWw2P,CACX,CAEE,SAASC,EAAaC,GACpB,IAAIvtO,EAAU,IAAIwrO,EAYlB,OAT0B+B,EAAW5sP,QAAQ,eAAgB,KACzCzE,MAAM,SAASwG,SAAQ,SAASy7O,GAClD,IAAI78O,EAAQ68O,EAAKjiP,MAAM,KACnByB,EAAM2D,EAAMI,QAAQd,OACxB,GAAIjD,EAAK,CACP,IAAI9G,EAAQyK,EAAMuvD,KAAK,KAAKjwD,OAC5Bof,EAAQy7D,OAAO99E,EAAK9G,EAC5B,CACA,IACWmpB,CACX,CAIE,SAASuxL,EAASi8C,EAAUj4O,GACrBA,IACHA,EAAU,CAAC,GAGb5hB,KAAK2H,KAAO,UACZ3H,KAAKkuB,YAA4BpsB,IAAnB8f,EAAQsM,OAAuB,IAAMtM,EAAQsM,OAC3DluB,KAAKo6N,GAAKp6N,KAAKkuB,QAAU,KAAOluB,KAAKkuB,OAAS,IAC9CluB,KAAKsuB,WAAa,eAAgB1M,EAAUA,EAAQ0M,WAAa,KACjEtuB,KAAKqsB,QAAU,IAAIwrO,EAAQj2O,EAAQyK,SACnCrsB,KAAKusB,IAAM3K,EAAQ2K,KAAO,GAC1BvsB,KAAKs4P,UAAUuB,EACnB,CAlDE7tO,EAAQphB,UAAUyH,MAAQ,WACxB,OAAO,IAAI2Z,EAAQhsB,KAAM,CAACisB,KAAMjsB,KAAKu4P,WACzC,EAkCEF,EAAKvhP,KAAKkV,EAAQphB,WAgBlBytP,EAAKvhP,KAAK8mM,EAAShzM,WAEnBgzM,EAAShzM,UAAUyH,MAAQ,WACzB,OAAO,IAAIurM,EAAS59M,KAAKu4P,UAAW,CAClCrqO,OAAQluB,KAAKkuB,OACbI,WAAYtuB,KAAKsuB,WACjBjC,QAAS,IAAIwrO,EAAQ73P,KAAKqsB,SAC1BE,IAAKvsB,KAAKusB,KAEhB,EAEEqxL,EAAS/6L,MAAQ,WACf,IAAI8Q,EAAW,IAAIiqL,EAAS,KAAM,CAAC1vL,OAAQ,EAAGI,WAAY,KAE1D,OADAqF,EAAShsB,KAAO,QACTgsB,CACX,EAEE,IAAImmO,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5Cl8C,EAAS/3H,SAAW,SAASt5D,EAAK2B,GAChC,IAA0C,IAAtC4rO,EAAiBvlP,QAAQ2Z,GAC3B,MAAM,IAAI6oE,WAAW,uBAGvB,OAAO,IAAI6mH,EAAS,KAAM,CAAC1vL,OAAQA,EAAQ7B,QAAS,CAAC4nK,SAAU1nK,IACnE,EAEEzsB,EAAQw3P,aAAer0N,EAAKq0N,aAC5B,IACE,IAAIx3P,EAAQw3P,YAChB,CAAI,MAAO1tO,GACP9pB,EAAQw3P,aAAe,SAASrpO,EAASrc,GACvC5R,KAAKiuB,QAAUA,EACfjuB,KAAK4R,KAAOA,EACZ,IAAIiR,EAAQhf,MAAMoqB,GAClBjuB,KAAKoqG,MAAQvnF,EAAMunF,KACzB,EACItqG,EAAQw3P,aAAa1sP,UAAY5H,OAAO0G,OAAO7F,MAAM+G,WACrD9K,EAAQw3P,aAAa1sP,UAAUqD,YAAcnO,EAAQw3P,YACzD,CAEE,SAASvpO,EAAM9tB,EAAOkP,GACpB,OAAO,IAAI9K,SAAQ,SAASC,EAASikB,GACnC,IAAIkL,EAAU,IAAIzH,EAAQ/rB,EAAOkP,GAEjC,GAAIskB,EAAQhH,QAAUgH,EAAQhH,OAAO5C,QACnC,OAAOtB,EAAO,IAAIzoB,EAAQw3P,aAAa,UAAW,eAGpD,IAAIyC,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAIrsO,OACZ,CAEMqsO,EAAI1jD,OAAS,WACX,IAAIz0L,EAAU,CACZsM,OAAQ6rO,EAAI7rO,OACZI,WAAYyrO,EAAIzrO,WAChBjC,QAASstO,EAAaI,EAAIG,yBAA2B,KAEvDt4O,EAAQ2K,IAAM,gBAAiBwtO,EAAMA,EAAII,YAAcv4O,EAAQyK,QAAQzgB,IAAI,iBAC3E,IAAIqgB,EAAO,aAAc8tO,EAAMA,EAAIpmO,SAAWomO,EAAIp5H,aAClDr8H,EAAQ,IAAIs5M,EAAS3xL,EAAMrK,GACnC,EAEMm4O,EAAI9+L,QAAU,WACZ1yC,EAAO,IAAI0W,UAAU,0BAC7B,EAEM86N,EAAIK,UAAY,WACd7xO,EAAO,IAAI0W,UAAU,0BAC7B,EAEM86N,EAAIM,QAAU,WACZ9xO,EAAO,IAAIzoB,EAAQw3P,aAAa,UAAW,cACnD,EAEMyC,EAAI/+L,KAAKvnC,EAAQtH,OAAQsH,EAAQlH,KAAK,GAEV,YAAxBkH,EAAQ6lO,YACVS,EAAIO,iBAAkB,EACW,SAAxB7mO,EAAQ6lO,cACjBS,EAAIO,iBAAkB,GAGpB,iBAAkBP,GAAOxC,IAC3BwC,EAAIvqE,aAAe,QAGrB/7J,EAAQpH,QAAQtd,SAAQ,SAAS7L,EAAO0O,GACtCmoP,EAAIQ,iBAAiB3oP,EAAM1O,EACnC,IAEUuwB,EAAQhH,SACVgH,EAAQhH,OAAO/D,iBAAiB,QAASuxO,GAEzCF,EAAIS,mBAAqB,WAEA,IAAnBT,EAAIU,YACNhnO,EAAQhH,OAAOu9H,oBAAoB,QAASiwG,EAExD,GAGMF,EAAIp2O,KAAkC,qBAAtB8P,EAAQ8kO,UAA4B,KAAO9kO,EAAQ8kO,UACzE,GACA,CAEExqO,EAAM2sO,UAAW,EAEZz3N,EAAKlV,QACRkV,EAAKlV,MAAQA,EACbkV,EAAK40N,QAAUA,EACf50N,EAAKjX,QAAUA,EACfiX,EAAK26K,SAAWA,GAGlB99M,EAAQ+3P,QAAUA,EAClB/3P,EAAQksB,QAAUA,EAClBlsB,EAAQ89M,SAAWA,EACnB99M,EAAQiuB,MAAQA,EAEhB/qB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,GAIvD,CAhhBgB,CAghBd,CAAC,EACH,CAnhBD,CAmhBGm0P,GACHA,EAAStpO,MAAM4sO,UAAW,SAEnBtD,EAAStpO,MAAM2sO,SAGtB,IAAIzoN,EAAMolN,GACVv3P,EAAUmyC,EAAIlkB,OACIg3D,QAAA9yC,EAAIlkB,MACtBjuB,EAAgBiuB,MAAAkkB,EAAIlkB,MACpBjuB,EAAkB+3P,QAAA5lN,EAAI4lN,QACtB/3P,EAAkBksB,QAAAimB,EAAIjmB,QACtBlsB,EAAmB89M,SAAA3rK,EAAI2rK,SACvB79M,EAAiBD,QAAAA,wCC5fV,eAAe86P,GACpB15P,EACAc,GAEA,MAAM64P,QAAoB35P,EAAWwzF,eAAe1yF,GACpD,GAAoB,OAAhB64P,EACF,MAAM,IAAIh3P,MAAM,6BAElB,MAAM,QAAEs1G,GAAY2hJ,GAA6BD,EAAYl3P,MACvDo3P,QAA+B75P,EAAWwzF,eAC9CykB,EAAQ6hJ,oBAEV,GAA+B,OAA3BD,EACF,MAAM,IAAIl3P,MAAM,kCAElB,MAAM,YAAEo3P,GAAgBH,GACtBC,EAAuBp3P,MAEzB,OAAOs3P,CACT,CAEA,MAAMC,GAAkC1L,EAAAA,SACtC,CACEA,EAAAA,OAAa,GAAI,iBACjBA,EAAAA,OACE,CAACA,EAAAA,OAAaA,EAAAA,YAAmB,qBACjC,UAEFA,EAAAA,OAAa,CAACA,EAAAA,UAAgB,uBAAwB,WACtDA,EAAAA,OACE,CACEA,EAAAA,IAAU,QACVA,EAAAA,OAAaA,EAAAA,YAAmB,4BAElC,qBAGJ1tP,EACA0tP,EAAAA,OAGI,SAAUsL,GAA6Bn3P,GAC3C,OAAOu3P,GAAgCz7O,OAAO9b,EAChD,oDA9EO,eACLzC,EACAc,GACiB,IAAjB+wE,EAAAnxE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAgB,EAEhB,MAAM2qB,EAAM,sCAAsCvqB,EAAUyC,2BAA2BsuE,KAChFkoL,EAAaE,SAA0B92P,QAAQoE,IAAI,CACxDmyP,GAAU15P,EAAYc,GACtB+rB,GAAMxB,KAIF6uO,SAAsBD,EAAiB3sO,QAAQglE,QAClDtiF,IAAcA,EAAE2Y,SAAuB,UAAZ3Y,EAAExQ,OAAoC,aAAfwQ,EAAEwtN,WAEvD,GAA4B,IAAxB08B,EAAav5P,OACf,OAAO,KAIT,MAAM8qM,EAAQyuD,EAAa,GAG3B,OAAIH,EAAYz5K,KAAK/iE,aAAekuL,EAAM0uD,cACjC,KAIF1uD,CACT,2JCSM,SAAU2uD,GACdC,GAEA,MAAO,aAAcA,CACvB,CAkJA,MAAMC,GAAsDhM,EAAAA,OAAa,CACvEA,EAAAA,UAAgB,aAChBA,EAAAA,MAAY,UC/HE,SAAAiM,GACd5X,EACA1uO,WAEA,IAAIyM,EAAU,GAEd,MAAM85O,EAAW7X,EAAM1uO,KAAO0uO,EAAM1uO,KAAKtT,OAAS,EAClD,GAAIsT,EAAKtT,OAAS65P,EAAU,CAC1B,GAAIvmP,EAAKtT,SAAW65P,EAAW,EAC7B,MAAM,IAAI73P,MACR,+BAA+BsR,oBAC7B,OAAA0uO,QAAK,IAALA,OAAK,EAALA,EAAOjyO,mBACoC,QAA9BouJ,EAAU,QAAVp2B,EAAAi6G,EAAM1uO,YAAI,IAAAy0H,OAAA,EAAAA,EAAElhI,KAAK+H,GAAMA,EAAEmB,cAAK,IAAAouJ,EAAAA,EAAI,MAGrDp+I,EAAUzM,EAAKE,KAChB,CAED,MAAO,CAACF,EAAMyM,EAChB,CC/Dc,MAAO+5O,GACZ,YAAOhvD,CACZk3C,EACA+X,EACA55P,GAEA,GAAmB,WAAf6hP,EAAMjyO,KACR,MAAM,IAAIm3O,GAAS,+BAGrB,MAAM1+N,EAAK,WAEiB,QAAArB,EAAApnB,UAAAC,OADvBsT,EAAsC,IAAAhL,MAAA6e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAtC9T,EAAsC8T,GAAArnB,UAAAqnB,GAEzC,MAAO4yO,EAAQ5pN,GAAOwpN,GAAgB5X,EAAO,IAAI1uO,IACjD4uO,EAAiBF,EAAMh5N,SAAUonB,EAAIpnB,UAGrC,MAAMzL,EAAOiL,EAAGQ,SAASonB,EAAIpnB,UAU7B,YAR8B/oB,IAA1BmwC,EAAI6pN,mBACN18O,EAAK9X,QAAQ2qC,EAAI6pN,mBAGfhT,GAAe,eACjBlgO,QAAQkxB,IAAI,0BAA2B16B,GAGlC,IAAIkB,EAAAA,uBAAuB,CAChClB,OACApd,YACA2B,KAAMi4P,EAAS/X,EAAMjyO,KAAMgyO,EAAcC,KAAUgY,KAEvD,EAYA,OATAxxO,EAAa,SAAK0xO,GACTJ,GAA4BK,cACjCD,EACAlY,EAAMh5N,SACN7oB,EACA6hP,EAAMjyO,MAIHyY,EAGF,oBAAO2xO,CACZ/pN,EACApnB,EACA7oB,EACAyuP,GAEA,OAAKx+M,EAIEpnB,EACJniB,KAAKqiB,IAIJ,QAAuBjpB,KADrB,aAAcipB,EAAMA,EAAIF,cAAW/oB,GACH,CAChC,MAAMm6P,EAAUhqN,EAAIlnB,EAAInZ,MACxB,OAAO+pP,GAA4BK,cACjCC,EACClxO,EAAoBF,SACrB7oB,EACAyuP,GACAh5L,MACH,CAAM,CACL,MAAMjlC,EAAsBzH,EAC5B,IAAIjL,EACJ,IACEA,EAASmkO,EAAiBhyM,EAAIlnB,EAAInZ,MACnC,CAAC,MAAOgY,GACP,MAAM,IAAI/lB,MACR,iCACEknB,EAAInZ,gDAEO9P,IAAX2uP,EAAuB,qBAAuBA,EAAS,IAAM,oCAGlE,CAED,MAAMlL,EAAW/yN,EAAQq9H,YAAc/vI,EAAOS,OAAOve,GAGrD,MAAO,CACL8d,SACAE,WAJiBwS,EAAQ0pO,QAAU3W,EAKnCxlO,SAJeyS,EAAQzS,WAAawlO,EAMvC,KAEF9tL,OAzCM,ICzEC,MAAO0kM,GACZ,YAAOxvD,CACZk3C,EACAuY,GAeA,OAboC,4CAAIjnP,EAAI,IAAAhL,MAAA+e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhU,EAAIgU,GAAAvnB,UAAAunB,GAC1C,MAAM,CAAG8oB,GAAOwpN,GAAgB5X,EAAO,IAAI1uO,IACrCtO,EAAK,IAAIvE,EAAAA,YACf,GAAI2vC,EAAIoqN,iBAAmBpqN,EAAI3nB,aAC7B,MAAM,IAAIzmB,MAAM,mDAMlB,OAJmB,QAAnB+lI,EAAA33F,EAAIoqN,uBAAe,IAAAzyH,GAAAA,EAAE76H,SAASsb,GAAOxjB,EAAGtE,IAAI8nB,KAC5B,QAAhB21I,EAAA/tH,EAAI3nB,oBAAY,IAAA01I,GAAAA,EAAEjxJ,SAASsb,GAAOxjB,EAAGtE,IAAI8nB,KACzCxjB,EAAGtE,IAAI65P,KAAQjnP,IACK,QAApBwoC,EAAA1L,EAAIqqN,wBAAgB,IAAA3+M,GAAAA,EAAE5uC,SAASsb,GAAOxjB,EAAGtE,IAAI8nB,KACtCxjB,CACT,GCdU,MAAO01P,GACZ,YAAO5vD,CACZk3C,EACA2Y,EACA3R,EACA73N,GAqBA,OAnB2B,8CAAU7d,EAAI,IAAAhL,MAAA42F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ7rF,EAAI6rF,GAAAp/F,UAAAo/F,GACvC,MAAMn6F,EAAK21P,KAAQrnP,IACb,CAAG88B,GAAOwpN,GAAgB5X,EAAO,IAAI1uO,IAC3C,QAAgCrT,IAA5BkxB,EAASi7B,eACX,MAAM,IAAIpqD,MACR,uEAGJ,IACE,aAAamvB,EAASi7B,eACpBpnD,EACW,QAAX+iI,EAAA33F,EAAI9vC,eAAO,IAAAynI,EAAAA,EAAI,GACf33F,EAAIrwB,QAEP,CAAC,MAAOgI,GACP,MAAMuhO,GAAevhO,EAAKihO,EAC3B,CACH,GCfU,MAAO4R,GACZ,YAAO9vD,CACZg3C,EACA1uF,EACAjzJ,EACAgxB,SAEA,MAAM0pO,EAAa,GAanB,OAXY,QAAZ9yH,EAAA+5G,EAAI94N,gBAAQ,IAAA++G,GAAAA,EAAE76H,SAASijP,IACrB,MAAMpgP,EAAO29O,IAAUyC,EAAWpgP,MAClC8qP,EAAW9qP,GAAQ,IAAI+qP,GACrBhZ,EACAqO,EACAhwP,EACAgxB,EACAiiI,EACD,IAGIynG,SAgCEC,GASX,QAAIzyO,GACF,OAAO,KAAK0yO,MAOd,aAAI56P,GACF,OAAO,KAAK66P,WAOd,YAAI7pO,GACF,OAAO,KAAK21N,UAOd,SAAI1zF,GACF,OAAO,KAAK6nG,OAOd,cAAI9K,GACF,OAAO,KAAK+K,YAId9uP,WAAAA,CACE01O,EACAqO,EACAhwP,EACAgxB,EACAiiI,GAEA,KAAK8nG,YAAc/K,EACnB,KAAK6K,WAAa76P,EAClB,KAAK2mP,UAAoB,OAAR31N,QAAQ,IAARA,EAAAA,EAAYE,KAC7B,KAAK4pO,OAAc,OAAL7nG,QAAK,IAALA,EAAAA,EAAS,IAAI0+F,GAAWhQ,GACtC,KAAKiZ,MAAQ,KAAKE,OAAOjyO,SAASX,KAAK8nO,GAQzC,mBAAMrpE,CACJjiL,EACAq6E,GAEA,MAAM,KAAEp9E,SAAe,KAAKq5P,wBAAwBt2P,EAASq6E,GAC7D,OAAOp9E,EAQT,6BAAMq5P,CACJt2P,EACAq6E,GAEA,MAAM85K,QAAoB,KAAKoC,yBAC7Bv2P,EACAq6E,IAEI,MAAE79E,EAAK,QAAE0nF,GAAYiwK,EAC3B,MAAO,CACLl3P,KACET,GAA+B,IAAtBA,EAAMS,KAAK9B,OAChB,KAAKi7P,OAAOjyO,SAASpL,OAAU,KAAKs9O,YAAYnrP,KAAM1O,EAAMS,MAC5D,KACNinF,WASJ,WAAM78D,CAAMrnB,EAAkBq6E,GAC5B,MAAM,KAAEp9E,SAAe,KAAKq5P,wBAAwBt2P,EAASq6E,GAC7D,GAAa,OAATp9E,EACF,MAAM,IAAIE,MACR,yCAAyC6C,EAAQjC,cAGrD,OAAOd,EAQT,qBAAMu5P,CACJx2P,EACAq6E,GAEA,MAAM,KAAEp9E,EAAI,QAAEinF,SAAkB,KAAKoyK,wBACnCt2P,EACAq6E,GAEF,GAAa,OAATp9E,EACF,MAAM,IAAIE,MAAM,0BAA0B6C,EAAQjC,cAEpD,MAAO,CAAEd,OAAMinF,WASjB,mBAAMuyK,CACJp8O,EACAggE,GAGA,aADuB,KAAKq8K,wBAAwBr8O,EAAWggE,IAC/Cr4E,KAAK8pB,GAAaA,EAAUA,EAAQ7uB,KAAO,OAS7D,6BAAMy5P,CACJr8O,EACAggE,GASA,aAPuB2kK,EACrB,KAAKiD,UAAUznP,WACf6f,EAAUrY,KAAKhC,GAAYu9O,EAAiBv9O,KAC5Cq6E,IAIcr4E,KAAKimB,IACnB,GAAc,MAAVA,EACF,OAAO,KAET,MAAM,QAAE6D,EAAO,QAAEo4D,GAAYj8D,EAC7B,MAAO,CACLhrB,KAAM,KAAKm5P,OAAOjyO,SAASpL,OAAO,KAAKs9O,YAAYnrP,KAAM4gB,EAAQ7uB,MACjEinF,UACD,IAkBL,SAAMniF,CACJ40P,GAEA,MAAM7pK,EACJ,KAAKyhE,MAAMpqI,SAASkoO,OAClB,KAAKgK,YAAYnrP,KACjByrP,aAAmB94P,EAAS84P,OAAUv7P,GAEpCw7P,EAA2C,GAiBjD,YAhBsBx7P,IAAlB,OAAA0xF,QAAM,IAANA,OAAM,EAANA,EAAQz8D,cAAwCj1B,IAAX,OAAN0xF,QAAM,IAANA,OAAM,EAANA,EAAQr1C,QACzCm/M,EAAah2P,KAAK,CAChByrP,OAAQ,CAAEh8N,OAAQy8D,EAAOz8D,OAAQonB,MAAOq1C,EAAOr1C,cAG3Br8C,IAAd,OAAN0xF,QAAM,IAANA,OAAM,EAANA,EAAQ64C,WACVixH,EAAah2P,KAAK,CAAE+kI,SAAU74C,EAAO64C,kBAEtB,KAAKs8G,UAAUznP,WAAWq8P,mBACzC,KAAKV,WACL,CACE97K,WAAY,KAAK4nK,UAAUznP,WAAW6/E,WACtCs8K,QAAS,IAAIC,KAAkBnzP,MAAMi3B,QAAQi8N,GAAWA,EAAU,OAI1D30P,KAAI80P,IAAwB,IAAvB,OAAE19O,EAAM,QAAE0S,GAASgrO,EAClC,MAAO,CACL74P,UAAWmb,EACX0S,QAAS,KAAKsqO,OAAOjyO,SAASpL,OAC5B,KAAKs9O,YAAYnrP,KACjB4gB,EAAQ7uB,MAEX,IAQL85P,SAAAA,CAAU/2P,EAAkBq6E,GAC1B,MAAMh7C,EAAM23N,GAAc9xP,IAAIlF,EAAQjC,YACtC,GAAIshC,EACF,OAAOA,EAAI6xE,GAGb,MAAMA,EAAK,IAAI11F,KACfxb,EAAUu9O,EAAiBv9O,GAC3B,MAAMuI,EAAW,KAAK05O,UAAUznP,WAAWy8P,gBACzCj3P,GACCqkB,IACC,MAAMyH,EAAU,KAAKsqO,OAAOjyO,SAASpL,OACnC,KAAKs9O,YAAYnrP,KACjBmZ,EAAIpnB,MAENi0G,EAAGE,KAAK,SAAUtlF,EAAQ,GAE5BuuD,GAQF,OALA28K,GAAcpnP,IAAI5P,EAAQjC,WAAY,CACpCmzG,KACA3oG,aAGK2oG,EAMT,iBAAMg5B,CAAYlqI,GAChB,IAAIq/B,EAAM23N,GAAc9xP,IAAIlF,EAAQjC,YAC/BshC,EAID23N,UACI,KAAK/U,UAAUznP,WAClB08P,4BAA4B73N,EAAI92B,UAChCjG,MAAK,KACJ00P,GAAct2O,OAAO1gB,EAAQjC,WAAW,IAEzCme,MAAMgG,QAAQ/F,OATjB+F,QAAQG,KAAK,6BAgBjB,uBAAM80O,CACJn6P,EACAo6P,GAEA,MAAM5zO,EAAO,KAAKA,KAElB,QAAiCpoB,IAA7B,KAAK6mP,UAAUhkP,UACjB,MAAM,IAAId,MACR,0FAIJ,OAAO23B,EAAAA,cAAckf,cAAc,CACjCI,WAAY,KAAK6tM,UAAUhkP,UAC3Bw2C,iBAAkBz3C,EAAOiB,UACzBy2C,MAAmB,OAAZ0iN,QAAA,IAAAA,EAAAA,EAAgB5zO,EACvB8wB,eACQ,KAAK2tM,UAAUznP,WAAWyzF,kCAC9B,OAAAmpK,QAAY,IAAZA,EAAAA,EAAgB5zO,GAEpBloB,UAAW,KAAK66P,aAUpB,gBAAM9F,GACJ,MAAMh9F,QAAa,KAAKgkG,qBAAkBn8P,WAC1C,aAAa,KAAKmsB,MAAMgsI,GAS1B,uBAAMgkG,GAC8B,QAAAv8J,EAAA5/F,UAAAC,OAA/BsT,EAA+B,IAAAhL,MAAAq3F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAA/BtsF,EAA+BssF,GAAA7/F,UAAA6/F,GAElC,aAAas1J,GAAsB,KAAK8F,cAAe1nP,GAGzD,oBAAMu/E,CACJhuF,EACAq6E,GAEA,aAAa,KAAK4nK,UAAUznP,WAAWwzF,eACrCuvJ,EAAiBv9O,GACjBq6E,GAIJ,8BAAMk8K,CACJv2P,EACAq6E,GAEA,aAAa,KAAK4nK,UAAUznP,WAAW+7P,yBACrChZ,EAAiBv9O,GACjBq6E,IAgBN,MAAM28K,GAA2C,IAAI37O,ICva/Ci8O,GAAc,gBACdC,GAAe,uBAmBRC,GAoCXjwP,WAAAA,CAAYjM,EAAsBgxB,EAAoBiiI,GACpD,KAAK4nG,WAAa76P,EAClB,KAAK2mP,UAAY31N,EACjB,KAAKmrO,aAAe,IAAIC,GAAYp8P,EAAWizJ,GAC/C,KAAKopG,gBAAkB,IAAIt8O,IAC3B,KAAKu8O,gBAAkB,IAAIv8O,IAC3B,KAAKw8O,iBAAmB,EAGnB71O,gBAAAA,CACLwnH,EACAlnC,SAEA,IAAI/5F,EAAW,KAAKsvP,iBAgBpB,OAfA,KAAKA,kBAAoB,EAGpB,KAAKD,gBAAgBhyO,IAAI4jH,IAC5B,KAAKouH,gBAAgBhoP,IAAI45H,EAAW,IAEtC,KAAKouH,gBAAgBhoP,IACnB45H,GACoC,QAAnCtG,EAAA,KAAK00H,gBAAgB1yP,IAAIskI,UAAU,IAAAtG,EAAAA,EAAI,IAAIzxH,OAAOlJ,IAIrD,KAAKovP,gBAAgB/nP,IAAIrH,EAAU,CAACihI,EAAWlnC,SAGZlnG,IAA/B,KAAK08P,wBAIT,KAAKA,sBAAwB,KAAK7V,UAAWznP,WAAWu9P,OACtD,KAAK5B,YACL,CAACnW,EAAMz0M,KACL,IAAIy0M,EAAK98N,IAIT,IAAK,MAAMnb,KAAS,KAAK0vP,aAAaO,UAAUhY,EAAKA,MAAO,CAC1D,MAAMiY,EAAe,KAAKL,gBAAgB1yP,IAAI6C,EAAMmD,MAEhD+sP,GACFA,EAAa5vP,SAASE,IACpB,MAAM2vP,EAAa,KAAKP,gBAAgBzyP,IAAIqD,GAE5C,GAAI2vP,EAAY,CACd,MAAM,CAAG51J,GAAY41J,EACrB51J,EAASv6F,EAAM9K,KAAMsuC,EAAIuvC,KAAMklK,EAAKziP,UACrC,IAGN,MAvBIgL,EA8BJ,yBAAM+6I,CAAoB/6I,GAE/B,MAAM+5F,EAAW,KAAKq1J,gBAAgBzyP,IAAIqD,GAC1C,IAAK+5F,EACH,MAAM,IAAInlG,MAAM,kBAAkBoL,oBAEpC,MAAOihI,GAAalnC,EAGpB,IAAI56F,EAAY,KAAKkwP,gBAAgB1yP,IAAIskI,GACzC,IAAK9hI,EACH,MAAM,IAAIvK,MAAM,mCAAmCqsI,MAYrD,GARA,KAAKmuH,gBAAgBj3O,OAAOnY,GAC5Bb,EAAYA,EAAUolF,QAAQhiF,GAAMA,IAAMvC,IAC1C,KAAKqvP,gBAAgBhoP,IAAI45H,EAAW9hI,GACX,IAArBA,EAAUvM,QACZ,KAAKy8P,gBAAgBl3O,OAAO8oH,GAII,IAA9B,KAAKmuH,gBAAgBn0O,KAAY,CACnC,GAAkC,IAA9B,KAAKo0O,gBAAgBp0O,KACvB,MAAM,IAAIrmB,MACR,iDAAiD,KAAKy6P,gBAAgBp0O,aAIvCpoB,IAA/B,KAAK08P,8BACD,KAAK7V,UAAWznP,WAAW29P,qBAC/B,KAAKL,uBAEP,KAAKA,2BAAwB18P,EAEhC,SAIQs8P,GAIXnwP,WAAAA,CAAYjM,EAAsBizJ,GAChC,KAAKA,MAAQA,EACb,KAAKjzJ,UAAYA,EAcX08P,SAAAA,CAAUhY,GAAc,IAAA33G,EAAA,SAAE+vH,EAAAl9P,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAqC,mBACrE,MAAMm9P,EAAa,IAAIC,GAAWtY,GAC5BuY,EAAY,IAAIC,GACtB,IAAIplN,EAAMilN,EAAWtnO,OACrB,KAAe,OAARqiB,GAAc,CACnB,IAAKrrC,EAAO0wP,EAAYC,GAAUrwH,EAAKswH,UACrCJ,EACAnlN,EACAglN,GAEErwP,UACIA,GAEJ0wP,GACFF,EAAU33P,KAAK63P,GAEbC,GACFH,EAAU5pP,MAEZykC,EAAMilN,EAAWtnO,MAClB,EApBoE,EAqBtE,CAMO4nO,SAAAA,CACNJ,EACAnlN,EACAglN,GAGA,OACEG,EAAU70J,MAAMvoG,OAAS,GACzBo9P,EAAU9lJ,YAAc,KAAKn3G,UAAUyC,WAEhC,KAAK66P,iBAAiBxlN,EAAKglN,GAI3B,CAAC,QAAS,KAAKS,gBAAgBzlN,IAKlCwlN,gBAAAA,CACNxlN,EACAglN,GAGA,GAAIhlN,EAAIjxC,WAAWm1P,KAAgBlkN,EAAIjxC,WAAWo1P,IAAe,CAC/D,MAAMuB,EAAS1lN,EAAIjxC,WAAWm1P,IAC1BlkN,EAAIpsC,MAnOkBswP,IAoOtBlkN,EAAIpsC,MAnOmBuwP,IAoOrBxvP,EAAQ,KAAKwmJ,MAAM9mJ,OAAOsR,OAAO+/O,GAEvC,GAAIV,GAAkC,OAAVrwP,EAC1B,MAAM,IAAI5K,MAAM,0BAA0B27P,KAE5C,MAAO,CAAC/wP,EAAO,MAAM,EACtB,CAGC,MAAO,CAAC,QAAS,KAAK8wP,gBAAgBzlN,IAKlCylN,eAAAA,CAAgBzlN,GAEtB,MAAM2lN,EAAW3lN,EAAIvxC,MAAM,KAAK,GAGhC,OAAiD,OAA7Ck3P,EAASjtL,MAAM,0BACV,CAAC,MAAM,GAGditL,EAAS52P,WAAW,WAAW,KAAK7G,UAAUyC,qBAEvC,CAAC,KAAKzC,UAAUyC,YAAY,GAG5Bg7P,EAAS3/M,SAAS,UAClB,CAAC,OAAO,GAER,CAAC,MAAM,IAOpB,MAAMo/M,GAANjxP,WAAAA,GACE,KAAKm8F,MAAa,GAElB+O,OAAAA,GACE,IAAK,KAAK/O,MAAMvoG,OACd,MAAM,IAAIgC,MAAM,uCAElB,OAAO,KAAKumG,MAAM,KAAKA,MAAMvoG,OAAS,GAGxCyF,IAAAA,CAAK63P,GACH,KAAK/0J,MAAM9iG,KAAK63P,GAGlB9pP,GAAAA,GACE,IAAK,KAAK+0F,MAAMvoG,OACd,MAAM,IAAIgC,MAAM,uCAElB,KAAKumG,MAAM/0F,OAIf,MAAM2pP,GACJ/wP,WAAAA,CAAmBy4O,GAAA,KAAIA,KAAJA,EAEnBjvN,IAAAA,GACE,GAAyB,IAArB,KAAKivN,KAAK7kP,OACZ,OAAO,KAET,IAAI2P,EAAI,KAAKk1O,KAAK,GAElB,OADA,KAAKA,KAAO,KAAKA,KAAKh5O,MAAM,GACrB8D,GClSG,MAAOkuP,GACZ,YAAO/yD,CACZk3C,EACA2Y,EACA3R,EACA73N,EACAiiI,EACAjzJ,EACA2hP,GAsCA,OApCkC,8CAAUxuO,EAAI,IAAAhL,MAAAu3F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJxsF,EAAIwsF,GAAA//F,UAAA+/F,GAC9C,MAAM96F,EAAK21P,KAAQrnP,IACb,CAAG88B,GAAOwpN,GAAgB5X,EAAO,IAAI1uO,IAC3C,IAAI2Y,EACJ,QAA0BhsB,IAAtBkxB,EAASq1N,SACX,MAAM,IAAIxkP,MACR,iEAGJ,IACEiqB,QAAakF,EAAUq1N,SACrBxhP,EACAorC,EAAI9vC,QACS,QAAbynI,EAAA33F,EAAIrwB,eAAS,IAAAgoH,OAAA,EAAAA,EAAA7oD,WAEhB,CAAC,MAAOn3D,GACP,MAAMuhO,GAAevhO,EAAKihO,EAC3B,CACD,QAAa/oP,IAATgsB,EACF,MAAM,IAAIjqB,MAAM,kCAElB,MAAM6iP,EAAO54N,EAAK44N,KAClB,IAAKA,EACH,MAAM,IAAI7iP,MAAM,4BAGlB,MAAMsK,EAA2C,GACjD,GAAIw1O,EAAIx1O,OAAQ,CACd,IAAIorO,EAAS,IAAI6kB,GAAYp8P,EAAWizJ,GACxC,IAAK,MAAMxmJ,KAAS8qO,EAAOmlB,UAAUhY,GACnCv4O,EAAO7G,KAAKmH,EAEf,CACD,MAAO,CAAEN,SAAQ0qE,IAAK6tK,EACxB,GCvDJ,SAASiZ,GAAOrnJ,GACd,OAAO,IAAIsnJ,GACTngI,GAAkB,IACjBvuH,GAAcwhB,GAAItD,WAAWle,KAC7BX,GAAWA,EAAExL,YACduzG,EAEJ,CAEA,SAAS3zG,GAAU2zG,GACjB,OAAO,IAAIsnJ,GACTngI,GAAkB,KACjBvuH,GAAc,IAAIpM,EAAAA,UAAUoM,KAC5BlH,GAAmBA,EAAIjF,YACxBuzG,EAEJ,CAEA,SAAS85I,GAAW75I,EAAmBD,GACrC,OAAO,IAAIunJ,GAAiBtnJ,EAAQD,EACtC,CAEA,MAAMsnJ,WAA4BhM,GAKhC3lP,WAAAA,CACEsqG,EACA1pF,EACA0pN,EACAjgI,GAEA,MAAMC,EAAOr4F,KAAMo4F,GACnB,KAAKC,OAASA,EACd,KAAK1pF,QAAUA,EACf,KAAK0pN,QAAUA,EAGjB94N,MAAAA,CAAOvO,EAAW6lB,GAChB,OAAO,KAAKlI,QAAQ,KAAK0pF,OAAO94F,OAAOvO,EAAG6lB,IAG5C5W,MAAAA,CAAO6Y,EAAQ9nB,EAAW6lB,GACxB,OAAO,KAAKwhF,OAAOp4F,OAAO,KAAKo4N,QAAQv/M,GAAM9nB,EAAG6lB,GAGlD0/F,OAAAA,CAAQvlH,EAAW6lB,GACjB,OAAO,KAAKwhF,OAAOke,QAAQvlH,EAAG6lB,IAIlC,MAAM8oO,WAAyBjM,GAI7B3lP,WAAAA,CAAYsqG,EAAmBD,GAC7B,OAAO,EAAGA,GACV,KAAKC,OAASA,EACd,KAAK2iB,cAAgB4C,KAGvB39G,MAAAA,CAAO6Y,EAAe9nB,GAAqB,IAAV6lB,EAAMn1B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACxC,OAAY,OAARo3B,QAAwBl3B,IAARk3B,EACX,KAAKu/E,OAAOr4F,KAAO,KAAKg7G,cAAc/6G,OAAO,EAAGjP,EAAG6lB,IAE5D,KAAKmkG,cAAc/6G,OAAO,EAAGjP,EAAG6lB,GACzB,KAAKwhF,OAAOp4F,OAAO6Y,EAAK9nB,EAAG6lB,EAAS,GAAK,GAGlDtX,MAAAA,CAAOvO,GAAqB,IAAV6lB,EAAMn1B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACzB,MAAMs5H,EAAgB,KAAKA,cAAcz7G,OAAOvO,EAAG6lB,GACnD,GAAsB,IAAlBmkG,EACF,OAAO,KACF,GAAsB,IAAlBA,EACT,OAAO,KAAK3iB,OAAO94F,OAAOvO,EAAG6lB,EAAS,GAExC,MAAM,IAAIlzB,MAAM,mBAAqB,KAAK00G,OAAOD,UAGnDme,OAAAA,CAAQvlH,GAAqB,IAAV6lB,EAAMn1B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAC1B,OAAO,KAAK22G,OAAOke,QAAQvlH,EAAG6lB,EAAS,GAAK,GAIhD,MAAMrE,WAAYrK,KAIhBtjB,QAAAA,GACE,MAAM0L,EAAI,MAAMixB,UAAU9zB,UACpBsD,EAAI3M,EAAOC,KAAKiM,GACtB,GAAiB,IAAbS,EAAErP,OACJ,OAAOqP,EAET,GAAIA,EAAErP,QAAU,EACd,MAAM,IAAIgC,MAAM,iBAGlB,MAAMi8P,EAAUv7P,EAAO0b,MAAM,GAE7B,OADA/O,EAAEqG,KAAKuoP,GACAA,EAMT,iBAAO1wO,CAAWiB,GAChB,GAAsB,IAAlBA,EAAOxuB,OACT,MAAM,IAAIgC,MAAM,0BAA0BwsB,EAAOxuB,UAEnD,OAAO,IAAI6wB,GACT,IAAIrC,GACDziB,UACAlF,KAAKsC,GAAM,KAAKA,EAAEvG,SAAS,MAAMiJ,OAAO,KACxCwvD,KAAK,IACR,KAKN,MAAM6iM,GAAuBrgP,GAAoB,CAC/C/a,GAAU,QACVA,GAAU,SACVg7P,GAAO,UACPvN,GAAQztP,KAAa,YACrB,MACE,MAAM2nF,EAAI6vC,GnBw4EA7jB,IAAY,IAAIif,GAAK,EAAGjf,GmBx4EL34F,CAAgB,iBAAkB,KAK9D,SADD,OAHA2sE,EAAEyvC,WAAW,EAAGr8G,GAAoB,IAAK,iBACzC4sE,EAAEyvC,WAAW,EAAGr8G,GAAoB,IAAK,eACzC4sE,EAAEyvC,WAAW,EAAGr8G,GAAoB,IAAK,UAClC4sE,CACR,EAND,GAOA8lK,GAAQuN,KAAU,YAClBA,GAAO,mBACPvN,GAAQztP,KAAa,0BCzFVq7P,GAYX/xP,WAAAA,CACEgyP,EACQC,EACAvX,EACAkU,EACAsD,EACRC,EACQC,EACAC,GANA,KAASJ,UAATA,EACA,KAASvX,UAATA,EACA,KAAUkU,WAAVA,EACA,KAAMsD,OAANA,EAEA,KAASE,UAATA,EACA,KAAeC,gBAAfA,EAER,KAAKL,MAAQA,EACb,KAAKM,cAAgB,IAAIC,GACvB7X,EACAyX,EACA,KAAKvD,YAIF1nP,IAAAA,CAAK8qP,GACV,KAAKA,MAAQA,EAMR,aAAM37P,GAKX,UAJM,KAAKm8P,aAAa,KAAKN,OAAOt1O,UACpC,KAAK61O,iBAAiB,KAAKP,OAAOt1O,gBAIzB,KAAK81O,YAAY,KAAKR,OAAOt1O,gBAC3B,KAAK+1O,iBAAiB,KAAKT,OAAOt1O,gBAClC,KAAKg2O,gBACd,KAII,mBAAMA,GACZ,GAAI,KAAKP,gBAAiB,CACxB,MAAM,SAAEz1O,EAAQ,SAAEi2O,SAAmB,KAAKR,gBAAgB,CACxDnrP,KAAM,KAAK8qP,MACXp1O,SAAU,KAAKq1O,UACfltO,SAAU,KAAK21N,UACf3mP,UAAW,KAAK66P,WAChBhZ,MAAO,KAAKsc,SAGd,OADA,KAAKD,UAAYr1O,EACVi2O,CACR,CACD,OAAO,EAGDC,sBAAAA,CACNC,EACAC,GAEA,MAAMC,EAAyC,GAG/C,IAAK,MAAM3F,KAAe0F,EAAc,CACtC,MAAMvW,EAAc6Q,EAAY3pP,KAC1BuvP,EAAiBH,EAAgBtW,QAEhB5oP,IAAnBq/P,IACAC,GAAkBD,GAEhB7F,GAAcC,GAChB2F,EAAsBxW,GAAe,KAAKqW,uBACxCI,EACA5F,EAAsB,UAIxB2F,EAAsBxW,GAAe2W,GACnCF,GACA,GAKmB,OAAnBA,EACFD,EAAsBxW,GAAezG,EAAiBkd,GAC7C5F,EAAwB,aACjC2F,EAAsBxW,GAAe,KAAKmS,YAG/C,CACD,OAAOqE,EAGFI,gBAAAA,CAAiBz2O,GACtB7nB,OAAO0nF,OACL,KAAKw1K,UACL,KAAKa,uBAAuBl2O,EAAU,KAAKs1O,OAAOt1O,WAI9Cjf,GAAAA,CAAI+lI,GAEV,MAAMl5G,EAAMk5G,EAAK1oI,QACf,CAAC8hB,EAAKw2O,IAAYx2O,GAAOA,EAAIw2O,IAC7B,KAAKrB,WAGP,GAAIznO,GAAOA,EAAI9N,SACb,OAAO8N,EAIHniB,GAAAA,CAAIq7H,EAAgBzuI,GAC1B,IAAIu3E,EAAO,KAAKylL,UAChBvuH,EAAK5iI,SAAQ,CAACwH,EAAG0oD,KACAA,GAAO0yE,EAAK9vI,OAAS,IAElC44E,EAAKlkE,GAAKrT,GAGZu3E,EAAKlkE,GAAKkkE,EAAKlkE,IAAM,GACrBkkE,EAAOA,EAAKlkE,EAAqB,IAI7B,kBAAMkqP,CACZ51O,GACmB,IAAnB8mH,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAEjB,IAAK,IAAI0P,EAAI,EAAGA,EAAIuZ,EAAShpB,OAAQyP,GAAK,EAAG,CAC3C,MAAMkwP,EAAwB32O,EAASvZ,GACjCmwP,EAAeD,EAAsC32O,SACvD42O,SACI,KAAKhB,aAAagB,EAAa,IAChC9vH,EACH49G,IAAUiS,EAAsB5vP,QAIpC,MAAM8vP,EAAcF,EACdG,EAAkBpS,IAAUiS,EAAsB5vP,MAGxD,GAAI8vP,EAAY3hP,WAAa,KAAKnU,IAAI,IAAI+lI,EAAMgwH,IAAmB,CAEjE,QAA8B7/P,IAA1B,KAAK6mP,UAAUj/I,OACjB,MAAM,IAAI7lG,MACR,uFAIJ,KAAKyS,IAAI,IAAIq7H,EAAMgwH,GAAkB,KAAKhZ,UAAUj/I,OAAO/kG,UAC5D,CAIC6H,QAAQ8f,IAAI0zO,GAAiB4B,eAAgBD,KAC5C,KAAK/1P,IAAI,IAAI+lI,EAAMgwH,KAEpB,KAAKrrP,IACH,IAAIq7H,EAAMgwH,GACV3B,GAAiB4B,eAAeD,GAGrC,EASKjB,gBAAAA,CACN71O,GACmB,IAAnB8mH,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAEjB,IAAK,MAAMoJ,KAAK6f,EAAU,CACxB,MAAM22O,EAAwB32O,EAAS7f,GACjCy2P,EAAeD,EAAsC32O,SACvD42O,GACF,KAAKf,iBAAiBe,EAAa,IAC9B9vH,EACH49G,IAAUiS,EAAsB5vP,QAKpC,MAAMiwP,GAAa72P,EAAI,EACvB,GAAI62P,IAAch3O,EAAShpB,OAAQ,OAEnC,MAAM2wO,EAAc+c,IAAU1kO,EAAS7f,GAAG4G,MACpCkwP,EAAWvS,IAAU1kO,EAASg3O,GAAWjwP,MAG/C,GAAoB,mBAAhB4gO,GAAiD,YAAbsvB,EAAwB,CAC9D,MAAMC,EAAc,IAAIpwH,EAAM6gG,GACxBwvB,EAAW,IAAIrwH,EAAMmwH,GAe3B,OAbK,KAAKl2P,IAAIm2P,IACZ,KAAKzrP,IACHyrP,EACAj9P,EAAAA,UAAUmwK,uBACR,CAAC1wK,EAAOC,KAAK,sBACb,KAAKq4P,YACL,SAGD,KAAKjxP,IAAIo2P,IACZ,KAAK1rP,IAAI0rP,EAAU,KAAKnF,YAI3B,CACF,EAGK,iBAAM8D,CACZ91O,GACmB,IAAnB8mH,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAEbsyH,EAAQ,EACZ,IAAK,IAAI5iH,EAAI,EAAGA,EAAIuZ,EAAShpB,OAAQyP,GAAK,EAAG,CAC3C,MAAMowP,EAAc72O,EAASvZ,GACvBmwP,EAAeC,EAA4B72O,SAC7C42O,IACFvtI,SAAe,KAAKysI,YAAYc,EAAa,IACxC9vH,EACH49G,IAAUmS,EAAY9vP,SAI1B,MAAMqwP,EAAgCP,EAChCC,EAAkBpS,IAAUmS,EAAY9vP,MAI5CqwP,EAAkBC,KAClBD,EAAkBC,IAAIltF,MAAMnzK,OAAS,IACpC,KAAK+J,IAAI,IAAI+lI,EAAMgwH,KAEhB9kI,cAAc,KAAKslI,gBAAgBF,EAAmBtwH,MACxDzd,GAAS,EAGd,CACD,OAAOA,EAGD,sBAAM0sI,CACZ/1O,GACmB,IAAnB8mH,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAEbsyH,EAAQ,EACZ,IAAK,IAAI5iH,EAAI,EAAGA,EAAIuZ,EAAShpB,OAAQyP,GAAK,EAAG,CAC3C,MAAMowP,EAAc72O,EAASvZ,GACvBmwP,EAAeC,EAA4B72O,SAC7C42O,IACFvtI,SAAe,KAAK0sI,iBAAiBa,EAAa,IAC7C9vH,EACH49G,IAAUmS,EAAY9vP,SAG1B,MAAMwwP,EAAaV,EAA2BU,WAAa,GACrDT,EAAkBpS,IAAUmS,EAAY9vP,MACxCywP,EAAU,IAAI1wH,EAAMgwH,GAGpBW,EAAa,KAAK12P,IAAIy2P,GAC5B,GAAIC,EAAY,CACd,MAAMC,EAAWH,EAAU5uK,QACxBuoH,IAAS,KAAKnwM,IAAI,IAAI+lI,EAAM49G,IAAUxzC,OAIzC,GADA7nF,GAASquI,EAAS1gQ,OACd0gQ,EAAS1gQ,OAAS,EAAG,CACvB,MAAM2wB,QAAgB,KAAK+tO,cAAciC,aAAa,CACpD79P,UAAW29P,UAEPj+P,QAAQoE,IACZ85P,EAAS75P,KAAI,UACX,MAAM+5P,EAAUlT,IAAUxzC,GAG1B,OADA,KAAKzlM,IAAI,IAAIq7H,EAAM8wH,GAAUjwO,EAAQiwO,IAC9BjwO,EAAQiwO,EAAQ,IAG5B,CACF,CACF,CACD,OAAOvuI,EAGD,qBAAMiuI,CAAgBT,GAA4C,IAAnB/vH,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GACtE,IAAK8/P,EAAYQ,MAAQR,EAAYQ,IAAIltF,MACvC,MAAM,IAAInxK,MAAM,mBAElB,MAAMmxK,QAAsC3wK,QAAQoE,IAClDi5P,EAAYQ,IAAIltF,MAAMtsK,KAAKg6P,GACzB,KAAK39P,SAAS29P,EAAU/wH,MAI5B,GAAIqjC,EAAM1hJ,MAAMgvB,GAAwB,oBAARA,IAC9B,OAGF,MAAMtgD,QAAkB,KAAK2gQ,eAAejB,EAAa/vH,GACzD,IAAK3vI,EACH,OAEF,MAAO8d,SAAgBhb,EAAAA,UAAU89P,mBAC/B5tF,EACAhzK,GAGF,KAAKsU,IAAI,IAAIq7H,EAAM49G,IAAUmS,EAAY9vP,OAAQkO,GAG3C,oBAAM6iP,CACZjB,GACmB,IAAnB/vH,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,SAEjB,KAAoB,QAAfgoI,EAAA83H,EAAYQ,WAAG,IAAAt4H,OAAA,EAAAA,EAAE5nI,WACpB,OAAO,KAAK66P,WAEd,OAAQ6E,EAAYQ,IAAIlgQ,UAAUogE,MAChC,IAAK,QACH,OAAO,IAAIt9D,EAAAA,UACT,KAAK+9P,cAAcnB,EAAYQ,IAAIlgQ,UAAUkB,QAEjD,IAAK,MACH,OAAO,KAAK4/P,SAASpB,EAAYQ,IAAIlgQ,WACvC,IAAK,UACH,aAAa,KAAK+gQ,aAAarB,EAAYQ,IAAIlgQ,UAAW2vI,GAC5D,QACE,MAAM,IAAI9tI,MACR,iCAAiC69P,EAAYQ,IAAIlgQ,UAAUogE,SAK3D,cAAMr9D,CACZ29P,GACmB,IAAnB/wH,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAEjB,OAAQ8gQ,EAAStgM,MACf,IAAK,QACH,OAAO,KAAKygM,cAAcH,GAC5B,IAAK,MACH,aAAa,KAAKM,YAAYN,GAChC,IAAK,UACH,aAAa,KAAKO,gBAAgBP,EAAU/wH,GAC9C,QACE,MAAM,IAAI9tI,MAAM,yBAAyB6+P,EAAStgM,SAOhD16D,OAAAA,CAAQC,GAAkC,IAAnBgqI,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAC9C,GAAI+vI,EAAK9vI,OAAS,GAAM8F,EAAagoP,QAAS,CAC5C,MAAMuT,EAAU,KAAK7C,UAAUvlM,MAC5Bv+C,GAAMA,EAAE3K,OAAUjK,EAAagoP,UAElC,IAAKuT,EACH,MAAM,IAAIr/P,MAAM,oBAAqB8D,EAAagoP,WAGpD,MACMlgG,EADayzG,EAAQv7P,KACFsiG,OAAOnvC,MAAM20F,GAAUA,EAAM79I,OAAS+/H,EAAK,KAEpE,OAAO,KAAKjqI,QAAQ+nJ,EAAO9nJ,KAAMgqI,EAAKjkI,MAAM,GAC7C,CAED,OAAO/F,EAGDk7P,aAAAA,CAAcH,GACpB,OAAO,KAAKS,cACV,KAAKz7P,QAAQg7P,EAAS/6P,MAAO+6P,EAAS/wH,MAAQ,IAAIppI,MAAM,KAAKmF,MAAM,IACnEg1P,EAASx/P,OAIL,iBAAM8/P,CAAYN,GACxB,MAAMI,EAAW,KAAKA,SAASJ,GAC/B,GAAwB,qBAAbI,EAGX,OAAO,KAAKK,cACV,KAAKz7P,QAAQg7P,EAAS/6P,MAAO+6P,EAAS/wH,MAAQ,IAAIppI,MAAM,KAAKmF,MAAM,IACnEo1P,GAIIA,QAAAA,CAASJ,GACf,MAAMn6P,EAAQm6P,EAAS/wH,KAAKppI,MAAM,KAC5B66P,EAAc7T,IAAUhnP,EAAM,IAE9B86P,EAAiB,KAAKlD,OAAOhrP,KAAK6yE,WACrCs7K,GAAiBA,EAAQ1xP,OAASwxP,IAErC,IAAwB,IAApBC,EACF,MAAM,IAAIx/P,MAAM,qCAAqCu/P,KAGvD,OAAO76P,EACJmF,MAAM,GACNzE,QAAO,CAACwxE,EAAMk3D,KAAUl3D,GAAQ,IAAIk3D,IAAO,KAAKsuH,MAAMoD,IAGnD,qBAAMJ,CACZP,GACmB,IAAnB/wH,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAEjB,MAAMmhQ,QAAqB,KAAKA,aAAaL,EAAU/wH,GACvD,GAAKoxH,EAGL,OAAO,KAAKI,cAAcT,EAAS/6P,KAAMo7P,GAGnC,kBAAMA,CACZL,GACmB,IAAnB/wH,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiB,GAEjB,MAAM2hQ,EAAiBb,EAAS/wH,KAAKppI,MAAM,KAErCqnJ,EAAY2zG,EAAe,GAC3BC,EAAc,KAAK53P,IAAI,IAAI+lI,EAAM49G,IAAU3/F,KAEjD,GAAoB,OAAhB4zG,EACF,MAAM,IAAI3/P,MAAM,uBAIlB,GAA8B,IAA1B0/P,EAAe1hQ,OACjB,OAAO2hQ,EAMT,MAAMhxO,QAAgB,KAAK+tO,cAAciC,aAAa,CACpD79P,UAAW6+P,EACX5xP,KAAM8wP,EAASlwO,UAMjB,OADmB,KAAKixO,kBAAkBjxO,EAAS+wO,EAAe71P,MAAM,IAIlE+1P,iBAAAA,CAA2BjxO,EAAYm/G,GAC7C,IAAI+xH,EACJ,KAAO/xH,EAAK9vI,OAAS,GACnB6hQ,EAAelxO,EAAQ+8N,IAAU59G,EAAK,KACtCA,EAAOA,EAAKjkI,MAAM,GAEpB,OAAOg2P,EAODP,aAAAA,CAAcx7P,EAAoBzE,GACxC,OAAQyE,GACN,IAAK,KACH,OAAOpD,EAAOC,KAAK,CAACtB,IACtB,IAAK,MACH,IAAIgO,EAAI3M,EAAO0b,MAAM,GAErB,OADA/O,EAAEqwI,cAAcr+I,GACTgO,EACT,IAAK,MACH,IAAIm2D,EAAM9iE,EAAO0b,MAAM,GAEvB,OADAonD,EAAIqxD,cAAcx1H,GACXmkE,EACT,IAAK,MACH,IAAIs8L,EAAOp/P,EAAO0b,MAAM,GAExB,OADA0jP,EAAK/hH,iBAAiBl8I,OAAOxC,IACtBygQ,EACT,IAAK,SACH,OAAOp/P,EAAOC,KAAK++O,EAAYrgP,IACjC,IAAK,YACH,OAAOA,EAAM6B,WACf,QACE,GAAI4C,EAAKk1F,MACP,OAAOt4F,EAAOC,KAAKtB,GAErB,MAAM,IAAIW,MAAM,yBAAyB8D,OArf/Bq4P,GAAA4B,eAAiB,CAC/BgC,uBAAwB1M,GACxBj8F,KAAME,EAAAA,mBACNqtB,cAAehtJ,EAAAA,cAAcx5B,UAC7BomL,aAAcz1J,GACdkxO,MAAOC,EAAAA,2BAsfEtD,GAKXvyP,WAAAA,CACU06O,EACRuX,EACQrD,GAFA,KAASlU,UAATA,EAEA,KAAUkU,WAAVA,EAPF,KAAAkH,OAAS,IAAIhiP,IACb,KAAKiiP,MAA0C,GAQrD,KAAKA,MAAMnH,EAAWlyO,YAAcu1O,EAG9B,eAAM+D,CACZjiQ,GAEA,IAAK,KAAKgiQ,MAAMhiQ,EAAU2oB,YAAa,CACrC,MAAMg5N,QAAYugB,GAAQC,SAASniQ,EAAW,KAAK2mP,WACnD,GAAIhF,EAAK,CACP,MAAMxqI,EAAU,IAAI+qJ,GAAQvgB,EAAK3hP,EAAW,KAAK2mP,WACjD,KAAKqb,MAAMhiQ,EAAU2oB,YAAcwuF,EAAQ3mF,OAC5C,CACF,CAED,OAAO,KAAKwxO,MAAMhiQ,EAAU2oB,YAGvB,kBAAM63O,CAAY4B,GAQxB,IARkC,UACjCz/P,EAAS,KACTiN,EAAI,UACJ5P,EAAY,KAAK66P,YAKlBuH,EACC,MAAM19P,EAAU/B,EAAUF,WAC1B,IAAK,KAAKs/P,OAAOz3O,IAAI5lB,GACnB,GAAa,iBAATkL,EAAyB,CAC3B,MAAMipP,QAAoB,KAAKlS,UAAUznP,WAAWwzF,eAClD/vF,GAEF,GAAoB,OAAhBk2P,EACF,MAAM,IAAIh3P,MAAM,4BAA4B6C,KAE9C,MAAM/C,GD9cqBuN,EC8cK2pP,EAAYl3P,KD7c3Co8P,GAAqBtgP,OAAOvO,IC8c7B,KAAK6yP,OAAOztP,IAAI5P,EAAS/C,EAC1B,MAAM,GAAIiO,EAAM,CACf,MAAMiZ,QAAiB,KAAKo5O,UAAUjiQ,GACtC,GAAI6oB,EAAU,CACZ,MAAMw5O,EAAiBx5O,EAAS0kO,IAAU39O,IAC1C,GAAIyyP,EAAgB,CAClB,MAAM7xO,QAAgB6xO,EAAet2O,MAAMppB,GAC3C,KAAKo/P,OAAOztP,IAAI5P,EAAS8rB,EAC1B,CACF,CACF,KAAM,CACL,MAAMA,QAAgB,KAAKm2N,UAAUznP,WAAWwzF,eAC9C/vF,GAEF,GAAgB,OAAZ6tB,EACF,MAAM,IAAI3uB,MAAM,4BAA4B6C,KAE9C,MAAM/C,EAAO6uB,EAAQ7uB,KACfknB,QAAiB,KAAKo5O,UAAUzxO,EAAQjxB,OAC9C,GAAIspB,EAAU,CACZ,MAAMy5O,EAAqBthQ,OAAO+jB,OAAO8D,GAAU,GACnD,IAAKy5O,EACH,MAAM,IAAIzgQ,MAAM,gCAGlB,MAAM8qB,EACJ21O,EAAmBrvG,MAAMpqI,SACzBgoO,UAAUlvP,GACZ,KAAKogQ,OAAOztP,IAAI5P,EAASioB,EAC1B,CACF,CD7eD,IAA6Bzd,EC+e/B,OAAO,KAAK6yP,OAAOn4P,IAAIlF,UC1lBd69P,GACJ,YAAO53D,CACZ35K,EACAhxB,EACA6hP,EACAuY,EACAI,EACAgI,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,OAAO,mBAAAhiG,EAAAjhK,UAAAC,OAAIsT,EAAI,IAAAhL,MAAA04J,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3tJ,EAAI2tJ,GAAAlhK,UAAAkhK,GAAA,OACb,IAAIgiG,GACF3vP,EACAinP,EACAI,EACAgI,EACAC,EACAC,EACA1xO,EACAhxB,EACA6hP,EACA8gB,EACAC,EACAC,EACD,GAeD,SAAUzD,GACdD,GAEA,MAC4B,kBAAnBA,GACY,OAAnBA,KACE,QAASA,EAEf,CAEgB,SAAAE,GACdL,EACA+D,GAEA,MAAMC,EAA4B,GAClC,IAAK,MAAMta,KAAesW,EAAiB,CACzC,MAAMxuO,EAAUwuO,EAAgBtW,GAChC,GAAgB,OAAZl4N,EAOJwyO,EAASta,GAAe0W,GAAkB5uO,GACtC6uO,GAAuB7uO,GAAS,GAChCyxN,EAAiBzxN,QARnB,GAAIuyO,EACF,MAAM,IAAIlhQ,MACR,4EAOP,CACD,OAAOmhQ,CACT,OAEaF,GAUX72P,WAAAA,CACEgyP,EACQgF,EACAC,EACAC,EACAC,EACAC,EACR1c,EACQkU,EACRsD,EACAC,EACAC,EACAC,GAVQ,KAAK2E,MAALA,EACA,KAAKC,MAALA,EACA,KAAMC,OAANA,EACA,KAAWC,YAAXA,EACA,KAAOC,QAAPA,EAEA,KAAUxI,WAAVA,EAjBO,KAASqD,UAAoB,GACtC,KAAkBoF,mBAAuB,GACzC,KAAQC,SAAkB,GAC1B,KAAgBC,iBAAkC,GAClD,KAAiBC,kBAAkC,GAEnD,KAAoBC,sBAAY,EAiBtC,KAAKzF,MAAQA,EACb,KAAK0F,kBAAoB,IAAI3F,GAC3BC,EACA,KAAKC,UACLvX,EACAkU,EACAsD,EACAC,EACAC,EACAC,GAIGnrP,IAAAA,CAAK8qP,GACV,KAAKA,MAAQA,EACb,KAAK0F,kBAAkBxwP,KAAK8qP,GAGvB,aAAMh7B,GAMX,OAHI,KAAKygC,4BACD,KAAKC,kBAAkBrhQ,UAExB,KAAK47P,UAKPr1O,QAAAA,CACLA,GAIA,OAFA,KAAK66O,sBAAuB,EAC5B,KAAKC,kBAAkBrE,iBAAiBz2O,GACjC,KAGF+6O,cAAAA,CACL/6O,GAIA,OAFA,KAAK66O,sBAAuB,EAC5B,KAAKC,kBAAkBrE,iBAAiBz2O,GACjC,KAGF1oB,OAAAA,CAAQA,GAEb,OADA,KAAKojQ,SAAW,KAAKA,SAASptP,OAAOhW,GAC9B,KAGF25P,iBAAAA,CACLjxO,GAGA,OADA,KAAKy6O,mBAAqB,KAAKA,mBAAmBntP,OAAO0S,GAClD,KAGFwxO,eAAAA,CACLwJ,GAGA,OADA,KAAKL,iBAAmB,KAAKA,iBAAiBrtP,OAAO0tP,GAC9C,KAGFvJ,gBAAAA,CACLuJ,GAGA,OADA,KAAKJ,kBAAoB,KAAKA,kBAAkBttP,OAAO0tP,GAChD,KAGF,SAAMC,CAAIlkP,GAMf,OALI,KAAK8jP,4BACD,KAAKC,kBAAkBrhQ,UAIxB,KAAK6gQ,UAAU,KAAKlF,MAAO,CAChCp1O,SAAU,KAAKq1O,UACf/9P,QAAS,KAAKojQ,SACdzJ,kBAAmB,KAAKwJ,mBACxBjJ,gBAAiB,KAAKmJ,iBACtBlJ,iBAAkB,KAAKmJ,kBACvB7jP,QAASA,IAIN,gBAAMmkP,CAAWnkP,GAKtB,MAAO,CACLqjN,cAFoB,KAAKA,UAGzBhhO,gBAAiB,KAAK6hQ,IAAIlkP,IAIvB,UAAM2O,CAAK3O,GAKhB,GAJI,KAAK8jP,4BACD,KAAKC,kBAAkBrhQ,WAG1B,KAAK+gQ,QACR,MAAM,IAAIxhQ,MAAM,iCAIlB,OAAO,KAAKwhQ,WAAW,KAAKpF,MAAO,CACjCp1O,SAAU,KAAKq1O,UACf/9P,QAAS,KAAKojQ,SACdzJ,kBAAmB,KAAKwJ,mBACxBjJ,gBAAiB,KAAKmJ,iBACtBlJ,iBAAkB,KAAKmJ,kBACvB7jP,QAASA,IAIN,cAAMymO,CACXzmO,GAOA,OALI,KAAK8jP,4BACD,KAAKC,kBAAkBrhQ,UAIxB,KAAK8gQ,eAAe,KAAKnF,MAAO,CACrCp1O,SAAU,KAAKq1O,UACf/9P,QAAS,KAAKojQ,SACdzJ,kBAAmB,KAAKwJ,mBACxBjJ,gBAAiB,KAAKmJ,iBACtBlJ,iBAAkB,KAAKmJ,kBACvB7jP,QAASA,IAIN,iBAAMvC,GAMX,OALI,KAAKqmP,4BACD,KAAKC,kBAAkBrhQ,UAIxB,KAAK2gQ,SAAS,KAAKhF,MAAO,CAC/Bp1O,SAAU,KAAKq1O,UACf/9P,QAAS,KAAKojQ,SACdzJ,kBAAmB,KAAKwJ,mBACxBjJ,gBAAiB,KAAKmJ,iBACtBlJ,iBAAkB,KAAKmJ,oBAQpB,aAAMO,GAKX,MAAO,CACL3mP,kBAAmB,KAAKA,cACxB4lN,cAAe,KAAKA,UACpB9iO,cAAe,KAAKojQ,UAIjB,iBAAMljQ,GAMX,OALI,KAAKqjQ,4BACD,KAAKC,kBAAkBrhQ,UAIxB,KAAK4gQ,SAAS,KAAKjF,MAAO,CAC/Bp1O,SAAU,KAAKq1O,UACf/9P,QAAS,KAAKojQ,SACdzJ,kBAAmB,KAAKwJ,mBACxBjJ,gBAAiB,KAAKmJ,iBACtBlJ,iBAAkB,KAAKmJ,qBC7Sf,MAAOQ,GACZ,YAAOt5D,CACZ3qM,EACA6hP,EACA4gB,EACA9gB,GAEA,MAAMuY,EAAQrY,EAAMh5N,SAASiwC,MAAMrqD,GAAkBA,EAAEyrP,QACjDgK,IAAcriB,EAAMsiB,QAC1B,GAAIjK,IAAUgK,EAAW,OAsBzB,OApB0B,yBACxB,IAAIE,QAAyB3B,KAAW7iQ,WACxC,MAAMykQ,EAAe,mBAAmBrkQ,KACxC,IAAIskQ,EAAYF,EAAiBvtL,IAAI/d,MAAMtpD,GACzCA,EAAE3I,WAAWw9P,KAEf,IAAKC,EACH,MAAM,IAAIziQ,MAAM,4BAElB,IAAI2vK,EAAa/zJ,EAAO6mP,EAAU54P,MAAM24P,EAAaxkQ,SACjD0kQ,EAAa1iB,EAAMsiB,QACvB,IAAKI,EACH,MAAM,IAAI1iQ,MAAM,6BAMlB,OAJcwrP,GAASC,YACrB,CAAE3nP,KAAM4+P,GACRp8P,MAAM3F,KAAK,IAAiB,QAAZolI,EAAA+5G,EAAI94N,gBAAQ,IAAA++G,EAAAA,EAAI,MAAsB,QAAbo2B,EAAA2jF,EAAI3gK,aAAS,IAAAg9E,EAAAA,EAAA,MAE3CvgJ,OAAO+zJ,EACtB,GChBU,MAAOgzF,GAIZ,YAAO75D,CACZg3C,EACA1uF,EACAjzJ,EACAgxB,EACAyzO,GAYA,MAAMX,EAAoB,GACpBzmP,EAAoC,GACpChd,EAAoC,GACpCgmP,EAA8B,GAC9Bl3G,EAA4B,GAC5B5gH,EAAsB,GAEtBs6N,EAAYnH,EAAeC,GAE3BnxN,EAAiCmxN,EAAI94N,SACvC4xO,GAAe9vD,MAAMg3C,EAAK1uF,EAAOjzJ,EAAWgxB,GAC3C,GA6CL,OA3CA2wN,EAAIr5N,aAAavb,SAAS80O,IACxB,MAAM6iB,EAAS/K,GAAmBhvD,MAChCk3C,GACA,CAAC4M,EAAQpmO,IAAO4qI,EAAM51I,YAAYc,OAAOswO,EAAQpmO,IACjDroB,GAEI2kQ,EAASxK,GAAmBxvD,MAAMk3C,EAAO6iB,GACzCE,EAAUrK,GAAW5vD,MAAMk3C,EAAO8iB,EAAQ9b,EAAW73N,GACrD6zO,EAAenH,GAAgB/yD,MACnCk3C,EACA8iB,EACA9b,EACA73N,EACAiiI,EACAjzJ,EACA2hP,GAEImjB,EAAWb,GAAYt5D,MAAM3qM,EAAW6hP,EAAOgjB,EAAcljB,GAC7DojB,EAAaxC,GAAsB53D,MACvC35K,EACAhxB,EACA6hP,EACA6iB,EACAC,EACAC,EACAC,EACAC,EACAt0O,EACAmxN,EAAI3gK,OAAS,GACbyjL,GAAqBA,EAAkB5iB,IAEnCjyO,EAAO29O,IAAU1L,EAAMjyO,MAE7ByN,EAAYzN,GAAQ80P,EACpBrkQ,EAAYuP,GAAQ+0P,EACpBb,EAAIl0P,GAAQg1P,EACZve,EAASz2O,GAAQi1P,EACjB11H,EAAQv/H,GAAQm1P,EACZD,IACFv2O,EAAK3e,GAAQk1P,EACd,IAGI,CACLhB,EACAzmP,EACAhd,EACAmwB,EACA61N,EACAl3G,EACA5gH,UC1DO2zO,GAyKX,aAAWliQ,GACT,OAAO,KAAK66P,WAOd,OAAWlZ,GACT,OAAO,KAAK8S,KAOd,SAAWxhG,GACT,OAAO,KAAK6nG,OAOd,YAAW9pO,GACT,OAAO,KAAK21N,UAkBd16O,WAAAA,CACE01O,EACA3hP,EACAgxB,EACAiiI,EACAwxG,GAIAzkQ,EAAYiiP,EAAiBjiP,GAExBgxB,IACHA,EAAWE,MAIb,KAAKujO,KAAO9S,EACZ,KAAKgF,UAAY31N,EACjB,KAAK6pO,WAAa76P,EAClB,KAAK86P,OAAc,OAAL7nG,QAAK,IAALA,EAAAA,EAAS,IAAI0+F,GAAWhQ,GACtC,KAAKvsI,QAAU,IAAI8mJ,GAAa,KAAKrB,WAAY7pO,EAAU,KAAK8pO,QAGhE,MAAOgJ,EAAKzmP,EAAahd,EAAamwB,EAAS61N,EAAUl3G,EAAS61H,GAChER,GAAiB75D,MACfg3C,EACA,KAAKmZ,OACL96P,EACAgxB,EACA,OAAAyzO,QAAiB,IAAjBA,EAAAA,EAAsB,KAAgB,GAE1C,KAAKX,IAAMA,EACX,KAAKzmP,YAAcA,EACnB,KAAKhd,YAAcA,EACnB,KAAKmwB,QAAUA,EACf,KAAK61N,SAAWA,EAChB,KAAKl3G,QAAUA,EACf,KAAK61H,MAAQA,EAYR,eAAaC,CAClBvgQ,EACAssB,GAEA,MAAMhxB,EAAYiiP,EAAiBv9O,GAE7Bi9O,QAAYugB,GAAQC,SAAcniQ,EAAWgxB,GACnD,IAAK2wN,EACH,MAAM,IAAI9/O,MAAM,8BAA8B6C,EAAQjC,cAGxD,OAAO,IAAIy/P,GAAQvgB,EAAK3hP,EAAWgxB,GAY9B,qBAAamxO,CAClBz9P,EACAssB,GAEAA,EAAW,OAAAA,QAAQ,IAARA,EAAAA,EAAYE,KACvB,MAAMlxB,EAAYiiP,EAAiBv9O,GAE7BwgQ,QbhKH,eAA0BllQ,GAC/B,MAAMqW,SAAcvT,EAAAA,UAAU89P,mBAAmB,GAAI5gQ,IAAY,GACjE,aAAa8C,EAAAA,UAAUqiQ,eAAe9uP,EAK/B,aAL6CrW,EACtD,Ca6J0BolQ,CAAWplQ,GAC3B64P,QAAoB7nO,EAAS9xB,WAAWwzF,eAAewyK,GAC7D,IAAKrM,EACH,OAAO,KAGT,IAAI7I,GbjJyBruP,EaiJKk3P,EAAYl3P,KAAK+J,MAAM,GbhJpD8tP,GAAmB/7O,OAAO9b,IAD7B,IAA2BA,EakJ7B,MAAM0jQ,GAAcluO,EAAAA,EAAAA,IAAQ64N,EAAWruP,MACvC,OAAOgqB,KAAKwE,MAAMmxN,EAAY+jB,IAUzB3+O,gBAAAA,CACLwnH,EACAlnC,GAMA,OAAO,KAAKoO,QAAQ1uF,iBAAiBwnH,EAAWlnC,GAM3C,yBAAMghD,CAAoB/6I,GAC/B,aAAa,KAAKmoG,QAAQ4yC,oBAAoB/6I,IClXlD,MAAMq4P,GAAoB,IAAIxiQ,EAAAA,UAAU,oCAElC,SAAUq0G,GAAQnmF,GACtB,OAAO,IAAIkxO,GAAuBqD,GAAKD,GAAmBt0O,EAInD,IAAI8jO,GAAYyQ,IAHzB,CAuYO,MAAMA,GAAqB,CAChC96M,QAAS,QACT76C,KAAM,iBACN0Y,aAAc,CACZ,CACE1Y,KAAM,gBACNiZ,SAAU,CACR,CACEjZ,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,KACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,WACNjK,KAAM,OAER,CACEiK,KAAM,QACNjK,KAAM,OAER,CACEiK,KAAM,QACNjK,KAAM,eAIZ,CACEiK,KAAM,SACNiZ,SAAU,CACR,CACEjZ,KAAM,SACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,QACNjK,KAAM,eAIZ,CACEiK,KAAM,WACNiZ,SAAU,CACR,CACEjZ,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,KACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,WACNjK,KAAM,SAIZ,CACEiK,KAAM,wBACNiZ,SAAU,CACR,CACEjZ,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,KACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,OACNjK,KAAM,aAER,CACEiK,KAAM,OACNjK,KAAM,UAER,CACEiK,KAAM,WACNjK,KAAM,OAER,CACEiK,KAAM,QACNjK,KAAM,OAER,CACEiK,KAAM,QACNjK,KAAM,eAIZ,CACEiK,KAAM,sBACNiZ,SAAU,CACR,CACEjZ,KAAM,QACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,oBACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,aACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,aACNjK,KAAM,eAIZ,CACEiK,KAAM,uBACNiZ,SAAU,CACR,CACEjZ,KAAM,QACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,KACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,oBACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,aACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,WACNjK,KAAM,SAIZ,CACEiK,KAAM,yBACNiZ,SAAU,CACR,CACEjZ,KAAM,QACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,oBACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,aACNjK,KAAM,eAIZ,CACEiK,KAAM,wBACNiZ,SAAU,CACR,CACEjZ,KAAM,QACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,aACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,aACNjK,KAAM,eAIZ,CACEiK,KAAM,WACNiZ,SAAU,CACR,CACEjZ,KAAM,SACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,QACNjK,KAAM,SAIZ,CACEiK,KAAM,mBACNiZ,SAAU,CACR,CACEjZ,KAAM,UACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,OACNjK,KAAM,aAER,CACEiK,KAAM,OACNjK,KAAM,UAER,CACEiK,KAAM,QACNjK,KAAM,OAER,CACEiK,KAAM,QACNjK,KAAM,eAIZ,CACEiK,KAAM,iBACNiZ,SAAU,CACR,CACEjZ,KAAM,UACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,OACNjK,KAAM,aAER,CACEiK,KAAM,OACNjK,KAAM,UAER,CACEiK,KAAM,QACNjK,KAAM,eAIZ,CACEiK,KAAM,mBACNiZ,SAAU,CACR,CACEjZ,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,OACNsqP,OAAO,EACPn8O,UAAU,GAEZ,CACEnO,KAAM,KACNsqP,OAAO,EACPn8O,UAAU,IAGd5K,KAAM,CACJ,CACEvD,KAAM,WACNjK,KAAM,OAER,CACEiK,KAAM,OACNjK,KAAM,UAER,CACEiK,KAAM,QACNjK,KAAM,gBAKdkjB,SAAU,CACR,CACEjZ,KAAM,QACNjK,KAAM,CACJy6D,KAAM,SACN6nC,OAAQ,CACN,CACEr4F,KAAM,UACNjK,KAAM,OAER,CACEiK,KAAM,QACNjK,KAAM,OAER,CACEiK,KAAM,mBACNjK,KAAM,aAER,CACEiK,KAAM,QACNjK,KAAM,aAER,CACEiK,KAAM,gBACNjK,KAAM,CACJgoP,QAAS,sBAOrB3sK,MAAO,CACL,CACEpxE,KAAM,gBACNjK,KAAM,CACJy6D,KAAM,SACN6nC,OAAQ,CACN,CACEr4F,KAAM,uBACNjK,KAAM,kBCjwBL6/P,GACJ,aAAOC,CAAOz0O,GACnB,OAAOmmF,GAAcnmF,gNCPzB,MAAAlU,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAGA8wD,EAAA9wD,EAAA,OAUahB,EAAAA,sCAAuC,EAAAgf,EAAAY,QAAuC,EACvF,EAAAX,EAAApa,WAAU,kBACV,EAAAma,EAAA+/G,MAAK,4BACL,EAAA//G,EAAA08B,KAAI,yBACJ,EAAA18B,EAAA+/G,MAAK,wBACL,EAAA//G,EAAA08B,KAAI,iBAGK17C,EAAAA,wCAA0CA,EAAA4nQ,qCAAqCxnP,KAE5FpgB,EAAAA,kCAAA,SAAkDuB,GAC9C,MAAM0wD,GAAgB,EAAAH,EAAAI,kBAAiBJ,EAAAK,cAAcwpL,sBAAuBp6O,EAAK8wD,SACjF,OAAsB,OAAlBJ,EACOjyD,EAAA4nQ,qCAAqCjoP,OAAOsyC,GAEhD,IACX,gCC7BA/uD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ+iE,2BAAwB,EAChC,MAAM19D,EAAUrE,EAAQ,OACxB,MAAM+hE,EACF50D,WAAAA,CAAYvH,GACR1G,KAAK0G,QAAUA,CACnB,CACAi/F,aAAAA,CAAchiG,GACV,OAAOA,CACX,CACA0C,UAAAA,CAAW3C,EAAQC,GAGf,GAFek/D,EAAsBD,UAAUj/D,GACtB+B,OAAO0D,KAAKC,MAAMwjB,KAAKC,MAAQ,MAEpD,MAAM,IAAIjpB,MAAM,oBACpB,OAAOQ,QAAQC,QAAQ,CAAE4C,YAAa,GAAIC,QAAS,IACvD,CACAK,MAAAA,GACI,OAAOq7D,EAAsBp7D,GACjC,CACA,gBAAOm7D,CAAUj/D,GACb,OAAO,EAAIwB,EAAQugG,sBAAsB/hG,EAAKq+D,WAAY,IAAI4+E,gBAAgB,GAClF,EAEJ9gJ,EAAQ+iE,sBAAwBA,EAChCA,EAAsBp7D,IAAM,CAAEK,GAAI,iCCrBlChI,EAAQ,OAAkB,EAkB1BA,EAAQ,EAjBc,CACpB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,gBACL,KAAQ,QAEV,SAAY,IACX,CACD,KAAQ,OACR,QAAW,CACT,EAAK,mIAEP,SAAY,yGCbHA,EAAAA,aAAmBy4G,IAGrB,CAAE94F,OAFM84F,EAAO94F,OAAOsG,KAAKwyF,GAEjBp4F,OADFo4F,EAAOp4F,OAAO4F,KAAKwyF,iCCRtCv1G,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQmwJ,eAAY,EAMpBnwJ,EAAQmwJ,UALR,MACIhiJ,WAAAA,CAAYS,GACR1O,KAAK0O,WAAaA,CACtB,6GCLJ,MAAAokB,EAAAhyB,EAAA,OAEAiyB,EAAAjyB,EAAA,OAEAgJ,EAAAhJ,EAAA,OAEahB,EAAAA,kBAAoB,UAC/B,MAAM,YAAEozB,GAAgBtR,EAClBoR,QAAiB,EAAAD,EAAAE,oBAAmBC,IAE1C,EAAAppB,EAAA4uK,4BAA2B92J,EAAQwQ,SAEnC,IACE,MAAMqB,GAAU,EAAAX,EAAAY,sBAAqB9R,EAAQwQ,SACvCuB,QAAiBX,EAAS20O,kBAAkBl0O,GAClD7R,EAAQiS,WAAWF,GACnB,MAAO9Q,GACP+F,QAAQ/F,MAAM,4CAA6CA,GAC3DjB,EAAQkS,6CClBZ9wB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ8nQ,oBAAiB,EACzB,MAAM/mQ,EAAYC,EAAQ,OACpB+mQ,EAA0B/mQ,EAAQ,OAClCgnQ,EAAoBhnQ,EAAQ,OAC5BinQ,EAAajnQ,EAAQ,OACrBmE,EAASnE,EAAQ,OACjBknQ,EAAsBlnQ,EAAQ,OAC9B2mL,EAAiB3mL,EAAQ,OACzByC,EAAWzC,EAAQ,OACnBmgI,EAAengI,EAAQ,OACvBunB,EAAKvnB,EAAQ,MAEnB,SAASqqL,EAAqB55K,GAC1B,OAAO,IAAIu2P,EAAkBG,gBAAgB,CACzCx7M,QAASl7C,EAAEg6K,aACX28E,sBAAuB,IAAI3kQ,EAASgB,OAAOC,KAAK+M,EAAEk6K,mBAAoB,OAAO79K,WAC7EoyD,WAAY,IAAIz8D,EAASgB,OAAOC,KAAK+M,EAAEo6K,gBAAiB,OAAO/9K,WAC/D2nH,UAAWhkH,EAAEs6K,eACb5b,MAAO1+J,EAAEu6K,WACT5lL,MAAOqL,EAAEuyE,WACTl/E,KAAMrB,EAASgB,OAAOC,KAAK+M,EAAEhI,UAAW,OAAOqE,WAEvD,CAEA,MAAMg6P,UAAuBI,EAAoBG,kBAW7C,gBAAMrsN,CAAWp4C,EAAQwuB,EAAQ48J,EAAYC,GACzC,MAAMq5E,EAAkBj9E,EAAqBj5J,GAC7C,OAAO,IAAIu1J,EAAeG,aAAalkL,EAAQ1D,WAAYA,KAAKm5G,QAAQg4B,QACnE+rG,WAAWkrB,EAAiBl2O,EAAOitD,YAAajtD,EAAO27J,eAAgBiB,EAAYC,GACnFlkK,SAAS,CACVnnB,SACA2kQ,UAAWroQ,KAAKsoQ,kBAChBC,YAAavoQ,KAAKwoQ,eAAeJ,EAAgBxjQ,MACjD4jL,cAAe3nL,EAAU26B,cAAcx5B,YAEtCqd,cACT,CAaA,YAAMopP,CAAO/kQ,EAAQ0uF,EAAchnE,EAAeuY,EAAU+kO,EAAqBC,GAC7E,OAAO,IAAIlhF,EAAeG,aAAalkL,EAAQ1D,WAAYA,KAAKm5G,QAAQg4B,QACnEy3H,kBAAkBx2K,EAAchnE,EAAeuY,EAAU+kO,EAAqBC,GAC9E99O,SAAS,CACVnnB,SACA2kQ,UAAWroQ,KAAKsoQ,oBAEfjpP,cAAe,KAAM,KAAM,MAAM,EAC1C,CACA,sBAAMwpP,CAAiBnlQ,EAAQ26E,GAC3B,OAAO,IAAIopG,EAAeG,aAAalkL,EAAQ1D,WAAYA,KAAKm5G,QAAQg4B,QACnE23H,iBAAiB,IAAIzgP,EAAGg2D,IACxBxzD,SAAS,CACVnnB,SACAqlQ,UAAW/oQ,KAAKgpQ,aAAa3qL,EAAQ36E,GACrC8kL,cAAe3nL,EAAU26B,cAAcx5B,YAEtCqd,cAAe,IACxB,CACApR,WAAAA,CAAY/M,EAAY88E,EAAYirL,GAA8E,IAA9DjmK,EAAkBphG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAIq/H,EAAaQ,WAAWvgI,GACjGkF,MAAMlF,EAAY6mQ,EAAYkB,EAAgB,KAAMjmK,GACpDhjG,KAAKsoQ,kBAAoBtoQ,KAAKkiQ,IAAI,SAClCliQ,KAAKwoQ,eAAiBxoQ,KAAKkiQ,IAAI,UAAWt9P,GAAS,CAACA,KACpD5E,KAAKgpQ,aAAehpQ,KAAKkiQ,IAAI,QAAQ,CAAC7jL,EAAQv+D,IAAW,CAAC,IAAIuI,EAAGg2D,GAAQ9yD,YAAYhoB,EAASgB,OAAQ,KAAM,GAAIub,EAAO/a,cACvH/E,KAAKmgF,gBAAkB,EACvBngF,KAAKogF,oBAAsB,EAC3BpgF,KAAKysL,yBAA2B,EAChCzsL,KAAKg+E,WAAaA,CACtB,CAOAkrL,sBAAAA,CAAuBb,GACnB,MAAMc,EAAoB,IAAIv+O,IAI9B,OAHAy9O,EAAUe,iBAAiBr6P,SAAQwC,IAC/B43P,EAAkB5mQ,IAAIgB,EAASgB,OAAOC,KAAK+M,GAAG9M,SAAS,OAAO,IAE3D0kQ,CACX,CASAz8E,sBAAAA,CAAuBC,EAAqBC,GACxC,MAAMruG,EAA0B,CAACouG,GACjC,IAAK,IAAIx5F,KAAey5F,EACpBruG,EAAwBj3E,KAAKi3E,EAAwBA,EAAwB18E,OAAS,GAAGgrL,YAAY15F,IAEzG,OAAO5U,CACX,CAaA,kBAAMuuG,CAAappL,EAAQ2oB,EAAS2zD,EAAc+sG,EAAS1uG,EAAQ73E,EAASo9N,GACxE,MAAM52C,EAAiB3gK,EAAQ3jB,IAAIyiL,GAC7BtkL,QAAW+8N,EAAS52C,GACrB8uE,kBAAkB9uE,EAAetkL,KAAI6I,IAC/B,CACHuO,OAAQ9f,KAAKwoQ,eAAej3P,EAAE3M,MAC9Bmb,UAAU,EACVC,YAAY,OAGf3d,cACLwE,EAAG4jB,SAAW/mB,EACd1D,KAAK68E,KAAKo/I,kBAAkBp1N,EAAI,KAAML,GACtCxG,KAAK68E,KAAK2/I,gBAAgB31N,EAAI,KAAML,GACpC,MAAM+3E,EAA0Bv+E,KAAK0sL,uBAAuB1sG,EAAcgtG,GACpE1uG,EAAmBC,EAAwBA,EAAwB18E,OAAS,GAKlF,OAJe,IAAXw8E,GAAgBp5E,EAAOyqK,oBAAoBE,SAASrsK,EAASgB,OAAOC,KAAK85E,EAAiBsB,WAAYmtG,KAEtG1uG,EAAS,GAEN,CACHA,OAAQA,EACRC,mBACAz3E,GAAI,CACAA,KACA1E,QAAS,IAEbo8E,0BAER,CAIA,gBAAMJ,GACF,MAAMx6E,QAAa3D,KAAKm5G,QAAQ3mF,QAAQ61O,UAAU1/E,cAAc3oL,KAAKsoQ,mBACrE,OAAY,MAAR3kQ,EACO,KACJ,CACHi7E,YAAaj7E,EAAKsqL,YAClBd,WAAY5pL,EAASgB,OAAOC,KAAKb,EAAK0lQ,eAAe5kQ,SAAS,OAC9Dw9E,UAAW1+E,EAASgB,OAAOC,KAAKb,EAAK2lQ,cAAc17P,UAAUnJ,SAAS,OACtEm7E,UAAWr8E,EAASgB,OAAOC,KAAKb,EAAKi8E,WAE7C,CAQA,+BAAMkuG,CAA0BC,EAAWC,GACvC,MAAMq6E,QAAkBroQ,KAAKm5G,QAAQ3mF,QAAQ61O,UAAUt6O,MAAM/tB,KAAKsoQ,mBAClE,GAA2B,MAAvBt6E,GAA+Bq6E,EAAUp6E,YAAcD,EACvD,OAAO,KAEX,MAAMm7E,EAAoBnpQ,KAAKkpQ,uBAAuBb,GAChDkB,EAAkBhmQ,EAASgB,OAAOC,KAAKupL,EAAU9rG,UAAW,OAAOr0E,UACnE47P,EAAWxpQ,KAAKwoQ,eAAee,GAC/B5lQ,QAAa3D,KAAK62G,OAAO0pF,aAAaipE,GAAUn6P,UAClD,GAAmB,cAAfZ,EAAMmD,MAAuC,gBAAfnD,EAAMmD,KAAwB,CAC5D,MAAM63P,EAAYh7P,EAAM9K,KAClBwpL,EAAa5pL,EAASgB,OAAOC,KAAKilQ,EAAUt8E,YAAY1oL,SAAS,OACvE,GAAI8kQ,EAAgBhpP,OAAOhd,EAASgB,OAAOC,KAAKilQ,EAAUr8E,aAAe+7E,EAAkB78O,IAAI6gK,GAC3F,MAAO,CACHj7J,OAAQ,IAAI21O,EAAwB3oC,sBAAsBuqC,EAAUv3O,QACpE8sD,OAAQqpL,EAAUp6E,YAClBd,aAEZ,KAKJ,OAHY,MAARxpL,GACA3D,KAAK6hB,OAAO0F,MAAM,0DACK5jB,EAAKwpL,WAAa,eAAiBY,EAAU9rG,UAAY,YAAct+E,EAAKq7E,QAChGr7E,CACX,CAOA,6BAAMyqL,CAAwBC,EAAmBN,GAC7C,MAAMw7E,EAAkBhmQ,EAASgB,OAAOC,KAAKupL,EAAU9rG,UAAW,OAAOr0E,UACnE47P,EAAWxpQ,KAAKwoQ,eAAee,GAC/B5lQ,QAAa3D,KAAK62G,OAAO0pF,aAAaipE,GAAUn6P,UAClD,GAAmB,cAAfZ,EAAMmD,MAAuC,gBAAfnD,EAAMmD,KAAwB,CAC5D,MAAM63P,EAAYh7P,EAAM9K,KAClBwpL,EAAa5pL,EAASgB,OAAOC,KAAKilQ,EAAUt8E,YAAY1oL,SAAS,OACvE,GAAI4pL,IAAsBlB,EACtB,OAAO,IAAI06E,EAAwB3oC,sBAAsBuqC,EAAUv3O,OAC3E,KAKJ,OAHY,MAARvuB,GACA3D,KAAK6hB,OAAO0F,MAAM,wDACK8mK,EAAoB,eAAiBN,EAAU9rG,UAAY,YAAct+E,EAAKi7E,aAClGj7E,CACX,CAIA,iCAAM+6E,GACF,MAAM2pL,QAAkBroQ,KAAKm5G,QAAQ3mF,QAAQ61O,UAAUt6O,MAAM/tB,KAAKsoQ,mBAC5Da,EAAoBnpQ,KAAKkpQ,uBAAuBb,GAChD1kQ,QAAa3D,KAAK62G,OAAO0pF,aAAavgM,KAAKm5G,QAAQn3G,WAAWqN,UAChE,GAAmB,cAAfZ,EAAMmD,MAAuC,gBAAfnD,EAAMmD,KAAwB,CAC5D,MAAM63P,EAAYh7P,EAAM9K,KAClB2qL,EAAe/qL,EAASgB,OAAOC,KAAKilQ,EAAUr8E,WAAWx/K,UAAUnJ,SAAS,OAC5E8tF,QAAsBvyF,KAAKg+E,WAAWuU,cAAc+7F,GAAc1rK,OAAM,KAAM,IAC9EuqK,EAAa5pL,EAASgB,OAAOC,KAAKilQ,EAAUt8E,YAAY1oL,SAAS,OAEvE,GAAI8tF,GAAiB42K,EAAkB78O,IAAI6gK,GACvC,MAAO,CACH3uG,mBAAoB,IAAIqpL,EAAwB3oC,sBAAsBuqC,EAAUv3O,QAChFusD,0BAA2Bz+E,KAAKg+E,WAAW+T,eAAeu8F,GAC1DnB,WAAYA,EAExB,IACD,KAAM,IAKT,OAJY,MAARxpL,GACA3D,KAAK6hB,OAAO0F,MAAM,4DACK5jB,EAAKwpL,WAAa,eAAiBxpL,EAAK86E,oBAAoBl1E,UAC/E,YAAc5F,EAAK66E,mBAAmBI,aACvCj7E,CACX,CAUA,uBAAMkrL,CAAkBnrL,EAAQwuB,EAAQ48J,EAAYC,EAAsBvoL,GACtE,GAAoC,KAAhCuoL,EAAqBltL,OACrB,MAAM,IAAIgC,MAAM,gCACpB,MAAMm5E,QAAeh9E,KAAK87C,WAAW,IAAIj7C,EAAUiE,UAAUpB,GAASwuB,EAAQ48J,EAAYC,GAG1F,OAFA/uL,KAAK6hB,OAAO0F,MAAM,0DAA4D2K,EAAO3oB,UACjF,iBAAmB2oB,EAAOitD,YAAc,gBAAkB2vG,EAAa,2BAA6BC,EAAqB7xH,cAChH8f,EAAOn2E,GAAGL,EAC3B,CASAq5E,eAAAA,CAAgBn8E,EAAQyoL,EAAansG,EAAcx5E,GAC/CxG,KAAK6hB,OAAO0F,MAAM,2DAA6D4kK,EAAYtqL,QAC3F,MAAM6nQ,EAAU,IAAI7oQ,EAAUiE,UAAUpB,GACxC,OAAO1D,KAAK8sL,aAAa48E,EAASv9E,EAAansG,EAAc,KAAM,EAAGx5E,GAAUmjQ,GAAiB3pQ,KAAKm5G,QAAQg4B,QACzGy4H,mBAAmBD,EAAc3pL,GACjCn1D,SAAS,CACVnnB,OAAQgmQ,EACRrB,UAAWroQ,KAAKsoQ,qBAExB,CAUA,wBAAM5oL,CAAmBh8E,EAAQ2oL,EAAarsG,EAAc+sG,EAASvmL,GAEjE,IAAI63E,SADoBr+E,KAAKm5G,QAAQ3mF,QAAQ61O,UAAUt6O,MAAM/tB,KAAKsoQ,oBAC3CuB,YACvB,MAAMH,EAAU,IAAI7oQ,EAAUiE,UAAUpB,GAGxC,OAFA1D,KAAK6hB,OAAO0F,MAAM,oEACD8kK,EAAYxqL,OAAS,YAAcw8E,EAAO55E,SAAS,WACvDzE,KAAK8sL,aAAa48E,EAASr9E,EAAarsG,EAAc+sG,EAAS1uG,EAAO5/D,WAAYjY,GAAUmjQ,GAAiB3pQ,KAAKm5G,QAAQg4B,QAClI24H,kBAAkBH,EAAc3pL,EAAc3B,GAAQ,GACtDxzD,SAAS,CACVnnB,OAAQgmQ,EACRrB,UAAWroQ,KAAKsoQ,kBAChBS,UAAW/oQ,KAAKgpQ,aAAa3qL,EAAO5/D,WAAYirP,GAChDlhF,cAAe3nL,EAAU26B,cAAcx5B,aAE/C,CAWA+9E,eAAAA,CAAgBr8E,EAAQ2oL,EAAarsG,EAAc3B,EAAQ0uG,EAASvmL,GAChExG,KAAK6hB,OAAO0F,MAAM,uEACD8kK,EAAYxqL,OAAS,YAAcw8E,EAAO55E,SAAS,KACpE,MAAMilQ,EAAU,IAAI7oQ,EAAUiE,UAAUpB,GACxC,OAAO1D,KAAK8sL,aAAa48E,EAASr9E,EAAarsG,EAAc+sG,EAAS1uG,EAAQ73E,GAAUmjQ,GAAiB3pQ,KAAKm5G,QAAQg4B,QACjH24H,kBAAkBH,EAAc3pL,EAAc,IAAI33D,EAAGg2D,IAAS,GAC9DxzD,SAAS,CACVnnB,OAAQgmQ,EACRrB,UAAWroQ,KAAKsoQ,kBAChBS,UAAW/oQ,KAAKgpQ,aAAa3qL,EAAQqrL,GACrClhF,cAAe3nL,EAAU26B,cAAcx5B,aAE/C,CAUAysL,oBAAAA,CAAqB/qL,EAAQ2oL,EAAarsG,EAAc+sG,EAASvmL,GAC7DxG,KAAK6hB,OAAO0F,MAAM,sEACD8kK,EAAYxqL,QAC7B,MAAM6nQ,EAAU,IAAI7oQ,EAAUiE,UAAUpB,GACxC,OAAO1D,KAAK8sL,aAAa48E,EAASr9E,EAAarsG,EAAc+sG,GAAU,EAAGvmL,GAAUmjQ,GAAiB3pQ,KAAKm5G,QAAQg4B,QAC7G44H,uBAAuBJ,EAAc3pL,GACrCn1D,SAAS,CACVnnB,OAAQgmQ,EACRrB,UAAWroQ,KAAKsoQ,qBAExB,CAQA,mBAAM0B,CAActmQ,EAAQumQ,GAExB,IAAI5rL,SADoBr+E,KAAKm5G,QAAQ3mF,QAAQ61O,UAAUt6O,MAAM/tB,KAAKsoQ,oBAC3CuB,YAAYprP,WACnC,MAAMi/D,EAAM,GACZ,IAAIV,EAAS,IAAIyqG,EAAeG,aAAalkL,EAAOk/C,eAAgB5iD,MAChEkqQ,EAAgBD,EACpB,IAAK,IAAIj/P,EAAmB,MAAfi/P,EAAsB,EAAIA,EAAc,EAAGj/P,GAAKqzE,EAAQrzE,IAAK,CACtEk/P,EAAgBl/P,EAChB,MAAMm/P,EAAcnqQ,KAAKgpQ,aAAah+P,EAAGtH,EAAOk/C,gBAE/B,YADK5iD,KAAKm5G,QAAQ3mF,QAAQu2O,UAAUpgF,cAAcwhF,KAGnEnqQ,KAAK6hB,OAAOwD,KAAK,qCAAuCra,GACxDgyE,EAAOz6E,UAAUvC,KAAK6oQ,iBAAiBnlQ,EAAOk/C,eAAgB53C,IAC1DgyE,EAAOW,aA7WK,WA8WNX,EAAOS,SAASC,GACtBV,EAAS,IAAIyqG,EAAeG,aAAalkL,EAAOk/C,eAAgB5iD,OAExE,CAIA,GAHIg9E,EAAOW,aAlXS,UAmXVX,EAAOS,SAASC,GAEtBA,EAAI77E,OAAS,EAAG,CAChB,MAAMm5N,QAAmBh7N,KAAK4nG,aAAa35C,eAAevqD,EAAQg6E,GAAK,GACvE19E,KAAK6hB,OAAOwD,KAAK,6CAA+C21M,EAAW99J,OAC/E,CACA,OAAOgtM,CACX,CAOA,4BAAMx7E,CAAuBV,EAAqBxnL,GAC9C,MAEMmoL,EAAmBX,SAFHhuL,KAAKm+E,cACKS,YAEhC,GAAI+vG,GAAoB,EACpB,OAAO,GACX,MAAMC,EAAqBlpL,OAAOipL,SAA0B3uL,KAAKixH,eAAezqH,GAGhF,OAFAxG,KAAK6hB,OAAO0F,MAAM,mDAAqDymK,EACnE,uBAAyBW,EAAmB,SAAWC,EAAmBnqL,SAAS,KAChFmqL,CACX,CAMA,oBAAM39D,CAAezqH,GAGjB,OAAO,MACX,CAIAi5E,cAAAA,CAAe/7E,GACX,MAAMgmQ,EAAoB,MAAVhmQ,EAAiB,KAAO,IAAI7C,EAAUiE,UAAUpB,GAChE,OAAO1D,KAAK68E,KAAKC,WAAsB,MAAX4sL,EAAkB,CAAC1pQ,KAAKsoQ,mBAAqB,CACrEoB,EACA1pQ,KAAKsoQ,mBAEb,CAIAxoL,cAAAA,CAAep8E,EAAQ26E,GACnB,MAAMqrL,EAAU,IAAI7oQ,EAAUiE,UAAUpB,GACxC,OAAO1D,KAAK68E,KAAKC,WAAW,CACxB4sL,EACA1pQ,KAAKsoQ,kBACLtoQ,KAAKgpQ,aAAa3qL,EAAQqrL,IAElC,EAEJ5pQ,EAAQ8nQ,eAAiBA,sGCzbzB,MAAAp4O,EAAA1uB,EAAA,OACA2uB,EAAA3uB,EAAA,OAEA,MAAa6qO,UAAgCl8M,EAAAI,KAQ3C5hB,WAAAA,CAAYrJ,EAAawF,GACvBhE,QAJM,KAAA8pB,UAAW,EACX,KAAAE,WAAY,GAIlB,EAAAZ,EAAA5qB,MAAWA,GACX,MAAMoF,GAAM,EAAAylB,EAAAiB,SAAQtmB,GAEpB,GADApK,KAAK4rO,MAAQhnO,EAAK8E,SACe,oBAAtB1J,KAAK4rO,MAAM7nO,OACpB,MAAM,IAAIF,MAAM,uDAClB7D,KAAK8vB,SAAW9vB,KAAK4rO,MAAM97M,SAC3B9vB,KAAK+vB,UAAY/vB,KAAK4rO,MAAM77M,UAC5B,MAAMD,EAAW9vB,KAAK8vB,SAChB0sE,EAAM,IAAIlsE,WAAWR,GAE3B0sE,EAAIlmF,IAAItM,EAAInI,OAASiuB,EAAWlrB,EAAK8E,SAAS3F,OAAOiG,GAAKhG,SAAWgG,GACrE,IAAK,IAAIgB,EAAI,EAAGA,EAAIwxF,EAAI36F,OAAQmJ,IAAKwxF,EAAIxxF,IAAM,GAC/ChL,KAAK4rO,MAAM7nO,OAAOy4F,GAElBx8F,KAAK6rO,MAAQjnO,EAAK8E,SAElB,IAAK,IAAIsB,EAAI,EAAGA,EAAIwxF,EAAI36F,OAAQmJ,IAAKwxF,EAAIxxF,IAAM,IAC/ChL,KAAK6rO,MAAM9nO,OAAOy4F,GAClBA,EAAIvrE,KAAK,EACX,CACAltB,MAAAA,CAAOsjE,GAGL,OAFA,EAAA73C,EAAAiB,QAAazwB,MACbA,KAAK4rO,MAAM7nO,OAAOsjE,GACXrnE,IACT,CACAgxB,UAAAA,CAAWjqB,IACT,EAAAyoB,EAAAiB,QAAazwB,OACb,EAAAwvB,EAAA2uB,OAAYp3C,EAAK/G,KAAK+vB,WACtB/vB,KAAKkwB,UAAW,EAChBlwB,KAAK4rO,MAAM56M,WAAWjqB,GACtB/G,KAAK6rO,MAAM9nO,OAAOgD,GAClB/G,KAAK6rO,MAAM76M,WAAWjqB,GACtB/G,KAAK6xB,SACP,CACA7tB,MAAAA,GACE,MAAM+C,EAAM,IAAIupB,WAAWtwB,KAAK6rO,MAAM97M,WAEtC,OADA/vB,KAAKgxB,WAAWjqB,GACTA,CACT,CACA+qB,UAAAA,CAAWC,GAETA,IAAAA,EAAO/uB,OAAO0G,OAAO1G,OAAOyhF,eAAezkF,MAAO,CAAC,IACnD,MAAM,MAAE6rO,EAAK,MAAED,EAAK,SAAE17M,EAAQ,UAAEE,EAAS,SAAEN,EAAQ,UAAEC,GAAc/vB,KAQnE,OANA+xB,EAAG7B,SAAWA,EACd6B,EAAG3B,UAAYA,EACf2B,EAAGjC,SAAWA,EACdiC,EAAGhC,UAAYA,EACfgC,EAAG85M,MAAQA,EAAM/5M,WAAWC,EAAG85M,OAC/B95M,EAAG65M,MAAQA,EAAM95M,WAAWC,EAAG65M,OACxB75M,CACT,CACAF,OAAAA,GACE7xB,KAAKowB,WAAY,EACjBpwB,KAAK6rO,MAAMh6M,UACX7xB,KAAK4rO,MAAM/5M,SACb,EAlEF/xB,EAAAA,KAAA6rO,EA2Ea7rO,EAAAA,KAAOiK,CAACnF,EAAaoF,EAAYikB,IAC5C,IAAI09M,EAAU/mO,EAAMoF,GAAKjG,OAAOkqB,GAASjqB,SAC3ClE,EAAAA,KAAAA,OAAc,CAAC8E,EAAaoF,IAAe,IAAI2hO,EAAU/mO,EAAMoF,oIChF/D,MAAa26I,UAA+B9gJ,MAC1CoK,WAAAA,CAAYggB,GACV,QACA,KAAKrc,KAAO,yBACZ,KAAKqc,QAAUA,GAAW,EAC5B,EALFnuB,EAAAA,uBAAA6kJ,EAQA,MAAaylH,UAA0BvmQ,MACrCoK,WAAAA,CAAYggB,GACV,QACA,KAAKrc,KAAO,oBACZ,KAAKqc,QAAUA,GAAW,EAC5B,EALFnuB,EAAAA,kBAAAsqQ,gCCLErqQ,EAAOD,QAAU,EAAjBC,mECFF,SAAiB,mBCgBfA,EAAOD,QAAUgB,EAAQ,MAARA,oBCjBnB,MAAMyJ,EAAOzJ,EAAQ,OACfkpI,EAAQlpI,EAAQ,OAEtB,SAASupQ,EAAW1mQ,GAClB3D,KAAKyK,KAAOF,EAAK+uG,MACjBt5G,KAAK2D,KAAOA,CACd,CAEA0mQ,EAAU1/P,cAAgB,SAAwB9I,GAChD,OAAgB,GAATA,CACT,EAEAwoQ,EAAUz/P,UAAUC,UAAY,WAC9B,OAAO7K,KAAK2D,KAAK9B,MACnB,EAEAwoQ,EAAUz/P,UAAUD,cAAgB,WAClC,OAAO0/P,EAAU1/P,cAAc3K,KAAK2D,KAAK9B,OAC3C,EAEAwoQ,EAAUz/P,UAAUE,MAAQ,SAAUC,GACpC,IAAIC,EAKJ,IAAKA,EAAI,EAAGA,EAAIhL,KAAK2D,KAAK9B,OAAQmJ,IAAK,CACrC,IAAI9H,EAAQ8mI,EAAMkkB,OAAOluJ,KAAK2D,KAAKqH,IAGnC,GAAI9H,GAAS,OAAUA,GAAS,MAE9BA,GAAS,UAGJ,MAAIA,GAAS,OAAUA,GAAS,OAIrC,MAAM,IAAIW,MACR,2BAA6B7D,KAAK2D,KAAKqH,GAAvC,qCAHF9H,GAAS,KAKX,CAIAA,EAAkC,KAAvBA,IAAU,EAAK,MAAyB,IAARA,GAG3C6H,EAAUK,IAAIlI,EAAO,GACvB,CACF,EAEAnD,EAAOD,QAAUuqQ,sDCpDjBrnQ,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ05J,mBAAgB,EACxB,MAAMjuJ,EAAezK,EAAQ,MACvBq4I,EAAiBr4I,EAAQ,MACzBqE,EAAUrE,EAAQ,OAClBugB,EAAsBvgB,EAAQ,OACpC,MAAM04J,UAAsBrgB,EAAeh4H,aACvClT,WAAAA,GACI7H,SAASxE,WACT5B,KAAKsmB,kBAAoB,CACrB/a,EAAa0gD,eAAeM,QAC5BhhD,EAAa0gD,eAAesB,mBAC5BhiD,EAAa0gD,eAAeW,SAC5BrhD,EAAa0gD,eAAeuC,aAC5BjjD,EAAa0gD,eAAea,YAEhC9sD,KAAKkmB,cAAgB,CAAC3a,EAAa0gD,eAAeM,QAAShhD,EAAa0gD,eAAeW,SAAUrhD,EAAa0gD,eAAeuC,aACjI,CAWA4rG,8BAAAA,CAA+Bz3I,EAAY4uG,EAAIjkG,GAC3C,OAAOikG,EAAG+4I,cAActqQ,KAAKshB,gBAAiBthB,KAAKwhB,SAAU,CAACmB,EAAWxa,MAAM1D,YAAa6oB,EAAgBb,QAAQzjB,MAAK4oB,IACrH,GAAW,MAAPA,EACA,MAAM,IAAIvQ,EAAoBkD,kBAAkB,4CACpD,OAAOqN,CAAG,IACXhP,OAAMrR,IACLvR,KAAK6hB,OAAOgB,MAAM,4CAA6CtR,GAC/D+b,EAAgBI,MAAMnc,GACf,OAEf,CAWAygH,eAAAA,CAAgBtuH,EAAQif,EAAY2I,EAAWgC,GAC3C,OAAO,EAAInoB,EAAQke,iBAAgB,IAAMrjB,KAAKwhB,SAASknF,oBAAoBhlG,EAAQ,KAAMif,EAAWxa,MAAOmjB,IAAY,KAAM,KAAMgC,EAAgBb,QAAQ7J,OAAMrR,IAC7JvR,KAAK6hB,OAAOgB,MAAM,6BAA8BtR,GAChD+b,EAAgBI,MAAMnc,GACf,OAEf,CACA,4BAAMoT,CAAuBjZ,EAAM+C,GAC/B,GAAI/C,EAAKhL,QAAU6K,EAAa0gD,eAAeM,SAAW7gD,EAAKhL,QAAU6K,EAAa0gD,eAAesB,mBAAoB,CACrH,MAAMjnD,QAAiBmI,EAAMnI,WAC7B,QAAiB,MAAboF,EAAK/H,OAAiB+H,EAAK/H,KAAK4c,OAAOja,MAEvCoF,EAAKhL,QAAU6K,EAAa0gD,eAAeM,SAAW7gD,EAAKhL,QAAU6K,EAAa0gD,eAAesB,qBACjG7hD,EAAKhL,MAAQ6K,EAAa0gD,eAAeW,UAC7ClhD,EAAK/H,KAAO2C,GACL,EACX,CACJ,CACA0e,iBAAAA,CAAkBtZ,EAAM+C,GACpB,OAAI/C,EAAKhL,QAAU6K,EAAa0gD,eAAeS,UAC3ChhD,EAAKhL,MAAQ6K,EAAa0gD,eAAeY,QACzCnhD,EAAK4jD,kBAAkB,CAAE0E,OAAQvlD,EAAMkgB,OAAQ9J,KAAMtgB,EAAOC,KAAKiK,EAAMkgB,OAAQ,OAAO/gB,UAAUnJ,SAAS,SAClGJ,QAAQC,SAAQ,IAEpBD,QAAQC,SAAQ,EAC3B,CACA6gB,kBAAAA,CAAmBzZ,EAAM+C,GACrB,OAAI/C,EAAKhL,QAAU6K,EAAa0gD,eAAeY,SAC3CnhD,EAAKhL,MAAQ6K,EAAa0gD,eAAeS,SAClCroD,QAAQC,SAAQ,IAEpBD,QAAQC,SAAQ,EAC3B,EAEJxE,EAAQ05J,cAAgBA,gCCnFxBx2J,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQkwO,0BAAuB,EAC/B,MAAMnyH,EAA0B/8G,EAAQ,KAClCqE,EAAUrE,EAAQ,OACxB,MAAMkvO,UAA6BnyH,EAAwB91G,sBACvDkG,WAAAA,CAAY6vG,GACR13G,MAAM03G,EADel8G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,iCAAoDA,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAEhF,CACA,eAAMiH,CAAUJ,EAAMP,GAClB,MAAMurB,QAAiB,EAAIxuB,EAAQ44G,SAAS/9G,KAAKusB,IAAM,wBAA0B5jB,EAAM3I,KAAKg+G,mBAAoB51G,GAChH,OAAO61G,WAAWtqF,EAASnrB,MAC/B,CACA,mBAAM21G,CAAc/1G,GAChB,MAAMurB,QAAiB,EAAIxuB,EAAQ44G,SAAS/9G,KAAKusB,IAAM,+BAAgCvsB,KAAKg+G,mBAAoB51G,GAChH,OAAO61G,WAAWtqF,EAASnrB,OAAS,GACxC,EAEJ1I,EAAQkwO,qBAAuBA,8BCjB/BhtO,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ6pH,eAAY,EAIpB,MAAMA,UAAkB9lH,MACpBoK,WAAAA,CAAYxN,GACR2F,MAAM3F,GAENuC,OAAOknG,eAAelqG,KAAM2pH,EAAU/+G,UAC1C,EAEJ9K,EAAQ6pH,UAAYA,gCCNpB,IAAI4gJ,EAAUzpQ,EAAAA,OAAAA,OAmHdf,EAAOD,QAlHP,SAAeiU,GACb,GAAIA,EAASlS,QAAU,IAAO,MAAM,IAAIo9B,UAAU,qBAElD,IADA,IAAIyxB,EAAW,IAAIpgC,WAAW,KACrB1f,EAAI,EAAGA,EAAI8/C,EAAS7uD,OAAQ+O,IACnC8/C,EAAS9/C,GAAK,IAEhB,IAAK,IAAI5F,EAAI,EAAGA,EAAI+I,EAASlS,OAAQmJ,IAAK,CACxC,IAAIgG,EAAI+C,EAAS9B,OAAOjH,GACpBmG,EAAKH,EAAEF,WAAW,GACtB,GAAqB,MAAjB4/C,EAASv/C,GAAe,MAAM,IAAI8tB,UAAUjuB,EAAI,iBACpD0/C,EAASv/C,GAAMnG,CACjB,CACA,IAAIgF,EAAO+D,EAASlS,OAChB8uD,EAAS58C,EAAS9B,OAAO,GACzB2+C,EAASxnD,KAAK0wC,IAAI9pC,GAAQ5G,KAAK0wC,IAAI,KACnC+W,EAAUznD,KAAK0wC,IAAI,KAAO1wC,KAAK0wC,IAAI9pC,GAyCvC,SAAS8gD,EAAc1vD,GACrB,GAAsB,kBAAXA,EAAuB,MAAM,IAAI69B,UAAU,mBACtD,GAAsB,IAAlB79B,EAAOS,OAAgB,OAAO0oQ,EAAQtqP,MAAM,GAKhD,IAJA,IAAI8wC,EAAM,EAENC,EAAS,EACTnvD,EAAS,EACNT,EAAO2vD,KAASJ,GACrBK,IACAD,IAMF,IAHA,IAAI7mC,GAAU9oB,EAAOS,OAASkvD,GAAOH,EAAU,IAAO,EAClDK,EAAO,IAAI3gC,WAAWpG,GAEnB6mC,EAAM3vD,EAAOS,QAAQ,CAE1B,IAAIqvD,EAAW9vD,EAAO0P,WAAWigD,GAEjC,GAAIG,EAAW,IAAO,OAEtB,IAAIx4C,EAAQg4C,EAASQ,GAErB,GAAc,MAAVx4C,EAAiB,OAErB,IADA,IAAI1N,EAAI,EACCmmD,EAAMjnC,EAAO,GAAc,IAAVxR,GAAe1N,EAAInJ,KAAqB,IAATsvD,EAAaA,IAAOnmD,IAC3E0N,GAAU1I,EAAOihD,EAAKE,KAAU,EAChCF,EAAKE,GAAQz4C,EAAQ,MAAS,EAC9BA,EAASA,EAAQ,MAAS,EAE5B,GAAc,IAAVA,EAAe,MAAM,IAAI7U,MAAM,kBACnChC,EAASmJ,EACT+lD,GACF,CAGA,IADA,IAAIK,EAAMlnC,EAAOroB,EACVuvD,IAAQlnC,GAAsB,IAAd+mC,EAAKG,IAC1BA,IAEF,IAAIC,EAAMk5M,EAAQ/mO,YAAYwtB,GAAU9mC,EAAOknC,IAC/CC,EAAIpgC,KAAK,EAAM,EAAG+/B,GAElB,IADA,IAAIpgD,EAAIogD,EACDI,IAAQlnC,GACbmnC,EAAIzgD,KAAOqgD,EAAKG,KAElB,OAAOC,CACT,CAMA,MAAO,CACLlxC,OA7FF,SAAiB/e,GAEf,IADI+I,MAAMi3B,QAAQhgC,IAAWA,aAAkBkvB,cAAclvB,EAASmpQ,EAAQ/lQ,KAAKpD,KAC9EmpQ,EAAQvrO,SAAS59B,GAAW,MAAM,IAAI69B,UAAU,mBACrD,GAAsB,IAAlB79B,EAAOS,OAAgB,MAAO,GAMlC,IAJA,IAAImvD,EAAS,EACTnvD,EAAS,EACTyvD,EAAS,EACTC,EAAOnwD,EAAOS,OACXyvD,IAAWC,GAA2B,IAAnBnwD,EAAOkwD,IAC/BA,IACAN,IAMF,IAHA,IAAI9mC,GAASqnC,EAAOD,GAAUT,EAAU,IAAO,EAC3CW,EAAM,IAAIlhC,WAAWpG,GAElBonC,IAAWC,GAAM,CAItB,IAHA,IAAI74C,EAAQtX,EAAOkwD,GAEftmD,EAAI,EACCymD,EAAMvnC,EAAO,GAAc,IAAVxR,GAAe1N,EAAInJ,KAAqB,IAAT4vD,EAAaA,IAAOzmD,IAC3E0N,GAAU,IAAM84C,EAAIC,KAAU,EAC9BD,EAAIC,GAAQ/4C,EAAQ1I,IAAU,EAC9B0I,EAASA,EAAQ1I,IAAU,EAE7B,GAAc,IAAV0I,EAAe,MAAM,IAAI7U,MAAM,kBACnChC,EAASmJ,EACTsmD,GACF,CAGA,IADA,IAAII,EAAMxnC,EAAOroB,EACV6vD,IAAQxnC,GAAqB,IAAbsnC,EAAIE,IACzBA,IAIF,IADA,IAAI1/C,EAAM2+C,EAAOgB,OAAOX,GACjBU,EAAMxnC,IAAQwnC,EAAO1/C,GAAO+B,EAAS9B,OAAOu/C,EAAIE,IACvD,OAAO1/C,CACT,EAuDE8+C,aAAcA,EACdrxC,OARF,SAAiBkhB,GACf,IAAItQ,EAASygC,EAAanwB,GAC1B,GAAItQ,EAAU,OAAOA,EACrB,MAAM,IAAIxsB,MAAM,WAAamM,EAAO,aACtC,EAMF,gCCxHAhN,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQiiI,wBAAqB,EAC7B,MAAMlhI,EAAYC,EAAQ,OACpBsC,EAAiBtC,EAAQ,OACzB0pQ,EAAO1pQ,EAAQ,OACfqE,EAAUrE,EAAQ,MAClByC,EAAWzC,EAAQ,OACzB,MAAMihI,UAA2B3+H,EAAeI,aAU5C,wBAAM2wF,CAAmBxwF,EAAMie,GAC3B,IAAI+M,EAAS,KAUb,OATA/M,IAAYA,EAAU,CAAC,GACvBA,EAAQ6H,WAAa,EACU,MAA3BzpB,KAAKyqQ,qBACL97O,QAAe3uB,KAAKyqQ,mBAAmB9mQ,EAAMie,IACnC,MAAV+M,IACAA,QAAe3uB,KAAKw6E,KAAKqC,KAAK6/I,SAAS/4N,EAAMie,IACnC,MAAV+M,IACAA,QAAe3uB,KAAKkB,WAAWizF,mBAAmBxwF,EAAMie,IAErD+M,CACX,CAUA+7O,+BAAAA,CAAgCC,EAAUC,EAAUxiQ,GAChD,MAAMyoF,EAAQ85K,EAAS9jQ,GAAGmpD,YACpB/rD,EAAYumQ,EAAKrqP,OAAOwqP,EAAS9jQ,GAAG5C,WAC1C,OAAO,IAAII,SAAQ,CAACC,EAASikB,KACzB,IAAIsiP,EACJA,EAAmB1kP,aAAY9W,UAC3B,MAAMsf,QAAe3uB,KAAKm0F,mBAAmBtD,EAAO,CAAE43J,eAAe,IAAQ7lO,OAAMrR,GAAKvR,KAAK6hB,OAAOgB,MAAM,iEAAkEtR,KAC5KvR,KAAK6hB,OAAO0F,MAAM,2DAA6DoH,GAC/E,MAAMT,QAAeluB,KAAKwoG,cAAcvkG,EAAW2mQ,GAAUhoP,OAAMrR,GAAKvR,KAAK6hB,OAAOgB,MAAM,8DAA+DtR,KAC3I,MAAV2c,GAA6B,cAAXA,IAEP,YAAXA,IACAluB,KAAK6hB,OAAOwD,KAAK,0FAA4FphB,GAC7GK,EAAQL,IAEG,aAAXiqB,GACA3F,EAAO,IAAI1kB,MAAM,0BACrB8jB,cAAckjP,GAAiB,GAChC7qQ,KAAKupB,aAAauhP,2BAA6B,KAC/B,MAAf1iQ,GACAA,EAAYsgB,iBAAiB,SAAS,KAClCf,cAAckjP,GACdtiP,EAAOngB,EAAY4lB,OAAO,GAC5B,GAEd,CAWA,4BAAM+8O,CAAuBJ,EAAUC,EAAUxiQ,GAC7C,MAAMnE,EAAYumQ,EAAKrqP,OAAOwqP,EAAS9jQ,GAAG5C,WAC1C,IAAI0qB,EACJ,IACIA,QAAe3uB,KAAKkB,WAAWqhH,mBAAmB,CAC9Ct+G,UAAWA,EACXg+E,UAAW0oL,EAAS9jQ,GAAG0gP,gBACvByjB,qBAAsBL,EAAS9jQ,GAAGmkQ,qBAClC5iQ,eACDwiQ,GACH5qQ,KAAK6hB,OAAOwD,KAAK,uEAAyEphB,EAC9F,CACA,MAAO2lB,GACH,GAAmB,MAAfxhB,GAAuBA,EAAYyhB,QACnC,MAAMD,EACV5pB,KAAK6hB,OAAO0F,MAAM,uGAAyGojP,EAAS9jQ,GAAGmkQ,qBAAuB,eAAiB/mQ,EAAY,WAAa2lB,GACxM,MAAMsE,QAAe,EAAI/oB,EAAQke,iBAAgB,IAAMrjB,KAAKwoG,cAAcvkG,EAAW2mQ,KAErF,GADA5qQ,KAAK6hB,OAAOwD,KAAK,iDAAmD6I,EAAS,eAAiBjqB,GAC/E,YAAXiqB,EACA,OAAOjqB,EACX,GAAe,aAAXiqB,EACA,MAAM,IAAIrqB,MAAM,yBACpB,MAAI+lB,aAAe/oB,EAAUoqQ,4CAA8CrhP,EAAInlB,WAAWoE,WAAW,8CAC3F,IAAIhF,MAAM,8DAGV+lB,CAEd,CACA,GAAwB,MAApB+E,EAAOzrB,MAAM0mB,IACb,MAAM,IAAI/lB,MAAM,yBACpB,OAAOI,CACX,CAUA,wBAAMs+G,CAAmBooJ,EAAUviQ,EAAawiQ,GAC5C,MAAMt9O,EAAkB,IAAIsiC,gBAK5B,IAAIo4C,EAJe,MAAf5/F,GACAA,EAAYsgB,iBAAiB,SAAS,KAClC4E,EAAgBI,OAAO,IAG/B,IACIs6E,QAAoB3jG,QAAQ8pD,KAAK,CAC7BnuD,KAAK0qQ,gCAAgCC,EAAUC,EAAUt9O,EAAgBb,QACzEzsB,KAAK+qQ,uBAAuBJ,EAAUC,EAAUt9O,EAAgBb,SAExE,CACA,MAAOlb,GAEH,MADA+b,EAAgBI,MAAMnc,GAChBA,CACV,CAEA+b,EAAgBI,OACpB,CASA,yBAAMg1F,CAAoBh/G,EAAQg6E,GAC9B,IAAIwtL,EAAkB,KACtB,IAAK,IAAIrkQ,KAAM62E,EAAK,CAYhB,GAX6B,MAAzB72E,EAAGA,GAAG0gP,kBACiB,MAAnB2jB,IACAA,QAAwB,EAAI/lQ,EAAQke,iBAAgB,IAAMrjB,KAAKkB,WAAWsmP,mBAAmB,cAAcxnP,KAAKupB,aAChHvpB,KAAK6hB,OAAO0F,MAAM,iFACG2jP,EAAgBjpL,UAAY,wBAA0BipL,EAAgBF,uBAE/FnkQ,EAAGA,GAAG0gP,gBAAkB2jB,EAAgBjpL,UACxCp7E,EAAGA,GAAGmkQ,qBAAuBE,EAAgBF,sBAI3B,MAAlBtnQ,EAAOE,SAA+C,IAA5BiD,EAAGA,GAAGm0N,WAAWn5N,OAAc,CAE1C,MADCgF,EAAGA,GAAGyjB,aAAawwC,MAAKzwC,GAAMA,EAAGroB,UAAUue,OAAO1f,EAAU0pB,qBAAqBvoB,YAA+E,wBAAjEnB,EAAUsqQ,yBAAyB3wC,sBAAsBnwM,MAEpKxjB,EAAGA,GAAGyjB,aAAa9S,OAAO3Q,EAAGA,GAAGyjB,aAAazoB,OAAS,EAAG,EAAGhB,EAAU0pB,qBAAqB+xM,oBAAoB,CAAEC,cAAe,IACxI,CAIA,GAHA11N,EAAGA,GAAG4jB,SAAW/mB,EAAOk/C,eACM,MAA1B5iD,KAAK+iH,yBACC/iH,KAAK+iH,kBAAkBl8G,GACf,MAAdA,EAAG1E,SAAmB0E,EAAG1E,QAAQN,OAAS,EAC1C,IAAK,IAAI6B,KAAUmD,EAAG1E,QAClB0E,EAAGA,GAAG3C,KAAKR,EACvB,CACJ,CASA,2BAAM++G,CAAsB2oJ,EAAOxpP,EAASwmF,GACjB,MAAnBA,SACMA,EAAgBoiK,EAAKrqP,OAAOirP,EAAMvkQ,GAAG5C,iBAAkBjE,KAAKqoG,YAAY+iK,IAClF,MAAMC,EAAeD,EAAMvkQ,GAAGmpD,YAC9BhwD,KAAK6hB,OAAO0F,MAAM,iDAAmD8jP,EAAa5mQ,SAAS,OACvF,eAAiB+lQ,EAAKrqP,OAAOirP,EAAMvkQ,GAAG5C,YAC1C,MAAMo/G,QAAiB,EAAIl+G,EAAQke,iBAAgB,IAAMrjB,KAAKm0F,mBAAmBk3K,EAAczpP,IAAU5hB,KAAKupB,aAE9G,OADAvpB,KAAK6hB,OAAOwD,KAAK,gDAAkDg+F,GAC5DA,CACX,CAeA,oBAAMp1D,CAAevqD,EAAQ4nQ,EAAMzjK,EAAqBz/F,EAAa+/F,EAAUC,GAC3E,MAAMxmF,EAAU,CACZ6mO,eAAe,GAEnBzoP,KAAK6hB,OAAO0F,MAAM,kDAAoD+jP,EAAKzpQ,OACvE,yBAA2BgmG,EAAsB,cAAgBM,GACrE,MAAM6yH,EAAa,GACnB,IAAK,IAAIzpN,EAAI,EAAGA,EAAI+5P,EAAKzpQ,OAAQ0P,GAAK,GAAI,CACtC,MAAMmsE,EAAM4tL,EAAK59P,MAAM6D,EAAGA,EAAI,UACxBvR,KAAK0iH,oBAAoBh/G,EAAQg6E,GACvC,MAAMwqK,QAAkBxkP,EAAOgmG,OAAOy+I,oBAAoBzqK,EAAIh1E,KAAI6I,GAAKA,EAAE1K,MAOzE,GANAqhP,EAAUn5O,SAAQ,CAAClI,EAAI+5B,KACnB,MAAMwqO,EAAQ1tL,EAAI98C,GAClB/5B,EAAGmkQ,qBAAuBI,EAAMvkQ,GAAGmkQ,qBACnCI,EAAMvkQ,GAAKA,CAAE,IAEjB7G,KAAK6hB,OAAO0F,MAAM,gDAAkDhW,EAAI,MAAQA,EAAI,IAAM,aAAemsE,EAAI77E,QACzGsmG,EAAU,CACV,MAAMn7E,EAAW,GACjB,IAAK,IAAIo+O,KAAS1tL,EAAK,CACnB,MAAMz5E,QAAkBjE,KAAKyiH,sBAAsB2oJ,EAAOxpP,EAASwmF,GAC/DP,GACA76E,EAAS1lB,KAAKtH,KAAKuiH,mBAAmB6oJ,EAAOhjQ,EAAa,cAC9D4yN,EAAW1zN,KAAKrD,EACpB,CACI+oB,EAASnrB,OAAS,SACZwC,QAAQoE,IAAIukB,EAC1B,MAEI,IAAK,IAAIhiB,EAAI,EAAGA,EAAI0yE,EAAI77E,OAAQmJ,IAAK,CACjC,MAAMogQ,EAAQ1tL,EAAI1yE,GACZ/G,QAAkBjE,KAAKyiH,sBAAsB2oJ,EAAOxpP,EAASwmF,GAC7Dyb,EAAiB7jH,KAAKuiH,mBAAmB6oJ,EAAOhjQ,EAAa,cAE/D4C,EAAI0yE,EAAI77E,OAAS,GAAK0P,EAAI,GAAK+5P,EAAKzpQ,QAAUgmG,UACxCgc,EACVm3G,EAAW1zN,KAAKrD,EACpB,CAER,CAGA,OAFAjE,KAAK6hB,OAAOwD,KAAK,+CAAiDimP,EAAKzpQ,OACnE,yBAA2BgmG,EAAsB,cAAgBM,GAC9D6yH,CACX,CAMA3yH,WAAAA,CAAYxhG,GACR,OAAOxC,QAAQC,QAAQqpB,KAAKC,UAAU,CAClC/mB,GAAIA,EAAGA,GAAGmpD,YAAYvrD,SAAS,OAC/BtC,QAAS0E,EAAG1E,QAAQuG,KAAI6I,GAAKhO,EAASgB,OAAOC,KAAK+M,EAAEnN,WAAWK,SAAS,SACxE8mQ,qBAAsB1kQ,EAAGA,GAAGmkQ,uBAEpC,CAMA1iK,aAAAA,CAAcC,GACV,MAAMijK,EAAa79O,KAAKwE,MAAMo2E,GACxBlmG,EAAcxB,EAAUyB,YAAYkC,KAAKjB,EAASgB,OAAOC,KAAKgnQ,EAAW3kQ,GAAI,QAEnF,OADAxE,EAAY2oQ,qBAAuBQ,EAAWD,qBACvClnQ,QAAQC,QAAQ,CACnBuC,GAAIxE,EACJF,QAASqpQ,EAAWrpQ,QAAQuG,KAAI6I,GAAK1Q,EAAU0iK,QAAQkoG,cAAcloQ,EAASgB,OAAOC,KAAK+M,EAAG,WAErG,CAQA,iBAAMk3F,CAAY5hG,GACd,MAAMi9G,QAAiB9jH,KAAKsoG,cAAczhG,GACpC6kQ,QAAkB1rQ,KAAKkB,WAAWoxF,eAAek4K,EAAKrqP,OAAO2jG,EAASj9G,GAAG5C,WAAY,CACvF88E,WAAY,YACZw4G,+BAAgC,IAEpC,GAAiB,MAAbmyE,EAAmB,CAEnB,aADiC1rQ,KAAKkB,WAAWusL,eAAe,aACvC3pE,EAASj9G,GAAGmkQ,qBAC1B,YACJ,SACX,CACA,OAAIU,EAAU9mP,KAAKgF,IACR,WACJ,SACX,CAQA,mBAAM4+E,CAAc3jF,EAAM+lP,GACtB,MAAMc,QAAkB1rQ,KAAKkB,WAAWoxF,eAAeztE,EAAM,CACzDk8D,WAAY6pL,GAAY,YACxBrxE,+BAAgC,IAEpC,OAAiB,MAAbmyE,EACO,YACPA,EAAU9mP,KAAKgF,IACR,WACJ,SACX,CACAs/E,gBAAAA,CAAiBF,GACbhpG,KAAK+iH,kBAAoB/Z,CAC7B,CACAG,iBAAAA,CAAkBH,GAEd,OADAhpG,KAAK+iH,kBAAoB,MAClB,CACX,CACA4oJ,iBAAAA,CAAkB3iK,GACdhpG,KAAKyqQ,mBAAqBzhK,CAC9B,CACA4iK,kBAAAA,CAAmB5iK,GAEf,OADAhpG,KAAKyqQ,mBAAqB,MACnB,CACX,EAEJ3qQ,EAAQiiI,mBAAqBA,oCCzU7B,IAAI8pI,EAAa7rQ,MAAQA,KAAK6rQ,WAAe,WACzC,IAAIC,EAAgB,SAAUv2P,EAAGrE,GAI7B,OAHA46P,EAAgB9oQ,OAAOknG,gBAClB,CAAEqN,UAAW,cAAgBptG,OAAS,SAAUoL,EAAGrE,GAAKqE,EAAEgiG,UAAYrmG,CAAG,GAC1E,SAAUqE,EAAGrE,GAAK,IAAK,IAAIqF,KAAKrF,EAAOlO,OAAO4H,UAAU4L,eAAeM,KAAK5F,EAAGqF,KAAIhB,EAAEgB,GAAKrF,EAAEqF,GAAI,EAC7Fu1P,EAAcv2P,EAAGrE,EAC5B,EACA,OAAO,SAAUqE,EAAGrE,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI+tB,UAAU,uBAAyBptB,OAAOX,GAAK,iCAE7D,SAASomE,IAAOt3E,KAAKiO,YAAcsH,CAAG,CADtCu2P,EAAcv2P,EAAGrE,GAEjBqE,EAAE3K,UAAkB,OAANsG,EAAalO,OAAO0G,OAAOwH,IAAMomE,EAAG1sE,UAAYsG,EAAEtG,UAAW,IAAI0sE,EACnF,CACJ,CAd6C,GAwB7C,SAASy0L,EAASlpP,EAAOmpP,EAAWC,GAGhC,GAFAjpQ,OAAOknG,eAAernF,EAAOopP,EAAUrhQ,WAEnCohQ,IAAcC,EAGd,GAFAppP,EAAMjR,KAAOo6P,EAAUp6P,KAEnB/N,MAAM0mG,kBACN1mG,MAAM0mG,kBAAkB1nF,EAAOopP,OAE9B,CACD,IAAI7hK,EAAQ,IAAIvmG,MAAMgf,EAAMoL,SAASm8E,MACjCA,IACAvnF,EAAMunF,MAKtB,SAAkBA,EAAO8hK,GACrB,IAAK9hK,EACD,OAAOA,EACX,IAAK8hK,EACD,OAAO9hK,EAEX,IAAI+hK,EAAY,IAAIj/P,OAAO,YAAYiL,OAAO+zP,EAAc,QACxDE,EAAQhiK,EAAM7hG,MAAM,MAExB,OADkB6jQ,EAAM54K,QAAO,SAAUg3J,GAAQ,OAAQA,EAAKh4K,MAAM25L,EAAY,IAC7DjvM,KAAK,KAC5B,CAf8BmvM,CAASjiK,EAAO,OAAOjyF,OAAO6zP,EAAUp6P,OAE9D,CAER,CAzBA5O,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQwsQ,cAAgBxsQ,EAAQysQ,iBAAmBzsQ,EAAQ0sQ,aAAe1sQ,EAAQ2sQ,uBAAyB3sQ,EAAQ4sQ,gBAAkB5sQ,EAAQ6sQ,eAAiB7sQ,EAAQkhP,0BAAuB,EAsC7L,IAAIA,EAAsC,SAAU4rB,GAEhD,SAAS5rB,EAAqB/yN,GAC1B,IAAI4+O,EAAa7sQ,KAAKiO,YAClB8gI,EAAQ69H,EAAO91P,KAAK9W,KAAMiuB,IAAYjuB,KAE1C,OADA+rQ,EAASh9H,EAAO89H,EAAY7rB,GACrBjyG,CACX,CACA,OAPA88H,EAAU7qB,EAAsB4rB,GAOzB5rB,CACX,CAT0C,CASxCn9O,OACF/D,EAAQkhP,qBAAuBA,EAE/B,IAAI2rB,EAAgC,SAAUC,GAE1C,SAASD,EAAe1+O,GACpB,IAAI4+O,EAAa7sQ,KAAKiO,YAClB8gI,EAAQ69H,EAAO91P,KAAK9W,KAAMiuB,IAAYjuB,KAE1C,OADA+rQ,EAASh9H,EAAO89H,EAAYF,GACrB59H,CACX,CACA,OAPA88H,EAAUc,EAAgBC,GAOnBD,CACX,CAToC,CASlC9oQ,OACF/D,EAAQ6sQ,eAAiBA,EAEzB,IAAID,EAAiC,SAAUE,GAE3C,SAASF,EAAgBz+O,GACrB,IAAI4+O,EAAa7sQ,KAAKiO,YAClB8gI,EAAQ69H,EAAO91P,KAAK9W,KAAMiuB,IAAYjuB,KAE1C,OADA+rQ,EAASh9H,EAAO89H,EAAYH,GACrB39H,CACX,CACA,OAPA88H,EAAUa,EAAiBE,GAOpBF,CACX,CATqC,CASnC7oQ,OACF/D,EAAQ4sQ,gBAAkBA,EAE1B,IAAID,EAAwC,SAAUG,GAElD,SAASH,EAAuBx+O,GAC5B,IAAI4+O,EAAa7sQ,KAAKiO,YAClB8gI,EAAQ69H,EAAO91P,KAAK9W,KAAMiuB,IAAYjuB,KAE1C,OADA+rQ,EAASh9H,EAAO89H,EAAYJ,GACrB19H,CACX,CACA,OAPA88H,EAAUY,EAAwBG,GAO3BH,CACX,CAT4C,CAS1C5oQ,OACF/D,EAAQ2sQ,uBAAyBA,EAEjC,IAAID,EAA8B,SAAUI,GAExC,SAASJ,EAAav+O,GAClB,IAAI4+O,EAAa7sQ,KAAKiO,YAClB8gI,EAAQ69H,EAAO91P,KAAK9W,KAAMiuB,IAAYjuB,KAE1C,OADA+rQ,EAASh9H,EAAO89H,EAAYL,GACrBz9H,CACX,CACA,OAPA88H,EAAUW,EAAcI,GAOjBJ,CACX,CATkC,CAShC3oQ,OACF/D,EAAQ0sQ,aAAeA,EAEvB,IAAID,EAAkC,SAAUK,GAE5C,SAASL,EAAiBt+O,GACtB,IAAI4+O,EAAa7sQ,KAAKiO,YAClB8gI,EAAQ69H,EAAO91P,KAAK9W,KAAMiuB,IAAYjuB,KAE1C,OADA+rQ,EAASh9H,EAAO89H,EAAYN,GACrBx9H,CACX,CACA,OAPA88H,EAAUU,EAAkBK,GAOrBL,CACX,CATsC,CASpC1oQ,OACF/D,EAAQysQ,iBAAmBA,EAE3B,IAAID,EAA+B,SAAUM,GAEzC,SAASN,EAAcr+O,GACnB,IAAI4+O,EAAa7sQ,KAAKiO,YAClB8gI,EAAQ69H,EAAO91P,KAAK9W,KAAMiuB,IAAYjuB,KAE1C,OADA+rQ,EAASh9H,EAAO89H,EAAYP,GACrBv9H,CACX,CACA,OAPA88H,EAAUS,EAAeM,GAOlBN,CACX,CATmC,CASjCzoQ,OACF/D,EAAQwsQ,cAAgBA,gCCzIxBtpQ,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQy5I,kBAAoBz5I,EAAQgtQ,wBAA0BhtQ,EAAQ05I,4BAAyB,EAC/F,MAAMnmF,EAAavyD,EAAQ,OACrByC,EAAWzC,EAAQ,OACnBsrO,EAAqBtrO,EAAQ,OAC7BqE,EAAUrE,EAAQ,OAClB00C,EAAU10C,EAAQ,OAClBs4I,EAA2Bt4I,EAAQ,OACnC20C,EAAW30C,EAAQ,OACzB,IAAI04I,EASJ,SAASszH,EAAwBl+P,GAC7B,MAAoC,kBAArBA,EAAIuc,aACW,kBAAlBvc,EAAI/I,UACa,kBAAjB+I,EAAIlI,SACiB,kBAArBkI,EAAImrI,aACkB,kBAAtBnrI,EAAIorI,cACe,kBAAnBprI,EAAI2oD,WACW,kBAAf3oD,EAAIzG,QACU,MAArByG,EAAI8qI,eAAwD,kBAAvB9qI,EAAI8qI,iBAC1C,EAAIlkG,EAAQ6W,aAAaz9C,EACjC,EAlBA,SAAW4qI,GACPA,EAAuBA,EAAgC,SAAK,GAAK,UACjEA,EAAuBA,EAA+B,QAAK,GAAK,SAChEA,EAAuBA,EAAiC,UAAK,GAAK,WAClEA,EAAuBA,EAAmC,WAAI,GAAK,aACnEA,EAAuBA,EAAiC,SAAI,GAAK,WACjEA,EAAuBA,EAAmC,WAAI,GAAK,YACtE,CAPD,CAOGA,EAAyB15I,EAAQ05I,yBAA2B15I,EAAQ05I,uBAAyB,CAAC,IAYjG15I,EAAQgtQ,wBAA0BA,EAClC,MAAMvzH,UAA0B/jG,EAAQE,MACpCznC,WAAAA,CAAY0nC,EAASC,GACbk3N,EAAwBl3N,KACxBA,EAAUrpB,KAAO,oBACrBnmB,MAAMuvC,EAASC,GACf51C,KAAK4lB,KAAOytC,EAAWS,SAASwlF,iBAC5BwzH,EAAwBl3N,GACxB51C,KAAKU,MAAQ84I,EAAuBrpB,YAGpCnwH,KAAKmrB,YAAcyqB,EAAUzqB,YAC7BnrB,KAAK6F,SAAiC,MAAtB+vC,EAAU/vC,SAAmB,KAAOH,OAAOkwC,EAAU/vC,UACrE7F,KAAK0G,QAAUkvC,EAAUlvC,QACzB1G,KAAK+5I,YAAuC,MAAzBnkG,EAAUmkG,YAAsB,KAAOr0I,OAAOkwC,EAAUmkG,aAC3E/5I,KAAKg6I,aAAyC,MAA1BpkG,EAAUokG,aAAuB,KAAOt0I,OAAOkwC,EAAUokG,cAC7Eh6I,KAAKu3D,UAAY3hB,EAAU2hB,UAC3Bv3D,KAAKmI,MAAQytC,EAAUztC,MACvBnI,KAAK05I,cAAgB9jG,EAAU8jG,cAC/B15I,KAAKusO,OAAS32L,EAAU22L,OACxBvsO,KAAK6kB,KAAO+wB,EAAU/wB,KACtB7kB,KAAKolB,WAAawwB,EAAUxwB,YAEhCplB,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,iBAAmBtF,KAAKslB,0BAA4B,OACzFtlB,KAAK61C,sBACyC,MAA1C71C,KAAKk2C,YAAYC,wBACjBn2C,KAAKk2C,YAAcl2C,KAAK21C,QAAQl0B,OAAO20B,0BAA0Bp2C,KAAKshB,gBAAiBthB,KAAK+5I,YAAa/5I,KAAKk2C,YAAYG,YAAar2C,KAAKk2C,YAAYI,OAAQt2C,KAAKg6I,aAAch6I,KAAKmI,OAASnI,KAAK21C,QAAQ/tB,iBAAiBlhB,SAEvO,CACA8lD,cAAAA,GACwB,MAAhBxsD,KAAKysD,UAELzsD,KAAKysD,QAAU,EAEvB,CAKA5W,mBAAAA,GAC2B,MAAnB71C,KAAK81C,aACL91C,KAAK81C,WAAa91C,KAAK+1C,QAAU/1C,KAAK4F,WAAWowC,UAAYh2C,KAAKi2C,yBAE1E,CAGA,sBAAMS,GACF,GAAwB,MAApB12C,KAAKk2C,YACL,OAAO,KACX,MAAMS,QAAkB32C,KAAK21C,QAAQl0B,OAAO4C,qBAAqBrkB,KAAKshB,gBAAiBthB,KAAK+5I,YAAa/5I,KAAKk2C,YAAYG,YAAar2C,KAAKk2C,YAAYI,OAAQt2C,KAAKg6I,aAAch6I,KAAKmI,OAASnI,KAAK21C,QAAQ/tB,iBAAiBlhB,SAE/N,OADA1G,KAAKk2C,YAAcS,EACZA,CACX,CACAC,YAAAA,GACI,OAAOznB,OAAOnvB,KAAKk2C,YAAYC,uBAAyB,IAC5D,CACAU,cAAAA,GACI,OAAO1nB,OAAOnvB,KAAKk2C,YAAYY,uBAAyB,IAC5D,CAGAI,eAAAA,GACI,OAAOl3C,KAAK0G,OAChB,CACA0wC,gBAAAA,GACI,OAAOp3C,KAAKu3D,SAChB,CACArK,YAAAA,GACI,OAAOltD,KAAK6kB,IAChB,CACAoyB,aAAAA,GACI,OAAOj3C,KAAKusO,MAChB,CACAp/K,YAAAA,GACI,OAAOntD,KAAKu3D,SAChB,CACA/C,iBAAAA,GACI,OAAOx0D,KAAKi0D,gBAChB,CACAA,cAAAA,GACI,OAAO1wD,EAASgB,OAAOC,KAAKxE,KAAKmrB,YAAa,MAClD,CACAgsB,UAAAA,GACI,OAAOn3C,KAAK0G,OAChB,CAIAw3O,iBAAAA,GACI,OAAOl+O,KAAK0G,OAChB,CACAgmO,SAAAA,GACI,MAAO,WAAa1sO,KAAK0G,QAAU,WAAauiH,oBAAoB95F,OAAOnvB,KAAK+5I,aAAe,KAAWt1I,SAAS,IACvH,CACAkoO,cAAAA,GACI,OAAO3sO,KAAKowD,MAChB,CACAhD,UAAAA,GACI,OAAOptD,KAAKU,QAAU84I,EAAuBgzF,UAAYxsO,KAAKU,QAAU84I,EAAuBlpB,QAAUtwH,KAAKU,QAAU84I,EAAuBzqF,SAAW/uD,KAAKU,QAAU84I,EAAuB9sF,QACpM,CACA/lC,cAAAA,GACI,OAAO3mB,KAAKU,QAAU84I,EAAuBzqF,OACjD,CACAzB,kBAAAA,GACI,OAAOttD,KAAKowD,OAASvjC,KAAKC,KAC9B,CACA2gC,QAAAA,GACI,OAAOztD,KAAKU,QAAU84I,EAAuBlpB,MACjD,CACA9iE,YAAAA,GACI,OAAOxtD,KAAKU,QAAU84I,EAAuBgzF,QACjD,CACAr8K,YAAAA,GACI,OAAO9rD,QAAQC,QAAQtE,KAAK2sO,iBAAmB9/M,KAAKC,MACxD,CACAwqB,YAAAA,GACI,OAAOt3C,KAAKU,QAAU84I,EAAuB1sF,UACjD,CAGA7W,sBAAAA,GACI,OAAOj2C,KAAKg6I,aAAeh6I,KAAK+1C,OACpC,CACA/uC,SAAAA,GACI,OAAO,EAAIyuC,EAASgC,eAAez3C,KAAKg6I,aAAch6I,KAAK21C,QAAQj0B,OAAO1hB,KAAK21C,QAAQn0B,SAASqG,4BAA6B7nB,KAAK21C,QAAQl0B,OAC9I,CACAu1B,kBAAAA,GACI,OAAO,EAAIvB,EAASgC,eAAez3C,KAAK+5I,YAAc/5I,KAAK81C,WAAYL,EAASme,cAAc6oG,IAAKz8J,KAAK21C,QAAQl0B,OACpH,CACA7b,QAAAA,GACI,OAAO,EAAI6vC,EAASgC,eAAez3C,KAAK+5I,YAAatkG,EAASme,cAAc6oG,IAAKz8J,KAAK21C,QAAQl0B,OAClG,CACAk2B,UAAAA,GACI,MAAO,CACHC,kBAAkB,EAAInC,EAASgC,eAAez3C,KAAK81C,WAAYL,EAASme,cAAc6oG,IAAKz8J,KAAK21C,QAAQl0B,QACxGo2B,kBAAkB,EAAIpC,EAASgC,eAAez3C,KAAK+1C,QAAS/1C,KAAK21C,QAAQj0B,OAAO1hB,KAAK21C,QAAQn0B,SAASqG,4BAA6B7nB,KAAK21C,QAAQl0B,QAChJq2B,SAAUA,CAAC1vC,EAAa2vC,IAAuB/3C,KAAK21C,QAAQl0B,OAAOu2B,eAAeh4C,KAAK81C,WAAY1tC,EAAa2vC,GAExH,CACAhB,2BAAAA,GAEI,OAA2B,UADD/2C,KAAK81C,WAAa91C,KAAKk2C,YAAYG,aACvBr2C,KAAKg3C,qBAAqBhB,SACpE,CAGA,kBAAM+2N,GAA0B,IAAbzlP,IAAI1lB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACnB,GAAI5B,KAAKU,QAAU84I,EAAuBlpB,QACtCtwH,KAAKU,QAAU84I,EAAuBzqF,SACtC/uD,KAAKU,QAAU84I,EAAuB9sF,SACtC,OAAO,EACX,GAAI1sD,KAAKU,QAAU84I,EAAuBgzF,SACtC,OAAO,EACX,MAAM74M,QAAiBylH,EAAyBQ,uBAAuBqS,iBAAiBjsJ,KAAKusB,IAAKvsB,KAAKmrB,YAAanrB,KAAK6F,SAAU7F,KAAK21C,QAAQ/zB,QAAQk4H,mBACxJ,OAAQnmH,EAAS+6B,MACb,KAAK0qF,EAAyBuS,2BAA2BqhF,cACrD,OAAiB,MAAbhtO,KAAK6kB,OACL7kB,KAAK6kB,KAAO,KACRyC,SACMtnB,KAAK0yH,SACR,GAGf,KAAK0mB,EAAyBuS,2BAA2BqhH,mBACzD,KAAK5zH,EAAyBuS,2BAA2Bz8F,QACzD,KAAKkqF,EAAyBuS,2BAA2BmhF,QACrD,MAAM/yF,EAAcr0I,OAAOiuB,EAAShwB,KAAKspQ,gBACnCjzH,EAAet0I,OAAOiuB,EAAShwB,KAAKupQ,eACpCC,EAA2C,MAA7Bx5O,EAAShwB,KAAKwpQ,YAAsB,KAAOznQ,OAAOiuB,EAAShwB,KAAKwpQ,aAC9EC,EAAmD,MAAjCz5O,EAAShwB,KAAKypQ,gBAA0B,KAAO1nQ,OAAOiuB,EAAShwB,KAAKypQ,iBACtFvoP,EAAO8O,EAAShwB,KAAKkhB,KAC3B,OAAI7kB,KAAK6kB,MAAQA,GACb7kB,KAAK+5I,cAAgBA,GACrB/5I,KAAKg6I,eAAiBA,KACtBh6I,KAAK6kB,KAAOA,EACZ7kB,KAAK+5I,YAAcA,EACnB/5I,KAAKg6I,aAAeA,EACD,MAAfmzH,IACAntQ,KAAK+1C,QAAUo3N,GACI,MAAnBC,IACAptQ,KAAK81C,WAAas3N,GAClB9lP,SACMtnB,KAAK0yH,SACR,GAGf,KAAK0mB,EAAyBuS,2BAA2B/8F,KAErD,MAAiB,kBADM5uD,KAAK21C,QAAQn0B,SAASgnF,cAAc70E,EAAShwB,KAAKkhB,QAErE7kB,KAAKU,MAAQ84I,EAAuBgzF,SACpCxsO,KAAKusO,OAAS54M,EAAShwB,KAAKkhB,KACxByC,SACMtnB,KAAKulB,gBACR,GAGf,KAAK6zH,EAAyBuS,2BAA2B58F,QAIrD,OAHA/uD,KAAKU,MAAQ84I,EAAuBzqF,QAChCznC,SACMtnB,KAAKulB,gBACR,EACX,KAAK6zH,EAAyBuS,2BAA2B7+F,WACrD,OAAI9sD,KAAKU,QAAU84I,EAAuB1sF,WAC/B,MACX9sD,KAAKU,MAAQ84I,EAAuB1sF,WAChCxlC,SACMtnB,KAAKulB,gBACR,GACX,KAAK6zH,EAAyBuS,2BAA2Bj/F,SAKrD,OAJA1sD,KAAKU,MAAQ84I,EAAuB9sF,SACpC1sD,KAAKolB,WAAauO,EAAShwB,KAAKkhB,KAC5ByC,SACMtnB,KAAKulB,gBACR,EACX,QAII,OAHAvlB,KAAKU,MAAQ84I,EAAuBlpB,OAChChpG,SACMtnB,KAAKulB,gBACR,EAEnB,CAWA,oBAAM+oC,CAAelmD,GAAuD,IAA1CmmD,EAAoB3sD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGy8O,EAAcz8O,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACtE,GAAI9B,KAAKU,QAAU84I,EAAuBrpB,WACtC,MAAM,IAAItsH,MAAM,gCAKpB,IAJK7D,KAAK+4C,YACN/4C,KAAK+4C,WAAY,QACX/4C,KAAKulB,iBAEPnd,EAAYyhB,SAChB7pB,KAAKU,QAAU84I,EAAuBrpB,YAAY,CAElD,SADMnwH,KAAK+sQ,cAAa,GACP,MAAb/sQ,KAAK6kB,MAAkC,MAAlBw5N,EAAwB,CAC7C,MAAMzsN,QAAY5xB,KAAK21C,QAAQ+5E,OAAOp9B,eAAetyF,KAAK6kB,MAC1D,GAAW,MAAP+M,EACAysN,EAAe,KAAM,WAEpB,GAAIzsN,EAAIxG,cAAgB,EACzBizN,EAAezsN,EAAIolC,KAAM,OAExB,CACD,MAAMttC,QAAc1pB,KAAK21C,QAAQ+5E,OAAOl/B,qBAAqB5+D,EAAK,GAClEysN,EAAezsN,EAAIolC,KAAMttC,EAC7B,CACJ,CACI1pB,KAAKU,QAAU84I,EAAuBrpB,kBAChC,EAAIhrH,EAAQijB,gBAAuC,IAAvBmmC,EAA6BnmD,EACvE,CACA,GAAIpI,KAAKU,QAAU84I,EAAuB1sF,YACtC9sD,KAAKU,QAAU84I,EAAuB9sF,SACtC,OAAO,EACX,GAAI1sD,KAAK2mB,iBACL,MAAM,IAAIylN,EAAmB/qD,iBAAiB,gBAClD,GAAIrhL,KAAKytD,WACL,MAAM,IAAI2+K,EAAmB/qD,iBAAiB,eAClD,OAAO,CACX,CACA,sBAAM1xH,CAAiBvnD,GAAuC,IAA1BmmD,EAAoB3sD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACvD,GAAI5B,KAAKU,QAAU84I,EAAuB9sF,SAA1C,CAEA,GAAI1sD,KAAKU,QAAU84I,EAAuB1sF,WACtC,MAAM,IAAIjpD,MAAM,gCACpB,MAAQuE,EAAYyhB,SAChB7pB,KAAKU,QAAU84I,EAAuB1sF,kBAChC9sD,KAAK+sQ,cAAa,GACpB/sQ,KAAKU,QAAU84I,EAAuB1sF,kBAChC,EAAI3nD,EAAQijB,gBAAuC,IAAvBmmC,EAA6BnmD,GAEvE,GAAIpI,KAAK2mB,iBACL,MAAM,IAAIylN,EAAmB/qD,iBAAiB,gBAClD,GAAIrhL,KAAKytD,WACL,MAAM,IAAI2+K,EAAmB/qD,iBAAiB,cAZxC,CAad,CACA,sBAAMn1B,CAAiBxS,GACnB,GAA0B,MAAtB15I,KAAK05I,oBAKHN,EAAyBQ,uBAAuBsS,iBAAiBlsJ,KAAKusB,IAAKvsB,KAAKmrB,YAAanrB,KAAK6F,SAAU6zI,EAAe15I,KAAK21C,QAAQ/zB,QAAQk4H,mBACtJ95I,KAAK05I,cAAgBA,OALjB,GAAI15I,KAAK05I,gBAAkBA,EACvB,MAAM,IAAI71I,MAAM,wCAK5B,CACA,mBAAMwpQ,CAAc3zH,EAAetxI,GACV,MAAjBsxI,SACM15I,KAAKksJ,iBAAiBxS,SAC1B15I,KAAK2vD,iBAAiBvnD,EAChC,CAGA4nD,SAAAA,GACI,MAAO,IACA5pD,MAAM4pD,YACT7kC,YAAanrB,KAAKmrB,YAClBtlB,SAA2B,MAAjB7F,KAAK6F,SAAmB,KAAO7F,KAAK6F,SAASpB,SAAS,IAChEiC,QAAS1G,KAAK0G,QACdqzI,YAAiC,MAApB/5I,KAAK+5I,YAAsB,KAAO/5I,KAAK+5I,YAAYt1I,SAAS,IACzEu1I,aAAmC,MAArBh6I,KAAKg6I,aAAuB,KAAOh6I,KAAKg6I,aAAav1I,SAAS,IAC5E8yD,UAAWv3D,KAAKu3D,UAChBpvD,MAAOnI,KAAKmI,MACZuxI,cAAe15I,KAAK05I,cACpB6yF,OAAQvsO,KAAKusO,OACb1nN,KAAM7kB,KAAK6kB,KACXO,WAAYplB,KAAKolB,WAEzB,CACAiyB,YAAAA,GACI,OAAOr3C,KAAKu3D,SAChB,CACAlf,kBAAAA,GACI,OAAOh0C,QAAQC,QAAQ,CACnBg0C,SAAS,EAAI7C,EAASgC,eAAe,GAAIz3C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,QACrFk3B,eAAe,EACfC,UAAU,EAAInD,EAASgC,eAAe,GAAIz3C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,SAE9F,CAGA,WAAMgF,CAAMa,GACR,GAAItnB,KAAKU,QAAU84I,EAAuBrpB,WAAY,CAGlD,SADqBnwH,KAAK+sQ,cAAa,GAInC,OAFIzlP,SACMtnB,KAAKulB,gBACR,CAEf,CACA,OAAO,CACX,CACA0B,KAAAA,CAAMK,GACF,OAAOjjB,QAAQC,SAAQ,EAC3B,EAEJxE,EAAQy5I,kBAAoBA,8FCrL5Bz5I,EAAAA,kBAAAq8C,EAufAr8C,EAAAA,YAAA,SAA4B0J,GAC1B,MAAM4yC,EAnCR,SAAsBC,GACpB,MAAMpiB,GAAO,EAAAqiB,EAAAC,eAAcF,GAc3B,OAbAG,EAAGC,eACDxiB,EACA,CACEr1B,KAAM,OACNmF,KAAM,WACNO,YAAa,YAEf,CACEoyC,SAAU,WACVC,cAAe,WACfC,KAAM,YAGH55C,OAAO8J,OAAO,CAAE8vC,MAAM,KAAS3iB,GACxC,CAmBgB4iB,CAAarzC,IACrB,GAAEszC,EAAIvsC,EAAGwsC,GAAgBX,EACzBY,EAAgBF,EAAGG,MAAQ,EAC3BC,EAAkB,EAAIJ,EAAGG,MAAQ,EAKvC,SAASE,EAAK1sC,GACZ,OAAO4K,EAAIA,IAAI5K,EAAGssC,EACpB,CACA,SAASM,EAAK5sC,GACZ,OAAO4K,EAAIzS,OAAO6H,EAAGssC,EACvB,CAEA,MACEO,gBAAiBC,EAAK,uBACtBC,EAAsB,oBACtBC,EAAmB,mBACnBC,GACEvB,EAAkB,IACjBC,EACH1rB,OAAAA,CAAQitB,EAAIC,EAAOC,GACjB,MAAMptC,EAAImtC,EAAME,WACV9sC,EAAI8rC,EAAGpsB,QAAQjgB,EAAEO,GACjB+sC,EAAMvB,EAAGnyC,YACf,OAAIwzC,EACKE,EAAIztB,WAAW9rB,KAAK,CAACo5C,EAAMK,WAAa,EAAO,IAAQjtC,GAEvD+sC,EAAIztB,WAAW9rB,KAAK,CAAC,IAAQwM,EAAG8rC,EAAGpsB,QAAQjgB,EAAEQ,GAExD,EACAitC,SAAAA,CAAUC,GACR,MAAMhsC,EAAMgsC,EAAMt8C,OACZ00B,EAAO4nB,EAAM,GACbC,EAAOD,EAAMvtB,SAAS,GAE5B,GAAIze,IAAQ6qC,GAA2B,IAATzmB,GAA0B,IAATA,EAgBxC,IAAIpkB,IAAQ+qC,GAA4B,IAAT3mB,EAAe,CAGnD,MAAO,CAAEvlB,EAFC8rC,EAAGoB,UAAUE,EAAKxtB,SAAS,EAAGksB,EAAGG,QAE/BhsC,EADF6rC,EAAGoB,UAAUE,EAAKxtB,SAASksB,EAAGG,MAAO,EAAIH,EAAGG,QAExD,CACE,MAAM,IAAIp5C,MACR,mBAAmBsO,2BAA6B6qC,yBAAqCE,uBAEzF,CAxB+D,CAC7D,MAAMlsC,EAAIwrC,EAAG6B,gBAAgBD,GAC7B,KAjCGyD,GADoB1gB,EAkCEnwB,IAjCTmwB,EAAM2b,EAAG0B,OAiCI,MAAM,IAAI36C,MAAM,yBAC7C,MAAM46C,EAAKhB,EAAoBzsC,GAC/B,IAAIC,EACJ,IACEA,EAAI6rC,EAAGv/B,KAAKkhC,EACd,CAAE,MAAOC,GACP,MAAM5qC,EAAS4qC,aAAqB76C,MAAQ,KAAO66C,EAAUzwB,QAAU,GACvE,MAAM,IAAIpqB,MAAM,wBAA0BiQ,EAC5C,CAKA,OAFiC,KAAP,EAAPyiB,OAFHtlB,EAAIstC,KAASA,KAGHttC,EAAI6rC,EAAGnY,IAAI1zB,IAC9B,CAAED,IAAGC,IACd,CAhDJ,IAA6BkwB,CAyD3B,IAEIwd,EAAiBxd,GACrBqb,EAAGoC,WAAWpC,EAAGqC,gBAAgB1d,EAAKib,EAAM0C,cAE9C,SAASC,EAAsB7e,GAE7B,OAAOA,EADM6c,GAAewB,CAE9B,CAMA,MAAMS,EAASA,CAAC9tC,EAAe1M,EAAcutB,IAAeyqB,EAAG6B,gBAAgBntC,EAAExD,MAAMlJ,EAAMutB,IAK7F,MAAMktB,EACJhxC,WAAAA,CACW4C,EACAH,EACAwuC,GAFA,KAAAruC,EAAAA,EACA,KAAAH,EAAAA,EACA,KAAAwuC,SAAAA,EAETl/C,KAAKm/C,gBACP,CAGA,kBAAOC,CAAYt4C,GACjB,MAAM0K,EAAI4qC,EAAM0C,YAEhB,OADAh4C,GAAM,EAAA2oB,EAAA4vB,aAAY,mBAAoBv4C,EAAS,EAAJ0K,GACpC,IAAIytC,EAAUD,EAAOl4C,EAAK,EAAG0K,GAAIwtC,EAAOl4C,EAAK0K,EAAG,EAAIA,GAC7D,CAIA,cAAO8tC,CAAQx4C,GACb,MAAM,EAAE+J,EAAC,EAAEH,GAAM5Q,EAAAy/C,IAAIC,OAAM,EAAA/vB,EAAA4vB,aAAY,MAAOv4C,IAC9C,OAAO,IAAIm4C,EAAUpuC,EAAGH,EAC1B,CAEAyuC,cAAAA,GAEE,IAAKzB,EAAmB19C,KAAK6Q,GAAI,MAAM,IAAIhN,MAAM,6BACjD,IAAK65C,EAAmB19C,KAAK0Q,GAAI,MAAM,IAAI7M,MAAM,4BACnD,CAEA67C,cAAAA,CAAeR,GACb,OAAO,IAAID,EAAUj/C,KAAK6Q,EAAG7Q,KAAK0Q,EAAGwuC,EACvC,CAEAS,gBAAAA,CAAiBC,GACf,MAAM,EAAE/uC,EAAC,EAAEH,EAAGwuC,SAAUW,GAAQ7/C,KAC1BwxB,EAAImrB,GAAc,EAAAltB,EAAA4vB,aAAY,UAAWO,IAC/C,GAAW,MAAPC,IAAgB,CAAC,EAAG,EAAG,EAAG,GAAGC,SAASD,GAAM,MAAM,IAAIh8C,MAAM,uBAChE,MAAMk8C,EAAe,IAARF,GAAqB,IAARA,EAAYhvC,EAAIurC,EAAM7rC,EAAIM,EACpD,GAAIkvC,GAAQjD,EAAG0B,MAAO,MAAM,IAAI36C,MAAM,8BACtC,MAAM0P,EAAuB,KAAP,EAANssC,GAAiB,KAAO,KAClCG,EAAIzC,EAAM0C,QAAQ1sC,EAASorC,EAAcoB,IACzCG,EAAK7C,EAAK0C,GACVI,EAAKhD,GAAM3rB,EAAI0uB,GACfE,EAAKjD,EAAKzsC,EAAIwvC,GACdG,EAAI9C,EAAMvtC,KAAKswC,qBAAqBN,EAAGG,EAAIC,GACjD,IAAKC,EAAG,MAAM,IAAIx8C,MAAM,qBAExB,OADAw8C,EAAElB,iBACKkB,CACT,CAGAE,QAAAA,GACE,OAAOxB,EAAsB/+C,KAAK0Q,EACpC,CAEA8vC,UAAAA,GACE,OAAOxgD,KAAKugD,WAAa,IAAItB,EAAUj/C,KAAK6Q,EAAGssC,GAAMn9C,KAAK0Q,GAAI1Q,KAAKk/C,UAAYl/C,IACjF,CAGAygD,aAAAA,GACE,OAAOjE,EAAGkE,WAAW1gD,KAAK2gD,WAC5B,CACAA,QAAAA,GACE,OAAO7gD,EAAAy/C,IAAIqB,WAAW,CAAE/vC,EAAG7Q,KAAK6Q,EAAGH,EAAG1Q,KAAK0Q,GAC7C,CAGAmwC,iBAAAA,GACE,OAAOrE,EAAGkE,WAAW1gD,KAAK8gD,eAC5B,CACAA,YAAAA,GACE,OAAOnC,EAAc3+C,KAAK6Q,GAAK8tC,EAAc3+C,KAAK0Q,EACpD,EAIF,MAAM2rB,EAAQ,CACZ0kB,iBAAAA,CAAkBC,GAChB,IAEE,OADAxD,EAAuBwD,IAChB,CACT,CAAE,MAAOn+B,GACP,OAAO,CACT,CACF,EACA26B,uBAAwBA,EAMxByD,iBAAkBA,KAChB,MAAMp/C,EAASwZ,EAAI6lC,iBAAiB9E,EAAM7rC,GAC1C,OAAO8K,EAAI8lC,eAAe/E,EAAM9xC,YAAYzI,GAASu6C,EAAM7rC,EAAE,EAW/D6wC,UAAAA,GAA6C,IAAlCC,EAAUz/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGg8C,EAAKh8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG27C,EAAMvtC,KAGvC,OAFA4tC,EAAM0D,eAAeD,GACrBzD,EAAMxlC,SAAS1S,OAAO,IACfk4C,CACT,GAgBF,SAAS2D,EAAUhuB,GACjB,MAAMvb,EAAMwkC,EAAGgF,QAAQjuB,GACjBvhB,EAAsB,kBAATuhB,EACbphB,GAAO6F,GAAOhG,IAASuhB,EAAa1xB,OAC1C,OAAImW,EAAY7F,IAAQ6qC,GAAiB7qC,IAAQ+qC,EAC7ClrC,EAAYG,IAAQ,EAAI6qC,GAAiB7qC,IAAQ,EAAI+qC,EACrD3pB,aAAgBgqB,CAEtB,CAuBA,MAAMb,EACJN,EAAMM,UACN,SAAUyB,GAGR,MAAMhd,EAAMqb,EAAG6B,gBAAgBF,GACzB9M,EAAuB,EAAf8M,EAAMt8C,OAAau6C,EAAMqF,WACvC,OAAOpQ,EAAQ,EAAIlQ,GAAOz7B,OAAO2rC,GAASlQ,CAC5C,EACIwb,EACJP,EAAMO,eACN,SAAUwB,GACR,OAAOhB,EAAKT,EAASyB,GACvB,EAEIuD,EAAalF,EAAGmF,QAAQvF,EAAMqF,YAIpC,SAASG,EAAWzgB,GAClB,GAAmB,kBAARA,EAAkB,MAAM,IAAIt9B,MAAM,mBAC7C,KAAMg+C,GAAO1gB,GAAOA,EAAMugB,GACxB,MAAM,IAAI79C,MAAM,uBAAuBu4C,EAAMqF,cAE/C,OAAOjF,EAAGqC,gBAAgB1d,EAAKib,EAAM0C,YACvC,CAOA,SAASgD,EAAQlC,EAAcoB,GAA0C,IAArB/mB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGmgD,EACzD,GAAI,CAAC,YAAa,aAAazuB,MAAMhiB,GAAMA,KAAK2oB,IAC9C,MAAM,IAAIp2B,MAAM,uCAClB,MAAM,KAAEe,EAAI,YAAE0F,GAAgB8xC,EAC9B,IAAI,KAAEQ,EAAI,QAAEoF,EAASC,aAAcC,GAAQjoB,EAC/B,MAAR2iB,IAAcA,GAAO,GACzBgD,GAAU,EAAAnwB,EAAA4vB,aAAY,UAAWO,GAC7BoC,IAASpC,GAAU,EAAAnwB,EAAA4vB,aAAY,oBAAqBz6C,EAAKg7C,KAK7D,MAAMwC,EAAQzF,EAAciD,GACtBrqC,EAAIioC,EAAuBwD,GAC3BqB,EAAW,CAACT,EAAWrsC,GAAIqsC,EAAWQ,IAE5C,GAAW,MAAPF,IAAuB,IAARA,EAAe,CAEhC,MAAM3wC,GAAY,IAAR2wC,EAAe53C,EAAYwyC,EAAGG,OAASiF,EACjDG,EAAS/6C,MAAK,EAAAmoB,EAAA4vB,aAAY,eAAgB9tC,GAC5C,CACA,MAAM+wC,EAAO9F,EAAGnyC,eAAeg4C,GACzB/pC,EAAI8pC,EAuBV,MAAO,CAAEE,OAAMC,MArBf,SAAeC,GAEb,MAAMlxC,EAAIorC,EAAS8F,GACnB,IAAK9E,EAAmBpsC,GAAI,OAC5B,MAAMmxC,EAAKpF,EAAK/rC,GACV8H,EAAImkC,EAAMvtC,KAAKoI,SAAS9G,GAAGwsC,WAC3BjtC,EAAIssC,EAAK/jC,EAAEpI,GACjB,GAAIH,IAAMgxC,EAAK,OAIf,MAAMnxC,EAAIysC,EAAKsF,EAAKtF,EAAK7kC,EAAIzH,EAAI0E,IACjC,GAAI7E,IAAMmxC,EAAK,OACf,IAAI3C,GAAY9lC,EAAEpI,IAAMH,EAAI,EAAI,GAAKse,OAAO/V,EAAEnI,EAAIstC,GAC9CmE,EAAQhyC,EAKZ,OAJIksC,GAAQmC,EAAsBruC,KAChCgyC,EA7ON,SAAoBhyC,GAClB,OAAOquC,EAAsBruC,GAAKysC,GAAMzsC,GAAKA,CAC/C,CA2Oc8vC,CAAW9vC,GACnBwuC,GAAY,GAEP,IAAID,EAAUpuC,EAAG6xC,EAAOxD,EACjC,EAEF,CACA,MAAM6C,EAA2B,CAAEnF,KAAMR,EAAMQ,KAAMoF,SAAS,GACxDW,EAA0B,CAAE/F,KAAMR,EAAMQ,KAAMoF,SAAS,GAuF7D,OAhEAzE,EAAMvtC,KAAKsxC,eAAe,GAgEnB,CACLlF,QACAwG,aA/MF,SAAsB5B,GAAwC,IAAnBnD,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACrD,OAAO27C,EAAMsF,eAAe7B,GAAY8B,WAAWjF,EACrD,EA8MEkF,gBArLF,SAAyBC,EAAmBC,GAAiC,IAAnBpF,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACpE,GAAI2/C,EAAUyB,GAAW,MAAM,IAAIn/C,MAAM,iCACzC,IAAK09C,EAAU0B,GAAU,MAAM,IAAIp/C,MAAM,iCAEzC,OADU05C,EAAM0C,QAAQgD,GACf7qC,SAASolC,EAAuBwF,IAAWF,WAAWjF,EACjE,EAiLE35C,KA5EF,SAAc07C,EAAcsD,GAAuC,IAArBjpB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGmgD,EACnD,MAAM,KAAEO,EAAI,MAAEC,GAAUT,EAAQlC,EAASsD,EAASjpB,GAC5CwW,EAAI2L,EAEV,OADaI,EAAG2G,eAAmC1S,EAAE7rC,KAAKmrB,UAAW0gB,EAAEqO,YAAarO,EAAE1mC,KAC/Eq5C,CAAKd,EAAMC,EACpB,EAwEE19C,OArDF,SACEZ,EACA27C,EACAj7C,GACqB,IAArBs1B,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG+gD,EAEP,MAAMU,EAAKp/C,EAGX,GAFA27C,GAAU,EAAAnwB,EAAA4vB,aAAY,UAAWO,GACjCj7C,GAAY,EAAA8qB,EAAA4vB,aAAY,YAAa16C,GACjC,WAAYs1B,EAAM,MAAM,IAAIp2B,MAAM,sCACtC,MAAM,KAAE+4C,EAAI,QAAEoF,GAAY/nB,EAE1B,IAAIupB,EACA9wC,EACJ,IACE,GAAkB,kBAAP2wC,GAAmB7G,EAAGgF,QAAQ6B,GAGvC,IACEG,EAAOvE,EAAUK,QAAQ+D,EAC3B,CAAE,MAAOI,GACP,KAAMA,aAAoB3jD,EAAAy/C,IAAImE,KAAM,MAAMD,EAC1CD,EAAOvE,EAAUG,YAAYiE,EAC/B,KACK,IAAkB,kBAAPA,GAAmC,kBAATA,EAAGxyC,GAAkC,kBAATwyC,EAAG3yC,EAIzE,MAAM,IAAI7M,MAAM,SAJyE,CACzF,MAAM,EAAEgN,EAAC,EAAEH,GAAM2yC,EACjBG,EAAO,IAAIvE,EAAUpuC,EAAGH,EAC1B,CAEA,CACAgC,EAAI6qC,EAAM0C,QAAQt7C,EACpB,CAAE,MAAOke,GACP,GAAiC,UAA5BA,EAAgBoL,QACnB,MAAM,IAAIpqB,MAAM,kEAClB,OAAO,CACT,CACA,GAAI+4C,GAAQ4G,EAAKjD,WAAY,OAAO,EAChCyB,IAASpC,EAAUxD,EAAMx3C,KAAKg7C,IAClC,MAAM,EAAE/uC,EAAC,EAAEH,GAAM8yC,EACXhyB,EAAImrB,EAAciD,GAClB+D,EAAKtG,EAAK3sC,GACVyvC,EAAKhD,EAAK3rB,EAAImyB,GACdvD,EAAKjD,EAAKtsC,EAAI8yC,GACd3D,EAAIzC,EAAMvtC,KAAKswC,qBAAqB5tC,EAAGytC,EAAIC,IAAKtC,WACtD,IAAKkC,EAAG,OAAO,EAEf,OADU7C,EAAK6C,EAAEhvC,KACJH,CACf,EAOEysC,gBAAiBC,EACjB0B,YACA5iB,QAEJ,EAWAv8B,EAAAA,eAAA8jD,EAwEA9jD,EAAAA,oBAAA,SACEg9C,EACA7iB,GAOA,GADA5e,EAAIwoC,cAAc/G,IACbA,EAAGx4B,QAAQ2V,EAAKsW,KAAOuM,EAAGx4B,QAAQ2V,EAAKuW,KAAOsM,EAAGx4B,QAAQ2V,EAAK6pB,GACjE,MAAM,IAAIjgD,MAAM,qCAClB,MAAMkgD,EAAYH,EAAe9G,EAAI7iB,EAAK6pB,GAC1C,IAAKhH,EAAGhrC,MAAO,MAAM,IAAIjO,MAAM,gCAG/B,OAAQ0xC,IAEN,IAAIyO,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKrzC,EAAGC,EACrC+yC,EAAMlH,EAAG7O,IAAIsH,GACbyO,EAAMlH,EAAG9b,IAAIgjB,EAAK/pB,EAAK6pB,GACvBG,EAAMnH,EAAG7O,IAAI+V,GACbC,EAAMnH,EAAGv6C,IAAI0hD,EAAKD,GAClBE,EAAMpH,EAAGv6C,IAAI0hD,EAAKnH,EAAGlqC,KACrBsxC,EAAMpH,EAAG9b,IAAIkjB,EAAKjqB,EAAKuW,GACvB2T,EAAMrH,EAAGwH,KAAKrqB,EAAK6pB,EAAGhH,EAAGnY,IAAIsf,IAAOnH,EAAGyH,IAAIN,EAAKnH,EAAG0H,OACnDL,EAAMrH,EAAG9b,IAAImjB,EAAKlqB,EAAKsW,GACvB0T,EAAMnH,EAAG7O,IAAIiW,GACbG,EAAMvH,EAAG7O,IAAIkW,GACbC,EAAMtH,EAAG9b,IAAIqjB,EAAKpqB,EAAKsW,GACvB0T,EAAMnH,EAAGv6C,IAAI0hD,EAAKG,GAClBH,EAAMnH,EAAG9b,IAAIijB,EAAKC,GAClBG,EAAMvH,EAAG9b,IAAIqjB,EAAKF,GAClBC,EAAMtH,EAAG9b,IAAIqjB,EAAKpqB,EAAKuW,GACvByT,EAAMnH,EAAGv6C,IAAI0hD,EAAKG,GAClBpzC,EAAI8rC,EAAG9b,IAAIgjB,EAAKE,GAChB,MAAM,QAAE5/B,EAAO,MAAEphB,GAAU6gD,EAAUE,EAAKI,GAC1CpzC,EAAI6rC,EAAG9b,IAAIgjB,EAAKzO,GAChBtkC,EAAI6rC,EAAG9b,IAAI/vB,EAAG/N,GACd8N,EAAI8rC,EAAGwH,KAAKtzC,EAAGkzC,EAAK5/B,GACpBrT,EAAI6rC,EAAGwH,KAAKrzC,EAAG/N,EAAOohB,GACtB,MAAMmgC,EAAK3H,EAAGhrC,MAAOyjC,KAAOuH,EAAGhrC,MAAOb,GAGtC,OAFAA,EAAI6rC,EAAGwH,KAAKxH,EAAGnY,IAAI1zB,GAAIA,EAAGwzC,GAC1BzzC,EAAI8rC,EAAGvqC,IAAIvB,EAAGmzC,GACP,CAAEnzC,IAAGC,IAAG,CAEnB,EAltCA,MAAAqrC,EAAAx7C,EAAA,OACAua,EAAAva,EAAA,OACA07C,EAAA17C,EAAA,OACA2uB,EAAA3uB,EAAA,OAgIA,MAAQu9C,gBAAiBqG,EAAKhE,WAAYiE,GAAQnI,EACrC18C,EAAAA,IAAM,CAEjB4jD,IAAK,cAAqB7/C,MACxBoK,WAAAA,GACE7H,MADWxE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAEhB,GAEFysN,SAAAA,CAAU1qN,GACR,MAAQ+/C,IAAKqB,GAAMjlD,EAAAy/C,IACnB,GAAI57C,EAAK9B,OAAS,GAAiB,IAAZ8B,EAAK,GAAa,MAAM,IAAIohD,EAAE,iCACrD,MAAM5yC,EAAMxO,EAAK,GACXiuB,EAAMjuB,EAAKitB,SAAS,EAAGze,EAAM,GACnC,IAAKA,GAAOyf,EAAI/vB,SAAWsQ,EAAK,MAAM,IAAI4yC,EAAE,2CAK5C,GAAa,IAATnzB,EAAI,GAAiB,MAAM,IAAImzB,EAAE,uCACrC,GAAe,IAAXnzB,EAAI,MAA0B,IAATA,EAAI,IAC3B,MAAM,IAAImzB,EAAE,uDACd,MAAO,CAAExvC,EAAGmvC,EAAI9yB,GAAMpgB,EAAG7N,EAAKitB,SAASze,EAAM,GAC/C,EACAqtC,KAAAA,CAAM14C,GAEJ,MAAQ48C,IAAKqB,GAAMjlD,EAAAy/C,IACb57C,EAAsB,kBAARmD,EAAmB69C,EAAI79C,GAAOA,EAClD01C,EAAGgJ,OAAO7hD,GACV,IAAI6N,EAAI7N,EAAK9B,OACb,GAAI2P,EAAI,GAAgB,IAAX7N,EAAK,GAAY,MAAM,IAAIohD,EAAE,yBAC1C,GAAIphD,EAAK,KAAO6N,EAAI,EAAG,MAAM,IAAIuzC,EAAE,uCACnC,MAAQxvC,EAAG1E,EAAGW,EAAGq0C,GAAW/lD,EAAAy/C,IAAI8uK,UAAU1qN,EAAKitB,SAAS,KAChDrb,EAAG7E,EAAGc,EAAGqqF,GAAe/7F,EAAAy/C,IAAI8uK,UAAUxoK,GAC9C,GAAIg2C,EAAWh6F,OAAQ,MAAM,IAAIkjD,EAAE,+CACnC,MAAO,CAAEl0C,IAAGH,IACd,EACAkwC,UAAAA,CAAWmF,GAET,MAAMr4C,EAASgD,GAAmD,EAA5Bye,OAAOhkB,SAASuF,EAAE,GAAI,IAAe,KAAOA,EAAIA,EAChF8gB,EAAK2P,IACT,MAAMr6B,EAAMq6B,EAAI18B,SAAS,IACzB,OAAoB,EAAbqC,EAAIjF,OAAa,IAAIiF,IAAQA,CAAG,EAEnC4J,EAAIhD,EAAM8jB,EAAEu0B,EAAIr1C,IAChBG,EAAInD,EAAM8jB,EAAEu0B,EAAIl1C,IAChB+hC,EAAMliC,EAAE7O,OAAS,EACjBysN,EAAMz9M,EAAEhP,OAAS,EACjBg8F,EAAKrsE,EAAEohB,GACPy8H,EAAK79I,EAAE88L,GACb,MAAO,KAAK98L,EAAE88L,EAAM17K,EAAM,OAAOy8H,IAAKx+J,MAAMgtF,IAAKntF,GACnD,GAKF,MAAMmxC,EAAMn8C,OAAO,GAAI64C,EAAM74C,OAAO,GAAIugD,EAAMvgD,OAAO,GAAIwgD,EAAMxgD,OAAO,GAAIygD,EAAMzgD,OAAO,GAEvF,SAAgBy2C,EAAqBliB,GACnC,MAAMmiB,EArGR,SAA8BC,GAC5B,MAAMpiB,GAAO,EAAAqiB,EAAAC,eAAcF,GAC3BG,EAAGC,eACDxiB,EACA,CACExpB,EAAG,QACHS,EAAG,SAEL,CACEk1C,yBAA0B,QAC1BC,eAAgB,UAChBC,cAAe,WACfC,cAAe,WACfC,mBAAoB,UACpBtI,UAAW,WACXxtB,QAAS,aAGb,MAAM,KAAE+1B,EAAI,GAAE3J,EAAE,EAAErsC,GAAMwpB,EACxB,GAAIwsB,EAAM,CACR,IAAK3J,EAAGyH,IAAI9zC,EAAGqsC,EAAG0H,MAChB,MAAM,IAAI3gD,MAAM,qEAElB,GACkB,kBAAT4iD,GACc,kBAAdA,EAAKC,MACgB,oBAArBD,EAAKE,YAEZ,MAAM,IAAI9iD,MAAM,oEAEpB,CACA,OAAOb,OAAO8J,OAAO,IAAKmtB,GAC5B,CAqEgB2sB,CAAkB3sB,IAC1B,GAAE6iB,GAAOV,EAET1rB,EACJ0rB,EAAM1rB,SAAO,EACXitB,EAAwBC,EAAyBmJ,KACjD,MAAMt2C,EAAImtC,EAAME,WAChB,OAAOtB,EAAGnyC,YAAYimB,WAAW9rB,KAAK,CAAC,IAAQs4C,EAAGpsB,QAAQjgB,EAAEO,GAAI8rC,EAAGpsB,QAAQjgB,EAAEQ,GAC9E,GACGitC,EACJ9B,EAAM8B,WAAS,CACbC,IAEA,MAAMC,EAAOD,EAAMvtB,SAAS,GAI5B,MAAO,CAAE5f,EAFC8rC,EAAGoB,UAAUE,EAAKxtB,SAAS,EAAGksB,EAAGG,QAE/BhsC,EADF6rC,EAAGoB,UAAUE,EAAKxtB,SAASksB,EAAGG,MAAO,EAAIH,EAAGG,QAEvD,GAMH,SAASQ,EAAoBzsC,GAC3B,MAAM,EAAEP,EAAC,EAAES,GAAMkrC,EACXhL,EAAK0L,EAAG7O,IAAIj9B,GACZg2C,EAAKlK,EAAG9b,IAAIoQ,EAAIpgC,GACtB,OAAO8rC,EAAGv6C,IAAIu6C,EAAGv6C,IAAIykD,EAAIlK,EAAG9b,IAAIhwB,EAAGP,IAAKS,EAC1C,CAKA,IAAK4rC,EAAGyH,IAAIzH,EAAG7O,IAAImO,EAAM6K,IAAKxJ,EAAoBrB,EAAM8K,KACtD,MAAM,IAAIrjD,MAAM,+CAGlB,SAAS65C,EAAmBvc,GAC1B,MAAsB,kBAARA,GAAoB0gB,EAAM1gB,GAAOA,EAAMib,EAAM7rC,CAC7D,CACA,SAASg+M,EAASptL,GAChB,IAAKuc,EAAmBvc,GAAM,MAAM,IAAIt9B,MAAM,8CAChD,CAGA,SAAS25C,EAAuBxzC,GAC9B,MAAQo8C,yBAA0Be,EAAO,YAAErI,EAAW,eAAEuH,EAAc,EAAE91C,GAAM6rC,EAC9E,GAAI+K,GAA0B,kBAARn9C,EAAkB,CAGtC,GAFIwyC,EAAGgF,QAAQx3C,KAAMA,EAAMwyC,EAAGoC,WAAW50C,IAEtB,kBAARA,IAAqBm9C,EAAQrH,SAAS91C,EAAInI,QAAS,MAAM,IAAIgC,MAAM,eAC9EmG,EAAMA,EAAIqhB,SAAuB,EAAdyzB,EAAiB,IACtC,CACA,IAAI3d,EACJ,IACEA,EACiB,kBAARn3B,EACHA,EACAwyC,EAAG6B,iBAAgB,EAAA5uB,EAAA4vB,aAAY,cAAer1C,EAAK80C,GAC3D,CAAE,MAAOj8B,GACP,MAAM,IAAIhf,MAAM,uBAAuBi7C,sCAAgD90C,IACzF,CAGA,OAFIq8C,IAAgBllB,EAAM9lB,EAAIA,IAAI8lB,EAAK5wB,IACvCg+M,EAASptL,GACFA,CACT,CAEA,MAAM63D,EAAmB,IAAIj3E,IAC7B,SAASqlC,EAAeC,GACtB,KAAMA,aAAiB9J,GAAQ,MAAM,IAAI15C,MAAM,2BACjD,CAMA,MAAM05C,EAIJtvC,WAAAA,CACWw5C,EACAC,EACAC,GAET,GAJS,KAAAF,GAAAA,EACA,KAAAC,GAAAA,EACA,KAAAC,GAAAA,EAEC,MAANF,IAAe3K,EAAGx4B,QAAQmjC,GAAK,MAAM,IAAI5jD,MAAM,cACnD,GAAU,MAAN6jD,IAAe5K,EAAGx4B,QAAQojC,GAAK,MAAM,IAAI7jD,MAAM,cACnD,GAAU,MAAN8jD,IAAe7K,EAAGx4B,QAAQqjC,GAAK,MAAM,IAAI9jD,MAAM,aACrD,CAIA,iBAAOokD,CAAW1xC,GAChB,MAAM,EAAEvF,EAAC,EAAEC,GAAMsF,GAAK,CAAC,EACvB,IAAKA,IAAMumC,EAAGx4B,QAAQtT,KAAO8rC,EAAGx4B,QAAQrT,GAAI,MAAM,IAAIpN,MAAM,wBAC5D,GAAI0S,aAAagnC,EAAO,MAAM,IAAI15C,MAAM,gCACxC,MAAM+jD,EAAO58C,GAAS8xC,EAAGyH,IAAIv5C,EAAG8xC,EAAG0H,MAEnC,OAAIoD,EAAI52C,IAAM42C,EAAI32C,GAAWssC,EAAMiH,KAC5B,IAAIjH,EAAMvsC,EAAGC,EAAG6rC,EAAGlqC,IAC5B,CAEA,KAAI5B,GACF,OAAOhR,KAAK89C,WAAW9sC,CACzB,CACA,KAAIC,GACF,OAAOjR,KAAK89C,WAAW7sC,CACzB,CAQA,iBAAOi3C,CAAWC,GAChB,MAAMC,EAAQtL,EAAGuL,YAAYF,EAAOz/C,KAAK6N,GAAMA,EAAEoxC,MACjD,OAAOQ,EAAOz/C,KAAI,CAAC6N,EAAGvL,IAAMuL,EAAEunC,SAASsK,EAAMp9C,MAAKtC,IAAI60C,EAAM0K,WAC9D,CAMA,cAAOhI,CAAQn5C,GACb,MAAM4L,EAAI6qC,EAAM0K,WAAW/J,GAAU,EAAAzuB,EAAA4vB,aAAY,WAAYv4C,KAE7D,OADA4L,EAAEysC,iBACKzsC,CACT,CAGA,qBAAOmwC,CAAe7B,GACpB,OAAOzD,EAAMvtC,KAAKoI,SAASolC,EAAuBwD,GACpD,CAQAM,cAAAA,CAAeD,GACbrhD,KAAK84F,aAAez3C,EACpB23C,EAAiB5xE,OAAOpnB,KAC1B,CAGAm/C,cAAAA,GACE,GAAIn/C,KAAK4nD,MAAO,CAId,GAAIxL,EAAMoK,qBAAuB1J,EAAG8K,IAAI5nD,KAAK0nD,IAAK,OAClD,MAAM,IAAI7jD,MAAM,kBAClB,CAEA,MAAM,EAAEmN,EAAC,EAAEC,GAAMjR,KAAK89C,WAEtB,IAAKhB,EAAGx4B,QAAQtT,KAAO8rC,EAAGx4B,QAAQrT,GAAI,MAAM,IAAIpN,MAAM,4BACtD,MAAMw1B,EAAOyjB,EAAG7O,IAAIh9B,GACdowB,EAAQoc,EAAoBzsC,GAClC,IAAK8rC,EAAGyH,IAAIlrB,EAAMgI,GAAQ,MAAM,IAAIx9B,MAAM,qCAC1C,IAAK7D,KAAKsmD,gBAAiB,MAAM,IAAIziD,MAAM,yCAC7C,CACAo6C,QAAAA,GACE,MAAM,EAAEhtC,GAAMjR,KAAK89C,WACnB,GAAIhB,EAAGhrC,MAAO,OAAQgrC,EAAGhrC,MAAMb,GAC/B,MAAM,IAAIpN,MAAM,8BAClB,CAKA0c,MAAAA,CAAO8mC,GACLD,EAAeC,GACf,MAAQI,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,MAC3BynD,GAAIqB,EAAIpB,GAAIqB,EAAIpB,GAAIqB,GAAO3B,EAC7B4B,EAAKnM,EAAGyH,IAAIzH,EAAG9b,IAAI2nB,EAAIK,GAAKlM,EAAG9b,IAAI8nB,EAAID,IACvCK,EAAKpM,EAAGyH,IAAIzH,EAAG9b,IAAI4nB,EAAII,GAAKlM,EAAG9b,IAAI+nB,EAAIF,IAC7C,OAAOI,GAAMC,CACf,CAKAC,MAAAA,GACE,OAAO,IAAI5L,EAAMv9C,KAAKynD,GAAI3K,EAAGnY,IAAI3kC,KAAK0nD,IAAK1nD,KAAK2nD,GAClD,CAMAyB,MAAAA,GACE,MAAM,EAAE34C,EAAC,EAAES,GAAMkrC,EACX1T,EAAKoU,EAAG9b,IAAI9vB,EAAGg1C,IACbuB,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,KACnC,IAAIqpD,EAAKvM,EAAG0H,KAAM8E,EAAKxM,EAAG0H,KAAM+E,EAAKzM,EAAG0H,KACpCgF,EAAK1M,EAAG9b,IAAI2nB,EAAIA,GAChBc,EAAK3M,EAAG9b,IAAI4nB,EAAIA,GAChBc,EAAK5M,EAAG9b,IAAI6nB,EAAIA,GAChBc,EAAK7M,EAAG9b,IAAI2nB,EAAIC,GA4BpB,OA3BAe,EAAK7M,EAAGv6C,IAAIonD,EAAIA,GAChBJ,EAAKzM,EAAG9b,IAAI2nB,EAAIE,GAChBU,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GAChBF,EAAKvM,EAAG9b,IAAIvwB,EAAG84C,GACfD,EAAKxM,EAAG9b,IAAI0H,EAAIghB,GAChBJ,EAAKxM,EAAGv6C,IAAI8mD,EAAIC,GAChBD,EAAKvM,EAAG/W,IAAI0jB,EAAIH,GAChBA,EAAKxM,EAAGv6C,IAAIknD,EAAIH,GAChBA,EAAKxM,EAAG9b,IAAIqoB,EAAIC,GAChBD,EAAKvM,EAAG9b,IAAI2oB,EAAIN,GAChBE,EAAKzM,EAAG9b,IAAI0H,EAAI6gB,GAChBG,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfC,EAAK7M,EAAG/W,IAAIyjB,EAAIE,GAChBC,EAAK7M,EAAG9b,IAAIvwB,EAAGk5C,GACfA,EAAK7M,EAAGv6C,IAAIonD,EAAIJ,GAChBA,EAAKzM,EAAGv6C,IAAIinD,EAAIA,GAChBA,EAAK1M,EAAGv6C,IAAIgnD,EAAIC,GAChBA,EAAK1M,EAAGv6C,IAAIinD,EAAIE,GAChBF,EAAK1M,EAAG9b,IAAIwoB,EAAIG,GAChBL,EAAKxM,EAAGv6C,IAAI+mD,EAAIE,GAChBE,EAAK5M,EAAG9b,IAAI4nB,EAAIC,GAChBa,EAAK5M,EAAGv6C,IAAImnD,EAAIA,GAChBF,EAAK1M,EAAG9b,IAAI0oB,EAAIC,GAChBN,EAAKvM,EAAG/W,IAAIsjB,EAAIG,GAChBD,EAAKzM,EAAG9b,IAAI0oB,EAAID,GAChBF,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GAChBA,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GACT,IAAIhM,EAAM8L,EAAIC,EAAIC,EAC3B,CAMAhnD,GAAAA,CAAI8kD,GACFD,EAAeC,GACf,MAAQI,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,MAC3BynD,GAAIqB,EAAIpB,GAAIqB,EAAIpB,GAAIqB,GAAO3B,EACnC,IAAIgC,EAAKvM,EAAG0H,KAAM8E,EAAKxM,EAAG0H,KAAM+E,EAAKzM,EAAG0H,KACxC,MAAM/zC,EAAI2rC,EAAM3rC,EACVi4B,EAAKoU,EAAG9b,IAAIob,EAAMlrC,EAAGg1C,GAC3B,IAAIsD,EAAK1M,EAAG9b,IAAI2nB,EAAIG,GAChBW,EAAK3M,EAAG9b,IAAI4nB,EAAIG,GAChBW,EAAK5M,EAAG9b,IAAI6nB,EAAIG,GAChBW,EAAK7M,EAAGv6C,IAAIomD,EAAIC,GAChBgB,EAAK9M,EAAGv6C,IAAIumD,EAAIC,GACpBY,EAAK7M,EAAG9b,IAAI2oB,EAAIC,GAChBA,EAAK9M,EAAGv6C,IAAIinD,EAAIC,GAChBE,EAAK7M,EAAG/W,IAAI4jB,EAAIC,GAChBA,EAAK9M,EAAGv6C,IAAIomD,EAAIE,GAChB,IAAIgB,EAAK/M,EAAGv6C,IAAIumD,EAAIE,GA+BpB,OA9BAY,EAAK9M,EAAG9b,IAAI4oB,EAAIC,GAChBA,EAAK/M,EAAGv6C,IAAIinD,EAAIE,GAChBE,EAAK9M,EAAG/W,IAAI6jB,EAAIC,GAChBA,EAAK/M,EAAGv6C,IAAIqmD,EAAIC,GAChBQ,EAAKvM,EAAGv6C,IAAIwmD,EAAIC,GAChBa,EAAK/M,EAAG9b,IAAI6oB,EAAIR,GAChBA,EAAKvM,EAAGv6C,IAAIknD,EAAIC,GAChBG,EAAK/M,EAAG/W,IAAI8jB,EAAIR,GAChBE,EAAKzM,EAAG9b,IAAIvwB,EAAGm5C,GACfP,EAAKvM,EAAG9b,IAAI0H,EAAIghB,GAChBH,EAAKzM,EAAGv6C,IAAI8mD,EAAIE,GAChBF,EAAKvM,EAAG/W,IAAI0jB,EAAIF,GAChBA,EAAKzM,EAAGv6C,IAAIknD,EAAIF,GAChBD,EAAKxM,EAAG9b,IAAIqoB,EAAIE,GAChBE,EAAK3M,EAAGv6C,IAAIinD,EAAIA,GAChBC,EAAK3M,EAAGv6C,IAAIknD,EAAID,GAChBE,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfE,EAAK9M,EAAG9b,IAAI0H,EAAIkhB,GAChBH,EAAK3M,EAAGv6C,IAAIknD,EAAIC,GAChBA,EAAK5M,EAAG/W,IAAIyjB,EAAIE,GAChBA,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfE,EAAK9M,EAAGv6C,IAAIqnD,EAAIF,GAChBF,EAAK1M,EAAG9b,IAAIyoB,EAAIG,GAChBN,EAAKxM,EAAGv6C,IAAI+mD,EAAIE,GAChBA,EAAK1M,EAAG9b,IAAI6oB,EAAID,GAChBP,EAAKvM,EAAG9b,IAAI2oB,EAAIN,GAChBA,EAAKvM,EAAG/W,IAAIsjB,EAAIG,GAChBA,EAAK1M,EAAG9b,IAAI2oB,EAAIF,GAChBF,EAAKzM,EAAG9b,IAAI6oB,EAAIN,GAChBA,EAAKzM,EAAGv6C,IAAIgnD,EAAIC,GACT,IAAIjM,EAAM8L,EAAIC,EAAIC,EAC3B,CAEAvwC,QAAAA,CAASquC,GACP,OAAOrnD,KAAKuC,IAAI8kD,EAAM8B,SACxB,CAEQvB,GAAAA,GACN,OAAO5nD,KAAKugB,OAAOg9B,EAAMiH,KAC3B,CACQsF,IAAAA,CAAKv5C,GACX,OAAOk4C,EAAKsB,WAAW/pD,KAAMg5F,EAAkBzoF,GAAIi+M,IACjD,MAAMpmK,EAAQtL,EAAGuL,YAAYmmK,EAAK9lN,KAAK6N,GAAMA,EAAEoxC,MAC/C,OAAO6mK,EAAK9lN,KAAI,CAAC6N,EAAGvL,IAAMuL,EAAEunC,SAASsK,EAAMp9C,MAAKtC,IAAI60C,EAAM0K,WAAW,GAEzE,CAOA+B,cAAAA,CAAez5C,GACb,MAAM25C,EAAI3M,EAAMiH,KAChB,GAAIj0C,IAAMsxC,EAAK,OAAOqI,EAEtB,GADAqkK,EAASh+M,GACLA,IAAMguC,EAAK,OAAOv+C,KACtB,MAAM,KAAEymD,GAASrK,EACjB,IAAKqK,EAAM,OAAOgC,EAAKgmK,aAAazuN,KAAMuQ,GAG1C,IAAI,MAAE85C,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYp2C,GAC5Ck6C,EAAMP,EACNQ,EAAMR,EACN30C,EAAWvV,KACf,KAAOsqD,EAAKzI,GAAO2I,EAAK3I,GAClByI,EAAK/L,IAAKkM,EAAMA,EAAIloD,IAAIgT,IACxBi1C,EAAKjM,IAAKmM,EAAMA,EAAInoD,IAAIgT,IAC5BA,EAAIA,EAAE6zC,SACNkB,IAAO/L,EACPiM,IAAOjM,EAKT,OAHI8L,IAAOI,EAAMA,EAAItB,UACjBoB,IAAOG,EAAMA,EAAIvB,UACrBuB,EAAM,IAAInN,EAAMT,EAAG9b,IAAI0pB,EAAIjD,GAAIhB,EAAKC,MAAOgE,EAAIhD,GAAIgD,EAAI/C,IAChD8C,EAAIloD,IAAImoD,EACjB,CAWAtyC,QAAAA,CAASuyC,GACP4jK,EAAS5jK,GACT,IACI/M,EAAcgN,EADdr6C,EAAIo6C,EAER,MAAM,KAAElE,GAASrK,EACjB,GAAIqK,EAAM,CACR,MAAM,MAAE4D,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYp2C,GAClD,IAAMgG,EAAGk0C,EAAKI,EAAGC,GAAQ9qD,KAAK8pD,KAAKQ,IAC7B/zC,EAAGm0C,EAAKG,EAAGE,GAAQ/qD,KAAK8pD,KAAKU,GACnCC,EAAMhC,EAAKuC,gBAAgBX,EAAOI,GAClCC,EAAMjC,EAAKuC,gBAAgBT,EAAOG,GAClCA,EAAM,IAAInN,EAAMT,EAAG9b,IAAI0pB,EAAIjD,GAAIhB,EAAKC,MAAOgE,EAAIhD,GAAIgD,EAAI/C,IACvD/J,EAAQ6M,EAAIloD,IAAImoD,GAChBE,EAAOE,EAAIvoD,IAAIwoD,EACjB,KAAO,CACL,MAAM,EAAEx0C,EAAC,EAAEs0C,GAAM7qD,KAAK8pD,KAAKv5C,GAC3BqtC,EAAQrnC,EACRq0C,EAAOC,CACT,CAEA,OAAOtN,EAAM2K,WAAW,CAACtK,EAAOgN,IAAO,EACzC,CAQAtK,oBAAAA,CAAqBD,EAAU5vC,EAAWS,GACxC,MAAM+5C,EAAI1N,EAAMvtC,KACVgxB,EAAMA,CACVtuB,EACAjC,IACIA,IAAMoxC,GAAOpxC,IAAM8tC,GAAQ7rC,EAAE6N,OAAO0qC,GAA2Bv4C,EAAE0F,SAAS3H,GAAjCiC,EAAEs3C,eAAev5C,GAC1DgH,EAAMupB,EAAIhhC,KAAMyQ,GAAGlO,IAAIy+B,EAAIqf,EAAGnvC,IACpC,OAAOuG,EAAImwC,WAAQ9lD,EAAY2V,CACjC,CAKAqmC,QAAAA,CAAS0J,GACP,MAAQC,GAAIz2C,EAAG02C,GAAIz2C,EAAG02C,GAAIh3C,GAAM3Q,KAC1B4nD,EAAM5nD,KAAK4nD,MAGP,MAANJ,IAAYA,EAAKI,EAAM9K,EAAGlqC,IAAMkqC,EAAG5H,IAAIvkC,IAC3C,MAAMk3C,EAAK/K,EAAG9b,IAAIhwB,EAAGw2C,GACfM,EAAKhL,EAAG9b,IAAI/vB,EAAGu2C,GACfO,EAAKjL,EAAG9b,IAAIrwB,EAAG62C,GACrB,GAAII,EAAK,MAAO,CAAE52C,EAAG8rC,EAAG0H,KAAMvzC,EAAG6rC,EAAG0H,MACpC,IAAK1H,EAAGyH,IAAIwD,EAAIjL,EAAGlqC,KAAM,MAAM,IAAI/O,MAAM,oBACzC,MAAO,CAAEmN,EAAG62C,EAAI52C,EAAG62C,EACrB,CACAxB,aAAAA,GACE,MAAQ90B,EAAG05B,EAAQ,cAAE5E,GAAkBlK,EACvC,GAAI8O,IAAa3M,EAAK,OAAO,EAC7B,GAAI+H,EAAe,OAAOA,EAAc/I,EAAOv9C,MAC/C,MAAM,IAAI6D,MAAM,+DAClB,CACA0iD,aAAAA,GACE,MAAQ/0B,EAAG05B,EAAQ,cAAE3E,GAAkBnK,EACvC,OAAI8O,IAAa3M,EAAYv+C,KACzBumD,EAAsBA,EAAchJ,EAAOv9C,MACxCA,KAAKgqD,eAAe5N,EAAM5qB,EACnC,CAEAsxB,UAAAA,GAA8B,IAAnBjF,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAErB,OADA5B,KAAKm/C,iBACEzuB,EAAQ6sB,EAAOv9C,KAAM69C,EAC9B,CAEAsN,KAAAA,GAAyB,IAAnBtN,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAChB,OAAO46C,EAAGoC,WAAW5+C,KAAK8iD,WAAWjF,GACvC,EAlVgBN,EAAAvtC,KAAO,IAAIutC,EAAMnB,EAAM8K,GAAI9K,EAAM6K,GAAInK,EAAGlqC,KACxC2qC,EAAAiH,KAAO,IAAIjH,EAAMT,EAAG0H,KAAM1H,EAAGlqC,IAAKkqC,EAAG0H,MAmVvD,MAAM4G,EAAQhP,EAAMqF,WACdgH,GAAO,EAAAnM,EAAAwN,MAAKvM,EAAOnB,EAAMqK,KAAOr9C,KAAKwG,KAAKw7C,EAAQ,GAAKA,GAE7D,MAAO,CACLhP,QACAkB,gBAAiBC,EACjBC,yBACAC,sBACAC,qBAEJ,CAofA,SAAgBkG,EAAkB9G,EAAmBgH,GAEnD,MAAM1qC,EAAI0jC,EAAG0B,MACb,IAAIhtC,EAAIqwC,EACR,IAAK,IAAI3b,EAAI9sB,EAAImlC,EAAKrY,EAAI+f,IAAQpE,EAAK3b,GAAK+f,EAAKz0C,GAAK+sC,EACtD,MAAM8M,EAAK75C,EAGL85C,EAAerF,GAAQoF,EAAK9M,EAAMA,EAClCgN,EAAaD,EAAerF,EAC5BuF,GAAMpyC,EAAImlC,GAAOgN,EACjBE,GAAMD,EAAKjN,GAAO0H,EAClByF,EAAKH,EAAahN,EAClBoN,EAAKL,EACLM,EAAK9O,EAAG5kC,IAAI4rC,EAAG0H,GACfK,EAAK/O,EAAG5kC,IAAI4rC,GAAI0H,EAAKjN,GAAO0H,GAClC,IAAIlC,EAAYA,CAACxO,EAAMthC,KACrB,IAAI+vC,EAAM4H,EACN3H,EAAMnH,EAAG5kC,IAAIjE,EAAGy3C,GAChBxH,EAAMpH,EAAG7O,IAAIgW,GACjBC,EAAMpH,EAAG9b,IAAIkjB,EAAKjwC,GAClB,IAAImwC,EAAMtH,EAAG9b,IAAIuU,EAAG2O,GACpBE,EAAMtH,EAAG5kC,IAAIksC,EAAKqH,GAClBrH,EAAMtH,EAAG9b,IAAIojB,EAAKH,GAClBA,EAAMnH,EAAG9b,IAAIojB,EAAKnwC,GAClBiwC,EAAMpH,EAAG9b,IAAIojB,EAAK7O,GAClB,IAAI4O,EAAMrH,EAAG9b,IAAIkjB,EAAKD,GACtBG,EAAMtH,EAAG5kC,IAAIisC,EAAKwH,GAClB,IAAIG,EAAOhP,EAAGyH,IAAIH,EAAKtH,EAAGlqC,KAC1BqxC,EAAMnH,EAAG9b,IAAIkjB,EAAK2H,GAClBzH,EAAMtH,EAAG9b,IAAImjB,EAAKH,GAClBE,EAAMpH,EAAGwH,KAAKL,EAAKC,EAAK4H,GACxB3H,EAAMrH,EAAGwH,KAAKF,EAAKD,EAAK2H,GAExB,IAAK,IAAI9gD,EAAIqgD,EAAIrgD,EAAIuzC,EAAKvzC,IAAK,CAC7B,IAAIo5C,EAAMp5C,EAAIi7C,EACd7B,EAAM6B,GAAQ7B,EAAM7F,EACpB,IAAIwN,EAAOjP,EAAG5kC,IAAIisC,EAAKC,GACvB,MAAMK,EAAK3H,EAAGyH,IAAIwH,EAAMjP,EAAGlqC,KAC3BqxC,EAAMnH,EAAG9b,IAAIkjB,EAAKF,GAClBA,EAAMlH,EAAG9b,IAAIgjB,EAAKA,GAClB+H,EAAOjP,EAAG9b,IAAImjB,EAAKH,GACnBE,EAAMpH,EAAGwH,KAAKL,EAAKC,EAAKO,GACxBN,EAAMrH,EAAGwH,KAAKyH,EAAM5H,EAAKM,EAC3B,CACA,MAAO,CAAEngC,QAASwnC,EAAM5oD,MAAOghD,EAAK,EAEtC,GAAIpH,EAAG0B,MAAQ2H,IAAQD,EAAK,CAE1B,MAAMmF,GAAMvO,EAAG0B,MAAQ0H,GAAOC,EACxBqF,EAAK1O,EAAGv/B,KAAKu/B,EAAGnY,IAAImf,IAC1BC,EAAYA,CAACxO,EAAMthC,KACjB,IAAI+vC,EAAMlH,EAAG7O,IAAIh6B,GACjB,MAAMgwC,EAAMnH,EAAG9b,IAAIuU,EAAGthC,GACtB+vC,EAAMlH,EAAG9b,IAAIgjB,EAAKC,GAClB,IAAI+H,EAAKlP,EAAG5kC,IAAI8rC,EAAKqH,GACrBW,EAAKlP,EAAG9b,IAAIgrB,EAAI/H,GAChB,MAAMxF,EAAK3B,EAAG9b,IAAIgrB,EAAIR,GAChBtH,EAAMpH,EAAG9b,IAAI8b,EAAG7O,IAAI+d,GAAK/3C,GACzB63C,EAAOhP,EAAGyH,IAAIL,EAAK3O,GAEzB,MAAO,CAAEjxB,QAASwnC,EAAM5oD,MADhB45C,EAAGwH,KAAK7F,EAAIuN,EAAIF,GACU,CAEtC,CAGA,OAAO/H,CACT,gCCjqCA/gD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ8nL,kBAAe,EACvB,MAAM/mL,EAAYC,EAAQ,OAkF1BhB,EAAQ8nL,aAjFR,MACI35K,WAAAA,CAAYuuE,EAAYhC,GAA0F,IAApFlwD,EAAY1oB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAIs6N,EAAat6N,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAG4E,EAAO5E,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAEK,EAAOP,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAAEwrQ,EAA0B1rQ,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC5G9B,KAAKstQ,4BAA6B,EAClCttQ,KAAKw8E,WAAaA,EAClBx8E,KAAKw6E,KAAOA,EACZx6E,KAAKsqB,aAAengB,MAAMi3B,QAAQ9W,GAAgBA,EAAe,CAACA,GAClEtqB,KAAKk8N,cAAgBA,EACrBl8N,KAAKwG,QAAUA,EACfxG,KAAKmC,QAAUA,GAAW,GACQ,MAA9BmrQ,IACAttQ,KAAKstQ,2BAA6BA,EAC1C,CACAC,WAAAA,GACI,MAAMvzC,EAAkB,GAExB,OADAh6N,KAAKsqB,aAAavb,SAAQsb,GAAMA,EAAGjL,KAAKrQ,SAAQ/E,GAAOA,EAAIgW,YAAcg6M,EAAgB1yN,KAAK0C,EAAI8V,YAC3F9f,KAAKw6E,KAAKqC,KAAKC,WAAWk9I,EACrC,CACAj9I,KAAAA,CAAM19D,EAAa68M,EAAe/5N,GAC9BnC,KAAKsqB,aAAahjB,KAAK+X,GACG,MAAtBrf,KAAKk8N,cACLl8N,KAAKk8N,cAAgBA,EAGA,MAAjBA,IACAl8N,KAAKk8N,eAAiBA,EAElC,CACA35N,GAAAA,CAAIy6E,GACA,OAAOh9E,KAAKi9E,UAAUD,EAC1B,CACAC,SAAAA,CAAUD,GAA0C,IAAlCp8C,EAAKh/B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG5B,KAAKsqB,aAAazoB,OACxC,GAAIm7E,EAAOswL,2BAA4B,CACnC,GAAIttQ,KAAKsqB,aAAazoB,OAAS,EAC3B,MAAM,IAAIgC,MAAM,uFACpB7D,KAAKstQ,4BAA6B,CACtC,CACA,GAAIttQ,KAAKstQ,4BAA8BttQ,KAAKsqB,aAAazoB,OAAS,GAAe,IAAV++B,EACnE,MAAM,IAAI/8B,MAAM,kEACpB,IAAKm5E,EAAOR,WAAWj8D,OAAOvgB,KAAKw8E,YAC/B,MAAM,IAAI34E,MAAM,yCASpB,OAR0B,MAAtB7D,KAAKk8N,eAAiD,MAAxBl/I,EAAOk/I,gBACrCl8N,KAAKk8N,cAAgBl/I,EAAOk/I,eACN,MAAtBl8N,KAAKk8N,eAAiD,MAAxBl/I,EAAOk/I,gBACrCl8N,KAAKk8N,eAAiBl/I,EAAOk/I,eACjCl8N,KAAKsqB,aAAa9S,OAAOopB,EAAO,KAAMo8C,EAAO1yD,cAC7CtqB,KAAKmC,QAAQmF,QAAQ01E,EAAO76E,SACR,MAAhBnC,KAAKwG,UACLxG,KAAKwG,QAAUw2E,EAAOx2E,SACnBxG,IACX,CACA,QAAM6G,CAAGL,EAASw7E,GACd,MAAMn7E,EAAK,IAAIhG,EAAUyB,YACzBuE,EAAG4jB,SAAWzqB,KAAKw8E,WACJ,MAAXh2E,IACAA,EAAUxG,KAAKwG,SACJ,MAAXA,IACAA,QAAgBxG,KAAKutQ,eACzB,IAAIjjP,EAAetqB,KAAKsqB,aAYxB,OAXIA,EAAazoB,OAAS,GAAK7B,KAAKstQ,6BAChCzmQ,EAAGtE,IAAIvC,KAAKsqB,aAAa,IACzBA,EAAetqB,KAAKsqB,aAAa5c,MAAM,IAE3C1N,KAAKw6E,KAAKqC,KAAKo/I,kBAAkBp1N,EAAI7G,KAAKk8N,cAAe11N,GACzD8jB,EAAavb,SAAQsb,GAAMxjB,EAAGtE,IAAI8nB,KAClCrqB,KAAKw6E,KAAKqC,KAAK2/I,gBAAgB31N,EAAI7G,KAAKk8N,cAAe11N,GAC1C,MAATw7E,IACAn7E,EAAG0gP,gBAAkBvlK,EAAMC,UAC3Bp7E,EAAGmkQ,qBAAuBhpL,EAAMisG,YAAcjuL,KAAKw6E,KAAKmnD,kBAErD,CACH96H,KACA1E,QAASnC,KAAKmC,QAEtB,CACA,cAAMs7E,CAASC,EAAKl3E,EAASw7E,GACzBtE,EAAIp2E,WAAWtH,KAAK6G,GAAGL,EAASw7E,GACpC,CACArE,SAAAA,GACI,OAAO39E,KAAKsqB,aAAazoB,MAC7B,iCClFJmB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0tQ,kBAAe,EACvB,MAAMroQ,EAAUrE,EAAQ,OAClB2sQ,EAAyB3sQ,EAAQ,OACjCioF,EAAiBjoF,EAAQ,OACzB4sQ,EAAsB5sQ,EAAQ,OAC9B22J,EAAmB32J,EAAQ,OAC3Bs+L,EAAmBt+L,EAAQ,OAC3B6sQ,EAAuB7sQ,EAAQ,OAC/B8sQ,EAAqB9sQ,EAAQ,OAC7B+sQ,EAAmB/sQ,EAAQ,OAiBjChB,EAAQ0tQ,aAhBR,MACIv/P,WAAAA,CAAYsU,EAASyQ,EAAUzJ,GAA6E,IAAhEy5E,EAAkBphG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAImnF,EAAeS,aAAax2D,GAC7FhzB,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAWtF,KAAKiO,YAAY2D,KAAO,MAC7D5R,KAAKs9E,gBAAkB/6D,EACvBviB,KAAKgzB,SAAWA,EAChBhzB,KAAKupB,YAAcA,EACnBvpB,KAAK68E,KAAOmmB,EACZhjG,KAAKomG,OAAS,IAAIqxD,EAAiBa,eAAet4J,MAClDA,KAAK4nG,aAAe,IAAI6lK,EAAuBnrJ,qBAAqBtiH,MACpEA,KAAK4mG,UAAY,IAAI8mK,EAAoBl9F,kBAAkBxwK,MAC3DA,KAAKolG,WAAa,IAAIuoK,EAAqBtrL,mBAAmBriF,MAC9DA,KAAK62G,OAAS,IAAIuoF,EAAiBC,eAAer/L,MAClDA,KAAK6iH,SAAW,IAAI+qJ,EAAmBE,iBAAiB9tQ,MACxDA,KAAK4hI,OAAS,IAAIisI,EAAiBhkF,eAAe7pL,KACtD,4gBC1BJwP,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,ibCDA,MAAAe,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAk0F,EAAAl0F,EAAA,OACAC,EAAAD,EAAA,KAmBAhB,EAAAA,gBAAA,SACIoB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAG4B,IAF5BE,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,SAAAC,IAAAF,UAAA,IAAAA,UAAA,IAAGZ,EAAA2xB,0DAEZ,MAAOzwB,EAAgBC,IAAW,EAAApB,EAAAqB,YAAWb,EAAOI,GAE9CU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAyyF,EAAA0B,kCACIt1F,EACAC,EACAC,EACAY,EACAV,EACAC,EACAE,EACAK,IAIR,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,uiBCnDA,MAAA+wB,EAAAhyB,EAAA,OAEAiyB,EAAAjyB,EAAA,OASMitQ,EAAgCA,CACpC/6O,EACAg7O,KAEA,MAAMC,EAAsBC,KACrBl7O,EAASk7O,MAKVF,IAAyBA,EAAqB1hP,IAAI4hP,IAOlDC,EAA+B,CACnCr3P,KAAMm3P,EAAmB,QACzBpgD,QAASogD,EAAmB,WAC5B9qL,YAAa8qL,EAAmB,eAChCx1F,gBAAiBw1F,EAAmB,mBACpCr6O,mBAAoBq6O,EAAmB,sBACvCtG,kBAAmBsG,EAAmB,qBACtCt1F,yBAA0Bs1F,EAAmB,4BAC7CG,yBAA0BH,EAAmB,6BAG/C,OAAOjrQ,OAAO+sJ,QAAQo+G,GAAellQ,QAAO,CAAC8hB,EAAG5L,KAAyB,IAAtB+uP,EAAYhrQ,GAAMic,EACnE,OAAIjc,EAAc,IAAI6nB,EAAKmjP,GACpBnjP,CAAG,GACT,GAAmB,EAGXjrB,EAAAA,gBAAkB,UAC7B,MAAMkzB,QAAiB,EAAAD,EAAAE,oBAAmBrR,EAAQsR,aAE5CO,GAAU,EAAAX,EAAAY,sBAAqB9R,EAAQwQ,SAE7C,GAAIY,EAASq7O,gBACX,IACE,MAAM16O,QAAiBX,EAASq7O,gBAAgB56O,GAEhD7R,EAAQiS,WAAWk6O,EAA8B/6O,EAAU,IAAIpI,IAAI+I,KACnE,MAAO9Q,GACP+F,QAAQ/F,MAAM,8CAA+CA,GAIjE,IACE,MAAMyrP,EAAuBP,EAA8B/6O,GAC3DpR,EAAQiS,WAAWy6O,GACnB,MAAOzrP,GACP+F,QAAQ/F,MAAM,8CAA+CA,GAC7DjB,EAAQkS,eAIZtkB,EAAA1O,EAAA,OAAAhB,kFCRAA,EAAAA,mBAAAyuQ,EAmCAzuQ,EAAAA,mBAAA0uQ,EAqCA1uQ,EAAAA,cAAA2uQ,EA8CA3uQ,EAAAA,WAAA,SAAmD2vJ,EAAU/mJ,GAE3D,MAAMgmQ,EAAQhmQ,EAAIA,KAAKsC,GAAMb,MAAM3F,KAAKwG,GAAG4C,YAC3C,MAAO,CAACoD,EAAMC,KACZ,MAAO09P,EAAMC,EAAMC,EAAMC,GAAQJ,EAAMhmQ,KAAKiG,GAC1CA,EAAI1F,QAAO,CAAC8hB,EAAK/f,IAAMykJ,EAAMltJ,IAAIktJ,EAAMzuH,IAAIjW,EAAK/Z,GAAIhG,OAItD,OAFAgG,EAAIy+I,EAAMl9I,IAAIo8P,EAAMC,GACpB39P,EAAIw+I,EAAMzuH,IAAI/vB,EAAGw+I,EAAMl9I,IAAIs8P,EAAMC,IAC1B,CAAE99P,EAAGA,EAAGC,EAAGA,EAAG,CAEzB,EAuBAnR,EAAAA,aAAA,SACEy9C,EACAwxN,EACAx+G,GAMA,GAA0B,oBAAfw+G,EAA2B,MAAM,IAAIlrQ,MAAM,gCACtD,MAAO,CAGLohK,WAAAA,CAAYxkK,EAAiBmhB,GAC3B,MAAM2zB,EAAIk5N,EAAchuQ,EAAK,EAAG,IAAK8vJ,EAAKuU,IAAKvU,EAAIuU,OAAQljJ,IACrDotP,EAAKzxN,EAAM0K,WAAW8mN,EAAWx5N,EAAE,KACnC4K,EAAK5C,EAAM0K,WAAW8mN,EAAWx5N,EAAE,KACnC7iC,EAAIs8P,EAAGzsQ,IAAI49C,GAAIoG,gBAErB,OADA7zC,EAAEysC,iBACKzsC,CACT,EAIAwyJ,aAAAA,CAAczkK,EAAiBmhB,GAC7B,MAAM2zB,EAAIk5N,EAAchuQ,EAAK,EAAG,IAAK8vJ,EAAKuU,IAAKvU,EAAIwU,aAAcnjJ,IAC3DlP,EAAI6qC,EAAM0K,WAAW8mN,EAAWx5N,EAAE,KAAKgR,gBAE7C,OADA7zC,EAAEysC,iBACKzsC,CACT,EAEAq8P,UAAAA,CAAWxmN,GACT,IAAKp+C,MAAMi3B,QAAQmnB,GAAU,MAAM,IAAI1kD,MAAM,yCAC7C,IAAK,MAAMmH,KAAKu9C,EACd,GAAiB,kBAANv9C,EAAgB,MAAM,IAAInH,MAAM,yCAC7C,MAAM6O,EAAI6qC,EAAM0K,WAAW8mN,EAAWxmN,IAAUhC,gBAEhD,OADA7zC,EAAEysC,iBACKzsC,CACT,EAEJ,EAvPA,MAAA0qC,EAAAt8C,EAAA,OAEA2uB,EAAA3uB,EAAA,OAsBMmuQ,EAAQx/O,EAAA4uB,gBAGd,SAAS6wN,EAAMhsQ,EAAerB,GAG5B,GAFAstQ,EAAKjsQ,GACLisQ,EAAKttQ,GACDqB,EAAQ,GAAKA,GAAS,GAAM,EAAIrB,EAAS,MAAM,IAAIgC,MAAM,wBAA0BX,GACvF,MAAM0uB,EAAMznB,MAAM3F,KAAK,CAAE3C,WAAUovB,KAAK,GACxC,IAAK,IAAIjmB,EAAInJ,EAAS,EAAGmJ,GAAK,EAAGA,IAC/B4mB,EAAI5mB,GAAa,IAAR9H,EACTA,KAAW,EAEb,OAAO,IAAIotB,WAAWsB,EACxB,CAEA,SAASw9O,EAAO3+P,EAAeS,GAC7B,MAAM8G,EAAM,IAAIsY,WAAW7f,EAAE5O,QAC7B,IAAK,IAAImJ,EAAI,EAAGA,EAAIyF,EAAE5O,OAAQmJ,IAC5BgN,EAAIhN,GAAKyF,EAAEzF,GAAKkG,EAAElG,GAEpB,OAAOgN,CACT,CAEA,SAASm3P,EAAK57O,GACZ,IAAKpE,OAAOivC,cAAc7qC,GAAO,MAAM,IAAI1vB,MAAM,kBACnD,CAMA,SAAgB0qQ,EACd9tQ,EACAqkK,EACAuqG,EACAlkL,IAEA,EAAA17D,EAAA+1B,QAAO/kD,IACP,EAAAgvB,EAAA+1B,QAAOs/G,GACPqqG,EAAKE,GAEDvqG,EAAIjjK,OAAS,MAAKijK,EAAM35E,GAAE,EAAA17D,EAAAplB,cAAY,EAAAolB,EAAA0tF,aAAY,qBAAsB2nD,KAC5E,MAAQ/0I,UAAWu/O,EAAYx/O,SAAUy/O,GAAepkL,EAClDqkL,EAAMpmQ,KAAKwG,KAAKy/P,EAAaC,GACnC,GAAID,EAAa,OAASG,EAAM,IAAK,MAAM,IAAI3rQ,MAAM,0CACrD,MAAM4rQ,GAAY,EAAAhgP,EAAAplB,aAAYy6J,EAAKoqG,EAAMpqG,EAAIjjK,OAAQ,IAC/C6tQ,EAAQR,EAAM,EAAGK,GACjBI,EAAYT,EAAMG,EAAY,GAC9Bn+P,EAAI,IAAI/G,MAAkBqlQ,GAC1BI,EAAMzkL,GAAE,EAAA17D,EAAAplB,aAAYqlQ,EAAOjvQ,EAAKkvQ,EAAWT,EAAM,EAAG,GAAIO,IAC9Dv+P,EAAE,GAAKi6E,GAAE,EAAA17D,EAAAplB,aAAYulQ,EAAKV,EAAM,EAAG,GAAIO,IACvC,IAAK,IAAIzkQ,EAAI,EAAGA,GAAKwkQ,EAAKxkQ,IAAK,CAC7B,MAAMmK,EAAO,CAACi6P,EAAOQ,EAAK1+P,EAAElG,EAAI,IAAKkkQ,EAAMlkQ,EAAI,EAAG,GAAIykQ,GACtDv+P,EAAElG,GAAKmgF,GAAE,EAAA17D,EAAAplB,gBAAe8K,GAC1B,CAEA,OAD4B,EAAAsa,EAAAplB,gBAAe6G,GAChBxD,MAAM,EAAG2hQ,EACtC,CASA,SAAgBb,EACd/tQ,EACAqkK,EACAuqG,EACA/9P,EACA65E,GAOA,IALA,EAAA17D,EAAA+1B,QAAO/kD,IACP,EAAAgvB,EAAA+1B,QAAOs/G,GACPqqG,EAAKE,GAGDvqG,EAAIjjK,OAAS,IAAK,CACpB,MAAM4xL,EAAQrqL,KAAKwG,KAAM,EAAI0B,EAAK,GAClCwzJ,EAAM35E,EAAEzhF,OAAO,CAAE+pL,UAAS1vL,QAAO,EAAA0rB,EAAA0tF,aAAY,sBAAsBp5G,OAAO+gK,GAAK9gK,QACjF,CACA,GAAIqrQ,EAAa,OAASvqG,EAAIjjK,OAAS,IACrC,MAAM,IAAIgC,MAAM,0CAClB,OACEsnF,EAAEzhF,OAAO,CAAE+pL,MAAO47E,IACftrQ,OAAOtD,GACPsD,OAAOmrQ,EAAMG,EAAY,IAEzBtrQ,OAAO+gK,GACP/gK,OAAOmrQ,EAAMpqG,EAAIjjK,OAAQ,IACzBmC,QAEP,CAUA,SAAgByqQ,EAAchuQ,EAAiBymE,EAAetlD,IAC5D,EAAA6N,EAAAgtB,gBAAe76B,EAAS,CACtBkjJ,IAAK,qBACLvuJ,EAAG,SACH+B,EAAG,gBACHhH,EAAG,gBACH1M,KAAM,SAER,MAAM,EAAE2R,EAAC,EAAEjF,EAAC,EAAEgH,EAAC,KAAE1T,EAAI,OAAEogK,EAAQF,IAAK+qG,GAASjuP,GAC7C,EAAA6N,EAAA+1B,QAAO/kD,GACP0uQ,EAAKjoM,GACL,MAAM49F,EAAsB,kBAAT+qG,GAAoB,EAAApgP,EAAA0tF,aAAY0yJ,GAAQA,EACrDC,EAAQv5P,EAAE9R,SAAS,GAAG5C,OACtB0pF,EAAIniF,KAAKwG,MAAMkgQ,EAAQx+P,GAAK,GAC5By+P,EAAe7oM,EAAQ5uD,EAAIizE,EACjC,IAAIykL,EACJ,GAAe,QAAXhrG,EACFgrG,EAAMzB,EAAmB9tQ,EAAKqkK,EAAKirG,EAAcnrQ,QAC5C,GAAe,QAAXogK,EACTgrG,EAAMxB,EAAmB/tQ,EAAKqkK,EAAKirG,EAAcz+P,EAAG1M,OAC/C,IAAe,mBAAXogK,EAIT,MAAM,IAAInhK,MAAM,iCAFhBmsQ,EAAMvvQ,CAGR,CACA,MAAM80C,EAAI,IAAIprC,MAAM+8D,GACpB,IAAK,IAAIl8D,EAAI,EAAGA,EAAIk8D,EAAOl8D,IAAK,CAC9B,MAAMuG,EAAI,IAAIpH,MAAMmO,GACpB,IAAK,IAAI1H,EAAI,EAAGA,EAAI0H,EAAG1H,IAAK,CAC1B,MAAMq/P,EAAa1kL,GAAK36E,EAAI5F,EAAIsN,GAC1BgxM,EAAK0mD,EAAIp/O,SAASq/O,EAAYA,EAAa1kL,GACjDh6E,EAAEX,IAAK,EAAAwsC,EAAA/hC,KAAI4zP,EAAM3lD,GAAK/yM,EACxB,CACAg/B,EAAEvqC,GAAKuG,CACT,CACA,OAAOgkC,CACT,gCCzKA,IAAI26N,EAAwBpvQ,EAAAA,OAAAA,EAAiCovQ,sBAiB7DnwQ,EAAOD,QAAU,CACfs+K,iBAdF,SAA0B19K,EAAOkhB,EAASuuP,EAAWzxF,GACnD,IAAI0xF,EAJN,SAA2BxuP,EAAS88J,EAAUyxF,GAC5C,OAAgC,MAAzBvuP,EAAQmmJ,cAAwBnmJ,EAAQmmJ,cAAgB2W,EAAW98J,EAAQuuP,GAAa,IACjG,CAEYE,CAAkBzuP,EAAS88J,EAAUyxF,GAC/C,GAAW,MAAPC,EAAa,CACf,IAAM10P,SAAS00P,IAAQhnQ,KAAKC,MAAM+mQ,KAASA,GAAQA,EAAM,EAEvD,MAAM,IAAIF,EADCxxF,EAAWyxF,EAAY,gBACIC,GAExC,OAAOhnQ,KAAKC,MAAM+mQ,EACpB,CAGA,OAAO1vQ,EAAMi+K,WAAa,GAAK,KACjC,oBCRA,MAAMjpH,EAAgB50D,EAAAA,OAAAA,cAgBtBhB,EAAQwwQ,gBAAkB,SAA0B7jN,GAClD,GAAgB,IAAZA,EAAe,MAAO,GAE1B,MAAM8jN,EAAWnnQ,KAAKC,MAAMojD,EAAU,GAAK,EACrCviC,EAAOwrC,EAAcjJ,GACrB+jN,EAAqB,MAATtmP,EAAe,GAAmD,EAA9C9gB,KAAKwG,MAAMsa,EAAO,KAAO,EAAIqmP,EAAW,IACxEE,EAAY,CAACvmP,EAAO,GAE1B,IAAK,IAAIlf,EAAI,EAAGA,EAAIulQ,EAAW,EAAGvlQ,IAChCylQ,EAAUzlQ,GAAKylQ,EAAUzlQ,EAAI,GAAKwlQ,EAKpC,OAFAC,EAAUnpQ,KAAK,GAERmpQ,EAAU7iQ,SACnB,EAsBA9N,EAAQ61D,aAAe,SAAuBlJ,GAC5C,MAAMikN,EAAS,GACTvgP,EAAMrwB,EAAQwwQ,gBAAgB7jN,GAC9BkkN,EAAYxgP,EAAItuB,OAEtB,IAAK,IAAImJ,EAAI,EAAGA,EAAI2lQ,EAAW3lQ,IAC7B,IAAK,IAAI4F,EAAI,EAAGA,EAAI+/P,EAAW//P,IAElB,IAAN5F,GAAiB,IAAN4F,GACL,IAAN5F,GAAW4F,IAAM+/P,EAAY,GAC7B3lQ,IAAM2lQ,EAAY,GAAW,IAAN//P,GAI5B8/P,EAAOppQ,KAAK,CAAC6oB,EAAInlB,GAAImlB,EAAIvf,KAI7B,OAAO8/P,CACT,sBCjFA,WACI,aAEA,SAASrxH,EAASn8I,GACd,OAAQiI,SAASjI,KAAWA,CAChC,CAEA,SAAS0tQ,EAAUC,GACf,IAAKxxH,EAASwxH,EAAShvQ,QAAW,OAAO,EAEzC,IAAK,IAAImJ,EAAI,EAAGA,EAAI6lQ,EAAShvQ,OAAQmJ,IACjC,IAAKq0I,EAASwxH,EAAS7lQ,KAAO6lQ,EAAS7lQ,GAAK,GAAK6lQ,EAAS7lQ,GAAK,IAC3D,OAAO,EAIf,OAAO,CACX,CAEA,SAAS8lQ,EAAYj0J,EAAKtlG,GAGtB,GAAIslG,EAAIxsF,QAAuB,eAAbwsF,EAAIjrG,KAUlB,OARI2F,IAEIslG,EADAA,EAAInvG,MACEmvG,EAAInvG,QAEJvD,MAAMS,UAAU8C,MAAMoJ,KAAK+lG,IAIlCA,EAIX,GAAI1yG,MAAMi3B,QAAQy7E,GAAM,CACpB,IAAK+zJ,EAAU/zJ,GACX,MAAM,IAAIh5G,MAAM,iCAAmCg5G,GAGvD,OAAO,IAAIvsF,WAAWusF,EAC1B,CAGA,GAAIwiC,EAASxiC,EAAIh7G,SAAW+uQ,EAAU/zJ,GAClC,OAAO,IAAIvsF,WAAWusF,GAG1B,MAAM,IAAIh5G,MAAM,gCACpB,CAEA,SAASktQ,EAAYlvQ,GACjB,OAAO,IAAIyuB,WAAWzuB,EAC1B,CAEA,SAASmvQ,EAAUC,EAAaC,EAAa/uH,EAAagvH,EAAaC,GAChD,MAAfD,GAAoC,MAAbC,IAEnBH,EADAA,EAAYvjQ,MACEujQ,EAAYvjQ,MAAMyjQ,EAAaC,GAE/BjnQ,MAAMS,UAAU8C,MAAMoJ,KAAKm6P,EAAaE,EAAaC,IAG3EF,EAAY56P,IAAI26P,EAAa9uH,EACjC,CAIA,IAAIkvH,EA0CO,CACH3gP,QA1CJ,SAAiBtC,GACb,IAAIO,EAAS,GAAI3jB,EAAI,EAErB,IADAojB,EAAOkjP,UAAUljP,GACVpjB,EAAIojB,EAAKvsB,QAAQ,CACpB,IAAIuP,EAAIgd,EAAKtd,WAAW9F,KAGd,KAANoG,GACAud,EAAOrnB,KAAK6D,SAASijB,EAAKljB,OAAOF,EAAG,GAAI,KACxCA,GAAK,GAIL2jB,EAAOrnB,KAAK8J,EAEpB,CAEA,OAAO0/P,EAAYniP,EACvB,EAyBIuvB,UAvBJ,SAAmBC,GAGf,IAFA,IAAIxvB,EAAS,GAAI3jB,EAAI,EAEdA,EAAImzC,EAAMt8C,QAAQ,CACrB,IAAIuP,EAAI+sC,EAAMnzC,GAEVoG,EAAI,KACJud,EAAOrnB,KAAKuK,OAAO4oB,aAAarpB,IAChCpG,KACOoG,EAAI,KAAOA,EAAI,KACtBud,EAAOrnB,KAAKuK,OAAO4oB,cAAmB,GAAJrpB,IAAa,EAAqB,GAAf+sC,EAAMnzC,EAAI,KAC/DA,GAAK,IAEL2jB,EAAOrnB,KAAKuK,OAAO4oB,cAAmB,GAAJrpB,IAAa,IAAuB,GAAf+sC,EAAMnzC,EAAI,KAAc,EAAqB,GAAfmzC,EAAMnzC,EAAI,KAC/FA,GAAK,EAEb,CAEA,OAAO2jB,EAAOuuC,KAAK,GACvB,GAQAq0M,EAAc,WAWd,IAAIC,EAAM,mBAWV,MAAO,CACH9gP,QAtBJ,SAAiBtC,GAEb,IADA,IAAIO,EAAS,GACJ3jB,EAAI,EAAGA,EAAIojB,EAAKvsB,OAAQmJ,GAAK,EAClC2jB,EAAOrnB,KAAK6D,SAASijB,EAAKljB,OAAOF,EAAG,GAAI,KAG5C,OAAO2jB,CACX,EAgBIuvB,UAXJ,SAAmBC,GAEX,IADA,IAAIxvB,EAAS,GACJ3jB,EAAI,EAAGA,EAAImzC,EAAMt8C,OAAQmJ,IAAK,CACnC,IAAIiJ,EAAIkqC,EAAMnzC,GACd2jB,EAAOrnB,KAAKkqQ,GAAS,IAAJv9P,IAAa,GAAKu9P,EAAQ,GAAJv9P,GAC3C,CACA,OAAO0a,EAAOuuC,KAAK,GAC3B,EAMJ,CA1BkB,GA8Bdu0M,EAAiB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGtCC,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,KAGtLxlL,EAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CylL,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAG//CjtJ,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FitJ,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAG1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAG1/FhpN,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FgpN,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAE9/F,SAASC,EAAej0N,GAEpB,IADA,IAAIxvB,EAAS,GACJ3jB,EAAI,EAAGA,EAAImzC,EAAMt8C,OAAQmJ,GAAK,EACnC2jB,EAAOrnB,KACF62C,EAAMnzC,IAAU,GAChBmzC,EAAMnzC,EAAI,IAAM,GAChBmzC,EAAMnzC,EAAI,IAAO,EACjBmzC,EAAMnzC,EAAI,IAGnB,OAAO2jB,CACX,CAEA,IAAI0jP,EAAM,SAASroQ,GACf,KAAMhK,gBAAgBqyQ,GAClB,MAAMxuQ,MAAM,uCAGhBb,OAAOC,eAAejD,KAAM,MAAO,CAC/BkD,MAAO4tQ,EAAY9mQ,GAAK,KAG5BhK,KAAKsyQ,UACT,EAGAD,EAAIznQ,UAAU0nQ,SAAW,WAErB,IAAI/zM,EAASkzM,EAAezxQ,KAAKgK,IAAInI,QACrC,GAAc,MAAV08D,EACA,MAAM,IAAI16D,MAAM,iDAIpB7D,KAAKuyQ,IAAM,GAGXvyQ,KAAKwyQ,IAAM,GAEX,IAAK,IAAIxnQ,EAAI,EAAGA,GAAKuzD,EAAQvzD,IACzBhL,KAAKuyQ,IAAIjrQ,KAAK,CAAC,EAAG,EAAG,EAAG,IACxBtH,KAAKwyQ,IAAIlrQ,KAAK,CAAC,EAAG,EAAG,EAAG,IAG5B,IAOIs5B,EAPA6xO,EAA+B,GAAdl0M,EAAS,GAC1Bm0M,EAAK1yQ,KAAKgK,IAAInI,OAAS,EAGvB8wQ,EAAKP,EAAepyQ,KAAKgK,KAI7B,IAASgB,EAAI,EAAGA,EAAI0nQ,EAAI1nQ,IACpB41B,EAAQ51B,GAAK,EACbhL,KAAKuyQ,IAAI3xO,GAAO51B,EAAI,GAAK2nQ,EAAG3nQ,GAC5BhL,KAAKwyQ,IAAIj0M,EAAS39B,GAAO51B,EAAI,GAAK2nQ,EAAG3nQ,GAMzC,IAFA,IACY4nQ,EADRC,EAAc,EACdt2P,EAAIm2P,EACDn2P,EAAIk2P,GAAe,CAUtB,GATAG,EAAKD,EAAGD,EAAK,GACbC,EAAG,IAAQzmL,EAAG0mL,GAAM,GAAM,MAAS,GACxB1mL,EAAG0mL,GAAO,EAAK,MAAS,GACxB1mL,EAAe,IAAZ0mL,IAAsB,EACzB1mL,EAAG0mL,GAAM,GAAM,KACflB,EAAKmB,IAAgB,GAChCA,GAAe,EAGL,GAANH,EACA,IAAS1nQ,EAAI,EAAGA,EAAI0nQ,EAAI1nQ,IACpB2nQ,EAAG3nQ,IAAM2nQ,EAAG3nQ,EAAI,OAIjB,CACH,IAASA,EAAI,EAAGA,EAAK0nQ,EAAK,EAAI1nQ,IAC1B2nQ,EAAG3nQ,IAAM2nQ,EAAG3nQ,EAAI,GAEpB4nQ,EAAKD,EAAID,EAAK,EAAK,GAEnBC,EAAGD,EAAK,IAAOxmL,EAAe,IAAZ0mL,GACH1mL,EAAG0mL,GAAO,EAAK,MAAU,EACzB1mL,EAAG0mL,GAAM,GAAM,MAAS,GACxB1mL,EAAG0mL,GAAM,GAAM,MAAS,GAEvC,IAAS5nQ,EAAK0nQ,EAAK,EAAK,EAAG1nQ,EAAI0nQ,EAAI1nQ,IAC/B2nQ,EAAG3nQ,IAAM2nQ,EAAG3nQ,EAAI,EAExB,CAIA,IADIA,EAAI,EACDA,EAAI0nQ,GAAMn2P,EAAIk2P,GACjB5hQ,EAAI0L,GAAK,EACTnL,EAAImL,EAAI,EACRvc,KAAKuyQ,IAAI1hQ,GAAGO,GAAKuhQ,EAAG3nQ,GACpBhL,KAAKwyQ,IAAIj0M,EAAS1tD,GAAGO,GAAKuhQ,EAAG3nQ,KAC7BuR,GAER,CAGA,IAAK,IAAI1L,EAAI,EAAGA,EAAI0tD,EAAQ1tD,IACxB,IAAK,IAAIO,EAAI,EAAGA,EAAI,EAAGA,IACnBwhQ,EAAK5yQ,KAAKwyQ,IAAI3hQ,GAAGO,GACjBpR,KAAKwyQ,IAAI3hQ,GAAGO,GAAM63C,EAAI2pN,GAAM,GAAM,KAChB1pN,EAAI0pN,GAAM,GAAM,KAChBV,EAAIU,GAAO,EAAK,KAChBT,EAAgB,IAAZS,EAGlC,EAEAP,EAAIznQ,UAAUkoQ,QAAU,SAASlpJ,GAC7B,GAAwB,IAApBA,EAAU/nH,OACV,MAAM,IAAIgC,MAAM,6CAQpB,IALA,IAAI06D,EAASv+D,KAAKuyQ,IAAI1wQ,OAAS,EAC3B4O,EAAI,CAAC,EAAG,EAAG,EAAG,GAGd8L,EAAI61P,EAAexoJ,GACd5+G,EAAI,EAAGA,EAAI,EAAGA,IACnBuR,EAAEvR,IAAMhL,KAAKuyQ,IAAI,GAAGvnQ,GAIxB,IAAK,IAAI6F,EAAI,EAAGA,EAAI0tD,EAAQ1tD,IAAK,CAC7B,IAAS7F,EAAI,EAAGA,EAAI,EAAGA,IACnByF,EAAEzF,GAAM05G,EAAInoG,EAAGvR,IAAe,GAAM,KAC5B25G,EAAIpoG,GAAGvR,EAAI,GAAK,IAAM,GAAM,KAC5B4mQ,EAAIr1P,GAAGvR,EAAI,GAAK,IAAO,EAAK,KAC5B6mQ,EAA4B,IAAxBt1P,GAAGvR,EAAI,GAAK,IAChBhL,KAAKuyQ,IAAI1hQ,GAAG7F,GAExBuR,EAAI9L,EAAE/C,OACV,CAGA,IAA8BklQ,EAA1BjkP,EAASoiP,EAAY,IACzB,IAAS/lQ,EAAI,EAAGA,EAAI,EAAGA,IACnB4nQ,EAAK5yQ,KAAKuyQ,IAAIh0M,GAAQvzD,GACtB2jB,EAAO,EAAI3jB,GAA2D,KAAjDkhF,EAAG3vE,EAAGvR,IAAe,GAAM,KAAS4nQ,GAAM,IAC/DjkP,EAAO,EAAI3jB,EAAI,GAAuD,KAAjDkhF,EAAG3vE,GAAGvR,EAAI,GAAK,IAAM,GAAM,KAAS4nQ,GAAM,IAC/DjkP,EAAO,EAAI3jB,EAAI,GAAuD,KAAjDkhF,EAAG3vE,GAAGvR,EAAI,GAAK,IAAO,EAAK,KAAS4nQ,GAAO,GAChEjkP,EAAO,EAAI3jB,EAAI,GAAuD,KAAjDkhF,EAA2B,IAAxB3vE,GAAGvR,EAAI,GAAK,IAAqB4nQ,GAG7D,OAAOjkP,CACX,EAEA0jP,EAAIznQ,UAAUm/G,QAAU,SAAS3C,GAC7B,GAAyB,IAArBA,EAAWvlH,OACX,MAAM,IAAIgC,MAAM,8CAQpB,IALA,IAAI06D,EAASv+D,KAAKwyQ,IAAI3wQ,OAAS,EAC3B4O,EAAI,CAAC,EAAG,EAAG,EAAG,GAGd8L,EAAI61P,EAAehrJ,GACdp8G,EAAI,EAAGA,EAAI,EAAGA,IACnBuR,EAAEvR,IAAMhL,KAAKwyQ,IAAI,GAAGxnQ,GAIxB,IAAK,IAAI6F,EAAI,EAAGA,EAAI0tD,EAAQ1tD,IAAK,CAC7B,IAAS7F,EAAI,EAAGA,EAAI,EAAGA,IACnByF,EAAEzF,GAAM8mQ,EAAIv1P,EAAGvR,IAAgB,GAAM,KAC7B+mQ,EAAIx1P,GAAGvR,EAAI,GAAK,IAAM,GAAM,KAC5BgnQ,EAAIz1P,GAAGvR,EAAI,GAAK,IAAO,EAAK,KAC5BinQ,EAA4B,IAAxB11P,GAAGvR,EAAI,GAAK,IAChBhL,KAAKwyQ,IAAI3hQ,GAAG7F,GAExBuR,EAAI9L,EAAE/C,OACV,CAGA,IAA8BklQ,EAA1BjkP,EAASoiP,EAAY,IACzB,IAAS/lQ,EAAI,EAAGA,EAAI,EAAGA,IACnB4nQ,EAAK5yQ,KAAKwyQ,IAAIj0M,GAAQvzD,GACtB2jB,EAAO,EAAI3jB,GAA4D,KAAlD2mQ,EAAIp1P,EAAGvR,IAAe,GAAM,KAAS4nQ,GAAM,IAChEjkP,EAAO,EAAI3jB,EAAI,GAAwD,KAAlD2mQ,EAAIp1P,GAAGvR,EAAI,GAAK,IAAM,GAAM,KAAS4nQ,GAAM,IAChEjkP,EAAO,EAAI3jB,EAAI,GAAwD,KAAlD2mQ,EAAIp1P,GAAGvR,EAAI,GAAK,IAAO,EAAK,KAAS4nQ,GAAO,GACjEjkP,EAAO,EAAI3jB,EAAI,GAAwD,KAAlD2mQ,EAA4B,IAAxBp1P,GAAGvR,EAAI,GAAK,IAAqB4nQ,GAG9D,OAAOjkP,CACX,EAMA,IAAIokP,EAAqB,SAAS/oQ,GAC9B,KAAMhK,gBAAgB+yQ,GAClB,MAAMlvQ,MAAM,uCAGhB7D,KAAKmnH,YAAc,wBACnBnnH,KAAK4R,KAAO,MAEZ5R,KAAKgzQ,KAAO,IAAIX,EAAIroQ,EACxB,EAEA+oQ,EAAmBnoQ,UAAUkoQ,QAAU,SAASlpJ,GAG5C,IAFAA,EAAYknJ,EAAYlnJ,IAET/nH,OAAS,KAAQ,EAC5B,MAAM,IAAIgC,MAAM,yDAMpB,IAHA,IAAIujH,EAAa2pJ,EAAYnnJ,EAAU/nH,QACnCmgF,EAAQ+uL,EAAY,IAEf/lQ,EAAI,EAAGA,EAAI4+G,EAAU/nH,OAAQmJ,GAAK,GACvCgmQ,EAAUpnJ,EAAW5nC,EAAO,EAAGh3E,EAAGA,EAAI,IAEtCgmQ,EADAhvL,EAAQhiF,KAAKgzQ,KAAKF,QAAQ9wL,GACTolC,EAAYp8G,GAGjC,OAAOo8G,CACX,EAEA2rJ,EAAmBnoQ,UAAUm/G,QAAU,SAAS3C,GAG5C,IAFAA,EAAa0pJ,EAAY1pJ,IAETvlH,OAAS,KAAQ,EAC7B,MAAM,IAAIgC,MAAM,0DAMpB,IAHA,IAAI+lH,EAAYmnJ,EAAY3pJ,EAAWvlH,QACnCmgF,EAAQ+uL,EAAY,IAEf/lQ,EAAI,EAAGA,EAAIo8G,EAAWvlH,OAAQmJ,GAAK,GACxCgmQ,EAAU5pJ,EAAYplC,EAAO,EAAGh3E,EAAGA,EAAI,IAEvCgmQ,EADAhvL,EAAQhiF,KAAKgzQ,KAAKjpJ,QAAQ/nC,GACT4nC,EAAW5+G,GAGhC,OAAO4+G,CACX,EAMA,IAAIqpJ,EAAqB,SAASjpQ,EAAKq9G,GACnC,KAAMrnH,gBAAgBizQ,GAClB,MAAMpvQ,MAAM,uCAMhB,GAHA7D,KAAKmnH,YAAc,wBACnBnnH,KAAK4R,KAAO,MAEPy1G,GAGE,GAAiB,IAAbA,EAAGxlH,OACV,MAAM,IAAIgC,MAAM,4DAHhBwjH,EAAK0pJ,EAAY,IAMrB/wQ,KAAKkzQ,iBAAmBpC,EAAYzpJ,GAAI,GAExCrnH,KAAKgzQ,KAAO,IAAIX,EAAIroQ,EACxB,EAEAipQ,EAAmBroQ,UAAUkoQ,QAAU,SAASlpJ,GAG5C,IAFAA,EAAYknJ,EAAYlnJ,IAET/nH,OAAS,KAAQ,EAC5B,MAAM,IAAIgC,MAAM,yDAMpB,IAHA,IAAIujH,EAAa2pJ,EAAYnnJ,EAAU/nH,QACnCmgF,EAAQ+uL,EAAY,IAEf/lQ,EAAI,EAAGA,EAAI4+G,EAAU/nH,OAAQmJ,GAAK,GAAI,CAC3CgmQ,EAAUpnJ,EAAW5nC,EAAO,EAAGh3E,EAAGA,EAAI,IAEtC,IAAK,IAAI4F,EAAI,EAAGA,EAAI,GAAIA,IACpBoxE,EAAMpxE,IAAM5Q,KAAKkzQ,iBAAiBtiQ,GAGtC5Q,KAAKkzQ,iBAAmBlzQ,KAAKgzQ,KAAKF,QAAQ9wL,GAC1CgvL,EAAUhxQ,KAAKkzQ,iBAAkB9rJ,EAAYp8G,EACjD,CAEA,OAAOo8G,CACX,EAEA6rJ,EAAmBroQ,UAAUm/G,QAAU,SAAS3C,GAG5C,IAFAA,EAAa0pJ,EAAY1pJ,IAETvlH,OAAS,KAAQ,EAC7B,MAAM,IAAIgC,MAAM,0DAMpB,IAHA,IAAI+lH,EAAYmnJ,EAAY3pJ,EAAWvlH,QACnCmgF,EAAQ+uL,EAAY,IAEf/lQ,EAAI,EAAGA,EAAIo8G,EAAWvlH,OAAQmJ,GAAK,GAAI,CAC5CgmQ,EAAU5pJ,EAAYplC,EAAO,EAAGh3E,EAAGA,EAAI,IACvCg3E,EAAQhiF,KAAKgzQ,KAAKjpJ,QAAQ/nC,GAE1B,IAAK,IAAIpxE,EAAI,EAAGA,EAAI,GAAIA,IACpBg5G,EAAU5+G,EAAI4F,GAAKoxE,EAAMpxE,GAAK5Q,KAAKkzQ,iBAAiBtiQ,GAGxDogQ,EAAU5pJ,EAAYpnH,KAAKkzQ,iBAAkB,EAAGloQ,EAAGA,EAAI,GAC3D,CAEA,OAAO4+G,CACX,EAMA,IAAIupJ,EAAqB,SAASnpQ,EAAKq9G,EAAI+rJ,GACvC,KAAMpzQ,gBAAgBmzQ,GAClB,MAAMtvQ,MAAM,uCAMhB,GAHA7D,KAAKmnH,YAAc,kBACnBnnH,KAAK4R,KAAO,MAEPy1G,GAGE,GAAiB,IAAbA,EAAGxlH,OACV,MAAM,IAAIgC,MAAM,2DAHhBwjH,EAAK0pJ,EAAY,IAMhBqC,IAAeA,EAAc,GAElCpzQ,KAAKozQ,YAAcA,EAEnBpzQ,KAAKqzQ,eAAiBvC,EAAYzpJ,GAAI,GAEtCrnH,KAAKgzQ,KAAO,IAAIX,EAAIroQ,EACxB,EAEAmpQ,EAAmBvoQ,UAAUkoQ,QAAU,SAASlpJ,GAC5C,GAAKA,EAAU/nH,OAAS7B,KAAKozQ,aAAgB,EACzC,MAAM,IAAIvvQ,MAAM,sDAMpB,IAHA,IAEIyvQ,EAFAC,EAAYzC,EAAYlnJ,GAAW,GAG9B5+G,EAAI,EAAGA,EAAIuoQ,EAAU1xQ,OAAQmJ,GAAKhL,KAAKozQ,YAAa,CACzDE,EAAatzQ,KAAKgzQ,KAAKF,QAAQ9yQ,KAAKqzQ,gBACpC,IAAK,IAAIziQ,EAAI,EAAGA,EAAI5Q,KAAKozQ,YAAaxiQ,IAClC2iQ,EAAUvoQ,EAAI4F,IAAM0iQ,EAAW1iQ,GAInCogQ,EAAUhxQ,KAAKqzQ,eAAgBrzQ,KAAKqzQ,eAAgB,EAAGrzQ,KAAKozQ,aAC5DpC,EAAUuC,EAAWvzQ,KAAKqzQ,eAAgB,GAAKrzQ,KAAKozQ,YAAapoQ,EAAGA,EAAIhL,KAAKozQ,YACjF,CAEA,OAAOG,CACX,EAEAJ,EAAmBvoQ,UAAUm/G,QAAU,SAAS3C,GAC5C,GAAKA,EAAWvlH,OAAS7B,KAAKozQ,aAAgB,EAC1C,MAAM,IAAIvvQ,MAAM,uDAMpB,IAHA,IAEIyvQ,EAFA1pJ,EAAYknJ,EAAY1pJ,GAAY,GAG/Bp8G,EAAI,EAAGA,EAAI4+G,EAAU/nH,OAAQmJ,GAAKhL,KAAKozQ,YAAa,CACzDE,EAAatzQ,KAAKgzQ,KAAKF,QAAQ9yQ,KAAKqzQ,gBAEpC,IAAK,IAAIziQ,EAAI,EAAGA,EAAI5Q,KAAKozQ,YAAaxiQ,IAClCg5G,EAAU5+G,EAAI4F,IAAM0iQ,EAAW1iQ,GAInCogQ,EAAUhxQ,KAAKqzQ,eAAgBrzQ,KAAKqzQ,eAAgB,EAAGrzQ,KAAKozQ,aAC5DpC,EAAU5pJ,EAAYpnH,KAAKqzQ,eAAgB,GAAKrzQ,KAAKozQ,YAAapoQ,EAAGA,EAAIhL,KAAKozQ,YAClF,CAEA,OAAOxpJ,CACX,EAKA,IAAI4pJ,EAAqB,SAASxpQ,EAAKq9G,GACnC,KAAMrnH,gBAAgBwzQ,GAClB,MAAM3vQ,MAAM,uCAMhB,GAHA7D,KAAKmnH,YAAc,kBACnBnnH,KAAK4R,KAAO,MAEPy1G,GAGE,GAAiB,IAAbA,EAAGxlH,OACV,MAAM,IAAIgC,MAAM,4DAHhBwjH,EAAK0pJ,EAAY,IAMrB/wQ,KAAKyzQ,eAAiB3C,EAAYzpJ,GAAI,GACtCrnH,KAAK0zQ,oBAAsB,GAE3B1zQ,KAAKgzQ,KAAO,IAAIX,EAAIroQ,EACxB,EAEAwpQ,EAAmB5oQ,UAAUkoQ,QAAU,SAASlpJ,GAG5C,IAFA,IAAI2pJ,EAAYzC,EAAYlnJ,GAAW,GAE9B5+G,EAAI,EAAGA,EAAIuoQ,EAAU1xQ,OAAQmJ,IACD,KAA7BhL,KAAK0zQ,sBACL1zQ,KAAKyzQ,eAAiBzzQ,KAAKgzQ,KAAKF,QAAQ9yQ,KAAKyzQ,gBAC7CzzQ,KAAK0zQ,oBAAsB,GAE/BH,EAAUvoQ,IAAMhL,KAAKyzQ,eAAezzQ,KAAK0zQ,uBAG7C,OAAOH,CACX,EAGAC,EAAmB5oQ,UAAUm/G,QAAUypJ,EAAmB5oQ,UAAUkoQ,QAMpE,IAAIa,EAAU,SAASC,GACnB,KAAM5zQ,gBAAgB2zQ,GAClB,MAAM9vQ,MAAM,2CAIK,IAAjB+vQ,GAAuBA,IAAgBA,EAAe,GAE7B,kBAAlBA,GACP5zQ,KAAK6zQ,SAAW9C,EAAY,IAC5B/wQ,KAAKshN,SAASsyD,IAGd5zQ,KAAK8zQ,SAASF,EAEtB,EAEAD,EAAQ/oQ,UAAU02M,SAAW,SAASp+M,GAClC,GAAsB,kBAAXA,GAAuBiI,SAASjI,IAAUA,EACjD,MAAM,IAAIW,MAAM,8CAIpB,GAAIX,EAAQisB,OAAOjf,iBACf,MAAM,IAAIrM,MAAM,mCAGpB,IAAK,IAAI+8B,EAAQ,GAAIA,GAAS,IAAKA,EAC/B5gC,KAAK6zQ,SAASjzO,GAAS19B,EAAQ,IAC/BA,EAAQiI,SAASjI,EAAQ,IAEjC,EAEAywQ,EAAQ/oQ,UAAUkpQ,SAAW,SAAS31N,GAGlC,GAAoB,KAFpBA,EAAQ2yN,EAAY3yN,GAAO,IAEjBt8C,OACN,MAAM,IAAIgC,MAAM,iDAGpB7D,KAAK6zQ,SAAW11N,CACpB,EAEAw1N,EAAQ/oQ,UAAUmpQ,UAAY,WAC1B,IAAK,IAAI/oQ,EAAI,GAAIA,GAAK,EAAGA,IAAK,CAC1B,GAAyB,MAArBhL,KAAK6zQ,SAAS7oQ,GAEX,CACHhL,KAAK6zQ,SAAS7oQ,KACd,KACJ,CAJIhL,KAAK6zQ,SAAS7oQ,GAAK,CAK3B,CACJ,EAMA,IAAIgpQ,EAAqB,SAAShqQ,EAAKogB,GACnC,KAAMpqB,gBAAgBg0Q,GAClB,MAAMnwQ,MAAM,uCAGhB7D,KAAKmnH,YAAc,UACnBnnH,KAAK4R,KAAO,MAENwY,aAAmBupP,IACrBvpP,EAAU,IAAIupP,EAAQvpP,IAG1BpqB,KAAK6zQ,SAAWzpP,EAEhBpqB,KAAKi0Q,kBAAoB,KACzBj0Q,KAAKk0Q,uBAAyB,GAE9Bl0Q,KAAKgzQ,KAAO,IAAIX,EAAIroQ,EACxB,EAEAgqQ,EAAmBppQ,UAAUkoQ,QAAU,SAASlpJ,GAG5C,IAFA,IAAI2pJ,EAAYzC,EAAYlnJ,GAAW,GAE9B5+G,EAAI,EAAGA,EAAIuoQ,EAAU1xQ,OAAQmJ,IACE,KAAhChL,KAAKk0Q,yBACLl0Q,KAAKi0Q,kBAAoBj0Q,KAAKgzQ,KAAKF,QAAQ9yQ,KAAK6zQ,SAASA,UACzD7zQ,KAAKk0Q,uBAAyB,EAC9Bl0Q,KAAK6zQ,SAASE,aAElBR,EAAUvoQ,IAAMhL,KAAKi0Q,kBAAkBj0Q,KAAKk0Q,0BAGhD,OAAOX,CACX,EAGAS,EAAmBppQ,UAAUm/G,QAAUiqJ,EAAmBppQ,UAAUkoQ,QA0CpE,IAAIqB,EAAQ,CACR9B,IAAKA,EACLsB,QAASA,EAET9pJ,gBAAiB,CACbuqJ,IAAKrB,EACLjpJ,IAAKmpJ,EACLoB,IAAKlB,EACLmB,IAAKd,EACLe,IAAKP,GAGT33O,MAAO,CACHv1B,IAAKyqQ,EACL5xI,KAAM0xI,GAGVzuO,QAAS,CACL4xO,MAAO,CACHh4K,IAtDZ,SAAkB74F,GAEd,IAAI8wQ,EAAS,IADb9wQ,EAAOmtQ,EAAYntQ,GAAM,IACD9B,OAAS,GAC7B8sB,EAASoiP,EAAYptQ,EAAK9B,OAAS4yQ,GACvCzD,EAAUrtQ,EAAMgrB,GAChB,IAAK,IAAI3jB,EAAIrH,EAAK9B,OAAQmJ,EAAI2jB,EAAO9sB,OAAQmJ,IACzC2jB,EAAO3jB,GAAKypQ,EAEhB,OAAO9lP,CACX,EA8CYimB,MA5CZ,SAAoBjxC,GAEhB,IADAA,EAAOmtQ,EAAYntQ,GAAM,IAChB9B,OAAS,GAAM,MAAM,IAAIgC,MAAM,yBAExC,IAAI4wQ,EAAS9wQ,EAAKA,EAAK9B,OAAS,GAChC,GAAI4yQ,EAAS,GAAM,MAAM,IAAI5wQ,MAAM,oCAGnC,IADA,IAAIhC,EAAS8B,EAAK9B,OAAS4yQ,EAClBzpQ,EAAI,EAAGA,EAAIypQ,EAAQzpQ,IACxB,GAAIrH,EAAK9B,EAASmJ,KAAOypQ,EACrB,MAAM,IAAI5wQ,MAAM,+BAIxB,IAAI8qB,EAASoiP,EAAYlvQ,GAEzB,OADAmvQ,EAAUrtQ,EAAMgrB,EAAQ,EAAG,EAAG9sB,GACvB8sB,CACX,IA+BI+lP,WAAY,CACR5D,YAAaA,EACbC,YAAaA,EACbC,UAAWA,IAOfjxQ,EAAOD,QAAUq0Q,CAoBxB,CAjyBD,4gBCDA3kQ,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,8OCFA,MAAAgf,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAme,EAAAne,EAAA,OAyFA,SAAgB6zQ,EAAoCx1P,GAI3B,IAJ4B,UACjDnd,EACAod,MAAOoT,GAAQ,KACf7uB,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,WAEJ7uB,KAAM7D,EAAA80Q,0BAA0Bn1P,OAAO9b,GAE/C,CA7Fa7D,EAAAA,2BAA4B,EAAAgf,EAAAY,QAAkC,EAAC,EAAAZ,EAAAa,IAAG,iBAU/E7f,EAAAA,4BAAA,SAA4C0yB,GAAgD,IAA5BxwB,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBACxE,MAAMvT,EAAO,CAAC,CAAEU,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,IAExDrc,EAAOY,EAAO0b,MAAMngB,EAAA80Q,0BAA0B10P,MAGpD,OAFApgB,EAAA80Q,0BAA0Bz0P,OAAO,CAAEd,YAAaJ,EAAAmB,iBAAiBy0P,YAAclxQ,GAExE,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAqBA7D,EAAAA,4BAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAA80Q,0BAA0B10P,KAAM,MAAM,IAAIlB,EAAAyB,iCAE1E,MACIrB,MAAM,QAAEoT,GAAS,KACjB7uB,GACAgxQ,EAAqCt1P,GACzC,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBy0P,WAAY,MAAM,IAAI71P,EAAA0B,iCAChE,IAAK8R,EAAS,MAAM,IAAIxT,EAAA2B,iCAIxB,MAAO,CACH3e,YACAod,KAAM,CACFoT,WAEJ7uB,OAER,EAoBA7D,EAAAA,qCAAA60Q,0BCjGA,MAAMG,EAAY,YACZC,EAAY,YACZC,EAAkB,0BAClBC,EAAa,yBACbC,EAAa,WAEbC,EAAqB,IAAIjoQ,OAAO,IAAMgoQ,EAAW9zQ,QACjDg0Q,EAA4B,IAAIloQ,OAAOgoQ,EAAW9zQ,OAAS6zQ,EAAW7zQ,OAAQ,MAC9Ei0Q,EAAyB,IAAInoQ,OAAO,OAAS+nQ,EAAW7zQ,OAAQ,MA6ChEmuP,EAAYA,CAACtvP,EAAO2hB,KACzB,GAAuB,kBAAV3hB,IAAsBkK,MAAMi3B,QAAQnhC,GAChD,MAAM,IAAIg/B,UAAU,gDAiBrB,GAdArd,EAAU,CACT6vO,YAAY,EACZwB,8BAA8B,KAC3BrxO,GAWiB,KAPpB3hB,EADGkK,MAAMi3B,QAAQnhC,GACTA,EAAMyI,KAAIsI,GAAKA,EAAE/D,SACvBumF,QAAOxiF,GAAKA,EAAEnP,SACdq7D,KAAK,KAECj9D,EAAMgN,QAGLpL,OACT,MAAO,GAGR,MAAM+S,GAAiC,IAAnBgN,EAAQ2uC,OAC3B5vB,GAAUA,EAAO/rB,cACjB+rB,GAAUA,EAAO20O,kBAAkB1zP,EAAQ2uC,QACtC57C,GAAiC,IAAnBiN,EAAQ2uC,OAC3B5vB,GAAUA,EAAOhsB,cACjBgsB,GAAUA,EAAO40O,kBAAkB3zP,EAAQ2uC,QAE5C,GAAqB,IAAjBtwD,EAAM4B,OACT,OAAO+f,EAAQ6vO,WAAa98O,EAAY1U,GAAS2U,EAAY3U,GAqB9D,OAlBqBA,IAAU2U,EAAY3U,KAG1CA,EAhFwBu1Q,EAAC70O,EAAQ/rB,EAAaD,KAC/C,IAAI8gQ,GAAkB,EAClBC,GAAkB,EAClBC,GAAsB,EAE1B,IAAK,IAAI3qQ,EAAI,EAAGA,EAAI21B,EAAO9+B,OAAQmJ,IAAK,CACvC,MAAM4qQ,EAAYj1O,EAAO31B,GAErByqQ,GAAmBX,EAAUxgQ,KAAKshQ,IACrCj1O,EAASA,EAAOjzB,MAAM,EAAG1C,GAAK,IAAM21B,EAAOjzB,MAAM1C,GACjDyqQ,GAAkB,EAClBE,EAAsBD,EACtBA,GAAkB,EAClB1qQ,KACU0qQ,GAAmBC,GAAuBZ,EAAUzgQ,KAAKshQ,IACnEj1O,EAASA,EAAOjzB,MAAM,EAAG1C,EAAI,GAAK,IAAM21B,EAAOjzB,MAAM1C,EAAI,GACzD2qQ,EAAsBD,EACtBA,GAAkB,EAClBD,GAAkB,IAElBA,EAAkB7gQ,EAAYghQ,KAAeA,GAAajhQ,EAAYihQ,KAAeA,EACrFD,EAAsBD,EACtBA,EAAkB/gQ,EAAYihQ,KAAeA,GAAahhQ,EAAYghQ,KAAeA,EAEvF,CAEA,OAAOj1O,CAAM,EAsDJ60O,CAAkBv1Q,EAAO2U,EAAaD,IAG/C1U,EAAQA,EAAM+M,QAAQmoQ,EAAoB,IAGzCl1Q,EADG2hB,EAAQqxO,6BAxDwBA,EAAChzP,EAAO2U,KAC5CogQ,EAAgBa,UAAY,EAErB51Q,EAAM+M,QAAQgoQ,GAAiBc,GAAMlhQ,EAAYkhQ,MAsD/C7iB,CAA6BhzP,EAAO2U,GAEpCA,EAAY3U,GAGjB2hB,EAAQ6vO,aACXxxP,EAAQ0U,EAAY1U,EAAMgS,OAAO,IAAMhS,EAAMyN,MAAM,IAzDjCqoQ,EAAC91Q,EAAO0U,KAC3BygQ,EAA0BS,UAAY,EACtCR,EAAuBQ,UAAY,EAE5B51Q,EAAM+M,QAAQooQ,GAA2B,CAAC31O,EAAGyzK,IAAev+L,EAAYu+L,KAC7ElmM,QAAQqoQ,GAAwB/8P,GAAK3D,EAAY2D,MAuD5Cy9P,CAAY91Q,EAAO0U,EAAY,EAGvC5U,EAAOD,QAAUyvP,EAEjBxvP,EAAOD,QAAPC,QAAyBwvP,iFC1DzBzvP,EAAAA,mBAAAyuQ,EAiCAzuQ,EAAAA,mBAAA0uQ,EAqCA1uQ,EAAAA,cAAA2uQ,EAuCA3uQ,EAAAA,WAAA,SAAmD2vJ,EAAU/mJ,GAE3D,MAAMgmQ,EAAQhmQ,EAAIA,KAAKsC,GAAMb,MAAM3F,KAAKwG,GAAG4C,YAC3C,MAAO,CAACoD,EAAMC,KACZ,MAAO09P,EAAMC,EAAMC,EAAMC,GAAQJ,EAAMhmQ,KAAKiG,GAC1CA,EAAI1F,QAAO,CAAC8hB,EAAK/f,IAAMykJ,EAAMltJ,IAAIktJ,EAAMzuH,IAAIjW,EAAK/Z,GAAIhG,OAItD,OAFAgG,EAAIy+I,EAAMl9I,IAAIo8P,EAAMC,GACpB39P,EAAIw+I,EAAMzuH,IAAI/vB,EAAGw+I,EAAMl9I,IAAIs8P,EAAMC,IAC1B,CAAE99P,IAAGC,IAAG,CAEnB,EAmBAnR,EAAAA,aAAA,SACEy9C,EACAwxN,EACAx+G,GAEA,GAA0B,oBAAfw+G,EAA2B,MAAM,IAAIlrQ,MAAM,gCACtD,MAAO,CAGLohK,WAAAA,CAAYxkK,EAAiBmhB,GAC3B,MAAM2zB,EAAIk5N,EAAchuQ,EAAK,EAAG,IAAK8vJ,EAAKuU,IAAKvU,EAAIuU,OAAQljJ,IACrDotP,EAAKzxN,EAAM0K,WAAW8mN,EAAWx5N,EAAE,KACnC4K,EAAK5C,EAAM0K,WAAW8mN,EAAWx5N,EAAE,KACnC7iC,EAAIs8P,EAAGzsQ,IAAI49C,GAAIoG,gBAErB,OADA7zC,EAAEysC,iBACKzsC,CACT,EAIAwyJ,aAAAA,CAAczkK,EAAiBmhB,GAC7B,MAAM2zB,EAAIk5N,EAAchuQ,EAAK,EAAG,IAAK8vJ,EAAKuU,IAAKvU,EAAIwU,aAAcnjJ,IAC3DlP,EAAI6qC,EAAM0K,WAAW8mN,EAAWx5N,EAAE,KAAKgR,gBAE7C,OADA7zC,EAAEysC,iBACKzsC,CACT,EAEAq8P,UAAAA,CAAWxmN,GACT,IAAKp+C,MAAMi3B,QAAQmnB,GAAU,MAAM,IAAI1kD,MAAM,yCAC7C,IAAK,MAAMmH,KAAKu9C,EACd,GAAiB,kBAANv9C,EACT,MAAM,IAAInH,MAAM,8CAA8CmH,cAClE,MAAM0H,EAAI6qC,EAAM0K,WAAW8mN,EAAWxmN,IAAUhC,gBAEhD,OADA7zC,EAAEysC,iBACKzsC,CACT,EAEJ,EApOA,MAAA0qC,EAAAt8C,EAAA,OAEA2uB,EAAA3uB,EAAA,OAqBMmuQ,EAAQx/O,EAAA4uB,gBAGd,SAAS6wN,EAAMhsQ,EAAerB,GAC5B,GAAIqB,EAAQ,GAAKA,GAAS,GAAM,EAAIrB,EAClC,MAAM,IAAIgC,MAAM,yBAAyBX,YAAgBrB,KAE3D,MAAM+vB,EAAMznB,MAAM3F,KAAK,CAAE3C,WAAUovB,KAAK,GACxC,IAAK,IAAIjmB,EAAInJ,EAAS,EAAGmJ,GAAK,EAAGA,IAC/B4mB,EAAI5mB,GAAa,IAAR9H,EACTA,KAAW,EAEb,OAAO,IAAIotB,WAAWsB,EACxB,CAEA,SAASw9O,EAAO3+P,EAAeS,GAC7B,MAAM8G,EAAM,IAAIsY,WAAW7f,EAAE5O,QAC7B,IAAK,IAAImJ,EAAI,EAAGA,EAAIyF,EAAE5O,OAAQmJ,IAC5BgN,EAAIhN,GAAKyF,EAAEzF,GAAKkG,EAAElG,GAEpB,OAAOgN,CACT,CAEA,SAASm3P,EAAK57O,GACZ,IAAKpE,OAAOivC,cAAc7qC,GAAO,MAAM,IAAI1vB,MAAM,kBACnD,CAIA,SAAgB0qQ,EACd9tQ,EACAqkK,EACAuqG,EACAlkL,IAEA,EAAA17D,EAAA+1B,QAAO/kD,IACP,EAAAgvB,EAAA+1B,QAAOs/G,GACPqqG,EAAKE,GAEDvqG,EAAIjjK,OAAS,MAAKijK,EAAM35E,GAAE,EAAA17D,EAAAplB,cAAY,EAAAolB,EAAA0tF,aAAY,qBAAsB2nD,KAC5E,MAAQ/0I,UAAWu/O,EAAYx/O,SAAUy/O,GAAepkL,EAClDqkL,EAAMpmQ,KAAKwG,KAAKy/P,EAAaC,GACnC,GAAIE,EAAM,IAAK,MAAM,IAAI3rQ,MAAM,sBAC/B,MAAM4rQ,GAAY,EAAAhgP,EAAAplB,aAAYy6J,EAAKoqG,EAAMpqG,EAAIjjK,OAAQ,IAC/C6tQ,EAAQR,EAAM,EAAGK,GACjBI,EAAYT,EAAMG,EAAY,GAC9Bn+P,EAAI,IAAI/G,MAAkBqlQ,GAC1BI,EAAMzkL,GAAE,EAAA17D,EAAAplB,aAAYqlQ,EAAOjvQ,EAAKkvQ,EAAWT,EAAM,EAAG,GAAIO,IAC9Dv+P,EAAE,GAAKi6E,GAAE,EAAA17D,EAAAplB,aAAYulQ,EAAKV,EAAM,EAAG,GAAIO,IACvC,IAAK,IAAIzkQ,EAAI,EAAGA,GAAKwkQ,EAAKxkQ,IAAK,CAC7B,MAAMmK,EAAO,CAACi6P,EAAOQ,EAAK1+P,EAAElG,EAAI,IAAKkkQ,EAAMlkQ,EAAI,EAAG,GAAIykQ,GACtDv+P,EAAElG,GAAKmgF,GAAE,EAAA17D,EAAAplB,gBAAe8K,GAC1B,CAEA,OAD4B,EAAAsa,EAAAplB,gBAAe6G,GAChBxD,MAAM,EAAG2hQ,EACtC,CAOA,SAAgBb,EACd/tQ,EACAqkK,EACAuqG,EACA/9P,EACA65E,GAOA,IALA,EAAA17D,EAAA+1B,QAAO/kD,IACP,EAAAgvB,EAAA+1B,QAAOs/G,GACPqqG,EAAKE,GAGDvqG,EAAIjjK,OAAS,IAAK,CACpB,MAAM4xL,EAAQrqL,KAAKwG,KAAM,EAAI0B,EAAK,GAClCwzJ,EAAM35E,EAAEzhF,OAAO,CAAE+pL,UAAS1vL,QAAO,EAAA0rB,EAAA0tF,aAAY,sBAAsBp5G,OAAO+gK,GAAK9gK,QACjF,CACA,GAAIqrQ,EAAa,OAASvqG,EAAIjjK,OAAS,IACrC,MAAM,IAAIgC,MAAM,0CAClB,OACEsnF,EAAEzhF,OAAO,CAAE+pL,MAAO47E,IACftrQ,OAAOtD,GACPsD,OAAOmrQ,EAAMG,EAAY,IAEzBtrQ,OAAO+gK,GACP/gK,OAAOmrQ,EAAMpqG,EAAIjjK,OAAQ,IACzBmC,QAEP,CAUA,SAAgByqQ,EAAchuQ,EAAiBymE,EAAetlD,IAC5D,EAAA6N,EAAAgtB,gBAAe76B,EAAS,CACtBkjJ,IAAK,qBACLvuJ,EAAG,SACH+B,EAAG,gBACHhH,EAAG,gBACH1M,KAAM,SAER,MAAM,EAAE2R,EAAC,EAAEjF,EAAC,EAAEgH,EAAC,KAAE1T,EAAI,OAAEogK,EAAQF,IAAK+qG,GAASjuP,GAC7C,EAAA6N,EAAA+1B,QAAO/kD,GACP0uQ,EAAKjoM,GACL,MAAM49F,EAAsB,kBAAT+qG,GAAoB,EAAApgP,EAAA0tF,aAAY0yJ,GAAQA,EACrDC,EAAQv5P,EAAE9R,SAAS,GAAG5C,OACtB0pF,EAAIniF,KAAKwG,MAAMkgQ,EAAQx+P,GAAK,GAC5By+P,EAAe7oM,EAAQ5uD,EAAIizE,EACjC,IAAIykL,EACJ,GAAe,QAAXhrG,EACFgrG,EAAMzB,EAAmB9tQ,EAAKqkK,EAAKirG,EAAcnrQ,QAC5C,GAAe,QAAXogK,EACTgrG,EAAMxB,EAAmB/tQ,EAAKqkK,EAAKirG,EAAcz+P,EAAG1M,OAC/C,IAAe,mBAAXogK,EAIT,MAAM,IAAInhK,MAAM,iCAFhBmsQ,EAAMvvQ,CAGR,CACA,MAAM80C,EAAI,IAAIprC,MAAM+8D,GACpB,IAAK,IAAIl8D,EAAI,EAAGA,EAAIk8D,EAAOl8D,IAAK,CAC9B,MAAMuG,EAAI,IAAIpH,MAAMmO,GACpB,IAAK,IAAI1H,EAAI,EAAGA,EAAI0H,EAAG1H,IAAK,CAC1B,MAAMq/P,EAAa1kL,GAAK36E,EAAI5F,EAAIsN,GAC1BgxM,EAAK0mD,EAAIp/O,SAASq/O,EAAYA,EAAa1kL,GACjDh6E,EAAEX,IAAK,EAAAwsC,EAAA/hC,KAAI4zP,EAAM3lD,GAAK/yM,EACxB,CACAg/B,EAAEvqC,GAAKuG,CACT,CACA,OAAOgkC,CACT,gCChKAvyC,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQguQ,sBAAmB,EAC3B,MAAMxrL,EAAmBxhF,EAAQ,OACjC,MAAMgtQ,UAAyBxrL,EAAiBG,eAC5C,iCAAMqgC,CAA4BkzJ,GAW9B,MAAO,CACHruQ,KAAM,iBACNd,GAAImvQ,EACJ94L,QAZY,IADGl9E,KAAKw6E,KAAKqC,KAAKM,cAAc,IAAM,QAASn9E,KAAKw6E,KAAKqC,KAAKC,cAG1EM,cAAe44L,EAAejzK,gBAC9B1lB,aAAc,IACd96D,QAASviB,KAAKw6E,KAAK8C,gBACnBp3E,MAAO,EACPq3E,sBAAuB,GACvBC,cAAc,GAOtB,EAEJ19E,EAAQguQ,iBAAmBA,gCCtB3B9qQ,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQwM,cAAgBxM,EAAQm2Q,oBAAsBn2Q,EAAQquO,wBAAqB,EACnF,MAAM/6K,EAAWtyD,EAAQ,OACnB0K,EAAiB1K,EAAQ,MACzBuyD,EAAavyD,EAAQ,OACrBmE,EAASnE,EAAQ,OACjB00C,EAAU10C,EAAQ,OAClByC,EAAWzC,EAAQ,OACnBwyD,EAAUxyD,EAAQ,OAClBgmH,EAAchmH,EAAQ,OACtBqrD,EAAoBrrD,EAAQ,OAC5BugB,EAAsBvgB,EAAQ,OAC9BsrO,EAAqBtrO,EAAQ,OAC7BqE,EAAUrE,EAAQ,OAClB20C,EAAW30C,EAAQ,OACzB,IAAIqtO,EAWJ,SAAS8nC,EAAoBrnQ,GACzB,MAAyB,kBAAXA,EAAI4kD,IACQ,kBAAf5kD,EAAIolD,SACG,MAAbplD,EAAI6kD,OAAwC,kBAAf7kD,EAAI6kD,SAClB,MAAf7kD,EAAIsgO,SAA4C,kBAAjBtgO,EAAIsgO,WACd,MAArBtgO,EAAIugO,eAAwD,kBAAvBvgO,EAAIugO,iBAC1C,EAAI35L,EAAQ6W,aAAaz9C,EACjC,EAjBA,SAAWu/N,GACPA,EAAmBA,EAA2B,QAAK,GAAK,SACxDA,EAAmBA,EAAkC,eAAK,GAAK,gBAC/DA,EAAmBA,EAAuC,oBAAK,GAAK,qBACpEA,EAAmBA,EAA4B,SAAK,GAAK,UACzDA,EAAmBA,EAA+B,WAAI,GAAK,aAC3DA,EAAmBA,EAA4B,QAAI,GAAK,UACxDA,EAAmBA,EAAmC,eAAI,GAAK,iBAC/DA,EAAmBA,EAAkC,cAAI,GAAK,eACjE,CATD,CASGA,EAAqBruO,EAAQquO,qBAAuBruO,EAAQquO,mBAAqB,CAAC,IASrFruO,EAAQm2Q,oBAAsBA,EAC9B,MAAM3pQ,UAAsBd,EAAeS,aACvCsqC,WAAAA,GACI,OAAOv2C,KAAK2D,MAAQ3D,KAAK+uO,eAC7B,CACA9gO,WAAAA,CAAY0nC,EAAS2W,GACb2pN,EAAoB3pN,KACpBA,EAAa//B,KAAO,cACxBnmB,MAAMuvC,EAAS2W,GACftsD,KAAK03C,WAAajC,EAASme,cAAcC,MACzC7zD,KAAK4lB,KAAOytC,EAAWS,SAASo6K,WAChCluO,KAAKk2Q,gBAAkB,IAAItmN,gBAC3B5vD,KAAKm2Q,UAAW,EACZF,EAAoB3pN,GACpBtsD,KAAKU,MAAQytO,EAAmBh+G,YAGhCnwH,KAAKwzD,GAAKlH,EAAakH,GACvBxzD,KAAKg0D,OAAS1H,EAAa0H,OAC3Bh0D,KAAK+uO,gBAAkD,MAAhCziL,EAAayiL,gBAA0B,KAAO9pO,EAAOg8D,SAASC,YAAY5U,EAAayiL,iBAC9G/uO,KAAKyzD,MAAQnH,EAAamH,MAC1BzzD,KAAKkvO,QAAU5iL,EAAa4iL,QAC5BlvO,KAAKmvO,cAAgB7iL,EAAa6iL,cAClCnvO,KAAKm2Q,SAAW7pN,EAAa6pN,SACzBn2Q,KAAKU,QAAUytO,EAAmBh+G,YAA2B,MAAbnwH,KAAK2D,OACrD3D,KAAK+uO,gBAAkB/uO,KAAK2D,YACrB3D,KAAK2D,OAGpB3D,KAAK61C,sBACL71C,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAW,aAAetF,KAAKslB,0BAA4B,MACzF,CACAknC,cAAAA,GACI,GAAoB,MAAhBxsD,KAAKysD,QAAiB,CACtB,OAAQzsD,KAAKU,OACT,KAAM,EACFV,KAAKU,MAAQytO,EAAmBxhL,cAChC,MACJ,KAAM,EACF3sD,KAAKU,MAAQytO,EAAmB79G,OAChC,MACJ,KAAK,EACDtwH,KAAKU,MAAQytO,EAAmBh+G,WAChC,MACJ,KAAK,EACDnwH,KAAKU,MAAQytO,EAAmBpB,QAChC,MACJ,KAAK,EACD/sO,KAAKU,MAAQytO,EAAmB/9G,eAChC,MACJ,KAAK,EACDpwH,KAAKU,MAAQytO,EAAmB59G,cAGxCvwH,KAAKysD,QAAU,CACnB,CACJ,CAGAS,YAAAA,GACI,OAAOltD,KAAKi0D,iBAAiBxvD,SAAS,MAC1C,CACA+vD,iBAAAA,GACI,MAAMC,EAAoBz0D,KAAKi0D,iBAC/B,OAAwB,MAApBj0D,KAAK00D,YACED,EACJlxD,EAASgB,OAAO4T,OAAO,CAACs8C,EAAmBlxD,EAASgB,OAAOC,KAAKxE,KAAK00D,YAAa,QAC7F,CACAT,cAAAA,GACI,GAAe,MAAXj0D,KAAKwzD,GACL,OAAO,KACX,MAAMi5K,GAAY,EAAIr5K,EAAS3zC,QAAQzf,KAAKwzD,IAC5C,OAAOjwD,EAASgB,OAAOC,KAAKioO,EAAU73K,WAAWC,aAAc,MACnE,CACA1d,UAAAA,GACI,OAAOn3C,KAAKwzD,EAChB,CAIAa,mBAAAA,GACI,OAAOr0D,KAAKwzD,EAChB,CACAk5K,SAAAA,GACI,MAAO,aAAe1sO,KAAKq0D,sBAAsB1/C,aACrD,CAIAg4N,cAAAA,GACI,GAAe,MAAX3sO,KAAKwzD,GACL,OAAO,KAEX,OAAiC,KADjB,EAAIJ,EAAS3zC,QAAQzf,KAAKwzD,IAC1Bo5K,cACpB,CAKAwpC,kBAAAA,GACI,OAAwD,IAAjDjnP,OAAOnvB,KAAK21C,QAAQy4L,eAAepuO,KAAK2D,MACnD,CACAypD,UAAAA,GACI,OAAOptD,KAAKU,QAAUytO,EAAmB59G,eAAiBvwH,KAAKU,QAAUytO,EAAmBxhL,eAAiB3sD,KAAKU,QAAUytO,EAAmB79G,MACnJ,CACA/4E,WAAAA,GACI,OAAOv3C,KAAKU,QAAUytO,EAAmBpB,SAAW/sO,KAAKU,QAAUytO,EAAmB/9G,cAC1F,CACA5iE,YAAAA,GACI,OAAOxtD,KAAKU,QAAUytO,EAAmB59G,aAC7C,CACA9iE,QAAAA,GACI,OAAOztD,KAAKU,QAAUytO,EAAmB79G,QAAUtwH,KAAKU,QAAUytO,EAAmBp/K,OACzF,CACApoC,cAAAA,GACI,OAAO3mB,KAAKU,QAAUytO,EAAmBxhL,aAC7C,CACAW,kBAAAA,GACI,OAAOttD,KAAKU,QAAUytO,EAAmBxhL,eAAiB3sD,KAAKU,QAAUytO,EAAmB5gL,kBAChG,CACA4C,YAAAA,GACI,OAAInwD,KAAKU,QAAUytO,EAAmBh+G,YACjCnwH,KAAKU,QAAUytO,EAAmB5gL,oBAA4C,MAAtBvtD,KAAKi5C,cACvD50C,QAAQC,QAAQtE,KAAK2sO,iBAAmB9/M,KAAKC,OAEjD1mB,MAAM+pD,cACjB,CACArX,SAAAA,GACI,OAAO94C,KAAKU,QAAUytO,EAAmBpB,OAC7C,CACAoR,QAAAA,GACI,OAAOn+O,KAAKU,QAAUytO,EAAmB/9G,cAC7C,CAGAxqH,QAAAA,GACI,MAAM+uD,GAAS,EAAIvB,EAAS3zC,QAAQzf,KAAKwzD,IACnChyD,GAAUkE,OAAOivD,EAAOP,eAAiB,MAAQ,MACvD,OAAO,EAAI3e,EAASgC,eAAej2C,EAAQxB,KAAK03C,WAAY13C,KAAK21C,QAAQl0B,OAC7E,CAIA,0BAAM40P,GACF,MAAMr1P,EAAehhB,KAAK21C,QAAQn0B,SAC5Bhb,EAAUxG,KAAKwG,eAAiBwa,EAAa2nF,eAAe3oG,KAAKu2C,cAAcmX,aAAc1tD,KAAKu2C,cAAc4B,aAAcn4C,KAAKu2C,cAAcE,WAAYz2C,KAAKu2C,cAAc0W,gBAOtL,aANyD,MAAhCjsC,EAAas1P,gBAClCt1P,EAAas1P,gBAAgBt2Q,KAAKu2C,cAAe/vC,GACjDwa,EAAay3B,aAAaz4C,KAAKu2C,cAAe/vC,UACK,MAA/Bwa,EAAau1P,eACjCv1P,EAAau1P,eAAev2Q,KAAKq3C,eAAgBr3C,KAAKu2C,cAAe/vC,GACrEwa,EAAao3B,YAAYp4C,KAAKq3C,eAAgBr3C,KAAKu2C,cAAe/vC,GAE1E,CACA,6BAAM6lO,GACF,OAAO,EAAI52L,EAASgC,qBAAqBz3C,KAAKq2Q,uBAAwBr2Q,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,OACtH,CACA,wBAAM42B,GACF,MAAOC,EAAS9xC,SAAiBnC,QAAQoE,IAAI,CACzCzI,KAAK21C,QAAQn0B,SAASg3B,WAAWx4C,KAAKq3C,eAAgBr3C,KAAK21C,QAAQn0B,SAASqG,4BAA4B,GACxF,MAAhB7nB,KAAKwG,QAAkBnC,QAAQC,QAAQtE,KAAKwG,SAAWxG,KAAK21C,QAAQn0B,SAASmnF,eAAe3oG,KAAKu2C,cAAcmX,aAAc1tD,KAAKu2C,cAAc4B,aAAcn4C,KAAKu2C,cAAcE,WAAYz2C,KAAKu2C,cAAc0W,kBAI9MvU,QAFkB14C,KAAK21C,QAAQn0B,SAASi3B,aAAaz4C,KAAKu2C,cAAe/vC,SACxDxG,KAAK21C,QAAQn0B,SAAS42B,YAAYp4C,KAAKq3C,eAAgBr3C,KAAKu2C,cAAe/vC,GAC1DxG,KAAKu2C,cAAc2B,kBAC3D,MAAO,CACHS,cAAeL,GAAWI,EAC1BJ,SAAS,EAAI7C,EAASgC,eAAea,EAASt4C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,QAC1Fm3B,UAAU,EAAInD,EAASgC,eAAeiB,EAAU14C,KAAK21C,QAAQ/tB,iBAAkB5nB,KAAK21C,QAAQl0B,QAEpG,CASA,oBAAM6sC,CAAelmD,GAAuC,IAA1BmmD,EAAoB3sD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACrD,GAAI5B,KAAKU,QAAUytO,EAAmBh+G,aACjCnwH,KAAKU,QAAUytO,EAAmB5gL,oBAA4C,MAAtBvtD,KAAKi5C,eAC9D,MAAM,IAAIp1C,MAAM,gCACpB,MAAMypB,EAAkB,IAAIsiC,gBACT,MAAfxnD,GACAA,EAAYsgB,iBAAiB,SAAS,IAAM4E,EAAgBI,MAAMtlB,EAAY4lB,UAClF,IAAI1G,GAAO,EACO,MAAdtnB,KAAKyzD,OAAkBzzD,KAAKm2Q,WAC5B7iN,EAAQ4B,MAAMq0D,2BAA2B,CAAEj/D,GAAItqD,KAAKkvO,QAASlmI,SAAUhpG,KAAKmvO,eAAiBnvO,KAAKwzD,IAAI5wC,OAAMrR,IACxGvR,KAAKk2Q,gBAAgBxoP,MAAMnc,EAAE,IAEjCvR,KAAKm2Q,UAAW,EAChB7uP,KAAS,GAERtnB,KAAK+4C,YACN/4C,KAAK+4C,WAAY,EACjBzxB,KAAS,GAETA,SACMtnB,KAAKulB,eACf,IAAIixP,EAAoBA,IAAMlpP,EAAgBI,MAAM1tB,KAAKk2Q,gBAAgBzpP,OAAOuB,QAChFhuB,KAAKk2Q,gBAAgBzpP,OAAO/D,iBAAiB,QAAS8tP,GACtDx2Q,KAAKk2Q,gBAAgBzpP,OAAOoB,iBAC5B,IAAIC,EAAO,CAAE4gC,KAAMvC,EAAkBggE,kCAAkCj9D,QAASzuD,IAAK,IACrF,MAAQ6sB,EAAgBb,OAAO5C,SAAWiE,EAAK4gC,OAASvC,EAAkBggE,kCAAkCj9D,SACxGphC,QAAaq+B,EAAkBgD,gBAAgBs+D,wBAAwBztH,KAAKusB,IAAKvsB,KAAKi0D,iBAAiBxvD,SAAS,QAC5GqpB,EAAK4gC,OAASvC,EAAkBggE,kCAAkCj9D,eAC5D,EAAI/pD,EAAQijB,gBAAuC,IAAvBmmC,EAA6BjhC,EAAgBb,QAIvF,GAFAzsB,KAAKk2Q,gBAAgBzpP,OAAOu9H,oBAAoB,QAASwsH,GACzDlpP,EAAgBb,OAAOoB,iBACnBC,EAAK4gC,OAASvC,EAAkBggE,kCAAkCsqJ,UAAW,CAC7E,MAAMC,EAAU5oP,EAAKnqB,KACf2C,EAAW,IAAItG,KAAK21C,QAAQh0B,qBAAqBmM,EAAKnqB,KAAKA,MAajE,aAZM3D,KAAK22Q,kCAAkC32Q,KAAKq3C,eAAgB/wC,EAAUowQ,GAC5E12Q,KAAKowD,aAAe,EAAIjrD,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAASgC,2BAA2Bld,EAAUowQ,UAC7G12Q,KAAKU,QAAUytO,EAAmBh+G,YAAcnwH,KAAKU,QAAUytO,EAAmB5gL,4BAC3EvtD,KAAK+uO,gBACZ/uO,KAAK2D,KAAO2C,EACZtG,KAAKi5C,cAAgB,CACjB1lC,OAAQmjQ,EAAQnjQ,OAChBiV,QAASkuP,EAAQluP,QACjBvkB,UAAWyyQ,EAAQzyQ,iBAEjBjE,KAAKulB,aAAa4oN,EAAmBpB,UAGnD,CACA,GAAI/sO,KAAKU,QAAUytO,EAAmBh+G,YAAcnwH,KAAKU,QAAUytO,EAAmB5gL,mBAIlF,MAHIz/B,EAAK4gC,OAASvC,EAAkBggE,kCAAkCp9D,eAC5D/uD,KAAKulB,aAAa4oN,EAAmBxhL,eAEzC,IAAIy/K,EAAmB/qD,iBAAiBvzJ,EAAKrtB,IAAKqtB,EAAK4gC,KAAM5gC,EAAKnqB,KAEhF,CAMA,sCAAMizQ,GAA8C,IAAbtvP,IAAI1lB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACvC,GAAI5B,KAAKU,QAAUytO,EAAmBpB,SAClC/sO,KAAKU,QAAUytO,EAAmB/9G,gBAClCpwH,KAAKU,QAAUytO,EAAmB59G,eAClCvwH,KAAKU,QAAUytO,EAAmB79G,OAClC,OAAO,EACX,GAAItwH,KAAKU,QAAUytO,EAAmBxhL,eAAkB3sD,KAAKU,QAAUytO,EAAmB5gL,oBAA4C,MAAtBvtD,KAAKi5C,cACjH,OAAO,EACX,MAAMnrB,QAAaq+B,EAAkBgD,gBAAgBs+D,wBAAwBztH,KAAKusB,IAAKvsB,KAAKi0D,iBAAiBxvD,SAAS,QACtH,OAAQqpB,EAAK4gC,MACT,KAAKvC,EAAkBggE,kCAAkCsqJ,UACrD,MAAM9yQ,EAAO,IAAI3D,KAAK21C,QAAQh0B,qBAAqBmM,EAAKnqB,KAAKA,MAC7D,IAcI,aAbM3D,KAAK22Q,kCAAkC32Q,KAAKq3C,eAAgB1zC,EAAMmqB,EAAKnqB,MAC7E3D,KAAKowD,aAAe,EAAIjrD,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAASgC,2BAA2B7f,EAAMmqB,EAAKnqB,QAClH3D,KAAKU,MAAQytO,EAAmBpB,eACzB/sO,KAAK+uO,gBACZ/uO,KAAK2D,KAAOA,EACZ3D,KAAKi5C,cAAgB,CACjB1lC,OAAQua,EAAKnqB,KAAK4P,OAClBiV,QAASsF,EAAKnqB,KAAK6kB,QACnBvkB,UAAW6pB,EAAKnqB,KAAKM,WAEzBjE,KAAK+4C,WAAY,EACbzxB,SACMtnB,KAAKulB,gBACR,CACX,CACA,MAAOhU,GAAK,CACZ,OAAO,KACX,KAAK46C,EAAkBggE,kCAAkCp9D,QAKrD,OAJA/uD,KAAKU,MAAQytO,EAAmBxhL,cAChC3sD,KAAK+4C,WAAY,EACbzxB,SACMtnB,KAAKulB,gBACR,EACX,QACI,OAAO,KAEnB,CAYA,uCAAMoxP,CAAkCjzQ,EAAQC,EAAMM,GAElD,GADAN,EAAK8+D,WAAW/+D,GACZC,EAAK+pD,eAAiB1tD,KAAKu2C,cAAcmX,aACzC,MAAM,IAAIrsC,EAAoBkD,kBAAkB,wBACpD,IAAK5gB,EAAKg/D,QAAQ3iE,KAAKu2C,cAAcE,YACjC,MAAM,IAAIp1B,EAAoBkD,kBAAkB,sBACpD,GAAI5gB,EAAKs0C,qBAAuBj4C,KAAKu2C,cAAc0B,qBAC/C,MAAM,IAAI52B,EAAoBkD,kBAAkB,6BACpD,GAAI5gB,EAAK6yC,YAAcx2C,KAAKu2C,cAAcC,YACtC,MAAM,IAAIn1B,EAAoBkD,kBAAkB,4BACpD,GAAI5gB,EAAKspD,iBAAmBjtD,KAAKu2C,cAAc0W,eAC3C,MAAM,IAAI5rC,EAAoBkD,kBAAkB,8BACpD,IAAK5gB,EAAKsgE,eAAejkE,KAAKu2C,cAAcytB,mBACxC,MAAM,IAAI3iD,EAAoBkD,kBAAkB,qCAC9ClgB,QAAQoE,IAAI,EACd,EAAItD,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAAS8B,yBAAyB3f,EAAMM,EAAWjE,KAAKwG,UAAU,KAAMvB,EAAOse,6BAC9H,EAAIpe,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAAS0uC,gBAAgBvsD,EAAKw0C,aAAcx0C,KAAOqF,MAAKklB,IACnG,GAAIA,IAAWjpB,EAAO6qD,iBAAiBC,aACnC,MAAM,IAAIlsD,MAAM,mCAAmC,KAGnE,CAYA,YAAMsI,CAAOzI,EAAQ0E,EAAa8D,GAC9BlM,KAAKguD,YAAYtqD,GACjB,MAAMirB,QAAe3uB,KAAK21C,QAAQn0B,SAASysC,eAAevqD,QAAc1D,KAAK64C,UAAU3sC,IAAa,EAAM9D,GAK1G,OAJApI,KAAK8kB,WAAa6J,EAAO,GACrB3uB,KAAKU,QAAUytO,EAAmBpB,SAAW/sO,KAAKU,QAAUytO,EAAmB5gL,0BACzEvtD,KAAKulB,aAAa4oN,EAAmB/9G,gBAExCzhG,EAAO,EAClB,CACA,sBAAMu/B,CAAiB9lD,GACnB,GAAIpI,KAAKU,QAAUytO,EAAmB/9G,gBAAkBpwH,KAAKU,QAAUytO,EAAmB59G,cACtF,OAAOlsH,QAAQC,UACnB,GAAItE,KAAKU,QAAUytO,EAAmBpB,SAAY/sO,KAAKU,QAAUytO,EAAmB5gL,oBAA4C,MAAtBvtD,KAAKi5C,cAC3G,MAAM,IAAIp1C,MAAM,iBACpB,MAAMypB,GAAkB,EAAInoB,EAAQooB,uBAAuBnlB,GACrDumB,QAAetqB,QAAQ8pD,KAAK,CAC9BnuD,KAAKouD,yBAAyB9gC,EAAgBb,QAC9CzsB,KAAKquD,cAAc8/K,EAAmB/9G,eAAgB,MAAO9iG,EAAgBb,QAAQzjB,MAAK,IAAM,MAOpG,GALAskB,EAAgBI,QACD,IAAXiB,GACA3uB,KAAK6hB,OAAO0F,MAAM,oDACP,IAAXoH,GACA3uB,KAAK6hB,OAAO0F,MAAM,0DACP,IAAXoH,EAMA,OALA3uB,KAAK6hB,OAAO0F,MAAM,uEACdvnB,KAAKU,QAAUytO,EAAmBpB,SAClC/sO,KAAKU,QAAUytO,EAAmB5gL,0BAC5BvtD,KAAKulB,aAAa4oN,EAAmBxhL,gBAI/C3sD,KAAKU,QAAUytO,EAAmBpB,SAClC/sO,KAAKU,QAAUytO,EAAmB5gL,0BAC5BvtD,KAAKulB,aAAa4oN,EAAmB/9G,eAEnD,CAUAquH,QAAAA,CAAS/6O,GACL,GAAI1D,KAAKU,QAAUytO,EAAmB/9G,eAClC,MAAM,IAAIvsH,MAAM,oCACpB,OAAO7D,KAAK21C,QAAQn0B,SAASqlF,mBAAmBnjG,GAAU1D,KAAKq3C,eAAgBr3C,KAAK2D,KAAM3D,KAAKg0D,QAAQ,GAAM,EACjH,CAOA,WAAM3nD,CAAM3I,EAAQ0E,GAChB,MAAMumB,QAAe3uB,KAAK21C,QAAQn0B,SAASysC,eAAevqD,QAAc1D,KAAKy+O,YAAY,EAAMr2O,GAK/F,OAJApI,KAAKilB,UAAY0J,EAAO,IACpBw/M,EAAmB/9G,gBAAkB+9G,EAAmBp/K,SAAWo/K,EAAmB79G,eAChFtwH,KAAKulB,aAAa4oN,EAAmB59G,eAExC5hG,EAAO,EAClB,CAQA,qBAAM+vN,CAAgBt2O,GAClB,GAAIpI,KAAKU,QAAUytO,EAAmB59G,cAClC,OAAOlsH,QAAQC,UACnB,GAAItE,KAAKU,QAAUytO,EAAmB/9G,eAClC,MAAM,IAAIvsH,MAAM,sCACpB,MAAMypB,EAAkB,IAAIsiC,gBACT,MAAfxnD,GACAA,EAAYsgB,iBAAiB,SAAS,IAAM4E,EAAgBI,MAAMtlB,EAAY4lB,UAClF,MAAM4D,QAAYvtB,QAAQ8pD,KAAK,CAC3BnuD,KAAK6vD,uBAAuBviC,EAAgBb,QAC5CzsB,KAAKquD,cAAc8/K,EAAmB59G,cAAe,KAAMjjG,EAAgBb,QAAQzjB,MAAK,IAAM,IAC9FhJ,KAAKquD,cAAc8/K,EAAmBp/K,QAAS,KAAMzhC,EAAgBb,QAAQzjB,MAAK,IAAM,MAG5F,GADAskB,EAAgBI,QACJ,IAARkE,EAAJ,CAIA,GAAY,IAARA,EAEA,MADA5xB,KAAK6hB,OAAO0F,MAAM,2DACZ,IAAI1jB,MAAM,gCAEpB7D,KAAK6hB,OAAO0F,MAAM,6CACdqK,IAAQ3sB,EAAO6qD,iBAAiBlB,MAC5B5uD,KAAKU,QAAUytO,EAAmB59G,qBAC5BvwH,KAAKulB,aAAa4oN,EAAmB59G,eAE/C3+F,IAAQ3sB,EAAO6qD,iBAAiBC,cAAgBn+B,IAAQ3sB,EAAO6qD,iBAAiBf,SAC5E/uD,KAAKU,QAAUytO,EAAmB59G,eAClCvwH,KAAKU,QAAUytO,EAAmB79G,cAC5BtwH,KAAKulB,aAAa4oN,EAAmB79G,OAbnD,MAFItwH,KAAK6hB,OAAO0F,MAAM,gEAiB1B,CAGAsvP,0BAAAA,GACI,OAAuD,MAAhD72Q,KAAK21C,QAAQn0B,SAASs1P,sBACjC,CAYA,oBAAMvqQ,CAAe7I,EAAQ0E,EAAa8D,GACtC,IAAKlM,KAAK62Q,6BACN,MAAM,IAAIhzQ,MAAM,mFAEpB,GADA7D,KAAKguD,YAAYtqD,GACb1D,KAAKU,QAAUytO,EAAmB/9G,eAClC,MAAO,CAAC,WAAYpwH,KAAKqM,MAAM3I,IACnC,MAAMirB,QAAe3uB,KAAK21C,QAAQn0B,SAASysC,eAAevqD,QAAc1D,KAAK+2Q,kBAAkB7qQ,IAAa,EAAM9D,GAClHpI,KAAK8kB,WAAa6J,EAAO,IAAM3uB,KAAK8kB,WACpC9kB,KAAKilB,UAAY0J,EAAOA,EAAO9sB,OAAS,IAAM7B,KAAKilB,UAC/CjlB,KAAKU,QAAUytO,EAAmB59G,qBAC5BvwH,KAAKulB,aAAa4oN,EAAmB59G,cAEnD,CAYA,uBAAMwmJ,CAAkB7qQ,GACpB,GAAIlM,KAAKU,QAAUytO,EAAmB/9G,eAClC,aAAapwH,KAAKy+O,WACtB,GAAIz+O,KAAKU,QAAUytO,EAAmBpB,UAAY/sO,KAAKU,QAAUytO,EAAmB5gL,oBAA4C,MAAtBvtD,KAAKi5C,eAC3G,MAAM,IAAIp1C,MAAM,6BACpB,MAAMmzQ,QAAgBh3Q,KAAK64C,UAAU3sC,GAC/B+qQ,QAAiBj3Q,KAAK21C,QAAQn0B,SAASqlF,mBAAmB7mG,KAAKq3C,eAAgBr3C,KAAK2D,KAAM3D,KAAKg0D,QAAQ,GAAM,EAAM,MAAM,GAC/H,OAAOgjN,EAAQ7+P,OAAO8+P,EAC1B,CAMAniN,OAAAA,GACI,OAAqB,MAAd90D,KAAKyzD,KAChB,CAIAsB,QAAAA,GACI,OAAO/0D,KAAKyzD,KAChB,CAIA,6BAAMyjN,CAAwBzjN,GAC1B,GAAkB,MAAdzzD,KAAKyzD,MACL,MAAM,IAAI5vD,MAAM,0DACpB,IAAIszQ,EACJ,GAAuB,kBAAX1jN,EAAqB,CAC7B,MAAM2jN,QAAoB9jN,EAAQ4B,MAAMH,SAAStB,GACjD,GAAmB,MAAf2jN,GAA2C,oBAApBA,EAAYtyN,IACnC,MAAM,IAAIgiE,EAAY6C,UAAU,6CACpCwtJ,EAAcC,CAClB,MAEID,EAAc1jN,EAAMpB,OAExBiB,EAAQ4B,MAAMw0D,iBAAiBytJ,EAAan3Q,KAAKwzD,IAAI5wC,OAAMrR,GAAKvR,KAAKk2Q,gBAAgBxoP,MAAMnc,KAC3FvR,KAAKyzD,MAAQ0jN,EAAY5qP,IACzBvsB,KAAKmvO,cAAgBgoC,EAAYnuK,SACjChpG,KAAKkvO,QAAUioC,EAAY7sN,GAC3BtqD,KAAKm2Q,UAAW,QACVn2Q,KAAKulB,cACf,CAGAyqC,SAAAA,GACI,MAAO,IACA5pD,MAAM4pD,YACTwD,GAAIxzD,KAAKwzD,GACTQ,OAAQh0D,KAAKg0D,OACbP,MAAOzzD,KAAKyzD,MACZy7K,QAASlvO,KAAKkvO,QACdC,cAAenvO,KAAKmvO,cACpBgnC,SAAUn2Q,KAAKm2Q,SACfpnC,gBAAyC,MAAxB/uO,KAAK+uO,gBAA0B,KAAO/uO,KAAK+uO,gBAAgB/+K,YAEpF,CASA,wBAAMC,GACF,GAAIjwD,KAAKU,QAAUytO,EAAmBpB,SAAY/sO,KAAKU,QAAUytO,EAAmB5gL,oBAA4C,MAAtBvtD,KAAKi5C,cAAwB,CAGnI,aADqB,EAAI9zC,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAAS0uC,gBAAgBlwD,KAAKq3C,eAAgBr3C,KAAK2D,SAEnH,KAAKsB,EAAO6qD,iBAAiBlD,SAEzB,OADA5sD,KAAKU,MAAQytO,EAAmB/9G,gBACzB,EACX,KAAKnrH,EAAO6qD,iBAAiBf,QAEzB,OADA/uD,KAAKU,MAAQytO,EAAmBxhL,eACzB,EACX,KAAK1nD,EAAO6qD,iBAAiBlB,KAEzB,OADA5uD,KAAKU,MAAQytO,EAAmB59G,eACzB,EAEf,OAAO,CACX,CACA,GAAIvwH,KAAKU,QAAUytO,EAAmB/9G,gBAAkBpwH,KAAKU,QAAUytO,EAAmBp/K,QAAS,CAE/F,MAAMsoN,QAAqB,EAAIlyQ,EAAQke,iBAAgB,IAAMrjB,KAAK21C,QAAQn0B,SAAS0uC,gBAAgBlwD,KAAKq3C,eAAgBr3C,KAAK2D,QAC7H,OAAI0zQ,IAAiBpyQ,EAAO6qD,iBAAiBlB,MACzC5uD,KAAKU,MAAQytO,EAAmB59G,eACzB,IAEP8mJ,IAAiBpyQ,EAAO6qD,iBAAiBC,cAAgBsnN,IAAiBpyQ,EAAO6qD,iBAAiBf,WAClG/uD,KAAKU,MAAQytO,EAAmB79G,QACzB,EAGf,CACJ,CACA,WAAM7pG,CAAMa,GACR,IAAIZ,GAAU,EACd,GAAI1mB,KAAKU,QAAUytO,EAAmBh+G,YAAenwH,KAAKU,QAAUytO,EAAmB5gL,oBAA4C,MAAtBvtD,KAAKi5C,cAAwB,CAClIj5C,KAAK2sO,iBAAmB9/M,KAAKC,QAC7B9sB,KAAKU,MAAQytO,EAAmB5gL,mBAChC7mC,KAAY,GAGD,aADM1mB,KAAK42Q,kCAAiC,KAEvDlwP,KAAY,EACpB,CAUA,OATAA,UAAkB1mB,KAAKiwD,sBACnBjwD,KAAKU,QAAUytO,EAAmBpB,SAAY/sO,KAAKU,QAAUytO,EAAmB5gL,oBAA4C,MAAtBvtD,KAAKi5C,uBAChGj5C,KAAKmwD,iBACZnwD,KAAKU,MAAQytO,EAAmBxhL,cAChCjmC,KAAY,IAGhBY,GAAQZ,SACF1mB,KAAKulB,eACRmB,CACX,CACA,WAAMO,CAAMK,GACR,OAAQtnB,KAAKU,OACT,KAAKytO,EAAmBh+G,WACpB,GAAInwH,KAAK2sO,iBAAmB9/M,KAAKC,MAI7B,OAHA9sB,KAAKU,MAAQytO,EAAmB5gL,mBAC5BjmC,SACMtnB,KAAKulB,gBACR,EAEX,MACJ,KAAK4oN,EAAmBpB,QACpB,GAAI/sO,KAAKowD,OAASvjC,KAAKC,MAInB,OAHA9sB,KAAKU,MAAQytO,EAAmB5gL,mBAC5BjmC,SACMtnB,KAAKulB,gBACR,EAEX,MACJ,KAAK4oN,EAAmB/9G,eAEpB,SADsBpwH,KAAK21C,QAAQn0B,SAASwtC,UAAUhvD,KAAKq3C,eAAgBr3C,KAAK2D,MAK5E,OAHA3D,KAAKU,MAAQytO,EAAmBp/K,QAC5BznC,SACMtnB,KAAKulB,gBACR,EAIvB,EAEJzlB,EAAQwM,cAAgBA,8tBC/oBxB,MAAAwS,EAAAhe,EAAA,OAEAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAEA2zK,EAAA3zK,EAAA,OAEAw2Q,EAAAx2Q,EAAA,OAEAy2Q,EAAAz2Q,EAAA,OAEA4oK,EAAA5oK,EAAA,MAEA69O,EAAA79O,EAAA,OAEA20N,EAAA30N,EAAA,MAEA4pK,EAAA5pK,EAAA,OAEAq5C,EAAAr5C,EAAA,OAEA02Q,EAAA12Q,EAAA,OAEA22Q,EAAA32Q,EAAA,OAEAk+O,EAAAl+O,EAAA,OAEA42Q,EAAA52Q,EAAA,OAEAuiK,EAAAviK,EAAA,OAEA62Q,EAAA72Q,EAAA,OAEAm7C,EAAAn7C,EAAA,OAEA82Q,EAAA92Q,EAAA,OAEAy/E,EAAAz/E,EAAA,OAEAs5C,EAAAt5C,EAAA,OAEAk5C,EAAAl5C,EAAA,OAEA+2Q,EAAA/2Q,EAAA,OAEAk0F,EAAAl0F,EAAA,OACAme,EAAAne,EAAA,OAEAwyK,EAAAxyK,EAAA,OA+BAhB,EAAAA,kBAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAY1b,KAAK9B,OAAQ,MAAM,IAAImd,EAAAyB,iCAExC,MAAM9Y,GAAO,EAAAmX,EAAAa,MAAKF,OAAOJ,EAAY1b,MACrC,GAAIgE,IAASsX,EAAAmB,iBAAiB+8J,eAAgB,OAAO,EAAA6hE,EAAA84B,iCAAgCz4P,EAAard,GAClG,GAAI2F,IAASsX,EAAAmB,iBAAiB46J,kBAAmB,OAAO,EAAA7gI,EAAA49N,oCAAmC14P,EAAard,GACxG,GAAI2F,IAASsX,EAAAmB,iBAAiBg7I,mBAC1B,OAAO,EAAAiI,EAAA20G,qCAAoC34P,EAAard,GAC5D,GAAI2F,IAASsX,EAAAmB,iBAAiBivG,SAAU,OAAO,EAAAwoJ,EAAAI,2BAA0B54P,EAAard,GACtF,GAAI2F,IAASsX,EAAAmB,iBAAiB+/G,QAAS,OAAO,EAAAm3I,EAAAY,0BAAyB74P,EAAard,GACpF,GAAI2F,IAASsX,EAAAmB,iBAAiB2hN,OAAQ,OAAO,EAAA61C,EAAAO,yBAAwB94P,EAAard,GAClF,GAAI2F,IAASsX,EAAAmB,iBAAiBg4P,aAAc,OAAO,EAAA73L,EAAA83L,+BAA8Bh5P,EAAard,GAC9F,GAAI2F,IAASsX,EAAAmB,iBAAiBk4P,OAAQ,OAAO,EAAAX,EAAAY,yBAAwBl5P,EAAard,GAClF,GAAI2F,IAASsX,EAAAmB,iBAAiByS,KAAM,OAAO,EAAA62I,EAAA8uG,uBAAsBn5P,EAAard,GAC9E,GAAI2F,IAASsX,EAAAmB,iBAAiBg5B,aAAc,OAAO,EAAAq8K,EAAAgjD,+BAA8Bp5P,EAAard,GAC9F,GAAI2F,IAASsX,EAAAmB,iBAAiBs4P,cAAe,OAAO,EAAAhuG,EAAAiuG,gCAA+Bt5P,EAAard,GAChG,GAAI2F,IAASsX,EAAAmB,iBAAiB4rN,YAAa,OAAO,EAAAhyL,EAAA4+N,8BAA6Bv5P,EAAard,GAC5F,GAAI2F,IAASsX,EAAAmB,iBAAiBy4P,gBAAiB,OAAO,EAAA7jL,EAAA8jL,kCAAiCz5P,EAAard,GACpG,GAAI2F,IAASsX,EAAAmB,iBAAiB2/N,eAAgB,OAAO,EAAAw3B,EAAAwB,iCAAgC15P,EAAard,GAClG,GAAI2F,IAASsX,EAAAmB,iBAAiB44P,cAAe,OAAO,EAAA/8N,EAAAg9N,gCAA+B55P,EAAard,GAChG,GAAI2F,IAASsX,EAAAmB,iBAAiBgiE,YAAa,OAAO,EAAAu8J,EAAAu6B,8BAA6B75P,EAAard,GAC5F,GAAI2F,IAASsX,EAAAmB,iBAAiB80K,mBAC1B,OAAO,EAAAsiF,EAAA2B,qCAAoC95P,EAAard,GAC5D,GAAI2F,IAASsX,EAAAmB,iBAAiBy0P,WAAY,OAAO,EAAAz6N,EAAAg/N,6BAA4B/5P,EAAard,GAC1F,GAAI2F,IAASsX,EAAAmB,iBAAiBi5P,mBAC1B,OAAO,EAAA5B,EAAA6B,qCAAoCj6P,EAAard,GAC5D,GAAI2F,IAASsX,EAAAmB,iBAAiBm5P,gBAAiB,OAAO,EAAA7B,EAAA8B,kCAAiCn6P,EAAard,GACpG,GAAI2F,IAASsX,EAAAmB,iBAAiBq5P,iBAAkB,OAAO,EAAAhlG,EAAAilG,mCAAkCr6P,EAAard,GACtG,GAAI2F,IAASsX,EAAAmB,iBAAiBguM,iBAAkB,OAAO,EAAA96C,EAAAqmG,mCAAkCt6P,EAAard,GAEtG,GAAI2F,IAASsX,EAAAmB,iBAAiBw5P,oBAAqB,MAAM,IAAI56P,EAAA0B,iCAE7D,MAAM,IAAI1B,EAAA0B,gCACd,EAGA5gB,EAAAA,4BAAA,SAA4Ck5O,GACxC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiB+8J,cACzD,EAGAr9K,EAAAA,+BAAA,SACIk5O,GAEA,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiB46J,iBACzD,EAGAl7K,EAAAA,gCAAA,SACIk5O,GAEA,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBg7I,kBACzD,EAGAt7J,EAAAA,sBAAA,SAAsCk5O,GAClC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBivG,QACzD,EAGAvvH,EAAAA,qBAAA,SAAqCk5O,GACjC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiB+/G,OACzD,EAGArgI,EAAAA,oBAAA,SAAoCk5O,GAChC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiB2hN,MACzD,EAGAjiO,EAAAA,0BAAA,SAA0Ck5O,GACtC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBg4P,YACzD,EAGAt4Q,EAAAA,oBAAA,SAAoCk5O,GAChC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBk4P,MACzD,EAGAx4Q,EAAAA,kBAAA,SAAkCk5O,GAC9B,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiByS,IACzD,EAGA/yB,EAAAA,0BAAA,SAA0Ck5O,GACtC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBg5B,YACzD,EAGAt5C,EAAAA,2BAAA,SAA2Ck5O,GACvC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBs4P,aACzD,EAGA54Q,EAAAA,yBAAA,SAAyCk5O,GACrC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiB4rN,WACzD,EAGAlsO,EAAAA,6BAAA,SACIk5O,GAEA,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBy4P,eACzD,EAGA/4Q,EAAAA,4BAAA,SAA4Ck5O,GACxC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiB2/N,cACzD,EAGAjgP,EAAAA,2BAAA,SAA2Ck5O,GACvC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiB44P,aACzD,EAGAl5Q,EAAAA,yBAAA,SAAyCk5O,GACrC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBgiE,WACzD,EAGAtiF,EAAAA,gCAAA,SACIk5O,GAEA,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiB80K,kBACzD,EAGAp1L,EAAAA,wBAAA,SAAwCk5O,GACpC,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBy0P,UACzD,EAGA/0Q,EAAAA,gCAAA,SACIk5O,GAEA,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBi5P,kBACzD,EAUAv5Q,EAAAA,6BAAA,SACIk5O,GAEA,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBm5P,eACzD,EAGAz5Q,EAAAA,8BAAA,SACIk5O,GAEA,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBq5P,gBACzD,EAGA35Q,EAAAA,8BAAA,SACIk5O,GAEA,OAAOA,EAAQr1O,KAAK0b,cAAgBJ,EAAAmB,iBAAiBguM,gBACzD,0GCxPA,MAAA1gD,EAAA5sK,EAAA,MACA2uB,EAAA3uB,EAAA,OAQMojH,EAA2B,IAAI5sG,YAAY,CAC/C,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,aAMhF6sG,EAA4B,IAAI7sG,YAAY,CAChD,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,aAKhF8sG,EAA2B,IAAI9sG,YAAY,IACjD,MAAM+sG,UAAeqpD,EAAA99I,OAYnB3hB,WAAAA,GACE7H,MAAM,GAAI,GAAI,GAAG,GAVnB,KAAAmqC,EAAmB,EAAf4zE,EAAU,GACd,KAAA3zE,EAAmB,EAAf2zE,EAAU,GACd,KAAA1zE,EAAmB,EAAf0zE,EAAU,GACd,KAAAzzE,EAAmB,EAAfyzE,EAAU,GACd,KAAAp/D,EAAmB,EAAfo/D,EAAU,GACd,KAAAp5B,EAAmB,EAAfo5B,EAAU,GACd,KAAAl5D,EAAmB,EAAfk5D,EAAU,GACd,KAAAh5B,EAAmB,EAAfg5B,EAAU,EAId,CACUv4G,GAAAA,GACR,MAAM,EAAE2kC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEqU,EAAC,EAAEgmC,EAAC,EAAE9/B,EAAC,EAAEkgC,GAAMnrF,KACnC,MAAO,CAACuwC,EAAGC,EAAGC,EAAGC,EAAGqU,EAAGgmC,EAAG9/B,EAAGkgC,EAC/B,CAEU70E,GAAAA,CACRi6B,EAAWC,EAAWC,EAAWC,EAAWqU,EAAWgmC,EAAW9/B,EAAWkgC,GAE7EnrF,KAAKuwC,EAAQ,EAAJA,EACTvwC,KAAKwwC,EAAQ,EAAJA,EACTxwC,KAAKywC,EAAQ,EAAJA,EACTzwC,KAAK0wC,EAAQ,EAAJA,EACT1wC,KAAK+kD,EAAQ,EAAJA,EACT/kD,KAAK+qF,EAAQ,EAAJA,EACT/qF,KAAKirD,EAAQ,EAAJA,EACTjrD,KAAKmrF,EAAQ,EAAJA,CACX,CACUt6D,OAAAA,CAAQN,EAAgBwG,GAEhC,IAAK,IAAI/rB,EAAI,EAAGA,EAAI,GAAIA,IAAK+rB,GAAU,EAAGqtF,EAASp5G,GAAKulB,EAAK+zF,UAAUvtF,GAAQ,GAC/E,IAAK,IAAI/rB,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAC5B,MAAMu5G,EAAMH,EAASp5G,EAAI,IACnBw5G,EAAKJ,EAASp5G,EAAI,GAClBy5G,GAAK,EAAAh1F,EAAA6uF,MAAKiG,EAAK,IAAK,EAAA90F,EAAA6uF,MAAKiG,EAAK,IAAOA,IAAQ,EAC7C71C,GAAK,EAAAj/C,EAAA6uF,MAAKkG,EAAI,KAAM,EAAA/0F,EAAA6uF,MAAKkG,EAAI,IAAOA,IAAO,GACjDJ,EAASp5G,GAAM0jE,EAAK01C,EAASp5G,EAAI,GAAKy5G,EAAKL,EAASp5G,EAAI,IAAO,CACjE,CAEA,IAAI,EAAEulC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEqU,EAAC,EAAEgmC,EAAC,EAAE9/B,EAAC,EAAEkgC,GAAMnrF,KACjC,IAAK,IAAIgL,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MACM05G,EAAMv5B,IADG,EAAA17D,EAAA6uF,MAAKv5D,EAAG,IAAK,EAAAt1B,EAAA6uF,MAAKv5D,EAAG,KAAM,EAAAt1B,EAAA6uF,MAAKv5D,EAAG,MACzB,EAAA2oH,EAAAh+I,KAAIq1B,EAAGgmC,EAAG9/B,GAAKi5D,EAASl5G,GAAKo5G,EAASp5G,GAAM,EAE/D25G,IADS,EAAAl1F,EAAA6uF,MAAK/tE,EAAG,IAAK,EAAA9gB,EAAA6uF,MAAK/tE,EAAG,KAAM,EAAA9gB,EAAA6uF,MAAK/tE,EAAG,MAC7B,EAAAm9H,EAAA/9I,KAAI4gB,EAAGC,EAAGC,GAAM,EACrC06C,EAAIlgC,EACJA,EAAI8/B,EACJA,EAAIhmC,EACJA,EAAKrU,EAAIg0E,EAAM,EACfh0E,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAKm0E,EAAKC,EAAM,CAClB,CAEAp0E,EAAKA,EAAIvwC,KAAKuwC,EAAK,EACnBC,EAAKA,EAAIxwC,KAAKwwC,EAAK,EACnBC,EAAKA,EAAIzwC,KAAKywC,EAAK,EACnBC,EAAKA,EAAI1wC,KAAK0wC,EAAK,EACnBqU,EAAKA,EAAI/kD,KAAK+kD,EAAK,EACnBgmC,EAAKA,EAAI/qF,KAAK+qF,EAAK,EACnB9/B,EAAKA,EAAIjrD,KAAKirD,EAAK,EACnBkgC,EAAKA,EAAInrF,KAAKmrF,EAAK,EACnBnrF,KAAKsW,IAAIi6B,EAAGC,EAAGC,EAAGC,EAAGqU,EAAGgmC,EAAG9/B,EAAGkgC,EAChC,CACUp6D,UAAAA,GACRqzF,EAASnzF,KAAK,EAChB,CACAY,OAAAA,GACE7xB,KAAKsW,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9BtW,KAAKqwB,OAAOY,KAAK,EACnB,EAGF,MAAMgtM,UAAe55G,EASnBp2G,WAAAA,GACE7H,QATF,KAAAmqC,GAAI,WACJ,KAAAC,EAAI,UACJ,KAAAC,EAAI,UACJ,KAAAC,GAAI,UACJ,KAAAqU,GAAI,QACJ,KAAAgmC,EAAI,WACJ,KAAA9/B,EAAI,WACJ,KAAAkgC,GAAI,WAGFnrF,KAAK+vB,UAAY,EACnB,EAOWjwB,EAAAA,QAAyB,EAAA2vB,EAAAm1F,kBAAgB,IAAM,IAAIP,IACnDvkH,EAAAA,QAAyB,EAAA2vB,EAAAm1F,kBAAgB,IAAM,IAAIq5G,qIC/HhEj7N,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ+5Q,kBAAoB/5Q,EAAQg6Q,uBAAoB,EACxD,MAAMtyF,EAAqB1mL,EAAQ,OAC7BD,EAAYC,EAAQ,OACpB2mL,EAAiB3mL,EAAQ,OACzBqE,EAAUrE,EAAQ,MAClBwJ,EAAcxJ,EAAQ,OACtBi5Q,EAAiBj5Q,EAAQ,OAC/B,MAAMg5Q,EACF7rQ,WAAAA,CAAY+rQ,EAAkBz4Q,GACtBy4Q,aAA4Bn5Q,EAAUiE,WACtC9E,KAAKsiQ,WAAa0X,EAClBh6Q,KAAKuB,MAAQA,IAGbvB,KAAKsiQ,WAAa,IAAIzhQ,EAAUiE,UAAUk1Q,EAAiB1X,YAC3DtiQ,KAAKuB,MAAQ,IAAIV,EAAUiE,UAAUk1Q,EAAiBz4Q,OAE9D,CACAyuD,SAAAA,GACI,MAAO,CACHsyM,WAAYtiQ,KAAKsiQ,WAAW33O,WAC5BppB,MAAOvB,KAAKuB,MAAMopB,WAE1B,EAEJ7qB,EAAQg6Q,kBAAoBA,EAC5B,MAAMD,UAA0BryF,EAAmBtuE,iBAS/C,qBAAM+gK,CAAgBv2Q,EAAQ4+P,EAAY4X,GACtC,MAAMnoB,EAAc,GAAKmoB,EACnBC,QAAwB,EAAIh1Q,EAAQke,iBAAgB,IAAMrjB,KAAKkB,WAAWyzF,kCAAkCo9J,IAAc/xP,KAAKupB,aACrI,OAAO,IAAIk+J,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,KAAM,CACtD35E,EAAU26B,cAAckf,cAAc,CAClCI,WAAYp3C,EACZy3C,iBAAkBmnN,EAAW39P,UAC7Bq2C,SAAUm/N,EACV/+N,MAAO22M,EACP/vP,UAAWhC,KAAKm5G,QAAQn3G,kBAEtBhC,KAAKm5G,QAAQg4B,QACdipI,WACAvvP,SAAS,CACVnnB,SACAC,KAAM2+P,EAAW39P,YAEhB0a,eACNw6P,EAAkBxxF,QAAQgyF,YAAa,KAAM,CAAC/X,GACrD,CAOA,sBAAMgY,CAAiB52Q,EAAQiB,GAC3B,OAAO,IAAI8iL,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,WAAYx6E,KAAKm5G,QAAQg4B,QACxEopI,YACA1vP,SAAS,CACVnnB,SACAC,KAAMgB,IAEL0a,cAAew6P,EAAkBxxF,QAAQmyF,kBAAmBx6Q,KAAKw6E,KAAKqC,KAAKC,WAAW,CAACp5E,EAAQiB,IACxG,CAaA,eAAM81Q,CAAU/2Q,EAAQ4+P,EAAYoY,EAAW3jP,EAAQ4jP,GACnD,MAAMC,EAAWxxQ,KAAKsI,IAAIgpQ,EAAU74Q,OAASk1B,EAAQ4jP,GACrD,MAAO,CACHE,aAAcD,EACd59L,OAAQ,IAAIyqG,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,WAAYx6E,KAAKm5G,QAAQg4B,QACzEupI,UAAU3jP,EAAQ2jP,EAAUhtQ,MAAMqpB,EAAQA,EAAS6jP,IACnD/vP,SAAS,CACVnnB,SACAC,KAAM2+P,EAAW39P,YAEhB0a,cAAew6P,EAAkBxxF,QAAQyyF,YAEtD,CACA7sQ,WAAAA,CAAYusE,EAAMnsE,GACdjI,MAAMo0E,GACNx6E,KAAK+6Q,cAAgB/6Q,KAAKw6E,KAAK52E,SAAQ,CAACwuF,EAAc1uF,IAAW,CAACa,EAAOC,KAAKd,EAAOU,WAAYguF,KACjGpyF,KAAKg7Q,oBAAsBh7Q,KAAKw6E,KAAK52E,SAAQ,CAACwuF,EAAcp+B,IAAW,CAACA,EAAQo+B,KAChFpyF,KAAKqO,QAAUA,CACnB,CASA4sQ,eAAAA,CAAgBv3Q,EAAQiB,GACpB,OAAO3E,KAAKqO,QAAQszK,SAASh9K,EAAUgmB,WAAY,IAAImvP,EAAkBn1Q,EAAWjB,GACxF,CAIA,UAAMyL,SACInP,KAAKqO,QAAQc,OACnB,MAAM+rQ,QAAmBl7Q,KAAKqO,QAAQ2zK,SAAS83F,GAC/C95Q,KAAK6hB,OAAOwD,KAAK,6DAA+D61P,EAAWr5Q,OAC/F,CAOAs5Q,iBAAAA,CAAkBx2Q,GACd,OAAO3E,KAAKqO,QAAQwzK,WAAWl9K,EAAUgmB,WAC7C,CACA,yBAAMywP,CAAoB13Q,GACtB,MAAM23Q,EAAkB,GACxB,IAAIC,EAAc,GAClB,IAAK,IAAItxQ,KAAOhK,KAAKqO,QAAQ1K,KAAM,CAC/B,MAAM,WAAE2+P,EAAU,MAAE/gQ,GAAUvB,KAAKqO,QAAQ1K,KAAKqG,GAChD,GAAKzI,EAAMgf,OAAO7c,GAElB,IACI,MAAM63Q,QAA2Bv7Q,KAAKkB,WAAWwzF,eAAe4tK,GAChE,GAA0B,MAAtBiZ,EAA4B,OACtBv7Q,KAAKm7Q,kBAAkB7Y,GAC7B,QACJ,CACA+Y,EAAgB/zQ,KAAKg7P,GACrBgZ,GAAe51Q,OAAO61Q,EAAmBvgO,SAC7C,CACA,MAAOzpC,GAAK,CAChB,CACA,MAAO,CACH8pQ,kBACAn0M,MAAOm0M,EAAgBx5Q,OACvB25Q,WAAYF,EAEpB,CAIA,uBAAMG,CAAkB/3Q,GACpB,MAAM,gBAAE23Q,EAAe,WAAEG,SAAqBx7Q,KAAKo7Q,oBAAoB13Q,EAAOk/C,gBAC9E,GAA+B,IAA3By4N,EAAgBx5Q,OAEhB,YADA7B,KAAK6hB,OAAO0F,MAAM,0EAGtBvnB,KAAK6hB,OAAO0F,MAAM,mDAAoD8zP,GACtE,IAAIK,EAAO,GACX,IAAK,IAAI/2Q,KAAa02Q,cACLr7Q,KAAKs6Q,iBAAiB52Q,EAAOk/C,eAAgBj+C,IAAY84E,SAASi+L,GAEnF,MAAM/sP,QAAe3uB,KAAKw6E,KAAKotB,aAAa35C,eAAevqD,EAAQg4Q,GAAM,EAAM,MAAM,GACrF17Q,KAAK6hB,OAAOwD,KAAK,kDACbg2P,EAAgB3yQ,KAAIsiB,GAAMA,EAAGL,aAAYuyC,QAC7C,IAAK,IAAIv4D,KAAa02Q,QACZr7Q,KAAKm7Q,kBAAkBx2Q,GAEjC,MAAO,CACHg/G,MAAOh1F,EACPu4C,MAAOm0M,EAAgBx5Q,OACvB25Q,WAAYA,EAEpB,CAUA,qBAAMG,CAAgBj4Q,EAAQ0uF,EAAcsoL,EAAWh9L,EAAKl3E,GACxD,IAAIo1Q,EACAL,EAAqB,KACzB,GAAI73Q,aAAkBq2Q,EAAevxG,cAAkC,MAAlB9kK,EAAOE,QACxDg4Q,EAAY57Q,KAAK+6Q,cAAc3oL,EAAc1uF,EAAOE,SACpD23Q,QAA2B,EAAIp2Q,EAAQke,iBAAgB,IAAMrjB,KAAKkB,WAAWwzF,eAAeknL,EAAUj3Q,YAAY3E,KAAKupB,iBAEtH,CACD,MAAMyqC,EAAS1pD,EAAY,IAC3BsxQ,EAAY57Q,KAAKg7Q,oBAAoB5oL,EAAcp+B,EACvD,CACA,MAAM6nN,EAAYn4Q,aAAkBq2Q,EAAevxG,aAAe9kK,EAAOk/C,eAAiBl/C,EAC1F,IAAIgxO,EAAU,EACd,GAA0B,MAAtB6mC,EAA4B,CAC5B,MAAMv+L,EAAS,IAAIyqG,EAAeG,aAAai0F,EAAW77Q,KAAKw6E,MAC/DwC,EAAOz6E,UAAUvC,KAAKi6Q,gBAAgB4B,EAAWD,EAAWlB,EAAU74Q,SACtE,MAAM,aAAEg5Q,EAAc79L,OAAQ8+L,SAAsB97Q,KAAKy6Q,UAAUoB,EAAWD,EAAWlB,EAAWhmC,EAAS,KAC7G10O,KAAK6hB,OAAO0F,MAAM,0CAA4CmtN,EAAU,QAAUA,EAAUmmC,GAAgB,KAAOH,EAAU74Q,OACzH,SAAW+5Q,EAAUj3Q,UAAUgmB,YACnC+pN,GAAWmmC,EACX79L,EAAOz6E,IAAIu5Q,SACL9+L,EAAOS,SAASC,EAAKl3E,SACrBxG,KAAKi7Q,gBAAgBY,EAAWD,EAAUj3Q,UACpD,CACA,KAAO+vO,EAAUgmC,EAAU74Q,QAAQ,CAC/B,MAAM,aAAEg5Q,EAAY,OAAE79L,SAAiBh9E,KAAKy6Q,UAAUoB,EAAWD,EAAWlB,EAAWhmC,EAAS,KAChG10O,KAAK6hB,OAAO0F,MAAM,0CAA4CmtN,EAAU,QAAUA,EAAUmmC,GAAgB,KAAOH,EAAU74Q,OACzH,SAAW+5Q,EAAUj3Q,UAAUgmB,YACnC+pN,GAAWmmC,QACL79L,EAAOS,SAASC,EAAKl3E,EAC/B,CACA,OAAOo1Q,EAAUj3Q,SACrB,EAEJ7E,EAAQ+5Q,kBAAoBA,EAC5BA,EAAkBxxF,QAAU,CACxBmyF,YAAa,IACbuB,sBAAuB,KACvB1B,YAAa,IACbS,WAAY,oCClOd/6Q,EAAOD,QAAU,EAAjBC,obCFF,MAAAc,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAy2Q,EAAAz2Q,EAAA,OACAC,EAAAD,EAAA,KAmBAhB,EAAAA,eAAA,SACIoB,EACAC,EACAE,EACAmxB,EACAytG,EACA1+H,EACAC,EACAC,GAG4B,IAF5BE,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,SAAAC,IAAAF,UAAA,IAAAA,UAAA,IAAGZ,EAAA2xB,0DAEZ,MAAOzwB,EAAgBC,IAAW,EAAApB,EAAAqB,YAAWb,EAAOI,GAE9CU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAg1Q,EAAAyE,iCACIxpP,EACAnxB,EACA4+H,EACA/9H,EACAV,EACAC,EACAE,EACAK,IAIR,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,yNCuPAjC,EAAAA,YAAAikO,EAkKAjkO,EAAAA,kBAAA0hH,EAuGA1hH,EAAAA,KAAAk4D,EAsDAl4D,EAAAA,aAAAwhH,EA6CAxhH,EAAAA,QAAA,SACEwY,EACA2sN,GACgBrjO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,IAKOq6Q,EAAWh3C,GAClC,MAAO,CACLt9N,KAAM,QACNN,OAAQvH,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,QAASs9N,UAAS3sN,MAEvD,EAGAxY,EAAAA,WAAA,SACE6H,EACAu7C,GAC8B,IAA9B7vB,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QAEvB,GAAa,OAAT94G,EACF,OAAOqwD,EAAKziB,EAAEyrE,WAAW99D,QAAUphD,EAAWuxB,GAAS3sB,QAEzD,MAAM05D,EAAS7qB,EAAE2mO,SAASh5N,GAC1B,GAAa,QAATv7C,EAAgB,OAAO,EAAA7H,EAAA2/G,OAAMr/C,EAAQ/sC,GAAS3sB,QAClD,GAAa,SAATiB,EAAiB,OAAO,EAAA7H,EAAAy4D,QAAO6H,EAAQ/sC,GAAS3sB,QACpD,MAAM,IAAI7C,MAAM,4BAA4B8D,IAC9C,EAKA7H,EAAAA,SAAA00F,EAWA10F,EAAAA,eAAA,SACEwY,EACA2sN,GAE8B,IAD9B99N,EAAOvF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACPyxB,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QAEvB,OAAOjsB,EAASl8E,EAAG2sN,GAAS,EAAM99N,EAASksB,EAC7C,EAqBAvzB,EAAAA,IAAA,WAAkD,IAA9BuzB,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QACzC,MAAO,CACLtgG,OAAO+iC,GAEEi5N,EADY5mO,EAAElrC,YAAY64C,EAAS,IAAI5yB,WAAW,CAAC,KAC9BM,SAAS,EAAG,IAAK,CAACyC,EAAQ2tC,MAExDvhD,MAAAA,CAAOuhD,GACL,IAAIrM,EAASynN,EAAY38P,OAAOuhD,GAChC,GAAIrM,EAAO,KAAOthC,EAAQ2tC,IAAK,MAAM,IAAIn9D,MAAM,oBAG/C,GAFA8wD,EAASA,EAAO/jC,SAAS,GAEH,KAAlB+jC,EAAO9yD,OAAe,MAAM,IAAIgC,MAAM,oBAC1C,GAAmB,IAAf8wD,EAAO,IAAc,MAAM,IAAI9wD,MAAM,qBACzC,OAAO8wD,EAAO/jC,SAAS,GAAI,EAC7B,EAEJ,EAGA9wB,EAAAA,QAAAuhH,EAlvBA,MAAAp8G,EAAAnE,EAAA,OACA4R,EAAA5R,EAAA,OACA4gH,EAAA5gH,EAAA,OACAi/G,EAAAj/G,EAAA,OACAy0C,EAAAz0C,EAAA,OACA2uB,EAAA3uB,EAAA,OAiCA,SAASu7Q,EAAc38M,EAAY/3D,GACjC,IAEE,OADA4tC,EAAEg7K,eAAe7wJ,EAAK/3D,IACf,CACT,CAAE,MAAO4J,GACP,OAAO,CACT,CACF,CAEA,MA6JM+qQ,EAAa,CAtLsC,CACvDn8P,MAAAA,CAAO3b,GACL,GAAoB,IAAhBA,EAAK3C,QAA4B,IAAZ2C,EAAK,IAAa+wC,EAAEiM,QAAQh9C,EAAK,KAA+B,SAAxBS,EAAA6B,IAAIqZ,OAAO3b,EAAK,IAEjF,MAAO,CAAEmD,KAAM,MAAON,OAAQ04G,EAAAM,OAAOlgG,OAAO3b,GAC9C,EACAib,OAASsS,IACP,GAAgB,QAAZA,EAAGpqB,KACP,MAAO,CAAC,EAAG1C,EAAA6B,IAAI2Y,OAAO,QAAQ,GAiBqB,CACrDU,MAAAA,CAAO3b,GACL,GACkB,IAAhBA,EAAK3C,QACJ0zC,EAAEiM,QAAQh9C,EAAK,KACf63Q,EAAc73Q,EAAK,GAAI+wC,EAAEoqB,KAAKC,QACnB,aAAZp7D,EAAK,GAGP,MAAO,CAAEmD,KAAM,KAAMmY,OAAQtb,EAAK,GACpC,EACAib,OAASsS,GAA0C,OAAZA,EAAGpqB,KAAgB,CAACoqB,EAAGjS,OAAQ,iBAAche,GAK7B,CACvDqe,MAAAA,CAAO3b,GACL,GAAoB,IAAhBA,EAAK3C,QAA4B,QAAZ2C,EAAK,IAA4B,YAAZA,EAAK,IAAqB+wC,EAAEiM,QAAQh9C,EAAK,KAEvE,gBAAZA,EAAK,IAAoC,aAAZA,EAAK,GACtC,MAAO,CAAEmD,KAAM,MAAO/C,KAAMJ,EAAK,GACnC,EACAib,OAASsS,GACK,QAAZA,EAAGpqB,KAAiB,CAAC,MAAO,UAAWoqB,EAAGntB,KAAM,cAAe,iBAAc9C,GAI1B,CACrDqe,MAAAA,CAAO3b,GACL,GAAoB,IAAhBA,EAAK3C,QAA4B,YAAZ2C,EAAK,IAAqB+wC,EAAEiM,QAAQh9C,EAAK,KAAmB,UAAZA,EAAK,GAE9E,MAAO,CAAEmD,KAAM,KAAM/C,KAAMJ,EAAK,GAClC,EACAib,OAASsS,GACK,OAAZA,EAAGpqB,KAAgB,CAAC,UAAWoqB,EAAGntB,KAAM,cAAW9C,GAKE,CACvDqe,MAAAA,CAAO3b,GACL,GAAoB,IAAhBA,EAAK3C,QAA4B,IAAZ2C,EAAK,IAAa+wC,EAAEiM,QAAQh9C,EAAK,KACnC,KAAnBA,EAAK,GAAG3C,OACZ,MAAO,CAAE8F,KAAM,MAAO/C,KAAMJ,EAAK,GACnC,EACAib,OAASsS,GAA2C,QAAZA,EAAGpqB,KAAiB,CAAC,EAAGoqB,EAAGntB,WAAQ9C,GAKlB,CACzDqe,MAAAA,CAAO3b,GACL,GAAoB,IAAhBA,EAAK3C,QAA4B,IAAZ2C,EAAK,IAAa+wC,EAAEiM,QAAQh9C,EAAK,KACnC,KAAnBA,EAAK,GAAG3C,OACZ,MAAO,CAAE8F,KAAM,OAAQ/C,KAAMJ,EAAK,GACpC,EACAib,OAASsS,GAA4C,SAAZA,EAAGpqB,KAAkB,CAAC,EAAGoqB,EAAGntB,WAAQ9C,GAKxB,CACrDqe,MAAAA,CAAO3b,GACL,MAAMwxB,EAAOxxB,EAAK3C,OAAS,EAC3B,GAAmB,kBAAf2C,EAAKwxB,GAA2B,OACpC,MAAM1d,EAAI9T,EAAK,GACT+L,EAAI/L,EAAKwxB,EAAO,GACtB,GAAiB,kBAAN1d,GAA+B,kBAAN/H,EAAgB,OACpD,MAAM00N,EAAUzgO,EAAKkJ,MAAM,GAAI,GAC/B,GAAI6C,IAAM00N,EAAQpjO,OAAlB,CACA,IAAK,MAAM69D,KAAOulK,EAAS,IAAK1vL,EAAEiM,QAAQke,GAAM,OAChD,MAAO,CAAE/3D,KAAM,KAAM2Q,IAAG2sN,QAASA,EAFD,CAGlC,EAEAxlN,OAASsS,GACK,OAAZA,EAAGpqB,KAAgB,CAACoqB,EAAGzZ,KAAMyZ,EAAGkzM,QAASlzM,EAAGkzM,QAAQpjO,OAAQ,sBAAmBC,GAI5B,CACrDqe,MAAAA,CAAO3b,GACL,GAAoB,IAAhBA,EAAK3C,QAA4B,IAAZ2C,EAAK,IAAa+wC,EAAEiM,QAAQh9C,EAAK,IAC1D,MAAO,CAAEmD,KAAM,KAAMmY,OAAQtb,EAAK,GACpC,EACAib,OAASsS,GAA0C,OAAZA,EAAGpqB,KAAgB,CAAC,EAAGoqB,EAAGjS,aAAUhe,GAKlB,CACzDqe,MAAAA,CAAO3b,GACL,MAAMwxB,EAAOxxB,EAAK3C,OAAS,EAC3B,GAAmB,aAAf2C,EAAKwxB,GAAsB,OAC/B,MAAMivM,EAAU,GAEhB,IAAK,IAAIj6N,EAAI,EAAGA,EAAIgrB,EAAMhrB,IAAK,CAC7B,MAAMmmJ,EAAM3sJ,EAAKwG,GACjB,GAAQ,EAAJA,GACF,GAAY,mBAARmmJ,GAA4BnmJ,IAAMgrB,EAAO,EAAG,WADlD,CAIA,IAAKuf,EAAEiM,QAAQ2vG,GAAM,OACrB8zE,EAAQ39N,KAAK6pJ,EAFb,CAGF,CACA,MAAO,CAAExpJ,KAAM,QAASs9N,UAC1B,EACAxlN,OAASsS,IACP,GAAgB,UAAZA,EAAGpqB,KAAkB,OACzB,MAAMZ,EAAkB,GACxB,IAAK,IAAIiE,EAAI,EAAGA,EAAI+mB,EAAGkzM,QAAQpjO,OAAS,EAAGmJ,IAAKjE,EAAIO,KAAKyqB,EAAGkzM,QAAQj6N,GAAI,kBAExE,OADAjE,EAAIO,KAAKyqB,EAAGkzM,QAAQlzM,EAAGkzM,QAAQpjO,OAAS,GAAI,YACrCkF,CAAG,GAM6C,CACzDoZ,MAAAA,CAAO3b,GACL,MAAMwxB,EAAOxxB,EAAK3C,OAAS,EAC3B,GAAmB,aAAf2C,EAAKwxB,IAAoC,aAAZxxB,EAAK,GAAmB,OACzD,MAAMygO,EAAU,GACV3sN,GAAI,EAAAynG,EAAAw8J,SAAQ/3Q,EAAKwxB,EAAO,IAC9B,GAAiB,kBAAN1d,EAAX,CACA,IAAK,IAAItN,EAAI,EAAGA,EAAIgrB,EAAO,EAAGhrB,IAAK,CACjC,MAAMmmJ,EAAM3sJ,EAAKwG,GACjB,GAAQ,EAAJA,GACF,GAAImmJ,KAAe,IAANnmJ,EAAU,WAAa,eAClC,MAAM,IAAInH,MAAM,6CAFpB,CAKA,IAAK0xC,EAAEiM,QAAQ2vG,GAAM,MAAM,IAAIttJ,MAAM,6CACrCohO,EAAQ39N,KAAK6pJ,EAFb,CAGF,CACA,MAAO,CAAExpJ,KAAM,QAASs9N,UAAS3sN,IAXA,CAYnC,EACAmH,OAASsS,IACP,GAAgB,UAAZA,EAAGpqB,KAAkB,OACzB,MAAMZ,EAAkB,CAACgrB,EAAGkzM,QAAQ,GAAI,YACxC,IAAK,IAAIj6N,EAAI,EAAGA,EAAI+mB,EAAGkzM,QAAQpjO,OAAQmJ,IAAKjE,EAAIO,KAAKyqB,EAAGkzM,QAAQj6N,GAAI,eAEpE,OADAjE,EAAIO,KAAKyqB,EAAGzZ,EAAG,YACRvR,CAAG,GAMmD,CAC/DoZ,OAAO3b,IACE,CAAEmD,KAAM,UAAWN,OAAQ04G,EAAAM,OAAOlgG,OAAO3b,KAElDib,OAASsS,GACK,YAAZA,EAAGpqB,KAAqBo4G,EAAAM,OAAO5gG,OAAOsS,EAAG1qB,aAAUvF,IAsBjD06Q,EAAa9pQ,EAAE2kE,MAAM0oC,EAAAM,OAAQ3tG,EAAEijJ,OAAOnjF,MAAM8pM,IAmElD,SAASG,EAAS/rQ,EAAe6hN,GAC/B,IAAKh9K,EAAEkrB,WAAW/vD,EAAE9L,KAAM2wC,EAAEirB,OAAO+xJ,IACjC,MAAM,IAAI1uN,MAAM,6CAClB,MAAM89B,EAAI7hC,EAAAg5D,UAAUr5C,OAAO8yM,GAC3B,GAAe,OAAX5wL,EAAEh6B,MAA4B,UAAXg6B,EAAEh6B,MAA+B,UAAXg6B,EAAEh6B,KAC7C,MAAM,IAAI9D,MAAM,kBAAkB89B,EAAEh6B,kCACtC,GAAe,SAAXg6B,EAAEh6B,MAA8B,OAAXg6B,EAAEh6B,KACzB,MAAM,IAAI9D,MAAM,kBAAkB89B,EAAEh6B,kCACxC,CAEA,SAAgBo8N,EAAY18N,EAAgBixD,EAAsBi6J,GAChE,GAAIlrN,EAAQ,CACV,MAAMqJ,EAAI5Q,EAAAg5D,UAAUr5C,OAAOpY,GAE3B,GAAe,UAAXqJ,EAAE/I,MAA+B,UAAX+I,EAAE/I,MAA+B,OAAX+I,EAAE/I,MAA2B,MAAV+I,EAAE/I,KACnE,MAAM,IAAI9D,MAAM,4BAA4B6M,EAAE/I,QAChD,GAAe,OAAX+I,EAAE/I,MAAiB2wD,EAAc,CACnC,IAAK/iB,EAAEkrB,WAAW/vD,EAAE9L,KAAM2wC,EAAEq9K,QAAQt6J,IAClC,MAAM,IAAIz0D,MAAM,2CAClB,MAAMgN,EAAI/Q,EAAAg5D,UAAUr5C,OAAO64C,GAC3B,GAAe,OAAXznD,EAAElJ,MAA4B,UAAXkJ,EAAElJ,MAA+B,UAAXkJ,EAAElJ,KAC7C,MAAM,IAAI9D,MAAM,kBAAkBgN,EAAElJ,kCAEtC,GAAe,OAAXkJ,EAAElJ,KAAe,MAAM,IAAI9D,MAAM,8CACvC,CACe,QAAX6M,EAAE/I,MAAkB4qN,GAAekqD,EAAS/rQ,EAAG6hN,EACrD,CACA,GAAIj6J,EAAc,CAChB,MAAMznD,EAAI/Q,EAAAg5D,UAAUr5C,OAAO64C,GACZ,QAAXznD,EAAElJ,MAAkB4qN,GAAekqD,EAAS5rQ,EAAG0hN,EACrD,CACF,CAEA,SAAS0pD,EAAWh3C,GAClB,MAAMv8N,EAA+B,CAAC,EACtC,IAAK,MAAMg3D,KAAOulK,EAAS,CACzB,MAAMj7N,EAAM/E,EAAA6B,IAAIqZ,OAAOu/C,GACvB,GAAIh3D,EAAIsB,GAAM,MAAM,IAAInG,MAAM,8BAA8BohO,EAAQv8N,IAAIzD,EAAA6B,IAAIqZ,WAC5EzX,EAAIsB,IAAO,CACb,CACF,CAxFalK,EAAAA,UAeT4S,EAAE2hI,SAASmoI,GAAaxxQ,IAC1B,GAAe,OAAXA,EAAErD,OAAkB00Q,EAAcrxQ,EAAE8U,OAAQy1B,EAAEoqB,KAAKC,OACrD,MAAM,IAAI/7D,MAAM,2BAClB,IACc,QAAXmH,EAAErD,MAA6B,OAAXqD,EAAErD,MAA4B,SAAXqD,EAAErD,SACxC4tC,EAAEiM,QAAQx2C,EAAEpG,OAA2B,KAAlBoG,EAAEpG,KAAK/C,QAE9B,MAAM,IAAIgC,MAAM,aAAamH,EAAErD,oBACjC,GAAe,QAAXqD,EAAErD,QAAoB4tC,EAAEiM,QAAQx2C,EAAEpG,OAA2B,KAAlBoG,EAAEpG,KAAK/C,QACpD,MAAM,IAAIgC,MAAM,6BAClB,GAAe,OAAXmH,EAAErD,QAAmB4tC,EAAEiM,QAAQx2C,EAAE8U,UAAYu8P,EAAcrxQ,EAAE8U,OAAQy1B,EAAEoqB,KAAKE,UAC9E,MAAM,IAAIh8D,MAAM,0CAClB,IAAe,OAAXmH,EAAErD,MAA4B,UAAXqD,EAAErD,MAA+B,UAAXqD,EAAErD,QACxCwC,MAAMi3B,QAAQp2B,EAAEi6N,SAAU,MAAM,IAAIphO,MAAM,2CACjD,GAAe,OAAXmH,EAAErD,KAAe,CACnB,MAAM4I,EAAIvF,EAAEi6N,QAAQpjO,OACpB,IAAK,MAAM0U,KAAKvL,EAAEi6N,QAChB,IAAKo3C,EAAc9lQ,EAAGg/B,EAAEoqB,KAAKC,OAAQ,MAAM,IAAI/7D,MAAM,oCACvD,GAAImH,EAAEsN,GAAK,GAAK/H,EAAI,IAAMvF,EAAEsN,EAAI/H,EAAG,MAAM,IAAI1M,MAAM,qCACrD,CACA,GAAe,UAAXmH,EAAErD,MAA+B,UAAXqD,EAAErD,KAC1B,IAAK,MAAM4O,KAAKvL,EAAEi6N,QAChB,IAAKo3C,EAAc9lQ,EAAGg/B,EAAEoqB,KAAKE,SAAU,MAAM,IAAIh8D,MAAM,aAAamH,EAAErD,sBAE1E,GAAe,UAAXqD,EAAErD,KAAkB,CACtB,MAAM4I,EAAIvF,EAAEi6N,QAAQpjO,OACpB,GAAImJ,EAAEsN,GAAK,GAAK/H,EAAI,KAAOvF,EAAEsN,EAAI/H,EAAG,MAAM,IAAI1M,MAAM,kCACtD,CACA,OAAOmH,CAAC,IAgDGlL,EAAAA,KAAO,SAACggB,GAAele,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAuB6tB,EAAAgxF,QAEzD,IAAK47J,EAAcv8P,EAAQy1B,EAAEoqB,KAAKC,OAAQ,MAAM,IAAI/7D,MAAM,2BAC1D,MAAO,CACL8D,KAAM,KACNN,OAAQvH,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,KAAMmY,WAE3C,EACahgB,EAAAA,MAAQ,SAAC6E,GAA2D,IAAzC0uB,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QAC7D,IAAK47J,EAAc13Q,EAAW4wC,EAAEoqB,KAAKC,OAAQ,MAAM,IAAI/7D,MAAM,4BAC7D,MAAMe,EAAO2wC,EAAEq9K,QAAQjuN,GACvB,MAAO,CACLgD,KAAM,MACNN,OAAQvH,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,MAAO/C,SACxC8B,QAAS26G,EAAQhuF,GAASlT,OAAO,CAAExY,KAAM,MAAO/C,SAEpD,EACa9E,EAAAA,KAAO,SAACqsK,GAAuD,IAAzC94I,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QAExD,MAAMi8J,EAAKvwG,EAAM9kK,OACjB,IAAKkuC,EAAEiM,QAAQk7N,GAAK,MAAM,IAAI74Q,MAAM,wBAAwBsoK,EAAM9kK,+BAClE,MAAMzC,EAAO2wC,EAAEq9K,QAAQ8pD,GAEvB34C,EADejkO,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,KAAM/C,SAC1B83Q,EAAIvwG,EAAMomD,eAC9B,MAAM3gM,EAAa,CACjBjqB,KAAM,KACN2wD,aAAcokN,EACdr1Q,OAAQvH,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,KAAM/C,SACvC8B,QAAS26G,EAAQhuF,GAASlT,OAAO,CAAExY,KAAM,KAAM/C,UAGjD,OADIunK,EAAMomD,gBAAe3gM,EAAI2gM,cAAgBpmD,EAAMomD,eAC5C3gM,CACT,EACa9xB,EAAAA,MAAQ,SAACqsK,GAAuD,IAAzC94I,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QACzD,MAAMi8J,EAAKvwG,EAAM9kK,OACjB,IAAKkuC,EAAEiM,QAAQk7N,GAAK,MAAM,IAAI74Q,MAAM,wBAAwB64Q,0BAC5D,MAAM93Q,EAAO2wC,EAAEirB,OAAOk8M,GAGtB,OADA34C,EADejkO,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,MAAO/C,cAC3B9C,EAAW46Q,GACxB,CACL/0Q,KAAM,MACN4qN,cAAemqD,EACfr1Q,OAAQvH,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,MAAO/C,SACxC8B,QAAS26G,EAAQhuF,GAASlT,OAAO,CAAExY,KAAM,MAAO/C,SAEpD,EACa9E,EAAAA,OAAS,SAAC6E,GAA2D,IAAzC0uB,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QAC9D,IAAK47J,EAAc13Q,EAAW4wC,EAAEoqB,KAAKC,OAAQ,MAAM,IAAI/7D,MAAM,6BAC7D,GAAyB,KAArBc,EAAU9C,OAAe,MAAM,IAAIgC,MAAM,mCAC7C,MAAMe,EAAO2wC,EAAEq9K,QAAQjuN,GACvB,MAAO,CACLgD,KAAM,OACNN,OAAQvH,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,OAAQ/C,SACzC8B,QAAS26G,EAAQhuF,GAASlT,OAAO,CAAExY,KAAM,OAAQ/C,SAErD,EA0EA,SAAgB48G,EAAkBm7J,GAEhC,MAAMnnH,EAAMrrJ,MAAM3F,KAAKm4Q,GAEvB,KAAOnnH,EAAI3zJ,QAAU,GAAG,CAEtB2zJ,EAAI34H,MAAK,CAACpsB,EAAGS,KAAOA,EAAEigF,QAAU,IAAM1gF,EAAE0gF,QAAU,KAClD,MAAMjgF,EAAIskJ,EAAIngJ,MACR5E,EAAI+kJ,EAAIngJ,MACR87E,GAAU1gF,GAAG0gF,QAAU,IAAMjgF,GAAGigF,QAAU,GAChDqkE,EAAIluJ,KAAK,CACP6pF,SAGAyrL,OAAQ,CAACnsQ,GAAGmsQ,QAAWnsQ,EAAaS,GAAG0rQ,QAAW1rQ,IAEtD,CAEA,MAAM8kB,EAAOw/H,EAAI,GACjB,OAAQx/H,GAAM4mP,QAAU5mP,CAC1B,CAoBA,SAAS6mP,EAAelzM,GAAoC,IAAlBgoE,EAAA/vI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAgB,GACxD,IAAK+nE,EAAM,MAAM,IAAI9lE,MAAM,8BAC3B,GAAkB,SAAd8lE,EAAKhiE,KAAiB,MAAO,IAAKgiE,EAAMgoE,QAC5C,GAAkB,WAAdhoE,EAAKhiE,KAAmB,MAAM,IAAI9D,MAAM,8BAA8B8lE,KAC1E,MAAO,IACFA,EACHgoE,OAEAt4G,KAAMwjP,EAAelzM,EAAKtwC,KAAM,CAACswC,EAAKtoC,MAAMz8B,QAAS+sI,IACrDtwG,MAAOw7O,EAAelzM,EAAKtoC,MAAO,CAACsoC,EAAKtwC,KAAKz0B,QAAS+sI,IAE1D,CACA,SAASmrI,EAAgBnzM,GACvB,IAAKA,EAAM,MAAM,IAAI9lE,MAAM,8BAC3B,GAAkB,SAAd8lE,EAAKhiE,KAAiB,MAAO,CAACgiE,GAClC,GAAkB,WAAdA,EAAKhiE,KAAmB,MAAM,IAAI9D,MAAM,+BAA+B8lE,KAC3E,MAAO,IAAImzM,EAAgBnzM,EAAKtwC,SAAUyjP,EAAgBnzM,EAAKtoC,OACjE,CAEA,SAAS07O,EACPpzM,EACAqzM,GAE8B,IAD9B/oD,EAAmBryN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACnBijO,EAA8BjjO,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAE9B,IAAK6nE,EAAM,MAAM,IAAI9lE,MAAM,+BAG3B,GAFIsG,MAAMi3B,QAAQuoC,IAAyB,IAAhBA,EAAK9nE,SAAc8nE,EAAOA,EAAK,KAErDx/D,MAAMi3B,QAAQuoC,GAAO,CACxB,MAAQszM,YAAaxwN,EAASplD,OAAQ61Q,GAAevzM,EAErD,GAAIA,EAAKvR,eAAkBuR,EAAKxR,gBAAkB5iB,EAAEkrB,WAAWkJ,EAAKxR,cAAezlD,EAAEihN,OACnF,MAAM,IAAI9vN,MAAM,6CAClB,MAAMwD,EAA+B,kBAAf61Q,EAA0Bj4Q,EAAA6B,IAAI2Y,OAAOy9P,GAAcA,EACzE,IAAK3nO,EAAEiM,QAAQn6C,GAAS,MAAM,IAAIxD,MAAM,kCAAkCwD,KAE1E,OA7IJ,SACEA,EACA21Q,GAE8B,IAD9B/oD,EAAmBryN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACnBijO,EAA8BjjO,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAE9B,MAAMiF,EAAMjH,EAAAg5D,UAAUr5C,OAAOpY,GAC7B,GAAiB,YAAbN,EAAIY,KAAoB,CAG1B,GAAIk9N,EAAe,CACjB,MACMzzN,EADKsB,EAAE2kE,MAAM0oC,EAAAM,OAAQ3tG,EAAEijJ,OAAOnjF,MAAMqyJ,IAC7BplN,OAAOpY,GACpB,QAAUvF,IAANsP,EAAiB,CACnB,GAAsB,kBAAXA,EAAEzJ,OAAsByJ,EAAEzJ,KAAKkB,WAAW,OACnD,MAAM,IAAIhF,MAAM,6BAA6BuN,EAAEzJ,QACjD,MACF,CACF,CACA,GAAIssN,EAAqB,MAC3B,CACA,IAAK,CAAC,QAAS,SAASn0K,SAAS/4C,EAAIY,MACnC,MAAM,IAAI9D,MAAM,6BAA6BkD,EAAIY,QACnD,MAAMw1Q,EAAQp2Q,EACd,IAAKktN,GAAuBkpD,EAAMl4C,QAChC,IAAK,MAAM1uN,KAAK4mQ,EAAMl4C,QAAS,CAC7B,GAAI1vL,EAAEkrB,WAAWlqD,EAAGg/B,EAAEmrE,yBACpB,MAAM,IAAI78G,MAAM,0CAQlB,GAAI0xC,EAAEkrB,WAAWlqD,EAAGymQ,GAClB,MAAM,IAAIn5Q,MACR,6EAGN,CAEJ,CAkGIu5Q,CAAmB/1Q,EAAQ21Q,EAAgB/oD,EAAqB4Q,GACzD,CACLl9N,KAAM,OACN8kD,UACAplD,SACAzC,MAAM,EAAA9E,EAAAqlO,aAAY99N,EAAQolD,GAE9B,CAGA,GADoB,IAAhBkd,EAAK9nE,SAAc8nE,EAAO63C,EAAkB73C,IAC5B,IAAhBA,EAAK9nE,OAAc,MAAM,IAAIgC,MAAM,8BAGvC,MAAMw1B,EAAO0jP,EAAgBpzM,EAAK,GAAIqzM,EAAgB/oD,EAAqB4Q,GACrExjM,EAAQ07O,EAAgBpzM,EAAK,GAAIqzM,EAAgB/oD,EAAqB4Q,GAE5E,IAAKw4C,EAAIC,GAAM,CAACjkP,EAAKz0B,KAAMy8B,EAAMz8B,MAEjC,OADgC,IAA5B2wC,EAAEwrE,aAAau8J,EAAID,MAAaA,EAAIC,GAAM,CAACA,EAAID,IAC5C,CAAE11Q,KAAM,SAAU0xB,OAAMgI,QAAOz8B,KAAM2wC,EAAEgoO,WAAW,YAAaF,EAAIC,GAC5E,CAvKax9Q,EAAAA,KAAO,SAACwY,EAAW2sN,GAE9B,OAFgErjO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,IACzCq6Q,EAAWh3C,GAC3B,CAAEt9N,KAAM,KAAMN,OAAQvH,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,KAAMs9N,UAAS3sN,MACvE,EAsKaxY,EAAAA,iBAAmB,IAOhC,SAAgBk4D,EACdglN,EACArzM,GAG8B,IAF9Bt2C,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QACvBwzG,EAAmBryN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACnBijO,EAA8BjjO,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAG9B,IAAKk7Q,IAAmBrzM,EAAM,MAAM,IAAI9lE,MAAM,oDAC9C,MAAMu8D,EACsB,kBAAnB48M,EACH/3Q,EAAA6B,IAAI2Y,OAAOu9P,GACXA,GAAkBznO,EAAEmrE,wBAC1B,IAAK27J,EAAcj8M,EAAQ7qB,EAAEoqB,KAAKE,SAAU,MAAM,IAAIh8D,MAAM,4BAC5D,IAAI25Q,EAAa7zM,EACbkzM,EAAeE,EAAgBpzM,EAAMvJ,EAAQ6zJ,EAAqB4Q,SAClE/iO,EACJ,MAAMq2D,EAAgBqlN,EAAaA,EAAW54Q,UAAO9C,GAC9C27Q,EAAep9M,GAAU9qB,EAAE2rE,mBAAmB9gD,EAAQjI,GAAiBzlD,EAAEihN,OAChF,IAAI+pD,EAWAtlN,EAVAolN,IACFE,EAASZ,EAAgBU,GAAY90Q,KAAK8I,IAAC,IACtCA,EACHmsQ,aAAcj8J,EAAAE,oBAAoBzhG,OAAO,CACvCssC,SAAUj7C,EAAEi7C,SAAW3sD,EAAA89Q,kBAAoBv9M,EAC3CgxJ,YAAajxJ,EACbkxJ,WAAY9/M,EAAEmgI,YAKhB+rI,IACFtlN,EAAgBslN,EAAOh1Q,KAAK8I,GAAM,CAChCkwG,EAAAE,oBAAoBniG,OAAOjO,EAAEmsQ,cAC7BpoO,EAAElrC,YAAYmH,EAAEnK,OAAQ,IAAIipB,WAAW,CAAC9e,EAAEi7C,SAAW3sD,EAAA89Q,wBAGzD,MAAMhsP,EAAe,CACnBjqB,KAAM,KACNN,OAAQvH,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,KAAMmY,OAAQ29P,IAC/C/2Q,QAAS26G,EAAQhuF,GAASlT,OAAO,CAAExY,KAAM,KAAMmY,OAAQ29P,IAEvDA,gBAEAvlN,eAAgBkI,GAMlB,OAHIs9M,IAAQ9rP,EAAI8rP,OAASA,GACrBtlN,IAAexmC,EAAIwmC,cAAgBA,GACnCD,IAAevmC,EAAIumC,cAAgBA,GAChCvmC,CACT,CAGA,SAAgB0vF,EAAgBhpG,EAAWkmI,GACzC,MAAM5sH,EAAa,GACnB,IAAKznB,MAAMi3B,QAAQo9G,GAAO,MAAM,IAAI36I,MAAM,yCAC1C,MAAM0M,EAAIiuI,EAAK38I,OACf,GAAIyW,EAAI/H,EAAG,MAAM,IAAI1M,MAAM,0DAM3B,MAAMo7D,EAAM90D,MAAM3F,KAAK,CAAE3C,OAAQyW,IAAK,CAACmnB,EAAGz0B,IAAMA,IAC1CgrB,EAAOipC,EAAIp9D,OAAS,EAC1BwjN,EAAM,OAAS,CACbzzL,EAAItqB,KAAK23D,EAAIv2D,KAAKsC,GAAMwzI,EAAKxzI,MAC7Bi0D,EAAIjpC,IAAS,EACb,IAAIhrB,EAAIgrB,EAGR,KAAOhrB,GAAK,GAAKi0D,EAAIj0D,GAAKuF,EAAI+H,EAAItN,EAAGA,IAAK,CAGxC,GAFAi0D,EAAIj0D,GAAK,EAEC,IAANA,EAAS,MAAMq6M,EACnBpmJ,EAAIj0D,EAAI,IAAM,CAChB,CAEA,IAAKA,GAAK,EAAGA,EAAIi0D,EAAIp9D,OAAQmJ,IAAKi0D,EAAIj0D,GAAKi0D,EAAIj0D,EAAI,GAAK,CAC1D,CACA,OAAO4mB,CACT,CAxFa9xB,EAAAA,YAAc,SAACuH,GAAa,IAAEolD,EAAA7qD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAkB9B,EAAA89Q,iBAAgB,OAC3EroO,EAAEgoO,WAAW,UAAW,IAAIjtP,WAAW,CAACm8B,IAAWszD,EAAAyxG,SAASrxM,OAAO9Y,GAAQ,EA8FhEvH,EAAAA,QAAU,SAACwY,EAAW2sN,GAEjC,OAFmErjO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,IAC5Cq6Q,EAAWh3C,GAC3B3jH,EAAahpG,EAAG2sN,GAASv8N,KAAKsC,IAAC,CACpCrD,KAAM,QACNN,OAAQvH,EAAAg5D,UAAU34C,OAAO,CAAExY,KAAM,QAASs9N,QAASj6N,OAEvD,EAEalL,EAAAA,QAAWggB,IAAyB,EAAAhgB,EAAA8/G,SAAQ,EAAG,CAAC9/F,QAAShe,GAAW,GAmCjF,SAAgB0yF,EACdl8E,EACA2sN,GAG8B,IAF9B44C,EAAMj8Q,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACNuF,EAAOvF,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACPyxB,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QAEvB,MAAMq9J,GAAK,EAAAh+Q,EAAAy/G,MAAKjnG,EAAGulQ,GAAS,EAAA/9Q,EAAAshH,cAAa6jH,GAAWA,GACpD,OAAO99N,GAAU,EAAArH,EAAAggH,OAAMg+J,EAAIzqP,IAAW,EAAAvzB,EAAA4/G,MAAKo+J,EAAIzqP,EACjD,CAZavzB,EAAAA,aAAgBmlO,GAC3B96N,MAAM3F,KAAKygO,GAASpoM,KAAK0Y,EAAEwrE,cAsB7B,MAAMq7J,GAAc,EAAAn3Q,EAAAkhL,mBAAkB5wI,EAAEirB,QAExC,SAASu9M,EAAgBtxN,EAAiB9oD,GACxC,GAAIA,EAAK9B,OAAS,GAAK8B,EAAK9B,OAAS,GAAI,MAAM,IAAIgC,MAAM,2BACzD,GAAI4oD,EAAU,GAAI,MAAM,IAAI5oD,MAAM,4BAClC,GAAgB,IAAZ4oD,GAAmC,KAAhB9oD,EAAK9B,QAAiC,KAAhB8B,EAAK9B,OAChD,MAAM,IAAIgC,MAAM,sCACpB,CAEA,SAASm6Q,EAAiBvxN,EAAiB9oD,GAA8B,IAAjB0vB,EAAOzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG6tB,EAAAgxF,QAChEs9J,EAAgBtxN,EAAS9oD,GACzB,MAAMsxJ,EAAoB,IAAZxoG,EAAgBxnD,EAAA47D,OAAS57D,EAAAg5Q,QACvC,OAAOhpH,EAAM90I,OAAOkT,EAAQwtC,OAAQ,CAACpU,GAASt0C,OAAO88I,EAAM2lB,QAAQj3K,IACrE,CAEA,SAASw4Q,EAAUv9K,EAAerrF,GAChC,OAAO6oQ,EAAYj8P,OAAOo1B,EAAElrC,YAAYimB,WAAW9rB,KAAK+O,GAASqrF,GACnE,CAqBA,SAAgByiB,IAAsC,IAA9BhuF,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAuB6tB,EAAAgxF,QAC7C,MAAO,CACLtgG,MAAAA,CAAO3b,GACL,MAAM,KAAEmD,GAASnD,EACjB,GAAa,SAATmD,EAAiB,OAAOq2Q,EAAiB,EAAGx5Q,EAAKI,KAAMyuB,GACtD,GAAa,QAAT1rB,EAAgB,OAAOq2Q,EAAiB,EAAGx5Q,EAAKI,KAAMyuB,GAC1D,GAAa,OAAT1rB,EAAe,OAAOq2Q,EAAiB,EAAGx5Q,EAAKsb,OAAQuT,GAC3D,GAAa,QAAT1rB,EAAgB,OAAOw0Q,EAAU33Q,EAAKI,KAAM,CAACyuB,EAAQytC,aACzD,GAAa,OAATn5D,EAAe,OAAOw0Q,EAAU33Q,EAAKI,KAAM,CAACyuB,EAAQ0tC,aAC7D,MAAM,IAAIl9D,MAAM,wBAAwB8D,IAC1C,EACA8X,MAAAA,CAAO/Y,GACL,GAAIA,EAAQ7E,OAAS,IAAM6E,EAAQ7E,OAAS,GAAI,MAAM,IAAIgC,MAAM,0BAEhE,GAAIwvB,EAAQwtC,QAAUn6D,EAAQkO,cAAc/L,WAAW,GAAGwqB,EAAQwtC,WAAY,CAC5E,IAAIjvC,EACJ,IAEE,GADAA,EAAM3sB,EAAA47D,OAAOphD,OAAO/Y,GACC,IAAjBkrB,EAAI0O,MAAM,GAAU,MAAM,IAAIz8B,MAAM,yBAAyB+tB,EAAI0O,MAAM,KAC7E,CAAE,MAAOb,GAGP,GADA7N,EAAM3sB,EAAAg5Q,QAAQx+P,OAAO/Y,GACA,IAAjBkrB,EAAI0O,MAAM,GAAU,MAAM,IAAIz8B,MAAM,0BAA0B+tB,EAAI0O,MAAM,KAC9E,CACA,GAAI1O,EAAIre,SAAW8f,EAAQwtC,OAAQ,MAAM,IAAIh9D,MAAM,uBAAuB+tB,EAAIre,UAC9E,MAAOk5C,KAAY0sD,GAAWvnF,EAAI0O,MAC5B38B,EAAOsB,EAAA47D,OAAOwnD,UAAUlP,GAE9B,GADA4kK,EAAgBtxN,EAAS9oD,GACT,IAAZ8oD,GAAiC,KAAhB9oD,EAAK9B,OAAe,MAAO,CAAE8F,KAAM,MAAO/C,KAAMjB,GAChE,GAAgB,IAAZ8oD,GAAiC,KAAhB9oD,EAAK9B,OAAe,MAAO,CAAE8F,KAAM,OAAQ/C,KAAMjB,GACtE,GAAgB,IAAZ8oD,GAAiC,KAAhB9oD,EAAK9B,OAAe,MAAO,CAAE8F,KAAM,KAAMmY,OAAQnc,GACtE,MAAM,IAAIE,MAAM,0BACvB,CACA,MAAMF,EAAOy4Q,EAAY38P,OAAO/Y,GAChC,GAAoB,KAAhB/C,EAAK9B,OAAe,MAAM,IAAIgC,MAAM,0BAExC,GAAIF,EAAK,KAAO0vB,EAAQytC,WACtB,MAAO,CAAEn5D,KAAM,MAAO/C,KAAMjB,EAAK+J,MAAM,IAClC,GAAI/J,EAAK,KAAO0vB,EAAQ0tC,WAC7B,MAAO,CACLp5D,KAAM,KACN/C,KAAMjB,EAAK+J,MAAM,IAGrB,MAAM,IAAI7J,MAAM,0BAA0BF,EAAK,KACjD,EAEJ,waChyBA,MAAA9C,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAw2Q,EAAAx2Q,EAAA,OACAC,EAAAD,EAAA,KAiBAhB,EAAAA,QAAA,SACIoB,EACAC,EACAqxB,EACAytG,EACA1+H,EACAC,GAG4B,IAF5BG,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOzwB,EAAgBC,IAAW,EAAApB,EAAAqB,YAAWb,EAAOI,GAE9CU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAA+0Q,EAAA4G,0BAAyB1rP,EAASytG,EAAU/9H,EAAgBV,EAAQG,EAAcK,IAGtF,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,oMCvCA,MAAA+c,EAAAhe,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OACAme,EAAAne,EAAA,OAQahB,EAAAA,iCAAkC,EAAAgf,EAAAY,QAAwC,EAAC,EAAAZ,EAAAa,IAAG,iBAY3F7f,EAAAA,kCAAA,SACIqB,GAEiC,IADjCg9Q,EAAYv8Q,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAo9Q,iBACfp8Q,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAAiB,sBAEZ,KAAK,EAAAjB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMT,EAAO,CACT,CAAEU,OAAQ3e,EAAO4e,UAAU,EAAMC,YAAY,GAC7C,CAAEF,OAAQq+P,EAAcp+P,UAAU,EAAOC,YAAY,GACrD,CAAEF,OAAQjf,EAAA26B,cAAcx5B,UAAW+d,UAAU,EAAOC,YAAY,IAG9Drc,EAAOY,EAAO0b,MAAMngB,EAAAu+Q,gCAAgCn+P,MAG1D,OAFApgB,EAAAu+Q,gCAAgCl+P,OAAO,CAAEd,YAAaJ,EAAAmB,iBAAiBk+P,kBAAoB36Q,GAEpF,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,2GCzCA,SAAY46Q,GACVA,EAAA,kBACAA,EAAA,iBACD,CAHD,CAAYz+Q,EAAAy+Q,qBAAAz+Q,EAAAA,mBAAkB,iGCO9B,MAAM+hD,EAAMn8C,OAAO,GACb64C,EAAM74C,OAAO,GAsBnB,SAASslD,EAAoCwS,EAAoBjqC,GAC/D,MAAMoR,EAAMpR,EAAK41B,SACjB,OAAOqU,EAAY74B,EAAMpR,CAC3B,CAEA,SAASirP,EAAU/xL,EAAW31D,GAC5B,IAAK3H,OAAOivC,cAAcquB,IAAMA,GAAK,GAAKA,EAAI31D,EAC5C,MAAM,IAAIjzB,MAAM,qCAAuCizB,EAAO,YAAc21D,EAChF,CAEA,SAASgyL,EAAUhyL,EAAW31D,GAC5B0nP,EAAU/xL,EAAG31D,GAGb,MAAO,CAAE8hE,QAFOxvF,KAAKwG,KAAKknB,EAAO21D,GAAK,EAEpBprC,WADC,IAAMorC,EAAI,GAE/B,CAEA,SAASiyL,EAAkBv2N,EAAe/2C,GACxC,IAAKjH,MAAMi3B,QAAQ+mB,GAAS,MAAM,IAAItkD,MAAM,kBAC5CskD,EAAOp5C,SAAQ,CAACwH,EAAGvL,KACjB,KAAMuL,aAAanF,GAAI,MAAM,IAAIvN,MAAM,0BAA4BmH,EAAE,GAEzE,CACA,SAAS2zQ,EAAmBp2N,EAAgBknG,GAC1C,IAAKtlJ,MAAMi3B,QAAQmnB,GAAU,MAAM,IAAI1kD,MAAM,6BAC7C0kD,EAAQx5C,SAAQ,CAAC2B,EAAG1F,KAClB,IAAKykJ,EAAMnrI,QAAQ5T,GAAI,MAAM,IAAI7M,MAAM,2BAA6BmH,EAAE,GAE1E,CAIA,MAAMguF,EAAmB,IAAIW,QACvBilL,EAAmB,IAAIjlL,QAE7B,SAASklL,EAAKnsQ,GACZ,OAAOksQ,EAAiBhzQ,IAAI8G,IAAM,CACpC,CA6BM,SAAUo3C,EAAyB14C,EAAwB0lB,GAC/D,MAAO,CACLk0B,kBAEAb,eAAegnG,GACQ,IAAd0tH,EAAK1tH,GAIds9D,YAAAA,CAAat9D,EAAQ5gJ,GAAqB,IAAVgG,EAAC3U,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGwP,EAAEozC,KAChCjvC,EAAO47I,EACX,KAAO5gJ,EAAIsxC,GACLtxC,EAAIguC,IAAKhoC,EAAIA,EAAEhU,IAAIgT,IACvBA,EAAIA,EAAE6zC,SACN74C,IAAMguC,EAER,OAAOhoC,CACT,EAcAoiF,gBAAAA,CAAiBw4D,EAAQ1kE,GACvB,MAAM,QAAEmM,EAAO,WAAEv3C,GAAeo9N,EAAUhyL,EAAG31D,GACvCqxB,EAAc,GACpB,IAAI5xC,EAAO46I,EACP94I,EAAO9B,EACX,IAAK,IAAIqgB,EAAS,EAAGA,EAASgiE,EAAShiE,IAAU,CAC/Cve,EAAO9B,EACP4xC,EAAO7gD,KAAK+Q,GAEZ,IAAK,IAAIrN,EAAI,EAAGA,EAAIq2C,EAAYr2C,IAC9BqN,EAAOA,EAAK9V,IAAIgU,GAChB4xC,EAAO7gD,KAAK+Q,GAEd9B,EAAI8B,EAAK+wC,QACX,CACA,OAAOjB,CACT,EASA2B,IAAAA,CAAK2iC,EAAWsM,EAAkBxoF,GAGhC,MAAM,QAAEqoF,EAAO,WAAEv3C,GAAeo9N,EAAUhyL,EAAG31D,GAE7C,IAAIvgB,EAAInF,EAAEozC,KACNqG,EAAIz5C,EAAEpB,KAEV,MAAM2+B,EAAOjpC,OAAO,GAAK+mF,EAAI,GACvBwM,EAAY,GAAKxM,EACjByM,EAAUxzF,OAAO+mF,GAEvB,IAAK,IAAI71D,EAAS,EAAGA,EAASgiE,EAAShiE,IAAU,CAC/C,MAAMG,EAASH,EAASyqB,EAExB,IAAI7qB,EAAQrH,OAAO5e,EAAIo+B,GAGvBp+B,IAAM2oF,EAIF1iE,EAAQ6qB,IACV7qB,GAASyiE,EACT1oF,GAAKguC,GAWP,MAAM46C,EAAUpiE,EACVqiE,EAAUriE,EAAS3tB,KAAKoR,IAAIgc,GAAS,EACrC6iE,EAAQziE,EAAS,IAAM,EACvB0iE,EAAQ9iE,EAAQ,EACR,IAAVA,EAEFq0B,EAAIA,EAAEtoD,IAAIyoD,EAAgBquC,EAAON,EAAYI,KAE7C5iF,EAAIA,EAAEhU,IAAIyoD,EAAgBsuC,EAAOP,EAAYK,IAEjD,CAMA,MAAO,CAAE7iF,IAAGs0C,IACd,EAUAi0N,UAAAA,CAAWryL,EAAWsM,EAAkBxoF,GAA0B,IAAfwa,EAAAnpB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAASwP,EAAEozC,KAC5D,MAAM,QAAEo0C,EAAO,WAAEv3C,GAAeo9N,EAAUhyL,EAAG31D,GACvC6X,EAAOjpC,OAAO,GAAK+mF,EAAI,GACvBwM,EAAY,GAAKxM,EACjByM,EAAUxzF,OAAO+mF,GACvB,IAAK,IAAI71D,EAAS,EAAGA,EAASgiE,EAAShiE,IAAU,CAC/C,MAAMG,EAASH,EAASyqB,EACxB,GAAI9wC,IAAMsxC,EAAK,MAEf,IAAIrrB,EAAQrH,OAAO5e,EAAIo+B,GASvB,GAPAp+B,IAAM2oF,EAGF1iE,EAAQ6qB,IACV7qB,GAASyiE,EACT1oF,GAAKguC,GAEO,IAAV/nB,EAAa,SACjB,IAAIikD,EAAOse,EAAYhiE,EAAS3tB,KAAKoR,IAAIgc,GAAS,GAC9CA,EAAQ,IAAGikD,EAAOA,EAAKtxB,UAE3Bp+B,EAAMA,EAAIxoB,IAAIk4E,EAChB,CACA,OAAO1vD,CACT,EAEAg0P,cAAAA,CAAetyL,EAAW/5E,EAAMw5B,GAE9B,IAAIsiL,EAAOx1H,EAAiBptF,IAAI8G,GAKhC,OAJK87M,IACHA,EAAOxuN,KAAK24F,iBAAiBjmF,EAAG+5E,GACtB,IAANA,GAASuM,EAAiB1iF,IAAI5D,EAAGw5B,EAAUsiL,KAE1CA,CACT,EAEAzkK,UAAAA,CAAWr3C,EAAMnC,EAAW27B,GAC1B,MAAMugD,EAAIoyL,EAAKnsQ,GACf,OAAO1S,KAAK8pD,KAAK2iC,EAAGzsF,KAAK++Q,eAAetyL,EAAG/5E,EAAGw5B,GAAY37B,EAC5D,EAEA65C,gBAAAA,CAAiB13C,EAAMnC,EAAW27B,EAAsB2I,GACtD,MAAM43C,EAAIoyL,EAAKnsQ,GACf,OAAU,IAAN+5E,EAAgBzsF,KAAKyuN,aAAa/7M,EAAGnC,EAAGskC,GACrC70C,KAAK8+Q,WAAWryL,EAAGzsF,KAAK++Q,eAAetyL,EAAG/5E,EAAGw5B,GAAY37B,EAAGskC,EACrE,EAMA6T,aAAAA,CAAch2C,EAAM+5E,GAClB+xL,EAAU/xL,EAAG31D,GACb8nP,EAAiBtoQ,IAAI5D,EAAG+5E,GACxBuM,EAAiB5xE,OAAO1U,EAC1B,EAEJ,CAYM,SAAU81C,EACdp3C,EACA4tQ,EACA72N,EACAI,GAUA,GAFAm2N,EAAkBv2N,EAAQ/2C,GAC1ButQ,EAAmBp2N,EAASy2N,GACxB72N,EAAOtmD,SAAW0mD,EAAQ1mD,OAC5B,MAAM,IAAIgC,MAAM,uDAClB,MAAMytE,EAAOlgE,EAAEozC,KACThuB,GAAQyoP,EAAAA,EAAAA,IAAOv5Q,OAAOyiD,EAAOtmD,SAC7Bw/C,EAAa7qB,EAAQ,GAAKA,EAAQ,EAAIA,EAAQ,EAAIA,EAAQ,EAAIA,EAAQ,EAAI,EAC1E0oP,GAAQ,GAAK79N,GAAc,EAC3B89N,EAAU,IAAIh1Q,MAAM+0Q,EAAO,GAAGjuP,KAAKqgD,GAEzC,IAAI75D,EAAM65D,EACV,IAAK,IAAItmE,EAFQ5B,KAAKC,OAAO21Q,EAAOvsH,KAAO,GAAKpxG,GAAcA,EAEvCr2C,GAAK,EAAGA,GAAKq2C,EAAY,CAC9C89N,EAAQluP,KAAKqgD,GACb,IAAK,IAAI1gE,EAAI,EAAGA,EAAI23C,EAAQ1mD,OAAQ+O,IAAK,CACvC,MAAM+5C,EAASpC,EAAQ33C,GACjB4lB,EAAQrH,OAAQw7B,GAAUjlD,OAAOsF,GAAMtF,OAAOw5Q,IACpDC,EAAQ3oP,GAAS2oP,EAAQ3oP,GAAOj0B,IAAI4lD,EAAOv3C,GAC7C,CACA,IAAIwuQ,EAAO9tM,EAEX,IAAK,IAAI1gE,EAAIuuQ,EAAQt9Q,OAAS,EAAGw9Q,EAAO/tM,EAAM1gE,EAAI,EAAGA,IACnDyuQ,EAAOA,EAAK98Q,IAAI48Q,EAAQvuQ,IACxBwuQ,EAAOA,EAAK78Q,IAAI88Q,GAGlB,GADA5nQ,EAAMA,EAAIlV,IAAI68Q,GACJ,IAANp0Q,EAAS,IAAK,IAAI4F,EAAI,EAAGA,EAAIywC,EAAYzwC,IAAK6G,EAAMA,EAAI2xC,QAC9D,CACA,OAAO3xC,CACT,CAmGM,SAAU8kC,EACdF,GAyBA,OAfAwH,EAAAA,EAAAA,IAAcxH,EAAMS,KACpBL,EAAAA,EAAAA,IACEJ,EACA,CACE9rC,EAAG,SACHihB,EAAG,SACH01B,GAAI,QACJD,GAAI,SAEN,CACExF,WAAY,gBACZ3C,YAAa,kBAIV97C,OAAO8J,OAAO,KAChBwyQ,EAAAA,EAAAA,IAAQjjO,EAAM9rC,EAAG8rC,EAAMoF,eACvBpF,EACE9lC,EAAG8lC,EAAMS,GAAG0B,OAErB,8BCxcA,SAASte,EAAO3vB,GACd,IAAK4e,OAAOivC,cAAc7tD,IAAMA,EAAI,EAAG,MAAM,IAAI1M,MAAM,kCAAkC0M,IAC3F,CAEA,SAASshD,EAAK3gD,GACZ,GAAiB,mBAANA,EAAiB,MAAM,IAAIrN,MAAM,yBAAyBqN,IACvE,CAGA,SAAgBswC,EAAQ/wC,GACtB,OACEA,aAAa6f,YACP,MAAL7f,GAA0B,kBAANA,GAAyC,eAAvBA,EAAExC,YAAY2D,IAEzD,CAEA,SAASusC,EAAMjtC,GACb,IAAKswC,EAAQtwC,GAAI,MAAM,IAAIrN,MAAM,uBAAuB,QAAAoG,EAAArI,UAAAC,OADbslD,EAAiB,IAAAh9C,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAjB+8C,EAAiB/8C,EAAA,GAAAxI,UAAAwI,GAE5D,GAAI+8C,EAAQtlD,OAAS,IAAMslD,EAAQrH,SAAS5uC,EAAErP,QAC5C,MAAM,IAAIgC,MAAM,iCAAiCsjD,oBAA0Bj2C,EAAErP,SACjF,CAQA,SAAS+C,EAAK4sB,GACZ,GAAiB,oBAANA,GAAwC,oBAAbA,EAAE9nB,OACtC,MAAM,IAAI7F,MAAM,mDAClBq8B,EAAO1O,EAAEzB,WACTmQ,EAAO1O,EAAE1B,SACX,CAEA,SAASW,EAAO6uI,GAAmC,IAApBy9E,IAAan7O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC1C,GAAI09J,EAASlvI,UAAW,MAAM,IAAIvsB,MAAM,oCACxC,GAAIk5O,GAAiBz9E,EAASpvI,SAAU,MAAM,IAAIrsB,MAAM,wCAC1D,CACA,SAASxD,EAAO0G,EAAUu4J,GACxBnhH,EAAMp3C,GACN,MAAM2K,EAAM4tJ,EAASvvI,UACrB,GAAIhpB,EAAIlF,OAAS6P,EACf,MAAM,IAAI7N,MAAM,yDAAyD6N,IAE7E,oHAES5R,EAAAA,OAAAogC,EAAQpgC,EAAAA,KAAA+xD,EAtCjB/xD,EAAAA,QAAA0hD,EAsCuB1hD,EAAAA,MAAAq+C,EAAOr+C,EAAAA,KAAA8E,EAAM9E,EAAAA,OAAA2wB,EAAQ3wB,EAAAA,OAAAO,EAE5C,MAAMw/B,EAAS,CAAEK,SAAQ2xB,OAAM1T,QAAOv5C,OAAM6rB,SAAQpwB,UACpDP,EAAAA,QAAe+/B,8BCjDf78B,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ+gB,oBAAiB,EAEzB,SAAWA,GACPA,EAAeA,EAAwB,QAAI,GAAK,UAChDA,EAAeA,EAAwB,QAAI,GAAK,SACnD,CAHD,CAGoB/gB,EAAQ+gB,iBAAmB/gB,EAAQ+gB,eAAiB,CAAC,kGCAnE,MAAO8qN,UAAgC97M,EAAAA,GAQ3C5hB,WAAAA,CAAYrJ,EAAawF,GACvBhE,QAJM,KAAA8pB,UAAW,EACX,KAAAE,WAAY,GAIlBmvP,EAAAA,EAAAA,IAAM36Q,GACN,MAAMoF,GAAM0mB,EAAAA,EAAAA,IAAQtmB,GAEpB,GADApK,KAAK4rO,MAAQhnO,EAAK8E,SACe,oBAAtB1J,KAAK4rO,MAAM7nO,OACpB,MAAM,IAAIF,MAAM,uDAClB7D,KAAK8vB,SAAW9vB,KAAK4rO,MAAM97M,SAC3B9vB,KAAK+vB,UAAY/vB,KAAK4rO,MAAM77M,UAC5B,MAAMD,EAAW9vB,KAAK8vB,SAChB0sE,EAAM,IAAIlsE,WAAWR,GAE3B0sE,EAAIlmF,IAAItM,EAAInI,OAASiuB,EAAWlrB,EAAK8E,SAAS3F,OAAOiG,GAAKhG,SAAWgG,GACrE,IAAK,IAAIgB,EAAI,EAAGA,EAAIwxF,EAAI36F,OAAQmJ,IAAKwxF,EAAIxxF,IAAM,GAC/ChL,KAAK4rO,MAAM7nO,OAAOy4F,GAElBx8F,KAAK6rO,MAAQjnO,EAAK8E,SAElB,IAAK,IAAIsB,EAAI,EAAGA,EAAIwxF,EAAI36F,OAAQmJ,IAAKwxF,EAAIxxF,IAAM,IAC/ChL,KAAK6rO,MAAM9nO,OAAOy4F,GAClBA,EAAIvrE,KAAK,EACX,CACAltB,MAAAA,CAAOsjE,GAGL,OAFAmiG,EAAAA,EAAAA,IAAQxpK,MACRA,KAAK4rO,MAAM7nO,OAAOsjE,GACXrnE,IACT,CACAgxB,UAAAA,CAAWjqB,IACTyiK,EAAAA,EAAAA,IAAQxpK,OACRwlD,EAAAA,EAAAA,IAAOz+C,EAAK/G,KAAK+vB,WACjB/vB,KAAKkwB,UAAW,EAChBlwB,KAAK4rO,MAAM56M,WAAWjqB,GACtB/G,KAAK6rO,MAAM9nO,OAAOgD,GAClB/G,KAAK6rO,MAAM76M,WAAWjqB,GACtB/G,KAAK6xB,SACP,CACA7tB,MAAAA,GACE,MAAM+C,EAAM,IAAIupB,WAAWtwB,KAAK6rO,MAAM97M,WAEtC,OADA/vB,KAAKgxB,WAAWjqB,GACTA,CACT,CACA+qB,UAAAA,CAAWC,GAETA,IAAAA,EAAO/uB,OAAO0G,OAAO1G,OAAOyhF,eAAezkF,MAAO,CAAC,IACnD,MAAM,MAAE6rO,EAAK,MAAED,EAAK,SAAE17M,EAAQ,UAAEE,EAAS,SAAEN,EAAQ,UAAEC,GAAc/vB,KAQnE,OANA+xB,EAAG7B,SAAWA,EACd6B,EAAG3B,UAAYA,EACf2B,EAAGjC,SAAWA,EACdiC,EAAGhC,UAAYA,EACfgC,EAAG85M,MAAQA,EAAM/5M,WAAWC,EAAG85M,OAC/B95M,EAAG65M,MAAQA,EAAM95M,WAAWC,EAAG65M,OACxB75M,CACT,CACAF,OAAAA,GACE7xB,KAAKowB,WAAY,EACjBpwB,KAAK6rO,MAAMh6M,UACX7xB,KAAK4rO,MAAM/5M,SACb,EAaK,MAAM9nB,EAGTA,CAACnF,EAAaoF,EAAYikB,IAC5B,IAAI09M,EAAU/mO,EAAMoF,GAAKjG,OAAOkqB,GAASjqB,SAC3C+F,EAAKL,OAAS,CAAC9E,EAAaoF,IAAe,IAAI2hO,EAAU/mO,EAAMoF,wCtcjB/D,SAASm4C,EAAmBloB,QACRn4B,IAAdm4B,EAAK2iB,OAAoBoB,EAAAA,EAAAA,IAAM,OAAQ/jB,EAAK2iB,WAC3B96C,IAAjBm4B,EAAK+nB,UAAuBhE,EAAAA,EAAAA,IAAM,UAAW/jB,EAAK+nB,QACxD,CAoFA,MAAQ3D,GAAiBqG,EAAKhE,GAAYiE,GAAQnI,EAE5C,MAAOoI,UAAe/gD,MAC1BoK,WAAAA,GACE7H,MADWxE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAEhB,EA6BK,MAAM29C,EAAY,CAEvBmE,IAAKkB,EAELC,KAAM,CACJ1kC,OAAQA,CAAC2kC,EAAanhD,KACpB,MAAQ+/C,IAAKqB,GAAMxF,EACnB,GAAIuF,EAAM,GAAKA,EAAM,IAAK,MAAM,IAAIC,EAAE,yBACtC,GAAkB,EAAdphD,EAAK9B,OAAY,MAAM,IAAIkjD,EAAE,6BACjC,MAAMC,EAAUrhD,EAAK9B,OAAS,EACxBsQ,EAAMqqC,EAAAA,GAAuBwI,GACnC,GAAK7yC,EAAItQ,OAAS,EAAK,IAAa,MAAM,IAAIkjD,EAAE,wCAEhD,MAAMG,EAASF,EAAU,IAAMxI,EAAAA,GAAwBrqC,EAAItQ,OAAS,EAAK,KAAe,GAExF,OADU26C,EAAAA,GAAuBsI,GACtBI,EAAS/yC,EAAMxO,CAAI,EAGhC8b,MAAAA,CAAOqlC,EAAanhD,GAClB,MAAQ+/C,IAAKqB,GAAMxF,EACnB,IAAIpvB,EAAM,EACV,GAAI20B,EAAM,GAAKA,EAAM,IAAK,MAAM,IAAIC,EAAE,yBACtC,GAAIphD,EAAK9B,OAAS,GAAK8B,EAAKwsB,OAAW20B,EAAK,MAAM,IAAIC,EAAE,yBACxD,MAAMI,EAAQxhD,EAAKwsB,KAEnB,IAAItuB,EAAS,EACb,MAF0B,IAARsjD,GAGb,CAEH,MAAMD,EAAiB,IAARC,EACf,IAAKD,EAAQ,MAAM,IAAIH,EAAE,qDACzB,GAAIG,EAAS,EAAG,MAAM,IAAIH,EAAE,4CAC5B,MAAMK,EAAczhD,EAAKitB,SAAST,EAAKA,EAAM+0B,GAC7C,GAAIE,EAAYvjD,SAAWqjD,EAAQ,MAAM,IAAIH,EAAE,yCAC/C,GAAuB,IAAnBK,EAAY,GAAU,MAAM,IAAIL,EAAE,wCACtC,IAAK,MAAM7zC,KAAKk0C,EAAavjD,EAAUA,GAAU,EAAKqP,EAEtD,GADAif,GAAO+0B,EACHrjD,EAAS,IAAK,MAAM,IAAIkjD,EAAE,yCAChC,MAZaljD,EAASsjD,EAatB,MAAMlxC,EAAItQ,EAAKitB,SAAST,EAAKA,EAAMtuB,GACnC,GAAIoS,EAAEpS,SAAWA,EAAQ,MAAM,IAAIkjD,EAAE,kCACrC,MAAO,CAAE9wC,IAAGzC,EAAG7N,EAAKitB,SAAST,EAAMtuB,GACrC,GAMFwjD,KAAM,CACJllC,MAAAA,CAAOghB,GACL,MAAQuiB,IAAKqB,GAAMxF,EACnB,GAAIpe,EAAM0gB,EAAK,MAAM,IAAIkD,EAAE,8CAC3B,IAAIj+C,EAAM01C,EAAAA,GAAuBrb,GAGjC,GADkC,EAA9BhS,OAAOhkB,SAASrE,EAAI,GAAI,MAAcA,EAAM,KAAOA,GACtC,EAAbA,EAAIjF,OAAY,MAAM,IAAIkjD,EAAE,kDAChC,OAAOj+C,CACT,EACA2Y,MAAAA,CAAO9b,GACL,MAAQ+/C,IAAKqB,GAAMxF,EACnB,GAAc,IAAV57C,EAAK,GAAkB,MAAM,IAAIohD,EAAE,uCACvC,GAAgB,IAAZphD,EAAK,MAA2B,IAAVA,EAAK,IAC7B,MAAM,IAAIohD,EAAE,uDACd,OAAOL,EAAI/gD,EACb,GAEF67C,KAAAA,CAAM14C,GAEJ,MAAQ48C,IAAKqB,EAAGM,KAAMC,EAAKT,KAAMU,GAAQhG,EACnC57C,EAAsB,kBAARmD,EAAmB69C,EAAI79C,GAAOA,EAClD01C,EAAAA,GAAU74C,GACV,MAAQsQ,EAAGwxC,EAAUj0C,EAAGk0C,GAAiBH,EAAI9lC,OAAO,GAAM9b,GAC1D,GAAI+hD,EAAa7jD,OAAQ,MAAM,IAAIkjD,EAAE,+CACrC,MAAQ9wC,EAAG0xC,EAAQn0C,EAAGo0C,GAAeL,EAAI9lC,OAAO,EAAMgmC,IAC9CxxC,EAAG4xC,EAAQr0C,EAAGs0C,GAAeP,EAAI9lC,OAAO,EAAMmmC,GACtD,GAAIE,EAAWjkD,OAAQ,MAAM,IAAIkjD,EAAE,+CACnC,MAAO,CAAEl0C,EAAGy0C,EAAI7lC,OAAOkmC,GAASj1C,EAAG40C,EAAI7lC,OAAOomC,GAChD,EACAjF,UAAAA,CAAWmF,GACT,MAAQlB,KAAMU,EAAKF,KAAMC,GAAQ/F,EAG3ByG,EAFKT,EAAIplC,OAAO,EAAMmlC,EAAInlC,OAAO4lC,EAAIl1C,IAChC00C,EAAIplC,OAAO,EAAMmlC,EAAInlC,OAAO4lC,EAAIr1C,IAE3C,OAAO60C,EAAIplC,OAAO,GAAM6lC,EAC1B,GAKInE,EAAMn8C,OAAO,GAAI64C,EAAM74C,OAAO,GAAqBwgD,GAAXxgD,OAAO,GAAUA,OAAO,IAAUA,OAAO,GAEjF,SAAUy2C,EAAqBliB,GACnC,MAAMmiB,EAxKR,SAA8BC,GAC5B,MAAMpiB,GAAOsiB,EAAAA,EAAAA,IAAcF,GAC3BG,EAAAA,GACEviB,EACA,CACExpB,EAAG,QACHS,EAAG,SAEL,CACEk1C,yBAA0B,QAC1BC,eAAgB,UAChBC,cAAe,WACfC,cAAe,WACfC,mBAAoB,UACpBtI,UAAW,WACXxtB,QAAS,aAGb,MAAM,KAAE+1B,EAAI,GAAE3J,EAAE,EAAErsC,GAAMwpB,EACxB,GAAIwsB,EAAM,CACR,IAAK3J,EAAGyH,IAAI9zC,EAAGqsC,EAAG0H,MAChB,MAAM,IAAI3gD,MAAM,8EAElB,GACkB,kBAAT4iD,GACc,kBAAdA,EAAKC,MACgB,oBAArBD,EAAKE,YAEZ,MAAM,IAAI9iD,MAAM,wEAEpB,CACA,OAAOb,OAAO8J,OAAO,IAAKmtB,GAC5B,CAwIgB2sB,CAAkB3sB,IAC1B,GAAE6iB,GAAOV,EACTyK,GAAKC,EAAAA,EAAAA,IAAM1K,EAAM7rC,EAAG6rC,EAAMqF,YAE1B/wB,EACJ0rB,EAAM1rB,SAAO,EACXitB,EAAwBC,EAAyBmJ,KACjD,MAAMt2C,EAAImtC,EAAME,WAChB,OAAOtB,EAAAA,GAAelsB,WAAW9rB,KAAK,CAAC,IAAQs4C,EAAGpsB,QAAQjgB,EAAEO,GAAI8rC,EAAGpsB,QAAQjgB,EAAEQ,GAC9E,GACGitC,EACJ9B,EAAM8B,WAAS,CACbC,IAEA,MAAMC,EAAOD,EAAMvtB,SAAS,GAI5B,MAAO,CAAE5f,EAFC8rC,EAAGoB,UAAUE,EAAKxtB,SAAS,EAAGksB,EAAGG,QAE/BhsC,EADF6rC,EAAGoB,UAAUE,EAAKxtB,SAASksB,EAAGG,MAAO,EAAIH,EAAGG,QAEvD,GAMH,SAASQ,EAAoBzsC,GAC3B,MAAM,EAAEP,EAAC,EAAES,GAAMkrC,EACXhL,EAAK0L,EAAG7O,IAAIj9B,GACZg2C,EAAKlK,EAAG9b,IAAIoQ,EAAIpgC,GACtB,OAAO8rC,EAAGv6C,IAAIu6C,EAAGv6C,IAAIykD,EAAIlK,EAAG9b,IAAIhwB,EAAGP,IAAKS,EAC1C,CAKA,IAAK4rC,EAAGyH,IAAIzH,EAAG7O,IAAImO,EAAM6K,IAAKxJ,EAAoBrB,EAAM8K,KACtD,MAAM,IAAIrjD,MAAM,+CAQlB,SAAS25C,EAAuBxzC,GAC9B,MAAQo8C,yBAA0Be,EAAO,YAAErI,EAAW,eAAEuH,EAAgB91C,EAAGk7B,GAAM2Q,EACjF,GAAI+K,GAA0B,kBAARn9C,EAAkB,CAGtC,GAFIwyC,EAAAA,GAAWxyC,KAAMA,EAAMwyC,EAAAA,GAAcxyC,IAEtB,kBAARA,IAAqBm9C,EAAQrH,SAAS91C,EAAInI,QACnD,MAAM,IAAIgC,MAAM,uBAClBmG,EAAMA,EAAIqhB,SAAuB,EAAdyzB,EAAiB,IACtC,CACA,IAAI3d,EACJ,IACEA,EACiB,kBAARn3B,EACHA,EACAwyC,EAAAA,IAAmB6C,EAAAA,EAAAA,IAAY,cAAer1C,EAAK80C,GAC3D,CAAE,MAAOj8B,GACP,MAAM,IAAIhf,MACR,wCAA0Ci7C,EAAc,sBAAwB90C,EAEpF,CAGA,OAFIq8C,IAAgBllB,GAAM9lB,EAAAA,EAAAA,IAAI8lB,EAAKsK,IACnC+Q,EAAAA,GAAY,cAAerb,EAAKod,EAAK9S,GAC9BtK,CACT,CAEA,SAASimB,EAAeC,GACtB,KAAMA,aAAiB9J,GAAQ,MAAM,IAAI15C,MAAM,2BACjD,CAOA,MAAMyjD,GAAeC,EAAAA,EAAAA,IAAS,CAAChxC,EAAUixC,KACvC,MAAQC,GAAIz2C,EAAG02C,GAAIz2C,EAAG02C,GAAIh3C,GAAM4F,EAEhC,GAAIumC,EAAGyH,IAAI5zC,EAAGmsC,EAAGlqC,KAAM,MAAO,CAAE5B,IAAGC,KACnC,MAAM22C,EAAMrxC,EAAEqxC,MAGJ,MAANJ,IAAYA,EAAKI,EAAM9K,EAAGlqC,IAAMkqC,EAAG5H,IAAIvkC,IAC3C,MAAMk3C,EAAK/K,EAAG9b,IAAIhwB,EAAGw2C,GACfM,EAAKhL,EAAG9b,IAAI/vB,EAAGu2C,GACfO,EAAKjL,EAAG9b,IAAIrwB,EAAG62C,GACrB,GAAII,EAAK,MAAO,CAAE52C,EAAG8rC,EAAG0H,KAAMvzC,EAAG6rC,EAAG0H,MACpC,IAAK1H,EAAGyH,IAAIwD,EAAIjL,EAAGlqC,KAAM,MAAM,IAAI/O,MAAM,oBACzC,MAAO,CAAEmN,EAAG62C,EAAI52C,EAAG62C,EAAI,IAInBE,GAAkBT,EAAAA,EAAAA,IAAUhxC,IAChC,GAAIA,EAAEqxC,MAAO,CAIX,GAAIxL,EAAMoK,qBAAuB1J,EAAG8K,IAAIrxC,EAAEmxC,IAAK,OAC/C,MAAM,IAAI7jD,MAAM,kBAClB,CAEA,MAAM,EAAEmN,EAAC,EAAEC,GAAMsF,EAAEunC,WAEnB,IAAKhB,EAAGx4B,QAAQtT,KAAO8rC,EAAGx4B,QAAQrT,GAAI,MAAM,IAAIpN,MAAM,4BACtD,MAAMw1B,EAAOyjB,EAAG7O,IAAIh9B,GACdowB,EAAQoc,EAAoBzsC,GAClC,IAAK8rC,EAAGyH,IAAIlrB,EAAMgI,GAAQ,MAAM,IAAIx9B,MAAM,qCAC1C,IAAK0S,EAAE+vC,gBAAiB,MAAM,IAAIziD,MAAM,0CACxC,OAAO,CAAI,IAQb,MAAM05C,EAIJtvC,WAAAA,CACWw5C,EACAC,EACAC,GAET,GAJS,KAAAF,GAAAA,EACA,KAAAC,GAAAA,EACA,KAAAC,GAAAA,EAEC,MAANF,IAAe3K,EAAGx4B,QAAQmjC,GAAK,MAAM,IAAI5jD,MAAM,cACnD,GAAU,MAAN6jD,IAAe5K,EAAGx4B,QAAQojC,GAAK,MAAM,IAAI7jD,MAAM,cACnD,GAAU,MAAN8jD,IAAe7K,EAAGx4B,QAAQqjC,GAAK,MAAM,IAAI9jD,MAAM,cACnDb,OAAO8J,OAAO9M,KAChB,CAIA,iBAAOioD,CAAW1xC,GAChB,MAAM,EAAEvF,EAAC,EAAEC,GAAMsF,GAAK,CAAC,EACvB,IAAKA,IAAMumC,EAAGx4B,QAAQtT,KAAO8rC,EAAGx4B,QAAQrT,GAAI,MAAM,IAAIpN,MAAM,wBAC5D,GAAI0S,aAAagnC,EAAO,MAAM,IAAI15C,MAAM,gCACxC,MAAM+jD,EAAO58C,GAAS8xC,EAAGyH,IAAIv5C,EAAG8xC,EAAG0H,MAEnC,OAAIoD,EAAI52C,IAAM42C,EAAI32C,GAAWssC,EAAMiH,KAC5B,IAAIjH,EAAMvsC,EAAGC,EAAG6rC,EAAGlqC,IAC5B,CAEA,KAAI5B,GACF,OAAOhR,KAAK89C,WAAW9sC,CACzB,CACA,KAAIC,GACF,OAAOjR,KAAK89C,WAAW7sC,CACzB,CAQA,iBAAOi3C,CAAWC,GAChB,MAAMC,EAAQtL,EAAGuL,YAAYF,EAAOz/C,KAAK6N,GAAMA,EAAEoxC,MACjD,OAAOQ,EAAOz/C,KAAI,CAAC6N,EAAGvL,IAAMuL,EAAEunC,SAASsK,EAAMp9C,MAAKtC,IAAI60C,EAAM0K,WAC9D,CAMA,cAAOhI,CAAQn5C,GACb,MAAM4L,EAAI6qC,EAAM0K,WAAW/J,GAAUmB,EAAAA,EAAAA,IAAY,WAAYv4C,KAE7D,OADA4L,EAAEysC,iBACKzsC,CACT,CAGA,qBAAOmwC,CAAe7B,GACpB,OAAOzD,EAAMvtC,KAAKoI,SAASolC,EAAuBwD,GACpD,CAGA,UAAOsH,CAAIH,EAAiBI,GAC1B,OAAOC,EAAAA,EAAAA,IAAUjL,EAAOsJ,EAAIsB,EAAQI,EACtC,CAGAjH,cAAAA,CAAeD,GACboH,EAAKC,cAAc1oD,KAAMqhD,EAC3B,CAGAlC,cAAAA,GACE6I,EAAgBhoD,KAClB,CAEAi+C,QAAAA,GACE,MAAM,EAAEhtC,GAAMjR,KAAK89C,WACnB,GAAIhB,EAAGhrC,MAAO,OAAQgrC,EAAGhrC,MAAMb,GAC/B,MAAM,IAAIpN,MAAM,8BAClB,CAKA0c,MAAAA,CAAO8mC,GACLD,EAAeC,GACf,MAAQI,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,MAC3BynD,GAAIqB,EAAIpB,GAAIqB,EAAIpB,GAAIqB,GAAO3B,EAC7B4B,EAAKnM,EAAGyH,IAAIzH,EAAG9b,IAAI2nB,EAAIK,GAAKlM,EAAG9b,IAAI8nB,EAAID,IACvCK,EAAKpM,EAAGyH,IAAIzH,EAAG9b,IAAI4nB,EAAII,GAAKlM,EAAG9b,IAAI+nB,EAAIF,IAC7C,OAAOI,GAAMC,CACf,CAKAC,MAAAA,GACE,OAAO,IAAI5L,EAAMv9C,KAAKynD,GAAI3K,EAAGnY,IAAI3kC,KAAK0nD,IAAK1nD,KAAK2nD,GAClD,CAMAyB,MAAAA,GACE,MAAM,EAAE34C,EAAC,EAAES,GAAMkrC,EACX1T,EAAKoU,EAAG9b,IAAI9vB,EAAGg1C,IACbuB,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,KACnC,IAAIqpD,EAAKvM,EAAG0H,KAAM8E,EAAKxM,EAAG0H,KAAM+E,EAAKzM,EAAG0H,KACpCgF,EAAK1M,EAAG9b,IAAI2nB,EAAIA,GAChBc,EAAK3M,EAAG9b,IAAI4nB,EAAIA,GAChBc,EAAK5M,EAAG9b,IAAI6nB,EAAIA,GAChBc,EAAK7M,EAAG9b,IAAI2nB,EAAIC,GA4BpB,OA3BAe,EAAK7M,EAAGv6C,IAAIonD,EAAIA,GAChBJ,EAAKzM,EAAG9b,IAAI2nB,EAAIE,GAChBU,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GAChBF,EAAKvM,EAAG9b,IAAIvwB,EAAG84C,GACfD,EAAKxM,EAAG9b,IAAI0H,EAAIghB,GAChBJ,EAAKxM,EAAGv6C,IAAI8mD,EAAIC,GAChBD,EAAKvM,EAAG/W,IAAI0jB,EAAIH,GAChBA,EAAKxM,EAAGv6C,IAAIknD,EAAIH,GAChBA,EAAKxM,EAAG9b,IAAIqoB,EAAIC,GAChBD,EAAKvM,EAAG9b,IAAI2oB,EAAIN,GAChBE,EAAKzM,EAAG9b,IAAI0H,EAAI6gB,GAChBG,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfC,EAAK7M,EAAG/W,IAAIyjB,EAAIE,GAChBC,EAAK7M,EAAG9b,IAAIvwB,EAAGk5C,GACfA,EAAK7M,EAAGv6C,IAAIonD,EAAIJ,GAChBA,EAAKzM,EAAGv6C,IAAIinD,EAAIA,GAChBA,EAAK1M,EAAGv6C,IAAIgnD,EAAIC,GAChBA,EAAK1M,EAAGv6C,IAAIinD,EAAIE,GAChBF,EAAK1M,EAAG9b,IAAIwoB,EAAIG,GAChBL,EAAKxM,EAAGv6C,IAAI+mD,EAAIE,GAChBE,EAAK5M,EAAG9b,IAAI4nB,EAAIC,GAChBa,EAAK5M,EAAGv6C,IAAImnD,EAAIA,GAChBF,EAAK1M,EAAG9b,IAAI0oB,EAAIC,GAChBN,EAAKvM,EAAG/W,IAAIsjB,EAAIG,GAChBD,EAAKzM,EAAG9b,IAAI0oB,EAAID,GAChBF,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GAChBA,EAAKzM,EAAGv6C,IAAIgnD,EAAIA,GACT,IAAIhM,EAAM8L,EAAIC,EAAIC,EAC3B,CAMAhnD,GAAAA,CAAI8kD,GACFD,EAAeC,GACf,MAAQI,GAAIkB,EAAIjB,GAAIkB,EAAIjB,GAAIkB,GAAO7oD,MAC3BynD,GAAIqB,EAAIpB,GAAIqB,EAAIpB,GAAIqB,GAAO3B,EACnC,IAAIgC,EAAKvM,EAAG0H,KAAM8E,EAAKxM,EAAG0H,KAAM+E,EAAKzM,EAAG0H,KACxC,MAAM/zC,EAAI2rC,EAAM3rC,EACVi4B,EAAKoU,EAAG9b,IAAIob,EAAMlrC,EAAGg1C,GAC3B,IAAIsD,EAAK1M,EAAG9b,IAAI2nB,EAAIG,GAChBW,EAAK3M,EAAG9b,IAAI4nB,EAAIG,GAChBW,EAAK5M,EAAG9b,IAAI6nB,EAAIG,GAChBW,EAAK7M,EAAGv6C,IAAIomD,EAAIC,GAChBgB,EAAK9M,EAAGv6C,IAAIumD,EAAIC,GACpBY,EAAK7M,EAAG9b,IAAI2oB,EAAIC,GAChBA,EAAK9M,EAAGv6C,IAAIinD,EAAIC,GAChBE,EAAK7M,EAAG/W,IAAI4jB,EAAIC,GAChBA,EAAK9M,EAAGv6C,IAAIomD,EAAIE,GAChB,IAAIgB,EAAK/M,EAAGv6C,IAAIumD,EAAIE,GA+BpB,OA9BAY,EAAK9M,EAAG9b,IAAI4oB,EAAIC,GAChBA,EAAK/M,EAAGv6C,IAAIinD,EAAIE,GAChBE,EAAK9M,EAAG/W,IAAI6jB,EAAIC,GAChBA,EAAK/M,EAAGv6C,IAAIqmD,EAAIC,GAChBQ,EAAKvM,EAAGv6C,IAAIwmD,EAAIC,GAChBa,EAAK/M,EAAG9b,IAAI6oB,EAAIR,GAChBA,EAAKvM,EAAGv6C,IAAIknD,EAAIC,GAChBG,EAAK/M,EAAG/W,IAAI8jB,EAAIR,GAChBE,EAAKzM,EAAG9b,IAAIvwB,EAAGm5C,GACfP,EAAKvM,EAAG9b,IAAI0H,EAAIghB,GAChBH,EAAKzM,EAAGv6C,IAAI8mD,EAAIE,GAChBF,EAAKvM,EAAG/W,IAAI0jB,EAAIF,GAChBA,EAAKzM,EAAGv6C,IAAIknD,EAAIF,GAChBD,EAAKxM,EAAG9b,IAAIqoB,EAAIE,GAChBE,EAAK3M,EAAGv6C,IAAIinD,EAAIA,GAChBC,EAAK3M,EAAGv6C,IAAIknD,EAAID,GAChBE,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfE,EAAK9M,EAAG9b,IAAI0H,EAAIkhB,GAChBH,EAAK3M,EAAGv6C,IAAIknD,EAAIC,GAChBA,EAAK5M,EAAG/W,IAAIyjB,EAAIE,GAChBA,EAAK5M,EAAG9b,IAAIvwB,EAAGi5C,GACfE,EAAK9M,EAAGv6C,IAAIqnD,EAAIF,GAChBF,EAAK1M,EAAG9b,IAAIyoB,EAAIG,GAChBN,EAAKxM,EAAGv6C,IAAI+mD,EAAIE,GAChBA,EAAK1M,EAAG9b,IAAI6oB,EAAID,GAChBP,EAAKvM,EAAG9b,IAAI2oB,EAAIN,GAChBA,EAAKvM,EAAG/W,IAAIsjB,EAAIG,GAChBA,EAAK1M,EAAG9b,IAAI2oB,EAAIF,GAChBF,EAAKzM,EAAG9b,IAAI6oB,EAAIN,GAChBA,EAAKzM,EAAGv6C,IAAIgnD,EAAIC,GACT,IAAIjM,EAAM8L,EAAIC,EAAIC,EAC3B,CAEAvwC,QAAAA,CAASquC,GACP,OAAOrnD,KAAKuC,IAAI8kD,EAAM8B,SACxB,CAEAvB,GAAAA,GACE,OAAO5nD,KAAKugB,OAAOg9B,EAAMiH,KAC3B,CACQsF,IAAAA,CAAKv5C,GACX,OAAOk4C,EAAKsB,WAAW/pD,KAAMuQ,EAAGgtC,EAAM2K,WACxC,CAOA8B,cAAAA,CAAeC,GACb,MAAM,KAAExD,EAAMl2C,EAAGk7B,GAAM2Q,EACvBI,EAAAA,GAAY,SAAUyN,EAAIpI,EAAKpW,GAC/B,MAAMye,EAAI3M,EAAMiH,KAChB,GAAIyF,IAAOpI,EAAK,OAAOqI,EACvB,GAAIlqD,KAAK4nD,OAASqC,IAAO1L,EAAK,OAAOv+C,KAGrC,IAAKymD,GAAQgC,EAAK0B,eAAenqD,MAC/B,OAAOyoD,EAAK2B,iBAAiBpqD,KAAMiqD,EAAI1M,EAAM2K,YAG/C,IAAI,MAAEmC,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYsD,GAC5CQ,EAAMP,EACNQ,EAAMR,EACN30C,EAAWvV,KACf,KAAOsqD,EAAKzI,GAAO2I,EAAK3I,GAClByI,EAAK/L,IAAKkM,EAAMA,EAAIloD,IAAIgT,IACxBi1C,EAAKjM,IAAKmM,EAAMA,EAAInoD,IAAIgT,IAC5BA,EAAIA,EAAE6zC,SACNkB,IAAO/L,EACPiM,IAAOjM,EAKT,OAHI8L,IAAOI,EAAMA,EAAItB,UACjBoB,IAAOG,EAAMA,EAAIvB,UACrBuB,EAAM,IAAInN,EAAMT,EAAG9b,IAAI0pB,EAAIjD,GAAIhB,EAAKC,MAAOgE,EAAIhD,GAAIgD,EAAI/C,IAChD8C,EAAIloD,IAAImoD,EACjB,CAWAtyC,QAAAA,CAASuyC,GACP,MAAM,KAAElE,EAAMl2C,EAAGk7B,GAAM2Q,EAEvB,IAAIwB,EAAcgN,EAClB,GAFApO,EAAAA,GAAY,SAAUmO,EAAQpM,EAAK9S,GAE/Bgb,EAAM,CACR,MAAM,MAAE4D,EAAK,GAAEC,EAAE,MAAEC,EAAK,GAAEC,GAAO/D,EAAKE,YAAYgE,GAClD,IAAMp0C,EAAGk0C,EAAKI,EAAGC,GAAQ9qD,KAAK8pD,KAAKQ,IAC7B/zC,EAAGm0C,EAAKG,EAAGE,GAAQ/qD,KAAK8pD,KAAKU,GACnCC,EAAMhC,EAAKuC,gBAAgBX,EAAOI,GAClCC,EAAMjC,EAAKuC,gBAAgBT,EAAOG,GAClCA,EAAM,IAAInN,EAAMT,EAAG9b,IAAI0pB,EAAIjD,GAAIhB,EAAKC,MAAOgE,EAAIhD,GAAIgD,EAAI/C,IACvD/J,EAAQ6M,EAAIloD,IAAImoD,GAChBE,EAAOE,EAAIvoD,IAAIwoD,EACjB,KAAO,CACL,MAAM,EAAEx0C,EAAC,EAAEs0C,GAAM7qD,KAAK8pD,KAAKa,GAC3B/M,EAAQrnC,EACRq0C,EAAOC,CACT,CAEA,OAAOtN,EAAM2K,WAAW,CAACtK,EAAOgN,IAAO,EACzC,CAQAtK,oBAAAA,CAAqBD,EAAU5vC,EAAWS,GACxC,MAAM+5C,EAAI1N,EAAMvtC,KACVgxB,EAAMA,CACVtuB,EACAjC,IACIA,IAAMoxC,GAAOpxC,IAAM8tC,GAAQ7rC,EAAE6N,OAAO0qC,GAA2Bv4C,EAAE0F,SAAS3H,GAAjCiC,EAAEs3C,eAAev5C,GAC1DgH,EAAMupB,EAAIhhC,KAAMyQ,GAAGlO,IAAIy+B,EAAIqf,EAAGnvC,IACpC,OAAOuG,EAAImwC,WAAQ9lD,EAAY2V,CACjC,CAKAqmC,QAAAA,CAAS0J,GACP,OAAOF,EAAatnD,KAAMwnD,EAC5B,CACAlB,aAAAA,GACE,MAAQ90B,EAAG05B,EAAQ,cAAE5E,GAAkBlK,EACvC,GAAI8O,IAAa3M,EAAK,OAAO,EAC7B,GAAI+H,EAAe,OAAOA,EAAc/I,EAAOv9C,MAC/C,MAAM,IAAI6D,MAAM,+DAClB,CACA0iD,aAAAA,GACE,MAAQ/0B,EAAG05B,EAAQ,cAAE3E,GAAkBnK,EACvC,OAAI8O,IAAa3M,EAAYv+C,KACzBumD,EAAsBA,EAAchJ,EAAOv9C,MACxCA,KAAKgqD,eAAe5N,EAAM5qB,EACnC,CAEAsxB,UAAAA,GAA8B,IAAnBjF,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAGrB,OAFAo8C,EAAAA,EAAAA,IAAM,eAAgBH,GACtB79C,KAAKm/C,iBACEzuB,EAAQ6sB,EAAOv9C,KAAM69C,EAC9B,CAEAsN,KAAAA,GAAyB,IAAnBtN,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAEhB,OADAo8C,EAAAA,EAAAA,IAAM,eAAgBH,GACfrB,EAAAA,GAAcx8C,KAAK8iD,WAAWjF,GACvC,EA5TgBN,EAAAvtC,KAAO,IAAIutC,EAAMnB,EAAM8K,GAAI9K,EAAM6K,GAAInK,EAAGlqC,KACxC2qC,EAAAiH,KAAO,IAAIjH,EAAMT,EAAG0H,KAAM1H,EAAGlqC,IAAKkqC,EAAG0H,MA6TvD,MAAM4G,EAAQhP,EAAMqF,WACdgH,GAAOqB,EAAAA,EAAAA,IAAKvM,EAAOnB,EAAMqK,KAAOr9C,KAAKwG,KAAKw7C,EAAQ,GAAKA,GAE7D,MAAO,CACLhP,QACAkB,gBAAiBC,EACjBC,yBACAC,sBACAC,mBAvZF,SAA4Bvc,GAC1B,OAAOqb,EAAAA,GAAWrb,EAAKod,EAAKnC,EAAM7rC,EACpC,EAuZF,CAmFM,SAAU3G,EAAYJ,GAC1B,MAAM4yC,EA5CR,SACEC,GAEA,MAAMpiB,GAAOsiB,EAAAA,EAAAA,IAAcF,GAc3B,OAbAG,EAAAA,GACEviB,EACA,CACEr1B,KAAM,OACNmF,KAAM,WACNO,YAAa,YAEf,CACEoyC,SAAU,WACVC,cAAe,WACfC,KAAM,YAGH55C,OAAO8J,OAAO,CAAE8vC,MAAM,KAAS3iB,GACxC,CA0BgB4iB,CAAarzC,IACrB,GAAEszC,EAAIvsC,EAAGwsC,GAAgBX,EACzBY,EAAgBF,EAAGG,MAAQ,EAC3BC,EAAkB,EAAIJ,EAAGG,MAAQ,EAEvC,SAASE,EAAK1sC,GACZ,OAAO4K,EAAAA,EAAAA,IAAI5K,EAAGssC,EAChB,CACA,SAASM,EAAK5sC,GACZ,OAAO7H,EAAAA,EAAAA,IAAO6H,EAAGssC,EACnB,CAEA,MACEO,gBAAiBC,EAAK,uBACtBC,EAAsB,oBACtBC,EAAmB,mBACnBC,GACEvB,EAAkB,IACjBC,EACH1rB,OAAAA,CAAQitB,EAAIC,EAAOC,GACjB,MAAMptC,EAAImtC,EAAME,WACV9sC,EAAI8rC,EAAGpsB,QAAQjgB,EAAEO,GACjB+sC,EAAMvB,EAAAA,GAEZ,OADAwB,EAAAA,EAAAA,IAAM,eAAgBH,GAClBA,EACKE,EAAIztB,WAAW9rB,KAAK,CAACo5C,EAAMK,WAAa,EAAO,IAAQjtC,GAEvD+sC,EAAIztB,WAAW9rB,KAAK,CAAC,IAAQwM,EAAG8rC,EAAGpsB,QAAQjgB,EAAEQ,GAExD,EACAitC,SAAAA,CAAUC,GACR,MAAMhsC,EAAMgsC,EAAMt8C,OACZ00B,EAAO4nB,EAAM,GACbC,EAAOD,EAAMvtB,SAAS,GAE5B,GAAIze,IAAQ6qC,GAA2B,IAATzmB,GAA0B,IAATA,EAgBxC,IAAIpkB,IAAQ+qC,GAA4B,IAAT3mB,EAAe,CAGnD,MAAO,CAAEvlB,EAFC8rC,EAAGoB,UAAUE,EAAKxtB,SAAS,EAAGksB,EAAGG,QAE/BhsC,EADF6rC,EAAGoB,UAAUE,EAAKxtB,SAASksB,EAAGG,MAAO,EAAIH,EAAGG,QAExD,CAGE,MAAM,IAAIp5C,MACR,qCAHSm5C,EAGmC,qBAFnCE,EAE+D,SAAW/qC,EAEvF,CA1B+D,CAC7D,MAAMnB,EAAIwrC,EAAAA,GAAmB4B,GAC7B,IAAK5B,EAAAA,GAAWxrC,EAAGutC,EAAKzB,EAAG0B,OAAQ,MAAM,IAAI36C,MAAM,yBACnD,MAAM46C,EAAKhB,EAAoBzsC,GAC/B,IAAIC,EACJ,IACEA,EAAI6rC,EAAGv/B,KAAKkhC,EACd,CAAE,MAAOC,GACP,MAAM5qC,EAAS4qC,aAAqB76C,MAAQ,KAAO66C,EAAUzwB,QAAU,GACvE,MAAM,IAAIpqB,MAAM,wBAA0BiQ,EAC5C,CAKA,OAFiC,KAAP,EAAPyiB,OAFHtlB,EAAIstC,KAASA,KAGHttC,EAAI6rC,EAAGnY,IAAI1zB,IAC9B,CAAED,IAAGC,IACd,CAWF,IAEI0tC,EAAiBxd,GACrBqb,EAAAA,GAAcA,EAAAA,GAAmBrb,EAAKib,EAAM0C,cAE9C,SAASC,EAAsB7e,GAE7B,OAAOA,EADM6c,GAAewB,CAE9B,CAMA,MAAMS,EAASA,CAAC9tC,EAAe1M,EAAcutB,IAAeyqB,EAAAA,GAAmBtrC,EAAExD,MAAMlJ,EAAMutB,IAK7F,MAAMktB,EACJhxC,WAAAA,CACW4C,EACAH,EACAwuC,GAFA,KAAAruC,EAAAA,EACA,KAAAH,EAAAA,EACA,KAAAwuC,SAAAA,EAETl/C,KAAKm/C,gBACP,CAGA,kBAAOC,CAAYt4C,GACjB,MAAM0K,EAAI4qC,EAAM0C,YAEhB,OADAh4C,GAAMu4C,EAAAA,EAAAA,IAAY,mBAAoBv4C,EAAS,EAAJ0K,GACpC,IAAIytC,EAAUD,EAAOl4C,EAAK,EAAG0K,GAAIwtC,EAAOl4C,EAAK0K,EAAG,EAAIA,GAC7D,CAIA,cAAO8tC,CAAQx4C,GACb,MAAM,EAAE+J,EAAC,EAAEH,GAAM6uC,EAAIC,OAAMH,EAAAA,EAAAA,IAAY,MAAOv4C,IAC9C,OAAO,IAAIm4C,EAAUpuC,EAAGH,EAC1B,CAEAyuC,cAAAA,GACE3C,EAAAA,GAAY,IAAKx8C,KAAK6Q,EAAG0tC,EAAKxB,GAC9BP,EAAAA,GAAY,IAAKx8C,KAAK0Q,EAAG6tC,EAAKxB,EAChC,CAEA2C,cAAAA,CAAeR,GACb,OAAO,IAAID,EAAUj/C,KAAK6Q,EAAG7Q,KAAK0Q,EAAGwuC,EACvC,CAEAS,gBAAAA,CAAiBC,GACf,MAAM,EAAE/uC,EAAC,EAAEH,EAAGwuC,SAAUW,GAAQ7/C,KAC1BwxB,EAAImrB,GAAc0C,EAAAA,EAAAA,IAAY,UAAWO,IAC/C,GAAW,MAAPC,IAAgB,CAAC,EAAG,EAAG,EAAG,GAAGC,SAASD,GAAM,MAAM,IAAIh8C,MAAM,uBAChE,MAAMk8C,EAAe,IAARF,GAAqB,IAARA,EAAYhvC,EAAIurC,EAAM7rC,EAAIM,EACpD,GAAIkvC,GAAQjD,EAAG0B,MAAO,MAAM,IAAI36C,MAAM,8BACtC,MAAM0P,EAAuB,KAAP,EAANssC,GAAiB,KAAO,KAClCG,EAAIzC,EAAM0C,QAAQ1sC,EAASorC,EAAcoB,IACzCG,EAAK7C,EAAK0C,GACVI,EAAKhD,GAAM3rB,EAAI0uB,GACfE,EAAKjD,EAAKzsC,EAAIwvC,GACdG,EAAI9C,EAAMvtC,KAAKswC,qBAAqBN,EAAGG,EAAIC,GACjD,IAAKC,EAAG,MAAM,IAAIx8C,MAAM,qBAExB,OADAw8C,EAAElB,iBACKkB,CACT,CAGAE,QAAAA,GACE,OAAOxB,EAAsB/+C,KAAK0Q,EACpC,CAEA8vC,UAAAA,GACE,OAAOxgD,KAAKugD,WAAa,IAAItB,EAAUj/C,KAAK6Q,EAAGssC,GAAMn9C,KAAK0Q,GAAI1Q,KAAKk/C,UAAYl/C,IACjF,CAGAygD,aAAAA,GACE,OAAOjE,EAAAA,GAAcx8C,KAAK2gD,WAC5B,CACAA,QAAAA,GACE,OAAOpB,EAAIqB,WAAW,CAAE/vC,EAAG7Q,KAAK6Q,EAAGH,EAAG1Q,KAAK0Q,GAC7C,CAGAmwC,iBAAAA,GACE,OAAOrE,EAAAA,GAAcx8C,KAAK8gD,eAC5B,CACAA,YAAAA,GACE,OAAOnC,EAAc3+C,KAAK6Q,GAAK8tC,EAAc3+C,KAAK0Q,EACpD,EAIF,MAAM2rB,EAAQ,CACZ0kB,iBAAAA,CAAkBC,GAChB,IAEE,OADAxD,EAAuBwD,IAChB,CACT,CAAE,MAAOn+B,GACP,OAAO,CACT,CACF,EACA26B,uBAAwBA,EAMxByD,iBAAkBA,KAChB,MAAMp/C,GAASq/C,EAAAA,EAAAA,IAAiB9E,EAAM7rC,GACtC,OAAO4wC,EAAAA,EAAAA,IAAe/E,EAAM9xC,YAAYzI,GAASu6C,EAAM7rC,EAAE,EAW3D6wC,UAAAA,GAA6C,IAAlCC,EAAUz/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGg8C,EAAKh8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG27C,EAAMvtC,KAGvC,OAFA4tC,EAAM0D,eAAeD,GACrBzD,EAAMxlC,SAAS1S,OAAO,IACfk4C,CACT,GAgBF,SAAS2D,EAAUhuB,GACjB,MAAMvb,EAAMwkC,EAAAA,GAAWjpB,GACjBvhB,EAAsB,kBAATuhB,EACbphB,GAAO6F,GAAOhG,IAASuhB,EAAa1xB,OAC1C,OAAImW,EAAY7F,IAAQ6qC,GAAiB7qC,IAAQ+qC,EAC7ClrC,EAAYG,IAAQ,EAAI6qC,GAAiB7qC,IAAQ,EAAI+qC,EACrD3pB,aAAgBgqB,CAEtB,CAuBA,MAAMb,EACJN,EAAMM,UACN,SAAUyB,GAER,GAAIA,EAAMt8C,OAAS,KAAM,MAAM,IAAIgC,MAAM,sBAGzC,MAAMs9B,EAAMqb,EAAAA,GAAmB2B,GACzB9M,EAAuB,EAAf8M,EAAMt8C,OAAau6C,EAAMqF,WACvC,OAAOpQ,EAAQ,EAAIlQ,GAAOz7B,OAAO2rC,GAASlQ,CAC5C,EACIwb,EACJP,EAAMO,eACN,SAAUwB,GACR,OAAOhB,EAAKT,EAASyB,GACvB,EAEIuD,EAAalF,EAAAA,GAAWJ,EAAMqF,YAIpC,SAASG,EAAWzgB,GAGlB,OAFAqb,EAAAA,GAAY,WAAaJ,EAAMqF,WAAYtgB,EAAK0gB,EAAKH,GAE9ClF,EAAAA,GAAmBrb,EAAKib,EAAM0C,YACvC,CAOA,SAASgD,EAAQlC,EAAcoB,GAA0C,IAArB/mB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGmgD,EACzD,GAAI,CAAC,YAAa,aAAazuB,MAAMhiB,GAAMA,KAAK2oB,IAC9C,MAAM,IAAIp2B,MAAM,uCAClB,MAAM,KAAEe,EAAI,YAAE0F,GAAgB8xC,EAC9B,IAAI,KAAEQ,EAAI,QAAEoF,EAASC,aAAcC,GAAQjoB,EAC/B,MAAR2iB,IAAcA,GAAO,GACzBgD,GAAUP,EAAAA,EAAAA,IAAY,UAAWO,GACjCuC,EAAmBloB,GACf+nB,IAASpC,GAAUP,EAAAA,EAAAA,IAAY,oBAAqBz6C,EAAKg7C,KAK7D,MAAMwC,EAAQzF,EAAciD,GACtBrqC,EAAIioC,EAAuBwD,GAC3BqB,EAAW,CAACT,EAAWrsC,GAAIqsC,EAAWQ,IAE5C,GAAW,MAAPF,IAAuB,IAARA,EAAe,CAEhC,MAAM3wC,GAAY,IAAR2wC,EAAe53C,EAAYwyC,EAAGG,OAASiF,EACjDG,EAAS/6C,MAAK+3C,EAAAA,EAAAA,IAAY,eAAgB9tC,GAC5C,CACA,MAAM+wC,EAAO9F,EAAAA,MAAkB6F,GACzB/pC,EAAI8pC,EAuBV,MAAO,CAAEE,OAAMC,MArBf,SAAeC,GAEb,MAAMlxC,EAAIorC,EAAS8F,GACnB,IAAK9E,EAAmBpsC,GAAI,OAC5B,MAAMmxC,EAAKpF,EAAK/rC,GACV8H,EAAImkC,EAAMvtC,KAAKoI,SAAS9G,GAAGwsC,WAC3BjtC,EAAIssC,EAAK/jC,EAAEpI,GACjB,GAAIH,IAAMgxC,EAAK,OAIf,MAAMnxC,EAAIysC,EAAKsF,EAAKtF,EAAK7kC,EAAIzH,EAAI0E,IACjC,GAAI7E,IAAMmxC,EAAK,OACf,IAAI3C,GAAY9lC,EAAEpI,IAAMH,EAAI,EAAI,GAAKse,OAAO/V,EAAEnI,EAAIstC,GAC9CmE,EAAQhyC,EAKZ,OAJIksC,GAAQmC,EAAsBruC,KAChCgyC,EA7ON,SAAoBhyC,GAClB,OAAOquC,EAAsBruC,GAAKysC,GAAMzsC,GAAKA,CAC/C,CA2Oc8vC,CAAW9vC,GACnBwuC,GAAY,GAEP,IAAID,EAAUpuC,EAAG6xC,EAAOxD,EACjC,EAEF,CACA,MAAM6C,EAA2B,CAAEnF,KAAMR,EAAMQ,KAAMoF,SAAS,GACxDW,EAA0B,CAAE/F,KAAMR,EAAMQ,KAAMoF,SAAS,GAiG7D,OA1EAzE,EAAMvtC,KAAKsxC,eAAe,GA0EnB,CACLlF,QACAwG,aA1NF,SAAsB5B,GAAwC,IAAnBnD,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACrD,OAAO27C,EAAMsF,eAAe7B,GAAY8B,WAAWjF,EACrD,EAyNEkF,gBAhMF,SAAyBC,EAAmBC,GAAiC,IAAnBpF,IAAYj8C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACpE,GAAI2/C,EAAUyB,GAAW,MAAM,IAAIn/C,MAAM,iCACzC,IAAK09C,EAAU0B,GAAU,MAAM,IAAIp/C,MAAM,iCAEzC,OADU05C,EAAM0C,QAAQgD,GACf7qC,SAASolC,EAAuBwF,IAAWF,WAAWjF,EACjE,EA4LE35C,KAtFF,SAAc07C,EAAcsD,GAAuC,IAArBjpB,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGmgD,EACnD,MAAM,KAAEO,EAAI,MAAEC,GAAUT,EAAQlC,EAASsD,EAASjpB,GAC5CwW,EAAI2L,EAEV,OADaI,EAAAA,GAAsC/L,EAAE7rC,KAAKmrB,UAAW0gB,EAAEqO,YAAarO,EAAE1mC,KAC/Eq5C,CAAKd,EAAMC,EACpB,EAkFE19C,OA/DF,SACEZ,EACA27C,EACAj7C,GACqB,IAArBs1B,EAAIr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG+gD,EAEP,MAAMU,EAAKp/C,EACX27C,GAAUP,EAAAA,EAAAA,IAAY,UAAWO,GACjCj7C,GAAY06C,EAAAA,EAAAA,IAAY,YAAa16C,GACrC,MAAM,KAAEi4C,EAAI,QAAEoF,EAAO,OAAEntC,GAAWolB,EAIlC,GADAkoB,EAAmBloB,GACf,WAAYA,EAAM,MAAM,IAAIp2B,MAAM,sCACtC,QAAe/B,IAAX+S,GAAmC,YAAXA,GAAmC,QAAXA,EAClD,MAAM,IAAIhR,MAAM,iCAClB,MAAMy/C,EAAsB,kBAAPD,GAAmB7G,EAAAA,GAAW6G,GAC7CE,GACHD,IACAzuC,GACa,kBAAPwuC,GACA,OAAPA,GACgB,kBAATA,EAAGxyC,GACM,kBAATwyC,EAAG3yC,EACZ,IAAK4yC,IAAUC,EACb,MAAM,IAAI1/C,MAAM,4EAElB,IAAI2/C,EACA9wC,EACJ,IAEE,GADI6wC,IAAOC,EAAO,IAAIvE,EAAUoE,EAAGxyC,EAAGwyC,EAAG3yC,IACrC4yC,EAAO,CAGT,IACiB,YAAXzuC,IAAsB2uC,EAAOvE,EAAUK,QAAQ+D,GACrD,CAAE,MAAOI,GACP,KAAMA,aAAoBlE,EAAImE,KAAM,MAAMD,CAC5C,CACKD,GAAmB,QAAX3uC,IAAkB2uC,EAAOvE,EAAUG,YAAYiE,GAC9D,CACA3wC,EAAI6qC,EAAM0C,QAAQt7C,EACpB,CAAE,MAAOke,GACP,OAAO,CACT,CACA,IAAK2gC,EAAM,OAAO,EAClB,GAAI5G,GAAQ4G,EAAKjD,WAAY,OAAO,EAChCyB,IAASpC,EAAUxD,EAAMx3C,KAAKg7C,IAClC,MAAM,EAAE/uC,EAAC,EAAEH,GAAM8yC,EACXhyB,EAAImrB,EAAciD,GAClB+D,EAAKtG,EAAK3sC,GACVyvC,EAAKhD,EAAK3rB,EAAImyB,GACdvD,EAAKjD,EAAKtsC,EAAI8yC,GACd3D,EAAIzC,EAAMvtC,KAAKswC,qBAAqB5tC,EAAGytC,EAAIC,IAAKtC,WACtD,QAAKkC,GACK7C,EAAK6C,EAAEhvC,KACJH,CACf,EAOEysC,gBAAiBC,EACjB0B,YACA5iB,QAEJ,CrChtCM,SAAU9yB,EAAQ3E,GAKtB,MAAO,CACLA,OACAmF,KAAM,SAACC,GAAe,QAAAC,EAAArI,UAAAC,OAAKqI,EAAkB,IAAAC,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAlBF,EAAkBE,EAAA,GAAAxI,UAAAwI,GAAA,OAAKL,EAAKnF,EAAMoF,GAAKK,EAAAA,EAAAA,OAAeH,GAAM,EACvFI,YAAWA,EAAAA,GAEf,CsMQA,MAAMs5J,EAAal+J,OAAO,sEACpBm+J,EAAan+J,OAAO,sEACpB64C,EAAM74C,OAAO,GACbugD,EAAMvgD,OAAO,GACb2xF,EAAaA,CAAC5mF,EAAWS,KAAeT,EAAIS,EAAI+0C,GAAO/0C,EAM7D,SAAS4pF,EAAQ7pF,GACf,MAAMyB,EAAIkxJ,EAEJ19G,EAAMxgD,OAAO,GAAIs0F,EAAMt0F,OAAO,GAAIu0F,EAAOv0F,OAAO,IAAKw0F,EAAOx0F,OAAO,IAEnEy0F,EAAOz0F,OAAO,IAAK00F,EAAO10F,OAAO,IAAK20F,EAAO30F,OAAO,IACpD6iC,EAAMt3B,EAAIA,EAAIA,EAAKyB,EACnBg2B,EAAMH,EAAKA,EAAKt3B,EAAKyB,EACrBy2B,GAAMmxD,EAAAA,EAAAA,IAAK5xD,EAAIwd,EAAKxzC,GAAKg2B,EAAMh2B,EAC/Bk3B,GAAM0wD,EAAAA,EAAAA,IAAKnxD,EAAI+c,EAAKxzC,GAAKg2B,EAAMh2B,EAC/B6nF,GAAOD,EAAAA,EAAAA,IAAK1wD,EAAIqc,EAAKvzC,GAAK61B,EAAM71B,EAChC8nF,GAAOF,EAAAA,EAAAA,IAAKC,EAAKN,EAAMvnF,GAAK6nF,EAAO7nF,EACnC+nF,GAAOH,EAAAA,EAAAA,IAAKE,EAAKN,EAAMxnF,GAAK8nF,EAAO9nF,EACnCgoF,GAAOJ,EAAAA,EAAAA,IAAKG,EAAKL,EAAM1nF,GAAK+nF,EAAO/nF,EACnCioF,GAAQL,EAAAA,EAAAA,IAAKI,EAAKL,EAAM3nF,GAAKgoF,EAAOhoF,EACpCkoF,GAAQN,EAAAA,EAAAA,IAAKK,EAAMP,EAAM1nF,GAAK+nF,EAAO/nF,EACrCmoF,GAAQP,EAAAA,EAAAA,IAAKM,EAAM10C,EAAKxzC,GAAKg2B,EAAMh2B,EACnC+2C,GAAM6wC,EAAAA,EAAAA,IAAKO,EAAMV,EAAMznF,GAAK8nF,EAAO9nF,EACnCg3C,GAAM4wC,EAAAA,EAAAA,IAAK7wC,EAAIuwC,EAAKtnF,GAAK61B,EAAM71B,EAC/B8nE,GAAO8f,EAAAA,EAAAA,IAAK5wC,EAAIzD,EAAKvzC,GAC3B,IAAKoxJ,EAAKv/G,IAAIu/G,EAAK71H,IAAIusC,GAAOvpE,GAAI,MAAM,IAAIpN,MAAM,2BAClD,OAAO22E,CACT,CAEA,MAAMspF,GAAOh9G,EAAAA,EAAAA,IAAM88G,OAAY9hK,OAAWA,EAAW,CAAEyb,KAAMu9E,IAchDx7B,EtMnDP,SAAsB91D,EAAoBC,GAC9C,MAAMC,EAAU9E,GAAyBgF,EAAY,IAAKJ,KAAaD,EAAQ3E,KAC/E,MAAO,IAAK8E,EAAOD,GAAUC,SAC/B,CsMgD4Cq6J,CAC1C,CACEtzJ,EAAG/K,OAAO,GACVwL,EAAGxL,OAAO,GACVo3C,GAAIgnH,EACJvzJ,EAAGszJ,EAEH38G,GAAIxhD,OAAO,iFACXuhD,GAAIvhD,OAAO,iFACX8rB,EAAG9rB,OAAO,GACVk3C,MAAM,EACN6J,KAAM,CAEJC,KAAMhhD,OAAO,sEACbihD,YAAcr1C,IACZ,MAAMf,EAAIszJ,EACJv9H,EAAK5gC,OAAO,sCACZ0iC,GAAMmW,EAAM74C,OAAO,sCACnB+gC,EAAK/gC,OAAO,uCACZ6iC,EAAKjC,EACLgxD,EAAY5xF,OAAO,uCAEnB2lD,EAAKgsC,EAAW9uD,EAAKj3B,EAAGf,GACxBi7C,EAAK6rC,GAAYjvD,EAAK92B,EAAGf,GAC/B,IAAI+5C,GAAKjvC,EAAAA,EAAAA,IAAI/J,EAAI+5C,EAAK/kB,EAAKklB,EAAK/kB,EAAIl2B,GAChCi6C,GAAKnvC,EAAAA,EAAAA,KAAKgwC,EAAKjjB,EAAKojB,EAAKjjB,EAAIh4B,GACjC,MAAM85C,EAAQC,EAAKgtC,EACb/sC,EAAQC,EAAK8sC,EAGnB,GAFIjtC,IAAOC,EAAK/5C,EAAI+5C,GAChBC,IAAOC,EAAKj6C,EAAIi6C,GAChBF,EAAKgtC,GAAa9sC,EAAK8sC,EACzB,MAAM,IAAIzzF,MAAM,uCAAyCyN,GAE3D,MAAO,CAAE+4C,QAAOC,KAAIC,QAAOC,KAAI,IAIrCgW,EAAAA,IAKI3e,EAAMn8C,OAAO,GAEb86F,EAAsD,CAAC,EAC7D,SAAS7/B,EAAW7b,GAClB,IAAIw8C,EAAOd,EAAqB17C,GAChC,QAAahjD,IAATw/F,EAAoB,CACtB,MAAMC,GAAO/gC,EAAAA,EAAAA,IAAOlwC,WAAW9rB,KAAKsgD,GAAM1zC,GAAMA,EAAEN,WAAW,MAC7DwwF,GAAOj3F,EAAAA,EAAAA,IAAYk3F,EAAMA,GACzBf,EAAqB17C,GAAOw8C,CAC9B,CAAC,QAAAr3F,EAAArI,UAAAC,OANiCotE,EAAsB,IAAA9kE,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAtB6kE,EAAsB7kE,EAAA,GAAAxI,UAAAwI,GAOxD,OAAOo2D,EAAAA,EAAAA,KAAOn2D,EAAAA,EAAAA,IAAYi3F,KAASryB,GACrC,CAGA,MAAM9O,EAAgBviB,GAA6BA,EAAMkF,YAAW,GAAMp1C,MAAM,GAC1EkvF,EAAYrsF,IAAcsuC,EAAAA,EAAAA,IAAgBtuC,EAAG,IAC7CyzJ,EAAQhzJ,IAAcqK,EAAAA,EAAAA,IAAIrK,EAAG4yJ,GAC7BzmH,EAAQnsC,IAAcqK,EAAAA,EAAAA,IAAIrK,EAAG6yJ,GAC7BtmH,EAAQ+hB,EAAUhiB,gBAKxB,SAAS2mH,EAAoB3kE,GAC3B,IAAI4kE,EAAK5kG,EAAUjjC,MAAMmhB,uBAAuB8hD,GAC5C/oF,EAAIgnC,EAAMsF,eAAeqhH,GAE7B,MAAO,CAAEv5G,OADMp0C,EAAE0nC,WAAaimH,EAAK/mH,GAAM+mH,GAChB/lH,MAAOgiB,EAAa5pD,GAC/C,CAKA,SAASupD,EAAO9uD,IACdyuC,EAAAA,EAAAA,IAAS,IAAKzuC,EAAGutC,EAAKqlH,GACtB,MAAMO,EAAKH,EAAKhzJ,EAAIA,GAEpB,IAAIC,EAAI6pF,EADEkpE,EAAKG,EAAKnzJ,EAAItL,OAAO,KAE3BuL,EAAIg1C,IAAQpE,IAAK5wC,EAAI+yJ,GAAM/yJ,IAC/B,MAAMsF,EAAI,IAAIgnC,EAAMvsC,EAAGC,EAAGstC,GAE1B,OADAhoC,EAAE4oC,iBACK5oC,CACT,CACA,MAAM4qB,EAAMkd,EAAAA,GAIZ,SAAS0hD,IAA+B,QAAAl3E,EAAAjnB,UAAAC,OAAlBsT,EAAkB,IAAAhL,MAAA0e,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAlB3T,EAAkB2T,GAAAlnB,UAAAknB,GACtC,OAAOq0B,EAAKhc,EAAIw/B,EAAW,uBAAwBxrD,IACrD,CAKA,SAASivJ,EAAoBpjH,GAC3B,OAAOijH,EAAoBjjH,GAAY7C,KACzC,CAMA,SAASkmH,EACPp2I,EACA+yB,GAC8B,IAA9Bo+C,EAAAx9F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,IAAe0I,EAAAA,EAAAA,IAAY,IAE3B,MAAMgO,GAAI+mC,EAAAA,EAAAA,IAAY,UAAWpxB,IACzBkwB,MAAOsJ,EAAIkD,OAAQp1C,GAAM0uJ,EAAoBjjH,GAC/CvwC,GAAI4uC,EAAAA,EAAAA,IAAY,UAAW+/C,EAAS,IACpC7iF,EAAIqgF,EAASrnF,EAAI4rB,EAAIw/B,EAAW,cAAelwD,KAC/C4G,EAAOspD,EAAW,gBAAiBpkD,EAAGkrC,EAAInvC,GAC1CgsJ,EAAKnnH,EAAKhc,EAAI9pB,IACpB,GAAIitJ,IAAOziH,EAAK,MAAM,IAAIh+C,MAAM,0BAChC,MAAQs6C,MAAOrR,EAAI6d,OAAQr5C,GAAM2yJ,EAAoBK,GAC/C/yJ,EAAIwuF,EAAUjzD,EAAI2a,EAAInvC,GACtBytC,EAAM,IAAIz1B,WAAW,IAI3B,GAHAy1B,EAAIzvC,IAAIw2B,EAAI,GACZiZ,EAAIzvC,IAAIsmF,EAASz/C,EAAK7rC,EAAIC,EAAIgE,IAAK,KAE9ByqF,EAAcj6C,EAAKztC,EAAGmvC,GAAK,MAAM,IAAI5jD,MAAM,oCAChD,OAAOkiD,CACT,CAMA,SAASi6C,EAAc/7F,EAAgBgqB,EAActpB,GACnD,MAAMohD,GAAM1G,EAAAA,EAAAA,IAAY,YAAap7C,EAAW,IAC1CqU,GAAI+mC,EAAAA,EAAAA,IAAY,UAAWpxB,GAC3ByxC,GAAMrgB,EAAAA,EAAAA,IAAY,YAAa16C,EAAW,IAChD,IACE,MAAM+N,EAAIotD,EAAO3+B,EAAIu+B,IACf7uD,EAAIswB,EAAI4kB,EAAIn1B,SAAS,EAAG,KAC9B,KAAK0tB,EAAAA,EAAAA,IAAQztC,EAAG0tC,EAAKqlH,GAAa,OAAO,EACzC,MAAMlzJ,EAAIywB,EAAI4kB,EAAIn1B,SAAS,GAAI,KAC/B,KAAK0tB,EAAAA,EAAAA,IAAQ5tC,EAAG6tC,EAAKslH,GAAa,OAAO,EACzC,MAAMtyJ,EAAIwuF,EAAUnD,EAAS/rF,GAAIsvD,EAAaztD,GAAI4F,GAC5C0nC,GAhFOK,EAgFK3tC,EAhFiBjC,EAgFdC,EAhFyBQ,EAgFtBisC,GAAM5rC,GA/EhCgsC,EAAMvtC,KAAKswC,qBAAqBD,EAAG5vC,EAAGS,IAgFpC,SAAK8uC,IAAMA,EAAE/B,YAAc+B,EAAElC,WAAW9sC,IAAMH,EAEhD,CAAE,MAAOgS,GACP,OAAO,CACT,CArFc0hJ,IAAClkH,EAAsB5vC,EAAWS,CAsFlD,CA2BO,MAAM2uD,EAAuC,MAAO,CACzDjd,aAAcwhH,EACdlgK,KAAMmgK,EACNx/J,OAAQm7F,EACR3jE,MAAO,CACL4kB,iBAAkBqe,EAAUjjC,MAAM4kB,iBAClC6e,SACAK,eACAthB,gBAAe,KACfR,gBAAe,KACfsiB,aACAtlD,IAAGA,EAAAA,MAX6C,iCsS1PpDrY,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ0D,kBAAe,EACvB,MAAM2B,EAAUrE,EAAQ,MASxBhB,EAAQ0D,aARR,MACIyK,WAAAA,CAAYusE,GACRx6E,KAAK6hB,QAAS,EAAI1c,EAAQG,WAAWtF,KAAKiO,YAAY2D,KAAO,MAC7D5R,KAAKkB,WAAas5E,EAAKt5E,WACvBlB,KAAKupB,YAAcixD,EAAKjxD,YACxBvpB,KAAKw6E,KAAOA,CAChB,giBCTJ,MAAA1nD,EAAAhyB,EAAA,OAEAiyB,EAAAjyB,EAAA,OAGahB,EAAAA,WAAa,UACxB,MAAMkzB,QAAiB,EAAAD,EAAAE,oBAAmBrR,EAAQsR,cAE5C,SAAEssP,GAAa59P,EAAQwQ,QAC7B,IAAKotP,EACH,MAAM,IAAI37Q,MAAM,iCAGlB,IACE,MAAM4vB,GAAU,EAAAX,EAAAY,sBAAqB9R,EAAQwQ,SACvCuB,QAAiBX,EAAS66L,QAAQp6L,GACxC7R,EAAQiS,WAAWF,GACnB,MAAO9Q,GACP+F,QAAQ/F,MAAM,yCAA0CA,GACxDjB,EAAQkS,eAIZtkB,EAAA1O,EAAA,OAAAhB,+BCnBAA,EAAQ,OAAiB,EAyCzBA,EAAQ,EAxCa,CACnB,QAAW,YACX,SAAY,CAAC,CACX,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,MAEX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,KAAQ,OACR,OAAU,KACV,MAAS,MAEX,SAAY,QAGf,CACD,KAAQ,IACR,QAAW,CAAC,EACZ,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,oiBAEP,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,oiBAEP,SAAY,iJCvBpB,MAAM+hD,EAAMn8C,OAAO,GAAI64C,EAAM74C,OAAO,GAAIugD,EAAsBvgD,OAAO,GAAIwgD,EAAsBxgD,OAAO,GAEhGygD,EAAsBzgD,OAAO,GAAI+5Q,EAAsB/5Q,OAAO,GAAI0xF,EAAsB1xF,OAAO,GAK/F,SAAU2V,EAAI5K,EAAWS,GAC7B,MAAMyd,EAASle,EAAIS,EACnB,OAAOyd,GAAUkzB,EAAMlzB,EAASzd,EAAIyd,CACtC,CAQM,SAAUzW,EAAIipB,EAAa47D,EAAepgF,GAC9C,GAAIogF,EAAQl7C,EAAK,MAAM,IAAIh+C,MAAM,2CACjC,GAAI8Y,GAAUklC,EAAK,MAAM,IAAIh+C,MAAM,mBACnC,GAAI8Y,IAAW4hC,EAAK,OAAOsD,EAC3B,IAAIjwB,EAAM2sB,EACV,KAAOw+C,EAAQl7C,GACTk7C,EAAQx+C,IAAK3sB,EAAOA,EAAMuP,EAAOxkB,GACrCwkB,EAAOA,EAAMA,EAAOxkB,EACpBogF,IAAUx+C,EAEZ,OAAO3sB,CACT,CAGM,SAAU0oE,EAAKtpF,EAAW+rF,EAAepgF,GAC7C,IAAIiV,EAAM5gB,EACV,KAAO+rF,KAAUl7C,GACfjwB,GAAOA,EACPA,GAAOjV,EAET,OAAOiV,CACT,CAMM,SAAUhpB,EAAOs3B,EAAgBvjB,GACrC,GAAIujB,IAAW2hB,EAAK,MAAM,IAAIh+C,MAAM,oCACpC,GAAI8Y,GAAUklC,EAAK,MAAM,IAAIh+C,MAAM,0CAA4C8Y,GAE/E,IAAIlM,EAAI4K,EAAI6kB,EAAQvjB,GAChBzL,EAAIyL,EAEJ3L,EAAI6wC,EAAK5wC,EAAIstC,EAAKhJ,EAAIgJ,EAAKtqC,EAAI4tC,EACnC,KAAOpxC,IAAMoxC,GAAK,CAEhB,MAAMzoC,EAAIlI,EAAIT,EACRI,EAAIK,EAAIT,EACR6H,EAAItH,EAAIukC,EAAIn8B,EACZ7I,EAAIU,EAAIgD,EAAImF,EAElBlI,EAAIT,EAAGA,EAAII,EAAGG,EAAIukC,EAAGtkC,EAAIgD,EAAGshC,EAAIj9B,EAAGrE,EAAI1D,CACzC,CAEA,GADYW,IACAqtC,EAAK,MAAM,IAAI16C,MAAM,0BACjC,OAAOwX,EAAIrK,EAAG2L,EAChB,CAgFM,SAAU+iQ,EAAOhtQ,GAGrB,GAAIA,EAAIyzC,IAAQD,EAAK,CAKnB,MAAMy5N,GAAUjtQ,EAAI6rC,GAAO4H,EAC3B,OAAO,SAAsBrJ,EAAevsC,GAC1C,MAAMiqE,EAAO19B,EAAG5kC,IAAI3H,EAAGovQ,GAEvB,IAAK7iO,EAAGyH,IAAIzH,EAAG7O,IAAIusC,GAAOjqE,GAAI,MAAM,IAAI1M,MAAM,2BAC9C,OAAO22E,CACT,CACF,CAGA,GAAI9nE,EAAI0kF,IAAQqoL,EAAK,CACnB,MAAMp0N,GAAM34C,EAAI+sQ,GAAOroL,EACvB,OAAO,SAAsBt6C,EAAevsC,GAC1C,MAAMwuG,EAAKjiE,EAAG9b,IAAIzwB,EAAG01C,GACfhyC,EAAI6oC,EAAG5kC,IAAI6mG,EAAI1zD,GACfu0N,EAAK9iO,EAAG9b,IAAIzwB,EAAG0D,GACfjJ,EAAI8xC,EAAG9b,IAAI8b,EAAG9b,IAAI4+O,EAAI35N,GAAMhyC,GAC5BumE,EAAO19B,EAAG9b,IAAI4+O,EAAI9iO,EAAG/W,IAAI/6B,EAAG8xC,EAAGlqC,MACrC,IAAKkqC,EAAGyH,IAAIzH,EAAG7O,IAAIusC,GAAOjqE,GAAI,MAAM,IAAI1M,MAAM,2BAC9C,OAAO22E,CACT,CACF,CAyBA,OA5HI,SAAwB9nE,GAM5B,MAAMmtQ,GAAantQ,EAAI6rC,GAAO0H,EAE9B,IAAI5F,EAAW6rC,EAAWpoC,EAG1B,IAAKzD,EAAI3tC,EAAI6rC,EAAK2tC,EAAI,EAAG7rC,EAAI4F,IAAQpE,EAAKxB,GAAK4F,EAAKimC,KAGpD,IAAKpoC,EAAImC,EAAKnC,EAAIpxC,GAAKwF,EAAI4rC,EAAG+7N,EAAWntQ,KAAOA,EAAI6rC,EAAKuF,IAEvD,GAAIA,EAAI,IAAM,MAAM,IAAIjgD,MAAM,+CAIhC,GAAU,IAANqoF,EAAS,CACX,MAAMyzL,GAAUjtQ,EAAI6rC,GAAO4H,EAC3B,OAAO,SAAwBrJ,EAAevsC,GAC5C,MAAMiqE,EAAO19B,EAAG5kC,IAAI3H,EAAGovQ,GACvB,IAAK7iO,EAAGyH,IAAIzH,EAAG7O,IAAIusC,GAAOjqE,GAAI,MAAM,IAAI1M,MAAM,2BAC9C,OAAO22E,CACT,CACF,CAGA,MAAMslM,GAAUz/N,EAAI9B,GAAO0H,EAC3B,OAAO,SAAwBnJ,EAAevsC,GAE5C,GAAIusC,EAAG5kC,IAAI3H,EAAGsvQ,KAAe/iO,EAAGnY,IAAImY,EAAGlqC,KAAM,MAAM,IAAI/O,MAAM,2BAC7D,IAAIgN,EAAIq7E,EAEJv7C,EAAImM,EAAG5kC,IAAI4kC,EAAG9b,IAAI8b,EAAGlqC,IAAKkxC,GAAIzD,GAC9BrvC,EAAI8rC,EAAG5kC,IAAI3H,EAAGuvQ,GACd5uQ,EAAI4rC,EAAG5kC,IAAI3H,EAAG8vC,GAElB,MAAQvD,EAAGyH,IAAIrzC,EAAG4rC,EAAGlqC,MAAM,CACzB,GAAIkqC,EAAGyH,IAAIrzC,EAAG4rC,EAAG0H,MAAO,OAAO1H,EAAG0H,KAElC,IAAIlsC,EAAI,EACR,IAAK,IAAIoxC,EAAK5M,EAAG7O,IAAI/8B,GAAIoH,EAAIzH,IACvBisC,EAAGyH,IAAImF,EAAI5M,EAAGlqC,KADY0F,IAE9BoxC,EAAK5M,EAAG7O,IAAIyb,GAGd,MAAMq2N,EAAKjjO,EAAG5kC,IAAIy4B,EAAG4N,GAAO74C,OAAOmL,EAAIyH,EAAI,IAC3Cq4B,EAAImM,EAAG7O,IAAI8xO,GACX/uQ,EAAI8rC,EAAG9b,IAAIhwB,EAAG+uQ,GACd7uQ,EAAI4rC,EAAG9b,IAAI9vB,EAAGy/B,GACd9/B,EAAIyH,CACN,CACA,OAAOtH,CACT,CACF,CAmESgvQ,CAActtQ,EACvB,CAGO,MAAMutQ,EAAeA,CAAC9+O,EAAaxkB,KACvCtB,EAAI8lB,EAAKxkB,GAAU4hC,KAASA,EA8CzB2hO,EAAe,CACnB,SAAU,UAAW,MAAO,MAAO,MAAO,OAAQ,MAClD,MAAO,MAAO,MAAO,MAAO,MAAO,MACnC,OAAQ,OAAQ,OAAQ,QAEpB,SAAUr8N,EAAiB4rG,GAC/B,MAMMx1H,EAAOimP,EAAaj3Q,QAAO,CAACP,EAAKiG,KACrCjG,EAAIiG,GAAO,WACJjG,IARO,CACd81C,MAAO,SACP0gO,KAAM,SACNjiO,MAAO,gBACPw1G,KAAM,kBAMR,OAAOh2G,EAAAA,EAAAA,IAAegzG,EAAOx1H,EAC/B,CAwEM,SAAUqlP,EACd/uQ,EACAkxC,GAMA,MAAM0+N,OAA6Br+Q,IAAf2/C,EAA2BA,EAAalxC,EAAE9L,SAAS,GAAG5C,OAE1E,MAAO,CAAE4/C,WAAY0+N,EAAarhO,YADd11C,KAAKwG,KAAKuwQ,EAAc,GAE9C,CAkBM,SAAUr5N,EACdtI,EACAygO,GAEmC,IADnChvP,EAAIruB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACJw+Q,EAAAx+Q,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAiC,CAAC,EAElC,GAAI48C,GAASqD,EAAK,MAAM,IAAIh+C,MAAM,0CAA4C26C,GAC9E,MAAQiD,WAAYgxG,EAAM3zG,YAAa7B,GAAUqiO,EAAQ9gO,EAAOygO,GAChE,GAAIhiO,EAAQ,KAAM,MAAM,IAAIp5C,MAAM,kDAClC,IAAIw8Q,EACJ,MAAMx1N,EAAuB7nD,OAAO8J,OAAO,CACzC0xC,QACAvuB,OACAwiI,OACAx1G,QACAiiO,MAAMv9N,EAAAA,EAAAA,IAAQ8wG,GACdjuG,KAAM3C,EACNjvC,IAAK2rC,EACL70C,OAASy3B,GAAQ9lB,EAAI8lB,EAAKqd,GAC1Bl6B,QAAU6c,IACR,GAAmB,kBAARA,EACT,MAAM,IAAIt9B,MAAM,sDAAwDs9B,GAC1E,OAAO0gB,GAAO1gB,GAAOA,EAAMqd,CAAK,EAElCoJ,IAAMzmB,GAAQA,IAAQ0gB,EACtB/vC,MAAQqvB,IAASA,EAAMod,KAASA,EAChC5Z,IAAMxD,GAAQ9lB,GAAK8lB,EAAKqd,GACxB+F,IAAKA,CAAC+7N,EAAKC,IAAQD,IAAQC,EAE3BtyO,IAAM9M,GAAQ9lB,EAAI8lB,EAAMA,EAAKqd,GAC7Bj8C,IAAKA,CAAC+9Q,EAAKC,IAAQllQ,EAAIilQ,EAAMC,EAAK/hO,GAClCzY,IAAKA,CAACu6O,EAAKC,IAAQllQ,EAAIilQ,EAAMC,EAAK/hO,GAClCxd,IAAKA,CAACs/O,EAAKC,IAAQllQ,EAAIilQ,EAAMC,EAAK/hO,GAClCtmC,IAAKA,CAACipB,EAAK47D,IA9HT,SAAmBlyC,EAAc1pB,EAAQ47D,GAG7C,GAAIA,EAAQl7C,EAAK,MAAM,IAAIh+C,MAAM,2CACjC,GAAIk5F,IAAUl7C,EAAK,OAAOgJ,EAAEj4C,IAC5B,GAAImqF,IAAUx+C,EAAK,OAAOpd,EAC1B,IAAI5qB,EAAIs0C,EAAEj4C,IACN2C,EAAI4rB,EACR,KAAO47D,EAAQl7C,GACTk7C,EAAQx+C,IAAKhoC,EAAIs0C,EAAE7pB,IAAIzqB,EAAGhB,IAC9BA,EAAIs1C,EAAE5c,IAAI14B,GACVwnF,IAAUx+C,EAEZ,OAAOhoC,CACT,CAgHyBmoD,CAAM7T,EAAG1pB,EAAK47D,GACnCxqF,IAAKA,CAAC+tQ,EAAKC,IAAQllQ,EAAIilQ,EAAM13Q,EAAO23Q,EAAK/hO,GAAQA,GAGjDmgB,KAAOx9B,GAAQA,EAAMA,EACrBq/O,KAAMA,CAACF,EAAKC,IAAQD,EAAMC,EAC1BE,KAAMA,CAACH,EAAKC,IAAQD,EAAMC,EAC1BrhN,KAAMA,CAACohN,EAAKC,IAAQD,EAAMC,EAE1BrrO,IAAM/T,GAAQv4B,EAAOu4B,EAAKqd,GAC1BjhC,KACE6iQ,EAAM7iQ,MAAI,CACRhN,IACK8vQ,IAAOA,EAAQX,EAAOlhO,IACpB6hO,EAAMx1N,EAAGt6C,KAEpB83C,YAAcmtG,GA1HZ,SAA2B3qG,EAAcitC,GAC7C,MAAMjkD,EAAM,IAAI1pC,MAAM2tF,EAAKj2F,QAErB6+Q,EAAiB5oL,EAAK7uF,QAAO,CAAC8hB,EAAKoW,EAAKn2B,IACxC6/C,EAAEjD,IAAIzmB,GAAapW,GACvB8oB,EAAI7oC,GAAK+f,EACF8/B,EAAE7pB,IAAIjW,EAAKoW,KACjB0pB,EAAEj4C,KAEColF,EAAWntC,EAAE3V,IAAIwrO,GAOvB,OALA5oL,EAAKG,aAAY,CAACltE,EAAKoW,EAAKn2B,IACtB6/C,EAAEjD,IAAIzmB,GAAapW,GACvB8oB,EAAI7oC,GAAK6/C,EAAE7pB,IAAIjW,EAAK8oB,EAAI7oC,IACjB6/C,EAAE7pB,IAAIjW,EAAKoW,KACjB62D,GACInkD,CACT,CAyG0B8sO,CAAc91N,EAAG2qG,GAGvClxG,KAAMA,CAAC7zC,EAAGS,EAAGE,IAAOA,EAAIF,EAAIT,EAC5BigB,QAAUyQ,GAASlR,GAAO2wP,EAAAA,EAAAA,GAAgBz/O,EAAK8b,IAAS4B,EAAAA,EAAAA,IAAgB1d,EAAK8b,GAC7EiB,UAAYC,IACV,GAAIA,EAAMt8C,SAAWo7C,EACnB,MAAM,IAAIp5C,MAAM,6BAA+Bo5C,EAAQ,eAAiBkB,EAAMt8C,QAChF,OAAOouB,GAAO4wP,EAAAA,EAAAA,IAAgB1iO,IAASE,EAAAA,EAAAA,IAAgBF,EAAM,IAGjE,OAAOn7C,OAAO8J,OAAO+9C,EACvB,CA0CM,SAAUi2N,EAAoBC,GAClC,GAA0B,kBAAfA,EAAyB,MAAM,IAAIl9Q,MAAM,8BACpD,MAAMmgC,EAAY+8O,EAAWt8Q,SAAS,GAAG5C,OACzC,OAAOuH,KAAKwG,KAAKo0B,EAAY,EAC/B,CASM,SAAUkd,EAAiB6/N,GAC/B,MAAMl/Q,EAASi/Q,EAAoBC,GACnC,OAAOl/Q,EAASuH,KAAKwG,KAAK/N,EAAS,EACrC,CAeM,SAAUs/C,EAAen3C,EAAiB+2Q,GAAgC,IAAZ9wP,EAAIruB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACtE,MAAMuQ,EAAMnI,EAAInI,OACV01F,EAAWupL,EAAoBC,GAC/BC,EAAS9/N,EAAiB6/N,GAEhC,GAAI5uQ,EAAM,IAAMA,EAAM6uQ,GAAU7uQ,EAAM,KACpC,MAAM,IAAItO,MAAM,YAAcm9Q,EAAS,6BAA+B7uQ,GACxE,MAEM8uQ,EAAU5lQ,EAFJ4U,GAAO4wP,EAAAA,EAAAA,IAAgB72Q,IAAOq0C,EAAAA,EAAAA,IAAgBr0C,GAEjC+2Q,EAAaxiO,GAAOA,EAC7C,OAAOtuB,GAAO2wP,EAAAA,EAAAA,GAAgBK,EAAS1pL,IAAY14C,EAAAA,EAAAA,IAAgBoiO,EAAS1pL,EAC9E,8NCnhBA,MAAA12F,EAAAC,EAAA,OAGahB,EAAAA,iBAAmB,IAAIe,EAAAiE,UAAU,+CAGjChF,EAAAA,sBAAwB,IAAIe,EAAAiE,UAAU,+CAGtChF,EAAAA,4BAA8B,IAAIe,EAAAiE,UAAU,gDAG5ChF,EAAAA,YAAc,IAAIe,EAAAiE,UAAU,+CAG5BhF,EAAAA,iBAAmB,IAAIe,EAAAiE,UAAU,gDAG9ChF,EAAAA,0BAAA,SAA0CkC,GACtC,OAAIA,IAAclC,EAAA6yB,gBAKtB,0BCkBA,SAAS2+C,EAAKjK,GAAO,IAAIl1D,EAAMk1D,EAAIxlE,OAAQ,OAASsQ,GAAO,GAAKk1D,EAAIl1D,GAAO,CAAK,CAIhF,MAiBM+uQ,EAAgB,IAGhBC,EAAgBD,IAGhBE,EAAgB,GAShB1rM,EAAgB,GA2BhBhO,EACJ,IAAIp3C,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAEpEq3C,EACJ,IAAIr3C,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAE7Es3C,EACJ,IAAIt3C,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAEhDu3C,EACJ,IAAIv3C,WAAW,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAgBxDw3C,EAAgB,IAAI39D,MAAM,KAChCmnE,EAAKxJ,GAOL,MAAMC,EAAgB,IAAI59D,MAAMi3Q,IAChC9vM,EAAKvJ,GAKL,MAAMC,EAAgB,IAAI79D,MAjBJ,KAkBtBmnE,EAAKtJ,GAML,MAAMC,EAAgB,IAAI99D,MAAM6mE,KAChCM,EAAKrJ,GAGL,MAAME,EAAgB,IAAIh+D,MAhGJ,IAiGtBmnE,EAAKnJ,GAGL,MAAMC,EAAgB,IAAIj+D,MAAMi3Q,GAKhC,SAAS/4M,EAAeC,EAAaC,EAAYC,EAAYC,EAAOC,GAElE1oE,KAAKsoE,YAAeA,EACpBtoE,KAAKuoE,WAAeA,EACpBvoE,KAAKwoE,WAAeA,EACpBxoE,KAAKyoE,MAAeA,EACpBzoE,KAAK0oE,WAAeA,EAGpB1oE,KAAK2oE,UAAeL,GAAeA,EAAYzmE,MACjD,CAGA,IAAI+mE,EACAC,EACAC,EAGJ,SAASC,EAASC,EAAUC,GAC1BjpE,KAAKgpE,SAAWA,EAChBhpE,KAAKkpE,SAAW,EAChBlpE,KAAKipE,UAAYA,CACnB,CA1BAqI,EAAKlJ,GA8BL,MAAMe,EAAUlwC,GAEPA,EAAO,IAAM+uC,EAAW/uC,GAAQ+uC,EAAW,KAAO/uC,IAAS,IAQ9DmwC,EAAYA,CAAC14D,EAAGixB,KAGpBjxB,EAAE24D,YAAY34D,EAAE44D,WAAmB,IAAL3nC,EAC9BjxB,EAAE24D,YAAY34D,EAAE44D,WAAc3nC,IAAM,EAAK,GAAI,EAQzC4nC,EAAYA,CAAC74D,EAAGxN,EAAOrB,KAEvB6O,EAAE84D,SAtIc,GAsIS3nE,GAC3B6O,EAAE+4D,QAAWvmE,GAASwN,EAAE84D,SAAY,MACpCJ,EAAU14D,EAAGA,EAAE+4D,QACf/4D,EAAE+4D,OAASvmE,GAzIO,GAyIcwN,EAAE84D,SAClC94D,EAAE84D,UAAY3nE,EA1II,KA4IlB6O,EAAE+4D,QAAWvmE,GAASwN,EAAE84D,SAAY,MACpC94D,EAAE84D,UAAY3nE,EAChB,EAII6nE,EAAYA,CAACh5D,EAAGU,EAAGu4D,KAEvBJ,EAAU74D,EAAGi5D,EAAS,EAAJv4D,GAAiBu4D,EAAS,EAAJv4D,EAAQ,GAAW,EASvDw4D,EAAaA,CAAClb,EAAMv8C,KAExB,IAAIyf,EAAM,EACV,GACEA,GAAc,EAAP88B,EACPA,KAAU,EACV98B,IAAQ,UACCzf,EAAM,GACjB,OAAOyf,IAAQ,CAAC,EAiIZi4C,EAAYA,CAACF,EAAMT,EAAUY,KAKjC,MAAMC,EAAY,IAAI5/D,MAAMurE,IAC5B,IACI5+C,EACAvmB,EAFAm+C,EAAO,EAOX,IAAK53B,EAAO,EAAGA,GAAQ4+C,EAAU5+C,IAC/B43B,EAAQA,EAAOob,EAAShzC,EAAO,IAAO,EACtCizC,EAAUjzC,GAAQ43B,EASpB,IAAKn+C,EAAI,EAAIA,GAAK24D,EAAU34D,IAAK,CAC/B,IAAI4B,EAAMw3D,EAAS,EAAJp5D,EAAQ,GACX,IAAR4B,IAEJw3D,EAAS,EAAJp5D,GAAkBq5D,EAAWG,EAAU53D,KAAQA,GAItD,GAgHI63D,EAAct5D,IAElB,IAAIH,EAGJ,IAAKA,EAAI,EAAGA,EAAI4wQ,EAAU5wQ,IAAOG,EAAEu5D,UAAc,EAAJ15D,GAAkB,EAC/D,IAAKA,EAAI,EAAGA,EAAI6wQ,EAAU7wQ,IAAOG,EAAEw5D,UAAc,EAAJ35D,GAAkB,EAC/D,IAAKA,EAAI,EAAGA,EAtcQ,GAscMA,IAAOG,EAAEy5D,QAAY,EAAJ55D,GAAkB,EAE7DG,EAAEu5D,UAAUG,KAA0B,EACtC15D,EAAE25D,QAAU35D,EAAE45D,WAAa,EAC3B55D,EAAE65D,SAAW75D,EAAE+sD,QAAU,CAAC,EAOtB+M,EAAa95D,IAEbA,EAAE84D,SAAW,EACfJ,EAAU14D,EAAGA,EAAE+4D,QACN/4D,EAAE84D,SAAW,IAEtB94D,EAAE24D,YAAY34D,EAAE44D,WAAa54D,EAAE+4D,QAEjC/4D,EAAE+4D,OAAS,EACX/4D,EAAE84D,SAAW,CAAC,EAOViB,EAAUA,CAACd,EAAMp5D,EAAG+H,EAAGoyD,KAE3B,MAAMC,EAAU,EAAJp6D,EACNq6D,EAAU,EAAJtyD,EACZ,OAAQqxD,EAAKgB,GAAgBhB,EAAKiB,IAC1BjB,EAAKgB,KAAkBhB,EAAKiB,IAAiBF,EAAMn6D,IAAMm6D,EAAMpyD,EAAG,EAStEuyD,EAAaA,CAACn6D,EAAGi5D,EAAMr4D,KAK3B,MAAM2C,EAAIvD,EAAEo6D,KAAKx5D,GACjB,IAAIV,EAAIU,GAAK,EACb,KAAOV,GAAKF,EAAEq6D,WAERn6D,EAAIF,EAAEq6D,UACRN,EAAQd,EAAMj5D,EAAEo6D,KAAKl6D,EAAI,GAAIF,EAAEo6D,KAAKl6D,GAAIF,EAAEg6D,QAC1C95D,KAGE65D,EAAQd,EAAM11D,EAAGvD,EAAEo6D,KAAKl6D,GAAIF,EAAEg6D,SAGlCh6D,EAAEo6D,KAAKx5D,GAAKZ,EAAEo6D,KAAKl6D,GACnBU,EAAIV,EAGJA,IAAM,EAERF,EAAEo6D,KAAKx5D,GAAK2C,CAAC,EAUT+2D,EAAiBA,CAACt6D,EAAGu6D,EAAOC,KAKhC,IAAIjyC,EACAkyC,EAEAzc,EACA13B,EAFAo0C,EAAK,EAIT,GAAmB,IAAf16D,EAAE65D,SACJ,GACEtxC,EAAyC,IAAlCvoB,EAAE24D,YAAY34D,EAAE26D,QAAUD,KACjCnyC,IAA2C,IAAlCvoB,EAAE24D,YAAY34D,EAAE26D,QAAUD,OAAiB,EACpDD,EAAKz6D,EAAE24D,YAAY34D,EAAE26D,QAAUD,KAClB,IAATnyC,EACFywC,EAAUh5D,EAAGy6D,EAAIF,IAIjBvc,EAAOuZ,EAAakD,GACpBzB,EAAUh5D,EAAGg+C,EAAOwyN,EAAW,EAAGj2M,GAClCj0C,EAAQ0wC,EAAYhZ,GACN,IAAV13B,IACFm0C,GAAMhD,EAAYzZ,GAClB6a,EAAU74D,EAAGy6D,EAAIn0C,IAEnBiC,IACAy1B,EAAOya,EAAOlwC,GAGdywC,EAAUh5D,EAAGg+C,EAAMwc,GACnBl0C,EAAQ2wC,EAAYjZ,GACN,IAAV13B,IACFiC,GAAQmvC,EAAU1Z,GAClB6a,EAAU74D,EAAGuoB,EAAMjC,WAOhBo0C,EAAK16D,EAAE65D,UAGlBb,EAAUh5D,EA1iBQ,IA0iBMu6D,EAAM,EAY1BK,EAAaA,CAAC56D,EAAG2kD,KAIrB,MAAMsU,EAAWtU,EAAK2T,SAChBuC,EAAWlW,EAAK4T,UAAUX,YAC1BK,EAAYtT,EAAK4T,UAAUN,UAC3BF,EAAWpT,EAAK4T,UAAUR,MAChC,IAAIl4D,EAAG+H,EAEHkzD,EADAtC,GAAY,EAUhB,IAHAx4D,EAAEq6D,SAAW,EACbr6D,EAAE+6D,SAxlBkB,IA0lBfl7D,EAAI,EAAGA,EAAIk4D,EAAOl4D,IACQ,IAAzBo5D,EAAS,EAAJp5D,IACPG,EAAEo6D,OAAOp6D,EAAEq6D,UAAY7B,EAAW34D,EAClCG,EAAEg6D,MAAMn6D,GAAK,GAGbo5D,EAAS,EAAJp5D,EAAQ,GAAa,EAS9B,KAAOG,EAAEq6D,SAAW,GAClBS,EAAO96D,EAAEo6D,OAAOp6D,EAAEq6D,UAAa7B,EAAW,IAAMA,EAAW,EAC3DS,EAAY,EAAP6B,GAAqB,EAC1B96D,EAAEg6D,MAAMc,GAAQ,EAChB96D,EAAE25D,UAEE1B,IACFj4D,EAAE45D,YAAciB,EAAa,EAAPC,EAAW,IASrC,IALAnW,EAAK6T,SAAWA,EAKX34D,EAAKG,EAAEq6D,UAAY,EAAcx6D,GAAK,EAAGA,IAAOs6D,EAAWn6D,EAAGi5D,EAAMp5D,GAKzEi7D,EAAO/C,EACP,GAGEl4D,EAAIG,EAAEo6D,KAAK,GACXp6D,EAAEo6D,KAAK,GAAiBp6D,EAAEo6D,KAAKp6D,EAAEq6D,YACjCF,EAAWn6D,EAAGi5D,EAAM,GAGpBrxD,EAAI5H,EAAEo6D,KAAK,GAEXp6D,EAAEo6D,OAAOp6D,EAAE+6D,UAAYl7D,EACvBG,EAAEo6D,OAAOp6D,EAAE+6D,UAAYnzD,EAGvBqxD,EAAY,EAAP6B,GAAqB7B,EAAS,EAAJp5D,GAAkBo5D,EAAS,EAAJrxD,GACtD5H,EAAEg6D,MAAMc,IAAS96D,EAAEg6D,MAAMn6D,IAAMG,EAAEg6D,MAAMpyD,GAAK5H,EAAEg6D,MAAMn6D,GAAKG,EAAEg6D,MAAMpyD,IAAM,EACvEqxD,EAAS,EAAJp5D,EAAQ,GAAao5D,EAAS,EAAJrxD,EAAQ,GAAakzD,EAGpD96D,EAAEo6D,KAAK,GAAiBU,IACxBX,EAAWn6D,EAAGi5D,EAAM,SAEbj5D,EAAEq6D,UAAY,GAEvBr6D,EAAEo6D,OAAOp6D,EAAE+6D,UAAY/6D,EAAEo6D,KAAK,GA5cbY,EAACh7D,EAAG2kD,KAIrB,MAAMsU,EAAkBtU,EAAK2T,SACvBE,EAAkB7T,EAAK6T,SACvBqC,EAAkBlW,EAAK4T,UAAUX,YACjCK,EAAkBtT,EAAK4T,UAAUN,UACjC3xC,EAAkBq+B,EAAK4T,UAAUV,WACjClwD,EAAkBg9C,EAAK4T,UAAUT,WACjCE,EAAkBrT,EAAK4T,UAAUP,WACvC,IAAIl3C,EACAjhB,EAAG+H,EACHwe,EACA60C,EACA9gB,EACA+gB,EAAW,EAEf,IAAK90C,EAAO,EAAGA,GAAQ4+C,EAAU5+C,IAC/BpmB,EAAEo5D,SAAShzC,GAAQ,EAQrB,IAFA6yC,EAA0B,EAArBj5D,EAAEo6D,KAAKp6D,EAAE+6D,UAAgB,GAAa,EAEtCj6C,EAAI9gB,EAAE+6D,SAAW,EAAGj6C,EAtOL,IAsOoBA,IACtCjhB,EAAIG,EAAEo6D,KAAKt5C,GACXsF,EAAO6yC,EAA+B,EAA1BA,EAAS,EAAJp5D,EAAQ,GAAiB,GAAa,EACnDumB,EAAO4xC,IACT5xC,EAAO4xC,EACPkD,KAEFjC,EAAS,EAAJp5D,EAAQ,GAAaumB,EAGtBvmB,EAAI24D,IAERx4D,EAAEo5D,SAAShzC,KACX60C,EAAQ,EACJp7D,GAAK8H,IACPszD,EAAQ30C,EAAMzmB,EAAI8H,IAEpBwyC,EAAI8e,EAAS,EAAJp5D,GACTG,EAAE25D,SAAWxf,GAAK/zB,EAAO60C,GACrBhD,IACFj4D,EAAE45D,YAAczf,GAAK0gB,EAAU,EAAJh7D,EAAQ,GAAao7D,KAGpD,GAAiB,IAAbC,EAAJ,CAMA,EAAG,CAED,IADA90C,EAAO4xC,EAAa,EACQ,IAArBh4D,EAAEo5D,SAAShzC,IAAeA,IACjCpmB,EAAEo5D,SAAShzC,KACXpmB,EAAEo5D,SAAShzC,EAAO,IAAM,EACxBpmB,EAAEo5D,SAASpB,KAIXkD,GAAY,CACd,OAASA,EAAW,GAOpB,IAAK90C,EAAO4xC,EAAqB,IAAT5xC,EAAYA,IAElC,IADAvmB,EAAIG,EAAEo5D,SAAShzC,GACF,IAANvmB,GACL+H,EAAI5H,EAAEo6D,OAAOt5C,GACTlZ,EAAI4wD,IACJS,EAAS,EAAJrxD,EAAQ,KAAewe,IAE9BpmB,EAAE25D,UAAYvzC,EAAO6yC,EAAS,EAAJrxD,EAAQ,IAAcqxD,EAAS,EAAJrxD,GACrDqxD,EAAS,EAAJrxD,EAAQ,GAAawe,GAE5BvmB,IAjC0B,CAmC9B,EA4XAm7D,CAAWh7D,EAAG2kD,GAGdwU,EAAUF,EAAMT,EAAUx4D,EAAEo5D,SAAS,EAQjC+B,EAAYA,CAACn7D,EAAGi5D,EAAMT,KAK1B,IAAI34D,EAEAu7D,EADAC,GAAW,EAGXC,EAAUrC,EAAK,GAEfzC,EAAQ,EACR+E,EAAY,EACZC,EAAY,EAQhB,IANgB,IAAZF,IACFC,EAAY,IACZC,EAAY,GAEdvC,EAAsB,GAAhBT,EAAW,GAAS,GAAa,MAElC34D,EAAI,EAAGA,GAAK24D,EAAU34D,IACzBu7D,EAASE,EACTA,EAAUrC,EAAe,GAATp5D,EAAI,GAAS,KAEvB22D,EAAQ+E,GAAaH,IAAWE,IAG3B9E,EAAQgF,EACjBx7D,EAAEy5D,QAAiB,EAAT2B,IAAwB5E,EAEd,IAAX4E,GAELA,IAAWC,GAAWr7D,EAAEy5D,QAAiB,EAAT2B,KACpCp7D,EAAEy5D,QAAQgC,OAEDjF,GAAS,GAClBx2D,EAAEy5D,QAAQiC,MAGV17D,EAAEy5D,QAAQkC,MAGZnF,EAAQ,EACR6E,EAAUD,EAEM,IAAZE,GACFC,EAAY,IACZC,EAAY,GAEHJ,IAAWE,GACpBC,EAAY,EACZC,EAAY,IAGZD,EAAY,EACZC,EAAY,GAEhB,EAQII,EAAYA,CAAC57D,EAAGi5D,EAAMT,KAK1B,IAAI34D,EAEAu7D,EADAC,GAAW,EAGXC,EAAUrC,EAAK,GAEfzC,EAAQ,EACR+E,EAAY,EACZC,EAAY,EAQhB,IALgB,IAAZF,IACFC,EAAY,IACZC,EAAY,GAGT37D,EAAI,EAAGA,GAAK24D,EAAU34D,IAIzB,GAHAu7D,EAASE,EACTA,EAAUrC,EAAe,GAATp5D,EAAI,GAAS,OAEvB22D,EAAQ+E,GAAaH,IAAWE,GAAtC,CAGO,GAAI9E,EAAQgF,EACjB,GAAKxC,EAAUh5D,EAAGo7D,EAAQp7D,EAAEy5D,eAA+B,MAAVjD,QAE7B,IAAX4E,GACLA,IAAWC,IACbrC,EAAUh5D,EAAGo7D,EAAQp7D,EAAEy5D,SACvBjD,KAGFwC,EAAUh5D,EA1vBI,GA0vBQA,EAAEy5D,SACxBZ,EAAU74D,EAAGw2D,EAAQ,EAAG,IAEfA,GAAS,IAClBwC,EAAUh5D,EA3vBI,GA2vBUA,EAAEy5D,SAC1BZ,EAAU74D,EAAGw2D,EAAQ,EAAG,KAGxBwC,EAAUh5D,EA5vBI,GA4vBYA,EAAEy5D,SAC5BZ,EAAU74D,EAAGw2D,EAAQ,GAAI,IAG3BA,EAAQ,EACR6E,EAAUD,EACM,IAAZE,GACFC,EAAY,IACZC,EAAY,GAEHJ,IAAWE,GACpBC,EAAY,EACZC,EAAY,IAGZD,EAAY,EACZC,EAAY,EAdd,CAgBF,EAsHF,IAAIK,GAAmB,EAKvB,MAuBM0B,EAAmBA,CAACv9D,EAAG22D,EAAKoF,EAAYz2C,KAM5CuzC,EAAU74D,EAAG,GAAuBslB,EAAO,EAAI,GAAI,GACnDw0C,EAAU95D,GACV04D,EAAU14D,EAAG+7D,GACbrD,EAAU14D,GAAI+7D,GACVA,GACF/7D,EAAE24D,YAAY/yD,IAAI5F,EAAEkmB,OAAOhG,SAASy2C,EAAKA,EAAMoF,GAAa/7D,EAAE44D,SAEhE54D,EAAE44D,SAAWmD,CAAU,EAoIzB1sE,EAAOD,QAAQguE,SAxKGp9D,IAGX67D,IAnlBgBwB,MAErB,IAAIx9D,EACAumB,EACAj1B,EACA6sD,EACAz1B,EACJ,MAAM6wC,EAAW,IAAI3/D,MAAMurE,IAiB3B,IADA7zE,EAAS,EACJ6sD,EAAO,EAAGA,EAAO2yN,GAAkB3yN,IAEtC,IADAyZ,EAAYzZ,GAAQ7sD,EACf0O,EAAI,EAAGA,EAAK,GAAKm3D,EAAYhZ,GAAQn+C,IACxC03D,EAAapmE,KAAY6sD,EAY7B,IAJAuZ,EAAapmE,EAAS,GAAK6sD,EAG3Bz1B,EAAO,EACFy1B,EAAO,EAAGA,EAAO,GAAIA,IAExB,IADA0Z,EAAU1Z,GAAQz1B,EACb1oB,EAAI,EAAGA,EAAK,GAAKo3D,EAAYjZ,GAAQn+C,IACxCy3D,EAAW/uC,KAAUy1B,EAKzB,IADAz1B,IAAS,EACFy1B,EAAO0yN,EAAS1yN,IAErB,IADA0Z,EAAU1Z,GAAQz1B,GAAQ,EACrB1oB,EAAI,EAAGA,EAAK,GAAMo3D,EAAYjZ,GAAQ,EAAKn+C,IAC9Cy3D,EAAW,IAAM/uC,KAAUy1B,EAM/B,IAAK53B,EAAO,EAAGA,GAAQ4+C,EAAU5+C,IAC/BgzC,EAAShzC,GAAQ,EAInB,IADAvmB,EAAI,EACGA,GAAK,KACVu3D,EAAiB,EAAJv3D,EAAQ,GAAa,EAClCA,IACAu5D,EAAS,KAEX,KAAOv5D,GAAK,KACVu3D,EAAiB,EAAJv3D,EAAQ,GAAa,EAClCA,IACAu5D,EAAS,KAEX,KAAOv5D,GAAK,KACVu3D,EAAiB,EAAJv3D,EAAQ,GAAa,EAClCA,IACAu5D,EAAS,KAEX,KAAOv5D,GAAK,KACVu3D,EAAiB,EAAJv3D,EAAQ,GAAa,EAClCA,IACAu5D,EAAS,KASX,IAHAD,EAAU/B,EAAcq5M,IAAar3M,GAGhCv5D,EAAI,EAAGA,EAAI6wQ,EAAS7wQ,IACvBw3D,EAAiB,EAAJx3D,EAAQ,GAAa,EAClCw3D,EAAiB,EAAJx3D,GAAkBq5D,EAAWr5D,EAAG,GAI/Cq4D,EAAgB,IAAIP,EAAeP,EAAcJ,EAAaw5M,IAAcC,EAASzrM,GACrF7M,EAAgB,IAAIR,EAAeN,EAAcJ,EAAa,EAAYy5M,EAAS1rM,GACnF5M,EAAiB,IAAIT,EAAe,IAAIl+D,MAAM,GAAIy9D,EAAc,EAtb5C,GAiBF,EAqa+E,EAof/FmG,GACAxB,GAAmB,GAGrB77D,EAAEw8D,OAAU,IAAInE,EAASr4D,EAAEu5D,UAAWrB,GACtCl4D,EAAEy8D,OAAU,IAAIpE,EAASr4D,EAAEw5D,UAAWrB,GACtCn4D,EAAE08D,QAAU,IAAIrE,EAASr4D,EAAEy5D,QAASrB,GAEpCp4D,EAAE+4D,OAAS,EACX/4D,EAAE84D,SAAW,EAGbQ,EAAWt5D,EAAE,EAyJf3Q,EAAOD,QAAQmuE,iBAAmBA,EAClCluE,EAAOD,QAAQouE,gBAnHSA,CAACx9D,EAAG22D,EAAKoF,EAAYz2C,KAM3C,IAAI42C,EAAUC,EACVC,EAAc,EAGdp8D,EAAEq8D,MAAQ,GA1gCc,IA6gCtBr8D,EAAEqlB,KAAKp1B,YACT+P,EAAEqlB,KAAKp1B,UA3Ga+P,KAKxB,IACIH,EADAy8D,EAAa,WAIjB,IAAKz8D,EAAI,EAAGA,GAAK,GAAIA,IAAKy8D,KAAgB,EACxC,GAAkB,EAAbA,GAAoD,IAAhCt8D,EAAEu5D,UAAc,EAAJ15D,GACnC,OAj7BwB,EAs7B5B,GAAoC,IAAhCG,EAAEu5D,UAAU,KAA0D,IAAjCv5D,EAAEu5D,UAAU,KAChB,IAAjCv5D,EAAEu5D,UAAU,IACd,OAv7B0B,EAy7B5B,IAAK15D,EAAI,GAAIA,EAAI2wQ,EAAU3wQ,IACzB,GAAoC,IAAhCG,EAAEu5D,UAAc,EAAJ15D,GACd,OA37BwB,EAk8B5B,OAn8B4B,CAm8Bb,EA8EQ08D,CAAiBv8D,IAItC46D,EAAW56D,EAAGA,EAAEw8D,QAIhB5B,EAAW56D,EAAGA,EAAEy8D,QAUhBL,EA1MmBp8D,KAErB,IAAIo8D,EAgBJ,IAbAjB,EAAUn7D,EAAGA,EAAEu5D,UAAWv5D,EAAEw8D,OAAOhE,UACnC2C,EAAUn7D,EAAGA,EAAEw5D,UAAWx5D,EAAEy8D,OAAOjE,UAGnCoC,EAAW56D,EAAGA,EAAE08D,SASXN,EAAcw0M,GAAcx0M,GAAe,GACW,IAArDp8D,EAAEy5D,QAAgC,EAAxBtC,EAASiF,GAAmB,GADOA,KAUnD,OAJAp8D,EAAE25D,SAAW,GAAKyC,EAAc,GAAK,EAAI,EAAI,EAItCA,CAAW,EA8KFQ,CAAc58D,GAG5Bk8D,EAAYl8D,EAAE25D,QAAU,EAAI,IAAO,EACnCwC,EAAen8D,EAAE45D,WAAa,EAAI,IAAO,EAMrCuC,GAAeD,IAAYA,EAAWC,IAI1CD,EAAWC,EAAcJ,EAAa,EAGnCA,EAAa,GAAKG,IAAuB,IAATvF,EASnC4G,EAAiBv9D,EAAG22D,EAAKoF,EAAYz2C,GAjkCX,IAmkCjBtlB,EAAE68D,UAAwBV,IAAgBD,GAEnDrD,EAAU74D,EAAG,GAAuBslB,EAAO,EAAI,GAAI,GACnDg1C,EAAet6D,EAAGo3D,EAAcC,KAGhCwB,EAAU74D,EAAG,GAAoBslB,EAAO,EAAI,GAAI,GAvM7Bw3C,EAAC98D,EAAG+8D,EAAQC,EAAQC,KAIzC,IAAIC,EASJ,IAHArE,EAAU74D,EAAG+8D,EAAS,IAAK,GAC3BlE,EAAU74D,EAAGg9D,EAAS,EAAK,GAC3BnE,EAAU74D,EAAGi9D,EAAU,EAAI,GACtBC,EAAO,EAAGA,EAAOD,EAASC,IAE7BrE,EAAU74D,EAAGA,EAAEy5D,QAAyB,EAAjBtC,EAAS+F,GAAY,GAAY,GAI1DtB,EAAU57D,EAAGA,EAAEu5D,UAAWwD,EAAS,GAGnCnB,EAAU57D,EAAGA,EAAEw5D,UAAWwD,EAAS,EAAE,EAkLnCF,CAAe98D,EAAGA,EAAEw8D,OAAOhE,SAAW,EAAGx4D,EAAEy8D,OAAOjE,SAAW,EAAG4D,EAAc,GAC9E9B,EAAet6D,EAAGA,EAAEu5D,UAAWv5D,EAAEw5D,YAMnCF,EAAWt5D,GAEPslB,GACFw0C,EAAU95D,EACZ,EAsCF3Q,EAAOD,QAAQquE,UA7BGA,CAACz9D,EAAGuoB,EAAMkyC,KAK1Bz6D,EAAE24D,YAAY34D,EAAE26D,QAAU36D,EAAE65D,YAActxC,EAC1CvoB,EAAE24D,YAAY34D,EAAE26D,QAAU36D,EAAE65D,YAActxC,GAAQ,EAClDvoB,EAAE24D,YAAY34D,EAAE26D,QAAU36D,EAAE65D,YAAcY,EAC7B,IAATlyC,EAEFvoB,EAAEu5D,UAAe,EAALkB,MAEZz6D,EAAE+sD,UAEFxkC,IAKAvoB,EAAEu5D,UAA8C,GAAnChC,EAAakD,GAAM+1M,EAAW,MAC3CxwQ,EAAEw5D,UAAyB,EAAff,EAAOlwC,OAGbvoB,EAAE65D,WAAa75D,EAAE29D,SAO3BtuE,EAAOD,QAAQwuE,UAhII59D,IACjB64D,EAAU74D,EAAG69D,EAAmB,GAChC7E,EAAUh5D,EAh8BQ,IAg8BMo3D,GA/xBRp3D,KAEG,KAAfA,EAAE84D,UACJJ,EAAU14D,EAAGA,EAAE+4D,QACf/4D,EAAE+4D,OAAS,EACX/4D,EAAE84D,SAAW,GAEJ94D,EAAE84D,UAAY,IACvB94D,EAAE24D,YAAY34D,EAAE44D,WAAwB,IAAX54D,EAAE+4D,OAC/B/4D,EAAE+4D,SAAW,EACb/4D,EAAE84D,UAAY,EAChB,EAqxBAgF,CAAS99D,EAAE,8BC5hCb1N,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,gCCAtDF,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,kCCAtDF,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQgjG,0BAAuB,EAC/B,MAAMy+K,EAAiBzgR,EAAQ,OACzBoE,EAAapE,EAAQ,OACrBioF,EAAiBjoF,EAAQ,OACzB0gR,EAA2B1gR,EAAQ,OAIzC,MAAMgiG,UAA6By+K,EAAe/T,aAC9Cv/P,WAAAA,CAAYsU,EAASyQ,EAAU+vE,EAAiB0+K,EAAal4P,GACzDnjB,MAAMmc,EAASyQ,EAAUzJ,EAD+D3nB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAImnF,EAAeS,aAAax2D,IAE3HhzB,KAAKwhB,SAAW,IAAItc,EAAWo7O,SAASmhC,EAAa1+K,EAAiB/vE,GAAUutN,QAAQkhC,GACxFzhR,KAAK62G,OAAS,IAAI2qK,EAAyBriF,uBAAuBn/L,KAAMyhR,EAC5E,EAEJ3hR,EAAQgjG,qBAAuBA,aCjB/B,SAASmnC,IACPjqI,KAAKqwB,OAAS,GACdrwB,KAAK6B,OAAS,CAChB,CAEAooI,EAAUr/H,UAAY,CAEpBgB,IAAK,SAAUg1B,GACb,MAAM8gP,EAAWt4Q,KAAKC,MAAMu3B,EAAQ,GACpC,OAA6D,KAApD5gC,KAAKqwB,OAAOqxP,KAAe,EAAI9gP,EAAQ,EAAM,EACxD,EAEAx1B,IAAK,SAAU+1B,EAAKt/B,GAClB,IAAK,IAAImJ,EAAI,EAAGA,EAAInJ,EAAQmJ,IAC1BhL,KAAKqrI,OAA4C,KAAnClqG,IAASt/B,EAASmJ,EAAI,EAAM,GAE9C,EAEAogI,gBAAiB,WACf,OAAOprI,KAAK6B,MACd,EAEAwpI,OAAQ,SAAU1lG,GAChB,MAAM+7O,EAAWt4Q,KAAKC,MAAMrJ,KAAK6B,OAAS,GACtC7B,KAAKqwB,OAAOxuB,QAAU6/Q,GACxB1hR,KAAKqwB,OAAO/oB,KAAK,GAGfq+B,IACF3lC,KAAKqwB,OAAOqxP,IAAc,MAAU1hR,KAAK6B,OAAS,GAGpD7B,KAAK6B,QACP,GAGF9B,EAAOD,QAAUmqI,6QCpCjB,MAAAnrH,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAme,EAAAne,EAAA,OAyGA,SAAgB6gR,EAA4CxiQ,GAInC,IAJoC,UACzDnd,EACAod,MAAOoT,EAASnxB,GAAK,KACrBsC,GACqBwb,EACrB,MAAO,CACHnd,YACAod,KAAM,CACFoT,UACAnxB,QAEJsC,KAAM7D,EAAA8hR,kCAAkCniQ,OAAO9b,GAEvD,CA/Ga7D,EAAAA,mCAAoC,EAAAgf,EAAAY,QAA0C,EACvF,EAAAZ,EAAAa,IAAG,gBACH,EAAAZ,EAAApa,WAAU,WAad7E,EAAAA,oCAAA,SACI0yB,EACAnxB,EACAE,GAC4B,IAA5BS,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,EAAO,CACT,CAAEU,OAAQ0S,EAASzS,UAAU,EAAOC,YAAY,GAChD,CAAEF,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAE3Crc,EAAOY,EAAO0b,MAAMngB,EAAA8hR,kCAAkC1hQ,MAE5D,OADApgB,EAAA8hR,kCAAkCzhQ,OAAO,CAAEd,YAAaJ,EAAAmB,iBAAiBi5P,mBAAoB93Q,SAASoC,GAC/F,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAuBA7D,EAAAA,oCAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAA8hR,kCAAkC1hQ,KAC9D,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,QAAEoT,EAAO,KAAEnxB,GAAM,KACvBsC,GACAg+Q,EAA6CtiQ,GACjD,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBi5P,mBAAoB,MAAM,IAAIr6P,EAAA0B,iCACxE,IAAK8R,IAAYnxB,EAAM,MAAM,IAAI2d,EAAA2B,iCAIjC,MAAO,CACH3e,YACAod,KAAM,CACFoT,UACAnxB,QAEJsC,OAER,EAsBA7D,EAAAA,6CAAA6hR,8BCnHA3+Q,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQ+hR,sBAAmB,EAC3B/hR,EAAQ+hR,iBAAmB,CACvBC,KAAM,CACFC,QAAS,CACL9xC,YAAa,UACbC,QAAS,KACTE,gBAAiB,kBACjBC,kBAAmB,uBACnBE,WAAY,WAEhB3+N,KAAM,0BAEVowQ,KAAM,CACFD,QAAS,CACL9xC,YAAa,WACbC,QAAS,YACTE,gBAAiB,WACjBC,kBAAmB,gBACnBE,WAAY,YAEhB3+N,KAAM,cAEVqwQ,KAAM,CACFF,QAAS,CACL9xC,YAAa,WACbC,QAAS,YACTE,gBAAiB,SACjBC,kBAAmB,cACnBE,WAAY,YAEhB3+N,KAAM,cAEVswQ,IAAK,CACDH,QAAS,CACL9xC,YAAa,SACbC,QAAS,UACTE,gBAAiB,SACjBC,kBAAmB,aACnBE,WAAY,UAEhB3+N,KAAM,UAEVuwQ,KAAM,CACFJ,QAAS,CACL9xC,YAAa,oBACbC,QAAS,sBACTE,gBAAiB,OACjBC,kBAAmB,YACnBE,WAAY,qBAEhB3+N,KAAM,QAEVq4E,IAAK,CACD83L,QAAS,CACL9xC,YAAa,SACbC,QAAS,UACTE,gBAAiB,WACjBC,kBAAmB,eACnBE,WAAY,YAEhB3+N,KAAM,YAEVs4E,KAAM,CACF63L,QAAS,CACL9xC,YAAa,oBACbC,QAAS,sBACTE,gBAAiB,WACjBC,kBAAmB,gBACnBE,WAAY,qBAEhB3+N,KAAM,yCCvEd5O,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQi1I,YAuCR,SAAqBpD,GAGjB,IAAKA,GAA6B,MAArBA,EAAKjkI,MAAM,EAAG,GACvB,MAAO,IAIX,GAAa,MAATikI,EACA,OAAOA,EAEX,MAAMywI,EAAazwI,EAAK9M,YAAY,KACpC,GAAmB,IAAfu9I,EACA,MAAO,IAIX,OAAOzwI,EAAKjkI,MAAM,EAAG00Q,EACzB,gCC1DAp/Q,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQwwO,yBAAsB,EAC9B,MAAMzyH,EAA0B/8G,EAAQ,KAClCqE,EAAUrE,EAAQ,OACxB,MAAMwvO,UAA4BzyH,EAAwB91G,sBACtDkG,WAAAA,CAAY6vG,GACR13G,MAAM03G,EADel8G,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,2BAA8CA,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAE1E,CACA,eAAMiH,CAAUJ,EAAMP,GAClB,MAAMurB,QAAiB,EAAIxuB,EAAQ44G,SAAS/9G,KAAKusB,IAAM,uBAAyB5jB,EAAM3I,KAAKg+G,mBAAoB51G,GAC/G,OAAO61G,WAAWtqF,EAAShF,OAAOhmB,GAAMyI,EAAE,GAC9C,CACA,mBAAM+sG,CAAc/1G,GAChB,MAAMurB,QAAiB,EAAIxuB,EAAQ44G,SAAS/9G,KAAKusB,IAAM,8BAA+BvsB,KAAKg+G,mBAAoB51G,GAC/G,OAAO61G,WAAWtqF,EAAShF,OAAgB,QAAEvd,EAAE,IAAM,GACzD,CACA,gBAAMlJ,CAAWC,EAAOC,GACpB,MAAMC,EAAQF,EAAMG,OAAOC,MAAM,KAC3BorB,QAAiB,EAAIxuB,EAAQ44G,SAAS/9G,KAAKusB,IAAM,uBAAyBlkB,EAAMK,KAAIiG,GAAOA,EAAI9F,WAAW,KAAO8F,EAAI7F,UAAU,GAAK6F,IAAKuuD,KAAK,KAAMl9D,KAAKg+G,mBAAoB51G,GAQ7KI,EAPSH,EAAMK,KAAIC,IACrB,IAAIC,EAASD,EAAKE,WAAW,KACzBD,IACAD,EAAOA,EAAKG,UAAU,IAC1B,MAAM5F,EAAQ+6G,WAAWtqF,EAAShF,OAAOhmB,GAAMyI,EAAE,IACjD,OAAOxI,EAAS,EAAI1F,EAAQA,CAAK,IAEhB+F,QAAO,CAACC,EAAeC,IAAiBD,EAAgBC,GAAc,GAC3F,OAAOzD,OAAO0D,KAAKC,MAAc,KAARb,GAC7B,EAEJ1I,EAAQwwO,oBAAsBA,+FC5BjBxwO,EAAAA,OACW,kBAAfkmJ,YAA2B,WAAYA,WAAaA,WAAWvvI,YAAS3U,6GCHjFkB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQuiR,oBAAiB,EACzB,MAAMp9Q,EAASnE,EAAQ,OACjBwhR,EAAYxhR,EAAQ,OACpByhR,EAAqBzhR,EAAQ,OAC7B0hR,EAAwB1hR,EAAQ,OA6EtChB,EAAQuiR,eA5ER,MACIp0Q,WAAAA,CAAYw0Q,GACRziR,KAAKyiR,aAAeA,EACpBziR,KAAKomG,OAAS,CACVs8K,QAASJ,EAAU1uN,eAEvB5zD,KAAK2iR,cAAgB,CAAC,EACtB3iR,KAAKyiR,aAAeA,EACpBA,EAAa1zQ,SAAQq7E,IACjB,MAAMw4L,EAAa,CAAC,EACpB5iR,KAAKomG,OAAOhc,EAAY7nE,SAAW,CAAC,EACpC,IAAK,IAAIC,KAAU4nE,EAAY1oE,OAAQ,CACnC,MAAMmhQ,EAAYz4L,EAAY1oE,OAAOc,GACrCxiB,KAAKomG,OAAOhc,EAAY7nE,SAASC,GAAUogQ,EAAWC,EAAUn8Q,SAAW,CACvE4b,MAAO,KACPC,QAAS6nE,EAAY7nE,QACrB7b,QAASm8Q,EAAUn8Q,QACnBkL,KAAM2wQ,EAAmBV,iBAAiBr/P,GAAQ5Q,KAClDnQ,SAAUohR,EAAUphR,SACpBghB,gBAAiBogQ,EAAUpgQ,gBAC3BD,SAER,CACAxiB,KAAK2iR,cAAcv4L,EAAY7nE,SAAW,CACtCk0B,SAAW/vC,GAAYk8Q,EAAWl8Q,GACrC,GAET,CACAo8Q,UAAAA,CAAWlhQ,GACPA,EAAQ+tG,iBAAmB/tG,EAAQ+tG,eAAiB1qH,EAAO4b,eAAeK,SAC1EU,EAAQmhQ,gBAAkBnhQ,EAAQmhQ,cAAgB,aAAenhQ,EAAQ+tG,eAAiB,KAC1F/tG,EAAQohQ,gCAAkCphQ,EAAQohQ,8BAAgCphQ,EAAQ+tG,iBAAmB1qH,EAAO4b,eAAeK,QAC/H,kCACA,mCACJU,EAAQqhQ,cAAgBrhQ,EAAQqhQ,YAAcrhQ,EAAQ+tG,iBAAmB1qH,EAAO4b,eAAeK,QAC3F,qGACA,8FACJ,MAAM40C,EAAal0C,EAAQk0C,YAAc,IAAIwsN,EAAUpzF,WAAWttK,EAAQ+tG,iBAAmB1qH,EAAO4b,eAAeC,QAC/G,CACI,qCACA,iDACA,iDACA,kDAEJ,CACI,6BACA,yCACA,yCACA,2CAEFk9D,EAAa,IAAIskM,EAAU1yL,kBAAkB95B,GAC7CotN,EAAgB,GACtBlgR,OAAOoc,KAAKmjQ,EAAmBV,kBAAkB9yQ,SAASyT,IACtD,MAAMH,EAAS,CAAC,EAChB,IAAK,IAAI,OAAEX,EAAM,QAAEa,KAAaviB,KAAKyiR,aACX,MAAlB/gQ,EAAOc,KACPH,EAAOE,GAAWb,EAAOc,IAEjC,MAAMqgQ,EAAYN,EAAmBV,iBAAiBr/P,GACtD0gQ,EAAc57Q,KAAK,IACZu7Q,EAAUd,QACb1/P,SACAG,SACA5Q,KAAMixQ,EAAUjxQ,MAClB,IAENgQ,EAAQuhQ,mBAAqBvhQ,EAAQuhQ,iBAAoBvxQ,GAAS,IAAI4wQ,EAAsBhhG,oBAAoB5vK,IAChH,MAAMyQ,EAAS,CAAC,EAChB,IAAK,IAAI,YAAE+nE,EAAW,QAAE7nE,KAAaviB,KAAKyiR,aACP,MAA3B7gQ,EAAQS,OAAOE,KAEnBF,EAAOE,GAAW6nE,EAAYxoE,EAAQS,OAAOE,GAAUy7D,EAAYp8D,EAAQ+tG,eAAgB/tG,EAAQuhQ,mBAEvG,OAAO,IAAIb,EAAUc,QAAQplM,EAAY37D,EAAQigQ,EAAU9yC,mBAAmBM,mBAAmBluN,EAAQyhQ,yBAA2B,OAAQH,GAAgBA,EAAethQ,EAC/K,uDChFJ5e,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQkzD,6BAA0B,EAClC,MAAM/tD,EAASnE,EAAQ,OACjBqE,EAAUrE,EAAQ,OAClBsE,EAAyBtE,EAAQ,QACxB,EAAIqE,EAAQG,WAAW,6BACtC,MAAM0tD,UAAgC5tD,EAAuBU,qBACzDC,mBAAAA,CAAoBpC,GAChB,MAAO,KACA,EAAIwB,EAAQmpJ,kBAAkB/pJ,EAAOC,KAAKb,EAAKkhB,KAAM,OAAOjX,cAC5DxH,MAAML,oBAAoBpC,GAErC,CACA0C,UAAAA,CAAW3C,EAAQ4C,EAAUC,EAAaC,GACtC,IAAKF,EAASG,eAAezG,KAAK0G,SAC9B,MAAM,IAAI7C,MAAM,yBACpB,OAAO7D,KAAKoH,YAAY1D,EAAQ4C,EAAUC,EAAa,CAAEse,KAAMte,EAAYM,GAAGmwD,MAClF,CACAxvD,MAAAA,CAAO7D,GACH,OAAOqvD,EAAwBvrD,GACnC,CACAC,OAAAA,GACI,OAAOsrD,EAAwBrrD,IACnC,EAEJ7H,EAAQkzD,wBAA0BA,EAClCA,EAAwBrrD,KAAO1C,EAAO2C,cAAc86F,WACpD1vC,EAAwBvrD,IAAM,CAAEK,GAAI,0aC3BpC,MAAAjH,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACA82Q,EAAA92Q,EAAA,OACAC,EAAAD,EAAA,KAeAhB,EAAAA,OAAA,SACIoB,EACAC,EACAqxB,EACAjxB,GAG4B,IAF5BI,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOzwB,EAAgBC,IAAW,EAAApB,EAAAqB,YAAWb,EAAOI,GAE9CU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAq1Q,EAAA0L,yBAAwB9wP,EAAStwB,EAAgBP,EAAcK,IAGnE,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,yDClCAiB,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQyjR,eAAY,EACpB,MAAM/7F,EAAqB1mL,EAAQ,OAC7B2mL,EAAiB3mL,EAAQ,OACzB8pJ,EAAc9pJ,EAAQ,MACtBmE,EAASnE,EAAQ,OACjBD,EAAYC,EAAQ,OACpBqE,EAAUrE,EAAQ,MAClBi5Q,EAAiBj5Q,EAAQ,OACzBsgI,EAAiBtgI,EAAQ,OACzBunB,EAAKvnB,EAAQ,MACnB,MAAMyiR,UAAkB/7F,EAAmBtuE,iBACvC,WAAMnV,CAAMrgG,EAAQ4C,EAAUk9Q,GAC1B,MAAMC,EAAyC,kBAArBD,EACpB34P,EAAW,CACbnnB,SACA0mF,YAAa9jF,EAASw8D,UAAYx8D,EAASg8D,QAAUh8D,EAASs7D,QAC9D8hN,YAAa1jR,KAAKw6E,KAAKmpM,gBAAgBp/Q,EAAOC,KAAK8B,EAAS6kB,YAAa,QACzEy4P,SAAU/iR,EAAUgjR,2BACpBlgR,KAAM8/Q,EAAYD,EAAkB,MAExC,IAAItvN,EAAeuvN,EACfl/Q,EAAO0b,MAAM,GACb1b,EAAOC,KAAKg/Q,EAAiB,OACjC,OAAIl9Q,EAASy8D,WACF,IAAI0kH,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,WAAYx6E,KAAKm5G,QAAQg4B,QACxE2yI,mBAAmB5vN,GACnBrpC,SAAS,IACPA,EACHkgI,WAAYzkJ,EAASykJ,WACrBi9B,MAAOhoL,KAAKw6E,KAAKytG,UAAU3hL,EAAS6B,OACpC+/K,eAAgBloL,KAAKw6E,KAAK2tG,mBAC1BC,aAAcx9B,EAAYj4H,mBAEzBtT,cAAerf,KAAK+jR,iBAAiBz9Q,IAGnC,IAAImhL,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,WAAYx6E,KAAKm5G,QAAQg4B,QACxE6yI,aAAa9vN,GACbrpC,SAAS,IACPA,EACHo5P,gBAAiBjkR,KAAKw6E,KAAKutG,cAAczhL,EAASs7D,QAASt7D,EAAS6B,SAEnEkX,cAAerf,KAAK+jR,iBAAiBz9Q,GAElD,CAcA,oBAAM49Q,CAAexgR,EAAQ4C,EAAU69Q,EAAclhC,EAAa/7I,GAC9D,MAAMlqB,QAAeh9E,KAAK+9E,SAAS0qL,OAAO/kQ,EAAQu/O,EAAY7wJ,aAAc9rF,EAAS8kB,cAAe63N,EAAY9yN,IAAK8yN,EAAY5wJ,OAAQ6U,GAGzI,OAFAlqB,EAAOC,gBAAgBj9E,KAAK+jG,MAAMrgG,EAAQ4C,EAAU69Q,IACpDnnM,EAAOk/I,cAAgB,KAChBl/I,CACX,CACA/uE,WAAAA,CAAYusE,EAAMuD,GACd33E,MAAMo0E,GACNx6E,KAAK+9E,SAAWA,CACpB,CAOAgmM,gBAAAA,CAAiBz9Q,GACb,OAAIA,EAASy8D,WACFwgN,EAAUl7F,QAAQ/hL,EAASoB,YAAczC,EAAO2C,cAAc66F,KAAO,gBAAkB,yBAGvF8gL,EAAUl7F,QAAQ/hL,EAASoB,YAAczC,EAAO2C,cAAc66F,KAAO,QAAU,gBAE9F,CAiBA,qCAAMogJ,CAAgCn/O,EAAQo/O,EAAeryJ,EAAuBxO,EAAWvE,EAAKypB,GAChG,MAAM6mF,EAAsB80D,EAAgBryJ,EAAwB,EAC9D9hE,QAAe,EAAIxpB,EAAQke,iBAAgB,IAAMrjB,KAAK+9E,SAAS+vG,0BAA0B,CAC3F7rG,UAAWA,GACZ+rG,IAAsBhuL,KAAKupB,aAC9B,GAAc,MAAVoF,EACA,OAAOA,EAAOuD,OAElB,GAAoB,MAAhBi1E,EACA,OAAO,KAEX,MAAMr5E,QAAaq5E,EAAalpB,gBAAgBv6E,EAAOe,YAMvD,OALAzE,KAAK6hB,OAAO0F,MAAM,qHACkBuG,EAAK4vD,IAAI77E,OAAS,QACtD7B,KAAK6hB,OAAO0F,MAAM,qEAAsEuG,EAAKsxD,mBAC7FtxD,EAAK4vD,IAAI3uE,SAAQlI,GAAM62E,EAAIp2E,KAAKT,KAEzBinB,EAAKsxD,kBAAkB0jK,EAClC,CAYAshC,0BAAAA,CAA2B1gR,EAAQmD,EAAII,EAAMT,EAASk3E,GAClD,MAAM0U,EAAe7tF,EAAOC,KAAKqC,EAAGmwD,KAAM,OAAOppD,UAC3C8sQ,EAAYn2Q,EAAO4T,OAAO,CAC5B5T,EAAOC,KAAK,IAAI6jB,EAAGphB,GAAMy6B,QAAQ,KAAM,IACvCn9B,EAAOC,KAAKqC,EAAGC,IAAK,SAGxB,OADA9G,KAAK6hB,OAAO0F,MAAM,2DAA4DmzP,EAAUj2Q,SAAS,QAC1FzE,KAAKw6E,KAAK6pM,YAAY1I,gBAAgBj4Q,EAAQ0uF,EAAcsoL,EAAWh9L,EAAKl3E,EACvF,CAQA8iL,YAAAA,CAAa5lL,EAAQ4C,GACjB,OAAOA,EAASy8D,YACZz8D,EAAS6B,MAAMoY,OAAO6gH,EAAeU,aAAa2pB,eAClDnlJ,EAASs7D,QAAQrhD,OAAO7c,EAChC,CAaA,wBAAMmjG,CAAmBnjG,EAAQ4C,EAAU0tD,EAAQ8yC,EAAaC,EAASvgG,EAASwgG,GAG9E,GAAIF,SAAqB9mG,KAAKw6E,KAAKxrB,UAAU1oD,EAASs7D,QAAQn9D,WAAY6B,GACtE,MAAM,IAAIrB,EAAO61J,0BAA0B,+CAE/C,MAAMwpH,GAAiBt9K,GAAgB1gG,EAASy8D,mBAAqB/iE,KAAKw6E,KAAK4rB,OAAOgjF,UAAU9iL,EAASykJ,YACzG,GAAIu5H,IAAkBv9K,EAClB,MAAM,IAAI9hG,EAAO61J,0BAA0B,uBAChC,MAAXt0J,IACAA,QAAgBxG,KAAK6oG,gBAAgBnlG,EAAQ4C,IACjD,MAAM02E,EAAS,IAAIyqG,EAAeG,aAAalkL,EAAQ1D,KAAKw6E,MACtD8uG,EAAetpL,KAAKspL,aAAa5lL,EAAQ4C,GAC/C,GAAIg+Q,EAAe,CACf,MAAM3mC,EAAa39O,KAAKw6E,KAAK4rB,OAAOijF,QAAQ3lL,EAAQ4C,EAASs7D,QAASt7D,EAAS6B,MAAO7B,EAASykJ,YAC/F,GAAkB,MAAd4yF,EACA,MAAM,IAAI14O,EAAO61J,0BAA0B,yCAC/C99E,EAAOz6E,IAAIo7O,EACf,CAMA,OALA3gK,EAAOz6E,UAAUvC,KAAK+jG,MAAMrgG,EAAQ4C,EAAU0tD,IAC1Cs1H,GACAtsG,EAAOz6E,IAAIvC,KAAKw6E,KAAK4rB,OAAOmjF,OAAO7lL,IACvC1D,KAAK6hB,OAAO0F,MAAM,2DAA6DjhB,EAAS2mD,eACpF,qBAAuBq3N,EAAgB,gBAAkBh7F,GACtD,OAAOtsG,EAAOn2E,GAAGL,GAC5B,CAeA,wBAAMygG,CAAmBvjG,EAAQ4C,EAAUO,EAAII,EAAMigG,EAAgBC,EAAcJ,EAASw9K,EAAkB/9Q,GAC1G,MAAM89Q,EAAgBh+Q,EAASy8D,mBAAqB/iE,KAAKw6E,KAAK4rB,OAAOgjF,UAAU9iL,EAASykJ,YACxF,GAAIu5H,IAAkBv9K,EAClB,MAAM,IAAI9hG,EAAO61J,0BAA0B,uBAC/C,MAAM+gH,EAAYn4Q,aAAkBq2Q,EAAevxG,aAAe9kK,EAAOk/C,eAAiBl/C,EAC3E,MAAX8C,IACAA,QAAgBxG,KAAK6oG,gBAAgBgzK,EAAWv1Q,IACpD,MAAM28O,QAAoBjjP,KAAK+9E,SAASC,WAAWiU,eAAeprF,EAAGmwD,KAAMnwD,EAAGo7E,WAC9EjiF,KAAK6hB,OAAO0F,MAAM,gDAAiD07N,GACnE,MAAMvlK,EAAM,GACU,MAAlBwpB,IACAA,QAAuBlnG,KAAK6iP,gCAAgCg5B,EAAWh1Q,EAAGm4E,OAAQ14E,EAAS8kB,cAAevkB,EAAGo7E,UAAWvE,EAAKypB,IACjI,MAAMg9K,QAAqBnkR,KAAKokR,2BAA2B1gR,EAAQmD,EAAII,EAAMT,EAASk3E,GAC9D,MAApB6mM,IACAA,EAAiBC,WAAaL,GAClC,MAAM76F,EAAetpL,KAAKspL,aAAauyF,EAAWv1Q,GAClD,GAAIg+Q,EAAe,CACf,MAAM3mC,EAAa39O,KAAKw6E,KAAK4rB,OAAOijF,QAAQwyF,EAAWv1Q,EAASs7D,QAASt7D,EAAS6B,MAAO7B,EAASykJ,YAClG,GAAkB,MAAd4yF,EACA,MAAM,IAAI14O,EAAO61J,0BAA0B,+CACzC6iF,EAAWlgK,SAASC,EAAKl3E,EACnC,CACA,MAAMi+Q,QAAoBzkR,KAAKkkR,eAAerI,EAAWv1Q,EAAU69Q,EAAclhC,EAAa/7I,GAM9F,aALMu9K,EAAYhnM,SAASC,EAAKl3E,GAC5B8iL,SACMtpL,KAAKw6E,KAAK4rB,OAAOmjF,OAAOsyF,GAAWp+L,SAASC,EAAKl3E,GAC3DxG,KAAK6hB,OAAO0F,MAAM,2DAA6DjhB,EAAS2mD,eACpF,qBAAuBq3N,EAAgB,gBAAkBh7F,EAAe,cAAgB5rG,EAAI77E,QACzF67E,CACX,CACAmrB,eAAAA,CAAgBnlG,EAAQ4C,GACpB,MAAMukB,EAAW,CAACnnB,GA6BlB,OA5BI4C,EAASi7D,QACa,MAAlBj7D,EAAS6B,OACT0iB,EAASvjB,KAAKtH,KAAKw6E,KAAKytG,UAAU3hL,EAAS6B,QAC3C7B,EAASk7D,MACe,MAApBl7D,EAASg8D,SACTz3C,EAASvjB,KAAKhB,EAASg8D,SAGH,MAApBh8D,EAASs7D,SACT/2C,EAASvjB,KAAKhB,EAASs7D,SAEJ,MAAvBt7D,EAASykJ,YAAuBzkJ,EAASykJ,WAAWxqI,OAAO1f,EAAUiE,UAAUigF,UAC/El6D,EAASvjB,KAAKhB,EAASykJ,cAGH,MAApBzkJ,EAASs7D,SAAqC,MAAlBt7D,EAAS6B,OACrC0iB,EAASvjB,KAAKtH,KAAKw6E,KAAKutG,cAAczhL,EAASs7D,QAASt7D,EAAS6B,QACjE7B,EAASk7D,MACe,MAApBl7D,EAASg8D,SACTz3C,EAASvjB,KAAKhB,EAASg8D,SAGH,MAApBh8D,EAASs7D,SACT/2C,EAASvjB,KAAKhB,EAASs7D,UAGP,MAAxBt7D,EAAS6kB,aACTN,EAASvjB,KAAKtH,KAAKw6E,KAAKmpM,gBAAgBp/Q,EAAOC,KAAK8B,EAAS6kB,YAAa,SACvEnrB,KAAKw6E,KAAKqC,KAAKC,WAAWjyD,EACrC,CAKA,iBAAMutB,CAAY10C,EAAQ4C,EAAUE,GAChC,OAAOd,OAAmB,MAAZY,GAAoBA,EAASi7D,OAAS6/D,EAAeU,aAAa00D,oBAAsB,SAC5Fx2L,KAAKu2Q,eAAe7yQ,EAAQ4C,EAAUE,EACpD,CAIA,oBAAM+vQ,CAAe7yQ,EAAQ4C,EAAUE,GACnC,OAAgB,MAAZF,EACO,OACXE,EAAUA,SAAiBxG,KAAK6oG,gBAAgBnlG,EAAQ4C,GAEjD,MAAQtG,KAAKw6E,KAAKqC,KAAKg/I,eAAe77N,KAAK+jR,iBAAiBz9Q,GAAWE,GAClF,EAEJ1G,EAAQyjR,UAAYA,EACpBA,EAAUl7F,QAAU,CAChBxtB,MAAO,KACPD,cAAe,IACf8pH,cAAe,IACfC,sBAAuB,0aChS3B,MAAA9jR,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACA62Q,EAAA72Q,EAAA,OACAC,EAAAD,EAAA,KAiBAhB,EAAAA,OAAA,SACIoB,EACAC,EACAE,EACAC,EACAoB,EACAlB,GAG4B,IAF5BG,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB,GACzBG,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAOhwB,EAAoBR,IAAW,EAAApB,EAAAqB,YAAWM,EAAWf,GAEtDU,GAAc,IAAIxB,EAAAyB,aAAcC,KAClC,EAAAo1Q,EAAAiN,yBAAwBvjR,EAAMC,EAAaqB,EAAoBnB,EAAQG,EAAcK,IAGzF,aAAa,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,KAAUgB,GAAUJ,EACzF,oQCvCA,MAAA+c,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAMAme,EAAAne,EAAA,OAyHA,SAAgB+jR,EAAyC1lQ,GAIhC,IAJiC,UACtDnd,EACAod,MAAO/d,GAAK,KACZsC,GACqBwb,EACrB,MAAM,YAAEE,EAAW,SAAE5d,EAAQ,cAAEs7K,EAAa,sBAAEC,EAAqB,gBAAEC,GACjEn9K,EAAAglR,+BAA+BrlQ,OAAO9b,GAE1C,MAAO,CACH3B,YACAod,KAAM,CACF/d,QAEJsC,KAAM,CACF0b,cACA5d,WACAs7K,gBACAE,gBAAiBD,EAAwBC,EAAkB,MAGvE,CAjIan9K,EAAAA,gCAAiC,EAAAgf,EAAAY,QAAuC,EACjF,EAAAZ,EAAAa,IAAG,gBACH,EAAAb,EAAAa,IAAG,aACH,EAAAZ,EAAApa,WAAU,kBACV,EAAAma,EAAAa,IAAG,0BACH,EAAAZ,EAAApa,WAAU,qBAcd7E,EAAAA,iCAAA,SACIuB,EACAI,EACAs7K,EACAE,GAC4B,IAA5Bj7K,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,MAAMvT,EAAO,CAAC,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAErDrc,EAAOY,EAAO0b,MAAMngB,EAAAglR,+BAA+B5kQ,MAYzD,OAXApgB,EAAAglR,+BAA+B3kQ,OAC3B,CACId,YAAaJ,EAAAmB,iBAAiBm5P,gBAC9B93Q,WACAs7K,gBACAC,sBAAuBC,EAAkB,EAAI,EAC7CA,gBAAiBA,GAAmB,IAAIp8K,EAAAiE,UAAU,IAEtDnB,GAGG,IAAI9C,EAAAyf,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAwBA7D,EAAAA,iCAAA,SACIuf,GAC4B,IAA5Brd,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,iBAEZ,IAAKtT,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAglR,+BAA+B5kQ,KAAM,MAAM,IAAIlB,EAAAyB,iCAE/E,MACIrB,MAAM,KAAE/d,GAAM,KACdsC,GACAkhR,EAA0CxlQ,GAC9C,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBm5P,gBAAiB,MAAM,IAAIv6P,EAAA0B,iCACrE,IAAKrf,EAAM,MAAM,IAAI2d,EAAA2B,iCAErB,MAAO,CACH3e,YACAod,KAAM,CACF/d,QAEJsC,OAER,EAuBA7D,EAAAA,0CAAA+kR,oNCxFA/kR,EAAAA,UAAAmxO,EAgGAnxO,EAAAA,gBAAAinO,EA+6BAjnO,EAAAA,YAAA,SAA4BilR,GAC1B,IAAKA,IAAU56Q,MAAMi3B,QAAQ2jP,KAAWA,EAAMljR,OAC5C,MAAM,IAAIgC,MAAM,gCAClB,MAAMgD,EAAKvE,EAAY0iR,SAASD,EAAM,IACtC,IAAK,IAAI/5Q,EAAI,EAAGA,EAAI+5Q,EAAMljR,OAAQmJ,IAAKnE,EAAGo+Q,QAAQ3iR,EAAY0iR,SAASD,EAAM/5Q,KAC7E,OAAOnE,EAAGq+Q,QACZ,EAIAplR,EAAAA,UAAA,SAA0B6xI,GACxB,MAAM5qI,EAAgB,GACtB,IAAK,UAAUuN,KAAKq9H,GAAO,MAAM,IAAI9tI,MAAM,mCAC3C,GAAI,WAAWyQ,KAAKq9H,GAAO,OAAO5qI,EAClC,MAAM4G,EAAQgkI,EAAK3kI,QAAQ,YAAa,IAAIzE,MAAM,KAClD,IAAK,MAAM6I,KAAKzD,EAAO,CACrB,MAAM2K,EAAI,cAAcqvG,KAAKv2G,GAC7B,IAAKkH,GAAkB,IAAbA,EAAEzW,OAAc,MAAM,IAAIgC,MAAM,wBAAwBuN,KAClE,IAAI6tD,GAAO3mD,EAAE,GACb,IAAK6W,OAAOivC,cAAca,IAAQA,GAAOkmN,EAAiB,MAAM,IAAIthR,MAAM,iBAE7D,MAATyU,EAAE,KAAY2mD,GAAOkmN,GACzBp+Q,EAAIO,KAAK23D,EACX,CACA,OAAOl4D,CACT,EAplCA,MAAA9B,EAAAnE,EAAA,OACA4R,EAAA5R,EAAA,OACAw+G,EAAAx+G,EAAA,OACA+2D,EAAA/2D,EAAA,OACAi/G,EAAAj/G,EAAA,OASAy0C,EAAAz0C,EAAA,OACA2uB,EAAA3uB,EAAA,OACA8/G,EAAA9/G,EAAA,OAEMskR,EAAU,IAAI90P,WAAW,IACzB+0P,EAAgD,CACpD7jR,OAAQ,oBACR6F,OAAQqL,EAAEihN,OAeC7zN,EAAAA,UAAY,EACZA,EAAAA,gBAAkB,EAClBA,EAAAA,iBAAmB,EACnBA,EAAAA,iBAAmB,WACnBA,EAAAA,QAAmC4S,EAAEijJ,OAAOh+I,QAAQ7X,EAAAwlR,WAKjE,SAAgBr0C,EAAariO,GAC3B,GAAIzE,MAAMi3B,QAAQxyB,GAAM,OAAOA,EAAIlG,KAAKsC,GAAMimO,EAAUjmO,KAEnD,IAAI,EAAAykB,EAAA+xB,SAAQ5yC,GAAM,OAAO0hB,WAAW9rB,KAAKoK,GAEzC,GAAI,CAAC,SAAU,SAAU,UAAW,SAAU,aAAakxC,gBAAgBlxC,GAAM,OAAOA,EAExF,GAAY,OAARA,EAAc,OAAOA,EAEzB,GAAmB,kBAARA,EACd,OAAO5L,OAAOuiR,YACZviR,OAAO+sJ,QAAQnhJ,GAAKlG,KAAIyW,IAAA,IAAE7N,EAAG2C,GAAEkL,EAAA,MAAK,CAAC7N,EAAG2/N,EAAUh9N,GAAG,KAGzD,MAAM,IAAIpQ,MAAM,2BAA2B+K,aAAeA,KAC5D,CAiCA,IAAYu1N,EAQAjiH,EAiCZ,SAASsjK,EAAiBx6Q,GACxB,QAAiBlJ,IAAbkJ,EAAE3D,aAAqCvF,IAAbkJ,EAAExJ,OAC9B,MAAM,IAAIqC,MAAM,kDAClB,MAAO,CAAEwD,OAAQ2D,EAAE3D,OAAQ7F,OAAQwJ,EAAExJ,OACvC,CAGA,SAAgBulO,EAAgB/7N,GAC9B,QAAelJ,IAAXkJ,EAAEgsD,WAAkCl1D,IAAZkJ,EAAE41B,MAC5B,MAAM,IAAI/8B,MAAM,8CAClB,MAAO,CACLmzD,KAAMhsD,EAAEgsD,KACRp2B,MAAO51B,EAAE41B,MACT/6B,UAAU,EAAA/F,EAAAywJ,KAAIvlJ,EAAEnF,SAAU/F,EAAAkiH,kBAC1BywG,gBAAgB,EAAA3yN,EAAAywJ,KAAIvlJ,EAAEynN,eAAgB//M,EAAEihN,OAE5C,CACA,SAAS8xD,EAAgBz6Q,GACvB,IAAK,MAAMwkN,KAAMxkN,EAAG,CAClB,MAAMsG,EAAIk+M,EACL33J,EAAK6tN,mBAAmB5lO,SAASxuC,WAAWtG,EAAEsG,EACrD,CACF,CAjHaxR,EAAAA,IAAMywJ,CAAIrtJ,EAAsBqtJ,SAAyBzuJ,IAAVoB,EAAsBqtJ,EAAMrtJ,EAkDxF,SAAYihO,GACVA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,aACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,gCACD,CAND,CAAYA,IAAarkO,EAAAA,cAAbqkO,EAAa,KAQzB,SAAYjiH,GACVA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,aACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,iDACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,2CACAA,EAAAA,EAAA,8CACD,CATD,CAAYA,IAAOpiH,EAAAA,QAAPoiH,EAAO,KA0DnB,MAAMyjK,EAAYjzQ,EAAEgN,OAAO,CAAEs3C,KAAMtkD,EAAEyrC,MAAM,IAAI,GAAOvd,MAAOluB,EAAE+sD,QAE/D,SAASmmN,EAAgBl1Q,GACvB,GAAiB,kBAANA,GAAwC,kBAAfwxG,EAAQxxG,GAC1C,MAAM,IAAI7M,MAAM,mBAAmB6M,KACrC,OAAOA,CACT,CAEA,SAASm1Q,EAAcC,GACrB,MAAMC,EAAoB,GAAXD,EACf,MAAO,CACLE,SAAUF,EAAW3hD,EAAc8hD,cACnCC,OAAQH,IAAW5hD,EAAcgiD,KACjCC,SAAUL,IAAW5hD,EAAckiD,OAEvC,CAyDA,MAAa/jR,EAKX2L,WAAAA,GAA6B,IAAjBgsB,EAAAr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAe,CAAC,EAJpB,KAAAi1F,OAAsD,CAAC,EACvD,KAAA95D,OAAkC,GAClC,KAAAH,QAAoC,GAG1C,MAAMgiC,EAAS5+D,KAAKi6B,KA7DxB,SAAsBA,GACpB,QAAan4B,IAATm4B,GAAiD,oBAA3B,CAAC,EAAEx1B,SAASqS,KAAKmjB,GACzC,MAAM,IAAIp2B,MAAM,8CAA8Co2B,KAEhE,MAAM2kC,EAAQ,IACT3kC,EAEHwyB,SAAS,EAAA3sD,EAAAywJ,KAAIt2H,EAAKwyB,QAAS3sD,EAAAwmR,iBAC3B3gR,UAAU,EAAA7F,EAAAywJ,KAAIt2H,EAAKt0B,SAAU,GAC7BoyD,aAAa,EAAAj4D,EAAAywJ,KAAIt2H,EAAK89B,YAAa,IAOrC,GALsC,qBAA3B6G,EAAM2nN,mBACftsP,EAAKk6L,mBAAqBv1J,EAAM2nN,kBACK,qBAA5B3nN,EAAM4nN,oBACfvsP,EAAKg6L,oBAAsBr1J,EAAM4nN,oBAE9B,EAAE,EAAG,EAAG,EAAG,EAAG,GAAG1mO,SAAS8e,EAAMnS,SACnC,MAAM,IAAI5oD,MAAM,oBAAoB+6D,EAAMnS,WAC5C,GAA8B,kBAAnBmS,EAAMj5D,SAAuB,MAAM,IAAI9B,MAAM,0CAIxD,GAHA6O,EAAE+sD,MAAMt/C,OAAOy+C,EAAMj5D,UAGK,IAAtBi5D,EAAM7G,aAA2C,IAAtB6G,EAAM7G,YACnC,MAAM,IAAIl0D,MAAM,wBAAwB+6D,EAAM7G,eAEhD,IAAK,MAAMzmD,IAAK,CACd,sBACA,qBACA,qBACA,iBACA,yBACA,QACU,CACV,MAAM2C,EAAI2qD,EAAMttD,GAChB,QAAUxP,IAANmS,GACa,mBAANA,EACT,MAAM,IAAIpQ,MAAM,kCAAkCyN,KAAK2C,aAAaA,KACxE,CACA,QAA4BnS,IAAxB88D,EAAMimK,cAA6B,CACrC,MAAM63C,EAAK99M,EAAMimK,cACjB,IAAK16N,MAAMi3B,QAAQs7O,GACjB,MAAM,IAAI74Q,MACR,6DAA6D64Q,aAAcA,MAG/E,IAAK,MAAMhsQ,KAAKgsQ,EAAI,CAClB,GAAwB,oBAAbhsQ,EAAEyP,QAA6C,oBAAbzP,EAAE+O,OAC7C,MAAM,IAAI5b,MAAM,gBAAgB6M,aAAaA,MAC/C,QAA0B5O,IAAtB4O,EAAE00N,iBAA8D,oBAAtB10N,EAAE00N,gBAC9C,MAAM,IAAIvhO,MAAM,gBAAgB6M,aAAaA,KACjD,CACF,CACA,OAAO1N,OAAO8J,OAAO8xD,EACvB,CAQ+B/hB,CAAa5iB,GAEpC2kC,EAAMj5D,WAAa7F,EAAA2mR,mBAAkBzmR,KAAK62F,OAAOm7H,iBAAmBpzJ,EAAMj5D,UAC9E3F,KAAK62F,OAAOk7H,UAAYnzJ,EAAMnS,OAChC,CAGA,cAAO7lD,CAAQiyE,GAA6B,IAAjB5+C,EAAAr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAe,CAAC,EACzC,MAAM+yD,EAASorD,EAAAI,MAAM1gG,OAAOo5D,GACtBhyE,EAAK,IAAIvE,EAAY,IAAK23B,EAAMwyB,QAASkI,EAAOlI,QAAS9mD,SAAUgvD,EAAOhvD,WAChF,IAAK,MAAMugC,KAAKyuB,EAAO/3B,QAAS/1B,EAAG8xD,UAAUzyB,GAG7C,GAFAr/B,EAAG+1B,QAAU+3B,EAAO/3B,QACpB/1B,EAAGk2B,OAAS43B,EAAO53B,OACf43B,EAAO+xN,UACT,IAAK,IAAI17Q,EAAI,EAAGA,EAAI2pD,EAAO+xN,UAAU7kR,OAAQmJ,IAC3CnE,EAAGk2B,OAAO/xB,GAAG0nN,mBAAqB/9J,EAAO+xN,UAAU17Q,GAEvD,OAAOnE,CACT,CAEA,eAAOm+Q,CAAS2B,GAA+B,IACzChyN,EADwB16B,EAAAr4B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAe,CAAC,EAE5C,IACE+yD,EAASkD,EAAK+uN,UAAUnnQ,OAAOknQ,EACjC,CAAE,MAAOE,GACP,IACElyN,EAASkD,EAAKivN,UAAUrnQ,OAAOknQ,EACjC,CAAE,MAAOI,GAEP,MAAMF,CACR,CACF,CACA,MAAM9uN,EAAcpD,EAAOkiC,OAAOpqC,SAAW,EAC7C,GAAoB,IAAhBsL,GAAqC,IAAhBA,EACvB,MAAM,IAAIl0D,MAAM,sBAAsBk0D,KACxC,MAAMivN,EAAWryN,EAAOkiC,OAAO+6H,WACzBnlK,EAA0B,IAAhBsL,EAAoBivN,GAAUv6N,QAAUkI,EAAOkiC,OAAOk7H,UAChEpsN,EAA2B,IAAhBoyD,EAAoBivN,GAAUrhR,SAAWgvD,EAAOkiC,OAAOm7H,iBAClEnrN,EAAK,IAAIvE,EAAY,IAAK23B,EAAMwyB,UAAS9mD,WAAUoyD,gBAEnDk6J,EAA6B,IAAhBl6J,EAAoBivN,GAAUjqP,OAAOl7B,OAAS8yD,EAAOkiC,OAAOo7H,WAC/EprN,EAAGk2B,OAAS43B,EAAO53B,OAAOrvB,MAAM,EAAGukN,GAAYvpN,KAAI,CAACsC,EAAG4F,KAAM,CAC3D6hN,eAAgB//M,EAAEihN,SACfh/J,EAAOkiC,OAAO+6H,YAAY70L,OAAOnsB,MACjC5F,MAEL,MAAMknN,EAA8B,IAAhBn6J,EAAoBivN,GAAUpqP,QAAQ/6B,OAAS8yD,EAAOkiC,OAAOq7H,YAOjF,OANArrN,EAAG+1B,QAAU+3B,EAAO/3B,QAAQlvB,MAAM,EAAGwkN,GAAaxpN,KAAI,CAACsC,EAAG4F,KAAM,IAC3D5F,KACA2pD,EAAOkiC,OAAO+6H,YAAYh1L,QAAQhsB,OAEvC/J,EAAGgwF,OAAS,IAAKliC,EAAOkiC,OAAQk7H,UAAWtlK,GACvC9mD,IAAa7F,EAAA2mR,mBAAkB5/Q,EAAGgwF,OAAOm7H,iBAAmBrsN,GACzDkB,CACT,CACAq+Q,MAAAA,GAA8D,IAAvDntN,EAAAn2D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAkC5B,KAAKi6B,KAAK89B,YACjD,GAAoB,IAAhBA,GAAqC,IAAhBA,EACvB,MAAM,IAAIl0D,MAAM,sBAAsBk0D,KAMxC,MAAMh7B,EAAS/8B,KAAK+8B,OAAOr0B,KAAKsC,GAAM6sD,EAAKovN,gBAAgBlvN,EAAaF,EAAKk8J,UAAW/oN,KACxF,IAAK,MAAMwpN,KAAOz3L,EAEZy3L,EAAIlC,aAAekC,EAAIlC,WAAWzwN,eAAe2yN,EAAIlC,WACrDkC,EAAI/B,iBAAmB+B,EAAI/B,eAAe5wN,eAAe2yN,EAAI/B,eAC7D+B,EAAI9B,qBAAuB8B,EAAI9B,mBAAmB7wN,eAAe2yN,EAAI9B,mBAE3E,MAAM91L,EAAU58B,KAAK48B,QAAQl0B,KAAKsC,GAAM6sD,EAAKovN,gBAAgBlvN,EAAaF,EAAKw8J,WAAYrpN,KACrF6rF,EAAS,IAAK72F,KAAK62F,QAiCzB,OAhCoB,IAAhB9+B,GAOF8+B,EAAO+6H,WAAa7xG,EAAA8xG,SAASpyM,OAC3BsgG,EAAA8xG,SAAS1xM,OAAO,CACdssC,QAASzsD,KAAKysD,QACd9mD,SAAU3F,KAAK2F,SACfo3B,OAAQ/8B,KAAK+8B,OAAOr0B,IAAIq+N,GAAiBr+N,KAAKsC,IAAC,IAC1CA,EACHynN,eAAgB//M,EAAEihN,UAEpB/2L,QAAS58B,KAAK48B,QAAQl0B,IAAI88Q,aAGvB3uL,EAAOm7H,wBACPn7H,EAAOk7H,YAEdl7H,EAAOpqC,QAAUsL,EACjB8+B,EAAOk7H,UAAY/xN,KAAKysD,QACxBoqC,EAAOo7H,WAAajyN,KAAK+8B,OAAOl7B,OAChCg1F,EAAOq7H,YAAclyN,KAAK48B,QAAQ/6B,OAC9Bg1F,EAAOm7H,kBAAoBn7H,EAAOm7H,mBAAqBlyN,EAAA2mR,yBAClD5vL,EAAOm7H,kBAEdhyN,KAAKi6B,KAAKitP,iBACPnqP,EAAOl7B,QAAQk7B,EAAOz1B,KAAK,CAAC,GAC5Bs1B,EAAQ/6B,QAAQ+6B,EAAQt1B,KAAK,CAAC,KAEb,IAAhBywD,EAAoBF,EAAK+uN,UAAY/uN,EAAKivN,WAAW3mQ,OAAO,CAClE02E,SACA95D,SACAH,WAEJ,CAGA,YAAIj3B,GACF,IAAIq5E,EAASl/E,EAAA2mR,iBACTU,EAAY,EACZ9sP,EAAOv6B,EAAA2mR,iBACPW,EAAU,EACd,IAAK,MAAMp8Q,KAAKhL,KAAK+8B,OACf/xB,EAAE+nN,yBACJ/zI,EAAS51E,KAAKuI,IAAIqtE,EAAQh0E,EAAE+nN,wBAC5Bo0D,KAEEn8Q,EAAE8nN,uBACJz4L,EAAOjxB,KAAKuI,IAAI0oB,EAAMrvB,EAAE8nN,sBACxBs0D,KAGJ,OAAID,GAAaA,GAAaC,EAAgBpoM,EAC1C3kD,IAASv6B,EAAA2mR,iBAAyBpsP,EAC/Br6B,KAAK62F,OAAOm7H,kBAAoBlyN,EAAA2mR,gBACzC,CAEA,WAAIh6N,GAEF,QAA8B3qD,IAA1B9B,KAAK62F,OAAOk7H,UAAyB,MAAM,IAAIluN,MAAM,uBACzD,OAAO7D,KAAK62F,OAAOk7H,SACrB,CAEQs1D,WAAAA,CAAYpoN,GAClBj/D,KAAKmnO,cAAcloK,GACnB,MAAMh/D,EAAQD,KAAK+8B,OAAOkiC,GAE1B,OAAIh/D,EAAMwyN,gBAAkBxyN,EAAMwyN,eAAe5wN,QAC7C5B,EAAMyyN,oBAAsBzyN,EAAMyyN,mBAAmB7wN,OADO,YAG5D5B,EAAM+yN,WACN/yN,EAAMgzN,cAAgBhzN,EAAMgzN,aAAapxN,QAEzC5B,EAAMqyN,YAAcryN,EAAMqyN,WAAWzwN,OAHb,SAIrB,UACT,CAGQylR,YAAAA,CAAaroN,GACnBj/D,KAAKmnO,cAAcloK,GACnB,MAAMqoN,EAAetnR,KAAK+8B,OAAOkiC,GAAK5G,YAChCksK,OAA2BziO,IAAjBwlR,EAA6BnjD,EAAcE,QAAUijD,EAO/DC,EAAahjD,IAAYJ,EAAcE,QAAUF,EAAcC,IAAgB,EAAVG,EAE3E,MAAO,CAAEijD,UADSjjD,EAAUJ,EAAc8hD,aACtBsB,aACtB,CAGQE,UAAAA,GAEN,IAAI/uN,GAAW,EACbC,GAAY,EACV57B,EAAS,GACXH,EAAU,GACZ,IAAK,IAAIqiC,EAAM,EAAGA,EAAMj/D,KAAK+8B,OAAOl7B,OAAQo9D,IAAO,CAGjD,GAAe,aAFAj/D,KAAKqnR,YAAYpoN,GAEL,SAC3B,MAAM,UAAEuoN,EAAS,WAAED,GAAevnR,KAAKsnR,aAAaroN,GAKpD,GAHIuoN,IAAcrjD,EAAc8hD,aAAclpP,EAAOz1B,KAAK23D,GACrDvG,GAAW,EAEZ6uN,IAAepjD,EAAcC,IAAKzrK,GAAY,OAC7C,GAAI4uN,IAAepjD,EAAckiD,OAAQzpP,EAAQt1B,KAAK23D,QACtD,GAAIsoN,IAAepjD,EAAcgiD,KAE/B,MAAM,IAAItiR,MAAM,qCAAqC0jR,IAC9D,CACA,MAAO,CAAE7uN,WAAUC,YAAW57B,SAAQH,UACxC,CAEA,WAAIw3L,GACF,IAAK,IAAIn1J,EAAM,EAAGA,EAAMj/D,KAAK+8B,OAAOl7B,OAAQo9D,IAC1C,GAA8B,cAA1Bj/D,KAAKqnR,YAAYpoN,GAAsB,OAAO,EACpD,OAAO,CACT,CAGA,gBAAI6mK,GACF,IAAI/+N,GAAM,EACV,IAAK,MAAMiE,KAAKhL,KAAK+8B,OACf/xB,EAAE0nN,oBAAsB1nN,EAAE0nN,mBAAmB7wN,SAAQkF,GAAM,GACjE,OAAOA,CACT,CAEA,UAAIoqF,GACF,IAAKnxF,KAAKo0N,QAAS,MAAM,IAAIvwN,MAAM,gCACnC,IAAIkD,EAAM,GAEV,MAAM61B,EAAU58B,KAAK48B,QAAQl0B,IAAI88Q,GACjCz+Q,GAAO,EAAIg5G,EAAAgxG,eAAe5wM,OAAOngB,KAAK48B,QAAQ/6B,QAAQA,OACtD,IAAK,MAAMqkC,KAAKtJ,EAAS71B,GAAO,GAAK,EAAIg5G,EAAAyxG,SAASrxM,OAAO+lB,EAAE7+B,QAAQxF,OAE/D7B,KAAK8lO,eAAc/+N,GAAO,GAC9BA,GAAO,EAAIg5G,EAAAgxG,eAAe5wM,OAAOngB,KAAK+8B,OAAOl7B,QAAQA,OACrD,IAAK,MAAMmJ,KAAKhL,KAAK+8B,OACnBh2B,GAAO,IAAM,EAAIg5G,EAAAyxG,SAASrxM,OAAOnV,EAAEynN,gBAAkB//M,EAAEihN,OAAO9xN,OAC1D7B,KAAK8lO,cAAgB96N,EAAE0nN,qBACzB3rN,GAAOg5G,EAAAK,WAAWjgG,OAAOnV,EAAE0nN,oBAAoB7wN,QAEnD,OAAOkF,CACT,CACA,SAAImqF,GACF,OAAO,EAAA0vB,EAAAsmH,SAAQlnO,KAAKmxF,OACtB,CACAzgE,OAAAA,GAAkD,IAA1Cg3P,EAAa9lR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAU+lR,EAAW/lR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACxC,OAAOm+G,EAAAI,MAAMhgG,OAAO,CAClBssC,QAASzsD,KAAKysD,QACd9mD,SAAU3F,KAAK2F,SACfo3B,OAAQ/8B,KAAK+8B,OAAOr0B,IAAIq+N,GAAiBr+N,KAAKsC,IAAC,IAC1CA,EACHynN,eAAiBi1D,GAAiB18Q,EAAEynN,gBAAmB//M,EAAEihN,UAE3D/2L,QAAS58B,KAAK48B,QAAQl0B,IAAI88Q,GAC1BkB,UAAW1mR,KAAK+8B,OAAOr0B,KAAKsC,GAAMA,EAAE0nN,oBAAsB,KAC1Dk1D,WAAYD,GAAe3nR,KAAK8lO,cAEpC,CACA,cAAIlU,GACF,OAAO5xN,KAAK0wB,SAAQ,GAAO,EAC7B,CACA,OAAI5pB,GACF,OAAO7B,EAAA6B,IAAIqZ,OAAOngB,KAAK0wB,SAAQ,EAAM1wB,KAAK8lO,cAC5C,CAEA,QAAIlhO,GACF,IAAK5E,KAAKo0N,QAAS,MAAM,IAAIvwN,MAAM,gCACnC,OAAOoB,EAAA6B,IAAIqZ,OAAOo1B,EAAEsyO,SAAS7nR,KAAK0wB,SAAQ,IAC5C,CACA,MAAI3b,GACF,IAAK/U,KAAKo0N,QAAS,MAAM,IAAIvwN,MAAM,gCACnC,OAAOoB,EAAA6B,IAAIqZ,OAAOo1B,EAAEsyO,SAAS7nR,KAAK0wB,SAAQ,IAAO9iB,UACnD,CAEQu5N,aAAAA,CAAcloK,GACpB,IAAK9vC,OAAOivC,cAAca,IAAQ,EAAIA,GAAOA,GAAOj/D,KAAK+8B,OAAOl7B,OAC9D,MAAM,IAAIgC,MAAM,qBAAqBo7D,IACzC,CACAr5D,QAAAA,CAASq5D,GAEP,OADAj/D,KAAKmnO,cAAcloK,GACZgyK,EAAUjxO,KAAK+8B,OAAOkiC,GAC/B,CACA,gBAAI6oN,GACF,OAAO9nR,KAAK+8B,OAAOl7B,MACrB,CAEA62D,QAAAA,CAASz4D,GACP,KAD4D2B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,MACjC5B,KAAKynR,aAAa/uN,SAC3C,MAAM,IAAI70D,MAAM,4CAElB,OADA7D,KAAK+8B,OAAOz1B,MAAK,EAAAs5G,EAAA+iH,gBAAe1jO,OAAO6B,OAAWA,EAAW9B,KAAKi6B,KAAKi6L,qBAChEl0N,KAAK+8B,OAAOl7B,OAAS,CAC9B,CACAkmR,WAAAA,CAAY9oN,EAAah/D,GAA6D,IAEhF4vN,EAFuDm4D,EAAiBpmR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAG5E,GAFA5B,KAAKmnO,cAAcloK,IAEd+oN,EAAmB,CACtB,MAAM95P,EAASluB,KAAKynR,aACfv5P,EAAOwqC,WAAYxqC,EAAO6O,OAAO+iB,SAASmf,KAC7C4wJ,EAAgBh4J,EAAKowN,sBACzB,CACAjoR,KAAK+8B,OAAOkiC,IAAO,EAAA2hD,EAAA+iH,gBACjB1jO,EACAD,KAAK+8B,OAAOkiC,GACZ4wJ,EACA7vN,KAAKi6B,KAAKi6L,mBAEd,CAEQg0D,cAAAA,CAAejpN,GACrB,IAAK9vC,OAAOivC,cAAca,IAAQ,EAAIA,GAAOA,GAAOj/D,KAAK48B,QAAQ/6B,OAC/D,MAAM,IAAIgC,MAAM,sBAAsBo7D,IAC1C,CACAj4D,SAAAA,CAAUi4D,GAER,OADAj/D,KAAKkoR,eAAejpN,GACbgyK,EAAUjxO,KAAK48B,QAAQqiC,GAChC,CACA7nB,gBAAAA,CAAiB6nB,GAA6C,IAAhC5rC,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB6tB,EAAAgxF,QACrD,MAAM15G,EAAM/G,KAAKgH,UAAUi4D,GAC3B,GAAKl4D,EAAIM,OACT,OAAO,EAAAi4G,EAAA+B,SAAQhuF,GAASlT,OAAOm/F,EAAAxmD,UAAUr5C,OAAO1Y,EAAIM,QACtD,CAEA,iBAAI8gR,GACF,OAAOnoR,KAAK48B,QAAQ/6B,MACtB,CACQumR,eAAAA,CACNliP,EACAr4B,EACAgiN,GAEA,IAAI,OAAEruN,EAAM,OAAE6F,GAAW6+B,EAEzB,QADepkC,IAAXN,IAAsBA,EAASqM,GAAKrM,QAClB,kBAAXA,EACT,MAAM,IAAIqC,MACR,gEAAgErC,oBAAyBA,KAEvE,kBAAX6F,IAAqBA,EAASpC,EAAA6B,IAAI2Y,OAAOpY,SACrCvF,IAAXuF,IAAsBA,EAASwG,GAAKxG,QACxC,IAAIuqB,EAAmD,IAAK/jB,KAAQq4B,EAAG1kC,SAAQ6F,UAI/E,QAHmBvF,IAAf8vB,EAAIpwB,eAA6BowB,EAAIpwB,OACzCowB,EAAMimC,EAAKisK,YAAYjsK,EAAKw8J,WAAYziM,EAAK/jB,EAAKgiN,GAClDh4J,EAAKi9J,gBAAgB30M,OAAOyR,GAE1BA,EAAIvqB,SACHrH,KAAKi6B,KAAKg6L,qBAC2B,YAAtC30G,EAAAxmD,UAAUr5C,OAAOmS,EAAIvqB,QAAQM,KAE7B,MAAM,IAAI9D,MACR,2IAIJ,OADK7D,KAAKi6B,KAAKi6L,qBAAoB,EAAA50G,EAAAykH,aAAYnyM,EAAIvqB,OAAQuqB,EAAI0mC,aAAc1mC,EAAI2gM,eAC1E3gM,CACT,CACA+mC,SAAAA,CAAUzyB,GACR,KAD0DtkC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,MAC/B5B,KAAKynR,aAAa9uN,UAC3C,MAAM,IAAI90D,MAAM,6CAElB,OADA7D,KAAK48B,QAAQt1B,KAAKtH,KAAKooR,gBAAgBliP,IAChClmC,KAAK48B,QAAQ/6B,OAAS,CAC/B,CACAwmR,YAAAA,CAAappN,EAAa5+D,GAA+D,IAEnFwvN,EAF0Dm4D,EAAiBpmR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAG/E,GAFA5B,KAAKkoR,eAAejpN,IAEf+oN,EAAmB,CACtB,MAAM95P,EAASluB,KAAKynR,aACfv5P,EAAOyqC,YAAazqC,EAAO0O,QAAQkjB,SAASmf,KAC/C4wJ,EAAgBh4J,EAAKywN,uBACzB,CACAtoR,KAAK48B,QAAQqiC,GAAOj/D,KAAKooR,gBAAgB/nR,EAAQL,KAAK48B,QAAQqiC,GAAM4wJ,EACtE,CACA04D,gBAAAA,CAAiB7hR,EAAiBlF,GAAgD,IAAhC6xB,EAAAzxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAyB6tB,EAAAgxF,QACzE,OAAOzgH,KAAK24D,UAAU,CAAEtxD,OAAQi4G,EAAAxmD,UAAU34C,QAAO,EAAAm/F,EAAA+B,SAAQhuF,GAAS5T,OAAO/Y,IAAWlF,UACtF,CAEA,OAAIE,GACF,IAAIkwB,EAAM,GACV,IAAK,MAAM5mB,KAAKhL,KAAK+8B,OAAQ,CAC3B,MAAMi3L,GAAU,EAAApzG,EAAA8iH,YAAW14N,GAC3B,IAAKgpN,EAAS,MAAM,IAAInwN,MAAM,sBAC9B+tB,GAAOoiM,EAAQxyN,MACjB,CACA,MAAMo7B,EAAU58B,KAAK48B,QAAQl0B,IAAI88Q,GACjC,IAAK,MAAMt/O,KAAKtJ,EAAShL,GAAOsU,EAAE1kC,OAClC,OAAOowB,CACT,CAMQ42P,cAAAA,CAAevpN,EAAawpN,EAAsB3C,GACxD,MAAM,MAAEE,EAAK,OAAEE,EAAM,SAAEE,GAAaP,EAAcC,GAClD,GAAI7mN,EAAM,IAAM9vC,OAAOivC,cAAca,GAAM,MAAM,IAAIp7D,MAAM,qBAAqBo7D,KAChF,GAAKmnN,GAAYnnN,GAAOj/D,KAAK48B,QAAQ/6B,QAAWo9D,GAAOj/D,KAAK+8B,OAAOl7B,OACjE,OAAO6Q,EAAEg2Q,OAAOvoQ,OAAO,IACzBsoQ,EAAgB1oK,EAAAM,OAAOlgG,OACrB4/F,EAAAM,OAAO5gG,OAAOgpQ,GAAej1L,QAAQxoF,GAAY,kBAANA,KAE7C,IAAI+xB,EAAqC/8B,KAAK+8B,OAC3Cr0B,IAAIq+N,GACJr+N,KAAI,CAACzI,EAAO0oR,KAAa,IACrB1oR,EACHwyN,eAAgBk2D,IAAa1pN,EAAMwpN,EAAgB/1Q,EAAEihN,UAErDqyD,EAAOjpP,EAAS,CAACA,EAAOkiC,KACnBinN,GAAUE,KACjBrpP,EAASA,EAAOr0B,KAAI,CAACzI,EAAO0oR,KAAa,IACpC1oR,EACH4F,SAAU8iR,IAAa1pN,EAAMh/D,EAAM4F,SAAW,OAGlD,IAAI+2B,EAAU58B,KAAK48B,QAAQl0B,IAAI88Q,GAC3BU,EAAQtpP,EAAU,GACbwpP,IACPxpP,EAAUA,EAAQlvB,MAAM,EAAGuxD,GAAKhuC,KAAKo0P,GAAcltQ,OAAO,CAACykB,EAAQqiC,MAErE,MAAM2pN,EAAQ7oK,EAAAI,MAAMhgG,OAAO,CACzBxa,SAAU3F,KAAK2F,SACf8mD,QAASzsD,KAAKysD,QACdm7N,YAAY,EACZ7qP,SACAH,YAEF,OAAO2Y,EAAEsyO,SAASe,EAAOl2Q,EAAEm2Q,MAAM1oQ,OAAO2lQ,GAC1C,CACAgD,iBAAAA,CACE7pN,EACAwpN,EACA3C,EACAtkR,GAEA,MAAM,MAAEwkR,EAAK,OAAEE,EAAM,SAAEE,GAAaP,EAAcC,GAClD,IAAIiD,EAAY3D,EACZ4D,EAAe5D,EACf6D,EAAa7D,EACjB,MAAMroP,EAAS/8B,KAAK+8B,OAAOr0B,IAAIq+N,GACzBnqM,EAAU58B,KAAK48B,QAAQl0B,IAAI88Q,GAC5BQ,IAAO+C,EAAYxzO,EAAEsyO,YAAY9qP,EAAOr0B,IAAIi9Q,EAAUxlQ,UACtD6lQ,GAAUI,GAAaF,IAC1B8C,EAAezzO,EAAEsyO,YAAY9qP,EAAOr0B,KAAKsC,GAAM0H,EAAE+sD,MAAMt/C,OAAOnV,EAAEnF,cAC7DugR,GAAaF,EAEPE,GAAYnnN,EAAMriC,EAAQ/6B,SACnConR,EAAa1zO,EAAEsyO,SAAS9nK,EAAAsyG,UAAUlyM,OAAOyc,EAAQqiC,MAFjDgqN,EAAa1zO,EAAEsyO,YAAYjrP,EAAQl0B,IAAIq3G,EAAAsyG,UAAUlyM,SAGnD,MAAMlgB,EAAQ88B,EAAOkiC,GACrB,OAAO1pB,EAAEsyO,SACPn1Q,EAAEm2Q,MAAM1oQ,OAAOngB,KAAKysD,SACpBs8N,EACAC,EACAt2Q,EAAEyrC,MAAM,IAAI,GAAMh+B,OAAOlgB,EAAM+2D,MAC/BtkD,EAAE+sD,MAAMt/C,OAAOlgB,EAAM2gC,OACrBm/E,EAAAyxG,SAASrxM,OAAOsoQ,GAChB/1Q,EAAEw2Q,MAAM/oQ,OAAO3e,GACfkR,EAAE+sD,MAAMt/C,OAAOlgB,EAAM4F,UACrBojR,EACAv2Q,EAAE+sD,MAAMt/C,OAAOngB,KAAK2F,UACpB+M,EAAE+sD,MAAMt/C,OAAO2lQ,GAEnB,CACAqD,iBAAAA,CACElqN,EACAwpN,EACA3C,EACAtkR,GAIa,IAHb4nR,EAAaxnR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,IAAI,EACjBs7Q,EAAkBt7Q,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAClBunR,EAAOznR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IACV0nR,EAAa1nR,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAEb,IAAKqI,MAAMi3B,QAAQ5/B,IAAWxB,KAAK+8B,OAAOl7B,SAAWL,EAAOK,OAC1D,MAAM,IAAIgC,MAAM,yBAAyBrC,KAC3C,IAAK2I,MAAMi3B,QAAQqnP,IAAkBzoR,KAAK+8B,OAAOl7B,SAAW4mR,EAAc5mR,OACxE,MAAM,IAAIgC,MAAM,+BAA+B4kR,KACjD,MAAM1hR,EAAe,CACnB2L,EAAE0+M,GAAGjxM,OAAO,GACZzN,EAAE0+M,GAAGjxM,OAAO2lQ,GACZpzQ,EAAEm2Q,MAAM1oQ,OAAOngB,KAAKysD,SACpB/5C,EAAE+sD,MAAMt/C,OAAOngB,KAAK2F,WAEhB4jR,EAAUzD,IAAa3hD,EAAcE,QAAUF,EAAcC,IAAiB,EAAX0hD,EACnE0D,EAAS1D,EAAW3hD,EAAc8hD,aAClClpP,EAAS/8B,KAAK+8B,OAAOr0B,IAAIq+N,GACzBnqM,EAAU58B,KAAK48B,QAAQl0B,IAAI88Q,GAC7BgE,IAAWrlD,EAAc8hD,cAC3Bl/Q,EAAIO,QACC,CACDy1B,EAAOr0B,IAAIi9Q,EAAUxlQ,QACrB3e,EAAOkH,IAAIgK,EAAEw2Q,MAAM/oQ,QACnBsoQ,EAAc//Q,IAAIq3G,EAAAyxG,SAASrxM,QAC3B4c,EAAOr0B,KAAKsC,GAAM0H,EAAE+sD,MAAMt/C,OAAOnV,EAAEnF,aACnC6C,KAAKsC,GAAMuqC,EAAEirB,QAAO,EAAA/wC,EAAAplB,gBAAeW,OAGrCu+Q,IAAYplD,EAAcC,KAC5Br9N,EAAIO,KAAKiuC,EAAEirB,QAAO,EAAA/wC,EAAAplB,gBAAeuyB,EAAQl0B,IAAIq3G,EAAAsyG,UAAUlyM,WAEzD,MAAMspQ,GAAaH,EAAQ,EAAI,IAAMpM,EAAa,EAAI,GAEtD,GADAn2Q,EAAIO,KAAK,IAAIgpB,WAAW,CAACm5P,KACrBD,IAAWrlD,EAAc8hD,aAAc,CACzC,MAAMzxD,EAAMz3L,EAAOkiC,GACnBl4D,EAAIO,KACFq+Q,EAAUxlQ,OAAOq0M,GACjB9hN,EAAEw2Q,MAAM/oQ,OAAO3e,EAAOy9D,IACtB8gD,EAAAyxG,SAASrxM,OAAOsoQ,EAAcxpN,IAC9BvsD,EAAE+sD,MAAMt/C,OAAOq0M,EAAI3uN,UAEvB,MAAOkB,EAAIO,KAAKoL,EAAE+sD,MAAMt/C,OAAO8+C,IAM/B,OALgB,EAAZwqN,GAAe1iR,EAAIO,KAAKiuC,EAAEirB,OAAOu/C,EAAAyxG,SAASrxM,OAAOmpQ,GAAS52Q,EAAEihN,SAC5D41D,IAAYplD,EAAckiD,QAC5Bt/Q,EAAIO,KAAK23D,EAAMriC,EAAQ/6B,OAAS0zC,EAAEirB,OAAOu/C,EAAAsyG,UAAUlyM,OAAOyc,EAAQqiC,KAASmmN,GACzElI,GACFn2Q,EAAIO,MAAK,EAAAg4G,EAAA6lH,aAAY+3C,EAAYmM,GAAU32Q,EAAE0+M,GAAGjxM,OAAO,GAAIzN,EAAEm2Q,MAAM1oQ,OAAOipQ,IACrE7zO,EAAEgoO,WAAW,gBAAiBx2Q,EACvC,CAEA2iR,OAAAA,CAAQ1oO,EAAoBie,EAAa0qN,EAA4BC,GACnE5pR,KAAKmnO,cAAcloK,GACnB,MAAMh/D,EAAQD,KAAK+8B,OAAOkiC,GACpBylK,GAAY,EAAA9jH,EAAAC,cAAa5gH,EAAOD,KAAKi6B,KAAK+pM,wBAEhD,KAAK,EAAAv0M,EAAA+xB,SAAQR,GAAa,CACxB,IAAK/gD,EAAMuyN,kBAAoBvyN,EAAMuyN,gBAAgB3wN,OACnD,MAAM,IAAIgC,MAAM,0BAClB,MAAM1B,EAAUlC,EAAMuyN,gBACnBh/H,QAAQxoF,GAAMA,EAAE,GAAG2lN,aAAgB3vK,EAAqB2vK,cACxDjoN,KAAIk8F,IAAuB,IAArBxkC,GAAQ,KAAEuxE,IAAO/sC,EAClBl0F,EAAIswC,EACR,IAAK,MAAMh2C,KAAK2mI,EAAMjhI,EAAIA,EAAEm5Q,YAAY7+Q,GACxC,KAAK,EAAAykB,EAAAgxC,YAAW/vD,EAAE/L,UAAWy7D,GAAS,MAAM,IAAIv8D,MAAM,iCACtD,IAAK6M,EAAEswC,WAAY,MAAM,IAAIn9C,MAAM,kCACnC,OAAO6M,CAAC,IAEZ,IAAKvO,EAAQN,OACX,MAAM,IAAIgC,MAAM,8CAA8Cm9C,EAAW2vK,eAC3E,IAAInuG,GAAS,EACb,IAAK,MAAM9xG,KAAKvO,EAAanC,KAAK0pR,QAAQh5Q,EAAEswC,WAAYie,KAAMujD,GAAS,GACvE,OAAOA,CACT,CAGKmnK,EACAA,EAAe56Q,QAAQ62Q,GADP+D,EAAiB,CAACjlD,EAAUR,gBAEjD,MAAMK,EAAUG,EAAUH,QAC1B,IAAKolD,EAAe7pO,SAASykL,GAC3B,MAAM,IAAI1gO,MACR,kCAAkC0gO,eAAqBolD,EAAezsN,KAAK,SAO/E,MAAM,WAAEqqN,GAAevnR,KAAKsnR,aAAaroN,GACzC,GAAIsoN,IAAepjD,EAAckiD,QAAUpnN,GAAOj/D,KAAK48B,QAAQ/6B,OAC7D,MAAM,IAAIgC,MACR,8EAA8Eo7D,KAMlF,MAAM+0J,GAAU,EAAApzG,EAAA8iH,YAAWzjO,GAC3B,GAAyB,YAArBykO,EAAUT,OAAsB,CAClC,MAAM6lD,EAAW9pR,KAAK+8B,OAAOr0B,IAAIk4G,EAAA8iH,YAC3B+kD,EAAgBqB,EAASphR,KAAKsC,GAAMA,EAAE3D,SACtC7F,EAASsoR,EAASphR,KAAKsC,GAAMA,EAAExJ,SACrC,IAAIghH,GAAS,EACTunK,EAAax0O,EAAEyrE,WAAWhgE,GAC1Bgf,EAAa//D,EAAMk4D,eAAiBzlD,EAAEihN,MAC1C,GAAI1zN,EAAMi4D,eAAgB,CAKxB,MAAM,OAAEkI,EAAM,QAAEld,GAzqBxB,SACEA,EACAkd,EACAixJ,GAC2B,IAA3BrxJ,EAAAp+D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAoB8Q,EAAEihN,MAMtB,OAJI,EAAAlkM,EAAAgxC,YAAW4wJ,EAAajxJ,KAC1Bld,EAAU3N,EAAEy0O,oBAAoB9mO,EAAS8c,GACzCI,EAAS7qB,EAAEyrE,WAAW99D,IAEjB,CAAEA,UAASkd,SACpB,CA8pBoC6pN,CAC1BjpO,EACA+oO,EACA9pR,EAAMi4D,eACN8H,IAEKkqN,EAAezqP,GAAK8V,EAAE2rE,mBAAmBjhH,EAAMi4D,eAAgB8H,GACtE,IAAI,EAAAvwC,EAAAgxC,YAAWypN,EAAe9pN,GAAS,CACrC,MAAMx7D,EAAO5E,KAAKmpR,kBAAkBlqN,EAAKwpN,EAAelkD,EAAS/iO,GAC3DukD,GAAM,EAAAt2B,EAAAplB,aACVkrC,EAAE40O,YAAYvlR,EAAMs+C,EAAS0mO,GAC7BrlD,IAAYJ,EAAcE,QAAU,IAAI/zM,WAAW,CAACi0M,IAAY7xN,EAAEihN,OAEpE3zN,KAAK+nR,YAAY9oN,EAAK,CAAE+zJ,UAAWjtK,IAAO,GAC1Cy8D,GAAS,CACX,CACF,CACA,GAAIviH,EAAMm4D,cAAe,CACvBn4D,EAAMgzN,aAAehzN,EAAMgzN,cAAgB,GAC3C,IAAK,MAAOxzL,EAAGslM,KAAY9kO,EAAMm4D,cAAe,CAC9C,MAAM/wD,EAAS09N,EAAQn0M,SAAS,GAAI,GAC9By0M,EAAgBtlH,EAAAM,OAAO5gG,OAAOpY,GAC9B29N,EAAMD,EAAQA,EAAQljO,OAAS,GAC/B+C,GAAO,EAAA06G,EAAA6lH,aAAY99N,EAAQ29N,GAIjC,IAAa,IAFDK,EAAcr9I,WAAWh9E,IAAM,EAAAykB,EAAA+xB,SAAQx2C,KAAM,EAAAykB,EAAAgxC,YAAWz1D,EAAG++Q,KAEvD,SAChB,MAAMtpR,EAAMT,KAAKmpR,kBACflqN,EACAwpN,EACAlkD,EACA/iO,OACAM,EACAuF,EACA29N,GAEIj/K,GAAM,EAAAt2B,EAAAplB,aACVkrC,EAAE40O,YAAY1pR,EAAKugD,EAAY4oO,GAC/BrlD,IAAYJ,EAAcE,QAAU,IAAI/zM,WAAW,CAACi0M,IAAY7xN,EAAEihN,OAEpE3zN,KAAK+nR,YACH9oN,EACA,CAAEg0J,aAAc,CAAC,CAAC,CAAE7yJ,OAAQ2pN,EAAY74D,SAAUtsN,GAAQmhD,MAC1D,GAEFy8D,GAAS,CACX,CACF,CACA,IAAKA,EAAQ,MAAM,IAAI3+G,MAAM,6BAC7B,OAAO,CACT,CAAO,CAEL,MAAMu8D,EAAS7qB,EAAE2mO,SAASl7N,GAG1B,IAAIopO,GAAY,EAChB,MAAMtpN,EAAavrB,EAAEq9K,QAAQxyJ,GAC7B,IAAK,MAAMp1D,KAAK+0G,EAAAM,OAAO5gG,OAAOilN,EAAUJ,aAClC,EAAA70M,EAAA+xB,SAAQx2C,MAAO,EAAAykB,EAAAgxC,YAAWz1D,EAAGo1D,KAAW,EAAA3wC,EAAAgxC,YAAWz1D,EAAG81D,MAAcspN,GAAY,GAEtF,IAAKA,EAAW,MAAM,IAAIvmR,MAAM,qCAAqC6gO,EAAUJ,cAC/E,IAAI1/N,EACJ,GAAyB,WAArB8/N,EAAUT,OACZr/N,EAAO5E,KAAKwoR,eAAevpN,EAAKylK,EAAUJ,WAAYC,OACjD,IAAyB,WAArBG,EAAUT,OAMd,MAAM,IAAIpgO,MAAM,sCAAsC6gO,EAAUT,UAN7B,CACxC,IAAI58N,EAASq9N,EAAUJ,WAEK,SAAxBI,EAAU1uM,KAAKruB,OACjBN,EAASi4G,EAAAxmD,UAAU34C,OAAO,CAAExY,KAAM,MAAO/C,KAAM8/N,EAAU1uM,KAAKpxB,QAChEA,EAAO5E,KAAK8oR,kBAAkB7pN,EAAK53D,EAAQk9N,EAASvQ,EAAQxyN,OAC9D,CAAgF,CAChF,MAAMukD,EAAMxQ,EAAE80O,UAAUzlR,EAAMo8C,EAAYhhD,KAAKi6B,KAAKmlC,MACpDp/D,KAAK+nR,YACH9oN,EACA,CACEqzJ,WAAY,CAAC,CAAClyJ,GAAQ,EAAA3wC,EAAAplB,aAAY07C,EAAK,IAAIz1B,WAAW,CAACi0M,SAEzD,EAEJ,CACA,OAAO,CACT,CAQArgO,IAAAA,CAAK88C,EAAoB2oO,EAA2BC,GAClD,IAAIzoP,EAAM,EACV,IAAK,IAAIn2B,EAAI,EAAGA,EAAIhL,KAAK+8B,OAAOl7B,OAAQmJ,IACtC,IACMhL,KAAK0pR,QAAQ1oO,EAAYh2C,EAAG2+Q,EAAgBC,IAAWzoP,GAC7D,CAAE,MAAO5vB,GAAI,CAEf,IAAK4vB,EAAK,MAAM,IAAIt9B,MAAM,oBAC1B,OAAOs9B,CACT,CAEAmpP,WAAAA,CAAYrrN,GAEV,GADAj/D,KAAKmnO,cAAcloK,GACfj/D,KAAK0B,IAAM,GAAI,MAAM,IAAImC,MAAM,0CACnC,MAAM5D,EAAQD,KAAK+8B,OAAOkiC,GACpBylK,GAAY,EAAA9jH,EAAAC,cAAa5gH,EAAOD,KAAKi6B,KAAK+pM,wBAEhD,GAAyB,YAArBU,EAAUT,OAAsB,CAClC,GAAIhkO,EAAM+yN,UAAW/yN,EAAMyyN,mBAAqB,CAACzyN,EAAM+yN,eAClD,KAAI/yN,EAAMm4D,gBAAiBn4D,EAAMgzN,aA6E/B,MAAM,IAAIpvN,MAAM,mCA7E6B,CAElD,MAAMihO,EAAQ7kO,EAAMm4D,cAAcv7B,MAChC,CAACpsB,EAAGS,IACF2mD,EAAK+pD,oBAAoBzhG,OAAO1P,EAAE,IAAI5O,OACtCg2D,EAAK+pD,oBAAoBzhG,OAAOjP,EAAE,IAAIrP,SAE1C,IAAK,MAAOuyB,EAAI2wM,KAAYD,EAAO,CAEjC,MAAMz9N,EAAS09N,EAAQr3N,MAAM,GAAI,GAC3Bs3N,EAAMD,EAAQA,EAAQljO,OAAS,GAC/B0oR,EAAYjrK,EAAAxmD,UAAUr5C,OAAOpY,GAC7BzC,GAAO,EAAA06G,EAAA6lH,aAAY99N,EAAQ29N,GAC3BtzI,EAAYzxF,EAAMgzN,aAAaz/H,QAAQxoF,IAAM,EAAAykB,EAAAgxC,YAAWz1D,EAAE,GAAGkmN,SAAUtsN,KAC7E,IAAIo2N,EAAsB,GAC1B,GAAuB,UAAnBuvD,EAAU5iR,KAAkB,CAC9B,MAAM2Q,EAAIiyQ,EAAUjyQ,EACd2sN,EAAUslD,EAAUtlD,QAC1B,IAAIulD,EAAQ,EACZ,IAAK,MAAM9qN,KAAOulK,EAAS,CACzB,MAAMwlD,EAAS/4L,EAAU1J,WAAWh9E,IAAM,EAAAykB,EAAAgxC,YAAWz1D,EAAE,GAAGo1D,OAAQV,KAE9D8qN,IAAUlyQ,IAAiB,IAAZmyQ,GAInBzvD,EAAW1zN,KAAKoqF,EAAU+4L,GAAQ,IAClCD,KAJExvD,EAAW1zN,KAAKoL,EAAEihN,MAKtB,CAEA,GAAI62D,IAAUlyQ,EAAG,QACnB,MAAO,GAAuB,UAAnBiyQ,EAAU5iR,KAAkB,CACrC,IAAK,MAAM+3D,KAAO6qN,EAAUtlD,QAAS,CACnC,MAAMwlD,EAAS/4L,EAAU1J,WAAWh9E,IAAM,EAAAykB,EAAAgxC,YAAWz1D,EAAE,GAAGo1D,OAAQV,MAClD,IAAZ+qN,GACJzvD,EAAW1zN,KAAKoqF,EAAU+4L,GAAQ,GACpC,CACA,GAAIzvD,EAAWn5N,SAAW0oR,EAAUtlD,QAAQpjO,OAAQ,QACtD,KAAO,IAAuB,YAAnB0oR,EAAU5iR,OAAsB3H,KAAKi6B,KAAKk6L,mBAc9C,CACL,MAAMu2D,EAAS1qR,KAAKi6B,KAAK4qM,cACzB,GAAI6lD,EACF,IAAK,MAAMt5Q,KAAKs5Q,EAAQ,CACtB,IAAKt5Q,EAAEg0N,gBAAiB,SACxB,MAAMC,EAAgBtlH,EAAAM,OAAO5gG,OAAOpY,GAC9Bi+N,EAAYl0N,EAAE+O,OAAOklN,GAC3B,QAAkBvjO,IAAdwjO,EAAyB,SAC7B,MAAME,EAAYp0N,EAAEg0N,gBAAgB/9N,EAAQi+N,EAAW5zI,GACvD,GAAK8zI,EAIL,OAHAvlO,EAAMyyN,mBAAqB8S,EAAUrtN,OAAO0/C,EAAK+pD,oBAAoBzhG,OAAOiU,IAC5En0B,EAAMwyN,eAAiB//M,EAAEihN,WACzB8xD,EAAgBxlR,EAElB,CAEF,MAAM,IAAI4D,MAAM,kCAClB,CA/ByE,CAEvE,MAAMwhO,EAAgBtlH,EAAAM,OAAO5gG,OAAOpY,GAWpC,GAVA2zN,EAAatpI,EACVhpF,KAAIq8F,IAA4B,KAA1B,OAAE3kC,GAAUn8D,GAAU8gG,EAC3B,MAAM50E,EAAMk1M,EAAcr9I,WAAWh9E,IAAM,EAAAykB,EAAA+xB,SAAQx2C,KAAM,EAAAykB,EAAAgxC,YAAWz1D,EAAGo1D,KACvE,IAAa,IAATjwC,EACF,MAAM,IAAItsB,MAAM,8DAClB,MAAO,CAAEI,YAAWksB,MAAK,IAG1B0M,MAAK,CAACpsB,EAAGS,IAAMT,EAAE0f,IAAMjf,EAAEif,MACzBznB,KAAKsC,GAAMA,EAAE/G,aACX+2N,EAAWn5N,OAAQ,QAC1B,CAiBA,CAEA5B,EAAMyyN,mBAAqBsI,EACxBptN,UACAuK,OAAO,CAAC9Q,EAAQwwD,EAAK+pD,oBAAoBzhG,OAAOiU,KACnD,KACF,CACA,IAAKn0B,EAAMyyN,mBAAoB,MAAM,IAAI7uN,MAAM,kCACjD,CAAyD,CAGzD,OAFA5D,EAAMwyN,eAAiB//M,EAAEihN,WACzB8xD,EAAgBxlR,EAElB,CACA,IAAKA,EAAMqyN,aAAeryN,EAAMqyN,WAAWzwN,OAAQ,MAAM,IAAIgC,MAAM,2BAEnE,IAgCI4uN,EAAmCC,EAhCnCiT,EAAqBjzN,EAAEihN,MACvBxsN,EAAmB,GAGvB,GAA4B,OAAxBu9N,EAAU1uM,KAAKruB,KAAe,CAChC,MAAM2Q,EAAIosN,EAAU1uM,KAAK1d,EACnB2sN,EAAUP,EAAU1uM,KAAKivM,QAC/B,IAAIjK,EAAa,GAEjB,IAAK,MAAMt7J,KAAOulK,EAAS,CACzB,MAAM/gO,EAAOjE,EAAMqyN,WAAWx3J,MAAMpqD,IAAM,EAAA+e,EAAAgxC,YAAWf,EAAKhvD,EAAE,MACvDxM,GACL82N,EAAW1zN,KAAKpD,EAAK,GACvB,CAEA,GADA82N,EAAaA,EAAWttN,MAAM,EAAG4K,GAC7B0iN,EAAWn5N,SAAWyW,EACxB,MAAM,IAAIzU,MACR,uCAAuCyU,OAAO2sN,EAAQpjO,qBAAqBm5N,EAAWn5N,UAG1F8jO,EAAc5lH,EAAAM,OAAOlgG,OAAO,CAAC,KAAM66M,GACrC,MAAO,GAA4B,OAAxB0J,EAAU1uM,KAAKruB,KACxBg+N,EAAc5lH,EAAAM,OAAOlgG,OAAO,CAAClgB,EAAMqyN,WAAW,GAAG,UAC5C,GAA4B,QAAxBoS,EAAU1uM,KAAKruB,KACxBg+N,EAAc5lH,EAAAM,OAAOlgG,OAAO,CAAClgB,EAAMqyN,WAAW,GAAG,GAAIryN,EAAMqyN,WAAW,GAAG,UACpE,GAA4B,SAAxBoS,EAAU1uM,KAAKruB,KACxBg+N,EAAcjzN,EAAEihN,MAChBxsN,EAAU,CAAClH,EAAMqyN,WAAW,GAAG,GAAIryN,EAAMqyN,WAAW,GAAG,SAClD,GAA4B,YAAxBoS,EAAU1uM,KAAKruB,OAAuB3H,KAAKi6B,KAAKk6L,mBACzD,MAAM,IAAItwN,MAAM,8BAuBlB,GAnBI6gO,EAAU/8N,KAAKm4C,SAAS,UAEtB6lL,EAAY9jO,QAAU6iO,EAAUJ,WAAWziO,SAC7CsF,EAAU44G,EAAAM,OAAO5gG,OAAOkmN,GAAaj9N,KAAKsC,IACxC,GAAU,IAANA,EAAS,OAAO0H,EAAEihN,MACtB,IAAI,EAAAlkM,EAAA+xB,SAAQx2C,GAAI,OAAOA,EACvB,MAAM,IAAInH,MAAM,oBAAoBmH,IAAI,KAG5C7D,EAAUA,EAAQgR,OAAOusN,EAAUJ,aAEZ,WAArBI,EAAUT,SAAqBvR,EAAqBvrN,GACpDu9N,EAAU/8N,KAAKkB,WAAW,WAC5B4pN,EAAiB1yG,EAAAM,OAAOlgG,OAAO,CAAC4/F,EAAAM,OAAOlgG,OAAO,CAAC,EAAGo1B,EAAEirB,OAAOkkK,EAAUJ,gBAC5DI,EAAU/8N,KAAKkB,WAAW,OACnC4pN,EAAiB1yG,EAAAM,OAAOlgG,OAAO,IAAI4/F,EAAAM,OAAO5gG,OAAOkmN,GAAcjB,EAAUJ,aAChEI,EAAU/8N,KAAKkB,WAAW,SACL,WAArB67N,EAAUT,SAAqBxR,EAAiBkT,IAEtDlT,IAAmBC,EAAoB,MAAM,IAAI7uN,MAAM,kCACxD4uN,IAAgBxyN,EAAMwyN,eAAiBA,GACvCC,IAAoBzyN,EAAMyyN,mBAAqBA,GACnD+yD,EAAgBxlR,EAClB,CACAg5G,QAAAA,GACE,IAAK,IAAIjuG,EAAI,EAAGA,EAAIhL,KAAK+8B,OAAOl7B,OAAQmJ,IAAKhL,KAAKsqR,YAAYt/Q,EAChE,CACA2/Q,OAAAA,GACE,IAAK3qR,KAAKo0N,QAAS,MAAM,IAAIvwN,MAAM,sCACnC,IAAK7D,KAAK48B,QAAQ/6B,OAAQ,MAAM,IAAIgC,MAAM,8BAC1C,GAAI7D,KAAK0B,IAAM,GAAI,MAAM,IAAImC,MAAM,0CACnC,OAAO7D,KAAK0wB,SAAQ,GAAM,EAC5B,CACAu0P,OAAAA,CAAQ59N,GACN,IAAK,MAAM/1C,IAAK,CAAC,cAAe,UAAW,YACzC,GAAItR,KAAKi6B,KAAK3oB,KAAO+1C,EAAMptB,KAAK3oB,GAC9B,MAAM,IAAIzN,MACR,kCAAkCyN,UAAUtR,KAAKi6B,KAAK3oB,YAAY+1C,EAAMptB,KAAK3oB,MAInF,IAAK,MAAMA,IAAK,CAAC,SAAU,WACzB,GAAItR,KAAKsR,GAAGzP,SAAWwlD,EAAM/1C,GAAGzP,OAC9B,MAAM,IAAIgC,MACR,kCAAkCyN,iBAAiBtR,KAAKsR,GAAGzP,gBAAgBwlD,EAAM/1C,GAAGzP,UAI1F,MAAM+oR,EAAe5qR,KAAK62F,OAAO+6H,WAAa7xG,EAAA8xG,SAAS1xM,OAAOngB,KAAK62F,OAAO+6H,YAAcl/M,EAAEihN,MACpFk3D,EAAgBxjO,EAAMwvC,OAAO+6H,WAC/B7xG,EAAA8xG,SAAS1xM,OAAOknC,EAAMwvC,OAAO+6H,YAC7Bl/M,EAAEihN,MACN,KAAK,EAAAlkM,EAAAgxC,YAAWmqN,EAAcC,GAC5B,MAAM,IAAIhnR,MAAM,8CAClB7D,KAAK62F,OAASh/B,EAAKisK,YAAYjsK,EAAK08J,WAAYv0N,KAAK62F,OAAQxvC,EAAMwvC,QACnE,IAAK,IAAI7rF,EAAI,EAAGA,EAAIhL,KAAK+8B,OAAOl7B,OAAQmJ,IAAKhL,KAAK+nR,YAAY/8Q,EAAGq8C,EAAMtqB,OAAO/xB,IAAI,GAClF,IAAK,IAAIA,EAAI,EAAGA,EAAIhL,KAAK48B,QAAQ/6B,OAAQmJ,IAAKhL,KAAKqoR,aAAar9Q,EAAGq8C,EAAMzqB,QAAQ5xB,IAAI,GACrF,OAAOhL,IACT,CACAqS,KAAAA,GAEE,OAAO/P,EAAY0iR,SAAShlR,KAAKklR,OAAOllR,KAAKi6B,KAAK89B,aAAc/3D,KAAKi6B,KACvE,EAl1BFn6B,EAAAA,YAAAwC,EA81BA,MAAM6iR,EAA0B,uCCnkChCniR,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,6gBCDtDsM,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,MAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,GACA0P,EAAA1O,EAAA,OAAAhB,+BCCAA,EAAQ,OAAe,EAUvBA,EAAQ,EATW,CACjB,QAAW,gBACX,SAAY,CAAC,CACX,KAAQ,OACR,QAAW,CACT,EAAK,6bCXX,SAASgrR,EAAUhkR,GAKjB,GAJmB,kBAARA,IACTA,EAAMA,EAAIrC,YAGO,kBAARqC,EACT,MAAM,IAAIjD,MAAM,yCAGlB,IAAIknR,EAAUjkR,EAAI4G,QAAQV,QAAQ,IAAK,IAAIzE,MAAM,IACjD,GAAIwiR,EAAQlpR,OAAS,GAAwB,IAAnBkpR,EAAQlpR,QAAgBkpR,EAAQlpR,OAAS,EACjE,MAAM,IAAIgC,MAAM,sBAAwBiD,GAInB,IAAnBikR,EAAQlpR,QAAmC,IAAnBkpR,EAAQlpR,SAClCkpR,EAAU5gR,MAAMS,UAAUuN,OAAOk/D,MAAM,GAAI0zM,EAAQriR,KAAI,SAAU0I,GAC/D,MAAO,CAACA,EAAGA,EACb,MAIqB,IAAnB25Q,EAAQlpR,QAAckpR,EAAQzjR,KAAK,IAAK,KAE5C,MAAM0jR,EAAW7/Q,SAAS4/Q,EAAQ7tN,KAAK,IAAK,IAE5C,MAAO,CACLrsD,EAAIm6Q,GAAY,GAAM,IACtBr6O,EAAIq6O,GAAY,GAAM,IACtB95Q,EAAI85Q,GAAY,EAAK,IACrBv6Q,EAAc,IAAXu6Q,EACHlkR,IAAK,IAAMikR,EAAQr9Q,MAAM,EAAG,GAAGwvD,KAAK,IAExC,CAEAp9D,EAAQmrR,WAAa,SAAqBrpQ,GACnCA,IAASA,EAAU,CAAC,GACpBA,EAAQspQ,QAAOtpQ,EAAQspQ,MAAQ,CAAC,GAErC,MAAMC,EAAmC,qBAAnBvpQ,EAAQupQ,QACT,OAAnBvpQ,EAAQupQ,QACRvpQ,EAAQupQ,OAAS,EACf,EACAvpQ,EAAQupQ,OAEN/mP,EAAQxiB,EAAQwiB,OAASxiB,EAAQwiB,OAAS,GAAKxiB,EAAQwiB,WAAQtiC,EAC/DspR,EAAQxpQ,EAAQwpQ,OAAS,EAE/B,MAAO,CACLhnP,MAAOA,EACPgnP,MAAOhnP,EAAQ,EAAIgnP,EACnBD,OAAQA,EACRD,MAAO,CACLx9I,KAAMo9I,EAASlpQ,EAAQspQ,MAAMx9I,MAAQ,aACrC29I,MAAOP,EAASlpQ,EAAQspQ,MAAMG,OAAS,cAEzC1jR,KAAMia,EAAQja,KACd2jR,aAAc1pQ,EAAQ0pQ,cAAgB,CAAC,EAE3C,EAEAxrR,EAAQyrR,SAAW,SAAmBC,EAAQvxP,GAC5C,OAAOA,EAAKmK,OAASnK,EAAKmK,OAASonP,EAAuB,EAAdvxP,EAAKkxP,OAC7ClxP,EAAKmK,OAASonP,EAAuB,EAAdvxP,EAAKkxP,QAC5BlxP,EAAKmxP,KACX,EAEAtrR,EAAQ2rR,cAAgB,SAAwBD,EAAQvxP,GACtD,MAAMmxP,EAAQtrR,EAAQyrR,SAASC,EAAQvxP,GACvC,OAAO7wB,KAAKC,OAAOmiR,EAAuB,EAAdvxP,EAAKkxP,QAAcC,EACjD,EAEAtrR,EAAQ4rR,cAAgB,SAAwBC,EAASC,EAAI3xP,GAC3D,MAAM/P,EAAO0hQ,EAAG5+I,QAAQ9iH,KAClBvmB,EAAOioR,EAAG5+I,QAAQrpI,KAClBynR,EAAQtrR,EAAQyrR,SAASrhQ,EAAM+P,GAC/B4xP,EAAaziR,KAAKC,OAAO6gB,EAAqB,EAAd+P,EAAKkxP,QAAcC,GACnDU,EAAe7xP,EAAKkxP,OAASC,EAC7BW,EAAU,CAAC9xP,EAAKixP,MAAMG,MAAOpxP,EAAKixP,MAAMx9I,MAE9C,IAAK,IAAI1iI,EAAI,EAAGA,EAAI6gR,EAAY7gR,IAC9B,IAAK,IAAI4F,EAAI,EAAGA,EAAIi7Q,EAAYj7Q,IAAK,CACnC,IAAIo7Q,EAAgC,GAAtBhhR,EAAI6gR,EAAaj7Q,GAC3Bq7Q,EAAUhyP,EAAKixP,MAAMG,MAEzB,GAAIrgR,GAAK8gR,GAAgBl7Q,GAAKk7Q,GAC5B9gR,EAAI6gR,EAAaC,GAAgBl7Q,EAAIi7Q,EAAaC,EAAc,CAGhEG,EAAUF,EAAQpoR,EAFLyF,KAAKC,OAAO2B,EAAI8gR,GAAgBV,GAEflhQ,EADjB9gB,KAAKC,OAAOuH,EAAIk7Q,GAAgBV,IACA,EAAI,EACnD,CAEAO,EAAQK,KAAYC,EAAQp7Q,EAC5B86Q,EAAQK,KAAYC,EAAQt7O,EAC5Bg7O,EAAQK,KAAYC,EAAQ/6Q,EAC5By6Q,EAAQK,GAAUC,EAAQx7Q,CAC5B,CAEJ,iTClGA,MAAAqO,EAAAhe,EAAA,OACAie,EAAAje,EAAA,OAEAD,EAAAC,EAAA,OACAorR,EAAAprR,EAAA,OACAE,EAAAF,EAAA,OACAke,EAAAle,EAAA,OAOAme,EAAAne,EAAA,OA4GA,SAAgBqrR,EAAqDhtQ,GAI5C,IAJ6C,UAClEnd,EACAod,MAAO/d,GAAK,KACZsC,GACqBwb,EACrB,MAAM,YAAEE,EAAW,SAAE4gH,GAAangI,EAAAssR,2CAA2C3sQ,OAAO9b,GAEpF,MAAO,CACH3B,YACAod,KAAM,CACF/d,QAEJsC,KAAM,CACF0b,cACA4gH,YAGZ,CApHangI,EAAAA,4CAA6C,EAAAgf,EAAAY,QAAmD,EACzG,EAAAZ,EAAAa,IAAG,gBACH,EAAAZ,EAAApa,WAAU,cAYd7E,EAAAA,6CAAA,SACIuB,EACAgrR,EACArqR,GAEA,KAAK,EAAAhB,EAAA4e,2BAA0B5d,GAC3B,MAAM,IAAIgd,EAAAa,iCAEd,MAAMT,EAAO,CAAC,CAAEU,OAAQze,EAAM0e,UAAU,EAAOC,YAAY,IAErDrc,EAAOY,EAAO0b,MAAMngB,EAAAssR,2CAA2ClsQ,MASrE,OARApgB,EAAAssR,2CAA2CjsQ,OACvC,CACId,YAAaJ,EAAAmB,iBAAiBksQ,4BAC9BrsJ,SAAUosJ,GAAqB,IAAIxrR,EAAAiE,UAAU,IAEjDnB,GAGG,IAAIuoR,EAAA5rQ,uBAAuB,CAAElB,OAAMpd,YAAW2B,QACzD,EAsBA7D,EAAAA,6CAAA,SACIuf,EACArd,GAEA,IAAKqd,EAAYrd,UAAUue,OAAOve,GAAY,MAAM,IAAIgd,EAAAwB,oCACxD,GAAInB,EAAY1b,KAAK9B,SAAW/B,EAAAssR,2CAA2ClsQ,KACvE,MAAM,IAAIlB,EAAAyB,iCAEd,MACIrB,MAAM,KAAE/d,GAAM,KACdsC,GACAwoR,EAAsD9sQ,GAC1D,GAAI1b,EAAK0b,cAAgBJ,EAAAmB,iBAAiBksQ,4BAA6B,MAAM,IAAIttQ,EAAA0B,iCACjF,IAAKrf,EAAM,MAAM,IAAI2d,EAAA2B,iCAErB,MAAO,CACH3e,YACAod,KAAM,CACF/d,QAEJsC,OAER,EAqBA7D,EAAAA,sDAAAqsR,8BCxHAnpR,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQg0D,cAAW,EAEnB,SAAWA,GACPA,EAASA,EAAmB,SAAI,GAAK,WACrCA,EAASA,EAAqB,WAAI,GAAK,aACvCA,EAASA,EAAiB,OAAI,GAAK,SACnCA,EAASA,EAAmB,SAAI,GAAK,WACrCA,EAASA,EAA2B,iBAAI,GAAK,mBAC7CA,EAASA,EAA6B,mBAAI,GAAK,oBAClD,CAPD,CAOch0D,EAAQg0D,WAAah0D,EAAQg0D,SAAW,CAAC,kCCcvD,IAAIvvD,EAASzD,EAAAA,OAAAA,OAGT85I,EAAar2I,EAAOq2I,YAAc,SAAUzmH,GAE9C,QADAA,EAAW,GAAKA,IACIA,EAASvf,eAC3B,IAAK,MAAM,IAAK,OAAO,IAAK,QAAQ,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,OAAO,IAAK,QAAQ,IAAK,UAAU,IAAK,WAAW,IAAK,MACxI,OAAO,EACT,QACE,OAAO,EAEb,EA0CA,SAASkpB,EAAc3J,GAErB,IAAIo4P,EACJ,OAFAvsR,KAAKm0B,SAXP,SAA2BwL,GACzB,IAAI6sP,EA/BN,SAA4B7sP,GAC1B,IAAKA,EAAK,MAAO,OAEjB,IADA,IAAI8sP,IAEF,OAAQ9sP,GACN,IAAK,OACL,IAAK,QACH,MAAO,OACT,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,UACT,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,SACL,IAAK,QACL,IAAK,MACH,OAAOA,EACT,QACE,GAAI8sP,EAAS,OACb9sP,GAAO,GAAKA,GAAK/qB,cACjB63Q,GAAU,EAGlB,CAKaC,CAAmB/sP,GAC9B,GAAoB,kBAAT6sP,IAAsBjoR,EAAOq2I,aAAeA,IAAeA,EAAWj7G,IAAO,MAAM,IAAI97B,MAAM,qBAAuB87B,GAC/H,OAAO6sP,GAAQ7sP,CACjB,CAOkBgtP,CAAkBx4P,GAE1Bn0B,KAAKm0B,UACX,IAAK,UACHn0B,KAAKouB,KAAOw+P,EACZ5sR,KAAKwtB,IAAMq/P,EACXN,EAAK,EACL,MACF,IAAK,OACHvsR,KAAK8sR,SAAWC,EAChBR,EAAK,EACL,MACF,IAAK,SACHvsR,KAAKouB,KAAO4+P,EACZhtR,KAAKwtB,IAAMy/P,EACXV,EAAK,EACL,MACF,QAGE,OAFAvsR,KAAK8K,MAAQoiR,OACbltR,KAAKwtB,IAAM2/P,GAGfntR,KAAKotR,SAAW,EAChBptR,KAAKqtR,UAAY,EACjBrtR,KAAKstR,SAAW/oR,EAAOi/B,YAAY+oP,EACrC,CAmCA,SAASgB,EAAch+P,GACrB,OAAIA,GAAQ,IAAa,EAAWA,GAAQ,IAAM,EAAa,EAAWA,GAAQ,IAAM,GAAa,EAAWA,GAAQ,IAAM,GAAa,EACpIA,GAAQ,IAAM,GAAQ,GAAK,CACpC,CA0DA,SAASw9P,EAAa1lN,GACpB,IAAI9wD,EAAIvW,KAAKqtR,UAAYrtR,KAAKotR,SAC1Bv8Q,EAtBN,SAA6BoyB,EAAMokC,GACjC,GAAwB,OAAV,IAATA,EAAI,IAEP,OADApkC,EAAKmqP,SAAW,EACT,SAET,GAAInqP,EAAKmqP,SAAW,GAAK/lN,EAAIxlE,OAAS,EAAG,CACvC,GAAwB,OAAV,IAATwlE,EAAI,IAEP,OADApkC,EAAKmqP,SAAW,EACT,SAET,GAAInqP,EAAKmqP,SAAW,GAAK/lN,EAAIxlE,OAAS,GACZ,OAAV,IAATwlE,EAAI,IAEP,OADApkC,EAAKmqP,SAAW,EACT,QAGb,CACF,CAKUI,CAAoBxtR,KAAMqnE,GAClC,YAAUvlE,IAAN+O,EAAwBA,EACxB7Q,KAAKotR,UAAY/lN,EAAIxlE,QACvBwlE,EAAI9vD,KAAKvX,KAAKstR,SAAU/2Q,EAAG,EAAGvW,KAAKotR,UAC5BptR,KAAKstR,SAAS7oR,SAASzE,KAAKm0B,SAAU,EAAGn0B,KAAKqtR,aAEvDhmN,EAAI9vD,KAAKvX,KAAKstR,SAAU/2Q,EAAG,EAAG8wD,EAAIxlE,aAClC7B,KAAKotR,UAAY/lN,EAAIxlE,QACvB,CA0BA,SAAS+qR,EAAUvlN,EAAKr8D,GACtB,IAAKq8D,EAAIxlE,OAASmJ,GAAK,IAAM,EAAG,CAC9B,IAAI6F,EAAIw2D,EAAI5iE,SAAS,UAAWuG,GAChC,GAAI6F,EAAG,CACL,IAAIO,EAAIP,EAAEC,WAAWD,EAAEhP,OAAS,GAChC,GAAIuP,GAAK,OAAUA,GAAK,MAKtB,OAJApR,KAAKotR,SAAW,EAChBptR,KAAKqtR,UAAY,EACjBrtR,KAAKstR,SAAS,GAAKjmN,EAAIA,EAAIxlE,OAAS,GACpC7B,KAAKstR,SAAS,GAAKjmN,EAAIA,EAAIxlE,OAAS,GAC7BgP,EAAEnD,MAAM,GAAI,EAEvB,CACA,OAAOmD,CACT,CAIA,OAHA7Q,KAAKotR,SAAW,EAChBptR,KAAKqtR,UAAY,EACjBrtR,KAAKstR,SAAS,GAAKjmN,EAAIA,EAAIxlE,OAAS,GAC7BwlE,EAAI5iE,SAAS,UAAWuG,EAAGq8D,EAAIxlE,OAAS,EACjD,CAIA,SAASgrR,EAASxlN,GAChB,IAAIx2D,EAAIw2D,GAAOA,EAAIxlE,OAAS7B,KAAK8K,MAAMu8D,GAAO,GAC9C,GAAIrnE,KAAKotR,SAAU,CACjB,IAAI5/P,EAAMxtB,KAAKqtR,UAAYrtR,KAAKotR,SAChC,OAAOv8Q,EAAI7Q,KAAKstR,SAAS7oR,SAAS,UAAW,EAAG+oB,EAClD,CACA,OAAO3c,CACT,CAEA,SAASm8Q,EAAW3lN,EAAKr8D,GACvB,IAAIuF,GAAK82D,EAAIxlE,OAASmJ,GAAK,EAC3B,OAAU,IAANuF,EAAgB82D,EAAI5iE,SAAS,SAAUuG,IAC3ChL,KAAKotR,SAAW,EAAI78Q,EACpBvQ,KAAKqtR,UAAY,EACP,IAAN98Q,EACFvQ,KAAKstR,SAAS,GAAKjmN,EAAIA,EAAIxlE,OAAS,IAEpC7B,KAAKstR,SAAS,GAAKjmN,EAAIA,EAAIxlE,OAAS,GACpC7B,KAAKstR,SAAS,GAAKjmN,EAAIA,EAAIxlE,OAAS,IAE/BwlE,EAAI5iE,SAAS,SAAUuG,EAAGq8D,EAAIxlE,OAAS0O,GAChD,CAEA,SAAS08Q,EAAU5lN,GACjB,IAAIx2D,EAAIw2D,GAAOA,EAAIxlE,OAAS7B,KAAK8K,MAAMu8D,GAAO,GAC9C,OAAIrnE,KAAKotR,SAAiBv8Q,EAAI7Q,KAAKstR,SAAS7oR,SAAS,SAAU,EAAG,EAAIzE,KAAKotR,UACpEv8Q,CACT,CAGA,SAASq8Q,EAAY7lN,GACnB,OAAOA,EAAI5iE,SAASzE,KAAKm0B,SAC3B,CAEA,SAASg5P,EAAU9lN,GACjB,OAAOA,GAAOA,EAAIxlE,OAAS7B,KAAK8K,MAAMu8D,GAAO,EAC/C,CA1NAvnE,EAAQg+B,cAAgBA,EA6BxBA,EAAclzB,UAAUE,MAAQ,SAAUu8D,GACxC,GAAmB,IAAfA,EAAIxlE,OAAc,MAAO,GAC7B,IAAIgP,EACA7F,EACJ,GAAIhL,KAAKotR,SAAU,CAEjB,QAAUtrR,KADV+O,EAAI7Q,KAAK8sR,SAASzlN,IACG,MAAO,GAC5Br8D,EAAIhL,KAAKotR,SACTptR,KAAKotR,SAAW,CAClB,MACEpiR,EAAI,EAEN,OAAIA,EAAIq8D,EAAIxlE,OAAegP,EAAIA,EAAI7Q,KAAKouB,KAAKi5C,EAAKr8D,GAAKhL,KAAKouB,KAAKi5C,EAAKr8D,GAC/D6F,GAAK,EACd,EAEAitB,EAAclzB,UAAU4iB,IAwGxB,SAAiB65C,GACf,IAAIx2D,EAAIw2D,GAAOA,EAAIxlE,OAAS7B,KAAK8K,MAAMu8D,GAAO,GAC9C,OAAIrnE,KAAKotR,SAAiBv8Q,EAAI,SACvBA,CACT,EAzGAitB,EAAclzB,UAAUwjB,KA0FxB,SAAkBi5C,EAAKr8D,GACrB,IAAIsrB,EArEN,SAA6B2M,EAAMokC,EAAKr8D,GACtC,IAAI4F,EAAIy2D,EAAIxlE,OAAS,EACrB,GAAI+O,EAAI5F,EAAG,OAAO,EAClB,IAAIuhR,EAAKgB,EAAclmN,EAAIz2D,IAC3B,GAAI27Q,GAAM,EAER,OADIA,EAAK,IAAGtpP,EAAKmqP,SAAWb,EAAK,GAC1BA,EAET,KAAM37Q,EAAI5F,IAAa,IAARuhR,EAAW,OAAO,EAEjC,GADAA,EAAKgB,EAAclmN,EAAIz2D,IACnB27Q,GAAM,EAER,OADIA,EAAK,IAAGtpP,EAAKmqP,SAAWb,EAAK,GAC1BA,EAET,KAAM37Q,EAAI5F,IAAa,IAARuhR,EAAW,OAAO,EAEjC,GADAA,EAAKgB,EAAclmN,EAAIz2D,IACnB27Q,GAAM,EAIR,OAHIA,EAAK,IACI,IAAPA,EAAUA,EAAK,EAAOtpP,EAAKmqP,SAAWb,EAAK,GAE1CA,EAET,OAAO,CACT,CA8CckB,CAAoBztR,KAAMqnE,EAAKr8D,GAC3C,IAAKhL,KAAKotR,SAAU,OAAO/lN,EAAI5iE,SAAS,OAAQuG,GAChDhL,KAAKqtR,UAAY/2P,EACjB,IAAI9I,EAAM65C,EAAIxlE,QAAUy0B,EAAQt2B,KAAKotR,UAErC,OADA/lN,EAAI9vD,KAAKvX,KAAKstR,SAAU,EAAG9/P,GACpB65C,EAAI5iE,SAAS,OAAQuG,EAAGwiB,EACjC,EA9FAsQ,EAAclzB,UAAUkiR,SAAW,SAAUzlN,GAC3C,GAAIrnE,KAAKotR,UAAY/lN,EAAIxlE,OAEvB,OADAwlE,EAAI9vD,KAAKvX,KAAKstR,SAAUttR,KAAKqtR,UAAYrtR,KAAKotR,SAAU,EAAGptR,KAAKotR,UACzDptR,KAAKstR,SAAS7oR,SAASzE,KAAKm0B,SAAU,EAAGn0B,KAAKqtR,WAEvDhmN,EAAI9vD,KAAKvX,KAAKstR,SAAUttR,KAAKqtR,UAAYrtR,KAAKotR,SAAU,EAAG/lN,EAAIxlE,QAC/D7B,KAAKotR,UAAY/lN,EAAIxlE,MACvB,gCCpIE9B,EAAOD,QAAU,EAAjBC,mCCFFiD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,iGCDtD,MAAA4b,EAAAhe,EAAA,OACAmE,EAAAnE,EAAA,OAEahB,EAAAA,KAAQw4G,IACjB,MAAMC,GAAS,EAAAz5F,EAAAa,IAAG24F,IACZ,OAAEn4F,EAAM,OAAEV,IAAW,EAAAxa,EAAAwzG,cAAaF,GAElCm1K,EAAan1K,EAYnB,OAVAm1K,EAAWjuQ,OAAS,CAAC4Q,EAAgB0G,MACrBtX,EAAO4Q,EAAQ0G,GAI/B22P,EAAWvtQ,OAAS,CAAC0xC,EAAexhC,EAAgB0G,KAChD,MAAMiC,EAAM7J,OAAO0iC,GACnB,OAAO1xC,EAAO6Y,EAAK3I,EAAQ0G,EAAO,EAG/B22P,CAAU,aCnBrB3tR,EAAOD,QAAU,89JCCjBkD,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQg3D,eAAiBh3D,EAAQ6tR,cAAgB7tR,EAAQ8tR,UAAY9tR,EAAQ+tR,UAAY/tR,EAAQ6sB,cAAgB7sB,EAAQsoB,eAAiBtoB,EAAQytH,SAAWztH,EAAQi+G,QAAUj+G,EAAQ2vL,iBAAmB3vL,EAAQujB,eAAiBvjB,EAAQytB,sBAAwBztB,EAAQguR,WAAahuR,EAAQ2uB,UAAY3uB,EAAQ6vL,WAAa7vL,EAAQwF,eAAY,EACrV,MAAMomB,EAAiB5qB,EAAQ,OACzByC,EAAWzC,EAAQ,OACnBuE,EAAevE,EAAQ,OAC7B,SAASitR,EAAch3K,GACnB,MAAsB,oBAAPA,GACK,MAAhBA,EAAGnsG,WACHmsG,EAAGnsG,UAAUqD,cAAgB8oG,CACrC,CAUA,SAASi3K,EAAWz8Q,EAAGiY,GACnB,OAVwBykQ,EAUDzkQ,EAThBrf,MAAMi3B,QAAQ6sP,IAAUA,EAAM1xL,MAAMwxL,GAUkB,MAAlDvkQ,EAAasxC,MAAKj4C,GAAStR,aAAasR,IAC/CkrQ,EAAcvkQ,GACPjY,aAAaiY,EACjBA,EAAajY,GAdxB,IAA4B08Q,CAe5B,CACA,SAAS3oR,EAAUiO,GACf,MAAO,CACHgU,MAAO,SAAC9mB,GAAG,QAAAwJ,EAAArI,UAAAC,OAAKsT,EAAI,IAAAhL,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJ+K,EAAI/K,EAAA,GAAAxI,UAAAwI,GAAA,OAAKwe,QAAQrB,MAAMhU,EAAS9S,KAAQ0U,EAAK,EAC7DkQ,KAAM,SAAC5kB,GAAG,QAAAooB,EAAAjnB,UAAAC,OAAKsT,EAAI,IAAAhL,MAAA0e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3T,EAAI2T,EAAA,GAAAlnB,UAAAknB,GAAA,OAAKF,QAAQvD,KAAK9R,EAAS9S,KAAQ0U,EAAK,EAC3D4T,KAAM,SAACtoB,GAAG,QAAAuoB,EAAApnB,UAAAC,OAAKsT,EAAI,IAAAhL,MAAA6e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9T,EAAI8T,EAAA,GAAArnB,UAAAqnB,GAAA,OAAKL,QAAQG,KAAKxV,EAAS9S,KAAQ0U,EAAK,EAC3D0N,MAAO,SAACpiB,GAAG,QAAAyoB,EAAAtnB,UAAAC,OAAKsT,EAAI,IAAAhL,MAAA+e,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJhU,EAAIgU,EAAA,GAAAvnB,UAAAunB,GAAA,OAAKP,QAAQ/F,MAAMtP,EAAS9S,KAAQ0U,EAAK,EAErE,CACArV,EAAQwF,UAAYA,EACpB,MAAMuc,EAASvc,EAAU,WAmHzB,SAASmqL,EAAiBxvL,EAAOkP,GAK7B,OAJY,MAARA,IACAA,EAAO,CAAC,GACQ,MAAhBA,EAAKqZ,UACLrZ,EAAKsd,OAASE,EAAcxd,EAAKqZ,QAAS,IAAI3kB,MAAM,6BAA8BsL,EAAKsd,SACpFsB,MAAM9tB,EAAOkP,GAAMyT,OAAMrR,IAC5B,KAAe,eAAXA,EAAEK,KACIzC,EAAKsd,OAAOuB,OAGZzc,CACV,GAER,CAwEA,SAAS6W,EAAeI,EAASpgB,GAC7B,OAAO,IAAI/D,SAAQ,CAACC,EAASikB,KACzB,GAAmB,MAAfngB,GAAuBA,EAAYyhB,QAEnC,YADAtB,EAAOngB,EAAY4lB,QAGvB,IAAIkgQ,EAAgBzlQ,WAAWnkB,EAASkkB,GACrB,MAAfpgB,GACAA,EAAYsgB,iBAAiB,SAAS,KACb,MAAjBwlQ,GACAvlQ,aAAaulQ,GACjBA,EAAgB,KAChB3lQ,EAAOngB,EAAY4lB,OAAO,GAElC,GAER,CASA,SAASrB,EAAcnE,EAAS2lQ,EAAa/lR,GACzC,GAAe,MAAXogB,EACA,OAAOpgB,EACX,MAAMklB,EAAkB,IAAIsiC,gBACtBs+N,EAAgBzlQ,YAAW,IAAM6E,EAAgBI,MAAMygQ,GAAe,IAAItqR,MAAM,eAAe2kB,GAOrG,OANmB,MAAfpgB,GACAA,EAAYsgB,iBAAiB,SAAS,KAClCC,aAAaulQ,GACb5gQ,EAAgBI,MAAMtlB,EAAY4lB,OAAO,IAG1CV,EAAgBb,MAC3B,CAnNA3sB,EAAQ6vL,WAnBR,SAAoB3iK,GAChB,OAAO,IAAI3oB,SAAQ,CAACC,EAASikB,KACzB,IAAI6lQ,EAAc,EAClB,MAAMC,EAAgBlkR,MAAM6iB,EAASnrB,QACrCmrB,EAASje,SAAQ,CAACsa,EAASuX,KACvBvX,EAAQrgB,MAAM2F,IACK,MAAXrK,GACAA,EAAQqK,GACZrK,EAAU,IAAI,IACfse,OAAMgH,IACLykQ,EAAcztP,GAAShX,EACvBwkQ,IACIA,IAAgBphQ,EAASnrB,QACzB0mB,EAAO8lQ,EACX,GACF,GACJ,GAEV,EAgBAvuR,EAAQ2uB,UAPR,SAAmB7f,EAAK0/Q,GACpB,MAAMxgQ,EAAO,CAAC,EACd,IAAK,IAAI9jB,KAAO4E,EACZkf,EAAK9jB,GAAOskR,EAAW1/Q,EAAI5E,GAAMA,GAErC,OAAO8jB,CACX,EAgBAhuB,EAAQguR,WARR,SAAoBplR,EAAK4lR,GACrB,MAAMt2Q,EAAM7N,MAAMzB,EAAIwhB,MACtB,IAAIwqN,EAAU,EACd,IAAK,IAAIl3D,KAAS90K,EAAIqnJ,UAClB/3I,EAAI08N,KAAa45C,EAAW9wG,EAAM,GAAIA,EAAM,IAEhD,OAAOxlK,CACX,EAeAlY,EAAQytB,sBARR,SAA+BnlB,GAC3B,MAAMypH,EAAmB,IAAIjiE,gBAK7B,OAJmB,MAAfxnD,IACAA,EAAYylB,iBACZzlB,EAAYiyP,QAAU,IAAMxoI,EAAiBnkG,MAAMtlB,EAAY4lB,SAE5D6jG,CACX,EAuCA/xH,EAAQujB,eAxBRhU,eAA8Bia,EAAMC,EAAaC,EAAcphB,IAC3DmhB,EAAcA,GAAe,CAAC,GAClBE,WAAaF,EAAYE,YAAc,EACnDF,EAAYG,MAAQH,EAAYG,OAAS,IACzCH,EAAYI,YAAyC,MAA3BJ,EAAYI,aAA6BJ,EAAYI,YAC/E,IAAIC,EAAM,KACV,IAAK,IAAI5e,EAAI,EAAGA,EAAIue,EAAYE,WAAYze,IAAK,CAC7C,IACI,aAAase,EAAKte,EACtB,CACA,MAAOuG,GACH,GAAoB,MAAhBiY,GAAwBwkQ,EAAWz8Q,EAAGiY,GACtC,MAAMjY,EACVqY,EAAMrY,EACNsQ,EAAOkH,KAAK,0CAA4C/d,EAAGuG,EAC/D,CACA,GAAmB,MAAfnJ,GAAuBA,EAAYyhB,QACnC,MAAOzhB,EAAY4lB,QAAU,IAAInqB,MAAM,WACvCmH,IAAMue,EAAYE,WAAa,SACzBrB,EAAemB,EAAYI,YAAcJ,EAAYG,MAAQtgB,KAAK8O,IAAI,EAAGlN,GAAKue,EAAYG,MAAOthB,EAE/G,CACA,MAAMwhB,CACV,EAsBA9pB,EAAQ2vL,iBAAmBA,EAkC3B3vL,EAAQi+G,QAzBR1uG,eAAuBkd,EAAK/D,EAASpgB,GAAkC,IAArBmmR,EAAW3sR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACzD,MAAMuN,EAAO,CACTgd,OAAQ,MACR3D,UACAiE,OAAQrkB,GAENurB,QAAiB87J,EAAiBljK,EAAKpd,GAC7C,GAAwB,MAApBwkB,EAASzF,OAAgB,CACzB,IAAIJ,EACJ,IACIA,QAAa6F,EAASvF,MAC1B,CACA,MAAO7c,GACH,MAAM,IAAIma,EAAe2C,aAAasF,EAASrF,WAAYqF,EAASzF,OACxE,CACA,GAAIqgQ,EACA,IACI,OAAO5gQ,KAAKwE,MAAMrE,EACtB,CACA,MAAOvc,GAAK,CAEhB,MAAMma,EAAe2C,aAAa8D,MAAMrE,EAAM6F,EAASzF,OAC3D,CACA,aAAayF,EAASnF,MAC1B,EA+BA1uB,EAAQytH,SArBRl+G,eAAwBkd,EAAKN,EAAMzD,EAASpgB,GACxC,MAAM+G,EAAO,CACTgd,OAAQ,OACR3D,UACAyD,KAAM0B,KAAKC,UAAU3B,GACrBI,QAAS,CAAE,eAAgB,oBAC3BI,OAAQrkB,GAENurB,EAAsB,MAAXnL,QAAwBuF,MAAMxB,EAAKpd,SAAcsgL,EAAiBljK,EAAKpd,GACxF,GAAwB,MAApBwkB,EAASzF,OAAgB,CACzB,IAAIJ,EACJ,IACIA,QAAa6F,EAASvF,MAC1B,CACA,MAAO7c,GACH,MAAM,IAAIma,EAAe2C,aAAasF,EAASrF,WAAYqF,EAASzF,OACxE,CACA,MAAMxC,EAAe2C,aAAa8D,MAAMrE,EAAM6F,EAASzF,OAC3D,CACA,aAAayF,EAASnF,MAC1B,EAyBA1uB,EAAQsoB,eAAiBA,EAqBzBtoB,EAAQ6sB,cAAgBA,EAIxB7sB,EAAQ+tR,UAHR,SAAmBp9Q,EAAGS,GAClB,OAAOT,EAAIS,EAAIA,EAAIT,CACvB,EAKA3Q,EAAQ8tR,UAHR,SAAmBn9Q,EAAGS,GAClB,OAAOA,EAAIT,EAAIS,EAAIT,CACvB,EAKA3Q,EAAQ6tR,cAHR,SAAuBl9Q,EAAGS,GACtB,OAAOT,EAAIS,EAAI,EAAIT,IAAMS,EAAI,GAAK,CACtC,EAoBApR,EAAQg3D,eAlBR,SAAwBzjC,EAAS3sB,GAC7B,MAAMu2B,GAAe,EAAI53B,EAAag8G,SAAShuF,GAAS5T,OAAO/Y,GAC/D,OAAQu2B,EAAat1B,MACjB,IAAK,MACL,IAAK,KACL,IAAK,OACL,IAAK,MACD,OAAOpE,EAASgB,OAAOC,KAAKa,EAAayzD,UAAU34C,OAAO,CACtDxY,KAAMs1B,EAAat1B,KACnB/C,KAAMq4B,EAAar4B,QAE3B,IAAK,KACD,OAAOrB,EAASgB,OAAOC,KAAKa,EAAayzD,UAAU34C,OAAO,CACtDxY,KAAM,KACNmY,OAAQmd,EAAand,UAGrC,8BC/SA9c,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,6OCyCtDpD,EAAAA,UAAAwgH,EAyCAxgH,EAAAA,QAAA,SAAwB05D,GAAiD,IAAnCg1N,EAAU5sR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAG6sR,IAAY7sR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAChE,GAAkB,kBAAP43D,EAAiB,OAAOA,EACnC,IAAI,EAAA/pC,EAAA+xB,SAAQgY,GACV,IACE,MAAM7qD,EAAM2xG,EAAUkuK,EAAYC,GAAchvQ,OAAO+5C,GACvD,GAAI7qD,EAAMwgB,OAAOjf,iBAAkB,OACnC,OAAOif,OAAOxgB,EAChB,CAAE,MAAO4C,GACP,MACF,CAEF,MACF,EA/FA,MAAAmB,EAAA5R,EAAA,OACA2uB,EAAA3uB,EAAA,OAKA,IAAYo/G,EAoCZ,SAAgBI,IAA8C,IAApCkuK,EAAU5sR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAG6sR,EAAY7sR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACpD,OAAO8Q,EAAEujB,KAAK,CACZo6H,aAAcA,CAAC1uH,EAAaz+B,KAC1B,GAAc,KAAVA,EAAc,OAClB,MAAMyhC,EAAMzhC,EAAQ,EACdyL,EAAMjJ,OAAOxC,GACb40F,EAAO,GACb,IAAK,IAAIt9E,EAAMmqB,GAAOh2B,EAAMA,EAAK6L,EAAKA,IAAQ,GAAIs9E,EAAKxwF,KAAK6nB,OAAa,MAAN3U,IAC/Ds9E,EAAKA,EAAKj2F,OAAS,IAAM,IAAMi2F,EAAKxwF,KAAKq9B,EAAM,IAAO,GACjDA,IAAKmzD,EAAKA,EAAKj2F,OAAS,IAAM,KACvC8/B,EAAEwc,MAAM,IAAI7tB,WAAWwnE,GAAM,EAE/Bw4D,aAAez/I,IACb,MAAMsB,EAAMtB,EAAE0gJ,UACd,GAAIp/I,EAAMq8Q,EACR,MAAM,IAAI3qR,MAAM,sBAAsBsO,wBAA0Bq8Q,KAClE,GAAY,IAARr8Q,EAAW,OAAO,GACtB,GAAIs8Q,EAAc,CAChB,MAAM9qR,EAAOkN,EAAEstC,MAAMhsC,GAAK,GAE1B,GAAuC,KAAV,IAAxBxO,EAAKA,EAAK9B,OAAS,MAElBsQ,GAAO,GAAwC,KAAV,IAAxBxO,EAAKA,EAAK9B,OAAS,KAClC,MAAM,IAAIgC,MAAM,kCAEtB,CACA,IAAImyB,EAAO,EACPpE,EAAM,GACV,IAAK,IAAI5mB,EAAI,EAAGA,EAAImH,IAAOnH,EACzBgrB,EAAOnlB,EAAE0e,OACTqC,GAAOlsB,OAAOswB,IAAU,GAAKtwB,OAAOsF,GAMtC,OAJIgrB,GAAQ,MACVpE,GAAQ,IAAMlsB,OAAa,EAANyM,GAAW,IAAO,GACvCyf,GAAOA,GAEFA,CAAG,GAGhB,CA9Ea9xB,EAAAA,uBAAyB,IAGtC,SAAYogH,GACVA,EAAAA,EAAA,eAAaA,EAAAA,EAAA,0BAAkBA,EAAAA,EAAA,0BAAWA,EAAAA,EAAA,0BAAWA,EAAAA,EAAA,yBACrDA,EAAAA,EAAA,wBACAA,EAAAA,EAAA,gBAAMA,EAAAA,EAAA,gBAAMA,EAAAA,EAAA,gBAAMA,EAAAA,EAAA,gBAAMA,EAAAA,EAAA,gBAAMA,EAAAA,EAAA,gBAAMA,EAAAA,EAAA,gBAAMA,EAAAA,EAAA,gBAC1CA,EAAAA,EAAA,gBAAMA,EAAAA,EAAA,kBAAOA,EAAAA,EAAA,kBAAOA,EAAAA,EAAA,kBAAOA,EAAAA,EAAA,kBAAOA,EAAAA,EAAA,kBAAOA,EAAAA,EAAA,kBAAOA,EAAAA,EAAA,kBAEhDA,EAAAA,EAAA,cAAKA,EAAAA,EAAA,cAAKA,EAAAA,EAAA,YAAIA,EAAAA,EAAA,mBAAOA,EAAAA,EAAA,mBAAOA,EAAAA,EAAA,yBAAUA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,mBAAOA,EAAAA,EAAA,qBAAQA,EAAAA,EAAA,qBAE3DA,EAAAA,EAAA,6BAAYA,EAAAA,EAAA,iCAAcA,EAAAA,EAAA,sBAASA,EAAAA,EAAA,oBAAQA,EAAAA,EAAA,oBAAQA,EAAAA,EAAA,sBAASA,EAAAA,EAAA,oBAAQA,EAAAA,EAAA,sBACpEA,EAAAA,EAAA,mBAAOA,EAAAA,EAAA,mBAAOA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,iBAE3DA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,qBAAQA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,mBAAOA,EAAAA,EAAA,iBAE1BA,EAAAA,EAAA,qBAAQA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,aAAIA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,mBAAOA,EAAAA,EAAA,+BAAaA,EAAAA,EAAA,2BAAWA,EAAAA,EAAA,2BAErDA,EAAAA,EAAA,oBAAQA,EAAAA,EAAA,oBAAQA,EAAAA,EAAA,oBAAQA,EAAAA,EAAA,oBACxBA,EAAAA,EAAA,qBAAQA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,8BAClBA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,qBAAQA,EAAAA,EAAA,qBAAQA,EAAAA,EAAA,uBAASA,EAAAA,EAAA,qBAClDA,EAAAA,EAAA,yBAAUA,EAAAA,EAAA,qCAAgBA,EAAAA,EAAA,+BAAaA,EAAAA,EAAA,yBAAUA,EAAAA,EAAA,+BACjDA,EAAAA,EAAA,uCAAiBA,EAAAA,EAAA,6CAAoBA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,eAAKA,EAAAA,EAAA,qBAE/CA,EAAAA,EAAA,2BAAWA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,qBAAQA,EAAAA,EAAA,uBAASA,EAAAA,EAAA,uBAASA,EAAAA,EAAA,mCAC3CA,EAAAA,EAAA,yBAAUA,EAAAA,EAAA,qCAAgBA,EAAAA,EAAA,mCAAeA,EAAAA,EAAA,+CAEzCA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,+CAAqBA,EAAAA,EAAA,+CAAqBA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,iBAAMA,EAAAA,EAAA,mBAEpFA,EAAAA,EAAA,+BAEAA,EAAAA,EAAA,sBACD,CA7BD,CAAYA,IAAEpgH,EAAAA,GAAFogH,EAAE,KAoGDpgH,EAAAA,OAAkC4S,EAAEujB,KAAK,CACpDo6H,aAAcA,CAAC1uH,EAAaz+B,KAC1B,IAAK,IAAIgjC,KAAKhjC,EAAO,CACnB,GAAiB,kBAANgjC,EAAgB,CACzB,QAAcpkC,IAAVo+G,EAAGh6E,GAAkB,MAAM,IAAIriC,MAAM,kBAAkBqiC,KAC3DvE,EAAEpS,KAAK2wF,EAAGh6E,IACV,QACF,CAAO,GAAiB,kBAANA,EAAgB,CAChC,GAAU,IAANA,EAAY,CACdvE,EAAEpS,KAAK,GACP,QACF,CAAO,GAAI,GAAK2W,GAAKA,GAAK,GAAI,CAC5BvE,EAAEpS,KAAK2wF,EAAGwuK,KAAO,EAAIxoP,GACrB,QACF,CACF,CAGA,GADiB,kBAANA,IAAgBA,EAAIo6E,IAAYngG,OAAOza,OAAOwgC,OACpD,EAAAzW,EAAA+xB,SAAQtb,GAAI,MAAM,IAAIriC,MAAM,mBAAmBqiC,aAAaA,MAEjE,MAAM/zB,EAAM+zB,EAAErkC,OACVsQ,EAAM+tG,EAAGyuK,UAAWhtP,EAAEpS,KAAKpd,GACtBA,GAAO,KACdwvB,EAAEpS,KAAK2wF,EAAGyuK,WACVhtP,EAAEpS,KAAKpd,IACEA,GAAO,OAChBwvB,EAAEpS,KAAK2wF,EAAG0uK,WACVjtP,EAAEwc,MAAMzrC,EAAEm8Q,MAAM1uQ,OAAOhO,MAEvBwvB,EAAEpS,KAAK2wF,EAAG4uK,WACVntP,EAAEwc,MAAMzrC,EAAE+sD,MAAMt/C,OAAOhO,KAEzBwvB,EAAEwc,MAAMjY,EACV,GAEFoqH,aAAez/I,IACb,MAAM9J,EAAkB,GACxB,MAAQ8J,EAAEygJ,SAAS,CACjB,MAAMzjJ,EAAMgD,EAAE0e,OAEd,GAAI2wF,EAAG6uK,KAAOlhR,GAAOA,GAAOqyG,EAAG4uK,UAAW,CACxC,IAAI38Q,EACJ,GAAItE,EAAMqyG,EAAGyuK,UAAWx8Q,EAAMtE,OACzB,GAAIA,IAAQqyG,EAAGyuK,UAAWx8Q,EAAMO,EAAE0+M,GAAG9gE,aAAaz/I,QAClD,GAAIhD,IAAQqyG,EAAG0uK,UAAWz8Q,EAAMO,EAAEm8Q,MAAMv+H,aAAaz/I,OACrD,IAAIhD,IAAQqyG,EAAG4uK,UACf,MAAM,IAAIjrR,MAAM,0BADUsO,EAAMO,EAAE+sD,MAAM6wF,aAAaz/I,EACZ,CAC9C9J,EAAIO,KAAKuJ,EAAEstC,MAAMhsC,GACnB,MAAO,GAAY,IAARtE,EACT9G,EAAIO,KAAK,QACJ,GAAI44G,EAAGwuK,MAAQ7gR,GAAOA,GAAOqyG,EAAG8uK,MACrCjoR,EAAIO,KAAKuG,GAAOqyG,EAAGwuK,KAAO,QACrB,CACL,MAAMl1N,EAAK0mD,EAAGryG,GACd,QAAW/L,IAAP03D,EAAkB,MAAM,IAAI31D,MAAM,kBAAkBgK,EAAIpJ,SAAS,OACrEsC,EAAIO,KAAKkyD,EACX,CACF,CACA,OAAOzyD,CAAG,IAMd,MAAMkoR,EAA6D,CACjE,IAAM,CAAC,IAAM,EAAG,KAAM,QACtB,IAAM,CAAC,IAAM,EAAG,OAAQ,aACxB,IAAM,CAAC,IAAM,EAAG,YAAa,wBAElBnvR,EAAAA,YAAmC4S,EAAEujB,KAAK,CACrDo6H,aAAcA,CAAC1uH,EAAaz+B,KAE1B,GADqB,kBAAVA,IAAoBA,EAAQwC,OAAOxC,IAC1C,IAAMA,GAASA,GAAS,KAAM,OAAOy+B,EAAEpS,KAAKJ,OAAOjsB,IACvD,IAAK,MAAOwtJ,EAAMvyG,EAAOjvC,EAAOI,KAAStM,OAAO+jB,OAAOkoQ,GACrD,KAAI//Q,EAAQhM,GAASA,EAAQoM,GAA7B,CACAqyB,EAAEpS,KAAKmhI,GACP,IAAK,IAAI1lJ,EAAI,EAAGA,EAAImzC,EAAOnzC,IAAK22B,EAAEpS,KAAKJ,OAAQjsB,GAAU,GAAKwC,OAAOsF,GAAO,QAC5E,MAH2C,CAK7C,MAAM22B,EAAE/X,IAAI,mBAAmB1mB,IAAQ,EAEzCotJ,aAAez/I,IACb,MAAMo3B,EAAKp3B,EAAE0e,OACb,GAAI0Y,GAAM,IAAM,OAAOviC,OAAOuiC,GAC9B,MAAOxI,EAAG0e,EAAOjvC,GAAS+/Q,EAAShnP,GACnC,IAAI9G,EAAM,GACV,IAAK,IAAIn2B,EAAI,EAAGA,EAAImzC,EAAOnzC,IAAKm2B,GAAOz7B,OAAOmL,EAAE0e,SAAY,GAAK7pB,OAAOsF,GACxE,GAAIm2B,EAAMjyB,EAAO,MAAM2B,EAAE+Y,IAAI,qBAAqB,EAAIu0B,MACtD,OAAOhd,CAAG,IAKDrhC,EAAAA,eAAsC4S,EAAE2kE,MAAMv3E,EAAAkgH,YAAattG,EAAEijJ,OAAOX,cAGpEl1J,EAAAA,SAAoC4S,EAAEyrC,MAAMr+C,EAAAkgH,aAG5ClgH,EAAAA,WAAwC4S,EAAEmqF,MAAM/8F,EAAAixN,eAAgBjxN,EAAA0xN,UAGhE1xN,EAAAA,SAAeyc,GAAwC7J,EAAEmqF,MAAM/8F,EAAAkgH,YAAazjG,GAE5Ezc,EAAAA,SAAW4S,EAAEgN,OAAO,CAC/Bs3C,KAAMtkD,EAAEyrC,MAAM,IAAI,GAClBvd,MAAOluB,EAAE+sD,MACTgzJ,eAAgB3yN,EAAA0xN,SAChB3rN,SAAU6M,EAAE+sD,QAGD3/D,EAAAA,UAAY4S,EAAEgN,OAAO,CAAEle,OAAQkR,EAAEw2Q,MAAO7hR,OAAQvH,EAAA0xN,WAG7D,MAAM09D,EAASx8Q,EAAEgN,OAAO,CACtB+sC,QAAS/5C,EAAEm2Q,MACXjB,WAAYl1Q,EAAEg+I,KAAK,IAAIpgI,WAAW,CAAC,EAAM,KACzCyM,QAAQ,EAAAj9B,EAAAqvR,UAASrvR,EAAAsvR,UACjBxyP,SAAS,EAAA98B,EAAAqvR,UAASrvR,EAAAuyN,WAClBq0D,UAAWh0Q,EAAE28Q,QAAQ,aAAc38Q,EAAEmqF,MAAM,gBAAiB/8F,EAAAsgH,aAI5Dz6G,SAAU+M,EAAE+sD,QAQD3/D,EAAAA,MAAuB4S,EAAE2hI,SAAS66I,GAL/C,SAAuBroR,GACrB,GAAIA,EAAG+gR,YAAc/gR,EAAG6/Q,YAAc7/Q,EAAG6/Q,UAAU7kR,OACjD,MAAM,IAAIgC,MAAM,0CAClB,OAAOgD,CACT,IAGa/G,EAAAA,SAAW4S,EAAEgN,OAAO,CAC/B+sC,QAAS/5C,EAAEm2Q,MACX9rP,QAAQ,EAAAj9B,EAAAqvR,UAASrvR,EAAAsvR,UACjBxyP,SAAS,EAAA98B,EAAAqvR,UAASrvR,EAAAuyN,WAClB1sN,SAAU+M,EAAE+sD,mDC7Od,SAAS6vN,EAAQ/+Q,GACf,IAAK4e,OAAOivC,cAAc7tD,IAAMA,EAAI,EAAG,MAAM,IAAI1M,MAAM,kCAAoC0M,EAC7F,CAQA,SAASi1C,EAAOt0C,GACd,MANeT,EAMFS,aALOof,YAAemO,YAAYC,OAAOjuB,IAA6B,eAAvBA,EAAExC,YAAY2D,MAKzD,MAAM,IAAI/N,MAAM,uBAAuB,IAN1D,IAAiB4M,EAMyCxG,EAAArI,UAAAC,OADZslD,EAAiB,IAAAh9C,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAjB+8C,EAAiB/8C,EAAA,GAAAxI,UAAAwI,GAE7D,GAAI+8C,EAAQtlD,OAAS,IAAMslD,EAAQrH,SAAS5uC,EAAErP,QAC5C,MAAM,IAAIgC,MAAM,iCAAmCsjD,EAAU,gBAAkBj2C,EAAErP,OACrF,CAWA,SAAS09Q,EAAM/tP,GACb,GAAiB,oBAANA,GAAwC,oBAAbA,EAAE9nB,OACtC,MAAM,IAAI7F,MAAM,mDAClByrR,EAAQ99P,EAAEzB,WACVu/P,EAAQ99P,EAAE1B,SACZ,CAGA,SAAS05I,EAAQlK,GAAmC,IAApBy9E,IAAan7O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC3C,GAAI09J,EAASlvI,UAAW,MAAM,IAAIvsB,MAAM,oCACxC,GAAIk5O,GAAiBz9E,EAASpvI,SAAU,MAAM,IAAIrsB,MAAM,wCAC1D,CAGA,SAAS4lK,EAAQ1iK,EAAUu4J,GACzB95G,EAAOz+C,GACP,MAAM2K,EAAM4tJ,EAASvvI,UACrB,GAAIhpB,EAAIlF,OAAS6P,EACf,MAAM,IAAI7N,MAAM,yDAA2D6N,EAE/E,mFClDA1O,OAAOC,eAAenD,EAAS,aAAc,CAAEoD,OAAO,IACtDpD,EAAQyvR,cAAW,EAyBnBzvR,EAAQyvR,SAxBR,MACIthR,WAAAA,GACIjO,KAAKwvR,WAAa,EAClBxvR,KAAKyvR,UAAY,CACrB,CACAhtE,IAAAA,CAAKitE,GACD,GAAI1vR,KAAKohN,WACL,OAAO,KAEXphN,KAAKwvR,WAAa3iQ,KAAKC,MAA0B,IAAjB4iQ,EAChC1vR,KAAKyvR,YACL,MAAMA,EAAYzvR,KAAKyvR,UACvB,MAAO,IACCzvR,KAAKyvR,YAAcA,IAGvBzvR,KAAKwvR,WAAa,GACX,EAEf,CACApuE,QAAAA,GACI,OAAOphN,KAAKwvR,WAAa3iQ,KAAKC,KAClC,4aCxBJ,MAAAjsB,EAAAC,EAAA,OACAE,EAAAF,EAAA,OACA42Q,EAAA52Q,EAAA,OACAw5C,EAAAx5C,EAAA,OAgBAhB,EAAAA,WAAA,SACIoB,EACAC,EACA47K,EACAE,EACAx7K,GAG4B,IAF5BmC,EAAOhC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGf,EAAA0iK,QAAQ3lE,WAClB77F,EAA+BH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC/BE,EAASJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGZ,EAAA2xB,0DAEZ,MAAMqoB,QAAiB,EAAAV,EAAAq1O,oCAAmCzuR,GAEpDmB,GAAc,IAAIxB,EAAAyB,aAAcC,IAClC1B,EAAA26B,cAAckf,cAAc,CACxBI,WAAY35C,EAAMwD,UAClBw2C,iBAAkBv3C,EAAQe,UAC1By2C,MAAOd,EAAAsiM,UACP5hM,WACAh5C,eAEJ,EAAA01Q,EAAAkY,kCAAiChsR,EAAQe,UAAWlD,EAAUs7K,EAAeE,EAAiBj7K,IAKlG,aAFM,EAAAnB,EAAA4B,2BAA0BvB,EAAYmB,EAAa,CAAClB,EAAOyC,GAAU7B,GAEpE6B,EAAQe,SACnB,sBC9CA,MAAMqlI,EAAQlpI,EAAQ,OAIhB+uR,EAAU7lJ,EAAM+jB,YAFT,MAcbjuJ,EAAQgrI,eAAiB,SAAyB7e,EAAsBt9E,GACtE,MAAMhrC,EAASsoH,EAAqBtmF,KAAO,EAAKgJ,EAChD,IAAIp5B,EAAI5R,GAAQ,GAEhB,KAAOqmI,EAAM+jB,YAAYx4I,GAAKs6Q,GAAW,GACvCt6Q,GAnBS,MAmBKy0H,EAAM+jB,YAAYx4I,GAAKs6Q,EAMvC,OAxBgB,OAwBPlsR,GAAQ,GAAM4R,EACzB,giBC3BA,MAAAud,EAAAhyB,EAAA,OAEAiyB,EAAAjyB,EAAA,OAGahB,EAAAA,YAAc,UACzB,MAAMkzB,QAAiB,EAAAD,EAAAE,oBAAmBrR,EAAQsR,cAE5C,QAAExsB,EAAO,QAAEunB,GAAYrM,EAAQwQ,QACrC,IAAK1rB,EACH,MAAM,IAAI7C,MAAM,4CAElB,IAAKoqB,EACH,MAAM,IAAIpqB,MAAM,sCAGlB,IACE,MAAM4vB,GAAU,EAAAX,EAAAY,sBAAqB9R,EAAQwQ,SACvCuB,QAAiBX,EAASmwD,YAAY1vD,GAC5C7R,EAAQiS,WAAWF,GACnB,MAAO9Q,GACP+F,QAAQ/F,MAAM,8CAA+CA,GAC7DjB,EAAQkS,eAIZtkB,EAAA1O,EAAA,OAAAhB,qBC3BA,SAAUgwR,GACV,aAQA,IAAIC,EAAK,SAAS5gR,GAChB,IAAInE,EAAG6F,EAAI,IAAIm/Q,aAAa,IAC5B,GAAI7gR,EAAM,IAAKnE,EAAI,EAAGA,EAAImE,EAAKtN,OAAQmJ,IAAK6F,EAAE7F,GAAKmE,EAAKnE,GACxD,OAAO6F,CACT,EAGIo/Q,EAAc,WAAuB,MAAM,IAAIpsR,MAAM,UAAY,EAEjEuhI,EAAK,IAAI90G,WAAW,IACpBw1G,EAAK,IAAIx1G,WAAW,IAAKw1G,EAAG,GAAK,EAErC,IAAIoqJ,EAAMH,IACNI,EAAMJ,EAAG,CAAC,IACVK,EAAUL,EAAG,CAAC,MAAQ,IACtBr/O,EAAIq/O,EAAG,CAAC,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,IAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAChIM,EAAKN,EAAG,CAAC,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,IAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,OACjIljM,EAAIkjM,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAChIjuE,EAAIiuE,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAChI7lO,EAAI6lO,EAAG,CAAC,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,IAAQ,MAAQ,MAAQ,MAAQ,KAAQ,QAEpI,SAASO,EAAKt/Q,EAAGhG,EAAGwmB,EAAGhgB,GACrBR,EAAEhG,GAAQwmB,GAAK,GAAM,IACrBxgB,EAAEhG,EAAE,GAAMwmB,GAAK,GAAM,IACrBxgB,EAAEhG,EAAE,GAAMwmB,GAAM,EAAK,IACrBxgB,EAAEhG,EAAE,GAAS,IAAJwmB,EACTxgB,EAAEhG,EAAE,GAAMwG,GAAK,GAAO,IACtBR,EAAEhG,EAAE,GAAMwG,GAAK,GAAO,IACtBR,EAAEhG,EAAE,GAAMwG,GAAM,EAAM,IACtBR,EAAEhG,EAAE,GAAS,IAAJwG,CACX,CAEA,SAAS++Q,EAAGv/Q,EAAGyI,EAAIxI,EAAGu/Q,EAAIjgR,GACxB,IAAIvF,EAAEuK,EAAI,EACV,IAAKvK,EAAI,EAAGA,EAAIuF,EAAGvF,IAAKuK,GAAKvE,EAAEyI,EAAGzO,GAAGiG,EAAEu/Q,EAAGxlR,GAC1C,OAAQ,EAAMuK,EAAI,IAAO,GAAM,CACjC,CAEA,SAASk7Q,EAAiBz/Q,EAAGyI,EAAIxI,EAAGu/Q,GAClC,OAAOD,EAAGv/Q,EAAEyI,EAAGxI,EAAEu/Q,EAAG,GACtB,CAEA,SAASE,EAAiB1/Q,EAAGyI,EAAIxI,EAAGu/Q,GAClC,OAAOD,EAAGv/Q,EAAEyI,EAAGxI,EAAEu/Q,EAAG,GACtB,CA4UA,SAASG,EAAoB5pR,EAAIytN,EAAIljN,EAAEF,IA1UvC,SAAsB80B,EAAG3vB,EAAGjF,EAAGF,GAsB7B,IArBA,IAmBemkC,EAnBXq7O,EAAc,IAARx/Q,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9Ey/Q,EAAc,IAARv/Q,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9Ew/Q,EAAc,IAARx/Q,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9Ey/Q,EAAc,IAARz/Q,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9E0/Q,EAAc,IAAR1/Q,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9E2/Q,EAAc,IAAR7/Q,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9E8/Q,EAAc,IAAR36Q,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9E46Q,EAAc,IAAR56Q,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9E66Q,EAAc,IAAR76Q,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9E86Q,EAAc,IAAR96Q,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9E+6Q,EAAc,IAARlgR,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EmgR,EAAc,IAARjgR,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EkgR,EAAc,IAARlgR,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EmgR,EAAc,IAARngR,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EogR,EAAc,IAARpgR,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EqgR,EAAc,IAARvgR,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAE9EwgR,EAAKhB,EAAIz/O,EAAK0/O,EAAIz/O,EAAK0/O,EAAI9pO,EAAK+pO,EAAIc,EAAKb,EAAIc,EAAKb,EAAIc,EAAKb,EAAIc,EAAKb,EACpEc,EAAKb,EAAIc,EAAKb,EAAIc,EAAMb,EAAKc,EAAMb,EAAKc,EAAMb,EAAKc,EAAMb,EAAKc,EAAMb,EACpEc,EAAMb,EAED3mR,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAQ3B4mR,IADAr8O,GADA88O,IADA98O,GADA08O,IADA18O,GADAs8O,IADAt8O,EAAIq8O,EAAKS,EAAM,IACN,EAAI98O,IAAK,IACTq8O,EAAK,IACL,EAAIr8O,IAAK,IACTs8O,EAAK,IACJ,GAAKt8O,IAAK,IACV08O,EAAK,IACN,GAAK18O,IAAK,GASnBu8O,IADAv8O,GADApE,IADAoE,GADA+8O,IADA/8O,GADA28O,IADA38O,EAAIu8O,EAAK3gP,EAAK,IACL,EAAIoE,IAAK,IACTu8O,EAAK,IACJ,EAAIv8O,IAAK,IACT28O,EAAK,IACN,GAAK38O,IAAK,IACV+8O,EAAM,IACN,GAAK/8O,IAAK,GASnB48O,IADA58O,GADAw8O,IADAx8O,GADAnE,IADAmE,GADAg9O,IADAh9O,EAAI48O,EAAMJ,EAAK,IACL,EAAIx8O,IAAK,IACT48O,EAAM,IACP,EAAI58O,IAAK,IACTg9O,EAAM,IACN,GAAKh9O,IAAK,IACVnE,EAAK,IACJ,GAAKmE,IAAK,GASpBi9O,IADAj9O,GADA68O,IADA78O,GADAy8O,IADAz8O,GADAyR,IADAzR,EAAIi9O,EAAMJ,EAAM,IACP,EAAI78O,IAAK,IACTi9O,EAAM,IACN,EAAIj9O,IAAK,IACTyR,EAAK,IACJ,GAAKzR,IAAK,IACVy8O,EAAK,IACL,GAAKz8O,IAAK,GASpBq8O,IADAr8O,GADAyR,IADAzR,GADAnE,IADAmE,GADApE,IADAoE,EAAIq8O,EAAK5qO,EAAK,IACL,EAAIzR,IAAK,IACTq8O,EAAK,IACL,EAAIr8O,IAAK,IACTpE,EAAK,IACL,GAAKoE,IAAK,IACVnE,EAAK,IACL,GAAKmE,IAAK,GASnBu8O,IADAv8O,GADAs8O,IADAt8O,GADAy8O,IADAz8O,GADAw8O,IADAx8O,EAAIu8O,EAAKD,EAAK,IACL,EAAIt8O,IAAK,IACTu8O,EAAK,IACL,EAAIv8O,IAAK,IACTw8O,EAAK,IACL,GAAKx8O,IAAK,IACVy8O,EAAK,IACL,GAAKz8O,IAAK,GASnB48O,IADA58O,GADA28O,IADA38O,GADA08O,IADA18O,GADA68O,IADA78O,EAAI48O,EAAMD,EAAK,IACL,EAAI38O,IAAK,IACT48O,EAAM,IACP,EAAI58O,IAAK,IACT68O,EAAM,IACN,GAAK78O,IAAK,IACV08O,EAAK,IACJ,GAAK18O,IAAK,GASpBi9O,IADAj9O,GADAg9O,IADAh9O,GADA+8O,IADA/8O,GADA88O,IADA98O,EAAIi9O,EAAMD,EAAM,IACN,EAAIh9O,IAAK,IACTi9O,EAAM,IACN,EAAIj9O,IAAK,IAC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","sources":["../node_modules/react-icons-kit/fa/exchange.js","../node_modules/pako/lib/zlib/zstream.js","../node_modules/@solana/spl-token/src/extensions/transferFee/actions.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/modules/SolanaSignatures.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/providers/abstract/ExchangePriceProvider.js","../node_modules/@solana/spl-token/src/actions/internal.ts","../node_modules/@noble/curves/src/_shortw_utils.ts","../node_modules/qrcode/lib/core/numeric-data.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/SwapWithSigner.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/constants.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/modules/ERC20Abi.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/permuteDomain.js","../node_modules/@atomiqlabs/sdk-lib/dist/events/UnifiedSwapEventListener.js","../node_modules/@solana/spl-token/src/index.ts","../node_modules/bignumber.js/bignumber.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/EscrowManagerAbi.js","../node_modules/@solana/spl-token/src/instructions/initializeMintCloseAuthority.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/SolanaChains.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/ISwapWrapper.js","../node_modules/@atomiqlabs/chain-solana/dist/utils/Utils.js","../node_modules/react-icons-kit/md/ic_gavel_outline.js","../node_modules/@atomiqlabs/sdk-lib/dist/utils/paramcoders/client/StreamingFetchPromise.js","../node_modules/@atomiqlabs/base/dist/utils/BigIntBufferUtils.js","../node_modules/starknet/node_modules/@noble/hashes/src/_md.ts","../decode.ts","../node_modules/@solana/spl-token/src/instructions/burn.ts","../../../src/transactions/sendBtcTransaction.ts","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/react-icons-kit/md/ic_arrow_forward.js","../node_modules/pako/lib/zlib/inflate.js","../node_modules/@solana/spl-token/src/instructions/associatedTokenAccount.ts","../node_modules/@atomiqlabs/sdk-lib/dist/btc/coinselect2/index.js","../node_modules/cipher-base/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/frombtc/IFromBTCSwap.js","../node_modules/@solana/spl-token/src/instructions/closeAccount.ts","../node_modules/react-icons-kit/md/ic_receipt_outline.js","../node_modules/ieee754/index.js","../node_modules/@solana/spl-token/src/actions/thawAccount.ts","../../../src/transactions/index.ts","../node_modules/@solana/spl-token/src/actions/createWrappedNativeAccount.ts","../node_modules/@solana/spl-token/src/extensions/interestBearingMint/instructions.ts","../node_modules/@solana/spl-token/src/actions/mintToChecked.ts","../node_modules/@noble/curves/src/abstract/weierstrass.ts","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/tobtc/IToBTCSwap.js","../node_modules/camel-case/camel-case.js","../node_modules/react-icons-kit/md/ic_check_circle_outline.js","../node_modules/react-icons-kit/fa/lock.js","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/node_modules/base-x/src/index.js","../node_modules/@solana/spl-token/src/extensions/memoTransfer/state.ts","../node_modules/jayson/lib/generateRequest.js","../node_modules/@solana/wallet-standard-features/src/signTransaction.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/handlers/claim/ClaimHandlers.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/tobtc/ln/ToBTCLNSwap.js","../node_modules/webln/lib/index.js","../node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/@atomiqlabs/sdk-lib/dist/btc/wallet/MempoolBitcoinWallet.js","../node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/pako/lib/zlib/inffast.js","../node_modules/@atomiqlabs/sdk-lib/dist/browser-storage/IndexedDBUnifiedStorage.js","../node_modules/@scure/starknet/node_modules/@noble/curves/src/abstract/poseidon.ts","../node_modules/@scure/btc-signer/src/utils.ts","../node_modules/@atomiqlabs/base/dist/swaps/SwapData.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/StarknetSwapData.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/parseDate.js","../node_modules/pako/dist/pako.esm.mjs","../node_modules/bignumber.js/bignumber.mjs","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/StarknetAction.js","../../../src/addresses/types.ts","../node_modules/@atomiqlabs/sdk-lib/dist/btc/mempool/synchronizer/MempoolBtcRelaySynchronizer.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/StarknetChainType.js","../node_modules/@solana/spl-token/src/actions/setAuthority.ts","../../../../src/wallet-api/constants.ts","../node_modules/react-icons-kit/md/ic_brightness_1.js","../node_modules/@solana/spl-token/src/actions/getOrCreateAssociatedTokenAccount.ts","../node_modules/react-icons-kit/md/ic_arrow_downward.js","../node_modules/react-icons-kit/md/ic_settings_backup_restore_outline.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/modules/SolanaBlocks.js","../node_modules/@solana/spl-token/src/instructions/burnChecked.ts","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/modules/StarknetSignatures.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/wallet/StarknetSigner.js","../node_modules/fetch-cookie/cjs/index.js","../node_modules/@atomiqlabs/base/dist/btcrelay/types/BtcStoredHeader.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/StarknetInitializer.js","../node_modules/react/cjs/react.production.min.js","../node_modules/@atomiqlabs/sdk-lib/dist/btc/mempool/MempoolBitcoinRpc.js","../node_modules/react-icons-kit/fa/angleLeft.js","../node_modules/@solana/spl-token/src/state/multisig.ts","../node_modules/@solana/spl-token/src/instructions/initializeImmutableOwner.ts","../node_modules/@solana/wallet-standard-features/src/signAndSendTransaction.ts","../node_modules/@atomiqlabs/sdk-lib/dist/index.js","../node_modules/pako/lib/zlib/crc32.js","../node_modules/no-case/vendor/camel-case-upper-regexp.js","../node_modules/@solana/spl-token/src/extensions/transferHook/instructions.ts","../node_modules/randombytes/browser.js","../node_modules/@noble/secp256k1/lib/index.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/StarknetSwapContract.js","../node_modules/@ledgerhq/errors/src/helpers.ts","../node_modules/@ledgerhq/errors/src/index.ts","../node_modules/bigint-buffer/dist/browser.js","../cryptoClients/index.ts","../node_modules/eventemitter3/index.js","../../../../src/wallet-api/index.ts","../node_modules/@solana/buffer-layout-utils/src/decimal.ts","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/@atomiqlabs/sdk-lib/dist/btc/coinselect2/blackjack.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/swaps/SolanaSwapModule.js","../node_modules/isomorphic-fetch/fetch-npm-browserify.js","../node_modules/@atomiqlabs/base/dist/events/ChainEvents.js","../node_modules/qrcode/lib/core/regex.js","../node_modules/@scure/starknet/lib/index.js","../node_modules/@atomiqlabs/chain-solana/dist/index.js","../node_modules/no-case/vendor/camel-case-regexp.js","../node_modules/react-icons-kit/md/ic_refresh.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/providers/OKXPriceProvider.js","../node_modules/starknet/node_modules/@noble/hashes/src/utils.ts","../node_modules/@scure/btc-signer/src/index.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/modules/StarknetTransactions.js","../node_modules/@noble/hashes/src/sha256.ts","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/sha.js/index.js","../node_modules/@atomiqlabs/sdk-lib/dist/utils/LNURL.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/providers/abstract/HttpPriceProvider.js","../node_modules/pako/lib/inflate.js","../node_modules/sha.js/sha384.js","../node_modules/@solana/spl-token/src/actions/index.ts","../node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/@atomiqlabs/sdk-lib/dist/intermediaries/IntermediaryAPI.js","../node_modules/invariant/browser.js","../node_modules/@solana/spl-token/src/instructions/transfer.ts","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/frombtc/onchain/FromBTCWrapper.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/utils.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/events/StarknetChainEventsBrowser.js","../node_modules/buffer-layout/lib/Layout.js","../node_modules/@solana/spl-token/src/actions/createAccount.ts","../node_modules/@solana/spl-token/src/instructions/approve.ts","../node_modules/react-icons-kit/ikons/arrows_vertical.js","../node_modules/jayson/lib/client/browser/index.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/SwapDirection.js","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/node_modules/bs58/index.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/SolanaBase.js","../node_modules/@atomiqlabs/sdk-lib/dist/btc/BitcoinRpcWithTxoListener.js","../node_modules/@atomiqlabs/sdk-lib/dist/utils/paramcoders/client/StreamParamEncoder.js","../node_modules/rpc-websockets/node_modules/eventemitter3/index.js","../node_modules/tldts-core/src/extract-hostname.ts","../node_modules/tldts-core/src/is-valid.ts","../node_modules/tldts-core/src/options.ts","../node_modules/tldts-core/src/factory.ts","../node_modules/tldts-core/src/is-ip.ts","../node_modules/tldts-core/src/domain.ts","../node_modules/tldts-core/src/subdomain.ts","../node_modules/tldts-core/src/domain-without-suffix.ts","../node_modules/tldts/src/data/trie.ts","../node_modules/tldts/src/suffix-trie.ts","../node_modules/tldts-core/src/lookup/fast-path.ts","../node_modules/tldts/index.ts","../node_modules/qrcode/lib/core/qrcode.js","../node_modules/sha.js/hash.js","../node_modules/@solana/buffer-layout-utils/src/bigint.ts","../node_modules/react-icons-kit/fa/heart.js","../node_modules/@ledgerhq/hw-transport/src/Transport.ts","../../../src/index.ts","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/permutePath.js","../node_modules/starknet/node_modules/@noble/curves/src/_shortw_utils.ts","../node_modules/pako/lib/utils/common.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/cookieJar.js","../node_modules/@solana/spl-token/src/extensions/permanentDelegate.ts","../node_modules/@solana/spl-token/src/instructions/types.ts","../node_modules/@solana/spl-token/src/actions/recoverNested.ts","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/swapforgas/onchain/OnchainForGasWrapper.js","../cryptoClients/sha256.ts","../node_modules/buffer/index.js","../node_modules/readable-stream/errors-browser.js","../signer.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/wallet/StarknetKeypairWallet.js","../node_modules/starknet/node_modules/@noble/hashes/src/crypto.ts","../node_modules/@atomiqlabs/sdk/dist/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/events/events.js","../node_modules/@atomiqlabs/base/dist/btcrelay/BtcRelay.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/swaps/SolanaSwapData.js","../node_modules/@atomiqlabs/sdk-lib/dist/intermediaries/TrustedIntermediaryAPI.js","../ecdsaSigFormatter.ts","../node_modules/qrcode/lib/core/utils.js","../node_modules/@solana/spl-token/src/extensions/metadataPointer/state.ts","../node_modules/@solana/spl-token/src/extensions/index.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js","../node_modules/@scure/starknet/node_modules/@noble/curves/src/abstract/utils.ts","../node_modules/@atomiqlabs/base/dist/events/types/ClaimEvent.js","../node_modules/micro-packed/src/index.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/modules/StarknetFees.js","../node_modules/@solana/spl-token/src/extensions/interestBearingMint/index.ts","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/tobtc/onchain/ToBTCWrapper.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/modules/StarknetSwapClaim.js","../node_modules/@solana/spl-token/src/instructions/initializeMultisig.ts","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/Tokens.js","../node_modules/@noble/hashes/src/utils.ts","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/frombtc/IFromBTCWrapper.js","../node_modules/@noble/hashes/src/crypto.ts","../node_modules/ts-mixer/dist/esm/index.js","../node_modules/no-case/no-case.js","../node_modules/@solana/spl-token/src/actions/createMultisig.ts","../node_modules/@noble/curves/src/secp256k1.ts","../node_modules/starknet/node_modules/@noble/hashes/src/_u64.ts","../node_modules/@atomiqlabs/base/dist/btcrelay/types/BtcBlock.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/react-icons-kit/md/ic_south.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/wallet/SolanaSigner.js","../node_modules/@atomiqlabs/base/dist/chains/ChainData.js","../node_modules/qrcode/lib/core/version-check.js","../node_modules/pako/lib/deflate.js","../node_modules/base64-js/index.js","../node_modules/@solana/spl-token/src/extensions/memoTransfer/index.ts","../node_modules/@noble/hashes/src/_md.ts","../node_modules/@solana/spl-token/src/actions/burn.ts","../node_modules/qrcode/lib/core/version.js","../node_modules/@solana/spl-token/src/actions/freezeAccount.ts","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/store.js","../../../src/call/index.ts","../node_modules/react-icons-kit/SvgIcon.js","../../../../src/api/index.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/StarknetModule.js","../node_modules/@noble/hashes/src/ripemd160.ts","../node_modules/@atomiqlabs/base/dist/btcrelay/utils/StatePredictorUtils.js","../node_modules/create-hash/browser.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/modules/StarknetAddresses.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/cookie.js","../node_modules/qrcode/lib/can-promise.js","../node_modules/@solana/spl-token/src/actions/uiAmountToAmount.ts","../node_modules/react-icons-kit/md/ic_pending_outline.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/@solana/spl-token/src/actions/amountToUiAmount.ts","../node_modules/@solana/spl-token/src/extensions/transferHook/state.ts","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/dijkstrajs/dijkstra.js","../../../src/transactions/signTransaction.ts","../node_modules/pako/index.js","../../../src/inscriptions/createRepeatInscriptions.ts","../node_modules/lossless-json/lib/esm/config.js","../node_modules/lossless-json/lib/esm/utils.js","../node_modules/lossless-json/lib/esm/LosslessNumber.js","../node_modules/lossless-json/lib/esm/numberParsers.js","../node_modules/lossless-json/lib/esm/revive.js","../node_modules/lossless-json/lib/esm/parse.js","../node_modules/lossless-json/lib/esm/reviveDate.js","../node_modules/lossless-json/lib/esm/stringify.js","../node_modules/@atomiqlabs/bolt11/node_modules/bech32/index.js","../node_modules/@solana/spl-token/src/instructions/initializeAccount.ts","../node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","../node_modules/@solana/spl-token/src/instructions/internal.ts","../node_modules/@solana/spl-token/src/instructions/initializeMint.ts","../node_modules/@solana/spl-token/src/extensions/nonTransferable.ts","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/@atomiqlabs/sdk-lib/dist/errors/PaymentAuthError.js","../node_modules/@atomiqlabs/sdk/dist/storage/LocalStorageManager.js","../node_modules/react-icons-kit/fa/clipboard.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/SwapperWithChain.js","../node_modules/react-icons-kit/md/ic_error_outline_outline.js","../node_modules/starknet/node_modules/@scure/base/index.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/swaps/modules/SolanaLpVault.js","../../../../src/wallet-api/typedData.ts","../node_modules/bs58/index.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/StarknetSwapModule.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/modules/StarknetBlocks.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/abstract/ICachedSwapPrice.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/btcrelay/StarknetBtcRelay.js","../node_modules/qrcode/lib/core/galois-field.js","../node_modules/@atomiqlabs/sdk-lib/dist/btc/mempool/MempoolApi.js","../node_modules/@solana/spl-token/src/extensions/metadataPointer/instructions.ts","../node_modules/md5.js/index.js","../node_modules/qrcode/lib/core/polynomial.js","../node_modules/@scure/starknet/node_modules/@noble/hashes/src/sha3.ts","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/@solana/spl-token/src/instructions/initializeAccount2.ts","../node_modules/react-icons-kit/md/ic_swap_horizontal_circle_outline.js","../node_modules/@atomiqlabs/sdk-lib/dist/btc/wallet/IBitcoinWallet.js","../node_modules/sha.js/sha.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js","../node_modules/@solana/spl-token/src/extensions/cpiGuard/state.ts","../node_modules/starknet/node_modules/@noble/hashes/src/sha3.ts","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/canonicalDomain.js","../node_modules/pako/lib/zlib/constants.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/modules/SolanaTokens.js","../node_modules/react-icons-kit/md/ic_not_interested.js","../node_modules/react-icons-kit/md/ic_download_outline.js","../node_modules/@solana/spl-token/src/extensions/memoTransfer/instructions.ts","../node_modules/@atomiqlabs/base/dist/btcrelay/types/BtcHeader.js","../node_modules/@atomiqlabs/base/dist/swaps/ChainSwapType.js","../node_modules/@atomiqlabs/sdk-lib/dist/btc/coinselect2/utils.js","../node_modules/@atomiqlabs/chain-starknet/dist/utils/Utils.js","../node_modules/@solana/spl-token/src/actions/syncNative.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/events/SolanaChainEventsBrowser.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/UnifiedSwapStorage.js","../node_modules/react-icons-kit/Icon.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/contract/modules/StarknetContractEvents.js","../node_modules/sha.js/sha512.js","../node_modules/@scure/starknet/node_modules/@noble/hashes/src/_u64.ts","../node_modules/react-icons-kit/fa/question.js","../node_modules/@starknet-io/get-starknet/dist/ui.js","../node_modules/@solana/spl-token/src/instructions/uiAmountToAmount.ts","../node_modules/webln/lib/provider.js","../node_modules/@scure/starknet/node_modules/@noble/curves/src/abstract/weierstrass.ts","../node_modules/@atomiqlabs/sdk-lib/dist/prices/SwapPriceWithChain.js","../node_modules/pako/lib/utils/strings.js","../node_modules/@scure/btc-signer/src/psbt.ts","../node_modules/react-icons-kit/horizontalCenter.js","../node_modules/react-icons-kit/md/ic_power_off_outline.js","../node_modules/@solana/spl-token/src/actions/closeAccount.ts","../node_modules/qrcode/lib/browser.js","../node_modules/@solana/spl-token/src/extensions/transferFee/instructions.ts","../node_modules/@atomiqlabs/sdk-lib/dist/prices/abstract/ISwapPrice.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/getPublicSuffix.js","../node_modules/@scure/starknet/node_modules/@noble/hashes/src/utils.ts","../node_modules/@solana/spl-token/src/extensions/accountType.ts","../node_modules/react-icons-kit/md/ic_qr_code_scanner.js","../node_modules/starknet/node_modules/@noble/curves/src/abstract/poseidon.ts","../node_modules/@atomiqlabs/sdk-lib/dist/prices/SingleSwapPrice.js","../node_modules/@solana/wallet-standard-features/src/signMessage.ts","../node_modules/@atomiqlabs/sdk-lib/dist/btc/LightningNetworkApi.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/modules/SolanaFees.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/providers/CoinPaprikaPriceProvider.js","../node_modules/@solana/spl-token/src/extensions/transferFee/state.ts","../verifier.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/modules/StarknetSwapRefund.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/btcrelay/headers/SolanaBtcStoredHeader.js","../node_modules/@noble/curves/src/abstract/utils.ts","../../../../src/api/nonspec.ts","../node_modules/@solana/spl-token/src/extensions/transferHook/actions.ts","../node_modules/@solana/spl-token/src/instructions/initializeNonTransferableMint.ts","../node_modules/react-icons-kit/fa/gift.js","../node_modules/@solana/spl-token/src/instructions/revoke.ts","../node_modules/react-icons-kit/fa/exclamationTriangle.js","../node_modules/@solana/spl-token/src/extensions/metadataPointer/index.ts","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@atomiqlabs/sdk-lib/dist/btc/coinselect2/accumulative.js","../node_modules/set-cookie-parser/lib/set-cookie.js","../node_modules/pako/lib/zlib/inftrees.js","../node_modules/@scure/btc-signer/src/utxo.ts","../node_modules/@solana/spl-token/src/extensions/transferFee/index.ts","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/cookieCompare.js","../node_modules/@solana/spl-token/src/extensions/defaultAccountState/state.ts","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/domainMatch.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/abstract/IPriceProvider.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/tobtc/ln/ToBTCLNWrapper.js","../node_modules/react-icons-kit/fa/angleDoubleLeft.js","../node_modules/inherits/inherits_browser.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/index.js","../node_modules/starknet/node_modules/@noble/hashes/src/hmac.ts","../node_modules/@solana/spl-token/src/instructions/thawAccount.ts","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/swapforgas/ln/LnForGasSwap.js","../node_modules/@scure/starknet/node_modules/@noble/hashes/src/sha256.ts","../node_modules/react-icons-kit/md/ic_watch_later_outline.js","../node_modules/@atomiqlabs/base/dist/errors/CannotInitializeATAError.js","../node_modules/@atomiqlabs/sdk-lib/dist/utils/paramcoders/client/ResponseParamDecoder.js","../node_modules/react-icons-kit/index.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/frombtc/ln/FromBTCLNWrapper.js","../node_modules/@scure/starknet/node_modules/@noble/hashes/src/_sha2.ts","../node_modules/url-join/lib/url-join.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/RedundantSwapPrice.js","../node_modules/@atomiqlabs/bolt11/payreq.js","../node_modules/@solana/spl-token/src/extensions/extensionType.ts","../node_modules/@scure/starknet/node_modules/@noble/hashes/src/_assert.ts","../node_modules/qrcode/lib/core/byte-data.js","../node_modules/hash-base/index.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/modules/StarknetSwapInit.js","../node_modules/@solana/spl-token/src/extensions/cpiGuard/instructions.ts","../node_modules/react-icons-kit/md/ic_hourglass_disabled_outline.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/frombtc/onchain/FromBTCSwap.js","../node_modules/@solana/spl-token/src/actions/burnChecked.ts","../node_modules/safe-buffer/index.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/validators.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/btcrelay/BtcRelayAbi.js","../node_modules/@solana/spl-token/src/extensions/interestBearingMint/actions.ts","../node_modules/react-icons-kit/fa/angleDoubleRight.js","../node_modules/@solana/spl-token/src/extensions/mintCloseAuthority.ts","../node_modules/sha.js/sha224.js","../node_modules/@solana/spl-token/src/extensions/cpiGuard/index.ts","../node_modules/sha.js/sha1.js","../node_modules/@atomiqlabs/chain-starknet/dist/index.js","../node_modules/@solana/spl-token/src/instructions/approveChecked.ts","../node_modules/stream-browserify/index.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/modules/StarknetTokens.js","../node_modules/webln/lib/client.js","../node_modules/@atomiqlabs/sdk-lib/dist/utils/paramcoders/SchemaVerifier.js","../node_modules/@solana/spl-token/src/extensions/immutableOwner.ts","../node_modules/@solana/buffer-layout-utils/src/index.ts","../node_modules/process/browser.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/pathMatch.js","../../../../src/utils/common.ts","../../../../src/utils/bytes/hex.ts","../../../../src/utils/bytes/utf8.ts","../../../../src/utils/bytes/bs58.ts","../../../../src/utils/bytes/base64.ts","../../../../src/program/common.ts","../node_modules/node_modules/superstruct/lib/index.es.js","../../../../src/utils/rpc.ts","../../../../src/provider.ts","../../../../src/utils/features.ts","../../../../src/error.ts","../node_modules/node_modules/snake-case/node_modules/tslib/tslib.es6.js","../node_modules/node_modules/dot-case/node_modules/tslib/tslib.es6.js","../node_modules/node_modules/lower-case/dist.es2015/index.js","../node_modules/node_modules/no-case/dist.es2015/index.js","../node_modules/node_modules/dot-case/dist.es2015/index.js","../../../../src/coder/borsh/idl.ts","../../../../src/coder/borsh/instruction.ts","../node_modules/node_modules/snake-case/dist.es2015/index.js","../../../../src/coder/common.ts","../../../../src/coder/borsh/discriminator.ts","../../../../src/coder/borsh/accounts.ts","../../../../src/coder/borsh/event.ts","../../../../src/coder/borsh/types.ts","../../../../src/coder/borsh/index.ts","../node_modules/node_modules/buffer-layout/lib/Layout.js","../../../../src/coder/system/instruction.ts","../../../../src/coder/system/accounts.ts","../../../../src/coder/system/events.ts","../../../../src/coder/system/types.ts","../../../../src/coder/system/index.ts","../../../../src/utils/sha256.ts","../../../../src/utils/pubkey.ts","../../../../src/utils/token.ts","../node_modules/node_modules/cross-fetch/dist/browser-ponyfill.js","../../../../src/utils/registry.ts","../../../../src/idl.ts","../../../../src/program/context.ts","../../../../src/program/namespace/instruction.ts","../../../../src/program/namespace/transaction.ts","../../../../src/program/namespace/rpc.ts","../../../../src/program/namespace/account.ts","../../../../src/program/event.ts","../../../../src/program/namespace/simulate.ts","../../../../src/program/token-account-layout.ts","../../../../src/program/accounts-resolver.ts","../../../../src/program/namespace/methods.ts","../../../../src/program/namespace/views.ts","../../../../src/program/namespace/index.ts","../../../../src/program/index.ts","../../../../src/native/system.ts","../../../../src/native/index.ts","../node_modules/@solana/spl-token/src/extensions/interestBearingMint/state.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js","../node_modules/react-icons-kit/md/ic_content_copy.js","../node_modules/@solana/buffer-layout-utils/src/base.ts","../node_modules/@atomiqlabs/base/dist/events/types/SwapEvent.js","../../../src/inscriptions/createInscription.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/btcrelay/SolanaBtcRelay.js","../node_modules/@scure/starknet/node_modules/@noble/hashes/src/hmac.ts","../errors.ts","../node_modules/react/index.js","webpack://btc-bridge/./node_modules/@solana/wallet-adapter-react-ui/styles.css?fa4f","../node_modules/prop-types/index.js","../node_modules/qrcode/lib/core/kanji-data.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/tobtc/IToBTCWrapper.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/providers/BinancePriceProvider.js","../node_modules/@atomiqlabs/sdk-lib/dist/errors/UserError.js","../node_modules/base-x/src/index.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/modules/SolanaTransactions.js","../node_modules/webln/lib/errors.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/swapforgas/onchain/OnchainForGasSwap.js","../node_modules/starknet/node_modules/@noble/curves/src/abstract/weierstrass.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/SolanaAction.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/StarknetBase.js","../node_modules/@solana/spl-token/src/extensions/defaultAccountState/index.ts","../node_modules/@solana/spl-token/src/actions/transferChecked.ts","../../../src/capabilities/index.ts","../node_modules/@noble/curves/src/abstract/hash-to-curve.ts","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/aes-js/index.js","../node_modules/@solana/spl-token/src/state/index.ts","../node_modules/@solana/spl-token/src/instructions/syncNative.ts","../node_modules/camelcase/index.js","../node_modules/starknet/node_modules/@noble/curves/src/abstract/hash-to-curve.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/modules/StarknetAccounts.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/frombtc/ln/FromBTCLNSwap.js","../node_modules/@solana/spl-token/src/instructions/decode.ts","../node_modules/starknet/node_modules/@noble/hashes/src/sha256.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/swaps/modules/SolanaDataAccount.js","../node_modules/react/jsx-runtime.js","../node_modules/@solana/spl-token/src/actions/approveChecked.ts","../node_modules/@scure/btc-signer/src/payment.ts","../node_modules/@solana/spl-token/src/actions/approve.ts","../node_modules/@solana/spl-token/src/instructions/createNativeMint.ts","../../src/types.ts","../node_modules/@noble/curves/src/abstract/curve.ts","../node_modules/starknet/node_modules/@noble/hashes/src/_assert.ts","../node_modules/@atomiqlabs/base/dist/btc/BitcoinNetwork.js","../node_modules/@noble/hashes/src/hmac.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/SolanaModule.js","../../../src/addresses/index.ts","../node_modules/react-icons-kit/md/ic_contactless.js","../node_modules/@noble/curves/src/abstract/modular.ts","../node_modules/@solana/spl-token/src/constants.ts","../node_modules/pako/lib/zlib/trees.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/handlers/IHandler.js","../node_modules/@atomiqlabs/base/dist/btcrelay/rpc/BitcoinRpc.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/contract/StarknetContractBase.js","../node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/@solana/spl-token/src/instructions/initializeAccount3.ts","../node_modules/@atomiqlabs/sdk/dist/SmartChainAssets.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/defaultPath.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/providers/KrakenPriceProvider.js","../node_modules/@scure/starknet/node_modules/@noble/hashes/src/crypto.ts","../node_modules/@atomiqlabs/sdk/dist/SwapperFactory.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js","../node_modules/@solana/spl-token/src/actions/revoke.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/swaps/modules/SwapClaim.js","../node_modules/@solana/spl-token/src/actions/mintTo.ts","../node_modules/@solana/spl-token/src/instructions/initializeMint2.ts","../node_modules/@scure/btc-signer/src/transaction.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/SolanaChainType.js","../index.ts","../node_modules/react-icons-kit/fa/externalLink.js","../node_modules/qrcode/lib/renderer/utils.js","../node_modules/@solana/spl-token/src/instructions/initializePermanentDelegate.ts","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/SwapType.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/scheduler/index.js","../node_modules/@atomiqlabs/base/dist/chains/ChainType.js","../node_modules/@solana/buffer-layout-utils/src/native.ts","../node_modules/no-case/vendor/non-word-regexp.js","../node_modules/@atomiqlabs/sdk-lib/dist/utils/Utils.js","../node_modules/@atomiqlabs/base/dist/btcrelay/synchronizer/RelaySynchronizer.js","../node_modules/@scure/btc-signer/src/script.ts","../node_modules/@noble/hashes/src/_assert.ts","../node_modules/@atomiqlabs/base/dist/lockable/Lockable.js","../node_modules/@solana/spl-token/src/actions/createMint.ts","../node_modules/qrcode/lib/core/format-info.js","../../../src/messages/index.ts","../node_modules/tweetnacl/nacl-fast.js","../node_modules/@noble/hashes/src/_u64.ts","../node_modules/@noble/hashes/src/sha512.ts","../node_modules/@noble/curves/src/abstract/edwards.ts","../node_modules/@noble/curves/src/ed25519.ts","../../src/error.ts","../../src/utils.ts","../../src/struct.ts","../../src/structs/utilities.ts","../../src/structs/types.ts","../../src/structs/coercions.ts","../node_modules/rpc-websockets/src/lib/client/websocket.browser.ts","../node_modules/rpc-websockets/src/lib/client.ts","../node_modules/rpc-websockets/src/lib/utils.ts","../node_modules/@noble/hashes/src/sha3.ts","../node_modules/@solana/web3.js/src/utils/ed25519.ts","../node_modules/@solana/web3.js/src/utils/to-buffer.ts","../node_modules/@solana/web3.js/src/utils/borsh-schema.ts","../node_modules/@solana/web3.js/src/publickey.ts","../node_modules/@solana/web3.js/src/account.ts","../node_modules/@solana/web3.js/src/bpf-loader-deprecated.ts","../node_modules/@solana/web3.js/src/transaction/constants.ts","../node_modules/@solana/web3.js/src/transaction/expiry-custom-errors.ts","../node_modules/@solana/web3.js/src/message/account-keys.ts","../node_modules/@solana/web3.js/src/layout.ts","../node_modules/@solana/web3.js/src/utils/shortvec-encoding.ts","../node_modules/@solana/web3.js/src/utils/assert.ts","../node_modules/@solana/web3.js/src/message/compiled-keys.ts","../node_modules/@solana/web3.js/src/utils/guarded-array-utils.ts","../node_modules/@solana/web3.js/src/message/legacy.ts","../node_modules/@solana/web3.js/src/message/v0.ts","../node_modules/@solana/web3.js/src/message/versioned.ts","../node_modules/@solana/web3.js/src/transaction/legacy.ts","../node_modules/@solana/web3.js/src/transaction/message.ts","../node_modules/@solana/web3.js/src/transaction/versioned.ts","../node_modules/@solana/web3.js/src/timing.ts","../node_modules/@solana/web3.js/src/sysvar.ts","../node_modules/@solana/web3.js/src/errors.ts","../node_modules/@solana/web3.js/src/utils/send-and-confirm-transaction.ts","../node_modules/@solana/web3.js/src/utils/sleep.ts","../node_modules/@solana/web3.js/src/instruction.ts","../node_modules/@solana/web3.js/src/fee-calculator.ts","../node_modules/@solana/web3.js/src/nonce-account.ts","../node_modules/@solana/web3.js/src/utils/bigint.ts","../node_modules/@solana/web3.js/src/programs/system.ts","../node_modules/@solana/web3.js/src/loader.ts","../node_modules/@solana/web3.js/src/bpf-loader.ts","../node_modules/@solana/web3.js/node_modules/.pnpm/fast-stable-stringify@1.0.0/node_modules/fast-stable-stringify/index.js","../node_modules/@solana/web3.js/src/epoch-schedule.ts","../node_modules/@solana/web3.js/src/__forks__/browser/fetch-impl.ts","../node_modules/@solana/web3.js/src/rpc-websocket.ts","../node_modules/@solana/web3.js/src/programs/address-lookup-table/state.ts","../node_modules/@solana/web3.js/src/account-data.ts","../node_modules/@solana/web3.js/src/utils/makeWebsocketUrl.ts","../node_modules/@solana/web3.js/src/connection.ts","../node_modules/@solana/web3.js/src/keypair.ts","../node_modules/@solana/web3.js/src/programs/address-lookup-table/index.ts","../node_modules/@solana/web3.js/src/programs/compute-budget.ts","../node_modules/@solana/web3.js/src/programs/ed25519.ts","../node_modules/@solana/web3.js/src/utils/secp256k1.ts","../node_modules/@solana/web3.js/src/programs/secp256k1.ts","../node_modules/@solana/web3.js/src/programs/stake.ts","../node_modules/@solana/web3.js/src/programs/vote.ts","../node_modules/@solana/web3.js/src/validator-info.ts","../node_modules/@solana/web3.js/src/vote-account.ts","../node_modules/@solana/web3.js/src/utils/cluster.ts","../node_modules/@solana/web3.js/src/utils/send-and-confirm-raw-transaction.ts","../node_modules/@solana/web3.js/src/index.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/swaps/SolanaSwapProgram.js","../node_modules/@solana/spl-token/src/extensions/memoTransfer/actions.ts","../node_modules/starknet/node_modules/@noble/curves/src/secp256k1.ts","../node_modules/@atomiqlabs/sdk-lib/dist/errors/IntermediaryError.js","../node_modules/sha.js/sha256.js","../node_modules/@solana/spl-token/src/actions/createNativeMint.ts","../node_modules/@solana/spl-token/src/extensions/defaultAccountState/actions.ts","../node_modules/qrcode/lib/renderer/canvas.js","../node_modules/react-icons-kit/md/ic_hourglass_top_outline.js","../node_modules/util-deprecate/browser.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/program/SolanaProgramBase.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/swaps/modules/SwapRefund.js","../node_modules/@solana/spl-token/src/extensions/transferHook/seeds.ts","../node_modules/@solana/spl-token/src/instructions/freezeAccount.ts","../node_modules/react-dom/cjs/react-dom.production.min.js","../../../src/provider/index.ts","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/@solana/spl-token/src/instructions/mintTo.ts","../node_modules/@scure/starknet/node_modules/@noble/curves/src/abstract/curve.ts","../node_modules/@atomiqlabs/sdk-lib/dist/storage/IUnifiedStorage.js","../node_modules/@solana/spl-token/src/extensions/defaultAccountState/instructions.ts","../../../src/inscriptions/utils.ts","../node_modules/@atomiqlabs/sdk-lib/dist/btc/mempool/MempoolBitcoinBlock.js","../node_modules/@atomiqlabs/base/dist/index.js","../node_modules/qrcode/lib/core/segments.js","../node_modules/react-dom/client.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/swaps/modules/SwapInit.js","../node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/starknet/node_modules/@noble/curves/src/abstract/modular.ts","../node_modules/starknet/src/index.ts","../node_modules/starknet/src/constants.ts","../node_modules/starknet/src/types/api/index.ts","../node_modules/starknet/src/types/api/jsonrpc/index.ts","../node_modules/starknet/src/types/api/rpcspec_0_6/index.ts","../node_modules/starknet/src/types/api/rpcspec_0_6/errors.ts","../node_modules/starknet/src/types/api/rpcspec_0_6/components.ts","../node_modules/starknet/src/types/api/rpcspec_0_6/nonspec.ts","../node_modules/starknet/src/utils/encode.ts","../node_modules/starknet/src/provider/rpc.ts","../node_modules/starknet/src/channel/rpc_0_6.ts","../node_modules/starknet/src/provider/errors.ts","../node_modules/starknet/src/types/index.ts","../node_modules/starknet/src/types/calldata.ts","../node_modules/starknet/src/types/lib/contract/index.ts","../node_modules/starknet/src/types/lib/index.ts","../node_modules/starknet/src/types/typedData.ts","../node_modules/starknet/src/utils/assert.ts","../node_modules/starknet/src/utils/num.ts","../node_modules/starknet/src/utils/hash/selector.ts","../node_modules/starknet/src/utils/shortString.ts","../node_modules/starknet/src/utils/calldata/byteArray.ts","../node_modules/starknet/src/utils/calldata/cairo.ts","../node_modules/starknet/src/utils/cairoDataTypes/felt.ts","../node_modules/starknet/src/utils/cairoDataTypes/uint256.ts","../node_modules/starknet/src/utils/cairoDataTypes/uint512.ts","../node_modules/starknet/src/utils/calldata/enum/CairoCustomEnum.ts","../node_modules/starknet/src/utils/calldata/enum/CairoOption.ts","../node_modules/starknet/src/utils/calldata/enum/CairoResult.ts","../node_modules/starknet/src/utils/calldata/formatter.ts","../node_modules/starknet/src/utils/calldata/parser/parser-0-1.1.0.ts","../node_modules/starknet/src/utils/calldata/parser/parser-2.0.0.ts","../node_modules/starknet/src/utils/calldata/parser/index.ts","../node_modules/starknet/src/utils/calldata/tuple.ts","../node_modules/starknet/src/utils/calldata/propertyOrder.ts","../node_modules/starknet/src/utils/calldata/requestParser.ts","../node_modules/starknet/src/utils/calldata/responseParser.ts","../node_modules/starknet/src/utils/calldata/validate.ts","../node_modules/starknet/src/utils/calldata/index.ts","../node_modules/starknet/src/utils/hash/index.ts","../node_modules/starknet/src/utils/hash/transactionHash/v2.ts","../node_modules/starknet/src/utils/ec.ts","../node_modules/starknet/src/utils/hash/transactionHash/v3.ts","../node_modules/starknet/src/utils/hash/transactionHash/index.ts","../node_modules/starknet/src/utils/hash/classHash.ts","../node_modules/starknet/src/utils/json.ts","../node_modules/starknet/src/utils/stark.ts","../node_modules/starknet/src/utils/contract.ts","../node_modules/starknet/src/utils/eth.ts","../node_modules/starknet/src/utils/fetchPonyfill.ts","../node_modules/starknet/src/utils/provider.ts","../node_modules/starknet/src/utils/transaction.ts","../node_modules/starknet/src/channel/rpc_0_7.ts","../node_modules/starknet/src/utils/responseParser/rpc.ts","../node_modules/starknet/src/utils/transactionReceipt.ts","../node_modules/starknet/src/provider/extensions/default.ts","../node_modules/starknet/src/utils/starknetId.ts","../node_modules/starknet/src/provider/extensions/starknetId.ts","../node_modules/starknet/src/provider/interface.ts","../node_modules/starknet/src/provider/index.ts","../node_modules/starknet/src/signer/interface.ts","../node_modules/starknet/src/utils/typedData.ts","../node_modules/starknet/src/utils/merkle.ts","../node_modules/starknet/src/signer/default.ts","../node_modules/starknet/src/signer/ethSigner.ts","../node_modules/starknet/src/utils/uint256.ts","../node_modules/starknet/src/utils/events/index.ts","../node_modules/starknet/src/account/default.ts","../node_modules/starknet/src/account/interface.ts","../node_modules/starknet/src/wallet/connect.ts","../node_modules/starknet/src/wallet/account.ts","../node_modules/starknet/src/contract/default.ts","../node_modules/starknet/src/contract/interface.ts","../node_modules/starknet/src/contract/contractFactory.ts","../node_modules/starknet/src/utils/responseParser/interface.ts","../node_modules/starknet/src/utils/address.ts","../node_modules/starknet/src/utils/url.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/btcrelay/headers/SolanaBtcHeader.js","../node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/starknet/node_modules/@noble/curves/src/abstract/curve.ts","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/SwapperWithSigner.js","../node_modules/@solana/spl-token/src/actions/transfer.ts","../node_modules/@solana/buffer-layout-utils/src/web3.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/base/modules/StarknetEvents.js","../node_modules/@atomiqlabs/sdk-lib/dist/utils/paramcoders/ParamDecoder.js","../node_modules/@solana/spl-token/src/state/account.ts","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/cookie/formatDate.js","../node_modules/bech32/dist/index.js","../node_modules/@atomiqlabs/sdk/dist/Utils.js","../node_modules/@atomiqlabs/base/dist/swaps/SwapCommitStatus.js","../node_modules/@atomiqlabs/base/dist/swaps/SwapContract.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/wallet/SolanaKeypairWallet.js","../node_modules/@atomiqlabs/base/dist/storage/IStorageManager.js","../node_modules/pako/lib/zlib/messages.js","../node_modules/@solana/spl-token/src/instructions/transferChecked.ts","../node_modules/@solana/spl-token/src/extensions/transferHook/index.ts","../node_modules/@atomiqlabs/sdk-lib/dist/intermediaries/Intermediary.js","../node_modules/pako/lib/zlib/adler32.js","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/memstore.js","../node_modules/@solana/spl-token/src/errors.ts","../node_modules/pako/lib/zlib/deflate.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/modules/SolanaEvents.js","../node_modules/@atomiqlabs/base/dist/storage/StorageObject.js","../../src/index.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/SolanaInitializer.js","../node_modules/@atomiqlabs/base/dist/events/types/InitializeEvent.js","../node_modules/lodash.clonedeep/index.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/btcrelay/headers/StarknetBtcHeader.js","../node_modules/@solana/spl-token/src/instructions/setAuthority.ts","../node_modules/@atomiqlabs/sdk-lib/dist/utils/paramcoders/ParamEncoder.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/modules/SolanaAddresses.js","../node_modules/react-icons-kit/md/ic_flash_on_outline.js","../node_modules/@atomiqlabs/base/dist/errors/SignatureVerificationError.js","../node_modules/@solana/spl-token/src/instructions/index.ts","../node_modules/lower-case/lower-case.js","../node_modules/@solana/spl-token/src/extensions/cpiGuard/actions.ts","../node_modules/fetch-cookie/node_modules/tough-cookie/dist/version.js","../node_modules/@solana/spl-token/src/instructions/mintToChecked.ts","../node_modules/@atomiqlabs/chain-solana/dist/solana/program/modules/SolanaProgramEvents.js","../cryptoClients/secp256k1.ts","../node_modules/@solana/spl-token/src/state/mint.ts","../node_modules/ripemd160/index.js","../node_modules/@atomiqlabs/sdk-lib/dist/intermediaries/IntermediaryDiscovery.js","../node_modules/react-icons-kit/md/ic_play_circle_outline.js","../../../src/inscriptions/index.ts","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/swapforgas/ln/LnForGasWrapper.js","../node_modules/@atomiqlabs/sdk-lib/dist/errors/RequestError.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/tobtc/onchain/ToBTCSwap.js","../node_modules/@atomiqlabs/base/dist/events/types/RefundEvent.js","../node_modules/pako/lib/zlib/gzheader.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/base/modules/SolanaSlots.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/Swapper.js","../node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/whatwg-fetch/fetch.js","../base64Url.ts","../node_modules/starknet/node_modules/@noble/curves/src/abstract/utils.ts","../../../src/transactions/signMultipleTransactions.ts","../node_modules/borsh/lib/index.js","../node_modules/@atomiqlabs/chain-solana/dist/solana/swaps/SwapTypeEnum.js","../node_modules/@atomiqlabs/sdk-lib/dist/prices/providers/CoinGeckoPriceProvider.js","../node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/warning/warning.js","../node_modules/react-icons-kit/md/ic_hourglass_empty_outline.js","../node_modules/@solana/spl-token/src/instructions/amountToUiAmount.ts","../node_modules/react-icons-kit/fa/bitcoin.js","../node_modules/react-icons-kit/md/ic_verified_outline.js","../node_modules/@scure/starknet/node_modules/@noble/curves/src/_shortw_utils.ts","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/@atomiqlabs/sdk-lib/dist/swaps/ISwap.js","../node_modules/@atomiqlabs/base/dist/errors/SwapDataVerificationError.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/@solana/spl-token/src/instructions/reallocate.ts","../node_modules/@scure/starknet/node_modules/@noble/curves/src/abstract/modular.ts","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js","../node_modules/qrcode/lib/core/mode.js","../node_modules/@atomiqlabs/chain-starknet/dist/starknet/swaps/modules/StarknetLpVault.js","../node_modules/react-dom/index.js","../node_modules/classnames/index.js","../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/@scure/base/index.ts","../node_modules/@solana/spl-token/src/actions/createAssociatedTokenAccount.ts","../node_modules/react-icons-kit/fa/info.js","../node_modules/react-icons-kit/fa/angleRight.js","../../src/Layout.ts","../node_modules/@solana/spl-token/src/actions/createAssociatedTokenAccountIdempotent.ts","../node_modules/upper-case/upper-case.js","../node_modules/react-icons-kit/fa/copy.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@solana/wallet-adapter-react-ui/src/useWalletModal.tsx","../node_modules/@solana/wallet-adapter-base/src/adapter.ts","../node_modules/@solana/wallet-adapter-base/src/errors.ts","../node_modules/@solana/wallet-adapter-react/src/useWallet.ts","../node_modules/@solana/wallet-adapter-react-ui/src/Collapse.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/Button.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletIcon.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletListItem.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletSVG.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletModal.tsx","../node_modules/@solana/wallet-adapter-react-ui/src/WalletModalProvider.tsx","../node_modules/@solana/wallet-adapter-react/src/useConnection.ts","../node_modules/@solana/wallet-adapter-react/src/ConnectionProvider.tsx","../node_modules/@solana/wallet-adapter-base/src/transaction.ts","../node_modules/@solana/wallet-adapter-base/src/signer.ts","../node_modules/@solana/wallet-standard-util/src/signIn.ts","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/node_modules/@solana-mobile/mobile-wallet-adapter-protocol/lib/esm/index.js","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/lib/esm/index.js","../node_modules/js-base64/base64.mjs","../node_modules/@solana-mobile/wallet-adapter-mobile/lib/esm/index.js","../node_modules/@wallet-standard/features/src/connect.ts","../node_modules/@wallet-standard/features/src/events.ts","../node_modules/@solana/wallet-standard-wallet-adapter-react/node_modules/@solana/wallet-standard-wallet-adapter-base/src/types.ts","../node_modules/@solana/wallet-adapter-base/src/standard.ts","../node_modules/@solana/wallet-standard-features/src/signIn.ts","../node_modules/@solana/wallet-standard-chains/src/index.ts","../node_modules/@solana/wallet-standard-util/src/endpoint.ts","../node_modules/@solana/wallet-standard-util/src/commitment.ts","../node_modules/@wallet-standard/features/src/disconnect.ts","../node_modules/@wallet-standard/wallet/src/util.ts","../node_modules/@solana/wallet-standard-wallet-adapter-react/node_modules/bs58/src/esm/index.js","../node_modules/@solana/wallet-standard-wallet-adapter-react/node_modules/base-x/src/esm/index.js","../node_modules/@solana/wallet-standard-wallet-adapter-react/node_modules/@solana/wallet-standard-wallet-adapter-base/src/adapter.ts","../node_modules/@wallet-standard/app/src/wallets.ts","../node_modules/@solana/wallet-standard-wallet-adapter-react/src/useStandardWalletAdapters.ts","../node_modules/@solana/wallet-adapter-react/src/getEnvironment.ts","../node_modules/@solana/wallet-adapter-react/src/errors.ts","../node_modules/@solana/wallet-adapter-react/src/WalletProviderBase.tsx","../node_modules/@solana/wallet-adapter-react/src/WalletProvider.tsx","../node_modules/@solana/wallet-adapter-react/src/getInferredClusterFromEndpoint.ts","../node_modules/@solana/wallet-adapter-react/src/useLocalStorage.ts","../node_modules/@wallet-standard/wallet/src/register.ts","../node_modules/@solana/wallet-adapter-solflare/src/metamask/wallet.ts","../node_modules/@solana/wallet-adapter-solflare/src/metamask/icon.ts","../node_modules/@solana/wallet-adapter-solflare/src/metamask/detect.ts","../node_modules/@solana/wallet-adapter-ledger/src/util.ts","../node_modules/@solana/wallet-adapter-base/src/types.ts","../node_modules/@scure/starknet/lib/esm/index.js","../node_modules/lossless-json/src/utils.ts","../node_modules/lossless-json/src/LosslessNumber.ts","../node_modules/lossless-json/src/numberParsers.ts","../node_modules/lossless-json/src/revive.ts","../node_modules/lossless-json/src/parse.ts","../node_modules/lossless-json/src/stringify.ts","../node_modules/fetch-cookie/esm/index.js","FEConstants.js","context/SolanaWalletProvider.js","../node_modules/@solana/wallet-adapter-phantom/src/adapter.ts","../node_modules/@solana/wallet-adapter-solflare/src/adapter.ts","../node_modules/@solana/wallet-adapter-torus/src/adapter.ts","../node_modules/@solana/wallet-adapter-ledger/src/adapter.ts","../node_modules/qr-scanner/src/qr-scanner.ts","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/@restart/ui/esm/ModalManager.js","../node_modules/@restart/ui/esm/getScrollbarWidth.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/@restart/ui/esm/utils.js","../node_modules/@restart/ui/esm/NoopTransition.js","../node_modules/@restart/ui/esm/useRTGTransitionProps.js","../node_modules/@restart/ui/esm/RTGTransition.js","../node_modules/@restart/ui/esm/ImperativeTransition.js","../node_modules/@restart/ui/esm/Modal.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/AbstractModalHeader.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/Modal.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/react-bootstrap/esm/Button.js","components/qr/QRScanner.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/deprecations.ts","../node_modules/react-router/lib/components.tsx","../node_modules/react-bootstrap/esm/ButtonGroup.js","../node_modules/react-bootstrap/esm/Badge.js","context/SwapsContext.js","components/SwapTopbar.js","utils/Currencies.js","../node_modules/@restart/ui/node_modules/uncontrollable/lib/esm/index.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/@restart/ui/esm/DropdownContext.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/dequal/dist/index.mjs","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@restart/ui/esm/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@restart/ui/esm/usePopper.js","../node_modules/@restart/ui/esm/useClickOutside.js","../node_modules/@restart/ui/esm/mergeOptionsWithPopperConfig.js","../node_modules/@restart/ui/esm/DropdownMenu.js","../packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@restart/ui/esm/DropdownToggle.js","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/@restart/ui/esm/DropdownItem.js","../node_modules/@restart/ui/esm/Dropdown.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-bootstrap/esm/DropdownContext.js","../node_modules/react-bootstrap/esm/DropdownDivider.js","../node_modules/react-bootstrap/esm/DropdownHeader.js","../node_modules/@restart/ui/node_modules/@restart/hooks/esm/useResizeObserver.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/react-bootstrap/esm/DropdownItemText.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/react-bootstrap/esm/InputGroupContext.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/react-bootstrap/esm/Dropdown.js","components/TokenIcon.js","components/CurrencyDropdown.js","lnnfc/LNNFCReader.js","pages/quickscan/QuickScan.js","lnnfc/useNFCScanner.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/react-bootstrap/esm/InputGroupText.js","../node_modules/react-bootstrap/esm/InputGroup.js","../node_modules/@restart/hooks/esm/useTimeout.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/ui/esm/useRootClose.js","../node_modules/@restart/ui/esm/Overlay.js","../node_modules/react-bootstrap/esm/PopoverHeader.js","../node_modules/react-bootstrap/esm/PopoverBody.js","../node_modules/react-bootstrap/esm/helpers.js","../node_modules/react-bootstrap/esm/getInitialPopperStyles.js","../node_modules/react-bootstrap/esm/Popover.js","../node_modules/react-bootstrap/esm/Tooltip.js","../node_modules/react-bootstrap/esm/Overlay.js","../node_modules/react-bootstrap/esm/useOverlayOffset.js","../node_modules/react-bootstrap/esm/OverlayTrigger.js","components/ValidatedInput.js","utils/Utils.js","components/fees/FeeSummaryScreen.js","../node_modules/react-bootstrap/esm/Spinner.js","../node_modules/react-bootstrap/esm/AlertHeading.js","../node_modules/react-bootstrap/esm/AlertLink.js","../node_modules/react-bootstrap/esm/Alert.js","context/StarknetWalletContext.js","components/ButtonWithSigner.js","utils/useSwapState.js","../node_modules/react-bootstrap/esm/ProgressBar.js","components/SwapExpiryProgressBar.js","utils/useAsync.js","utils/useAbortSignal.js","utils/useStateRef.js","../node_modules/react-bootstrap/esm/Row.js","components/StepByStep.js","components/ErrorAlert.js","components/quotes/tobtc/ToBTCQuoteSummary.js","utils/useFromBtcLnQuote.js","components/quotes/frombtc/LNURLWithdrawQuoteSummary.js","components/ScrollAnchor.js","components/quotes/frombtc/LightningHyperlinkModal.js","context/WebLNContext.js","bitcoin/lightning/useLightningWallet.js","components/SwapForGasAlert.js","utils/useLocalStorage.js","components/TemporaryOverlay.js","components/CopyOverlay.js","../node_modules/qrcode.react/lib/esm/index.js","components/quotes/frombtc/LightningQR.js","lnnfc/useLNNFCScanner.js","components/quotes/frombtc/FromBTCLNQuoteSummary.js","bitcoin/onchain/BitcoinWallet.js","bitcoin/onchain/wallets/PhantomBitcoinWallet.js","bitcoin/onchain/InscriptionUtils.js","bitcoin/onchain/wallets/SatsConnectBitcoinWallet.js","bitcoin/onchain/wallets/MagicEdenBitcoinWallet.js","bitcoin/onchain/wallets/XverseBitcoinWallet.js","bitcoin/onchain/BitcoinWalletUtils.js","../node_modules/@restart/ui/esm/TabContext.js","../node_modules/@restart/ui/esm/NavItem.js","../node_modules/@restart/ui/esm/Nav.js","../node_modules/react-bootstrap/esm/ListGroupItem.js","../node_modules/react-bootstrap/esm/ListGroup.js","context/BitcoinWalletProvider.js","components/quotes/frombtc/OnchainAddressCopyModal.js","components/quotes/frombtc/FromBTCQuoteSummary.js","bitcoin/onchain/useOnchainWallet.js","components/quotes/QuoteSummary.js","utils/useAddressData.js","utils/useAmountConstraints.js","utils/useQuote.js","utils/useBigNumberState.js","utils/useWalletBalance.js","pages/quickscan/QuickScanExecute.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-bootstrap/esm/CardBody.js","../node_modules/react-bootstrap/esm/CardFooter.js","../node_modules/react-bootstrap/esm/CardHeaderContext.js","../node_modules/react-bootstrap/esm/CardHeader.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/CardImgOverlay.js","../node_modules/react-bootstrap/esm/CardLink.js","../node_modules/react-bootstrap/esm/CardSubtitle.js","../node_modules/react-bootstrap/esm/CardText.js","../node_modules/react-bootstrap/esm/CardTitle.js","../node_modules/react-bootstrap/esm/Card.js","components/table/SingleColumnTable.js","pages/History.js","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/@restart/hooks/esm/useMediaQuery.js","../node_modules/@restart/hooks/esm/useBreakpoint.js","../node_modules/react-bootstrap/esm/OffcanvasBody.js","../node_modules/react-bootstrap/esm/OffcanvasToggling.js","../node_modules/react-bootstrap/esm/OffcanvasHeader.js","../node_modules/react-bootstrap/esm/OffcanvasTitle.js","../node_modules/react-bootstrap/esm/Offcanvas.js","../node_modules/react-bootstrap/esm/NavbarOffcanvas.js","../node_modules/react-bootstrap/esm/NavbarText.js","../node_modules/react-bootstrap/esm/Navbar.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","../node_modules/react-bootstrap/esm/AccordionContext.js","../node_modules/react-bootstrap/esm/AccordionCollapse.js","../node_modules/react-bootstrap/esm/AccordionItemContext.js","../node_modules/react-bootstrap/esm/AccordionBody.js","../node_modules/react-bootstrap/esm/AccordionButton.js","../node_modules/react-bootstrap/esm/AccordionHeader.js","../node_modules/react-bootstrap/esm/AccordionItem.js","../node_modules/react-bootstrap/esm/Accordion.js","utils/useAnchorNavigate.js","pages/FAQ.js","pages/About.js","components/quotes/frombtc/TrustedFromBTCLNQuoteSummary.js","pages/SwapForGas.js","../node_modules/react-bootstrap/esm/usePlaceholder.js","../node_modules/react-bootstrap/esm/PlaceholderButton.js","../node_modules/react-bootstrap/esm/Placeholder.js","pages/SwapExplorer.js","pages/Affiliate.js","components/qr/QRScannerModal.js","components/fees/SimpleFeeScreen.js","utils/usePricing.js","utils/useWalletList.js","components/wallet/ConnectedWalletAnchor.js","pages/SwapNew.js","utils/useExistingSwap.js","utils/useStarknetWalletContext.js","components/WalletConnectionsSummary.js","utils/useWebLNWalletContext.js","bitcoin/lightning/WebLNUtils.js","App.js","../node_modules/@solana/wallet-adapter-react/src/useAnchorWallet.ts","reportWebVitals.js","index.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.exchange = void 0;\nvar exchange = {\n \"viewBox\": \"0 0 1792 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M1792 1184v192q0 13-9.5 22.5t-22.5 9.5h-1376v192q0 13-9.5 22.5t-22.5 9.5q-12 0-24-10l-319-320q-9-9-9-22 0-14 9-23l320-320q9-9 23-9 13 0 22.5 9.5t9.5 22.5v192h1376q13 0 22.5 9.5t9.5 22.5zM1792 640q0 14-9 23l-320 320q-9 9-23 9-13 0-22.5-9.5t-9.5-22.5v-192h-1376q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1376v-192q0-14 9-23t23-9q12 0 24 10l319 319q9 9 9 23z\"\n }\n }]\n};\nexports.exchange = exchange;","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport {\n createHarvestWithheldTokensToMintInstruction,\n createTransferCheckedWithFeeInstruction,\n createWithdrawWithheldTokensFromAccountsInstruction,\n createWithdrawWithheldTokensFromMintInstruction,\n} from './instructions.js';\n\n/**\n * Transfer tokens from one account to another, asserting the transfer fee, token mint, and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param source Source account\n * @param mint Mint for the account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function transferCheckedWithFee(\n connection: Connection,\n payer: Signer,\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n owner: Signer | PublicKey,\n amount: bigint,\n decimals: number,\n fee: bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createTransferCheckedWithFeeInstruction(\n source,\n mint,\n destination,\n ownerPublicKey,\n amount,\n decimals,\n fee,\n multiSigners,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Withdraw withheld tokens from mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The mint's withdraw withheld tokens authority\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function withdrawWithheldTokensFromMint(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createWithdrawWithheldTokensFromMintInstruction(mint, destination, authorityPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Withdraw withheld tokens from accounts\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The mint's withdraw withheld tokens authority\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param sources Source accounts from which to withdraw withheld fees\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function withdrawWithheldTokensFromAccounts(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[],\n sources: PublicKey[],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createWithdrawWithheldTokensFromAccountsInstruction(\n mint,\n destination,\n authorityPublicKey,\n signers,\n sources,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Harvest withheld tokens from accounts to the mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint The token mint\n * @param sources Source accounts from which to withdraw withheld fees\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function harvestWithheldTokensToMint(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n sources: PublicKey[],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createHarvestWithheldTokensToMintInstruction(mint, sources, programId));\n\n return await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaSignatures = void 0;\r\nconst SolanaModule_1 = require(\"../SolanaModule\");\r\nconst createHash = require(\"create-hash\");\r\nconst tweetnacl_1 = require(\"tweetnacl\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst buffer_1 = require(\"buffer\");\r\nclass SolanaSignatures extends SolanaModule_1.SolanaModule {\r\n ///////////////////\r\n //// Data signatures\r\n /**\r\n * Produces an ed25519 signature over the sha256 of a specified data Buffer, only works with providers which\r\n * expose their private key (i.e. backend based, not browser wallet based)\r\n *\r\n * @param signer\r\n * @param data data to sign\r\n */\r\n getDataSignature(signer, data) {\r\n if (signer.keypair == null)\r\n throw new Error(\"Unsupported\");\r\n const buff = createHash(\"sha256\").update(data).digest();\r\n const signature = tweetnacl_1.sign.detached(buff, signer.keypair.secretKey);\r\n return Promise.resolve(buffer_1.Buffer.from(signature).toString(\"hex\"));\r\n }\r\n /**\r\n * Checks whether a signature is a valid Ed25519 signature produced by publicKey over a data message (computes\r\n * sha256 hash of the message)\r\n *\r\n * @param data signed data\r\n * @param signature data signature\r\n * @param publicKey public key of the signer\r\n */\r\n isValidDataSignature(data, signature, publicKey) {\r\n const hash = createHash(\"sha256\").update(data).digest();\r\n return Promise.resolve(tweetnacl_1.sign.detached.verify(hash, buffer_1.Buffer.from(signature, \"hex\"), new web3_js_1.PublicKey(publicKey).toBuffer()));\r\n }\r\n}\r\nexports.SolanaSignatures = SolanaSignatures;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BitcoinNoncedOutputClaimHandler = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst Utils_1 = require(\"../../../../../utils/Utils\");\r\nconst IBitcoinClaimHandler_1 = require(\"./IBitcoinClaimHandler\");\r\nconst btc_signer_1 = require(\"@scure/btc-signer\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst logger = (0, Utils_1.getLogger)(\"BitcoinNoncedOutputClaimHandler: \");\r\nfunction getTransactionNonce(btcTx) {\r\n const locktimeSub500M = BigInt(btcTx.lockTime - 500000000);\r\n if (locktimeSub500M < 0n)\r\n throw new Error(\"Locktime too low!\");\r\n const nSequence = BigInt(btcTx.getInput(0).sequence);\r\n return (locktimeSub500M << 24n) | (nSequence & 0x00ffffffn);\r\n}\r\nclass BitcoinNoncedOutputClaimHandler extends IBitcoinClaimHandler_1.IBitcoinClaimHandler {\r\n serializeCommitment(data) {\r\n return [\r\n starknet_1.hash.computePoseidonHashOnElements([(0, Utils_1.toBigInt)(data.nonce), (0, Utils_1.toBigInt)(data.amount), (0, Utils_1.poseidonHashRange)(data.output)]),\r\n ...super.serializeCommitment(data)\r\n ];\r\n }\r\n async getWitness(signer, swapData, witnessData, feeRate) {\r\n if (!swapData.isClaimHandler(this.address))\r\n throw new Error(\"Invalid claim handler\");\r\n const parsedBtcTx = btc_signer_1.Transaction.fromRaw(buffer_1.Buffer.from(witnessData.tx.hex, \"hex\"));\r\n const out = parsedBtcTx.getOutput(witnessData.vout);\r\n const { initialTxns, witness } = await this._getWitness(signer, swapData, witnessData, {\r\n output: buffer_1.Buffer.from(out.script),\r\n amount: out.amount,\r\n nonce: getTransactionNonce(parsedBtcTx)\r\n });\r\n witness.push(...(0, Utils_1.bufferToByteArray)(buffer_1.Buffer.from(witnessData.tx.hex, \"hex\")));\r\n witness.push(BigInt(witnessData.vout));\r\n return { initialTxns, witness };\r\n }\r\n getGas(data) {\r\n return BitcoinNoncedOutputClaimHandler.gas;\r\n }\r\n getType() {\r\n return BitcoinNoncedOutputClaimHandler.type;\r\n }\r\n}\r\nexports.BitcoinNoncedOutputClaimHandler = BitcoinNoncedOutputClaimHandler;\r\nBitcoinNoncedOutputClaimHandler.type = base_1.ChainSwapType.CHAIN_NONCED;\r\nBitcoinNoncedOutputClaimHandler.gas = { l1: 20000 };\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExchangePriceProvider = void 0;\r\nconst HttpPriceProvider_1 = require(\"./HttpPriceProvider\");\r\nclass ExchangePriceProvider extends HttpPriceProvider_1.HttpPriceProvider {\r\n async fetchPrice(token, abortSignal) {\r\n const pairs = token.coinId.split(\";\");\r\n const prices = await Promise.all(pairs.map(pair => {\r\n let invert = pair.startsWith(\"!\");\r\n if (invert)\r\n pair = pair.substring(1);\r\n return this.fetchPair(pair, abortSignal).then(value => invert ? 1 / value : value);\r\n }));\r\n const price = prices.reduce((previousValue, currentValue) => previousValue * currentValue, 1);\r\n return BigInt(Math.floor(price * 100000000000000));\r\n }\r\n}\r\nexports.ExchangePriceProvider = ExchangePriceProvider;\r\n","import type { Signer } from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\n\n/** @internal */\nexport function getSigners(signerOrMultisig: Signer | PublicKey, multiSigners: Signer[]): [PublicKey, Signer[]] {\n return signerOrMultisig instanceof PublicKey\n ? [signerOrMultisig, multiSigners]\n : [signerOrMultisig.publicKey, [signerOrMultisig]];\n}\n","/**\n * Utilities for short weierstrass curves, combined with noble-hashes.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport type { CHash } from './abstract/utils.js';\nimport { type CurveFn, type CurveType, weierstrass } from './abstract/weierstrass.js';\n\n/** connects noble-curves to noble-hashes */\nexport function getHash(hash: CHash): {\n hash: CHash;\n hmac: (key: Uint8Array, ...msgs: Uint8Array[]) => Uint8Array;\n randomBytes: typeof randomBytes;\n} {\n return {\n hash,\n hmac: (key: Uint8Array, ...msgs: Uint8Array[]) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\n/** Same API as @noble/hashes, with ability to create curve with custom hash */\nexport type CurveDef = Readonly>;\nexport type CurveFnWithCreate = CurveFn & { create: (hash: CHash) => CurveFn };\n\nexport function createCurve(curveDef: CurveDef, defHash: CHash): CurveFnWithCreate {\n const create = (hash: CHash): CurveFn => weierstrass({ ...curveDef, ...getHash(hash) });\n return { ...create(defHash), create };\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.wrapSwapWithSigner = void 0;\r\nconst IToBTCSwap_1 = require(\"./tobtc/IToBTCSwap\");\r\nconst IFromBTCSwap_1 = require(\"./frombtc/IFromBTCSwap\");\r\nconst FromBTCLNSwap_1 = require(\"./frombtc/ln/FromBTCLNSwap\");\r\nfunction wrapSwapWithSigner(swap, signer) {\r\n return new Proxy(swap, {\r\n get: (target, prop, receiver) => {\r\n // Override the \"sayGoodbye\" method\r\n if (prop === \"commit\") {\r\n if (swap instanceof IToBTCSwap_1.IToBTCSwap || swap instanceof IFromBTCSwap_1.IFromBTCSwap) {\r\n return (abortSignal, skipChecks) => swap.commit(signer, abortSignal, skipChecks);\r\n }\r\n }\r\n if (prop === \"refund\") {\r\n if (swap instanceof IToBTCSwap_1.IToBTCSwap) {\r\n return (abortSignal) => swap.refund(signer, abortSignal);\r\n }\r\n }\r\n if (prop === \"claim\") {\r\n if (swap instanceof IFromBTCSwap_1.IFromBTCSwap) {\r\n return (abortSignal) => swap.claim(signer, abortSignal);\r\n }\r\n }\r\n if (prop === \"commitAndClaim\") {\r\n if (swap instanceof FromBTCLNSwap_1.FromBTCLNSwap) {\r\n return (abortSignal, skipChecks) => swap.commitAndClaim(signer, abortSignal, skipChecks);\r\n }\r\n }\r\n // Delegate other properties and methods to the original instance\r\n return Reflect.get(target, prop, receiver);\r\n }\r\n });\r\n}\r\nexports.wrapSwapWithSigner = wrapSwapWithSigner;\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IP_V6_REGEX_OBJECT = exports.PrefixSecurityEnum = void 0;\n/**\n * Cookie prefixes are a way to indicate that a given cookie was set with a set of attributes simply by inspecting the\n * first few characters of the cookie's name. These are defined in {@link https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-13#section-4.1.3 | RFC6265bis - Section 4.1.3}.\n *\n * The following values can be used to configure how a {@link CookieJar} enforces attribute restrictions for Cookie prefixes:\n *\n * - `silent` - Enable cookie prefix checking but silently ignores the cookie if conditions are not met. This is the default configuration for a {@link CookieJar}.\n *\n * - `strict` - Enables cookie prefix checking and will raise an error if conditions are not met.\n *\n * - `unsafe-disabled` - Disables cookie prefix checking.\n * @public\n */\nexports.PrefixSecurityEnum = {\n SILENT: 'silent',\n STRICT: 'strict',\n DISABLED: 'unsafe-disabled',\n};\nObject.freeze(exports.PrefixSecurityEnum);\nconst IP_V6_REGEX = `\n\\\\[?(?:\n(?:[a-fA-F\\\\d]{1,4}:){7}(?:[a-fA-F\\\\d]{1,4}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|:[a-fA-F\\\\d]{1,4}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,2}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){4}(?:(?::[a-fA-F\\\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,3}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){3}(?:(?::[a-fA-F\\\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,4}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){2}(?:(?::[a-fA-F\\\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,5}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){1}(?:(?::[a-fA-F\\\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,6}|:)|\n(?::(?:(?::[a-fA-F\\\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,7}|:))\n)(?:%[0-9a-zA-Z]{1,})?\\\\]?\n`\n .replace(/\\s*\\/\\/.*$/gm, '')\n .replace(/\\n/g, '')\n .trim();\nexports.IP_V6_REGEX_OBJECT = new RegExp(`^${IP_V6_REGEX}$`);\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ERC20Abi = void 0;\r\nexports.ERC20Abi = [\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"MintableToken\",\r\n \"interface_name\": \"src::mintable_token_interface::IMintableToken\"\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::integer::u256\",\r\n \"members\": [\r\n {\r\n \"name\": \"low\",\r\n \"type\": \"core::integer::u128\"\r\n },\r\n {\r\n \"name\": \"high\",\r\n \"type\": \"core::integer::u128\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"src::mintable_token_interface::IMintableToken\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"permissioned_mint\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"permissioned_burn\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"MintableTokenCamelImpl\",\r\n \"interface_name\": \"src::mintable_token_interface::IMintableTokenCamel\"\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"src::mintable_token_interface::IMintableTokenCamel\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"permissionedMint\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"permissionedBurn\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"Replaceable\",\r\n \"interface_name\": \"src::replaceability_interface::IReplaceable\"\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::array::Span::\",\r\n \"members\": [\r\n {\r\n \"name\": \"snapshot\",\r\n \"type\": \"@core::array::Array::\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"src::replaceability_interface::EICData\",\r\n \"members\": [\r\n {\r\n \"name\": \"eic_hash\",\r\n \"type\": \"core::starknet::class_hash::ClassHash\"\r\n },\r\n {\r\n \"name\": \"eic_init_data\",\r\n \"type\": \"core::array::Span::\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"enum\",\r\n \"name\": \"core::option::Option::\",\r\n \"variants\": [\r\n {\r\n \"name\": \"Some\",\r\n \"type\": \"src::replaceability_interface::EICData\"\r\n },\r\n {\r\n \"name\": \"None\",\r\n \"type\": \"()\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"enum\",\r\n \"name\": \"core::bool\",\r\n \"variants\": [\r\n {\r\n \"name\": \"False\",\r\n \"type\": \"()\"\r\n },\r\n {\r\n \"name\": \"True\",\r\n \"type\": \"()\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"src::replaceability_interface::ImplementationData\",\r\n \"members\": [\r\n {\r\n \"name\": \"impl_hash\",\r\n \"type\": \"core::starknet::class_hash::ClassHash\"\r\n },\r\n {\r\n \"name\": \"eic_data\",\r\n \"type\": \"core::option::Option::\"\r\n },\r\n {\r\n \"name\": \"final\",\r\n \"type\": \"core::bool\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"src::replaceability_interface::IReplaceable\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_upgrade_delay\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u64\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_impl_activation_time\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"implementation_data\",\r\n \"type\": \"src::replaceability_interface::ImplementationData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u64\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"add_new_implementation\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"implementation_data\",\r\n \"type\": \"src::replaceability_interface::ImplementationData\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"remove_implementation\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"implementation_data\",\r\n \"type\": \"src::replaceability_interface::ImplementationData\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"replace_to\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"implementation_data\",\r\n \"type\": \"src::replaceability_interface::ImplementationData\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"AccessControlImplExternal\",\r\n \"interface_name\": \"src::access_control_interface::IAccessControl\"\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"src::access_control_interface::IAccessControl\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"has_role\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"role\",\r\n \"type\": \"core::felt252\"\r\n },\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_role_admin\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"role\",\r\n \"type\": \"core::felt252\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::felt252\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"RolesImpl\",\r\n \"interface_name\": \"src::roles_interface::IMinimalRoles\"\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"src::roles_interface::IMinimalRoles\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"is_governance_admin\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"is_upgrade_governor\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"register_governance_admin\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"remove_governance_admin\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"register_upgrade_governor\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"remove_upgrade_governor\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"renounce\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"role\",\r\n \"type\": \"core::felt252\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"ERC20Impl\",\r\n \"interface_name\": \"openzeppelin::token::erc20::interface::IERC20\"\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"openzeppelin::token::erc20::interface::IERC20\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"name\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::felt252\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"symbol\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::felt252\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"decimals\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u8\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"total_supply\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"balance_of\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"allowance\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"owner\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"spender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"transfer\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"recipient\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"transfer_from\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"sender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"recipient\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"approve\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"spender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"external\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"ERC20CamelOnlyImpl\",\r\n \"interface_name\": \"openzeppelin::token::erc20::interface::IERC20CamelOnly\"\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"openzeppelin::token::erc20::interface::IERC20CamelOnly\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"totalSupply\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"balanceOf\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"transferFrom\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"sender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"recipient\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"external\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"constructor\",\r\n \"name\": \"constructor\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"name\",\r\n \"type\": \"core::felt252\"\r\n },\r\n {\r\n \"name\": \"symbol\",\r\n \"type\": \"core::felt252\"\r\n },\r\n {\r\n \"name\": \"decimals\",\r\n \"type\": \"core::integer::u8\"\r\n },\r\n {\r\n \"name\": \"initial_supply\",\r\n \"type\": \"core::integer::u256\"\r\n },\r\n {\r\n \"name\": \"recipient\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"permitted_minter\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"provisional_governance_admin\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"upgrade_delay\",\r\n \"type\": \"core::integer::u64\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"increase_allowance\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"spender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"added_value\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"decrease_allowance\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"spender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"subtracted_value\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"increaseAllowance\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"spender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"addedValue\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"decreaseAllowance\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"spender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"subtractedValue\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::bool\"\r\n }\r\n ],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"openzeppelin::token::erc20_v070::erc20::ERC20::Transfer\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"from\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"to\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"value\",\r\n \"type\": \"core::integer::u256\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"openzeppelin::token::erc20_v070::erc20::ERC20::Approval\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"owner\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"spender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"value\",\r\n \"type\": \"core::integer::u256\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::replaceability_interface::ImplementationAdded\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"implementation_data\",\r\n \"type\": \"src::replaceability_interface::ImplementationData\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::replaceability_interface::ImplementationRemoved\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"implementation_data\",\r\n \"type\": \"src::replaceability_interface::ImplementationData\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::replaceability_interface::ImplementationReplaced\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"implementation_data\",\r\n \"type\": \"src::replaceability_interface::ImplementationData\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::replaceability_interface::ImplementationFinalized\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"impl_hash\",\r\n \"type\": \"core::starknet::class_hash::ClassHash\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::access_control_interface::RoleGranted\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"role\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"sender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::access_control_interface::RoleRevoked\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"role\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"sender\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::access_control_interface::RoleAdminChanged\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"role\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"previous_admin_role\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"new_admin_role\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::roles_interface::GovernanceAdminAdded\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"added_account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"added_by\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::roles_interface::GovernanceAdminRemoved\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"removed_account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"removed_by\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::roles_interface::UpgradeGovernorAdded\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"added_account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"added_by\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"src::roles_interface::UpgradeGovernorRemoved\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"removed_account\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"removed_by\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"openzeppelin::token::erc20_v070::erc20::ERC20::Event\",\r\n \"kind\": \"enum\",\r\n \"variants\": [\r\n {\r\n \"name\": \"Transfer\",\r\n \"type\": \"openzeppelin::token::erc20_v070::erc20::ERC20::Transfer\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"Approval\",\r\n \"type\": \"openzeppelin::token::erc20_v070::erc20::ERC20::Approval\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"ImplementationAdded\",\r\n \"type\": \"src::replaceability_interface::ImplementationAdded\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"ImplementationRemoved\",\r\n \"type\": \"src::replaceability_interface::ImplementationRemoved\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"ImplementationReplaced\",\r\n \"type\": \"src::replaceability_interface::ImplementationReplaced\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"ImplementationFinalized\",\r\n \"type\": \"src::replaceability_interface::ImplementationFinalized\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"RoleGranted\",\r\n \"type\": \"src::access_control_interface::RoleGranted\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"RoleRevoked\",\r\n \"type\": \"src::access_control_interface::RoleRevoked\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"RoleAdminChanged\",\r\n \"type\": \"src::access_control_interface::RoleAdminChanged\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"GovernanceAdminAdded\",\r\n \"type\": \"src::roles_interface::GovernanceAdminAdded\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"GovernanceAdminRemoved\",\r\n \"type\": \"src::roles_interface::GovernanceAdminRemoved\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"UpgradeGovernorAdded\",\r\n \"type\": \"src::roles_interface::UpgradeGovernorAdded\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"UpgradeGovernorRemoved\",\r\n \"type\": \"src::roles_interface::UpgradeGovernorRemoved\",\r\n \"kind\": \"nested\"\r\n }\r\n ]\r\n }\r\n];\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.permuteDomain = permuteDomain;\nconst getPublicSuffix_1 = require(\"./getPublicSuffix\");\n/**\n * Generates the permutation of all possible values that {@link domainMatch} the given `domain` parameter. The\n * array is in shortest-to-longest order. Useful when building custom {@link Store} implementations.\n *\n * @example\n * ```\n * permuteDomain('foo.bar.example.com')\n * // ['example.com', 'bar.example.com', 'foo.bar.example.com']\n * ```\n *\n * @public\n * @param domain - the domain to generate permutations for\n * @param allowSpecialUseDomain - flag to control if {@link https://www.rfc-editor.org/rfc/rfc6761.html | Special Use Domains} such as `localhost` should be allowed\n */\nfunction permuteDomain(domain, allowSpecialUseDomain) {\n const pubSuf = (0, getPublicSuffix_1.getPublicSuffix)(domain, {\n allowSpecialUseDomain: allowSpecialUseDomain,\n });\n if (!pubSuf) {\n return undefined;\n }\n if (pubSuf == domain) {\n return [domain];\n }\n // Nuke trailing dot\n if (domain.slice(-1) == '.') {\n domain = domain.slice(0, -1);\n }\n const prefix = domain.slice(0, -(pubSuf.length + 1)); // \".example.com\"\n const parts = prefix.split('.').reverse();\n let cur = pubSuf;\n const permutations = [cur];\n while (parts.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const part = parts.shift();\n cur = `${part}.${cur}`;\n permutations.push(cur);\n }\n return permutations;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UnifiedSwapEventListener = void 0;\r\nclass UnifiedSwapEventListener {\r\n constructor(unifiedStorage, events) {\r\n this.listeners = {};\r\n this.storage = unifiedStorage;\r\n this.events = events;\r\n }\r\n async processEvents(events) {\r\n const swaps = await this.storage.query([[{ key: \"escrowHash\", value: events.map(event => event.escrowHash) }]], (val) => {\r\n const obj = this.listeners[val.type];\r\n if (obj == null)\r\n return null;\r\n return new obj.reviver(val);\r\n });\r\n const swapsObj = {};\r\n swaps.forEach(swap => swapsObj[swap.getEscrowHash()] = swap);\r\n for (let event of events) {\r\n const swap = swapsObj[event.escrowHash];\r\n if (swap == null)\r\n continue;\r\n const obj = this.listeners[swap.getType()];\r\n if (obj == null)\r\n continue;\r\n await obj.listener(event, swap);\r\n }\r\n }\r\n async start() {\r\n if (this.listener != null)\r\n return;\r\n await this.storage.init();\r\n await this.events.init();\r\n this.events.registerListener(this.listener = async (events) => {\r\n await this.processEvents(events);\r\n return true;\r\n });\r\n }\r\n stop() {\r\n this.events.unregisterListener(this.listener);\r\n }\r\n registerListener(type, listener, reviver) {\r\n this.listeners[type] = {\r\n listener,\r\n reviver\r\n };\r\n }\r\n unregisterListener(type) {\r\n if (this.listeners[type])\r\n return false;\r\n delete this.listeners[type];\r\n return true;\r\n }\r\n}\r\nexports.UnifiedSwapEventListener = UnifiedSwapEventListener;\r\n","export * from './actions/index.js';\nexport * from './constants.js';\nexport * from './errors.js';\nexport * from './extensions/index.js';\nexport * from './instructions/index.js';\nexport * from './state/index.js';\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EscrowManagerAbi = void 0;\r\nexports.EscrowManagerAbi = [\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"EscrowManagerImpl\",\r\n \"interface_name\": \"escrow_manager::IEscrowManager\"\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::integer::u256\",\r\n \"members\": [\r\n {\r\n \"name\": \"low\",\r\n \"type\": \"core::integer::u128\"\r\n },\r\n {\r\n \"name\": \"high\",\r\n \"type\": \"core::integer::u128\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::array::Span::\",\r\n \"members\": [\r\n {\r\n \"name\": \"snapshot\",\r\n \"type\": \"@core::array::Array::\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"escrow_manager::structs::contract_call::ContractCall\",\r\n \"members\": [\r\n {\r\n \"name\": \"address\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"entrypoint\",\r\n \"type\": \"core::felt252\"\r\n },\r\n {\r\n \"name\": \"calldata\",\r\n \"type\": \"core::array::Span::\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::array::Span::\",\r\n \"members\": [\r\n {\r\n \"name\": \"snapshot\",\r\n \"type\": \"@core::array::Array::\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"escrow_manager::structs::escrow::EscrowData\",\r\n \"members\": [\r\n {\r\n \"name\": \"offerer\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"claimer\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"token\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"refund_handler\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"claim_handler\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"flags\",\r\n \"type\": \"core::integer::u128\"\r\n },\r\n {\r\n \"name\": \"claim_data\",\r\n \"type\": \"core::felt252\"\r\n },\r\n {\r\n \"name\": \"refund_data\",\r\n \"type\": \"core::felt252\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n },\r\n {\r\n \"name\": \"fee_token\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"security_deposit\",\r\n \"type\": \"core::integer::u256\"\r\n },\r\n {\r\n \"name\": \"claimer_bounty\",\r\n \"type\": \"core::integer::u256\"\r\n },\r\n {\r\n \"name\": \"success_action\",\r\n \"type\": \"core::array::Span::\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"escrow_manager::IEscrowManager\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initialize\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"escrow\",\r\n \"type\": \"escrow_manager::structs::escrow::EscrowData\"\r\n },\r\n {\r\n \"name\": \"signature\",\r\n \"type\": \"core::array::Array::\"\r\n },\r\n {\r\n \"name\": \"timeout\",\r\n \"type\": \"core::integer::u64\"\r\n },\r\n {\r\n \"name\": \"extra_data\",\r\n \"type\": \"core::array::Span::\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"claim\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"escrow\",\r\n \"type\": \"escrow_manager::structs::escrow::EscrowData\"\r\n },\r\n {\r\n \"name\": \"witness\",\r\n \"type\": \"core::array::Array::\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"refund\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"escrow\",\r\n \"type\": \"escrow_manager::structs::escrow::EscrowData\"\r\n },\r\n {\r\n \"name\": \"witness\",\r\n \"type\": \"core::array::Array::\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"cooperative_refund\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"escrow\",\r\n \"type\": \"escrow_manager::structs::escrow::EscrowData\"\r\n },\r\n {\r\n \"name\": \"signature\",\r\n \"type\": \"core::array::Array::\"\r\n },\r\n {\r\n \"name\": \"timeout\",\r\n \"type\": \"core::integer::u64\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"LPVaultImpl\",\r\n \"interface_name\": \"escrow_manager::components::lp_vault::ILPVault\"\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\",\r\n \"members\": [\r\n {\r\n \"name\": \"snapshot\",\r\n \"type\": \"@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"escrow_manager::components::lp_vault::ILPVault\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"deposit\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"token\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"withdraw\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"token\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n },\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n },\r\n {\r\n \"name\": \"destination\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_balance\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::array::Array::\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"ReputationTrackerImpl\",\r\n \"interface_name\": \"escrow_manager::components::reputation::IReputationTracker\"\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\",\r\n \"members\": [\r\n {\r\n \"name\": \"snapshot\",\r\n \"type\": \"@core::array::Array::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"escrow_manager::state::reputation::Reputation\",\r\n \"members\": [\r\n {\r\n \"name\": \"amount\",\r\n \"type\": \"core::integer::u256\"\r\n },\r\n {\r\n \"name\": \"count\",\r\n \"type\": \"core::integer::u128\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"escrow_manager::components::reputation::IReputationTracker\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_reputation\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"core::array::Span::<(core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress, core::starknet::contract_address::ContractAddress)>\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::array::Array::<[escrow_manager::state::reputation::Reputation; 3]>\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"EscrowStorageImpl\",\r\n \"interface_name\": \"escrow_manager::components::escrow_storage::IEscrowStorage\"\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"escrow_manager::state::escrow::EscrowState\",\r\n \"members\": [\r\n {\r\n \"name\": \"init_blockheight\",\r\n \"type\": \"core::integer::u64\"\r\n },\r\n {\r\n \"name\": \"finish_blockheight\",\r\n \"type\": \"core::integer::u64\"\r\n },\r\n {\r\n \"name\": \"state\",\r\n \"type\": \"core::integer::u8\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::array::Span::\",\r\n \"members\": [\r\n {\r\n \"name\": \"snapshot\",\r\n \"type\": \"@core::array::Array::\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"escrow_manager::components::escrow_storage::IEscrowStorage\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_state\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"escrow\",\r\n \"type\": \"escrow_manager::structs::escrow::EscrowData\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"escrow_manager::state::escrow::EscrowState\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_hash_state\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"escrow_hash\",\r\n \"type\": \"core::felt252\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"escrow_manager::state::escrow::EscrowState\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_hash_state_multiple\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"escrow_hashes\",\r\n \"type\": \"core::array::Span::\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::array::Span::\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"constructor\",\r\n \"name\": \"constructor\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"escrow_manager::components::lp_vault::lp_vault::Event\",\r\n \"kind\": \"enum\",\r\n \"variants\": []\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"escrow_manager::components::reputation::reputation::Event\",\r\n \"kind\": \"enum\",\r\n \"variants\": []\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"escrow_manager::components::escrow_storage::escrow_storage::Event\",\r\n \"kind\": \"enum\",\r\n \"variants\": []\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"escrow_manager::events::Initialize\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"offerer\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"claimer\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"claim_data\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"escrow_hash\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"claim_handler\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"refund_handler\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"escrow_manager::events::Claim\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"offerer\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"claimer\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"claim_data\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"escrow_hash\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"witness_result\",\r\n \"type\": \"core::array::Span::\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"claim_handler\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"escrow_manager::events::Refund\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"offerer\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"claimer\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"claim_data\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"escrow_hash\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"witness_result\",\r\n \"type\": \"core::array::Span::\",\r\n \"kind\": \"data\"\r\n },\r\n {\r\n \"name\": \"refund_handler\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"escrow_manager::events::SuccessActionExecuteError\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"error\",\r\n \"type\": \"core::array::Span::\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"escrow_manager::EscrowManager::Event\",\r\n \"kind\": \"enum\",\r\n \"variants\": [\r\n {\r\n \"name\": \"LPVaultEvent\",\r\n \"type\": \"escrow_manager::components::lp_vault::lp_vault::Event\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"ReputationTrackerEvent\",\r\n \"type\": \"escrow_manager::components::reputation::reputation::Event\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"EscrowStorageEvent\",\r\n \"type\": \"escrow_manager::components::escrow_storage::escrow_storage::Event\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"Initialize\",\r\n \"type\": \"escrow_manager::events::Initialize\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"Claim\",\r\n \"type\": \"escrow_manager::events::Claim\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"Refund\",\r\n \"type\": \"escrow_manager::events::Refund\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"SuccessActionExecuteError\",\r\n \"type\": \"escrow_manager::events::SuccessActionExecuteError\",\r\n \"kind\": \"nested\"\r\n }\r\n ]\r\n }\r\n];\r\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta } from '@solana/web3.js';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n TokenUnsupportedInstructionError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeMintCloseAuthorityInstructionData {\n instruction: TokenInstruction.InitializeMintCloseAuthority;\n closeAuthorityOption: 1 | 0;\n closeAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const initializeMintCloseAuthorityInstructionData = struct([\n u8('instruction'),\n u8('closeAuthorityOption'),\n publicKey('closeAuthority'),\n]);\n\n/**\n * Construct an InitializeMintCloseAuthority instruction\n *\n * @param mint Token mint account\n * @param closeAuthority Optional authority that can close the mint\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMintCloseAuthorityInstruction(\n mint: PublicKey,\n closeAuthority: PublicKey | null,\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeMintCloseAuthorityInstructionData.span);\n initializeMintCloseAuthorityInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMintCloseAuthority,\n closeAuthorityOption: closeAuthority ? 1 : 0,\n closeAuthority: closeAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMintCloseAuthority instruction */\nexport interface DecodedInitializeMintCloseAuthorityInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeMintCloseAuthority;\n closeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMintCloseAuthority instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMintCloseAuthorityInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedInitializeMintCloseAuthorityInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMintCloseAuthorityInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeInitializeMintCloseAuthorityInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMintCloseAuthority)\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMintCloseAuthority instruction */\nexport interface DecodedInitializeMintCloseAuthorityInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n closeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMintCloseAuthority instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMintCloseAuthorityInstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedInitializeMintCloseAuthorityInstructionUnchecked {\n const { instruction, closeAuthorityOption, closeAuthority } =\n initializeMintCloseAuthorityInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n },\n data: {\n instruction,\n closeAuthority: closeAuthorityOption ? closeAuthority : null,\n },\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaChains = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nexports.SolanaChains = {\r\n [base_1.BitcoinNetwork.TESTNET]: {\r\n addresses: {\r\n swapContract: \"4hfUykhqmD7ZRvNh1HuzVKEY7ToENixtdUKZspNDCrEM\",\r\n btcRelayContract: \"3KHSHFpEK6bsjg3bqcxQ9qssJYtRCMi2S9TYVe4q6CQc\"\r\n }\r\n },\r\n [base_1.BitcoinNetwork.MAINNET]: {\r\n addresses: {\r\n swapContract: \"4hfUykhqmD7ZRvNh1HuzVKEY7ToENixtdUKZspNDCrEM\",\r\n btcRelayContract: \"3KHSHFpEK6bsjg3bqcxQ9qssJYtRCMi2S9TYVe4q6CQc\"\r\n }\r\n }\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ISwapWrapper = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst events_1 = require(\"events\");\r\nconst IntermediaryError_1 = require(\"../errors/IntermediaryError\");\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nclass ISwapWrapper {\r\n /**\r\n * @param chainIdentifier\r\n * @param unifiedStorage\r\n * @param unifiedChainEvents\r\n * @param contract Underlying contract handling the swaps\r\n * @param prices Swap pricing handler\r\n * @param tokens Chain specific token data\r\n * @param swapDataDeserializer Deserializer for SwapData\r\n * @param options\r\n * @param events Instance to use for emitting events\r\n */\r\n constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, options, events) {\r\n this.logger = (0, Utils_1.getLogger)(this.constructor.name + \": \");\r\n this.pendingSwaps = new Map();\r\n this.isInitialized = false;\r\n this.tickInterval = null;\r\n this.unifiedStorage = unifiedStorage;\r\n this.unifiedChainEvents = unifiedChainEvents;\r\n this.chainIdentifier = chainIdentifier;\r\n this.contract = contract;\r\n this.prices = prices;\r\n this.swapDataDeserializer = swapDataDeserializer;\r\n this.events = events || new events_1.EventEmitter();\r\n this.options = options;\r\n this.tokens = {};\r\n for (let tokenData of tokens) {\r\n const chainData = tokenData.chains[chainIdentifier];\r\n if (chainData == null)\r\n continue;\r\n this.tokens[chainData.address] = {\r\n chain: \"SC\",\r\n chainId: this.chainIdentifier,\r\n address: chainData.address,\r\n decimals: chainData.decimals,\r\n ticker: tokenData.ticker,\r\n name: tokenData.name,\r\n displayDecimals: chainData.displayDecimals\r\n };\r\n }\r\n }\r\n /**\r\n * Pre-fetches swap price for a given swap\r\n *\r\n * @param amountData\r\n * @param abortSignal\r\n * @protected\r\n * @returns Price of the token in uSats (micro sats)\r\n */\r\n preFetchPrice(amountData, abortSignal) {\r\n return this.prices.preFetchPrice(this.chainIdentifier, amountData.token, abortSignal).catch(e => {\r\n this.logger.error(\"preFetchPrice(): Error: \", e);\r\n return null;\r\n });\r\n }\r\n /**\r\n * Pre-fetches signature verification data from the server's pre-sent promise, doesn't throw, instead returns null\r\n *\r\n * @param signDataPrefetch Promise that resolves when we receive \"signDataPrefetch\" from the LP in streaming mode\r\n * @protected\r\n * @returns Pre-fetched signature verification data or null if failed\r\n */\r\n preFetchSignData(signDataPrefetch) {\r\n if (this.contract.preFetchForInitSignatureVerification == null)\r\n return Promise.resolve(null);\r\n return signDataPrefetch.then(obj => {\r\n if (obj == null)\r\n return null;\r\n return this.contract.preFetchForInitSignatureVerification(obj);\r\n }).catch(e => {\r\n this.logger.error(\"preFetchSignData(): Error: \", e);\r\n return null;\r\n });\r\n }\r\n /**\r\n * Verifies swap initialization signature returned by the intermediary\r\n *\r\n * @param data Parsed swap data from the intermediary\r\n * @param signature Response of the intermediary\r\n * @param feeRatePromise Pre-fetched fee rate promise\r\n * @param preFetchSignatureVerificationData Pre-fetched signature verification data\r\n * @param abortSignal\r\n * @protected\r\n * @returns Swap initialization signature expiry\r\n * @throws {SignatureVerificationError} when swap init signature is invalid\r\n */\r\n async verifyReturnedSignature(data, signature, feeRatePromise, preFetchSignatureVerificationData, abortSignal) {\r\n const [feeRate, preFetchedSignatureData] = await Promise.all([feeRatePromise, preFetchSignatureVerificationData]);\r\n await (0, Utils_1.tryWithRetries)(() => this.contract.isValidInitAuthorization(data, signature, feeRate, preFetchedSignatureData), null, base_1.SignatureVerificationError, abortSignal);\r\n return await (0, Utils_1.tryWithRetries)(() => this.contract.getInitAuthorizationExpiry(data, signature, preFetchedSignatureData), null, base_1.SignatureVerificationError, abortSignal);\r\n }\r\n /**\r\n * Verifies returned price for swaps\r\n *\r\n * @param lpServiceData Service data for the service in question (TO_BTCLN, TO_BTC, etc.) of the given intermediary\r\n * @param send Whether this is a send (SOL -> SC) or receive (BTC -> SC) swap\r\n * @param amountSats Amount in BTC\r\n * @param amountToken Amount in token\r\n * @param token Token used in the swap\r\n * @param feeData Fee data as returned by the intermediary\r\n * @param pricePrefetchPromise Price pre-fetch promise\r\n * @param abortSignal\r\n * @protected\r\n * @returns Price info object\r\n * @throws {IntermediaryError} if the calculated fee is too high\r\n */\r\n async verifyReturnedPrice(lpServiceData, send, amountSats, amountToken, token, feeData, pricePrefetchPromise = Promise.resolve(null), abortSignal) {\r\n const swapBaseFee = BigInt(lpServiceData.swapBaseFee);\r\n const swapFeePPM = BigInt(lpServiceData.swapFeePPM);\r\n if (send)\r\n amountToken = amountToken - feeData.networkFee;\r\n const isValidAmount = await (send ?\r\n this.prices.isValidAmountSend(this.chainIdentifier, amountSats, swapBaseFee, swapFeePPM, amountToken, token, abortSignal, await pricePrefetchPromise) :\r\n this.prices.isValidAmountReceive(this.chainIdentifier, amountSats, swapBaseFee, swapFeePPM, amountToken, token, abortSignal, await pricePrefetchPromise));\r\n if (!isValidAmount.isValid)\r\n throw new IntermediaryError_1.IntermediaryError(\"Fee too high\");\r\n return isValidAmount;\r\n }\r\n /**\r\n * Processes a single SC on-chain event\r\n * @private\r\n * @param event\r\n * @param swap\r\n */\r\n async processEvent(event, swap) {\r\n if (swap == null)\r\n return;\r\n let swapChanged = false;\r\n if (event instanceof base_1.InitializeEvent) {\r\n swapChanged = await this.processEventInitialize(swap, event);\r\n if (event.meta?.txId != null && swap.commitTxId !== event.meta.txId) {\r\n swap.commitTxId = event.meta.txId;\r\n swapChanged ||= true;\r\n }\r\n }\r\n if (event instanceof base_1.ClaimEvent) {\r\n swapChanged = await this.processEventClaim(swap, event);\r\n if (event.meta?.txId != null && swap.claimTxId !== event.meta.txId) {\r\n swap.claimTxId = event.meta.txId;\r\n swapChanged ||= true;\r\n }\r\n }\r\n if (event instanceof base_1.RefundEvent) {\r\n swapChanged = await this.processEventRefund(swap, event);\r\n if (event.meta?.txId != null && swap.refundTxId !== event.meta.txId) {\r\n swap.refundTxId = event.meta.txId;\r\n swapChanged ||= true;\r\n }\r\n }\r\n this.logger.info(\"processEvents(): \" + event.constructor.name + \" processed for \" + swap.getIdentifierHashString() + \" swap: \", swap);\r\n if (swapChanged) {\r\n await swap._saveAndEmit();\r\n }\r\n return true;\r\n }\r\n /**\r\n * Initializes the swap wrapper, needs to be called before any other action can be taken\r\n */\r\n async init(noTimers = false, noCheckPastSwaps = false) {\r\n if (this.isInitialized)\r\n return;\r\n const hasEventListener = this.processEventRefund != null || this.processEventClaim != null || this.processEventInitialize != null;\r\n //Save events received in the meantime into the event queue and process them only after we've checked and\r\n // processed all the past swaps\r\n let eventQueue = [];\r\n const initListener = (event, swap) => {\r\n eventQueue.push({ event, swap });\r\n return Promise.resolve();\r\n };\r\n if (hasEventListener)\r\n this.unifiedChainEvents.registerListener(this.TYPE, initListener, this.swapDeserializer.bind(null, this));\r\n if (!noCheckPastSwaps)\r\n await this.checkPastSwaps();\r\n if (hasEventListener) {\r\n //Process accumulated event queue\r\n for (let event of eventQueue) {\r\n await this.processEvent(event.event, event.swap);\r\n }\r\n //Register the correct event handler\r\n this.unifiedChainEvents.unregisterListener(this.TYPE);\r\n this.unifiedChainEvents.registerListener(this.TYPE, this.processEvent.bind(this), this.swapDeserializer.bind(null, this));\r\n }\r\n if (!noTimers)\r\n this.startTickInterval();\r\n this.logger.info(\"init(): Swap wrapper initialized\");\r\n this.isInitialized = true;\r\n }\r\n startTickInterval() {\r\n if (this.tickSwapState == null || this.tickSwapState.length === 0)\r\n return;\r\n this.tickInterval = setInterval(() => {\r\n this.tick();\r\n }, 1000);\r\n }\r\n async checkPastSwaps(pastSwaps) {\r\n if (pastSwaps == null)\r\n pastSwaps = await this.unifiedStorage.query([[{ key: \"type\", value: this.TYPE }, { key: \"state\", value: this.pendingSwapStates }]], (val) => new this.swapDeserializer(this, val));\r\n //Check past swaps\r\n const changedSwaps = [];\r\n const removeSwaps = [];\r\n await Promise.all(pastSwaps.map((swap) => swap._sync(false).then(changed => {\r\n if (swap.isQuoteExpired()) {\r\n removeSwaps.push(swap);\r\n }\r\n else {\r\n if (changed)\r\n changedSwaps.push(swap);\r\n }\r\n }).catch(e => this.logger.error(\"init(): Error when checking swap \" + swap.getIdentifierHashString() + \": \", e))));\r\n await this.unifiedStorage.removeAll(removeSwaps);\r\n await this.unifiedStorage.saveAll(changedSwaps);\r\n }\r\n async tick(swaps) {\r\n if (swaps == null)\r\n swaps = await this.unifiedStorage.query([[{ key: \"type\", value: this.TYPE }, { key: \"state\", value: this.tickSwapState }]], (val) => new this.swapDeserializer(this, val));\r\n for (let pendingSwap of this.pendingSwaps.values()) {\r\n const value = pendingSwap.deref();\r\n if (value != null)\r\n value._tick(true);\r\n }\r\n swaps.forEach(value => {\r\n value._tick(true);\r\n });\r\n }\r\n saveSwapData(swap) {\r\n if (!swap.isInitiated()) {\r\n this.logger.debug(\"saveSwapData(): Swap \" + swap.getId() + \" not initiated, saving to pending swaps\");\r\n this.pendingSwaps.set(swap.getId(), new WeakRef(swap));\r\n return Promise.resolve();\r\n }\r\n else {\r\n this.pendingSwaps.delete(swap.getId());\r\n }\r\n return this.unifiedStorage.save(swap);\r\n }\r\n removeSwapData(swap) {\r\n this.pendingSwaps.delete(swap.getId());\r\n if (!swap.isInitiated)\r\n return Promise.resolve();\r\n return this.unifiedStorage.remove(swap);\r\n }\r\n /**\r\n * Un-subscribes from event listeners on Solana\r\n */\r\n async stop() {\r\n this.isInitialized = false;\r\n this.unifiedChainEvents.unregisterListener(this.TYPE);\r\n this.logger.info(\"stop(): Swap wrapper stopped\");\r\n if (this.tickInterval != null)\r\n clearInterval(this.tickInterval);\r\n }\r\n /**\r\n * Returns the smart chain's native token used to pay for fees\r\n */\r\n getNativeToken() {\r\n return this.tokens[this.contract.getNativeCurrencyAddress()];\r\n }\r\n}\r\nexports.ISwapWrapper = ISwapWrapper;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.toBigInt = exports.toBN = exports.toEscrowHash = exports.fromClaimHash = exports.toClaimHash = exports.SolanaTxUtils = exports.tryWithRetries = exports.getLogger = exports.onceAsync = exports.timeoutPromise = void 0;\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst BN = require(\"bn.js\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst createHash = require(\"create-hash\");\r\nfunction timeoutPromise(timeoutMillis, abortSignal) {\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(resolve, timeoutMillis);\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => {\r\n clearTimeout(timeout);\r\n reject(new Error(\"Aborted\"));\r\n });\r\n });\r\n}\r\nexports.timeoutPromise = timeoutPromise;\r\nfunction onceAsync(executor) {\r\n let promise;\r\n return () => {\r\n if (promise == null) {\r\n promise = executor();\r\n return promise;\r\n }\r\n else {\r\n return promise.catch(() => promise = executor());\r\n }\r\n };\r\n}\r\nexports.onceAsync = onceAsync;\r\nfunction getLogger(prefix) {\r\n return {\r\n debug: (msg, ...args) => console.debug(prefix + msg, ...args),\r\n info: (msg, ...args) => console.info(prefix + msg, ...args),\r\n warn: (msg, ...args) => console.warn(prefix + msg, ...args),\r\n error: (msg, ...args) => console.error(prefix + msg, ...args)\r\n };\r\n}\r\nexports.getLogger = getLogger;\r\nconst logger = getLogger(\"Utils: \");\r\nasync function tryWithRetries(func, retryPolicy, errorAllowed, abortSignal) {\r\n retryPolicy = retryPolicy || {};\r\n retryPolicy.maxRetries = retryPolicy.maxRetries || 5;\r\n retryPolicy.delay = retryPolicy.delay || 500;\r\n retryPolicy.exponential = retryPolicy.exponential == null ? true : retryPolicy.exponential;\r\n let err = null;\r\n for (let i = 0; i < retryPolicy.maxRetries; i++) {\r\n try {\r\n const resp = await func();\r\n return resp;\r\n }\r\n catch (e) {\r\n if (errorAllowed != null && errorAllowed(e))\r\n throw e;\r\n err = e;\r\n logger.error(\"tryWithRetries(): error on try number: \" + i, e);\r\n }\r\n if (abortSignal != null && abortSignal.aborted)\r\n throw new Error(\"Aborted\");\r\n if (i !== retryPolicy.maxRetries - 1) {\r\n await timeoutPromise(retryPolicy.exponential ? retryPolicy.delay * Math.pow(2, i) : retryPolicy.delay, abortSignal);\r\n }\r\n }\r\n throw err;\r\n}\r\nexports.tryWithRetries = tryWithRetries;\r\nclass SolanaTxUtils {\r\n /**\r\n * Compact u16 array header size\r\n * @param n elements in the compact array\r\n * @returns size in bytes of array header\r\n */\r\n static compactHeader(n) {\r\n return (n <= SolanaTxUtils.LOW_VALUE ? 1 : n <= SolanaTxUtils.HIGH_VALUE ? 2 : 3);\r\n }\r\n /**\r\n * Compact u16 array size\r\n * @param n elements in the compact array\r\n * @param size bytes per each element\r\n * @returns size in bytes of array\r\n */\r\n static compactArraySize(n, size) {\r\n return SolanaTxUtils.compactHeader(n) + n * size;\r\n }\r\n /**\r\n * Returns # number of non-compute budget related instructions\r\n *\r\n * @param tx\r\n */\r\n static getNonComputeBudgetIxs(tx) {\r\n let counter = 0;\r\n for (let ix of tx.instructions) {\r\n if (!ix.programId.equals(web3_js_1.ComputeBudgetProgram.programId))\r\n counter++;\r\n }\r\n return counter;\r\n }\r\n /**\r\n * @param tx a solana transaction\r\n * @param feePayer the publicKey of the signer\r\n * @returns size in bytes of the transaction\r\n */\r\n static getTxSize(tx, feePayer) {\r\n const feePayerPk = [feePayer.toBase58()];\r\n const signers = new Set(feePayerPk);\r\n const accounts = new Set(feePayerPk);\r\n const ixsSize = tx.instructions.reduce((acc, ix) => {\r\n ix.keys.forEach(({ pubkey, isSigner }) => {\r\n const pk = pubkey.toBase58();\r\n if (isSigner)\r\n signers.add(pk);\r\n accounts.add(pk);\r\n });\r\n accounts.add(ix.programId.toBase58());\r\n const nIndexes = ix.keys.length;\r\n const opaqueData = ix.data.length;\r\n return (acc +\r\n 1 + // PID index\r\n SolanaTxUtils.compactArraySize(nIndexes, 1) +\r\n SolanaTxUtils.compactArraySize(opaqueData, 1));\r\n }, 0);\r\n return (SolanaTxUtils.compactArraySize(signers.size, 64) + // signatures\r\n 3 + // header\r\n SolanaTxUtils.compactArraySize(accounts.size, 32) + // accounts\r\n 32 + // blockhash\r\n SolanaTxUtils.compactHeader(tx.instructions.length) + // instructions\r\n ixsSize);\r\n }\r\n ;\r\n}\r\nexports.SolanaTxUtils = SolanaTxUtils;\r\n// COMPACT ARRAY\r\nSolanaTxUtils.LOW_VALUE = 127; // 0x7f\r\nSolanaTxUtils.HIGH_VALUE = 16383; // 0x3fff\r\nfunction toClaimHash(paymentHash, nonce, confirmations) {\r\n return paymentHash +\r\n nonce.toString(16).padStart(16, \"0\") +\r\n confirmations.toString(16).padStart(4, \"0\");\r\n}\r\nexports.toClaimHash = toClaimHash;\r\nfunction fromClaimHash(claimHash) {\r\n if (claimHash.length !== 84)\r\n throw new Error(\"Claim hash invalid length: \" + claimHash.length);\r\n return {\r\n paymentHash: claimHash.slice(0, 64),\r\n nonce: new BN(claimHash.slice(64, 80), \"hex\"),\r\n confirmations: parseInt(claimHash.slice(80, 84), 16)\r\n };\r\n}\r\nexports.fromClaimHash = fromClaimHash;\r\nfunction toEscrowHash(paymentHash, sequence) {\r\n return createHash(\"sha256\").update(buffer_1.Buffer.concat([\r\n buffer_1.Buffer.from(paymentHash, \"hex\"),\r\n sequence.toArrayLike(buffer_1.Buffer, \"be\", 8)\r\n ])).digest().toString(\"hex\");\r\n}\r\nexports.toEscrowHash = toEscrowHash;\r\nfunction toBN(value) {\r\n if (value == null)\r\n return null;\r\n return new BN(value.toString(10));\r\n}\r\nexports.toBN = toBN;\r\nfunction toBigInt(value) {\r\n if (value == null)\r\n return null;\r\n return BigInt(value.toString(10));\r\n}\r\nexports.toBigInt = toBigInt;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_gavel_outline = void 0;\nvar ic_gavel_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M1 21h12v2H1v-2zM5.24 8.07l2.83-2.83 14.14 14.14-2.83 2.83L5.24 8.07zM12.32 1l5.66 5.66-2.83 2.83-5.66-5.66L12.32 1zM3.83 9.48l5.66 5.66-2.83 2.83L1 12.31l2.83-2.83z\"\n },\n \"children\": []\n }]\n};\nexports.ic_gavel_outline = ic_gavel_outline;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.streamingFetchPromise = void 0;\r\nconst SchemaVerifier_1 = require(\"../SchemaVerifier\");\r\nconst RequestError_1 = require(\"../../../errors/RequestError\");\r\nconst Utils_1 = require(\"../../Utils\");\r\nconst StreamParamEncoder_1 = require(\"./StreamParamEncoder\");\r\nconst ResponseParamDecoder_1 = require(\"./ResponseParamDecoder\");\r\nconst logger = (0, Utils_1.getLogger)(\"StreamingFetch: \");\r\n//https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests#feature_detection\r\nconst supportsRequestStreams = (() => {\r\n try {\r\n let duplexAccessed = false;\r\n const request = new Request('https://example.com/', {\r\n body: new ReadableStream(),\r\n method: 'POST',\r\n get duplex() {\r\n duplexAccessed = true;\r\n return 'half';\r\n },\r\n });\r\n const hasContentType = request.headers.has('Content-Type');\r\n return duplexAccessed && !hasContentType;\r\n }\r\n catch (e) {\r\n console.error(\"Error checking environment support for HTTP request stream\", e);\r\n return false;\r\n }\r\n})();\r\nlogger.info(\"Environment supports request stream: \" + supportsRequestStreams);\r\n/**\r\n * Sends a POST request to the specified URL in a streaming request/response mode\r\n *\r\n * @param url URL to send the request to\r\n * @param body An object containing properties that should be sent to the server, can be Promise or any\r\n * @param schema Schema of the response that should be received from the server\r\n * @param timeout Timeout in millseconds for the request to succeed & all its response properties to resolve\r\n * @param signal Abort signal\r\n * @param streamRequest Whether the request should be streamed or not\r\n * @throws {RequestError} When the response code is not 200\r\n */\r\nasync function streamingFetchPromise(url, body, schema, timeout, signal, streamRequest) {\r\n if (streamRequest == null)\r\n streamRequest = supportsRequestStreams;\r\n if (timeout != null)\r\n signal = (0, Utils_1.timeoutSignal)(timeout, new Error(\"Network request timed out\"), signal);\r\n const init = {\r\n method: \"POST\",\r\n headers: {}\r\n };\r\n const startTime = Date.now();\r\n const immediateValues = {};\r\n const promises = [];\r\n if (!streamRequest) {\r\n for (let key in body) {\r\n if (body[key] instanceof Promise) {\r\n promises.push(body[key].then((val) => {\r\n immediateValues[key] = val;\r\n }));\r\n }\r\n else {\r\n immediateValues[key] = body[key];\r\n }\r\n }\r\n try {\r\n await Promise.all(promises);\r\n }\r\n catch (e) {\r\n e._inputPromiseError = true;\r\n throw e;\r\n }\r\n if (signal != null)\r\n signal.throwIfAborted();\r\n logger.debug(url + \": Sending request (\" + (Date.now() - startTime) + \"ms) (non-streaming): \", immediateValues);\r\n init.body = JSON.stringify(immediateValues);\r\n init.headers['content-type'] = \"application/json\";\r\n }\r\n else {\r\n const outputStream = new StreamParamEncoder_1.StreamParamEncoder();\r\n let hasPromiseInBody = false;\r\n for (let key in body) {\r\n if (body[key] instanceof Promise) {\r\n promises.push(body[key].then((val) => {\r\n logger.debug(url + \": Send param (\" + (Date.now() - startTime) + \"ms) (streaming): \", { [key]: val });\r\n return outputStream.writeParams({\r\n [key]: val\r\n });\r\n }));\r\n hasPromiseInBody = true;\r\n }\r\n else {\r\n immediateValues[key] = body[key];\r\n }\r\n }\r\n if (hasPromiseInBody) {\r\n init.body = outputStream.getReadableStream();\r\n init.headers['content-type'] = \"application/x-multiple-json\";\r\n init.duplex = \"half\";\r\n logger.debug(url + \": Sending request (\" + (Date.now() - startTime) + \"ms) (streaming): \", immediateValues);\r\n promises.push(outputStream.writeParams(immediateValues));\r\n const abortController = (0, Utils_1.extendAbortController)(signal);\r\n signal = abortController.signal;\r\n Promise.all(promises).then(() => outputStream.end()).catch(e => {\r\n e._inputPromiseError = true;\r\n abortController.abort(e);\r\n });\r\n signal.addEventListener(\"abort\", () => outputStream.end());\r\n }\r\n else {\r\n logger.debug(url + \": Sending request (\" + (Date.now() - startTime) + \"ms) (non-streaming): \", immediateValues);\r\n init.body = JSON.stringify(immediateValues);\r\n init.headers['content-type'] = \"application/json\";\r\n }\r\n }\r\n if (signal != null)\r\n init.signal = signal;\r\n init.headers['accept'] = \"application/x-multiple-json\";\r\n const resp = await fetch(url, init).catch(e => {\r\n if (init.signal != null && e.name === \"AbortError\") {\r\n throw init.signal.reason;\r\n }\r\n else {\r\n if (e.message != null)\r\n e.message += streamRequest ? \" (streaming req)\" : \" (non streaming req)\";\r\n throw e;\r\n }\r\n });\r\n logger.debug(url + \": Response status (\" + (Date.now() - startTime) + \"ms) \" + (streamRequest ? \"(streaming req)\" : \"(non streaming req)\") + \": \", resp.status);\r\n if (resp.status !== 200) {\r\n let respTxt;\r\n try {\r\n respTxt = await resp.text();\r\n }\r\n catch (e) {\r\n throw new RequestError_1.RequestError(resp.statusText, resp.status);\r\n }\r\n throw new RequestError_1.RequestError(respTxt, resp.status);\r\n }\r\n if (resp.headers.get(\"content-type\") !== \"application/x-multiple-json\") {\r\n const respBody = await resp.json();\r\n logger.debug(url + \": Response read (\" + (Date.now() - startTime) + \"ms) (non streaming resp): \", respBody);\r\n return (0, Utils_1.objectMap)(schema, (schemaValue, key) => {\r\n const value = respBody[key];\r\n const result = (0, SchemaVerifier_1.verifyField)(schemaValue, value);\r\n if (result === undefined) {\r\n return Promise.reject(new Error(\"Invalid field value\"));\r\n }\r\n else {\r\n return Promise.resolve(result);\r\n }\r\n });\r\n }\r\n else {\r\n const decoder = new ResponseParamDecoder_1.ResponseParamDecoder(resp, init.signal);\r\n return (0, Utils_1.objectMap)(schema, (schemaValue, key) => decoder.getParam(key).catch(e => {\r\n if ((0, SchemaVerifier_1.isOptionalField)(schemaValue))\r\n return undefined;\r\n throw e;\r\n }).then(value => {\r\n logger.debug(url + \": Response frame read (\" + (Date.now() - startTime) + \"ms) (streaming resp): \", { [key]: value });\r\n const result = (0, SchemaVerifier_1.verifyField)(schemaValue, value);\r\n if (result === undefined) {\r\n return Promise.reject(new Error(\"Invalid field value\"));\r\n }\r\n else {\r\n return result;\r\n }\r\n }));\r\n }\r\n}\r\nexports.streamingFetchPromise = streamingFetchPromise;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BigIntBufferUtils = void 0;\r\nconst buffer_1 = require(\"buffer\");\r\nexports.BigIntBufferUtils = {\r\n toBuffer: (value, endianness = \"be\", length) => {\r\n let values = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n values[i] = Number(value & 0xffn);\r\n value >>= 8n;\r\n }\r\n const buff = buffer_1.Buffer.from(values);\r\n if (endianness === \"be\")\r\n buff.reverse();\r\n return buff;\r\n },\r\n fromBuffer: (value, endianness = \"be\") => {\r\n if (endianness === \"le\") {\r\n const dst = buffer_1.Buffer.alloc(value.length);\r\n value.copy(dst);\r\n dst.reverse();\r\n value = dst;\r\n }\r\n let accumulator = 0n;\r\n for (let byte of value) {\r\n accumulator <<= 8n;\r\n accumulator |= BigInt(byte);\r\n }\r\n return accumulator;\r\n }\r\n};\r\n","import { exists, output } from './_assert.js';\nimport { Hash, createView, Input, toBytes } from './utils.js';\n\n// Polyfill for Safari 14\nfunction setBigUint64(view: DataView, byteOffset: number, value: bigint, isLE: boolean): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\n// Choice: a ? b : c\nexport const Chi = (a: number, b: number, c: number) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nexport const Maj = (a: number, b: number, c: number) => (a & b) ^ (a & c) ^ (b & c);\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD> extends Hash {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(\n readonly blockLen: number,\n public outputLen: number,\n readonly padOffset: number,\n readonly isLE: boolean\n ) {\n super();\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n}\n",null,"import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface BurnInstructionData {\n instruction: TokenInstruction.Burn;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const burnInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct a Burn instruction\n *\n * @param account Account to burn tokens from\n * @param mint Mint for the account\n * @param owner Owner of the account\n * @param amount Number of tokens to burn\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createBurnInstruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(burnInstructionData.span);\n burnInstructionData.encode(\n {\n instruction: TokenInstruction.Burn,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Burn instruction */\nexport interface DecodedBurnInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Burn;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Burn instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeBurnInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedBurnInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== burnInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, owner, multiSigners },\n data,\n } = decodeBurnInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Burn) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Burn instruction */\nexport interface DecodedBurnInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Burn instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeBurnInstructionUnchecked({\n programId,\n keys: [account, mint, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedBurnInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data: burnInstructionData.decode(data),\n };\n}\n",null,"// 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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_arrow_forward = void 0;\nvar ic_arrow_forward = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z\"\n },\n \"children\": []\n }]\n};\nexports.ic_arrow_forward = ic_arrow_forward;","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = require('./adler32');\nconst crc32 = require('./crc32');\nconst inflate_fast = require('./inffast');\nconst inflate_table = require('./inftrees');\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH, Z_BLOCK, Z_TREES,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR, Z_BUF_ERROR,\n Z_DEFLATED\n} = require('./constants');\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 16180; /* i: waiting for magic header */\nconst FLAGS = 16181; /* i: waiting for method and flags (gzip) */\nconst TIME = 16182; /* i: waiting for modification time (gzip) */\nconst OS = 16183; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 16184; /* i: waiting for extra length (gzip) */\nconst EXTRA = 16185; /* i: waiting for extra bytes (gzip) */\nconst NAME = 16186; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 16187; /* i: waiting for end of comment (gzip) */\nconst HCRC = 16188; /* i: waiting for header crc (gzip) */\nconst DICTID = 16189; /* i: waiting for dictionary check value */\nconst DICT = 16190; /* waiting for inflateSetDictionary() call */\nconst TYPE = 16191; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 16192; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 16193; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 16194; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16195; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 16196; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 16197; /* i: waiting for code length code lengths */\nconst CODELENS = 16198; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 16199; /* i: same as LEN below, but only first time in */\nconst LEN = 16200; /* i: waiting for length/lit/eob code */\nconst LENEXT = 16201; /* i: waiting for length extra bits */\nconst DIST = 16202; /* i: waiting for distance code */\nconst DISTEXT = 16203; /* i: waiting for distance extra bits */\nconst MATCH = 16204; /* o: waiting for output space to copy string */\nconst LIT = 16205; /* o: waiting for output space to write literal */\nconst CHECK = 16206; /* i: waiting for 32-bit check value */\nconst LENGTH = 16207; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 16208; /* finished check, done -- remain here until reset */\nconst BAD = 16209; /* got a data error -- remain here until reset */\nconst MEM = 16210; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 16211; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip,\n bit 2 true to validate check value */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib), or\n -1 if raw or no header yet */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const state = strm.state;\n if (!state || state.strm !== strm ||\n state.mode < HEAD || state.mode > SYNC) {\n return 1;\n }\n return 0;\n};\n\n\nconst inflateResetKeep = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.flags = -1;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 5;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.strm = strm;\n state.window = null/*Z_NULL*/;\n state.mode = HEAD; /* to pass state test in inflateReset2() */\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (inflateStateCheck(strm) || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n if (state.wbits === 0) {\n state.wbits = 15;\n }\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n if (len > 15 || len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n state.flags = 0; /* indicate zlib header */\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check =\n /*UPDATE_CHECK(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.wrap & 4) && (state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (inflateStateCheck(strm)) {\n return Z_STREAM_ERROR;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n};\n\n\nmodule.exports.inflateReset = inflateReset;\nmodule.exports.inflateReset2 = inflateReset2;\nmodule.exports.inflateResetKeep = inflateResetKeep;\nmodule.exports.inflateInit = inflateInit;\nmodule.exports.inflateInit2 = inflateInit2;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateEnd = inflateEnd;\nmodule.exports.inflateGetHeader = inflateGetHeader;\nmodule.exports.inflateSetDictionary = inflateSetDictionary;\nmodule.exports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCodesUsed = inflateCodesUsed;\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\nmodule.exports.inflateValidate = inflateValidate;\n*/\n","import type { PublicKey } from '@solana/web3.js';\nimport { SystemProgram, TransactionInstruction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\n\n/**\n * Construct a CreateAssociatedTokenAccount instruction\n *\n * @param payer Payer of the initialization fees\n * @param associatedToken New associated token account\n * @param owner Owner of the new account\n * @param mint Token mint account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAssociatedTokenAccountInstruction(\n payer: PublicKey,\n associatedToken: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): TransactionInstruction {\n return buildAssociatedTokenAccountInstruction(\n payer,\n associatedToken,\n owner,\n mint,\n Buffer.alloc(0),\n programId,\n associatedTokenProgramId\n );\n}\n\n/**\n * Construct a CreateAssociatedTokenAccountIdempotent instruction\n *\n * @param payer Payer of the initialization fees\n * @param associatedToken New associated token account\n * @param owner Owner of the new account\n * @param mint Token mint account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAssociatedTokenAccountIdempotentInstruction(\n payer: PublicKey,\n associatedToken: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): TransactionInstruction {\n return buildAssociatedTokenAccountInstruction(\n payer,\n associatedToken,\n owner,\n mint,\n Buffer.from([1]),\n programId,\n associatedTokenProgramId\n );\n}\n\nfunction buildAssociatedTokenAccountInstruction(\n payer: PublicKey,\n associatedToken: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n instructionData: Buffer,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: associatedToken, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: programId, isSigner: false, isWritable: false },\n ];\n\n return new TransactionInstruction({\n keys,\n programId: associatedTokenProgramId,\n data: instructionData,\n });\n}\n\n/**\n * Construct a RecoverNested instruction\n *\n * @param nestedAssociatedToken Nested associated token account (must be owned by `ownerAssociatedToken`)\n * @param nestedMint Token mint for the nested associated token account\n * @param destinationAssociatedToken Wallet's associated token account\n * @param ownerAssociatedToken Owner associated token account address (must be owned by `owner`)\n * @param ownerMint Token mint for the owner associated token account\n * @param owner Wallet address for the owner associated token account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createRecoverNestedInstruction(\n nestedAssociatedToken: PublicKey,\n nestedMint: PublicKey,\n destinationAssociatedToken: PublicKey,\n ownerAssociatedToken: PublicKey,\n ownerMint: PublicKey,\n owner: PublicKey,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: nestedAssociatedToken, isSigner: false, isWritable: true },\n { pubkey: nestedMint, isSigner: false, isWritable: false },\n { pubkey: destinationAssociatedToken, isSigner: false, isWritable: true },\n { pubkey: ownerAssociatedToken, isSigner: false, isWritable: true },\n { pubkey: ownerMint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: true, isWritable: true },\n { pubkey: programId, isSigner: false, isWritable: false },\n ];\n\n return new TransactionInstruction({\n keys,\n programId: associatedTokenProgramId,\n data: Buffer.from([2]),\n });\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.maxSendable = exports.coinSelect = exports.DUST_THRESHOLDS = void 0;\r\nconst accumulative_1 = require(\"./accumulative\");\r\nconst blackjack_1 = require(\"./blackjack\");\r\nconst utils_1 = require(\"./utils\");\r\nObject.defineProperty(exports, \"DUST_THRESHOLDS\", { enumerable: true, get: function () { return utils_1.DUST_THRESHOLDS; } });\r\n// order by descending value, minus the inputs approximate fee\r\nfunction utxoScore(x, feeRate) {\r\n let valueAfterFee = x.value - (feeRate * utils_1.utils.inputBytes(x));\r\n if (x.cpfp != null && x.cpfp.txEffectiveFeeRate < feeRate)\r\n valueAfterFee -= x.cpfp.txVsize * (feeRate - x.cpfp.txEffectiveFeeRate);\r\n return valueAfterFee;\r\n}\r\nfunction coinSelect(utxos, outputs, feeRate, type) {\r\n // order by descending value, minus the inputs approximate fee\r\n utxos = utxos.sort((a, b) => {\r\n // if(a.cpfp!=null && b.cpfp==null) return 1;\r\n // if(a.cpfp==null && b.cpfp!=null) return -1;\r\n return utxoScore(b, feeRate) - utxoScore(a, feeRate);\r\n });\r\n // attempt to use the blackjack strategy first (no change output)\r\n const base = (0, blackjack_1.blackjack)(utxos, outputs, feeRate, type);\r\n if (base.inputs)\r\n return base;\r\n // else, try the accumulative strategy\r\n return (0, accumulative_1.accumulative)(utxos, outputs, feeRate, type);\r\n}\r\nexports.coinSelect = coinSelect;\r\nfunction maxSendable(utxos, outputScript, outputType, feeRate) {\r\n if (!isFinite(utils_1.utils.uintOrNaN(feeRate)))\r\n return null;\r\n let bytesAccum = utils_1.utils.transactionBytes([], [{ script: outputScript }], null);\r\n let cpfpAddFee = 0;\r\n let inAccum = 0;\r\n const inputs = [];\r\n for (let i = 0; i < utxos.length; ++i) {\r\n const utxo = utxos[i];\r\n const utxoBytes = utils_1.utils.inputBytes(utxo);\r\n const utxoFee = feeRate * utxoBytes;\r\n let cpfpFee = 0;\r\n if (utxo.cpfp != null && utxo.cpfp.txEffectiveFeeRate < feeRate)\r\n cpfpFee = utxo.cpfp.txVsize * (feeRate - utxo.cpfp.txEffectiveFeeRate);\r\n const utxoValue = utils_1.utils.uintOrNaN(utxo.value);\r\n // skip detrimental input\r\n if (utxoFee + cpfpFee > utxo.value) {\r\n continue;\r\n }\r\n bytesAccum += utxoBytes;\r\n inAccum += utxoValue;\r\n cpfpAddFee += cpfpFee;\r\n inputs.push(utxo);\r\n }\r\n const fee = (feeRate * bytesAccum) + cpfpAddFee;\r\n const outputValue = inAccum - fee;\r\n const dustThreshold = utils_1.DUST_THRESHOLDS[outputType];\r\n if (outputValue < dustThreshold)\r\n return {\r\n fee,\r\n value: 0\r\n };\r\n return {\r\n fee,\r\n value: outputValue\r\n };\r\n}\r\nexports.maxSendable = maxSendable;\r\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar StringDecoder = require('string_decoder').StringDecoder;\nvar inherits = require('inherits');\n\nfunction CipherBase(hashMode) {\n\tTransform.call(this);\n\tthis.hashMode = typeof hashMode === 'string';\n\tif (this.hashMode) {\n\t\tthis[hashMode] = this._finalOrDigest;\n\t} else {\n\t\tthis['final'] = this._finalOrDigest;\n\t}\n\tif (this._final) {\n\t\tthis.__final = this._final;\n\t\tthis._final = null;\n\t}\n\tthis._decoder = null;\n\tthis._encoding = null;\n}\ninherits(CipherBase, Transform);\n\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined'\n\t&& typeof Uint8Array !== 'undefined'\n\t&& ArrayBuffer.isView\n\t&& (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\n\nfunction toBuffer(data, encoding) {\n\t/*\n\t * No need to do anything for exact instance\n\t * This is only valid when safe-buffer.Buffer === buffer.Buffer, i.e. when Buffer.from/Buffer.alloc existed\n\t */\n\tif (data instanceof Buffer) {\n\t\treturn data;\n\t}\n\n\t// Convert strings to Buffer\n\tif (typeof data === 'string') {\n\t\treturn Buffer.from(data, encoding);\n\t}\n\n\t/*\n\t * Wrap any TypedArray instances and DataViews\n\t * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n\t */\n\tif (useArrayBuffer && ArrayBuffer.isView(data)) {\n\t\t// Bug in Node.js <6.3.1, which treats this as out-of-bounds\n\t\tif (data.byteLength === 0) {\n\t\t\treturn Buffer.alloc(0);\n\t\t}\n\n\t\tvar res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\t/*\n\t\t * Recheck result size, as offset/length doesn't work on Node.js <5.10\n\t\t * We just go to Uint8Array case if this fails\n\t\t */\n\t\tif (res.byteLength === data.byteLength) {\n\t\t\treturn res;\n\t\t}\n\t}\n\n\t/*\n\t * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n\t * Doesn't make sense with other TypedArray instances\n\t */\n\tif (useUint8Array && data instanceof Uint8Array) {\n\t\treturn Buffer.from(data);\n\t}\n\n\t/*\n\t * Old Buffer polyfill on an engine that doesn't have TypedArray support\n\t * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n\t * Convert to our current Buffer implementation\n\t */\n\tif (\n\t\tBuffer.isBuffer(data)\n\t\t\t&& data.constructor\n\t\t\t&& typeof data.constructor.isBuffer === 'function'\n\t\t\t&& data.constructor.isBuffer(data)\n\t) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tthrow new TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView.');\n}\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n\tvar bufferData = toBuffer(data, inputEnc); // asserts correct input type\n\tvar outData = this._update(bufferData);\n\tif (this.hashMode) {\n\t\treturn this;\n\t}\n\n\tif (outputEnc) {\n\t\toutData = this._toString(outData, outputEnc);\n\t}\n\n\treturn outData;\n};\n\nCipherBase.prototype.setAutoPadding = function () {};\nCipherBase.prototype.getAuthTag = function () {\n\tthrow new Error('trying to get auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAuthTag = function () {\n\tthrow new Error('trying to set auth tag in unsupported state');\n};\n\nCipherBase.prototype.setAAD = function () {\n\tthrow new Error('trying to set aad in unsupported state');\n};\n\nCipherBase.prototype._transform = function (data, _, next) {\n\tvar err;\n\ttry {\n\t\tif (this.hashMode) {\n\t\t\tthis._update(data);\n\t\t} else {\n\t\t\tthis.push(this._update(data));\n\t\t}\n\t} catch (e) {\n\t\terr = e;\n\t} finally {\n\t\tnext(err);\n\t}\n};\nCipherBase.prototype._flush = function (done) {\n\tvar err;\n\ttry {\n\t\tthis.push(this.__final());\n\t} catch (e) {\n\t\terr = e;\n\t}\n\n\tdone(err);\n};\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n\tvar outData = this.__final() || Buffer.alloc(0);\n\tif (outputEnc) {\n\t\toutData = this._toString(outData, outputEnc, true);\n\t}\n\treturn outData;\n};\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n\tif (!this._decoder) {\n\t\tthis._decoder = new StringDecoder(enc);\n\t\tthis._encoding = enc;\n\t}\n\n\tif (this._encoding !== enc) {\n\t\tthrow new Error('can’t switch encodings');\n\t}\n\n\tvar out = this._decoder.write(value);\n\tif (fin) {\n\t\tout += this._decoder.end();\n\t}\n\n\treturn out;\n};\n\nmodule.exports = CipherBase;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IFromBTCSwap = void 0;\r\nconst ISwap_1 = require(\"../ISwap\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst Tokens_1 = require(\"../Tokens\");\r\nclass IFromBTCSwap extends ISwap_1.ISwap {\r\n constructor(wrapper, initOrObj) {\r\n super(wrapper, initOrObj);\r\n }\r\n /**\r\n * In case swapFee in BTC is not supplied it recalculates it based on swap price\r\n * @protected\r\n */\r\n tryCalculateSwapFee() {\r\n if (this.swapFeeBtc == null) {\r\n this.swapFeeBtc = this.swapFee * this.getInput().rawAmount / this.getOutAmountWithoutFee();\r\n }\r\n if (this.pricingInfo.swapPriceUSatPerToken == null) {\r\n this.pricingInfo = this.wrapper.prices.recomputePriceInfoReceive(this.chainIdentifier, this.getInput().rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, this.getSwapData().getAmount(), this.getSwapData().getToken());\r\n }\r\n }\r\n getSwapData() {\r\n return this.data;\r\n }\r\n //////////////////////////////\r\n //// Pricing\r\n async refreshPriceData() {\r\n if (this.pricingInfo == null)\r\n return null;\r\n const priceData = await this.wrapper.prices.isValidAmountReceive(this.chainIdentifier, this.getInput().rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, this.getSwapData().getAmount(), this.getSwapData().getToken());\r\n this.pricingInfo = priceData;\r\n return priceData;\r\n }\r\n getSwapPrice() {\r\n return Number(this.pricingInfo.swapPriceUSatPerToken) / 100000000000000;\r\n }\r\n getMarketPrice() {\r\n return Number(this.pricingInfo.realPriceUSatPerToken) / 100000000000000;\r\n }\r\n getRealSwapFeePercentagePPM() {\r\n const feeWithoutBaseFee = this.swapFeeBtc - this.pricingInfo.satsBaseFee;\r\n return feeWithoutBaseFee * 1000000n / this.getInputWithoutFee().rawAmount;\r\n }\r\n getOutputTxId() {\r\n return this.claimTxId;\r\n }\r\n getInputAddress() {\r\n return this.getAddress();\r\n }\r\n getOutputAddress() {\r\n return this.getInitiator();\r\n }\r\n isActionable() {\r\n return this.isClaimable();\r\n }\r\n //////////////////////////////\r\n //// Amounts & fees\r\n getOutAmountWithoutFee() {\r\n return this.getSwapData().getAmount() + this.swapFee;\r\n }\r\n getOutputWithoutFee() {\r\n return (0, Tokens_1.toTokenAmount)(this.getSwapData().getAmount() + this.swapFee, this.wrapper.tokens[this.getSwapData().getToken()], this.wrapper.prices);\r\n }\r\n getOutput() {\r\n return (0, Tokens_1.toTokenAmount)(this.getSwapData().getAmount(), this.wrapper.tokens[this.getSwapData().getToken()], this.wrapper.prices);\r\n }\r\n getInputWithoutFee() {\r\n return (0, Tokens_1.toTokenAmount)(this.getInput().rawAmount - this.swapFeeBtc, this.inputToken, this.wrapper.prices);\r\n }\r\n getSwapFee() {\r\n return {\r\n amountInSrcToken: (0, Tokens_1.toTokenAmount)(this.swapFeeBtc, this.inputToken, this.wrapper.prices),\r\n amountInDstToken: (0, Tokens_1.toTokenAmount)(this.swapFee, this.wrapper.tokens[this.getSwapData().getToken()], this.wrapper.prices),\r\n usdValue: (abortSignal, preFetchedUsdPrice) => this.wrapper.prices.getBtcUsdValue(this.swapFeeBtc, abortSignal, preFetchedUsdPrice)\r\n };\r\n }\r\n getSecurityDeposit() {\r\n return (0, Tokens_1.toTokenAmount)(this.getSwapData().getSecurityDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices);\r\n }\r\n getTotalDeposit() {\r\n return (0, Tokens_1.toTokenAmount)(this.getSwapData().getTotalDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices);\r\n }\r\n getInitiator() {\r\n return this.getSwapData().getClaimer();\r\n }\r\n getClaimFee() {\r\n return this.wrapper.contract.getClaimFee(this.getInitiator(), this.getSwapData());\r\n }\r\n async hasEnoughForTxFees() {\r\n const [balance, commitFee] = await Promise.all([\r\n this.wrapper.contract.getBalance(this.getInitiator(), this.wrapper.contract.getNativeCurrencyAddress(), false),\r\n this.getCommitFee()\r\n ]);\r\n const totalFee = commitFee + this.getSwapData().getTotalDeposit();\r\n return {\r\n enoughBalance: balance >= totalFee,\r\n balance: (0, Tokens_1.toTokenAmount)(balance, this.wrapper.getNativeToken(), this.wrapper.prices),\r\n required: (0, Tokens_1.toTokenAmount)(totalFee, this.wrapper.getNativeToken(), this.wrapper.prices)\r\n };\r\n }\r\n /**\r\n * Returns the transactions required for committing the swap on-chain, locking the tokens from the intermediary\r\n * in an HTLC or PTLC\r\n *\r\n * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet\r\n * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)\r\n * @throws {Error} When in invalid state to commit the swap\r\n */\r\n async txsCommit(skipChecks) {\r\n if (!this.canCommit())\r\n throw new Error(\"Must be in CREATED state!\");\r\n if (!this.initiated) {\r\n this.initiated = true;\r\n await this._saveAndEmit();\r\n }\r\n return await this.wrapper.contract.txsInit(this.data, this.signatureData, skipChecks, this.feeRate).catch(e => Promise.reject(e instanceof base_1.SignatureVerificationError ? new Error(\"Request timed out\") : e));\r\n }\r\n}\r\nexports.IFromBTCSwap = IFromBTCSwap;\r\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface CloseAccountInstructionData {\n instruction: TokenInstruction.CloseAccount;\n}\n\n/** TODO: docs */\nexport const closeAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a CloseAccount instruction\n *\n * @param account Account to close\n * @param destination Account to receive the remaining balance of the closed account\n * @param authority Account close authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createCloseAccountInstruction(\n account: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(closeAccountInstructionData.span);\n closeAccountInstructionData.encode({ instruction: TokenInstruction.CloseAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid CloseAccount instruction */\nexport interface DecodedCloseAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.CloseAccount;\n };\n}\n\n/**\n * Decode a CloseAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeCloseAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedCloseAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== closeAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, destination, authority, multiSigners },\n data,\n } = decodeCloseAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.CloseAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !destination || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated CloseAccount instruction */\nexport interface DecodedCloseAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a CloseAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeCloseAccountInstructionUnchecked({\n programId,\n keys: [account, destination, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedCloseAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n destination,\n authority,\n multiSigners,\n },\n data: closeAccountInstructionData.decode(data),\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_receipt_outline = void 0;\nvar ic_receipt_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M19.5 3.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5zM19 19.09H5V4.91h14v14.18zM6 15h12v2H6zm0-4h12v2H6zm0-4h12v2H6z\"\n },\n \"children\": []\n }]\n};\nexports.ic_receipt_outline = ic_receipt_outline;","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (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\n i += d\n\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}\n\nexports.write = function (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\n value = Math.abs(value)\n\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\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\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createThawAccountInstruction } from '../instructions/thawAccount.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Thaw (unfreeze) a token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to thaw\n * @param mint Mint for the account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function thawAccount(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n mint: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createThawAccountInstruction(account, mint, authorityPublicKey, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n",null,"import type { ConfirmOptions, Connection, Keypair, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, NATIVE_MINT, TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createAssociatedTokenAccountInstruction } from '../instructions/associatedTokenAccount.js';\nimport { createInitializeAccountInstruction } from '../instructions/initializeAccount.js';\nimport { createSyncNativeInstruction } from '../instructions/syncNative.js';\nimport { ACCOUNT_SIZE, getMinimumBalanceForRentExemptAccount } from '../state/account.js';\nimport { getAssociatedTokenAddressSync } from '../state/mint.js';\nimport { createAccount } from './createAccount.js';\n\n/**\n * Create, initialize, and fund a new wrapped native SOL account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param owner Owner of the new token account\n * @param amount Number of lamports to wrap\n * @param keypair Optional keypair, defaulting to the associated token account for the native mint and `owner`\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Address of the new wrapped native SOL account\n */\nexport async function createWrappedNativeAccount(\n connection: Connection,\n payer: Signer,\n owner: PublicKey,\n amount: number,\n keypair?: Keypair,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n nativeMint = NATIVE_MINT\n): Promise {\n // If the amount provided is explicitly 0 or NaN, just create the account without funding it\n if (!amount) return await createAccount(connection, payer, nativeMint, owner, keypair, confirmOptions, programId);\n\n // If a keypair isn't provided, create the account at the owner's ATA for the native mint and return its address\n if (!keypair) {\n const associatedToken = getAssociatedTokenAddressSync(\n nativeMint,\n owner,\n false,\n programId,\n ASSOCIATED_TOKEN_PROGRAM_ID\n );\n\n const transaction = new Transaction().add(\n createAssociatedTokenAccountInstruction(\n payer.publicKey,\n associatedToken,\n owner,\n nativeMint,\n programId,\n ASSOCIATED_TOKEN_PROGRAM_ID\n ),\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: associatedToken,\n lamports: amount,\n }),\n createSyncNativeInstruction(associatedToken, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n\n return associatedToken;\n }\n\n // Otherwise, create the account with the provided keypair and return its public key\n const lamports = await getMinimumBalanceForRentExemptAccount(connection);\n\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space: ACCOUNT_SIZE,\n lamports,\n programId,\n }),\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: keypair.publicKey,\n lamports: amount,\n }),\n createInitializeAccountInstruction(keypair.publicKey, nativeMint, owner, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n\n return keypair.publicKey;\n}\n","import { s16, struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { addSigners } from '../../instructions/internal.js';\nimport { TokenInstruction } from '../../instructions/types.js';\n\nexport enum InterestBearingMintInstruction {\n Initialize = 0,\n UpdateRate = 1,\n}\n\nexport interface InterestBearingMintInitializeInstructionData {\n instruction: TokenInstruction.InterestBearingMintExtension;\n interestBearingMintInstruction: InterestBearingMintInstruction.Initialize;\n rateAuthority: PublicKey;\n rate: number;\n}\n\nexport interface InterestBearingMintUpdateRateInstructionData {\n instruction: TokenInstruction.InterestBearingMintExtension;\n interestBearingMintInstruction: InterestBearingMintInstruction.UpdateRate;\n rate: number;\n}\n\nexport const interestBearingMintInitializeInstructionData = struct([\n u8('instruction'),\n u8('interestBearingMintInstruction'),\n // TODO: Make this an optional public key\n publicKey('rateAuthority'),\n s16('rate'),\n]);\n\nexport const interestBearingMintUpdateRateInstructionData = struct([\n u8('instruction'),\n u8('interestBearingMintInstruction'),\n s16('rate'),\n]);\n\n/**\n * Construct an InitializeInterestBearingMint instruction\n *\n * @param mint Mint to initialize\n * @param rateAuthority The public key for the account that can update the rate\n * @param rate The initial interest rate\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeInterestBearingMintInstruction(\n mint: PublicKey,\n rateAuthority: PublicKey,\n rate: number,\n programId = TOKEN_2022_PROGRAM_ID\n) {\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n const data = Buffer.alloc(interestBearingMintInitializeInstructionData.span);\n interestBearingMintInitializeInstructionData.encode(\n {\n instruction: TokenInstruction.InterestBearingMintExtension,\n interestBearingMintInstruction: InterestBearingMintInstruction.Initialize,\n rateAuthority,\n rate,\n },\n data\n );\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/**\n * Construct an UpdateRateInterestBearingMint instruction\n *\n * @param mint Mint to initialize\n * @param rateAuthority The public key for the account that can update the rate\n * @param rate The updated interest rate\n * @param multiSigners Signing accounts if `rateAuthority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createUpdateRateInterestBearingMintInstruction(\n mint: PublicKey,\n rateAuthority: PublicKey,\n rate: number,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n) {\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: rateAuthority, isSigner: !multiSigners.length, isWritable: false },\n ],\n rateAuthority,\n multiSigners\n );\n const data = Buffer.alloc(interestBearingMintUpdateRateInstructionData.span);\n interestBearingMintUpdateRateInstructionData.encode(\n {\n instruction: TokenInstruction.InterestBearingMintExtension,\n interestBearingMintInstruction: InterestBearingMintInstruction.UpdateRate,\n rate,\n },\n data\n );\n return new TransactionInstruction({ keys, programId, data });\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createMintToCheckedInstruction } from '../instructions/mintToChecked.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Mint tokens to an account, asserting the token mint and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint for the account\n * @param destination Address of the account to mint to\n * @param authority Minting authority\n * @param amount Amount to mint\n * @param decimals Number of decimals in amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function mintToChecked(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createMintToCheckedInstruction(mint, destination, authorityPublicKey, amount, decimals, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","/**\n * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.\n *\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance\n * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create\n * unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n type AffinePoint,\n type BasicCurve,\n type Group,\n type GroupConstructor,\n pippenger,\n validateBasic,\n wNAF,\n} from './curve.js';\nimport {\n Field,\n type IField,\n getMinHashLength,\n invert,\n mapHashToField,\n mod,\n validateField,\n} from './modular.js';\nimport * as ut from './utils.js';\nimport { type CHash, type Hex, type PrivKey, abool, ensureBytes, memoized } from './utils.js';\n\nexport type { AffinePoint };\ntype HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;\ntype EndomorphismOpts = {\n beta: bigint;\n splitScalar: (k: bigint) => { k1neg: boolean; k1: bigint; k2neg: boolean; k2: bigint };\n};\nexport type BasicWCurve = BasicCurve & {\n // Params: a, b\n a: T;\n b: T;\n\n // Optional params\n allowedPrivateKeyLengths?: readonly number[]; // for P521\n wrapPrivateKey?: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n\n endo?: EndomorphismOpts; // Endomorphism options for Koblitz curves\n // When a cofactor != 1, there can be an effective methods to:\n // 1. Determine whether a point is torsion-free\n isTorsionFree?: (c: ProjConstructor, point: ProjPointType) => boolean;\n // 2. Clear torsion component\n clearCofactor?: (c: ProjConstructor, point: ProjPointType) => ProjPointType;\n};\n\ntype Entropy = Hex | boolean;\nexport type SignOpts = { lowS?: boolean; extraEntropy?: Entropy; prehash?: boolean };\nexport type VerOpts = { lowS?: boolean; prehash?: boolean; format?: 'compact' | 'der' | undefined };\n\nfunction validateSigVerOpts(opts: SignOpts | VerOpts) {\n if (opts.lowS !== undefined) abool('lowS', opts.lowS);\n if (opts.prehash !== undefined) abool('prehash', opts.prehash);\n}\n\n// Instance for 3d XYZ points\nexport interface ProjPointType extends Group> {\n readonly px: T;\n readonly py: T;\n readonly pz: T;\n get x(): T;\n get y(): T;\n multiply(scalar: bigint): ProjPointType;\n toAffine(iz?: T): AffinePoint;\n isTorsionFree(): boolean;\n clearCofactor(): ProjPointType;\n assertValidity(): void;\n hasEvenY(): boolean;\n toRawBytes(isCompressed?: boolean): Uint8Array;\n toHex(isCompressed?: boolean): string;\n\n multiplyUnsafe(scalar: bigint): ProjPointType;\n multiplyAndAddUnsafe(Q: ProjPointType, a: bigint, b: bigint): ProjPointType | undefined;\n _setWindowSize(windowSize: number): void;\n}\n// Static methods for 3d XYZ points\nexport interface ProjConstructor extends GroupConstructor> {\n new (x: T, y: T, z: T): ProjPointType;\n fromAffine(p: AffinePoint): ProjPointType;\n fromHex(hex: Hex): ProjPointType;\n fromPrivateKey(privateKey: PrivKey): ProjPointType;\n normalizeZ(points: ProjPointType[]): ProjPointType[];\n msm(points: ProjPointType[], scalars: bigint[]): ProjPointType;\n}\n\nexport type CurvePointsType = BasicWCurve & {\n // Bytes\n fromBytes?: (bytes: Uint8Array) => AffinePoint;\n toBytes?: (c: ProjConstructor, point: ProjPointType, isCompressed: boolean) => Uint8Array;\n};\n\nexport type CurvePointsTypeWithLength = Readonly<\n CurvePointsType & { nByteLength: number; nBitLength: number }\n>;\n\nfunction validatePointOpts(curve: CurvePointsType): CurvePointsTypeWithLength {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n a: 'field',\n b: 'field',\n },\n {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n }\n );\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('invalid endomorphism, can only be defined for Koblitz curves that have a=0');\n }\n if (\n typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function'\n ) {\n throw new Error('invalid endomorphism, expected beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts } as const);\n}\n\nexport type CurvePointsRes = {\n CURVE: ReturnType>;\n ProjectivePoint: ProjConstructor;\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n weierstrassEquation: (x: T) => T;\n isWithinCurveOrder: (num: bigint) => boolean;\n};\n\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\n\nexport class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n}\nexport type IDER = {\n // asn.1 DER encoding utils\n Err: typeof DERErr;\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag: number, data: string) => string;\n // v - value, l - left bytes (unparsed)\n decode(tag: number, data: Uint8Array): { v: Uint8Array; l: Uint8Array };\n };\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num: bigint): string;\n decode(data: Uint8Array): bigint;\n };\n toSig(hex: string | Uint8Array): { r: bigint; s: bigint };\n hexFromSig(sig: { r: bigint; s: bigint }): string;\n};\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER: IDER = {\n // asn.1 DER encoding utils\n Err: DERErr,\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag: number, data: string): string => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256) throw new E('tlv.encode: wrong tag');\n if (data.length & 1) throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = ut.numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 0b1000_0000) throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? ut.numberToHexUnpadded((len.length / 2) | 0b1000_0000) : '';\n const t = ut.numberToHexUnpadded(tag);\n return t + lenLen + len + data;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag: number, data: Uint8Array): { v: Uint8Array; l: Uint8Array } {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256) throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag) throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 0b1000_0000); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong) length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 0b0111_1111;\n if (!lenLen) throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4) throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n const lengthBytes = data.subarray(pos, pos + lenLen);\n if (lengthBytes.length !== lenLen) throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0) throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes) length = (length << 8) | b;\n pos += lenLen;\n if (length < 128) throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length) throw new E('tlv.decode: wrong value length');\n return { v, l: data.subarray(pos + length) };\n },\n },\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num: bigint): string {\n const { Err: E } = DER;\n if (num < _0n) throw new E('integer: negative integers are not allowed');\n let hex = ut.numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000) hex = '00' + hex;\n if (hex.length & 1) throw new E('unexpected DER parsing assertion: unpadded hex');\n return hex;\n },\n decode(data: Uint8Array): bigint {\n const { Err: E } = DER;\n if (data[0] & 0b1000_0000) throw new E('invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 0b1000_0000))\n throw new E('invalid signature integer: unnecessary leading zero');\n return b2n(data);\n },\n },\n toSig(hex: string | Uint8Array): { r: bigint; s: bigint } {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n ut.abytes(data);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length) throw new E('invalid signature: left bytes after parsing');\n const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n if (sLeftBytes.length) throw new E('invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig: { r: bigint; s: bigint }): string {\n const { _tlv: tlv, _int: int } = DER;\n const rs = tlv.encode(0x02, int.encode(sig.r));\n const ss = tlv.encode(0x02, int.encode(sig.s));\n const seq = rs + ss;\n return tlv.encode(0x30, seq);\n },\n};\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\n\nexport function weierstrassPoints(opts: CurvePointsType): CurvePointsRes {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const Fn = Field(CURVE.n, CURVE.nBitLength);\n\n const toBytes =\n CURVE.toBytes ||\n ((_c: ProjConstructor, point: ProjPointType, _isCompressed: boolean) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes =\n CURVE.fromBytes ||\n ((bytes: Uint8Array) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x: T): T {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num: bigint): boolean {\n return ut.inRange(num, _1n, CURVE.n);\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key: PrivKey): bigint {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n: N } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (ut.isBytes(key)) key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length))\n throw new Error('invalid private key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num: bigint;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n } catch (error) {\n throw new Error(\n 'invalid private key, expected hex or ' + nByteLength + ' bytes, got ' + typeof key\n );\n }\n if (wrapPrivateKey) num = mod(num, N); // disabled by default, enabled for BLS\n ut.aInRange('private key', num, _1n, N); // num in range [1..N-1]\n return num;\n }\n\n function assertPrjPoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('ProjectivePoint expected');\n }\n\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n const toAffineMemo = memoized((p: Point, iz?: T): AffinePoint => {\n const { px: x, py: y, pz: z } = p;\n // Fast-path for normalized points\n if (Fp.eql(z, Fp.ONE)) return { x, y };\n const is0 = p.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null) iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0) return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE)) throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n // NOTE: on exception this will crash 'cached' and no value will be set.\n // Otherwise true will be return\n const assertValidMemo = memoized((p: Point) => {\n if (p.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is invalid representation of ZERO.\n if (CURVE.allowInfinityPoint && !Fp.is0(p.py)) return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = p.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y)) throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right)) throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree()) throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point implements ProjPointType {\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n static readonly ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n\n constructor(\n readonly px: T,\n readonly py: T,\n readonly pz: T\n ) {\n if (px == null || !Fp.isValid(px)) throw new Error('x required');\n if (py == null || !Fp.isValid(py)) throw new Error('y required');\n if (pz == null || !Fp.isValid(pz)) throw new Error('z required');\n Object.freeze(this);\n }\n\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p: AffinePoint): Point {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y)) throw new Error('invalid affine point');\n if (p instanceof Point) throw new Error('projective point not allowed');\n const is0 = (i: T) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y)) return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n\n get x(): T {\n return this.toAffine().x;\n }\n get y(): T {\n return this.toAffine().y;\n }\n\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points: Point[]): Point[] {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex: Hex): Point {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey: PrivKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n\n // Multiscalar Multiplication\n static msm(points: Point[], scalars: bigint[]): Point {\n return pippenger(Point, Fn, points, scalars);\n }\n\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize: number) {\n wnaf.setWindowSize(this, windowSize);\n }\n\n // A point on curve is valid if it conforms to equation.\n assertValidity(): void {\n assertValidMemo(this);\n }\n\n hasEvenY(): boolean {\n const { y } = this.toAffine();\n if (Fp.isOdd) return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n\n /**\n * Compare one point to another.\n */\n equals(other: Point): boolean {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate(): Point {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other: Point): Point {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n\n subtract(other: Point) {\n return this.add(other.negate());\n }\n\n is0() {\n return this.equals(Point.ZERO);\n }\n private wNAF(n: bigint): { p: Point; f: Point } {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc: bigint): Point {\n const { endo, n: N } = CURVE;\n ut.aInRange('scalar', sc, _0n, N);\n const I = Point.ZERO;\n if (sc === _0n) return I;\n if (this.is0() || sc === _1n) return this;\n\n // Case a: no endomorphism. Case b: has precomputes.\n if (!endo || wnaf.hasPrecomputes(this))\n return wnaf.wNAFCachedUnsafe(this, sc, Point.normalizeZ);\n\n // Case c: endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n let k1p = I;\n let k2p = I;\n let d: Point = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n) k1p = k1p.add(d);\n if (k2 & _1n) k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg) k1p = k1p.negate();\n if (k2neg) k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar: bigint): Point {\n const { endo, n: N } = CURVE;\n ut.aInRange('scalar', scalar, _1n, N);\n let point: Point, fake: Point; // Fake point is used to const-time mult\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n } else {\n const { p, f } = this.wNAF(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q: Point, a: bigint, b: bigint): Point | undefined {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (\n P: Point,\n a: bigint // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz?: T): AffinePoint {\n return toAffineMemo(this, iz);\n }\n isTorsionFree(): boolean {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n) return true; // No subgroups, always torsion-free\n if (isTorsionFree) return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor(): Point {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n) return this; // Fast-path\n if (clearCofactor) return clearCofactor(Point, this) as Point;\n return this.multiplyUnsafe(CURVE.h);\n }\n\n toRawBytes(isCompressed = true): Uint8Array {\n abool('isCompressed', isCompressed);\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n\n toHex(isCompressed = true): string {\n abool('isCompressed', isCompressed);\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point as ProjConstructor,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\n\n// Instance\nexport interface SignatureType {\n readonly r: bigint;\n readonly s: bigint;\n readonly recovery?: number;\n assertValidity(): void;\n addRecoveryBit(recovery: number): RecoveredSignatureType;\n hasHighS(): boolean;\n normalizeS(): SignatureType;\n recoverPublicKey(msgHash: Hex): ProjPointType;\n toCompactRawBytes(): Uint8Array;\n toCompactHex(): string;\n // DER-encoded\n toDERRawBytes(isCompressed?: boolean): Uint8Array;\n toDERHex(isCompressed?: boolean): string;\n}\nexport type RecoveredSignatureType = SignatureType & {\n readonly recovery: number;\n};\n// Static methods\nexport type SignatureConstructor = {\n new (r: bigint, s: bigint): SignatureType;\n fromCompact(hex: Hex): SignatureType;\n fromDER(hex: Hex): SignatureType;\n};\ntype SignatureLike = { r: bigint; s: bigint };\n\nexport type PubKey = Hex | ProjPointType;\n\nexport type CurveType = BasicWCurve & {\n hash: CHash; // CHash not FHash because we need outputLen for DRBG\n hmac: HmacFnSync;\n randomBytes: (bytesLength?: number) => Uint8Array;\n lowS?: boolean;\n bits2int?: (bytes: Uint8Array) => bigint;\n bits2int_modN?: (bytes: Uint8Array) => bigint;\n};\n\nfunction validateOpts(\n curve: CurveType\n): Readonly {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n },\n {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n }\n );\n return Object.freeze({ lowS: true, ...opts } as const);\n}\n\nexport type CurveFn = {\n CURVE: ReturnType;\n getPublicKey: (privateKey: PrivKey, isCompressed?: boolean) => Uint8Array;\n getSharedSecret: (privateA: PrivKey, publicB: Hex, isCompressed?: boolean) => Uint8Array;\n sign: (msgHash: Hex, privKey: PrivKey, opts?: SignOpts) => RecoveredSignatureType;\n verify: (signature: Hex | SignatureLike, msgHash: Hex, publicKey: Hex, opts?: VerOpts) => boolean;\n ProjectivePoint: ProjConstructor;\n Signature: SignatureConstructor;\n utils: {\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n isValidPrivateKey(privateKey: PrivKey): boolean;\n randomPrivateKey: () => Uint8Array;\n precompute: (windowSize?: number, point?: ProjPointType) => ProjPointType;\n };\n};\n\n/**\n * Creates short weierstrass curve and ECDSA signature methods for it.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, b, p, n, Gx, Gy\n * const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n })\n */\nexport function weierstrass(curveDef: CurveType): CurveFn {\n const CURVE = validateOpts(curveDef) as ReturnType;\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n\n function modN(a: bigint) {\n return mod(a, CURVE_ORDER);\n }\n function invN(a: bigint) {\n return invert(a, CURVE_ORDER);\n }\n\n const {\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed: boolean): Uint8Array {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n abool('isCompressed', isCompressed);\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n } else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes: Uint8Array) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!ut.inRange(x, _1n, Fp.ORDER)) throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y: bigint;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n } catch (sqrtError) {\n const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('Point is not on curve' + suffix);\n }\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd) y = Fp.neg(y);\n return { x, y };\n } else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n } else {\n const cl = compressedLen;\n const ul = uncompressedLen;\n throw new Error(\n 'invalid Point, expected length of ' + cl + ', or uncompressed ' + ul + ', got ' + len\n );\n }\n },\n });\n const numToNByteStr = (num: bigint): string =>\n ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n\n function isBiggerThanHalfOrder(number: bigint) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n\n function normalizeS(s: bigint) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b: Uint8Array, from: number, to: number) => ut.bytesToNumberBE(b.slice(from, to));\n\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature implements SignatureType {\n constructor(\n readonly r: bigint,\n readonly s: bigint,\n readonly recovery?: number\n ) {\n this.assertValidity();\n }\n\n // pair (bytes of r, bytes of s)\n static fromCompact(hex: Hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex: Hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n\n assertValidity(): void {\n ut.aInRange('r', this.r, _1n, CURVE_ORDER); // r in [1..N]\n ut.aInRange('s', this.s, _1n, CURVE_ORDER); // s in [1..N]\n }\n\n addRecoveryBit(recovery: number): RecoveredSignature {\n return new Signature(this.r, this.s, recovery) as RecoveredSignature;\n }\n\n recoverPublicKey(msgHash: Hex): typeof Point.BASE {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec)) throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER) throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q) throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n\n // Signatures should be low-s, to prevent malleability.\n hasHighS(): boolean {\n return isBiggerThanHalfOrder(this.s);\n }\n\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n type RecoveredSignature = Signature & { recovery: number };\n\n const utils = {\n isValidPrivateKey(privateKey: PrivKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n } catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: (): Uint8Array => {\n const length = getMinHashLength(CURVE.n);\n return mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE): typeof Point.BASE {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey: PrivKey, isCompressed = true): Uint8Array {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item: PrivKey | PubKey): boolean {\n const arr = ut.isBytes(item);\n const str = typeof item === 'string';\n const len = (arr || str) && (item as Hex).length;\n if (arr) return len === compressedLen || len === uncompressedLen;\n if (str) return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point) return true;\n return false;\n }\n\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA: PrivKey, publicB: Hex, isCompressed = true): Uint8Array {\n if (isProbPub(privateA)) throw new Error('first arg must be private key');\n if (!isProbPub(publicB)) throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int =\n CURVE.bits2int ||\n function (bytes: Uint8Array): bigint {\n // Our custom check \"just in case\"\n if (bytes.length > 8192) throw new Error('input is too large');\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN =\n CURVE.bits2int_modN ||\n function (bytes: Uint8Array): bigint {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num: bigint): Uint8Array {\n ut.aInRange('num < 2^' + CURVE.nBitLength, num, _0n, ORDER_MASK);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order,\n // this will be invalid at least for P521. Also it can be bigger for P224 + SHA256\n function prepSig(msgHash: Hex, privateKey: PrivKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null) lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n validateSigVerOpts(opts);\n if (prehash) msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null && ent !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes: Uint8Array): RecoveredSignature | undefined {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k)) return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n) return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n) return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery) as RecoveredSignature; // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts: SignOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts: VerOpts = { lowS: CURVE.lowS, prehash: false };\n\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash: Hex, privKey: PrivKey, opts = defaultSigOpts): RecoveredSignature {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(\n signature: Hex | SignatureLike,\n msgHash: Hex,\n publicKey: Hex,\n opts = defaultVerOpts\n ): boolean {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n const { lowS, prehash, format } = opts;\n\n // Verify opts, deduce signature format\n validateSigVerOpts(opts);\n if ('strict' in opts) throw new Error('options.strict was renamed to lowS');\n if (format !== undefined && format !== 'compact' && format !== 'der')\n throw new Error('format must be compact or der');\n const isHex = typeof sg === 'string' || ut.isBytes(sg);\n const isObj =\n !isHex &&\n !format &&\n typeof sg === 'object' &&\n sg !== null &&\n typeof sg.r === 'bigint' &&\n typeof sg.s === 'bigint';\n if (!isHex && !isObj)\n throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');\n\n let _sig: Signature | undefined = undefined;\n let P: ProjPointType;\n try {\n if (isObj) _sig = new Signature(sg.r, sg.s);\n if (isHex) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n if (format !== 'compact') _sig = Signature.fromDER(sg);\n } catch (derError) {\n if (!(derError instanceof DER.Err)) throw derError;\n }\n if (!_sig && format !== 'der') _sig = Signature.fromCompact(sg);\n }\n P = Point.fromHex(publicKey);\n } catch (error) {\n return false;\n }\n if (!_sig) return false;\n if (lowS && _sig.hasHighS()) return false;\n if (prehash) msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R) return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(\n Fp: IField,\n Z: T\n): (u: T, v: T) => { isValid: boolean; value: T } {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n) l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u: T, v: T): { isValid: boolean; value: T } => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u: T, v: T) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(\n Fp: IField,\n opts: {\n A: T;\n B: T;\n Z: T;\n }\n): (u: T) => { x: T; y: T } {\n validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd) throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u: T): { x: T; y: T } => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd!(u) === Fp.isOdd!(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToBTCSwapState = exports.IToBTCSwap = exports.isIToBTCSwapInit = void 0;\r\nconst ISwap_1 = require(\"../ISwap\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst IntermediaryAPI_1 = require(\"../../intermediaries/IntermediaryAPI\");\r\nconst IntermediaryError_1 = require(\"../../errors/IntermediaryError\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst Tokens_1 = require(\"../Tokens\");\r\nfunction isIToBTCSwapInit(obj) {\r\n return typeof (obj.networkFee) === \"bigint\" &&\r\n (obj.networkFeeBtc == null || typeof (obj.networkFeeBtc) === \"bigint\") &&\r\n (0, ISwap_1.isISwapInit)(obj);\r\n}\r\nexports.isIToBTCSwapInit = isIToBTCSwapInit;\r\nclass IToBTCSwap extends ISwap_1.ISwap {\r\n constructor(wrapper, initOrObject) {\r\n super(wrapper, initOrObject);\r\n if (isIToBTCSwapInit(initOrObject)) {\r\n this.state = ToBTCSwapState.CREATED;\r\n }\r\n else {\r\n this.networkFee = initOrObject.networkFee == null ? null : BigInt(initOrObject.networkFee);\r\n this.networkFeeBtc = initOrObject.networkFeeBtc == null ? null : BigInt(initOrObject.networkFeeBtc);\r\n }\r\n }\r\n upgradeVersion() {\r\n if (this.version == null) {\r\n switch (this.state) {\r\n case -2:\r\n this.state = ToBTCSwapState.REFUNDED;\r\n break;\r\n case -1:\r\n this.state = ToBTCSwapState.QUOTE_EXPIRED;\r\n break;\r\n case 0:\r\n this.state = ToBTCSwapState.CREATED;\r\n break;\r\n case 1:\r\n this.state = ToBTCSwapState.COMMITED;\r\n break;\r\n case 2:\r\n this.state = ToBTCSwapState.CLAIMED;\r\n break;\r\n case 3:\r\n this.state = ToBTCSwapState.REFUNDABLE;\r\n break;\r\n }\r\n this.version = 1;\r\n }\r\n }\r\n /**\r\n * In case swapFee in BTC is not supplied it recalculates it based on swap price\r\n * @protected\r\n */\r\n tryCalculateSwapFee() {\r\n if (this.swapFeeBtc == null) {\r\n this.swapFeeBtc = this.swapFee * this.getOutput().rawAmount / this.getInputWithoutFee().rawAmount;\r\n }\r\n if (this.networkFeeBtc == null) {\r\n this.networkFeeBtc = this.networkFee * this.getOutput().rawAmount / this.getInputWithoutFee().rawAmount;\r\n }\r\n if (this.pricingInfo.swapPriceUSatPerToken == null) {\r\n this.pricingInfo = this.wrapper.prices.recomputePriceInfoSend(this.chainIdentifier, this.getOutput().rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, this.data.getAmount(), this.data.getToken());\r\n }\r\n }\r\n /**\r\n * Returns the payment hash identifier to be sent to the LP for getStatus and getRefund\r\n * @protected\r\n */\r\n getLpIdentifier() {\r\n return this.getClaimHash();\r\n }\r\n //////////////////////////////\r\n //// Pricing\r\n async refreshPriceData() {\r\n if (this.pricingInfo == null)\r\n return null;\r\n const priceData = await this.wrapper.prices.isValidAmountSend(this.chainIdentifier, this.getOutput().rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, this.data.getAmount(), this.data.getToken());\r\n this.pricingInfo = priceData;\r\n return priceData;\r\n }\r\n getSwapPrice() {\r\n return 100000000000000 / Number(this.pricingInfo.swapPriceUSatPerToken);\r\n }\r\n getMarketPrice() {\r\n return 100000000000000 / Number(this.pricingInfo.realPriceUSatPerToken);\r\n }\r\n getRealSwapFeePercentagePPM() {\r\n const feeWithoutBaseFee = this.swapFeeBtc - this.pricingInfo.satsBaseFee;\r\n return feeWithoutBaseFee * 1000000n / this.getOutput().rawAmount;\r\n }\r\n //////////////////////////////\r\n //// Getters & utils\r\n getInputTxId() {\r\n return this.commitTxId;\r\n }\r\n getInputAddress() {\r\n return this.getInitiator();\r\n }\r\n getOutputAddress() {\r\n return this.getRecipient();\r\n }\r\n /**\r\n * Returns whether the swap is finished and in its terminal state (this can mean successful, refunded or failed)\r\n */\r\n isFinished() {\r\n return this.state === ToBTCSwapState.CLAIMED || this.state === ToBTCSwapState.REFUNDED || this.state === ToBTCSwapState.QUOTE_EXPIRED;\r\n }\r\n isActionable() {\r\n return this.isRefundable();\r\n }\r\n isRefundable() {\r\n return this.state === ToBTCSwapState.REFUNDABLE;\r\n }\r\n isQuoteExpired() {\r\n return this.state === ToBTCSwapState.QUOTE_EXPIRED;\r\n }\r\n isQuoteSoftExpired() {\r\n return this.state === ToBTCSwapState.QUOTE_EXPIRED || this.state === ToBTCSwapState.QUOTE_SOFT_EXPIRED;\r\n }\r\n isSuccessful() {\r\n return this.state === ToBTCSwapState.CLAIMED;\r\n }\r\n isFailed() {\r\n return this.state === ToBTCSwapState.REFUNDED;\r\n }\r\n /**\r\n * Checks if the swap can be committed/started\r\n */\r\n canCommit() {\r\n return this.state === ToBTCSwapState.CREATED;\r\n }\r\n getInitiator() {\r\n return this.data.getOfferer();\r\n }\r\n //////////////////////////////\r\n //// Amounts & fees\r\n getFee() {\r\n return {\r\n amountInSrcToken: (0, Tokens_1.toTokenAmount)(this.swapFee + this.networkFee, this.wrapper.tokens[this.data.getToken()], this.wrapper.prices),\r\n amountInDstToken: (0, Tokens_1.toTokenAmount)(this.swapFeeBtc + this.networkFeeBtc, this.outputToken, this.wrapper.prices),\r\n usdValue: (abortSignal, preFetchedUsdPrice) => this.wrapper.prices.getBtcUsdValue(this.swapFeeBtc + this.networkFeeBtc, abortSignal, preFetchedUsdPrice)\r\n };\r\n }\r\n getSwapFee() {\r\n return {\r\n amountInSrcToken: (0, Tokens_1.toTokenAmount)(this.swapFee, this.wrapper.tokens[this.data.getToken()], this.wrapper.prices),\r\n amountInDstToken: (0, Tokens_1.toTokenAmount)(this.swapFeeBtc, this.outputToken, this.wrapper.prices),\r\n usdValue: (abortSignal, preFetchedUsdPrice) => this.wrapper.prices.getBtcUsdValue(this.swapFeeBtc, abortSignal, preFetchedUsdPrice)\r\n };\r\n }\r\n /**\r\n * Returns network fee for the swap, the fee is represented in source currency & destination currency, but is\r\n * paid only once\r\n */\r\n getNetworkFee() {\r\n return {\r\n amountInSrcToken: (0, Tokens_1.toTokenAmount)(this.networkFee, this.wrapper.tokens[this.data.getToken()], this.wrapper.prices),\r\n amountInDstToken: (0, Tokens_1.toTokenAmount)(this.networkFeeBtc, this.outputToken, this.wrapper.prices),\r\n usdValue: (abortSignal, preFetchedUsdPrice) => this.wrapper.prices.getBtcUsdValue(this.networkFeeBtc, abortSignal, preFetchedUsdPrice)\r\n };\r\n }\r\n getInputWithoutFee() {\r\n return (0, Tokens_1.toTokenAmount)(this.data.getAmount() - (this.swapFee + this.networkFee), this.wrapper.tokens[this.data.getToken()], this.wrapper.prices);\r\n }\r\n getInput() {\r\n return (0, Tokens_1.toTokenAmount)(this.data.getAmount(), this.wrapper.tokens[this.data.getToken()], this.wrapper.prices);\r\n }\r\n /**\r\n * Get the estimated smart chain transaction fee of the refund transaction\r\n */\r\n getRefundFee() {\r\n return this.wrapper.contract.getRefundFee(this.data);\r\n }\r\n /**\r\n * Checks if the intiator/sender has enough balance to go through with the swap\r\n */\r\n async hasEnoughBalance() {\r\n const [balance, commitFee] = await Promise.all([\r\n this.wrapper.contract.getBalance(this.getInitiator(), this.data.getToken(), false),\r\n this.data.getToken() === this.wrapper.contract.getNativeCurrencyAddress() ? this.getCommitFee() : Promise.resolve(null)\r\n ]);\r\n let required = this.data.getAmount();\r\n if (commitFee != null)\r\n required = required + commitFee;\r\n return {\r\n enoughBalance: balance >= required,\r\n balance: (0, Tokens_1.toTokenAmount)(balance, this.wrapper.tokens[this.data.getToken()], this.wrapper.prices),\r\n required: (0, Tokens_1.toTokenAmount)(required, this.wrapper.tokens[this.data.getToken()], this.wrapper.prices)\r\n };\r\n }\r\n /**\r\n * Check if the initiator/sender has enough balance to cover the transaction fee for processing the swap\r\n */\r\n async hasEnoughForTxFees() {\r\n const [balance, commitFee] = await Promise.all([\r\n this.wrapper.contract.getBalance(this.getInitiator(), this.wrapper.contract.getNativeCurrencyAddress(), false),\r\n this.getCommitFee()\r\n ]);\r\n return {\r\n enoughBalance: balance >= commitFee,\r\n balance: (0, Tokens_1.toTokenAmount)(balance, this.wrapper.getNativeToken(), this.wrapper.prices),\r\n required: (0, Tokens_1.toTokenAmount)(commitFee, this.wrapper.getNativeToken(), this.wrapper.prices)\r\n };\r\n }\r\n //////////////////////////////\r\n //// Commit\r\n /**\r\n * Commits the swap on-chain, initiating the swap\r\n *\r\n * @param signer Signer to sign the transactions with, must be the same as used in the initialization\r\n * @param abortSignal Abort signal\r\n * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet\r\n * (this is handled on swap creation, if you commit right after quoting, you can skipChecks)`\r\n * @throws {Error} If invalid signer is provided that doesn't match the swap data\r\n */\r\n async commit(signer, abortSignal, skipChecks) {\r\n this.checkSigner(signer);\r\n const result = await this.wrapper.contract.sendAndConfirm(signer, await this.txsCommit(skipChecks), true, abortSignal);\r\n this.commitTxId = result[0];\r\n if (this.state === ToBTCSwapState.CREATED || this.state === ToBTCSwapState.QUOTE_SOFT_EXPIRED || this.state === ToBTCSwapState.QUOTE_EXPIRED) {\r\n await this._saveAndEmit(ToBTCSwapState.COMMITED);\r\n }\r\n return result[0];\r\n }\r\n /**\r\n * Returns transactions for committing the swap on-chain, initiating the swap\r\n *\r\n * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet\r\n * (this is handled on swap creation, if you commit right after quoting, you can use skipChecks=true)\r\n *\r\n * @throws {Error} When in invalid state (not PR_CREATED)\r\n */\r\n async txsCommit(skipChecks) {\r\n if (!this.canCommit())\r\n throw new Error(\"Must be in CREATED state!\");\r\n if (!this.initiated) {\r\n this.initiated = true;\r\n await this._saveAndEmit();\r\n }\r\n return await this.wrapper.contract.txsInit(this.data, this.signatureData, skipChecks, this.feeRate).catch(e => Promise.reject(e instanceof base_1.SignatureVerificationError ? new Error(\"Request timed out\") : e));\r\n }\r\n /**\r\n * Waits till a swap is committed, should be called after sending the commit transactions manually\r\n *\r\n * @param abortSignal AbortSignal\r\n * @throws {Error} If swap is not in the correct state (must be CREATED)\r\n */\r\n async waitTillCommited(abortSignal) {\r\n if (this.state === ToBTCSwapState.COMMITED || this.state === ToBTCSwapState.CLAIMED)\r\n return Promise.resolve();\r\n if (this.state !== ToBTCSwapState.CREATED && this.state !== ToBTCSwapState.QUOTE_SOFT_EXPIRED)\r\n throw new Error(\"Invalid state (not CREATED)\");\r\n const abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n const result = await Promise.race([\r\n this.watchdogWaitTillCommited(abortController.signal),\r\n this.waitTillState(ToBTCSwapState.COMMITED, \"gte\", abortController.signal).then(() => 0)\r\n ]);\r\n abortController.abort();\r\n if (result === 0)\r\n this.logger.debug(\"waitTillCommited(): Resolved from state change\");\r\n if (result === true)\r\n this.logger.debug(\"waitTillCommited(): Resolved from watchdog - commited\");\r\n if (result === false) {\r\n this.logger.debug(\"waitTillCommited(): Resolved from watchdog - signature expiry\");\r\n if (this.state === ToBTCSwapState.QUOTE_SOFT_EXPIRED || this.state === ToBTCSwapState.CREATED) {\r\n await this._saveAndEmit(ToBTCSwapState.QUOTE_EXPIRED);\r\n }\r\n return;\r\n }\r\n if (this.state === ToBTCSwapState.QUOTE_SOFT_EXPIRED || this.state === ToBTCSwapState.CREATED || this.state === ToBTCSwapState.QUOTE_EXPIRED) {\r\n await this._saveAndEmit(ToBTCSwapState.COMMITED);\r\n }\r\n }\r\n //////////////////////////////\r\n //// Payment\r\n /**\r\n * A blocking promise resolving when swap was concluded by the intermediary,\r\n * rejecting in case of failure\r\n *\r\n * @param abortSignal Abort signal\r\n * @param checkIntervalSeconds How often to poll the intermediary for answer\r\n *\r\n * @returns {Promise} Was the payment successful? If not we can refund.\r\n * @throws {IntermediaryError} If a swap is determined expired by the intermediary, but it is actually still valid\r\n * @throws {SignatureVerificationError} If the swap should be cooperatively refundable but the intermediary returned\r\n * invalid refund signature\r\n * @throws {Error} When swap expires or if the swap has invalid state (must be COMMITED)\r\n */\r\n async waitForPayment(abortSignal, checkIntervalSeconds) {\r\n if (this.state === ToBTCSwapState.CLAIMED)\r\n return Promise.resolve(true);\r\n if (this.state !== ToBTCSwapState.COMMITED && this.state !== ToBTCSwapState.SOFT_CLAIMED)\r\n throw new Error(\"Invalid state (not COMMITED)\");\r\n const abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n const result = await Promise.race([\r\n this.waitTillState(ToBTCSwapState.CLAIMED, \"gte\", abortController.signal),\r\n this.waitTillIntermediarySwapProcessed(abortController.signal, checkIntervalSeconds)\r\n ]);\r\n abortController.abort();\r\n if (typeof result !== \"object\") {\r\n if (this.state === ToBTCSwapState.REFUNDABLE)\r\n throw new Error(\"Swap expired\");\r\n this.logger.debug(\"waitTillRefunded(): Resolved from state change\");\r\n return true;\r\n }\r\n this.logger.debug(\"waitTillRefunded(): Resolved from intermediary response\");\r\n switch (result.code) {\r\n case IntermediaryAPI_1.RefundAuthorizationResponseCodes.PAID:\r\n return true;\r\n case IntermediaryAPI_1.RefundAuthorizationResponseCodes.REFUND_DATA:\r\n await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.isValidRefundAuthorization(this.data, result.data), null, base_1.SignatureVerificationError, abortSignal);\r\n await this._saveAndEmit(ToBTCSwapState.REFUNDABLE);\r\n return false;\r\n case IntermediaryAPI_1.RefundAuthorizationResponseCodes.EXPIRED:\r\n if (await this.wrapper.contract.isExpired(this.getInitiator(), this.data))\r\n throw new Error(\"Swap expired\");\r\n throw new IntermediaryError_1.IntermediaryError(\"Swap expired\");\r\n case IntermediaryAPI_1.RefundAuthorizationResponseCodes.NOT_FOUND:\r\n if (this.state === ToBTCSwapState.CLAIMED)\r\n return true;\r\n throw new Error(\"Intermediary swap not found\");\r\n }\r\n }\r\n async waitTillIntermediarySwapProcessed(abortSignal, checkIntervalSeconds = 5) {\r\n let resp = { code: IntermediaryAPI_1.RefundAuthorizationResponseCodes.PENDING, msg: \"\" };\r\n while (!abortSignal.aborted && (resp.code === IntermediaryAPI_1.RefundAuthorizationResponseCodes.PENDING || resp.code === IntermediaryAPI_1.RefundAuthorizationResponseCodes.NOT_FOUND)) {\r\n resp = await IntermediaryAPI_1.IntermediaryAPI.getRefundAuthorization(this.url, this.getLpIdentifier(), this.data.getSequence());\r\n if (resp.code === IntermediaryAPI_1.RefundAuthorizationResponseCodes.PAID) {\r\n const validResponse = await this._setPaymentResult(resp.data, true);\r\n if (validResponse) {\r\n if (this.state === ToBTCSwapState.COMMITED || this.state === ToBTCSwapState.REFUNDABLE) {\r\n await this._saveAndEmit(ToBTCSwapState.SOFT_CLAIMED);\r\n }\r\n }\r\n else {\r\n resp = { code: IntermediaryAPI_1.RefundAuthorizationResponseCodes.PENDING, msg: \"\" };\r\n }\r\n }\r\n if (resp.code === IntermediaryAPI_1.RefundAuthorizationResponseCodes.PENDING ||\r\n resp.code === IntermediaryAPI_1.RefundAuthorizationResponseCodes.NOT_FOUND)\r\n await (0, Utils_1.timeoutPromise)(checkIntervalSeconds * 1000, abortSignal);\r\n }\r\n return resp;\r\n }\r\n /**\r\n * Checks whether the swap was already processed by the LP and is either successful (requires proof which is\r\n * either a HTLC pre-image for LN swaps or valid txId for on-chain swap) or failed and we can cooperatively\r\n * refund.\r\n *\r\n * @param save whether to save the data\r\n * @returns true if swap is processed, false if the swap is still ongoing\r\n * @private\r\n */\r\n async checkIntermediarySwapProcessed(save = true) {\r\n if (this.state === ToBTCSwapState.CREATED || this.state == ToBTCSwapState.QUOTE_EXPIRED)\r\n return false;\r\n if (this.isFinished() || this.isRefundable())\r\n return true;\r\n //Check if that maybe already concluded according to the LP\r\n const resp = await IntermediaryAPI_1.IntermediaryAPI.getRefundAuthorization(this.url, this.getLpIdentifier(), this.data.getSequence());\r\n switch (resp.code) {\r\n case IntermediaryAPI_1.RefundAuthorizationResponseCodes.PAID:\r\n const processed = await this._setPaymentResult(resp.data, true);\r\n if (processed) {\r\n this.state = ToBTCSwapState.SOFT_CLAIMED;\r\n if (save)\r\n await this._saveAndEmit();\r\n }\r\n return processed;\r\n case IntermediaryAPI_1.RefundAuthorizationResponseCodes.REFUND_DATA:\r\n await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.isValidRefundAuthorization(this.data, resp.data), null, base_1.SignatureVerificationError);\r\n this.state = ToBTCSwapState.REFUNDABLE;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n //////////////////////////////\r\n //// Refund\r\n /**\r\n * Refunds the swap if the swap is in refundable state, you can check so with isRefundable()\r\n *\r\n * @param signer Signer to sign the transactions with, must be the same as used in the initialization\r\n * @param abortSignal Abort signal\r\n * @throws {Error} If invalid signer is provided that doesn't match the swap data\r\n */\r\n async refund(signer, abortSignal) {\r\n const result = await this.wrapper.contract.sendAndConfirm(signer, await this.txsRefund(signer.getAddress()), true, abortSignal);\r\n this.refundTxId = result[0];\r\n if (this.state === ToBTCSwapState.COMMITED || this.state === ToBTCSwapState.REFUNDABLE || this.state === ToBTCSwapState.SOFT_CLAIMED) {\r\n await this._saveAndEmit(ToBTCSwapState.REFUNDED);\r\n }\r\n return result[0];\r\n }\r\n /**\r\n * Returns transactions for refunding the swap if the swap is in refundable state, you can check so with isRefundable()\r\n *\r\n * @throws {IntermediaryError} If intermediary returns invalid response in case cooperative refund should be used\r\n * @throws {SignatureVerificationError} If intermediary returned invalid cooperative refund signature\r\n * @throws {Error} When state is not refundable\r\n */\r\n async txsRefund(signer) {\r\n if (!this.isRefundable())\r\n throw new Error(\"Must be in REFUNDABLE state or expired!\");\r\n signer ??= this.getInitiator();\r\n if (await this.wrapper.contract.isExpired(this.getInitiator(), this.data)) {\r\n return await this.wrapper.contract.txsRefund(signer, this.data, true, true);\r\n }\r\n else {\r\n const res = await IntermediaryAPI_1.IntermediaryAPI.getRefundAuthorization(this.url, this.getLpIdentifier(), this.data.getSequence());\r\n if (res.code === IntermediaryAPI_1.RefundAuthorizationResponseCodes.REFUND_DATA) {\r\n return await this.wrapper.contract.txsRefundWithAuthorization(signer, this.data, res.data, true, true);\r\n }\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid intermediary cooperative message returned\");\r\n }\r\n }\r\n /**\r\n * Waits till a swap is refunded, should be called after sending the refund transactions manually\r\n *\r\n * @param abortSignal AbortSignal\r\n * @throws {Error} When swap is not in a valid state (must be COMMITED)\r\n * @throws {Error} If we tried to refund but claimer was able to claim first\r\n */\r\n async waitTillRefunded(abortSignal) {\r\n if (this.state === ToBTCSwapState.REFUNDED)\r\n return Promise.resolve();\r\n if (this.state !== ToBTCSwapState.COMMITED && this.state !== ToBTCSwapState.SOFT_CLAIMED)\r\n throw new Error(\"Invalid state (not COMMITED)\");\r\n const abortController = new AbortController();\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => abortController.abort(abortSignal.reason));\r\n const res = await Promise.race([\r\n this.watchdogWaitTillResult(abortController.signal),\r\n this.waitTillState(ToBTCSwapState.REFUNDED, \"eq\", abortController.signal).then(() => 0),\r\n this.waitTillState(ToBTCSwapState.CLAIMED, \"eq\", abortController.signal).then(() => 1),\r\n ]);\r\n abortController.abort();\r\n if (res === 0) {\r\n this.logger.debug(\"waitTillRefunded(): Resolved from state change (REFUNDED)\");\r\n return;\r\n }\r\n if (res === 1) {\r\n this.logger.debug(\"waitTillRefunded(): Resolved from state change (CLAIMED)\");\r\n throw new Error(\"Tried to refund swap, but claimer claimed it in the meantime!\");\r\n }\r\n this.logger.debug(\"waitTillRefunded(): Resolved from watchdog\");\r\n if (res === base_1.SwapCommitStatus.PAID) {\r\n await this._saveAndEmit(ToBTCSwapState.CLAIMED);\r\n throw new Error(\"Tried to refund swap, but claimer claimed it in the meantime!\");\r\n }\r\n if (res === base_1.SwapCommitStatus.NOT_COMMITED) {\r\n await this._saveAndEmit(ToBTCSwapState.REFUNDED);\r\n }\r\n }\r\n //////////////////////////////\r\n //// Storage\r\n serialize() {\r\n const obj = super.serialize();\r\n return {\r\n ...obj,\r\n networkFee: this.networkFee == null ? null : this.networkFee.toString(10),\r\n networkFeeBtc: this.networkFeeBtc == null ? null : this.networkFeeBtc.toString(10)\r\n };\r\n }\r\n //////////////////////////////\r\n //// Swap ticks & sync\r\n /**\r\n * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain\r\n * data\r\n *\r\n * @private\r\n */\r\n async syncStateFromChain() {\r\n if (this.state === ToBTCSwapState.CREATED ||\r\n this.state === ToBTCSwapState.QUOTE_SOFT_EXPIRED ||\r\n this.state === ToBTCSwapState.COMMITED ||\r\n this.state === ToBTCSwapState.SOFT_CLAIMED ||\r\n this.state === ToBTCSwapState.REFUNDABLE) {\r\n const res = await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.getCommitStatus(this.getInitiator(), this.data));\r\n switch (res) {\r\n case base_1.SwapCommitStatus.PAID:\r\n this.state = ToBTCSwapState.CLAIMED;\r\n return true;\r\n case base_1.SwapCommitStatus.REFUNDABLE:\r\n this.state = ToBTCSwapState.REFUNDABLE;\r\n return true;\r\n case base_1.SwapCommitStatus.EXPIRED:\r\n this.state = ToBTCSwapState.QUOTE_EXPIRED;\r\n return true;\r\n case base_1.SwapCommitStatus.NOT_COMMITED:\r\n if (this.state === ToBTCSwapState.COMMITED || this.state === ToBTCSwapState.REFUNDABLE) {\r\n this.state = ToBTCSwapState.REFUNDED;\r\n return true;\r\n }\r\n break;\r\n case base_1.SwapCommitStatus.COMMITED:\r\n if (this.state !== ToBTCSwapState.COMMITED && this.state !== ToBTCSwapState.REFUNDABLE) {\r\n this.state = ToBTCSwapState.COMMITED;\r\n return true;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n async _sync(save) {\r\n let changed = await this.syncStateFromChain();\r\n if ((this.state === ToBTCSwapState.CREATED || this.state === ToBTCSwapState.QUOTE_SOFT_EXPIRED) && !await this.isQuoteValid()) {\r\n //Check if quote is still valid\r\n this.state = ToBTCSwapState.QUOTE_EXPIRED;\r\n changed ||= true;\r\n }\r\n if (this.state === ToBTCSwapState.COMMITED || this.state === ToBTCSwapState.SOFT_CLAIMED) {\r\n //Check if that maybe already concluded\r\n changed ||= await this.checkIntermediarySwapProcessed(false);\r\n }\r\n if (save && changed)\r\n await this._saveAndEmit();\r\n return changed;\r\n }\r\n async _tick(save) {\r\n switch (this.state) {\r\n case ToBTCSwapState.CREATED:\r\n if (this.expiry < Date.now()) {\r\n this.state = ToBTCSwapState.QUOTE_SOFT_EXPIRED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n break;\r\n case ToBTCSwapState.COMMITED:\r\n case ToBTCSwapState.SOFT_CLAIMED:\r\n const expired = await this.wrapper.contract.isExpired(this.getInitiator(), this.data);\r\n if (expired) {\r\n this.state = ToBTCSwapState.REFUNDABLE;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n break;\r\n }\r\n return false;\r\n }\r\n}\r\nexports.IToBTCSwap = IToBTCSwap;\r\nvar ToBTCSwapState;\r\n(function (ToBTCSwapState) {\r\n ToBTCSwapState[ToBTCSwapState[\"REFUNDED\"] = -3] = \"REFUNDED\";\r\n ToBTCSwapState[ToBTCSwapState[\"QUOTE_EXPIRED\"] = -2] = \"QUOTE_EXPIRED\";\r\n ToBTCSwapState[ToBTCSwapState[\"QUOTE_SOFT_EXPIRED\"] = -1] = \"QUOTE_SOFT_EXPIRED\";\r\n ToBTCSwapState[ToBTCSwapState[\"CREATED\"] = 0] = \"CREATED\";\r\n ToBTCSwapState[ToBTCSwapState[\"COMMITED\"] = 1] = \"COMMITED\";\r\n ToBTCSwapState[ToBTCSwapState[\"SOFT_CLAIMED\"] = 2] = \"SOFT_CLAIMED\";\r\n ToBTCSwapState[ToBTCSwapState[\"CLAIMED\"] = 3] = \"CLAIMED\";\r\n ToBTCSwapState[ToBTCSwapState[\"REFUNDABLE\"] = 4] = \"REFUNDABLE\";\r\n})(ToBTCSwapState = exports.ToBTCSwapState || (exports.ToBTCSwapState = {}));\r\n","var upperCase = require('upper-case')\nvar noCase = require('no-case')\n\n/**\n * Camel case a string.\n *\n * @param {string} value\n * @param {string} [locale]\n * @return {string}\n */\nmodule.exports = function (value, locale, mergeNumbers) {\n var result = noCase(value, locale)\n\n // Replace periods between numeric entities with an underscore.\n if (!mergeNumbers) {\n result = result.replace(/ (?=\\d)/g, '_')\n }\n\n // Replace spaces between words with an upper cased character.\n return result.replace(/ (.)/g, function (m, $1) {\n return upperCase($1, locale)\n })\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_check_circle_outline = void 0;\nvar ic_check_circle_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm4.59-12.42L10 14.17l-2.59-2.58L6 13l4 4 8-8z\"\n },\n \"children\": []\n }]\n};\nexports.ic_check_circle_outline = ic_check_circle_outline;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lock = void 0;\nvar lock = {\n \"viewBox\": \"0 0 1152 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M320 768h512v-192q0-106-75-181t-181-75-181 75-75 181v192zM1152 864v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-192q0-184 132-316t316-132 316 132 132 316v192h32q40 0 68 28t28 68z\"\n }\n }]\n};\nexports.lock = lock;","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","import { struct } from '@solana/buffer-layout';\nimport { bool } from '@solana/buffer-layout-utils';\nimport type { Account } from '../../state/account.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\n/** MemoTransfer as stored by the program */\nexport interface MemoTransfer {\n /** Require transfers into this account to be accompanied by a memo */\n requireIncomingTransferMemos: boolean;\n}\n\n/** Buffer layout for de/serializing a memo transfer extension */\nexport const MemoTransferLayout = struct([bool('requireIncomingTransferMemos')]);\n\nexport const MEMO_TRANSFER_SIZE = MemoTransferLayout.span;\n\nexport function getMemoTransfer(account: Account): MemoTransfer | null {\n const extensionData = getExtensionData(ExtensionType.MemoTransfer, account.tlvData);\n if (extensionData !== null) {\n return MemoTransferLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n","'use strict';\n\nconst uuid = require('uuid').v4;\n\n/**\n * Generates a JSON-RPC 1.0 or 2.0 request\n * @param {String} method Name of method to call\n * @param {Array|Object} params Array of parameters passed to the method as specified, or an object of parameter names and corresponding value\n * @param {String|Number|null} [id] Request ID can be a string, number, null for explicit notification or left out for automatic generation\n * @param {Object} [options]\n * @param {Number} [options.version=2] JSON-RPC version to use (1 or 2)\n * @param {Boolean} [options.notificationIdNull=false] When true, version 2 requests will set id to null instead of omitting it\n * @param {Function} [options.generator] Passed the request, and the options object and is expected to return a request ID\n * @throws {TypeError} If any of the parameters are invalid\n * @return {Object} A JSON-RPC 1.0 or 2.0 request\n * @memberOf Utils\n */\nconst generateRequest = function(method, params, id, options) {\n if(typeof method !== 'string') {\n throw new TypeError(method + ' must be a string');\n }\n\n options = options || {};\n\n // check valid version provided\n const version = typeof options.version === 'number' ? options.version : 2;\n if (version !== 1 && version !== 2) {\n throw new TypeError(version + ' must be 1 or 2');\n }\n\n const request = {\n method: method\n };\n\n if(version === 2) {\n request.jsonrpc = '2.0';\n }\n\n if(params) {\n // params given, but invalid?\n if(typeof params !== 'object' && !Array.isArray(params)) {\n throw new TypeError(params + ' must be an object, array or omitted');\n }\n request.params = params;\n }\n\n // if id was left out, generate one (null means explicit notification)\n if(typeof(id) === 'undefined') {\n const generator = typeof options.generator === 'function' ? options.generator : function() { return uuid(); };\n request.id = generator(request, options);\n } else if (version === 2 && id === null) {\n // we have a version 2 notification\n if (options.notificationIdNull) {\n request.id = null; // id will not be set at all unless option provided\n }\n } else {\n request.id = id;\n }\n\n return request;\n};\n\nmodule.exports = generateRequest;\n","import type { IdentifierString, WalletAccount } from '@wallet-standard/base';\n\n/** Name of the feature. */\nexport const SolanaSignTransaction = 'solana:signTransaction';\n\n/** TODO: docs */\nexport type SolanaSignTransactionFeature = {\n /** Name of the feature. */\n readonly [SolanaSignTransaction]: {\n /** Version of the feature API. */\n readonly version: SolanaSignTransactionVersion;\n\n /** TODO: docs */\n readonly supportedTransactionVersions: readonly SolanaTransactionVersion[];\n\n /**\n * Sign transactions using the account's secret key.\n *\n * @param inputs Inputs for signing transactions.\n *\n * @return Outputs of signing transactions.\n */\n readonly signTransaction: SolanaSignTransactionMethod;\n };\n};\n\n/** Version of the feature. */\nexport type SolanaSignTransactionVersion = '1.0.0';\n\n/** TODO: docs */\nexport type SolanaTransactionVersion = 'legacy' | 0;\n\n/** TODO: docs */\nexport type SolanaSignTransactionMethod = (\n ...inputs: readonly SolanaSignTransactionInput[]\n) => Promise;\n\n/** Input for signing a transaction. */\nexport interface SolanaSignTransactionInput {\n /** Account to use. */\n readonly account: WalletAccount;\n\n /** Serialized transaction, as raw bytes. */\n readonly transaction: Uint8Array;\n\n /** Chain to use. */\n readonly chain?: IdentifierString;\n\n /** TODO: docs */\n readonly options?: SolanaSignTransactionOptions;\n}\n\n/** Output of signing a transaction. */\nexport interface SolanaSignTransactionOutput {\n /**\n * Signed, serialized transaction, as raw bytes.\n * Returning a transaction rather than signatures allows multisig wallets, program wallets, and other wallets that\n * use meta-transactions to return a modified, signed transaction.\n */\n readonly signedTransaction: Uint8Array;\n}\n\n/** Options for signing a transaction. */\nexport type SolanaSignTransactionOptions = {\n /** Preflight commitment level. */\n readonly preflightCommitment?: SolanaTransactionCommitment;\n\n /** The minimum slot that the request can be evaluated at. */\n readonly minContextSlot?: number;\n};\n\n/** Commitment level for transactions. */\nexport type SolanaTransactionCommitment = 'processed' | 'confirmed' | 'finalized';\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.claimHandlersList = void 0;\r\nconst HashlockClaimHandler_1 = require(\"./HashlockClaimHandler\");\r\nconst BitcoinTxIdClaimHandler_1 = require(\"./btc/BitcoinTxIdClaimHandler\");\r\nconst BitcoinOutputClaimHandler_1 = require(\"./btc/BitcoinOutputClaimHandler\");\r\nconst BitcoinNoncedOutputClaimHandler_1 = require(\"./btc/BitcoinNoncedOutputClaimHandler\");\r\nexports.claimHandlersList = [\r\n HashlockClaimHandler_1.HashlockClaimHandler,\r\n BitcoinTxIdClaimHandler_1.BitcoinTxIdClaimHandler,\r\n BitcoinOutputClaimHandler_1.BitcoinOutputClaimHandler,\r\n BitcoinNoncedOutputClaimHandler_1.BitcoinNoncedOutputClaimHandler\r\n];\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToBTCLNSwap = exports.isToBTCLNSwapInit = void 0;\r\nconst bolt11_1 = require(\"@atomiqlabs/bolt11\");\r\nconst IToBTCSwap_1 = require(\"../IToBTCSwap\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst createHash = require(\"create-hash\");\r\nconst IntermediaryError_1 = require(\"../../../errors/IntermediaryError\");\r\nconst LNURL_1 = require(\"../../../utils/LNURL\");\r\nconst Tokens_1 = require(\"../../Tokens\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nfunction isToBTCLNSwapInit(obj) {\r\n return typeof (obj.confidence) === \"number\" &&\r\n typeof (obj.pr) === \"string\" &&\r\n (obj.lnurl == null || typeof (obj.lnurl) === \"string\") &&\r\n (obj.successAction == null || (0, LNURL_1.isLNURLPaySuccessAction)(obj.successAction)) &&\r\n (0, IToBTCSwap_1.isIToBTCSwapInit)(obj);\r\n}\r\nexports.isToBTCLNSwapInit = isToBTCLNSwapInit;\r\nclass ToBTCLNSwap extends IToBTCSwap_1.IToBTCSwap {\r\n constructor(wrapper, initOrObj) {\r\n if (isToBTCLNSwapInit(initOrObj))\r\n initOrObj.url += \"/tobtcln\";\r\n super(wrapper, initOrObj);\r\n this.outputToken = Tokens_1.BitcoinTokens.BTCLN;\r\n this.TYPE = SwapType_1.SwapType.TO_BTCLN;\r\n if (!isToBTCLNSwapInit(initOrObj)) {\r\n this.confidence = initOrObj.confidence;\r\n this.pr = initOrObj.pr;\r\n this.lnurl = initOrObj.lnurl;\r\n this.successAction = initOrObj.successAction;\r\n this.secret = initOrObj.secret;\r\n }\r\n this.paymentHash = this.getPaymentHash().toString(\"hex\");\r\n this.logger = (0, Utils_1.getLogger)(\"ToBTCLN(\" + this.getIdentifierHashString() + \"): \");\r\n this.tryCalculateSwapFee();\r\n }\r\n _setPaymentResult(result, check = false) {\r\n if (result == null)\r\n return Promise.resolve(false);\r\n if (result.secret == null)\r\n throw new IntermediaryError_1.IntermediaryError(\"No payment secret returned!\");\r\n if (check) {\r\n const secretBuffer = buffer_1.Buffer.from(result.secret, \"hex\");\r\n const hash = createHash(\"sha256\").update(secretBuffer).digest();\r\n if (!hash.equals(this.getPaymentHash()))\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid payment secret returned\");\r\n }\r\n this.secret = result.secret;\r\n return Promise.resolve(true);\r\n }\r\n //////////////////////////////\r\n //// Amounts & fees\r\n getOutput() {\r\n const parsedPR = (0, bolt11_1.decode)(this.pr);\r\n const amount = (BigInt(parsedPR.millisatoshis) + 999n) / 1000n;\r\n return (0, Tokens_1.toTokenAmount)(amount, this.outputToken, this.wrapper.prices);\r\n }\r\n //////////////////////////////\r\n //// Getters & utils\r\n getOutputTxId() {\r\n return this.getLpIdentifier();\r\n }\r\n /**\r\n * Returns the lightning BOLT11 invoice where the BTC will be sent to\r\n */\r\n getLightningInvoice() {\r\n return this.pr;\r\n }\r\n /**\r\n * Returns payment secret (pre-image) as a proof of payment\r\n */\r\n getSecret() {\r\n return this.secret;\r\n }\r\n /**\r\n * Returns the confidence of the intermediary that this payment will succeed\r\n * Value between 0 and 1, where 0 is not likely and 1 is very likely\r\n */\r\n getConfidence() {\r\n return this.confidence;\r\n }\r\n getIdentifierHash() {\r\n const paymentHashBuffer = this.getPaymentHash();\r\n if (this.randomNonce == null)\r\n return paymentHashBuffer;\r\n return buffer_1.Buffer.concat([paymentHashBuffer, buffer_1.Buffer.from(this.randomNonce, \"hex\")]);\r\n }\r\n getPaymentHash() {\r\n if (this.pr == null)\r\n return null;\r\n const parsed = (0, bolt11_1.decode)(this.pr);\r\n return buffer_1.Buffer.from(parsed.tagsObject.payment_hash, \"hex\");\r\n }\r\n getLpIdentifier() {\r\n if (this.pr == null)\r\n return null;\r\n const parsed = (0, bolt11_1.decode)(this.pr);\r\n return parsed.tagsObject.payment_hash;\r\n }\r\n getRecipient() {\r\n return this.lnurl ?? this.pr;\r\n }\r\n //////////////////////////////\r\n //// LNURL-pay\r\n /**\r\n * Is this an LNURL-pay swap?\r\n */\r\n isLNURL() {\r\n return this.lnurl != null;\r\n }\r\n /**\r\n * Gets the used LNURL or null if this is not an LNURL-pay swap\r\n */\r\n getLNURL() {\r\n return this.lnurl;\r\n }\r\n /**\r\n * Checks whether this LNURL payment contains a success message\r\n */\r\n hasSuccessAction() {\r\n return this.successAction != null;\r\n }\r\n /**\r\n * Returns the success action after a successful payment, else null\r\n */\r\n getSuccessAction() {\r\n return LNURL_1.LNURL.decodeSuccessAction(this.successAction, this.secret);\r\n }\r\n //////////////////////////////\r\n //// Storage\r\n serialize() {\r\n return {\r\n ...super.serialize(),\r\n paymentHash: this.getPaymentHash().toString(\"hex\"),\r\n pr: this.pr,\r\n confidence: this.confidence,\r\n secret: this.secret,\r\n lnurl: this.lnurl,\r\n successAction: this.successAction\r\n };\r\n }\r\n}\r\nexports.ToBTCLNSwap = ToBTCLNSwap;\r\n","\"use strict\";\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(\"./client\"), exports);\n__exportStar(require(\"./provider\"), exports);\n__exportStar(require(\"./errors\"), exports);\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MempoolBitcoinWallet = void 0;\r\nconst coinselect2_1 = require(\"../coinselect2\");\r\nconst btc_signer_1 = require(\"@scure/btc-signer\");\r\nconst randomBytes = require(\"randombytes\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass MempoolBitcoinWallet {\r\n constructor(mempoolApi, network, feeMultiplier = 1.25) {\r\n this.mempoolApi = mempoolApi;\r\n this.network = network;\r\n this.feeMultiplier = feeMultiplier;\r\n }\r\n async _getFeeRate() {\r\n if (process.env.REACT_APP_OVERRIDE_BITCOIN_FEE != null) {\r\n return parseInt(process.env.REACT_APP_OVERRIDE_BITCOIN_FEE);\r\n }\r\n return Math.floor((await this.mempoolApi.getFees()).fastestFee * this.feeMultiplier);\r\n }\r\n _sendTransaction(rawHex) {\r\n return this.mempoolApi.sendTransaction(rawHex);\r\n }\r\n _getBalance(address) {\r\n return this.mempoolApi.getAddressBalances(address);\r\n }\r\n async _getUtxoPool(sendingAddress, sendingAddressType) {\r\n const utxos = await this.mempoolApi.getAddressUTXOs(sendingAddress);\r\n let totalSpendable = 0;\r\n const outputScript = (0, Utils_1.toOutputScript)(this.network, sendingAddress);\r\n const utxoPool = [];\r\n for (let utxo of utxos) {\r\n const value = Number(utxo.value);\r\n totalSpendable += value;\r\n utxoPool.push({\r\n vout: utxo.vout,\r\n txId: utxo.txid,\r\n value: value,\r\n type: sendingAddressType,\r\n outputScript: outputScript,\r\n address: sendingAddress,\r\n cpfp: !utxo.status.confirmed ? await this.mempoolApi.getCPFPData(utxo.txid).then((result) => {\r\n if (result.effectiveFeePerVsize == null)\r\n return null;\r\n return {\r\n txVsize: result.adjustedVsize,\r\n txEffectiveFeeRate: result.effectiveFeePerVsize\r\n };\r\n }) : null,\r\n confirmed: utxo.status.confirmed\r\n });\r\n }\r\n console.log(\"Total spendable value: \" + totalSpendable + \" num utxos: \" + utxoPool.length);\r\n return utxoPool;\r\n }\r\n async _getPsbt(sendingAccounts, recipient, amount, feeRate) {\r\n if (feeRate == null)\r\n feeRate = await this._getFeeRate();\r\n const utxoPool = (await Promise.all(sendingAccounts.map(acc => this._getUtxoPool(acc.address, acc.addressType)))).flat();\r\n console.log(\"Utxo pool: \", utxoPool);\r\n const accountPubkeys = {};\r\n sendingAccounts.forEach(acc => accountPubkeys[acc.address] = acc.pubkey);\r\n const targets = [\r\n {\r\n address: recipient,\r\n value: amount,\r\n script: (0, Utils_1.toOutputScript)(this.network, recipient)\r\n }\r\n ];\r\n console.log(\"Coinselect targets: \", targets);\r\n let coinselectResult = (0, coinselect2_1.coinSelect)(utxoPool, targets, feeRate, sendingAccounts[0].addressType);\r\n console.log(\"Coinselect result: \", coinselectResult);\r\n if (coinselectResult.inputs == null || coinselectResult.outputs == null) {\r\n return {\r\n psbt: null,\r\n fee: coinselectResult.fee,\r\n inputAddressIndexes: null\r\n };\r\n }\r\n const psbt = new btc_signer_1.Transaction({ PSBTVersion: 0 });\r\n const inputAddressIndexes = {};\r\n coinselectResult.inputs.forEach((input, index) => {\r\n inputAddressIndexes[input.address] ??= [];\r\n inputAddressIndexes[input.address].push(index);\r\n });\r\n console.log(\"Inputs: \", coinselectResult.inputs);\r\n const formattedInputs = await Promise.all(coinselectResult.inputs.map(async (input) => {\r\n switch (input.type) {\r\n case \"p2tr\":\r\n const parsed = (0, btc_signer_1.p2tr)(buffer_1.Buffer.from(accountPubkeys[input.address], \"hex\"));\r\n return {\r\n txid: input.txId,\r\n index: input.vout,\r\n witnessUtxo: {\r\n script: input.outputScript,\r\n amount: BigInt(input.value)\r\n },\r\n tapInternalKey: parsed.tapInternalKey,\r\n tapMerkleRoot: parsed.tapMerkleRoot,\r\n tapLeafScript: parsed.tapLeafScript\r\n };\r\n case \"p2wpkh\":\r\n return {\r\n txid: input.txId,\r\n index: input.vout,\r\n witnessUtxo: {\r\n script: input.outputScript,\r\n amount: BigInt(input.value)\r\n },\r\n sighashType: 0x01\r\n };\r\n case \"p2sh-p2wpkh\":\r\n return {\r\n txid: input.txId,\r\n index: input.vout,\r\n witnessUtxo: {\r\n script: input.outputScript,\r\n amount: BigInt(input.value)\r\n },\r\n redeemScript: (0, btc_signer_1.p2wpkh)(buffer_1.Buffer.from(accountPubkeys[input.address], \"hex\"), this.network).script,\r\n sighashType: 0x01\r\n };\r\n case \"p2pkh\":\r\n return {\r\n txid: input.txId,\r\n index: input.vout,\r\n nonWitnessUtxo: await this.mempoolApi.getRawTransaction(input.txId),\r\n sighashType: 0x01\r\n };\r\n }\r\n }));\r\n formattedInputs.forEach(input => psbt.addInput(input));\r\n psbt.addOutput({\r\n script: (0, Utils_1.toOutputScript)(this.network, recipient),\r\n amount: BigInt(amount)\r\n });\r\n if (coinselectResult.outputs.length > 1) {\r\n psbt.addOutput({\r\n script: (0, Utils_1.toOutputScript)(this.network, sendingAccounts[0].address),\r\n amount: BigInt(Math.floor(coinselectResult.outputs[1].value))\r\n });\r\n }\r\n return {\r\n psbt,\r\n fee: coinselectResult.fee,\r\n inputAddressIndexes\r\n };\r\n }\r\n async _getSpendableBalance(sendingAccounts) {\r\n const useFeeRate = await this._getFeeRate();\r\n const utxoPool = (await Promise.all(sendingAccounts.map(acc => this._getUtxoPool(acc.address, acc.addressType)))).flat();\r\n console.log(\"Utxo pool: \", utxoPool);\r\n const target = btc_signer_1.OutScript.encode({\r\n type: \"wsh\",\r\n hash: randomBytes(32)\r\n });\r\n let coinselectResult = (0, coinselect2_1.maxSendable)(utxoPool, buffer_1.Buffer.from(target), \"p2wsh\", useFeeRate);\r\n console.log(\"Max spendable result: \", coinselectResult);\r\n return {\r\n feeRate: useFeeRate,\r\n balance: BigInt(Math.floor(coinselectResult.value)),\r\n totalFee: coinselectResult.fee\r\n };\r\n }\r\n}\r\nexports.MempoolBitcoinWallet = MempoolBitcoinWallet;\r\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD = 16209; /* got a data error -- remain here until reset */\nconst TYPE = 16191; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IndexedDBUnifiedStorage = void 0;\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nfunction toCompositeIndex(values) {\r\n if (values.length === 0)\r\n return [];\r\n if (values.length === 1) {\r\n return values[0];\r\n }\r\n else {\r\n const compositeArray = [];\r\n const firstValues = values.shift();\r\n const restValues = toCompositeIndex(values);\r\n for (let value of firstValues) {\r\n for (let restValue of restValues) {\r\n compositeArray.push([value].concat(restValue));\r\n }\r\n }\r\n return compositeArray;\r\n }\r\n}\r\nfunction matches(conditions, obj) {\r\n for (let condition of conditions) {\r\n let value = obj[condition.key];\r\n if (!condition.values.has(value))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction toSetConditions(input) {\r\n return input.map(val => {\r\n return {\r\n key: val.key,\r\n values: Array.isArray(val.value) ? new Set(val.value) : new Set([val.value])\r\n };\r\n });\r\n}\r\nconst indexes = {\r\n \"escrowHash\": { key: \"escrowHash\", unique: true },\r\n \"type\": { key: \"type\", unique: false },\r\n \"initiator\": { key: \"initiator\", unique: false },\r\n \"initiator, id\": { key: [\"initiator\", \"id\"], unique: false },\r\n \"type, state\": { key: [\"type\", \"state\"], unique: false },\r\n \"type, paymentHash\": { key: [\"type\", \"paymentHash\"], unique: false },\r\n \"type, initiator, state\": { key: [\"type\", \"initiator\", \"state\"], unique: false }\r\n};\r\nclass IndexedDBUnifiedStorage {\r\n constructor(storageKey) {\r\n this.storageKey = storageKey;\r\n this.logger = (0, Utils_1.getLogger)(\"IndexedDBUnifiedStorage(\" + this.storageKey + \"): \");\r\n }\r\n //Reviver also needs to update the swap to the latest version\r\n async tryMigrateLocalStorage(storageKey, swapType, reviver) {\r\n const txt = window.localStorage.getItem(storageKey);\r\n if (txt == null)\r\n return false;\r\n let data;\r\n try {\r\n data = JSON.parse(txt);\r\n }\r\n catch (e) {\r\n this.logger.error(\"tryMigrate(\" + storageKey + \"): Tried to migrate the database, but cannot parse old local storage!\");\r\n return false;\r\n }\r\n let swaps = Object.keys(data).map(id => {\r\n let swapData = data[id];\r\n swapData.type = swapType;\r\n return reviver(swapData);\r\n });\r\n await this.saveAll(swaps.map(swap => swap.serialize()));\r\n window.localStorage.removeItem(storageKey);\r\n this.logger.info(\"tryMigrate(\" + storageKey + \"): Database successfully migrated from localStorage to unifiedIndexedDB!\");\r\n return true;\r\n }\r\n //Reviver also needs to update the swap to the latest version\r\n async tryMigrateOldIndexedDB(storageKey, swapType, reviver) {\r\n const databases = await window.indexedDB.databases();\r\n if (databases.find(val => val.name === storageKey) == null) {\r\n this.logger.info(\"tryMigrateOldIndexedDB(\" + storageKey + \"): Old database not found!\");\r\n return false;\r\n }\r\n this.logger.debug(\"tryMigrateOldIndexedDB(\" + storageKey + \"): Old database found!\");\r\n let db;\r\n try {\r\n db = await new Promise((resolve, reject) => {\r\n const request = window.indexedDB.open(storageKey, 1);\r\n request.onerror = (e) => reject(e);\r\n request.onsuccess = (e) => resolve(e.target.result);\r\n });\r\n }\r\n catch (e) {\r\n this.logger.error(\"tryMigrateOldIndexedDB(\" + storageKey + \"): Error opening old IndexedDB!\", e);\r\n return false;\r\n }\r\n this.logger.debug(\"tryMigrateOldIndexedDB(\" + storageKey + \"): Connection opened!\");\r\n try {\r\n const data = await new Promise((resolve, reject) => {\r\n const tx = db.transaction(\"swaps\", \"readonly\", { durability: \"strict\" });\r\n const store = tx.objectStore(\"swaps\");\r\n const req = store.getAll();\r\n req.onsuccess = (event) => resolve(event.target.result);\r\n req.onerror = (event) => reject(event);\r\n });\r\n this.logger.debug(\"tryMigrateOldIndexedDB(\" + storageKey + \"): Data retrieved!\");\r\n let swaps = data.map(({ id, data }) => {\r\n data.type = swapType;\r\n return reviver(data);\r\n });\r\n this.logger.debug(\"tryMigrateOldIndexedDB(\" + storageKey + \"): Data revived!\");\r\n await this.saveAll(swaps.map(swap => swap.serialize()));\r\n this.logger.debug(\"tryMigrateOldIndexedDB(\" + storageKey + \"): Data saved!\");\r\n //Remove the old database\r\n db.close();\r\n this.logger.debug(\"tryMigrateOldIndexedDB(\" + storageKey + \"): DB connection closed!\");\r\n await new Promise((resolve, reject) => {\r\n const res = window.indexedDB.deleteDatabase(storageKey);\r\n res.onsuccess = () => resolve();\r\n res.onerror = (e) => reject(e);\r\n });\r\n this.logger.info(\"tryMigrateOldIndexedDB(\" + storageKey + \"): Database successfully migrated from oldIndexedDB to unifiedIndexedDB!\");\r\n return true;\r\n }\r\n catch (e) {\r\n this.logger.error(\"tryMigrateOldIndexedDB(\" + storageKey + \"): Tried to migrate the database, but cannot parse oldIndexedDB!\", e);\r\n return false;\r\n }\r\n }\r\n //NOTE: Reviver also needs to update the swap to the latest version\r\n async tryMigrate(storageKeys, reviver) {\r\n let someMigrated = false;\r\n for (let storageKey of storageKeys) {\r\n this.logger.info(\"tryMigrate(): Trying to migrate...\", storageKey);\r\n if (await this.tryMigrateLocalStorage(storageKey[0], storageKey[1], reviver))\r\n someMigrated = true;\r\n if (await this.tryMigrateOldIndexedDB(storageKey[0], storageKey[1], reviver))\r\n someMigrated = true;\r\n }\r\n return someMigrated;\r\n }\r\n executeTransaction(cbk, readonly) {\r\n return new Promise((resolve, reject) => {\r\n const tx = this.db.transaction(\"swaps\", readonly ? \"readonly\" : \"readwrite\", { durability: \"strict\" });\r\n const req = cbk(tx.objectStore(\"swaps\"));\r\n req.onsuccess = (event) => resolve(event.target.result);\r\n req.onerror = (event) => reject(event);\r\n });\r\n }\r\n executeTransactionArr(cbk, readonly) {\r\n const tx = this.db.transaction(\"swaps\", readonly ? \"readonly\" : \"readwrite\", { durability: \"strict\" });\r\n const reqs = cbk(tx.objectStore(\"swaps\"));\r\n return Promise.all(reqs.map(req => new Promise((resolve, reject) => {\r\n req.onsuccess = (event) => resolve(event.target.result);\r\n req.onerror = (event) => reject(event);\r\n })));\r\n }\r\n executeTransactionWithCursor(cbk, valueCbk) {\r\n return new Promise((resolve, reject) => {\r\n const tx = this.db.transaction(\"swaps\", \"readonly\", { durability: \"strict\" });\r\n const cursorRequests = cbk(tx.objectStore(\"swaps\"));\r\n const resultObjects = [];\r\n for (let cursorRequest of cursorRequests) {\r\n cursorRequest.onsuccess = (event) => {\r\n const cursor = event.target.result;\r\n if (cursor != null) {\r\n const value = cursor.value;\r\n if (valueCbk(value))\r\n resultObjects.push(value);\r\n cursor.continue();\r\n }\r\n else {\r\n resolve(resultObjects);\r\n }\r\n };\r\n cursorRequest.onerror = (event) => reject(event);\r\n }\r\n });\r\n }\r\n async init() {\r\n if (this.db == null) {\r\n this.db = await new Promise((resolve, reject) => {\r\n const request = window.indexedDB.open(this.storageKey, 1);\r\n request.onupgradeneeded = (event) => {\r\n const db = event.target.result;\r\n const objectStore = db.createObjectStore(\"swaps\", { keyPath: \"id\" });\r\n Object.keys(indexes).forEach(name => {\r\n const index = indexes[name];\r\n objectStore.createIndex(name, index.key, { unique: index.unique });\r\n });\r\n };\r\n request.onerror = (e) => reject(e);\r\n request.onsuccess = (e) => resolve(e.target.result);\r\n });\r\n }\r\n }\r\n /**\r\n * Params are specified in the following way:\r\n * - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met\r\n * - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met\r\n * - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met\r\n * @param params\r\n */\r\n async query(params) {\r\n if (params.length === 0)\r\n return await this.querySingle([]);\r\n const results = await Promise.all(params.map(singleParam => this.querySingle(singleParam)));\r\n const resultSet = new Set(results.flat()); //Deduplicate\r\n return Array.from(resultSet);\r\n }\r\n async querySingle(params) {\r\n if (params.length === 0) {\r\n return await this.executeTransaction((objectStore) => objectStore.getAll(), true);\r\n }\r\n const queryKeys = params.map(param => param.key);\r\n const requiredIndex = queryKeys.join(\", \");\r\n if (requiredIndex === \"id\") {\r\n //ID is the index\r\n const values = Array.isArray(params[0].value) ? params[0].value : [params[0].value];\r\n const res = await this.executeTransactionArr((objectStore) => {\r\n return values.map(val => objectStore.getAll(val));\r\n }, true);\r\n return res.flat();\r\n }\r\n else if (indexes[requiredIndex] != null) {\r\n //Index exists\r\n const values = params.map(param => Array.isArray(param.value) ? param.value : [param.value]);\r\n const compositeIndexQueries = toCompositeIndex(values);\r\n const resp = await this.executeTransactionArr(objectStore => {\r\n const index = objectStore.index(requiredIndex);\r\n return compositeIndexQueries.map(indexQuery => index.getAll(indexQuery));\r\n }, true);\r\n return resp.flat();\r\n }\r\n else {\r\n //Need to go over all values\r\n this.logger.warn(\"query(): Index cannot be used for query, required index: \" + requiredIndex + \" query params: \", params);\r\n const setConditions = toSetConditions(params);\r\n return await this.executeTransactionWithCursor(objectStore => [objectStore.openCursor()], (val) => matches(setConditions, val));\r\n }\r\n }\r\n async remove(object) {\r\n await this.executeTransaction(store => store.delete(object.id), false)\r\n .catch(() => null);\r\n }\r\n async removeAll(arr) {\r\n if (arr.length === 0)\r\n return;\r\n await this.executeTransactionArr(store => arr.map(object => {\r\n return store.delete(object.id);\r\n }), false);\r\n }\r\n async save(object) {\r\n await this.executeTransaction(store => store.put(object), false);\r\n }\r\n async saveAll(arr) {\r\n if (arr.length === 0)\r\n return;\r\n await this.executeTransactionArr(store => arr.map(object => {\r\n return store.put(object);\r\n }), false);\r\n }\r\n}\r\nexports.IndexedDBUnifiedStorage = IndexedDBUnifiedStorage;\r\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Poseidon Hash: https://eprint.iacr.org/2019/458.pdf, https://www.poseidon-hash.info\nimport { IField, FpPow, validateField } from './modular.js';\n// We don't provide any constants, since different implementations use different constants.\n// For reference constants see './test/poseidon.test.js'.\nexport type PoseidonOpts = {\n Fp: IField;\n t: number;\n roundsFull: number;\n roundsPartial: number;\n sboxPower?: number;\n reversePartialPowIdx?: boolean; // Hack for stark\n mds: bigint[][];\n roundConstants: bigint[][];\n};\n\nexport function validateOpts(opts: PoseidonOpts) {\n const { Fp, mds, reversePartialPowIdx: rev, roundConstants: rc } = opts;\n const { roundsFull, roundsPartial, sboxPower, t } = opts;\n\n validateField(Fp);\n for (const i of ['t', 'roundsFull', 'roundsPartial'] as const) {\n if (typeof opts[i] !== 'number' || !Number.isSafeInteger(opts[i]))\n throw new Error(`Poseidon: invalid param ${i}=${opts[i]} (${typeof opts[i]})`);\n }\n\n // MDS is TxT matrix\n if (!Array.isArray(mds) || mds.length !== t) throw new Error('Poseidon: wrong MDS matrix');\n const _mds = mds.map((mdsRow) => {\n if (!Array.isArray(mdsRow) || mdsRow.length !== t)\n throw new Error(`Poseidon MDS matrix row: ${mdsRow}`);\n return mdsRow.map((i) => {\n if (typeof i !== 'bigint') throw new Error(`Poseidon MDS matrix value=${i}`);\n return Fp.create(i);\n });\n });\n\n if (rev !== undefined && typeof rev !== 'boolean')\n throw new Error(`Poseidon: invalid param reversePartialPowIdx=${rev}`);\n\n if (roundsFull % 2 !== 0) throw new Error(`Poseidon roundsFull is not even: ${roundsFull}`);\n const rounds = roundsFull + roundsPartial;\n\n if (!Array.isArray(rc) || rc.length !== rounds)\n throw new Error('Poseidon: wrong round constants');\n const roundConstants = rc.map((rc) => {\n if (!Array.isArray(rc) || rc.length !== t)\n throw new Error(`Poseidon wrong round constants: ${rc}`);\n return rc.map((i) => {\n if (typeof i !== 'bigint' || !Fp.isValid(i))\n throw new Error(`Poseidon wrong round constant=${i}`);\n return Fp.create(i);\n });\n });\n\n if (!sboxPower || ![3, 5, 7].includes(sboxPower))\n throw new Error(`Poseidon wrong sboxPower=${sboxPower}`);\n const _sboxPower = BigInt(sboxPower);\n let sboxFn = (n: bigint) => FpPow(Fp, n, _sboxPower);\n // Unwrapped sbox power for common cases (195->142μs)\n if (sboxPower === 3) sboxFn = (n: bigint) => Fp.mul(Fp.sqrN(n), n);\n else if (sboxPower === 5) sboxFn = (n: bigint) => Fp.mul(Fp.sqrN(Fp.sqrN(n)), n);\n\n return Object.freeze({ ...opts, rounds, sboxFn, roundConstants, mds: _mds });\n}\n\nexport function splitConstants(rc: bigint[], t: number) {\n if (typeof t !== 'number') throw new Error('poseidonSplitConstants: wrong t');\n if (!Array.isArray(rc) || rc.length % t) throw new Error('poseidonSplitConstants: wrong rc');\n const res = [];\n let tmp = [];\n for (let i = 0; i < rc.length; i++) {\n tmp.push(rc[i]);\n if (tmp.length === t) {\n res.push(tmp);\n tmp = [];\n }\n }\n return res;\n}\n\nexport function poseidon(opts: PoseidonOpts) {\n const _opts = validateOpts(opts);\n const { Fp, mds, roundConstants, rounds, roundsPartial, sboxFn, t } = _opts;\n const halfRoundsFull = _opts.roundsFull / 2;\n const partialIdx = _opts.reversePartialPowIdx ? t - 1 : 0;\n const poseidonRound = (values: bigint[], isFull: boolean, idx: number) => {\n values = values.map((i, j) => Fp.add(i, roundConstants[idx][j]));\n\n if (isFull) values = values.map((i) => sboxFn(i));\n else values[partialIdx] = sboxFn(values[partialIdx]);\n // Matrix multiplication\n values = mds.map((i) => i.reduce((acc, i, j) => Fp.add(acc, Fp.mulN(i, values[j])), Fp.ZERO));\n return values;\n };\n const poseidonHash = function poseidonHash(values: bigint[]) {\n if (!Array.isArray(values) || values.length !== t)\n throw new Error(`Poseidon: wrong values (expected array of bigints with length ${t})`);\n values = values.map((i) => {\n if (typeof i !== 'bigint') throw new Error(`Poseidon: wrong value=${i} (${typeof i})`);\n return Fp.create(i);\n });\n let round = 0;\n // Apply r_f/2 full rounds.\n for (let i = 0; i < halfRoundsFull; i++) values = poseidonRound(values, true, round++);\n // Apply r_p partial rounds.\n for (let i = 0; i < roundsPartial; i++) values = poseidonRound(values, false, round++);\n // Apply r_f/2 full rounds.\n for (let i = 0; i < halfRoundsFull; i++) values = poseidonRound(values, true, round++);\n\n if (round !== rounds)\n throw new Error(`Poseidon: wrong number of rounds: last round=${round}, total=${rounds}`);\n return values;\n };\n // For verification in tests\n poseidonHash.roundConstants = roundConstants;\n return poseidonHash;\n}\n","import { schnorr, secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { ripemd160 } from '@noble/hashes/ripemd160';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { utils as packedUtils, U32LE } from 'micro-packed';\n\nexport type Hex = string | Uint8Array;\nexport type Bytes = Uint8Array;\nconst Point = secp.ProjectivePoint;\nconst CURVE_ORDER = secp.CURVE.n;\n\nconst isBytes: (a: unknown) => a is Uint8Array = packedUtils.isBytes;\nconst concatBytes: (...arrays: Uint8Array[]) => Uint8Array = packedUtils.concatBytes;\nconst equalBytes: (a: Uint8Array, b: Uint8Array) => boolean = packedUtils.equalBytes;\nexport { concatBytes, equalBytes, isBytes, sha256 };\n\nexport const hash160 = (msg: Uint8Array): Uint8Array => ripemd160(sha256(msg));\nexport const sha256x2 = (...msgs: Uint8Array[]): Uint8Array => sha256(sha256(concatBytes(...msgs)));\nexport const randomPrivateKeyBytes: () => Uint8Array = schnorr.utils.randomPrivateKey;\nexport const pubSchnorr = schnorr.getPublicKey as (priv: string | Uint8Array) => Uint8Array;\nexport const pubECDSA: (privateKey: string | Uint8Array, isCompressed?: boolean) => Uint8Array =\n secp.getPublicKey;\n\n// low-r signature grinding. Used to reduce tx size by 1 byte.\n// noble/secp256k1 does not support the feature: it is not used outside of BTC.\n// We implement it manually, because in BTC it's common.\n// Not best way, but closest to bitcoin implementation (easier to check)\nconst hasLowR = (sig: { r: bigint; s: bigint }) => sig.r < CURVE_ORDER / 2n;\nexport function signECDSA(hash: Bytes, privateKey: Bytes, lowR = false): Bytes {\n let sig = secp.sign(hash, privateKey);\n if (lowR && !hasLowR(sig)) {\n const extraEntropy = new Uint8Array(32);\n let counter = 0;\n while (!hasLowR(sig)) {\n extraEntropy.set(U32LE.encode(counter++));\n sig = secp.sign(hash, privateKey, { extraEntropy });\n if (counter > 4294967295) throw new Error('lowR counter overflow: report the error');\n }\n }\n return sig.toDERRawBytes();\n}\n\nexport const signSchnorr: typeof schnorr.sign = schnorr.sign;\nexport const tagSchnorr: typeof schnorr.utils.taggedHash = schnorr.utils.taggedHash;\n\nexport enum PubT {\n ecdsa,\n schnorr,\n}\nexport function validatePubkey(pub: Bytes, type: PubT): Bytes {\n const len = pub.length;\n if (type === PubT.ecdsa) {\n if (len === 32) throw new Error('Expected non-Schnorr key');\n Point.fromHex(pub); // does assertValidity\n return pub;\n } else if (type === PubT.schnorr) {\n if (len !== 32) throw new Error('Expected 32-byte Schnorr key');\n schnorr.utils.lift_x(schnorr.utils.bytesToNumberBE(pub));\n return pub;\n } else {\n throw new Error('Unknown key type');\n }\n}\n\nexport function tapTweak(a: Bytes, b: Bytes): bigint {\n const u = schnorr.utils;\n const t = u.taggedHash('TapTweak', a, b);\n const tn = u.bytesToNumberBE(t);\n if (tn >= CURVE_ORDER) throw new Error('tweak higher than curve order');\n return tn;\n}\n\nexport function taprootTweakPrivKey(privKey: Bytes, merkleRoot: Bytes = new Uint8Array()): Bytes {\n const u = schnorr.utils;\n const seckey0 = u.bytesToNumberBE(privKey); // seckey0 = int_from_bytes(seckey0)\n const P = Point.fromPrivateKey(seckey0); // P = point_mul(G, seckey0)\n // seckey = seckey0 if has_even_y(P) else SECP256K1_ORDER - seckey0\n const seckey = P.hasEvenY() ? seckey0 : u.mod(-seckey0, CURVE_ORDER);\n const xP = u.pointToBytes(P);\n // t = int_from_bytes(tagged_hash(\"TapTweak\", bytes_from_int(x(P)) + h)); >= SECP256K1_ORDER check\n const t = tapTweak(xP, merkleRoot);\n // bytes_from_int((seckey + t) % SECP256K1_ORDER)\n return u.numberToBytesBE(u.mod(seckey + t, CURVE_ORDER), 32);\n}\n\nexport function taprootTweakPubkey(pubKey: Bytes, h: Bytes): [Bytes, number] {\n const u = schnorr.utils;\n const t = tapTweak(pubKey, h); // t = int_from_bytes(tagged_hash(\"TapTweak\", pubkey + h))\n const P = u.lift_x(u.bytesToNumberBE(pubKey)); // P = lift_x(int_from_bytes(pubkey))\n const Q = P.add(Point.fromPrivateKey(t)); // Q = point_add(P, point_mul(G, t))\n const parity = Q.hasEvenY() ? 0 : 1; // 0 if has_even_y(Q) else 1\n return [u.pointToBytes(Q), parity]; // bytes_from_int(x(Q))\n}\n\n// Another stupid decision, where lack of standard affects security.\n// Multisig needs to be generated with some key.\n// We are using approach from BIP 341/bitcoinjs-lib: SHA256(uncompressedDER(SECP256K1_GENERATOR_POINT))\n// It is possible to switch SECP256K1_GENERATOR_POINT with some random point;\n// but it's too complex to prove.\n// Also used by bitcoin-core and bitcoinjs-lib\nexport const TAPROOT_UNSPENDABLE_KEY: Bytes = sha256(Point.BASE.toRawBytes(false));\n\nexport type BTC_NETWORK = {\n bech32: string;\n pubKeyHash: number;\n scriptHash: number;\n wif: number;\n};\nexport const NETWORK: BTC_NETWORK = {\n bech32: 'bc',\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n};\n\nexport const TEST_NETWORK: BTC_NETWORK = {\n bech32: 'tb',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n};\n\n// Exported for tests, internal method\nexport function compareBytes(a: Bytes, b: Bytes): number {\n if (!isBytes(a) || !isBytes(b)) throw new Error(`cmp: wrong type a=${typeof a} b=${typeof b}`);\n // -1 -> a a==b, 1 -> a>b\n const len = Math.min(a.length, b.length);\n for (let i = 0; i < len; i++) if (a[i] != b[i]) return Math.sign(a[i] - b[i]);\n return Math.sign(a.length - b.length);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapData = void 0;\r\nclass SwapData {\r\n static deserialize(data) {\r\n if (SwapData.deserializers[data.type] != null) {\r\n return new SwapData.deserializers[data.type](data);\r\n }\r\n }\r\n}\r\nexports.SwapData = SwapData;\r\nSwapData.deserializers = {};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetSwapData = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst TimelockRefundHandler_1 = require(\"./handlers/refund/TimelockRefundHandler\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst FLAG_PAY_OUT = 0x01n;\r\nconst FLAG_PAY_IN = 0x02n;\r\nconst FLAG_REPUTATION = 0x04n;\r\nfunction deserializeContractCalls(span) {\r\n const successActionsLen = Number((0, Utils_1.toBigInt)(span.shift()));\r\n const successActions = [];\r\n for (let i = 0; i < successActionsLen; i++) {\r\n const address = (0, Utils_1.toHex)(span.shift());\r\n const entrypoint = (0, Utils_1.toHex)(span.shift());\r\n const calldataLen = Number((0, Utils_1.toBigInt)(span.shift()));\r\n const calldata = span.splice(0, calldataLen).map(Utils_1.toHex);\r\n successActions.push({\r\n address,\r\n entrypoint,\r\n calldata\r\n });\r\n }\r\n return successActions;\r\n}\r\nfunction serializeContractCalls(calls, span) {\r\n span.push((0, Utils_1.toHex)(calls.length));\r\n calls.forEach((call) => {\r\n span.push(call.address);\r\n span.push(call.entrypoint);\r\n span.push((0, Utils_1.toHex)(call.calldata.length));\r\n span.push(...call.calldata);\r\n });\r\n return span;\r\n}\r\nclass StarknetSwapData extends base_1.SwapData {\r\n static toFlags(value) {\r\n const val = (0, Utils_1.toBigInt)(value);\r\n return {\r\n sequence: val >> 64n,\r\n payOut: (val & FLAG_PAY_OUT) === FLAG_PAY_OUT,\r\n payIn: (val & FLAG_PAY_IN) === FLAG_PAY_IN,\r\n reputation: (val & FLAG_REPUTATION) === FLAG_REPUTATION\r\n };\r\n }\r\n getFlags() {\r\n return (this.sequence << 64n) +\r\n (this.payOut ? FLAG_PAY_OUT : 0n) +\r\n (this.payIn ? FLAG_PAY_IN : 0n) +\r\n (this.reputation ? FLAG_REPUTATION : 0n);\r\n }\r\n constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData, successAction) {\r\n super();\r\n if (claimer != null || token != null || refundHandler != null || claimHandler != null ||\r\n payOut != null || payIn != null || reputation != null || sequence != null || claimData != null || refundData != null ||\r\n amount != null || feeToken != null || securityDeposit != null || claimerBounty != null) {\r\n this.offerer = offererOrData;\r\n this.claimer = claimer;\r\n this.token = token;\r\n this.refundHandler = refundHandler;\r\n this.claimHandler = claimHandler;\r\n this.payOut = payOut;\r\n this.payIn = payIn;\r\n this.reputation = reputation;\r\n this.sequence = sequence;\r\n this.claimData = claimData;\r\n this.refundData = refundData;\r\n this.amount = amount;\r\n this.feeToken = feeToken;\r\n this.securityDeposit = securityDeposit;\r\n this.claimerBounty = claimerBounty;\r\n this.kind = kind;\r\n this.extraData = extraData;\r\n this.successAction = successAction;\r\n }\r\n else {\r\n this.offerer = offererOrData.offerer;\r\n this.claimer = offererOrData.claimer;\r\n this.token = offererOrData.token;\r\n this.refundHandler = offererOrData.refundHandler;\r\n this.claimHandler = offererOrData.claimHandler;\r\n this.payOut = offererOrData.payOut;\r\n this.payIn = offererOrData.payIn;\r\n this.reputation = offererOrData.reputation;\r\n this.sequence = offererOrData.sequence == null ? null : BigInt(offererOrData.sequence);\r\n this.claimData = offererOrData.claimData;\r\n this.refundData = offererOrData.refundData;\r\n this.amount = offererOrData.amount == null ? null : BigInt(offererOrData.amount);\r\n this.feeToken = offererOrData.feeToken;\r\n this.securityDeposit = offererOrData.securityDeposit == null ? null : BigInt(offererOrData.securityDeposit);\r\n this.claimerBounty = offererOrData.claimerBounty == null ? null : BigInt(offererOrData.claimerBounty);\r\n this.kind = offererOrData.kind;\r\n this.extraData = offererOrData.extraData;\r\n this.successAction = offererOrData.successAction;\r\n }\r\n //For now we disallow usage of success actions\r\n if (this.successAction.length > 0)\r\n throw new Error(\"Success actions are not supported yet!\");\r\n }\r\n getOfferer() {\r\n return this.offerer;\r\n }\r\n setOfferer(newOfferer) {\r\n this.offerer = newOfferer;\r\n this.payIn = true;\r\n }\r\n getClaimer() {\r\n return this.claimer;\r\n }\r\n setClaimer(newClaimer) {\r\n this.claimer = newClaimer;\r\n this.payIn = false;\r\n this.payOut = true;\r\n this.reputation = false;\r\n }\r\n serialize() {\r\n return {\r\n type: \"strk\",\r\n offerer: this.offerer,\r\n claimer: this.claimer,\r\n token: this.token,\r\n refundHandler: this.refundHandler,\r\n claimHandler: this.claimHandler,\r\n payOut: this.payOut,\r\n payIn: this.payIn,\r\n reputation: this.reputation,\r\n sequence: this.sequence == null ? null : this.sequence.toString(10),\r\n claimData: this.claimData,\r\n refundData: this.refundData,\r\n amount: this.amount == null ? null : this.amount.toString(10),\r\n feeToken: this.feeToken,\r\n securityDeposit: this.securityDeposit == null ? null : this.securityDeposit.toString(10),\r\n claimerBounty: this.claimerBounty == null ? null : this.claimerBounty.toString(10),\r\n kind: this.kind,\r\n extraData: this.extraData,\r\n successAction: this.successAction\r\n };\r\n }\r\n getAmount() {\r\n return this.amount;\r\n }\r\n getToken() {\r\n return this.token;\r\n }\r\n isToken(token) {\r\n return this.token.toLowerCase() === token.toLowerCase();\r\n }\r\n getType() {\r\n return this.kind;\r\n }\r\n getExpiry() {\r\n return TimelockRefundHandler_1.TimelockRefundHandler.getExpiry(this);\r\n }\r\n isPayIn() {\r\n return this.payIn;\r\n }\r\n isPayOut() {\r\n return this.payOut;\r\n }\r\n getEscrowHash() {\r\n const amountValue = starknet_1.cairo.uint256(\"0x\" + this.amount.toString(16));\r\n const securityDepositValue = starknet_1.cairo.uint256(\"0x\" + this.securityDeposit.toString(16));\r\n const claimerBountyValue = starknet_1.cairo.uint256(\"0x\" + this.claimerBounty.toString(16));\r\n let escrowHash = starknet_1.hash.computePoseidonHashOnElements([\r\n this.offerer,\r\n this.claimer,\r\n this.token,\r\n this.refundHandler,\r\n this.claimHandler,\r\n this.getFlags(),\r\n this.claimData,\r\n this.refundData,\r\n amountValue.low,\r\n amountValue.high,\r\n this.feeToken,\r\n securityDepositValue.low,\r\n securityDepositValue.high,\r\n claimerBountyValue.low,\r\n claimerBountyValue.high,\r\n ...serializeContractCalls(this.successAction, []).slice(1) //Remove length prefix\r\n ]);\r\n if (escrowHash.startsWith(\"0x\"))\r\n escrowHash = escrowHash.slice(2);\r\n return escrowHash.padStart(64, \"0\");\r\n }\r\n getClaimHash() {\r\n let hash = this.claimData;\r\n if (hash.startsWith(\"0x\"))\r\n hash = hash.slice(2);\r\n return hash.padStart(64, \"0\");\r\n }\r\n getSequence() {\r\n return this.sequence;\r\n }\r\n getConfirmationsHint() {\r\n if (this.extraData == null)\r\n return null;\r\n if (this.extraData.length != 84)\r\n return null;\r\n return parseInt(this.extraData.slice(80), 16);\r\n }\r\n getNonceHint() {\r\n if (this.extraData == null)\r\n return null;\r\n if (this.extraData.length != 84)\r\n return null;\r\n return BigInt(\"0x\" + this.extraData.slice(64, 80));\r\n }\r\n getTxoHashHint() {\r\n if (this.extraData == null)\r\n return null;\r\n if (this.extraData.length != 84)\r\n return null;\r\n return this.extraData.slice(0, 64);\r\n }\r\n getExtraData() {\r\n return this.extraData;\r\n }\r\n setExtraData(extraData) {\r\n this.extraData = extraData;\r\n }\r\n getSecurityDeposit() {\r\n return this.securityDeposit;\r\n }\r\n getClaimerBounty() {\r\n return this.claimerBounty;\r\n }\r\n getTotalDeposit() {\r\n return this.claimerBounty < this.securityDeposit ? this.securityDeposit : this.claimerBounty;\r\n }\r\n getDepositToken() {\r\n return this.feeToken;\r\n }\r\n isDepositToken(token) {\r\n if (!token.startsWith(\"0x\"))\r\n token = \"0x\" + token;\r\n return (0, Utils_1.toHex)(this.feeToken) === (0, Utils_1.toHex)(token);\r\n }\r\n isClaimer(address) {\r\n if (!address.startsWith(\"0x\"))\r\n address = \"0x\" + address;\r\n return (0, Utils_1.toHex)(this.claimer) === (0, Utils_1.toHex)(address);\r\n }\r\n isOfferer(address) {\r\n if (!address.startsWith(\"0x\"))\r\n address = \"0x\" + address;\r\n return (0, Utils_1.toHex)(this.offerer) === (0, Utils_1.toHex)(address);\r\n }\r\n isRefundHandler(address) {\r\n if (!address.startsWith(\"0x\"))\r\n address = \"0x\" + address;\r\n return (0, Utils_1.toHex)(this.refundHandler) === (0, Utils_1.toHex)(address);\r\n }\r\n isClaimHandler(address) {\r\n if (!address.startsWith(\"0x\"))\r\n address = \"0x\" + address;\r\n return (0, Utils_1.toHex)(this.claimHandler) === (0, Utils_1.toHex)(address);\r\n }\r\n isClaimData(data) {\r\n if (!data.startsWith(\"0x\"))\r\n data = \"0x\" + data;\r\n return (0, Utils_1.toHex)(this.claimData) === (0, Utils_1.toHex)(data);\r\n }\r\n equals(other) {\r\n return other.offerer.toLowerCase() === this.offerer.toLowerCase() &&\r\n other.claimer.toLowerCase() === this.claimer.toLowerCase() &&\r\n other.token.toLowerCase() === this.token.toLowerCase() &&\r\n other.refundHandler.toLowerCase() === this.refundHandler.toLowerCase() &&\r\n other.claimHandler.toLowerCase() === this.claimHandler.toLowerCase() &&\r\n other.payIn === this.payIn &&\r\n other.payOut === this.payOut &&\r\n other.reputation === this.reputation &&\r\n this.sequence === other.sequence &&\r\n other.claimData.toLowerCase() === this.claimData.toLowerCase() &&\r\n other.refundData.toLowerCase() === this.refundData.toLowerCase() &&\r\n other.amount === this.amount &&\r\n other.securityDeposit === this.securityDeposit &&\r\n other.claimerBounty === this.claimerBounty;\r\n }\r\n toEscrowStruct() {\r\n return {\r\n offerer: this.offerer,\r\n claimer: this.claimer,\r\n token: this.token,\r\n refund_handler: this.refundHandler,\r\n claim_handler: this.claimHandler,\r\n flags: this.getFlags(),\r\n claim_data: this.claimData,\r\n refund_data: this.refundData,\r\n amount: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.amount)),\r\n fee_token: this.feeToken,\r\n security_deposit: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.securityDeposit)),\r\n claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty)),\r\n success_action: this.successAction\r\n };\r\n }\r\n static fromSerializedFeltArray(span, claimHandlerImpl) {\r\n const offerer = (0, Utils_1.toHex)(span.shift());\r\n const claimer = (0, Utils_1.toHex)(span.shift());\r\n const token = (0, Utils_1.toHex)(span.shift());\r\n const refundHandler = (0, Utils_1.toHex)(span.shift());\r\n const claimHandler = (0, Utils_1.toHex)(span.shift());\r\n const { payOut, payIn, reputation, sequence } = StarknetSwapData.toFlags(span.shift());\r\n const claimData = (0, Utils_1.toHex)(span.shift());\r\n const refundData = (0, Utils_1.toHex)(span.shift());\r\n const amount = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });\r\n const feeToken = (0, Utils_1.toHex)(span.shift());\r\n const securityDeposit = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });\r\n const claimerBounty = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });\r\n const successActions = deserializeContractCalls(span);\r\n return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null, successActions);\r\n }\r\n}\r\nexports.StarknetSwapData = StarknetSwapData;\r\nbase_1.SwapData.deserializers[\"strk\"] = StarknetSwapData;\r\n","\"use strict\";\n// date-time parsing constants (RFC6265 S5.1.1)\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseDate = parseDate;\n// eslint-disable-next-line no-control-regex\nconst DATE_DELIM = /[\\x09\\x20-\\x2F\\x3B-\\x40\\x5B-\\x60\\x7B-\\x7E]/;\nconst MONTH_TO_NUM = {\n jan: 0,\n feb: 1,\n mar: 2,\n apr: 3,\n may: 4,\n jun: 5,\n jul: 6,\n aug: 7,\n sep: 8,\n oct: 9,\n nov: 10,\n dec: 11,\n};\n/*\n * Parses a Natural number (i.e., non-negative integer) with either the\n * *DIGIT ( non-digit *OCTET )\n * or\n * *DIGIT\n * grammar (RFC6265 S5.1.1).\n *\n * The \"trailingOK\" boolean controls if the grammar accepts a\n * \"( non-digit *OCTET )\" trailer.\n */\nfunction parseDigits(token, minDigits, maxDigits, trailingOK) {\n let count = 0;\n while (count < token.length) {\n const c = token.charCodeAt(count);\n // \"non-digit = %x00-2F / %x3A-FF\"\n if (c <= 0x2f || c >= 0x3a) {\n break;\n }\n count++;\n }\n // constrain to a minimum and maximum number of digits.\n if (count < minDigits || count > maxDigits) {\n return;\n }\n if (!trailingOK && count != token.length) {\n return;\n }\n return parseInt(token.slice(0, count), 10);\n}\nfunction parseTime(token) {\n const parts = token.split(':');\n const result = [0, 0, 0];\n /* RF6256 S5.1.1:\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n */\n if (parts.length !== 3) {\n return;\n }\n for (let i = 0; i < 3; i++) {\n // \"time-field\" must be strictly \"1*2DIGIT\", HOWEVER, \"hms-time\" can be\n // followed by \"( non-digit *OCTET )\" therefore the last time-field can\n // have a trailer\n const trailingOK = i == 2;\n const numPart = parts[i];\n if (numPart === undefined) {\n return;\n }\n const num = parseDigits(numPart, 1, 2, trailingOK);\n if (num === undefined) {\n return;\n }\n result[i] = num;\n }\n return result;\n}\nfunction parseMonth(token) {\n token = String(token).slice(0, 3).toLowerCase();\n switch (token) {\n case 'jan':\n return MONTH_TO_NUM.jan;\n case 'feb':\n return MONTH_TO_NUM.feb;\n case 'mar':\n return MONTH_TO_NUM.mar;\n case 'apr':\n return MONTH_TO_NUM.apr;\n case 'may':\n return MONTH_TO_NUM.may;\n case 'jun':\n return MONTH_TO_NUM.jun;\n case 'jul':\n return MONTH_TO_NUM.jul;\n case 'aug':\n return MONTH_TO_NUM.aug;\n case 'sep':\n return MONTH_TO_NUM.sep;\n case 'oct':\n return MONTH_TO_NUM.oct;\n case 'nov':\n return MONTH_TO_NUM.nov;\n case 'dec':\n return MONTH_TO_NUM.dec;\n default:\n return;\n }\n}\n/**\n * Parse a cookie date string into a {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date | Date}. Parses according to\n * {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.1.1 | RFC6265 - Section 5.1.1}, not\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse | Date.parse()}.\n *\n * @remarks\n *\n * ### RFC6265 - 5.1.1. Dates\n *\n * The user agent MUST use an algorithm equivalent to the following\n * algorithm to parse a cookie-date. Note that the various boolean\n * flags defined as a part of the algorithm (i.e., found-time, found-\n * day-of-month, found-month, found-year) are initially \"not set\".\n *\n * 1. Using the grammar below, divide the cookie-date into date-tokens.\n *\n * ```\n * cookie-date = *delimiter date-token-list *delimiter\n * date-token-list = date-token *( 1*delimiter date-token )\n * date-token = 1*non-delimiter\n *\n * delimiter = %x09 / %x20-2F / %x3B-40 / %x5B-60 / %x7B-7E\n * non-delimiter = %x00-08 / %x0A-1F / DIGIT / \":\" / ALPHA / %x7F-FF\n * non-digit = %x00-2F / %x3A-FF\n *\n * day-of-month = 1*2DIGIT ( non-digit *OCTET )\n * month = ( \"jan\" / \"feb\" / \"mar\" / \"apr\" /\n * \"may\" / \"jun\" / \"jul\" / \"aug\" /\n * \"sep\" / \"oct\" / \"nov\" / \"dec\" ) *OCTET\n * year = 2*4DIGIT ( non-digit *OCTET )\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n * ```\n *\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date:\n *\n * 1. If the found-time flag is not set and the token matches the\n * time production, set the found-time flag and set the hour-\n * value, minute-value, and second-value to the numbers denoted\n * by the digits in the date-token, respectively. Skip the\n * remaining sub-steps and continue to the next date-token.\n *\n * 2. If the found-day-of-month flag is not set and the date-token\n * matches the day-of-month production, set the found-day-of-\n * month flag and set the day-of-month-value to the number\n * denoted by the date-token. Skip the remaining sub-steps and\n * continue to the next date-token.\n *\n * 3. If the found-month flag is not set and the date-token matches\n * the month production, set the found-month flag and set the\n * month-value to the month denoted by the date-token. Skip the\n * remaining sub-steps and continue to the next date-token.\n *\n * 4. If the found-year flag is not set and the date-token matches\n * the year production, set the found-year flag and set the\n * year-value to the number denoted by the date-token. Skip the\n * remaining sub-steps and continue to the next date-token.\n *\n * 3. If the year-value is greater than or equal to 70 and less than or\n * equal to 99, increment the year-value by 1900.\n *\n * 4. If the year-value is greater than or equal to 0 and less than or\n * equal to 69, increment the year-value by 2000.\n *\n * 1. NOTE: Some existing user agents interpret two-digit years differently.\n *\n * 5. Abort these steps and fail to parse the cookie-date if:\n *\n * - at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n *\n * - the day-of-month-value is less than 1 or greater than 31,\n *\n * - the year-value is less than 1601,\n *\n * - the hour-value is greater than 23,\n *\n * - the minute-value is greater than 59, or\n *\n * - the second-value is greater than 59.\n *\n * (Note that leap seconds cannot be represented in this syntax.)\n *\n * 6. Let the parsed-cookie-date be the date whose day-of-month, month,\n * year, hour, minute, and second (in UTC) are the day-of-month-\n * value, the month-value, the year-value, the hour-value, the\n * minute-value, and the second-value, respectively. If no such\n * date exists, abort these steps and fail to parse the cookie-date.\n *\n * 7. Return the parsed-cookie-date as the result of this algorithm.\n *\n * @example\n * ```\n * parseDate('Wed, 09 Jun 2021 10:18:14 GMT')\n * ```\n *\n * @param cookieDate - the cookie date string\n * @public\n */\nfunction parseDate(cookieDate) {\n if (!cookieDate) {\n return;\n }\n /* RFC6265 S5.1.1:\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date\n */\n const tokens = cookieDate.split(DATE_DELIM);\n let hour;\n let minute;\n let second;\n let dayOfMonth;\n let month;\n let year;\n for (let i = 0; i < tokens.length; i++) {\n const token = (tokens[i] ?? '').trim();\n if (!token.length) {\n continue;\n }\n /* 2.1. If the found-time flag is not set and the token matches the time\n * production, set the found-time flag and set the hour- value,\n * minute-value, and second-value to the numbers denoted by the digits in\n * the date-token, respectively. Skip the remaining sub-steps and continue\n * to the next date-token.\n */\n if (second === undefined) {\n const result = parseTime(token);\n if (result) {\n hour = result[0];\n minute = result[1];\n second = result[2];\n continue;\n }\n }\n /* 2.2. If the found-day-of-month flag is not set and the date-token matches\n * the day-of-month production, set the found-day-of- month flag and set\n * the day-of-month-value to the number denoted by the date-token. Skip\n * the remaining sub-steps and continue to the next date-token.\n */\n if (dayOfMonth === undefined) {\n // \"day-of-month = 1*2DIGIT ( non-digit *OCTET )\"\n const result = parseDigits(token, 1, 2, true);\n if (result !== undefined) {\n dayOfMonth = result;\n continue;\n }\n }\n /* 2.3. If the found-month flag is not set and the date-token matches the\n * month production, set the found-month flag and set the month-value to\n * the month denoted by the date-token. Skip the remaining sub-steps and\n * continue to the next date-token.\n */\n if (month === undefined) {\n const result = parseMonth(token);\n if (result !== undefined) {\n month = result;\n continue;\n }\n }\n /* 2.4. If the found-year flag is not set and the date-token matches the\n * year production, set the found-year flag and set the year-value to the\n * number denoted by the date-token. Skip the remaining sub-steps and\n * continue to the next date-token.\n */\n if (year === undefined) {\n // \"year = 2*4DIGIT ( non-digit *OCTET )\"\n const result = parseDigits(token, 2, 4, true);\n if (result !== undefined) {\n year = result;\n /* From S5.1.1:\n * 3. If the year-value is greater than or equal to 70 and less\n * than or equal to 99, increment the year-value by 1900.\n * 4. If the year-value is greater than or equal to 0 and less\n * than or equal to 69, increment the year-value by 2000.\n */\n if (year >= 70 && year <= 99) {\n year += 1900;\n }\n else if (year >= 0 && year <= 69) {\n year += 2000;\n }\n }\n }\n }\n /* RFC 6265 S5.1.1\n * \"5. Abort these steps and fail to parse the cookie-date if:\n * * at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n * * the day-of-month-value is less than 1 or greater than 31,\n * * the year-value is less than 1601,\n * * the hour-value is greater than 23,\n * * the minute-value is greater than 59, or\n * * the second-value is greater than 59.\n * (Note that leap seconds cannot be represented in this syntax.)\"\n *\n * So, in order as above:\n */\n if (dayOfMonth === undefined ||\n month === undefined ||\n year === undefined ||\n hour === undefined ||\n minute === undefined ||\n second === undefined ||\n dayOfMonth < 1 ||\n dayOfMonth > 31 ||\n year < 1601 ||\n hour > 23 ||\n minute > 59 ||\n second > 59) {\n return;\n }\n return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));\n}\n","\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED$1 = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN$1 = 2;\n\n/*============================================================================*/\n\n\nfunction zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH$1 = 3;\nconst MAX_MATCH$1 = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES$1 = 30;\n/* number of distance codes */\n\nconst BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\n\nconst MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES$1);\nzero$1(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES$1);\nzero$1(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Tracev((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Tracev((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) => {\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n\n const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS$1; bits++) {\n code = (code + bl_count[bits - 1]) << 1;\n next_code[bits] = code;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES$1; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES$1; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES$1; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES$1; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.sym_next = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) => {\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let sx = 0; /* running index in sym_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.sym_next !== 0) {\n do {\n dist = s.pending_buf[s.sym_buf + sx++] & 0xff;\n dist += (s.pending_buf[s.sym_buf + sx++] & 0xff) << 8;\n lc = s.pending_buf[s.sym_buf + sx++];\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and sym_buf is ok: */\n //Assert(s->pending < s->lit_bufsize + sx, \"pendingBuf overflow\");\n\n } while (sx < s.sym_next);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE$1;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) => {\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"block list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"allow list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* block_mask is the bit mask of block-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let block_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"block-listed\") bytes. */\n for (n = 0; n <= 31; n++, block_mask >>>= 1) {\n if ((block_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"allow-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS$1; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"block-listed\" or \"allow-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init$1 = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n bi_windup(s); /* align on byte boundary */\n put_short(s, stored_len);\n put_short(s, ~stored_len);\n if (stored_len) {\n s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);\n }\n s.pending += stored_len;\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align$1 = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and write out the encoded block.\n */\nconst _tr_flush_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN$1) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->sym_next / 3));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block$1(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally$1 = (s, dist, lc) => {\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n\n s.pending_buf[s.sym_buf + s.sym_next++] = dist;\n s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;\n s.pending_buf[s.sym_buf + s.sym_next++] = lc;\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n return (s.sym_next === s.sym_end);\n};\n\nvar _tr_init_1 = _tr_init$1;\nvar _tr_stored_block_1 = _tr_stored_block$1;\nvar _tr_flush_block_1 = _tr_flush_block$1;\nvar _tr_tally_1 = _tr_tally$1;\nvar _tr_align_1 = _tr_align$1;\n\nvar trees = {\n\t_tr_init: _tr_init_1,\n\t_tr_stored_block: _tr_stored_block_1,\n\t_tr_flush_block: _tr_flush_block_1,\n\t_tr_tally: _tr_tally_1,\n\t_tr_align: _tr_align_1\n};\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nvar adler32_1 = adler32;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nvar crc32_1 = crc32;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants$2 = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;\n\n\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1,\n Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1,\n Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n Z_UNKNOWN,\n Z_DEFLATED: Z_DEFLATED$2\n} = constants$2;\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES = 30;\n/* number of distance codes */\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42; /* zlib header -> BUSY_STATE */\n//#ifdef GZIP\nconst GZIP_STATE = 57; /* gzip header -> BUSY_STATE | EXTRA_STATE */\n//#endif\nconst EXTRA_STATE = 69; /* gzip extra block -> NAME_STATE */\nconst NAME_STATE = 73; /* gzip file name -> COMMENT_STATE */\nconst COMMENT_STATE = 91; /* gzip comment -> HCRC_STATE */\nconst HCRC_STATE = 103; /* gzip header CRC -> BUSY_STATE */\nconst BUSY_STATE = 113; /* deflate -> FINISH_STATE */\nconst FINISH_STATE = 666; /* stream complete */\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = messages[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) * 2) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n/* ===========================================================================\n * Slide the hash table when sliding the window down (could be avoided with 32\n * bit values at the expense of memory usage). We slide even when level == 0 to\n * keep the hash table consistent if we switch back to level > 0 later.\n */\nconst slide_hash = (s) => {\n let n, m;\n let p;\n let wsize = s.w_size;\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= wsize ? m - wsize : 0);\n } while (--n);\n n = wsize;\n//#ifndef FASTEST\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= wsize ? m - wsize : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n//#endif\n};\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output, except for\n * some deflate_stored() output, goes through this function so some\n * applications may wish to modify it to avoid allocating a large\n * strm->next_out buffer and copying into it. (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32_1(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32_1(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let n, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n slide_hash(s);\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n *\n * In case deflateParams() is used to later switch to a non-zero compression\n * level, s->matches (otherwise unused when storing) keeps track of the number\n * of hash table slides to perform. If s->matches is 1, then one hash table\n * slide will be done when switching. If s->matches is 2, the maximum value\n * allowed here, then the hash table will be cleared, since two or more slides\n * is the same as a clear.\n *\n * deflate_stored() is written to minimize the number of times an input byte is\n * copied. It is most efficient with large input and output buffers, which\n * maximizes the opportunites to have a single copy from next_in to next_out.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Smallest worthy block size when not flushing or finishing. By default\n * this is 32K. This can be as small as 507 bytes for memLevel == 1. For\n * large input and output buffers, the stored block size will be larger.\n */\n let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;\n\n /* Copy as many min_block or larger stored blocks directly to next_out as\n * possible. If flushing, copy the remaining available input to next_out as\n * stored blocks, if there is enough space.\n */\n let len, left, have, last = 0;\n let used = s.strm.avail_in;\n do {\n /* Set len to the maximum size block that we can copy directly with the\n * available input data and output space. Set left to how much of that\n * would be copied from what's left in the window.\n */\n len = 65535/* MAX_STORED */; /* maximum deflate stored block length */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n if (s.strm.avail_out < have) { /* need room for header */\n break;\n }\n /* maximum stored block length that will fit in avail_out: */\n have = s.strm.avail_out - have;\n left = s.strstart - s.block_start; /* bytes left in window */\n if (len > left + s.strm.avail_in) {\n len = left + s.strm.avail_in; /* limit len to the input */\n }\n if (len > have) {\n len = have; /* limit len to the output */\n }\n\n /* If the stored block would be less than min_block in length, or if\n * unable to copy all of the available input when flushing, then try\n * copying to the window and the pending buffer instead. Also don't\n * write an empty block when flushing -- deflate() does that.\n */\n if (len < min_block && ((len === 0 && flush !== Z_FINISH$3) ||\n flush === Z_NO_FLUSH$2 ||\n len !== left + s.strm.avail_in)) {\n break;\n }\n\n /* Make a dummy stored block in pending to get the header bytes,\n * including any pending bits. This also updates the debugging counts.\n */\n last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0;\n _tr_stored_block(s, 0, 0, last);\n\n /* Replace the lengths in the dummy stored block with len. */\n s.pending_buf[s.pending - 4] = len;\n s.pending_buf[s.pending - 3] = len >> 8;\n s.pending_buf[s.pending - 2] = ~len;\n s.pending_buf[s.pending - 1] = ~len >> 8;\n\n /* Write the stored block header bytes. */\n flush_pending(s.strm);\n\n//#ifdef ZLIB_DEBUG\n// /* Update debugging counts for the data about to be copied. */\n// s->compressed_len += len << 3;\n// s->bits_sent += len << 3;\n//#endif\n\n /* Copy uncompressed bytes from the window to next_out. */\n if (left) {\n if (left > len) {\n left = len;\n }\n //zmemcpy(s->strm->next_out, s->window + s->block_start, left);\n s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);\n s.strm.next_out += left;\n s.strm.avail_out -= left;\n s.strm.total_out += left;\n s.block_start += left;\n len -= left;\n }\n\n /* Copy uncompressed bytes directly from next_in to next_out, updating\n * the check value.\n */\n if (len) {\n read_buf(s.strm, s.strm.output, s.strm.next_out, len);\n s.strm.next_out += len;\n s.strm.avail_out -= len;\n s.strm.total_out += len;\n }\n } while (last === 0);\n\n /* Update the sliding window with the last s->w_size bytes of the copied\n * data, or append all of the copied data to the existing window if less\n * than s->w_size bytes were copied. Also update the number of bytes to\n * insert in the hash tables, in the event that deflateParams() switches to\n * a non-zero compression level.\n */\n used -= s.strm.avail_in; /* number of input bytes directly copied */\n if (used) {\n /* If any input was used, then no unused input remains in the window,\n * therefore s->block_start == s->strstart.\n */\n if (used >= s.w_size) { /* supplant the previous history */\n s.matches = 2; /* clear hash */\n //zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);\n s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);\n s.strstart = s.w_size;\n s.insert = s.strstart;\n }\n else {\n if (s.window_size - s.strstart <= used) {\n /* Slide the window down. */\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n //zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);\n s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);\n s.strstart += used;\n s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;\n }\n s.block_start = s.strstart;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* If the last block was written to next_out, then done. */\n if (last) {\n return BS_FINISH_DONE;\n }\n\n /* If flushing and all input has been consumed, then done. */\n if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 &&\n s.strm.avail_in === 0 && s.strstart === s.block_start) {\n return BS_BLOCK_DONE;\n }\n\n /* Fill the window with any remaining input. */\n have = s.window_size - s.strstart;\n if (s.strm.avail_in > have && s.block_start >= s.w_size) {\n /* Slide the window down. */\n s.block_start -= s.w_size;\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n have += s.w_size; /* more space now */\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n if (have > s.strm.avail_in) {\n have = s.strm.avail_in;\n }\n if (have) {\n read_buf(s.strm, s.window, s.strstart, have);\n s.strstart += have;\n s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* There was not enough avail_out to write a complete worthy or flushed\n * stored block to next_out. Write a stored block to pending instead, if we\n * have enough input for a worthy block, or if flushing and there is enough\n * room for the remaining input as a stored block in the pending buffer.\n */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n /* maximum stored block length that will fit in pending: */\n have = s.pending_buf_size - have > 65535/* MAX_STORED */ ? 65535/* MAX_STORED */ : s.pending_buf_size - have;\n min_block = have > s.w_size ? s.w_size : have;\n left = s.strstart - s.block_start;\n if (left >= min_block ||\n ((left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 &&\n s.strm.avail_in === 0 && left <= have)) {\n len = left > have ? have : left;\n last = flush === Z_FINISH$3 && s.strm.avail_in === 0 &&\n len === left ? 1 : 0;\n _tr_stored_block(s, s.block_start, len, last);\n s.block_start += len;\n flush_pending(s.strm);\n }\n\n /* We've done all we can with the available input and output. */\n return last ? BS_FINISH_STARTED : BS_NEED_MORE;\n};\n\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED$2; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.sym_buf = 0; /* buffer for distances and literals/lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.sym_next = 0; /* running index in sym_buf */\n this.sym_end = 0; /* symbol table full when sym_next reaches this */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\n/* =========================================================================\n * Check for a valid deflate stream state. Return 0 if ok, 1 if not.\n */\nconst deflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const s = strm.state;\n if (!s || s.strm !== strm || (s.status !== INIT_STATE &&\n//#ifdef GZIP\n s.status !== GZIP_STATE &&\n//#endif\n s.status !== EXTRA_STATE &&\n s.status !== NAME_STATE &&\n s.status !== COMMENT_STATE &&\n s.status !== HCRC_STATE &&\n s.status !== BUSY_STATE &&\n s.status !== FINISH_STATE)) {\n return 1;\n }\n return 0;\n};\n\n\nconst deflateResetKeep = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status =\n//#ifdef GZIP\n s.wrap === 2 ? GZIP_STATE :\n//#endif\n s.wrap ? INIT_STATE : BUSY_STATE;\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = -2;\n _tr_init(s);\n return Z_OK$3;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK$3) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (deflateStateCheck(strm) || strm.state.wrap !== 2) {\n return Z_STREAM_ERROR$2;\n }\n strm.state.gzhead = head;\n return Z_OK$3;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR$2;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION$1) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED || (windowBits === 8 && wrap !== 1)) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n s.status = INIT_STATE; /* to pass state test in deflateReset() */\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n /* We overlay pending_buf and sym_buf. This works since the average size\n * for length/distance pairs over any compressed block is assured to be 31\n * bits or less.\n *\n * Analysis: The longest fixed codes are a length code of 8 bits plus 5\n * extra bits, for lengths 131 to 257. The longest fixed distance codes are\n * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest\n * possible fixed-codes length/distance pair is then 31 bits total.\n *\n * sym_buf starts one-fourth of the way into pending_buf. So there are\n * three bytes in sym_buf for every four bytes in pending_buf. Each symbol\n * in sym_buf is three bytes -- two for the distance and one for the\n * literal/length. As each symbol is consumed, the pointer to the next\n * sym_buf value to read moves forward three bytes. From that symbol, up to\n * 31 bits are written to pending_buf. The closest the written pending_buf\n * bits gets to the next sym_buf symbol to read is just before the last\n * code is written. At that time, 31*(n-2) bits have been written, just\n * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at\n * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1\n * symbols are written.) The closest the writing gets to what is unread is\n * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and\n * can range from 128 to 32768.\n *\n * Therefore, at a minimum, there are 142 bits of space between what is\n * written and what is read in the overlain buffers, so the symbols cannot\n * be overwritten by the compressed data. That space is actually 139 bits,\n * due to the three-bit fixed-code block header.\n *\n * That covers the case where either Z_FIXED is specified, forcing fixed\n * codes, or when the use of fixed codes is chosen, because that choice\n * results in a smaller compressed block than dynamic codes. That latter\n * condition then assures that the above analysis also covers all dynamic\n * blocks. A dynamic-code block will only be chosen to be emitted if it has\n * fewer bits than a fixed-code block would for the same set of symbols.\n * Therefore its average symbol length is assured to be less than 31. So\n * the compressed data for a dynamic block also cannot overwrite the\n * symbols from which it is being constructed.\n */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->sym_buf = s->pending_buf + s->lit_bufsize;\n s.sym_buf = s.lit_bufsize;\n\n //s->sym_end = (s->lit_bufsize - 1) * 3;\n s.sym_end = (s.lit_bufsize - 1) * 3;\n /* We avoid equality with lit_bufsize*3 because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);\n};\n\n\n/* ========================================================================= */\nconst deflate$2 = (strm, flush) => {\n\n if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (strm.avail_in !== 0 && !strm.input) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH$3)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);\n }\n\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK$3;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH$3) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* Write the header */\n if (s.status === INIT_STATE && s.wrap === 0) {\n s.status = BUSY_STATE;\n }\n if (s.status === INIT_STATE) {\n /* zlib header */\n let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n//#ifdef GZIP\n if (s.status === GZIP_STATE) {\n /* gzip header */\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let left = (s.gzhead.extra.length & 0xffff) - s.gzindex;\n while (s.pending + left > s.pending_buf_size) {\n let copy = s.pending_buf_size - s.pending;\n // zmemcpy(s.pending_buf + s.pending,\n // s.gzhead.extra + s.gzindex, copy);\n s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);\n s.pending = s.pending_buf_size;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex += copy;\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n beg = 0;\n left -= copy;\n }\n // JS specific: s.gzhead.extra may be TypedArray or Array for backward compatibility\n // TypedArray.slice and TypedArray.from don't exist in IE10-IE11\n let gzhead_extra = new Uint8Array(s.gzhead.extra);\n // zmemcpy(s->pending_buf + s->pending,\n // s->gzhead->extra + s->gzindex, left);\n s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);\n s.pending += left;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = NAME_STATE;\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = COMMENT_STATE;\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n }\n s.status = HCRC_STATE;\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n }\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n//#endif\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) {\n let bstate = s.level === 0 ? deflate_stored(s, flush) :\n s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :\n s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush);\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK$3;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH$1) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK$3;\n }\n }\n }\n\n if (flush !== Z_FINISH$3) { return Z_OK$3; }\n if (s.wrap <= 0) { return Z_STREAM_END$3; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR$2;\n }\n\n const status = strm.state.status;\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR$2;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK$3;\n};\n\n\nvar deflateInit_1 = deflateInit;\nvar deflateInit2_1 = deflateInit2;\nvar deflateReset_1 = deflateReset;\nvar deflateResetKeep_1 = deflateResetKeep;\nvar deflateSetHeader_1 = deflateSetHeader;\nvar deflate_2$1 = deflate$2;\nvar deflateEnd_1 = deflateEnd;\nvar deflateSetDictionary_1 = deflateSetDictionary;\nvar deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateGetDictionary = deflateGetDictionary;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n\nvar deflate_1$2 = {\n\tdeflateInit: deflateInit_1,\n\tdeflateInit2: deflateInit2_1,\n\tdeflateReset: deflateReset_1,\n\tdeflateResetKeep: deflateResetKeep_1,\n\tdeflateSetHeader: deflateSetHeader_1,\n\tdeflate: deflate_2$1,\n\tdeflateEnd: deflateEnd_1,\n\tdeflateSetDictionary: deflateSetDictionary_1,\n\tdeflateInfo: deflateInfo\n};\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nvar assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nvar flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n\nvar common = {\n\tassign: assign,\n\tflattenChunks: flattenChunks\n};\n\n// String encode/decode helpers\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nvar string2buf = (str) => {\n if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n return new TextEncoder().encode(str);\n }\n\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nvar buf2string = (buf, max) => {\n const len = max || buf.length;\n\n if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n return new TextDecoder().decode(buf.subarray(0, max));\n }\n\n let i, out;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\nvar strings = {\n\tstring2buf: string2buf,\n\tbuf2string: buf2string,\n\tutf8border: utf8border\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nvar zstream = ZStream;\n\nconst toString$1 = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2,\n Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2,\n Z_DEFAULT_COMPRESSION,\n Z_DEFAULT_STRATEGY,\n Z_DEFLATED: Z_DEFLATED$1\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate$1(options) {\n this.options = common.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED$1,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = deflate_1$2.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n if (opt.header) {\n deflate_1$2.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflate_1$2.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = deflate_1$2.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END$2) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = deflate_1$2.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK$2;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK$2) {\n this.result = common.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n const deflator = new Deflate$1(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || messages[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip$1(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\n\nvar Deflate_1$1 = Deflate$1;\nvar deflate_2 = deflate$1;\nvar deflateRaw_1$1 = deflateRaw$1;\nvar gzip_1$1 = gzip$1;\nvar constants$1 = constants$2;\n\nvar deflate_1$1 = {\n\tDeflate: Deflate_1$1,\n\tdeflate: deflate_2,\n\tdeflateRaw: deflateRaw_1$1,\n\tgzip: gzip_1$1,\n\tconstants: constants$1\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD$1 = 16209; /* got a data error -- remain here until reset */\nconst TYPE$1 = 16191; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE$1;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n// let shoextra; /* extra bits table to use */\n let match; /* use base and extra for symbol >= match */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES$1 || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES$1) {\n base = extra = work; /* dummy value--not used */\n match = 20;\n\n } else if (type === LENS$1) {\n base = lbase;\n extra = lext;\n match = 257;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n match = 0;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] + 1 < match) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] >= match) {\n here_op = extra[work[sym] - match];\n here_val = base[work[sym] - match];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nvar inftrees = inflate_table;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,\n Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR,\n Z_DEFLATED\n} = constants$2;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 16180; /* i: waiting for magic header */\nconst FLAGS = 16181; /* i: waiting for method and flags (gzip) */\nconst TIME = 16182; /* i: waiting for modification time (gzip) */\nconst OS = 16183; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 16184; /* i: waiting for extra length (gzip) */\nconst EXTRA = 16185; /* i: waiting for extra bytes (gzip) */\nconst NAME = 16186; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 16187; /* i: waiting for end of comment (gzip) */\nconst HCRC = 16188; /* i: waiting for header crc (gzip) */\nconst DICTID = 16189; /* i: waiting for dictionary check value */\nconst DICT = 16190; /* waiting for inflateSetDictionary() call */\nconst TYPE = 16191; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 16192; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 16193; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 16194; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16195; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 16196; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 16197; /* i: waiting for code length code lengths */\nconst CODELENS = 16198; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 16199; /* i: same as LEN below, but only first time in */\nconst LEN = 16200; /* i: waiting for length/lit/eob code */\nconst LENEXT = 16201; /* i: waiting for length extra bits */\nconst DIST = 16202; /* i: waiting for distance code */\nconst DISTEXT = 16203; /* i: waiting for distance extra bits */\nconst MATCH = 16204; /* o: waiting for output space to copy string */\nconst LIT = 16205; /* o: waiting for output space to write literal */\nconst CHECK = 16206; /* i: waiting for 32-bit check value */\nconst LENGTH = 16207; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 16208; /* finished check, done -- remain here until reset */\nconst BAD = 16209; /* got a data error -- remain here until reset */\nconst MEM = 16210; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 16211; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip,\n bit 2 true to validate check value */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib), or\n -1 if raw or no header yet */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const state = strm.state;\n if (!state || state.strm !== strm ||\n state.mode < HEAD || state.mode > SYNC) {\n return 1;\n }\n return 0;\n};\n\n\nconst inflateResetKeep = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.flags = -1;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 5;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.strm = strm;\n state.window = null/*Z_NULL*/;\n state.mode = HEAD; /* to pass state test in inflateReset2() */\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate$2 = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (inflateStateCheck(strm) || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n if (state.wbits === 0) {\n state.wbits = 15;\n }\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n if (len > 15 || len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n state.flags = 0; /* indicate zlib header */\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32_1(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inffast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check =\n /*UPDATE_CHECK(state.check, put - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.wrap & 4) && (state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR$1;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (inflateStateCheck(strm)) {\n return Z_STREAM_ERROR$1;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32_1(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR$1;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n};\n\n\nvar inflateReset_1 = inflateReset;\nvar inflateReset2_1 = inflateReset2;\nvar inflateResetKeep_1 = inflateResetKeep;\nvar inflateInit_1 = inflateInit;\nvar inflateInit2_1 = inflateInit2;\nvar inflate_2$1 = inflate$2;\nvar inflateEnd_1 = inflateEnd;\nvar inflateGetHeader_1 = inflateGetHeader;\nvar inflateSetDictionary_1 = inflateSetDictionary;\nvar inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCodesUsed = inflateCodesUsed;\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\nmodule.exports.inflateValidate = inflateValidate;\n*/\n\nvar inflate_1$2 = {\n\tinflateReset: inflateReset_1,\n\tinflateReset2: inflateReset2_1,\n\tinflateResetKeep: inflateResetKeep_1,\n\tinflateInit: inflateInit_1,\n\tinflateInit2: inflateInit2_1,\n\tinflate: inflate_2$1,\n\tinflateEnd: inflateEnd_1,\n\tinflateGetHeader: inflateGetHeader_1,\n\tinflateSetDictionary: inflateSetDictionary_1,\n\tinflateInfo: inflateInfo\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nvar gzheader = GZheader;\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate$1(options) {\n this.options = common.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = inflate_1$2.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n\n this.header = new gzheader();\n\n inflate_1$2.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate_1$2.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = inflate_1$2.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = inflate_1$2.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n inflate_1$2.inflateReset(strm);\n status = inflate_1$2.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = inflate_1$2.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = common.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err) {\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n const inflator = new Inflate$1(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nvar Inflate_1$1 = Inflate$1;\nvar inflate_2 = inflate$1;\nvar inflateRaw_1$1 = inflateRaw$1;\nvar ungzip$1 = inflate$1;\nvar constants = constants$2;\n\nvar inflate_1$1 = {\n\tInflate: Inflate_1$1,\n\tinflate: inflate_2,\n\tinflateRaw: inflateRaw_1$1,\n\tungzip: ungzip$1,\n\tconstants: constants\n};\n\nconst { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;\n\nconst { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;\n\n\n\nvar Deflate_1 = Deflate;\nvar deflate_1 = deflate;\nvar deflateRaw_1 = deflateRaw;\nvar gzip_1 = gzip;\nvar Inflate_1 = Inflate;\nvar inflate_1 = inflate;\nvar inflateRaw_1 = inflateRaw;\nvar ungzip_1 = ungzip;\nvar constants_1 = constants$2;\n\nvar pako = {\n\tDeflate: Deflate_1,\n\tdeflate: deflate_1,\n\tdeflateRaw: deflateRaw_1,\n\tgzip: gzip_1,\n\tInflate: Inflate_1,\n\tinflate: inflate_1,\n\tinflateRaw: inflateRaw_1,\n\tungzip: ungzip_1,\n\tconstants: constants_1\n};\n\nexport { Deflate_1 as Deflate, Inflate_1 as Inflate, constants_1 as constants, pako as default, deflate_1 as deflate, deflateRaw_1 as deflateRaw, gzip_1 as gzip, inflate_1 as inflate, inflateRaw_1 as inflateRaw, ungzip_1 as ungzip };\n","/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetAction = exports.sumStarknetGas = void 0;\r\nfunction sumStarknetGas(a, b) {\r\n return {\r\n l1: (a?.l1 ?? 0) + (b?.l1 ?? 0),\r\n l2: (a?.l2 ?? 0) + (b?.l2 ?? 0)\r\n };\r\n}\r\nexports.sumStarknetGas = sumStarknetGas;\r\nclass StarknetAction {\r\n constructor(mainSigner, root, instructions = [], gasLimit, feeRate) {\r\n this.mainSigner = mainSigner;\r\n this.root = root;\r\n this.instructions = Array.isArray(instructions) ? instructions : [instructions];\r\n this.L1GasLimit = gasLimit?.l1 ?? 0;\r\n this.L2GasLimit = gasLimit?.l2 ?? 0;\r\n this.feeRate = feeRate;\r\n }\r\n estimateFeeRate() {\r\n return this.root.Fees.getFeeRate();\r\n }\r\n addIx(instruction, gasLimit) {\r\n this.instructions.push(instruction);\r\n this.L1GasLimit += gasLimit?.l1 ?? 0;\r\n this.L2GasLimit += gasLimit?.l2 ?? 0;\r\n }\r\n add(action) {\r\n return this.addAction(action);\r\n }\r\n addAction(action, index = this.instructions.length) {\r\n if (action.mainSigner !== this.mainSigner)\r\n throw new Error(\"Actions need to have the same signer!\");\r\n if (this.L1GasLimit == null && action.L1GasLimit != null)\r\n this.L1GasLimit = action.L1GasLimit;\r\n if (this.L2GasLimit == null && action.L2GasLimit != null)\r\n this.L2GasLimit = action.L2GasLimit;\r\n if (this.L1GasLimit != null && action.L1GasLimit != null)\r\n this.L1GasLimit += action.L1GasLimit;\r\n if (this.L2GasLimit != null && action.L2GasLimit != null)\r\n this.L2GasLimit += action.L2GasLimit;\r\n this.instructions.splice(index, 0, ...action.instructions);\r\n if (this.feeRate == null)\r\n this.feeRate = action.feeRate;\r\n return this;\r\n }\r\n async tx(feeRate) {\r\n if (feeRate == null)\r\n feeRate = this.feeRate;\r\n if (feeRate == null)\r\n feeRate = await this.estimateFeeRate();\r\n return {\r\n type: \"INVOKE\",\r\n tx: this.instructions,\r\n details: {\r\n ...this.root.Fees.getFeeDetails(this.L1GasLimit, this.L2GasLimit, feeRate),\r\n walletAddress: this.mainSigner,\r\n cairoVersion: \"1\",\r\n chainId: this.root.starknetChainId,\r\n nonce: null,\r\n accountDeploymentData: [],\r\n skipValidate: false\r\n }\r\n };\r\n }\r\n async addToTxs(txs, feeRate) {\r\n txs.push(await this.tx(feeRate));\r\n }\r\n ixsLength() {\r\n return this.instructions.length;\r\n }\r\n}\r\nexports.StarknetAction = StarknetAction;\r\n",null,"\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MempoolBtcRelaySynchronizer = void 0;\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst logger = (0, Utils_1.getLogger)(\"MempoolBtcRelaySynchronizer: \");\r\nclass MempoolBtcRelaySynchronizer {\r\n constructor(btcRelay, bitcoinRpc) {\r\n this.btcRelay = btcRelay;\r\n this.bitcoinRpc = bitcoinRpc;\r\n }\r\n async syncToLatestTxs(signer, feeRate) {\r\n const tipData = await this.btcRelay.getTipData();\r\n let cacheData = {\r\n forkId: 0,\r\n lastStoredHeader: null,\r\n tx: null,\r\n computedCommitedHeaders: null\r\n };\r\n const { resultStoredHeader, resultBitcoinHeader } = await this.btcRelay.retrieveLatestKnownBlockLog();\r\n cacheData.lastStoredHeader = resultStoredHeader;\r\n if (resultStoredHeader.getBlockheight() < tipData.blockheight)\r\n cacheData.forkId = -1; //Indicate that we will be submitting blocks to fork\r\n let spvTipBlockHeader = resultBitcoinHeader;\r\n const btcRelayTipBlockHash = spvTipBlockHeader.getHash();\r\n logger.debug(\"Retrieved stored header with commitment: \", cacheData.lastStoredHeader);\r\n logger.debug(\"SPV tip bitcoin RPC block header: \", spvTipBlockHeader);\r\n let spvTipBlockHeight = spvTipBlockHeader.height;\r\n const txsList = [];\r\n const blockHeaderMap = {\r\n [resultBitcoinHeader.getHeight()]: resultBitcoinHeader\r\n };\r\n const computedHeaderMap = {\r\n [resultStoredHeader.getBlockheight()]: resultStoredHeader\r\n };\r\n let startForkId = null;\r\n let forkFee = feeRate;\r\n let mainFee = feeRate;\r\n const saveHeaders = async (headerCache) => {\r\n if (cacheData.forkId === -1) {\r\n if (mainFee == null)\r\n mainFee = await this.btcRelay.getMainFeeRate(signer);\r\n cacheData = await this.btcRelay.saveNewForkHeaders(signer, headerCache, cacheData.lastStoredHeader, tipData.chainWork, mainFee);\r\n }\r\n else if (cacheData.forkId === 0) {\r\n if (mainFee == null)\r\n mainFee = await this.btcRelay.getMainFeeRate(signer);\r\n cacheData = await this.btcRelay.saveMainHeaders(signer, headerCache, cacheData.lastStoredHeader, mainFee);\r\n }\r\n else {\r\n if (forkFee == null)\r\n forkFee = await this.btcRelay.getForkFeeRate(signer, cacheData.forkId);\r\n cacheData = await this.btcRelay.saveForkHeaders(signer, headerCache, cacheData.lastStoredHeader, cacheData.forkId, tipData.chainWork, forkFee);\r\n }\r\n if (cacheData.forkId !== -1 && cacheData.forkId !== 0)\r\n startForkId = cacheData.forkId;\r\n txsList.push(cacheData.tx);\r\n for (let storedHeader of cacheData.computedCommitedHeaders) {\r\n computedHeaderMap[storedHeader.getBlockheight()] = storedHeader;\r\n }\r\n };\r\n let retrievedHeaders = null;\r\n let headerCache = [];\r\n while (retrievedHeaders == null || retrievedHeaders.length > 0) {\r\n retrievedHeaders = await this.bitcoinRpc.getPast15Blocks(spvTipBlockHeight + 15);\r\n for (let i = retrievedHeaders.length - 1; i >= 0; i--) {\r\n const header = retrievedHeaders[i];\r\n blockHeaderMap[header.height] = header;\r\n headerCache.push(header);\r\n if (cacheData.forkId === 0 ?\r\n headerCache.length >= this.btcRelay.maxHeadersPerTx :\r\n headerCache.length >= this.btcRelay.maxForkHeadersPerTx) {\r\n await saveHeaders(headerCache);\r\n headerCache = [];\r\n }\r\n }\r\n if (retrievedHeaders.length > 0) {\r\n spvTipBlockHeight = retrievedHeaders[0].height;\r\n await (0, Utils_1.timeoutPromise)(1000);\r\n }\r\n }\r\n if (headerCache.length > 0)\r\n await saveHeaders(headerCache);\r\n return {\r\n txs: txsList,\r\n targetCommitedHeader: cacheData.lastStoredHeader,\r\n blockHeaderMap,\r\n computedHeaderMap,\r\n btcRelayTipBlockHash: btcRelayTipBlockHash,\r\n latestBlockHeader: spvTipBlockHeader,\r\n startForkId\r\n };\r\n }\r\n}\r\nexports.MempoolBtcRelaySynchronizer = MempoolBtcRelaySynchronizer;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport type { AuthorityType } from '../instructions/setAuthority.js';\nimport { createSetAuthorityInstruction } from '../instructions/setAuthority.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Assign a new authority to the account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Address of the account\n * @param currentAuthority Current authority of the specified type\n * @param authorityType Type of authority to set\n * @param newAuthority New authority of the account\n * @param multiSigners Signing accounts if `currentAuthority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function setAuthority(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n currentAuthority: Signer | PublicKey,\n authorityType: AuthorityType,\n newAuthority: PublicKey | null,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [currentAuthorityPublicKey, signers] = getSigners(currentAuthority, multiSigners);\n\n const transaction = new Transaction().add(\n createSetAuthorityInstruction(\n account,\n currentAuthorityPublicKey,\n authorityType,\n newAuthority,\n multiSigners,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n",null,"\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_brightness_1 = void 0;\nvar ic_brightness_1 = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"circle\",\n \"attribs\": {\n \"cx\": \"12\",\n \"cy\": \"12\",\n \"r\": \"10\"\n },\n \"children\": []\n }]\n};\nexports.ic_brightness_1 = ic_brightness_1;","import type { Commitment, ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n TokenInvalidMintError,\n TokenInvalidOwnerError,\n} from '../errors.js';\nimport { createAssociatedTokenAccountInstruction } from '../instructions/associatedTokenAccount.js';\nimport type { Account } from '../state/account.js';\nimport { getAccount } from '../state/account.js';\nimport { getAssociatedTokenAddressSync } from '../state/mint.js';\n\n/**\n * Retrieve the associated token account, or create it if it doesn't exist\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mint Mint associated with the account to set or verify\n * @param owner Owner of the account to set or verify\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param commitment Desired level of commitment for querying the state\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the new associated token account\n */\nexport async function getOrCreateAssociatedTokenAccount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n owner: PublicKey,\n allowOwnerOffCurve = false,\n commitment?: Commitment,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n const associatedToken = getAssociatedTokenAddressSync(\n mint,\n owner,\n allowOwnerOffCurve,\n programId,\n associatedTokenProgramId\n );\n\n // This is the optimal logic, considering TX fee, client-side computation, RPC roundtrips and guaranteed idempotent.\n // Sadly we can't do this atomically.\n let account: Account;\n try {\n account = await getAccount(connection, associatedToken, commitment, programId);\n } catch (error: unknown) {\n // TokenAccountNotFoundError can be possible if the associated address has already received some lamports,\n // becoming a system account. Assuming program derived addressing is safe, this is the only case for the\n // TokenInvalidAccountOwnerError in this code path.\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\n try {\n const transaction = new Transaction().add(\n createAssociatedTokenAccountInstruction(\n payer.publicKey,\n associatedToken,\n owner,\n mint,\n programId,\n associatedTokenProgramId\n )\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n } catch (error: unknown) {\n // Ignore all errors; for now there is no API-compatible way to selectively ignore the expected\n // instruction error if the associated account exists already.\n }\n\n // Now this should always succeed\n account = await getAccount(connection, associatedToken, commitment, programId);\n } else {\n throw error;\n }\n }\n\n if (!account.mint.equals(mint)) throw new TokenInvalidMintError();\n if (!account.owner.equals(owner)) throw new TokenInvalidOwnerError();\n\n return account;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_arrow_downward = void 0;\nvar ic_arrow_downward = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n },\n \"children\": []\n }]\n};\nexports.ic_arrow_downward = ic_arrow_downward;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_settings_backup_restore_outline = void 0;\nvar ic_settings_backup_restore_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M14 12c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-2-9c-4.97 0-9 4.03-9 9H0l4 4 4-4H5c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.51 0-2.91-.49-4.06-1.3l-1.42 1.44C8.04 20.3 9.94 21 12 21c4.97 0 9-4.03 9-9s-4.03-9-9-9z\"\n },\n \"children\": []\n }]\n};\nexports.ic_settings_backup_restore_outline = ic_settings_backup_restore_outline;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaBlocks = void 0;\r\nconst SolanaModule_1 = require(\"../SolanaModule\");\r\nclass SolanaBlocks extends SolanaModule_1.SolanaModule {\r\n constructor() {\r\n super(...arguments);\r\n this.blockCache = new Map();\r\n }\r\n /**\r\n * Initiates a fetch of the block at specified slot & saves the fetch promise into a block cache\r\n *\r\n * @param slot\r\n * @private\r\n */\r\n fetchAndSaveParsedBlock(slot) {\r\n const blockCacheData = this.connection.getParsedBlock(slot, {\r\n transactionDetails: \"none\",\r\n commitment: \"confirmed\",\r\n rewards: false\r\n });\r\n this.blockCache.set(slot, blockCacheData);\r\n blockCacheData.catch(e => {\r\n if (this.blockCache.get(slot) == blockCacheData)\r\n this.blockCache.delete(slot);\r\n throw e;\r\n });\r\n return blockCacheData;\r\n }\r\n ///////////////////\r\n //// Blocks\r\n /**\r\n * Tries to find the latest existing block for a given commitment, skipping blocks that are not available, runs a\r\n * search backwards from the latest slot for the given commitment and fails after 10 tries\r\n *\r\n * @param commitment\r\n */\r\n async findLatestParsedBlock(commitment) {\r\n let slot = await this.root.Slots.getSlot(commitment);\r\n for (let i = 0; i < 10; i++) {\r\n const block = await this.getParsedBlock(slot).catch(e => {\r\n if (e.toString().startsWith(\"SolanaJSONRPCError: failed to get block: Block not available for slot\")) {\r\n return null;\r\n }\r\n throw e;\r\n });\r\n if (block != null) {\r\n this.logger.debug(\"findLatestParsedBlock(): Found valid block, slot: \" + slot +\r\n \" blockhash: \" + block.blockhash + \" tries: \" + i);\r\n return {\r\n block,\r\n slot\r\n };\r\n }\r\n slot--;\r\n }\r\n throw new Error(\"Ran out of tries trying to find a parsedBlock\");\r\n }\r\n /**\r\n * Gets parsed block for a given slot, uses block cache if the block was already fetched before\r\n *\r\n * @param slot\r\n */\r\n getParsedBlock(slot) {\r\n let blockCacheData = this.blockCache.get(slot);\r\n if (blockCacheData == null) {\r\n blockCacheData = this.fetchAndSaveParsedBlock(slot);\r\n }\r\n return blockCacheData;\r\n }\r\n}\r\nexports.SolanaBlocks = SolanaBlocks;\r\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface BurnCheckedInstructionData {\n instruction: TokenInstruction.BurnChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const burnCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct a BurnChecked instruction\n *\n * @param mint Mint for the account\n * @param account Account to burn tokens from\n * @param owner Owner of the account\n * @param amount Number of tokens to burn\n * @param decimals Number of decimals in burn amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createBurnCheckedInstruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(burnCheckedInstructionData.span);\n burnCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.BurnChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid BurnChecked instruction */\nexport interface DecodedBurnCheckedInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.BurnChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a BurnChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeBurnCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedBurnCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== burnCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, owner, multiSigners },\n data,\n } = decodeBurnCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.BurnChecked) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated BurnChecked instruction */\nexport interface DecodedBurnCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a BurnChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeBurnCheckedInstructionUnchecked({\n programId,\n keys: [account, mint, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedBurnCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data: burnCheckedInstructionData.decode(data),\n };\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetSignatures = void 0;\r\nconst createHash = require(\"create-hash\");\r\nconst StarknetModule_1 = require(\"../StarknetModule\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst StarknetDomain = [\r\n { name: 'name', type: 'shortstring' },\r\n { name: 'version', type: 'shortstring' },\r\n { name: 'chainId', type: 'shortstring' },\r\n { name: 'revision', type: 'shortstring' },\r\n];\r\nconst DataHash = [\r\n { name: 'Data hash', type: 'u256' }\r\n];\r\nclass StarknetSignatures extends StarknetModule_1.StarknetModule {\r\n constructor(root, domainName = \"atomiq.exchange\") {\r\n super(root);\r\n this.domain = {\r\n name: domainName,\r\n version: '1',\r\n chainId: starknet_1.shortString.decodeShortString(root.starknetChainId),\r\n revision: '1'\r\n };\r\n }\r\n getTypedMessage(type, typeName, message) {\r\n return {\r\n types: {\r\n StarknetDomain,\r\n [typeName]: type,\r\n },\r\n primaryType: typeName,\r\n domain: this.domain,\r\n message\r\n };\r\n }\r\n async signTypedMessage(signer, type, typeName, message) {\r\n const signature = await signer.account.signMessage(this.getTypedMessage(type, typeName, message));\r\n return JSON.stringify(starknet_1.stark.formatSignature(signature));\r\n }\r\n async isValidSignature(signature, address, type, typeName, message) {\r\n return new starknet_1.Account(this.provider, address, null).verifyMessage(this.getTypedMessage(type, typeName, message), JSON.parse(signature));\r\n }\r\n ///////////////////\r\n //// Data signatures\r\n /**\r\n * Produces a signature over the sha256 of a specified data Buffer, only works with providers which\r\n * expose their private key (i.e. backend based, not browser wallet based)\r\n *\r\n * @param signer\r\n * @param data data to sign\r\n */\r\n getDataSignature(signer, data) {\r\n const buff = createHash(\"sha256\").update(data).digest();\r\n return this.signTypedMessage(signer, DataHash, 'DataHash', { \"Data hash\": starknet_1.cairo.uint256((0, Utils_1.toHex)(buff)) });\r\n }\r\n /**\r\n * Checks whether a signature is a valid signature produced by the account over a data message (computes\r\n * sha256 hash of the message)\r\n *\r\n * @param data signed data\r\n * @param signature data signature\r\n * @param address public key of the signer\r\n */\r\n isValidDataSignature(data, signature, address) {\r\n const buff = createHash(\"sha256\").update(data).digest();\r\n return this.isValidSignature(signature, address, DataHash, 'DataHash', { \"Data hash\": starknet_1.cairo.uint256((0, Utils_1.toHex)(buff)) });\r\n }\r\n}\r\nexports.StarknetSignatures = StarknetSignatures;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetSigner = void 0;\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass StarknetSigner {\r\n constructor(account) {\r\n this.isDeployed = null;\r\n this.account = account;\r\n }\r\n getPublicKey() {\r\n return this.account.signer.getPubKey();\r\n }\r\n getAddress() {\r\n return (0, Utils_1.toHex)(this.account.address);\r\n }\r\n isWalletAccount() {\r\n return this.account.walletProvider != null;\r\n }\r\n //TODO: Introduce proper nonce management!\r\n async getNonce() {\r\n try {\r\n return BigInt(await this.account.getNonceForAddress(this.getAddress()));\r\n }\r\n catch (e) {\r\n if (e.message != null && e.message.includes(\"20: Contract not found\")) {\r\n return BigInt(0);\r\n }\r\n throw e;\r\n }\r\n }\r\n async checkAndGetDeployPayload(nonce) {\r\n if (this.isDeployed)\r\n return null;\r\n const _account = this.account;\r\n if (_account.getDeploymentData != null) {\r\n //Check if deployed\r\n nonce ?? (nonce = BigInt(await this.getNonce()));\r\n this.isDeployed = nonce != BigInt(0);\r\n if (!this.isDeployed) {\r\n return _account.getDeploymentData();\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\nexports.StarknetSigner = StarknetSigner;\r\n","\"use strict\";\nvar __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 __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, 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));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar src_exports = {};\n__export(src_exports, {\n default: () => fetchCookie\n});\nmodule.exports = __toCommonJS(src_exports);\nvar tough = __toESM(require(\"tough-cookie\"), 1);\nvar import_set_cookie_parser = require(\"set-cookie-parser\");\nfunction isDomainOrSubdomain(destination, original) {\n const orig = new URL(original).hostname;\n const dest = new URL(destination).hostname;\n return orig === dest || orig.endsWith(`.${dest}`);\n}\nconst referrerPolicy = /* @__PURE__ */ new Set([\n \"\",\n \"no-referrer\",\n \"no-referrer-when-downgrade\",\n \"same-origin\",\n \"origin\",\n \"strict-origin\",\n \"origin-when-cross-origin\",\n \"strict-origin-when-cross-origin\",\n \"unsafe-url\"\n]);\nfunction parseReferrerPolicy(policyHeader) {\n const policyTokens = policyHeader.split(/[,\\s]+/);\n let policy = \"\";\n for (const token of policyTokens) {\n if (token !== \"\" && referrerPolicy.has(token)) {\n policy = token;\n }\n }\n return policy;\n}\nfunction doNothing(init, name) {\n}\nfunction callDeleteMethod(init, name) {\n init.headers.delete(name);\n}\nfunction deleteFromObject(init, name) {\n const headers = init.headers;\n for (const key of Object.keys(headers)) {\n if (key.toLowerCase() === name) {\n delete headers[key];\n }\n }\n}\nfunction identifyDeleteHeader(init) {\n if (init.headers == null) {\n return doNothing;\n }\n if (typeof init.headers.delete === \"function\") {\n return callDeleteMethod;\n }\n return deleteFromObject;\n}\nconst redirectStatus = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);\nfunction isRedirect(status) {\n return redirectStatus.has(status);\n}\nasync function handleRedirect(fetchImpl, init, response) {\n switch (init.redirect ?? \"follow\") {\n case \"error\":\n throw new TypeError(`URI requested responded with a redirect and redirect mode is set to error: ${response.url}`);\n case \"manual\":\n return response;\n case \"follow\":\n break;\n default:\n throw new TypeError(`Invalid redirect option: ${init.redirect}`);\n }\n const locationUrl = response.headers.get(\"location\");\n if (locationUrl === null) {\n return response;\n }\n const requestUrl = response.url;\n const redirectUrl = new URL(locationUrl, requestUrl).toString();\n const redirectCount = init.redirectCount ?? 0;\n const maxRedirect = init.maxRedirect ?? 20;\n if (redirectCount >= maxRedirect) {\n throw new TypeError(`Reached maximum redirect of ${maxRedirect} for URL: ${requestUrl}`);\n }\n init = {\n ...init,\n redirectCount: redirectCount + 1\n };\n const deleteHeader = identifyDeleteHeader(init);\n if (!isDomainOrSubdomain(requestUrl, redirectUrl)) {\n for (const name of [\"authorization\", \"www-authenticate\", \"cookie\", \"cookie2\"]) {\n deleteHeader(init, name);\n }\n }\n const maybeNodeStreamBody = init.body;\n const maybeStreamBody = init.body;\n if (response.status !== 303 && init.body != null && (typeof maybeNodeStreamBody.pipe === \"function\" || typeof maybeStreamBody.pipeTo === \"function\")) {\n throw new TypeError(\"Cannot follow redirect with body being a readable stream\");\n }\n if (response.status === 303 || (response.status === 301 || response.status === 302) && init.method === \"POST\") {\n init.method = \"GET\";\n init.body = void 0;\n deleteHeader(init, \"content-length\");\n }\n if (response.headers.has(\"referrer-policy\")) {\n init.referrerPolicy = parseReferrerPolicy(response.headers.get(\"referrer-policy\"));\n }\n deleteHeader(init, \"host\");\n return await fetchImpl(redirectUrl, init);\n}\nfunction addCookiesToRequest(input, init, cookie) {\n if (cookie === \"\") {\n return init;\n }\n const maybeRequest = input;\n const maybeHeaders = init.headers;\n if (maybeRequest.headers && typeof maybeRequest.headers.append === \"function\") {\n maybeRequest.headers.append(\"cookie\", cookie);\n } else if (maybeHeaders && typeof maybeHeaders.append === \"function\") {\n maybeHeaders.append(\"cookie\", cookie);\n } else if (Array.isArray(init.headers)) {\n const headers = [...init.headers];\n const cookieHeaderIndex = headers.findIndex((header) => header[0].toLowerCase() === \"cookie\");\n if (cookieHeaderIndex === -1) {\n headers.push([\"cookie\", cookie]);\n } else {\n headers[cookieHeaderIndex] = [\"cookie\", cookie];\n }\n init = { ...init, headers };\n } else {\n init = { ...init, headers: { ...init.headers, cookie } };\n }\n return init;\n}\nfunction getCookiesFromResponse(response) {\n const maybeNodeFetchHeaders = response.headers;\n if (typeof maybeNodeFetchHeaders.getAll === \"function\") {\n return maybeNodeFetchHeaders.getAll(\"set-cookie\");\n }\n if (typeof maybeNodeFetchHeaders.raw === \"function\") {\n const headers = maybeNodeFetchHeaders.raw();\n if (Array.isArray(headers[\"set-cookie\"])) {\n return headers[\"set-cookie\"];\n }\n return [];\n }\n const cookieString = response.headers.get(\"set-cookie\");\n if (cookieString !== null) {\n return (0, import_set_cookie_parser.splitCookiesString)(cookieString);\n }\n return [];\n}\nfunction fetchCookie(fetch, jar, ignoreError = true) {\n const actualFetch = fetch;\n const actualJar = jar ?? new tough.CookieJar();\n async function fetchCookieWrapper(input, init) {\n const originalInit = init ?? {};\n init = { ...init, redirect: \"manual\" };\n const requestUrl = typeof input === \"string\" ? input : \"href\" in input ? input.href : input.url;\n const cookie = await actualJar.getCookieString(requestUrl);\n init = addCookiesToRequest(input, init, cookie);\n const response = await actualFetch(input, init);\n const cookies = getCookiesFromResponse(response);\n await Promise.all(cookies.map(async (cookie2) => await actualJar.setCookie(cookie2, response.url, { ignoreError })));\n if ((init.redirectCount ?? 0) > 0) {\n Object.defineProperty(response, \"redirected\", { value: true });\n }\n if (!isRedirect(response.status)) {\n return response;\n }\n return await handleRedirect(fetchCookieWrapper, originalInit, response);\n }\n fetchCookieWrapper.toughCookie = tough;\n fetchCookieWrapper.cookieJar = actualJar;\n return fetchCookieWrapper;\n}\nfetchCookie.toughCookie = tough;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetInitializer = exports.initializeStarknet = exports.StarknetAssets = void 0;\r\nconst starknet_1 = require(\"starknet\");\r\nconst StarknetFees_1 = require(\"./base/modules/StarknetFees\");\r\nconst StarknetBtcRelay_1 = require(\"./btcrelay/StarknetBtcRelay\");\r\nconst StarknetSwapContract_1 = require(\"./swaps/StarknetSwapContract\");\r\nconst StarknetChainEventsBrowser_1 = require(\"./events/StarknetChainEventsBrowser\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst StarknetSwapData_1 = require(\"./swaps/StarknetSwapData\");\r\nexports.StarknetAssets = {\r\n ETH: {\r\n address: \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\r\n decimals: 18,\r\n displayDecimals: 9\r\n },\r\n STRK: {\r\n address: \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\r\n decimals: 18,\r\n displayDecimals: 9\r\n }\r\n};\r\nfunction initializeStarknet(options, bitcoinRpc, network) {\r\n const provider = typeof (options.rpcUrl) === \"string\" ?\r\n new starknet_1.RpcProvider({ nodeUrl: options.rpcUrl }) :\r\n options.rpcUrl;\r\n const Fees = options.fees ?? new StarknetFees_1.StarknetFees(provider, \"ETH\");\r\n const chainId = options.chainId ??\r\n (network === base_1.BitcoinNetwork.MAINNET ? starknet_1.constants.StarknetChainId.SN_MAIN : starknet_1.constants.StarknetChainId.SN_SEPOLIA);\r\n const btcRelay = new StarknetBtcRelay_1.StarknetBtcRelay(chainId, provider, bitcoinRpc, options.btcRelayContract, options.retryPolicy, Fees);\r\n const swapContract = new StarknetSwapContract_1.StarknetSwapContract(chainId, provider, btcRelay, options.swapContract, options.retryPolicy, Fees);\r\n const chainEvents = new StarknetChainEventsBrowser_1.StarknetChainEventsBrowser(swapContract);\r\n return {\r\n chainId: \"STARKNET\",\r\n btcRelay,\r\n swapContract,\r\n chainEvents,\r\n swapDataConstructor: StarknetSwapData_1.StarknetSwapData\r\n };\r\n}\r\nexports.initializeStarknet = initializeStarknet;\r\n;\r\nexports.StarknetInitializer = {\r\n chainId: \"STARKNET\",\r\n chainType: null,\r\n initializer: initializeStarknet,\r\n tokens: exports.StarknetAssets,\r\n options: null\r\n};\r\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 block.feeRange[0] <= feeRate);\r\n if (mempoolBlockIndex === -1)\r\n return -1;\r\n //Last returned block is usually an aggregate (or a stack) of multiple btc blocks, if tx falls in this block\r\n // and the last returned block really is an aggregate one (size bigger than BITCOIN_BLOCKSIZE) we return -1\r\n if (mempoolBlockIndex + 1 === mempoolBlocks.length &&\r\n mempoolBlocks[mempoolBlocks.length - 1].blockVSize > BITCOIN_BLOCKSIZE)\r\n return -1;\r\n return (mempoolBlockIndex + 1) * BITCOIN_BLOCKTIME;\r\n }\r\n /**\r\n * Returns an estimate after which time the tx will confirm with the required amount of confirmations,\r\n * confirmationDelay of -1 means the transaction won't confirm in the near future\r\n *\r\n * @param tx\r\n * @param requiredConfirmations\r\n * @private\r\n *\r\n * @returns estimated confirmation delay, -1 if the transaction won't confirm in the near future, null if the\r\n * transaction was replaced or was confirmed in the meantime\r\n */\r\n async getConfirmationDelay(tx, requiredConfirmations) {\r\n if (tx.confirmations > requiredConfirmations)\r\n return 0;\r\n if (tx.confirmations === 0) {\r\n //Get CPFP data\r\n const cpfpData = await this.api.getCPFPData(tx.txid);\r\n if (cpfpData.effectiveFeePerVsize == null) {\r\n //Transaction is either confirmed in the meantime, or replaced\r\n return null;\r\n }\r\n let confirmationDelay = (await this.getTimeTillConfirmation(cpfpData.effectiveFeePerVsize));\r\n if (confirmationDelay !== -1)\r\n confirmationDelay += (requiredConfirmations - 1) * BITCOIN_BLOCKTIME;\r\n return confirmationDelay;\r\n }\r\n return ((requiredConfirmations - tx.confirmations) * BITCOIN_BLOCKTIME);\r\n }\r\n /**\r\n * Converts mempool API's transaction to BtcTx object\r\n * @param tx Transaction to convert\r\n * @param getRaw If the raw transaction field should be filled (requires one more network request)\r\n * @private\r\n */\r\n async toBtcTx(tx, getRaw = true) {\r\n const rawTx = !getRaw ? null : await this.api.getRawTransaction(tx.txid);\r\n let confirmations = 0;\r\n if (tx.status != null && tx.status.confirmed) {\r\n const blockheight = await this.api.getTipBlockHeight();\r\n confirmations = blockheight - tx.status.block_height + 1;\r\n }\r\n let strippedRawTx;\r\n if (rawTx != null) {\r\n //Strip witness data\r\n const btcTx = btc_signer_1.Transaction.fromRaw(rawTx);\r\n strippedRawTx = buffer_1.Buffer.from(btcTx.toBytes(true, false)).toString(\"hex\");\r\n }\r\n return {\r\n blockheight: tx.status?.block_height,\r\n blockhash: tx.status?.block_hash,\r\n confirmations,\r\n txid: tx.txid,\r\n vsize: tx.weight / 4,\r\n hex: strippedRawTx,\r\n raw: rawTx == null ? null : rawTx.toString(\"hex\"),\r\n outs: tx.vout.map((e, index) => {\r\n return {\r\n value: e.value,\r\n n: index,\r\n scriptPubKey: {\r\n hex: e.scriptpubkey,\r\n asm: e.scriptpubkey_asm\r\n }\r\n };\r\n }),\r\n ins: tx.vin.map(e => {\r\n return {\r\n txid: e.txid,\r\n vout: e.vout,\r\n scriptSig: {\r\n hex: e.scriptsig,\r\n asm: e.scriptsig_asm\r\n },\r\n sequence: e.sequence,\r\n txinwitness: e.witness\r\n };\r\n }),\r\n };\r\n }\r\n getTipHeight() {\r\n return this.api.getTipBlockHeight();\r\n }\r\n async getBlockHeader(blockhash) {\r\n return new MempoolBitcoinBlock_1.MempoolBitcoinBlock(await this.api.getBlockHeader(blockhash));\r\n }\r\n async getMerkleProof(txId, blockhash) {\r\n const proof = await this.api.getTransactionProof(txId);\r\n return {\r\n reversedTxId: buffer_1.Buffer.from(txId, \"hex\").reverse(),\r\n pos: proof.pos,\r\n merkle: proof.merkle.map(e => buffer_1.Buffer.from(e, \"hex\").reverse()),\r\n blockheight: proof.block_height\r\n };\r\n }\r\n async getTransaction(txId) {\r\n const tx = await this.api.getTransaction(txId);\r\n if (tx == null)\r\n return null;\r\n return await this.toBtcTx(tx);\r\n }\r\n async isInMainChain(blockhash) {\r\n const blockStatus = await this.api.getBlockStatus(blockhash);\r\n return blockStatus.in_best_chain;\r\n }\r\n getBlockhash(height) {\r\n return this.api.getBlockHash(height);\r\n }\r\n getBlockWithTransactions(blockhash) {\r\n throw new Error(\"Unsupported.\");\r\n }\r\n async getSyncInfo() {\r\n const tipHeight = await this.api.getTipBlockHeight();\r\n return {\r\n verificationProgress: 1,\r\n blocks: tipHeight,\r\n headers: tipHeight,\r\n ibd: false\r\n };\r\n }\r\n async getPast15Blocks(height) {\r\n return (await this.api.getPast15BlockHeaders(height)).map(blockHeader => new MempoolBitcoinBlock_1.MempoolBitcoinBlock(blockHeader));\r\n }\r\n async checkAddressTxos(address, txoHash) {\r\n const allTxs = await this.api.getAddressTransactions(address);\r\n const relevantTxs = allTxs\r\n .map(tx => {\r\n return {\r\n tx,\r\n vout: tx.vout.findIndex(vout => MempoolBitcoinRpc.getTxoHash(vout).equals(txoHash))\r\n };\r\n })\r\n .filter(obj => obj.vout >= 0)\r\n .sort((a, b) => {\r\n if (a.tx.status.confirmed && !b.tx.status.confirmed)\r\n return -1;\r\n if (!a.tx.status.confirmed && b.tx.status.confirmed)\r\n return 1;\r\n if (a.tx.status.confirmed && b.tx.status.confirmed)\r\n return a.tx.status.block_height - b.tx.status.block_height;\r\n return 0;\r\n });\r\n if (relevantTxs.length === 0)\r\n return null;\r\n return {\r\n tx: await this.toBtcTx(relevantTxs[0].tx, false),\r\n vout: relevantTxs[0].vout\r\n };\r\n }\r\n /**\r\n * Waits till the address receives a transaction containing a specific txoHash\r\n *\r\n * @param address\r\n * @param txoHash\r\n * @param requiredConfirmations\r\n * @param stateUpdateCbk\r\n * @param abortSignal\r\n * @param intervalSeconds\r\n */\r\n async waitForAddressTxo(address, txoHash, requiredConfirmations, stateUpdateCbk, abortSignal, intervalSeconds) {\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n while (abortSignal == null || !abortSignal.aborted) {\r\n await (0, Utils_1.timeoutPromise)((intervalSeconds || 5) * 1000, abortSignal);\r\n const result = await this.checkAddressTxos(address, txoHash);\r\n if (result == null) {\r\n stateUpdateCbk(null, null, null, null);\r\n continue;\r\n }\r\n const confirmationDelay = await this.getConfirmationDelay(result.tx, requiredConfirmations);\r\n if (confirmationDelay == null)\r\n continue;\r\n if (stateUpdateCbk != null)\r\n stateUpdateCbk(result.tx.confirmations, result.tx.txid, result.vout, confirmationDelay);\r\n if (confirmationDelay === 0)\r\n return result;\r\n }\r\n abortSignal.throwIfAborted();\r\n }\r\n async getLNNodeLiquidity(pubkey) {\r\n const nodeInfo = await this.api.getLNNodeInfo(pubkey);\r\n return {\r\n publicKey: nodeInfo.public_key,\r\n capacity: BigInt(nodeInfo.capacity),\r\n numChannels: nodeInfo.active_channel_count\r\n };\r\n }\r\n sendRawTransaction(rawTx) {\r\n return this.api.sendTransaction(rawTx);\r\n }\r\n sendRawPackage(rawTx) {\r\n throw new Error(\"Unsupported\");\r\n }\r\n}\r\nexports.MempoolBitcoinRpc = MempoolBitcoinRpc;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.angleLeft = void 0;\nvar angleLeft = {\n \"viewBox\": \"0 0 640 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M627 544q0 13-10 23l-393 393 393 393q10 10 10 23t-10 23l-50 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l50 50q10 10 10 23z\"\n }\n }]\n};\nexports.angleLeft = angleLeft;","import { struct, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountInfo, Commitment, Connection, PublicKey } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError } from '../errors.js';\n\n/** Information about a multisig */\nexport interface Multisig {\n /** Address of the multisig */\n address: PublicKey;\n /** Number of signers required */\n m: number;\n /** Number of possible signers, corresponds to the number of `signers` that are valid */\n n: number;\n /** Is this mint initialized */\n isInitialized: boolean;\n /** Full set of signers, of which `n` are valid */\n signer1: PublicKey;\n signer2: PublicKey;\n signer3: PublicKey;\n signer4: PublicKey;\n signer5: PublicKey;\n signer6: PublicKey;\n signer7: PublicKey;\n signer8: PublicKey;\n signer9: PublicKey;\n signer10: PublicKey;\n signer11: PublicKey;\n}\n\n/** Multisig as stored by the program */\nexport type RawMultisig = Omit;\n\n/** Buffer layout for de/serializing a multisig */\nexport const MultisigLayout = struct([\n u8('m'),\n u8('n'),\n bool('isInitialized'),\n publicKey('signer1'),\n publicKey('signer2'),\n publicKey('signer3'),\n publicKey('signer4'),\n publicKey('signer5'),\n publicKey('signer6'),\n publicKey('signer7'),\n publicKey('signer8'),\n publicKey('signer9'),\n publicKey('signer10'),\n publicKey('signer11'),\n]);\n\n/** Byte length of a multisig */\nexport const MULTISIG_SIZE = MultisigLayout.span;\n\n/**\n * Retrieve information about a multisig\n *\n * @param connection Connection to use\n * @param address Multisig account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Multisig information\n */\nexport async function getMultisig(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackMultisig(address, info, programId);\n}\n\n/**\n * Unpack a multisig\n *\n * @param address Multisig account\n * @param info Multisig account data\n * @param programId SPL Token program account\n *\n * @return Unpacked multisig\n */\nexport function unpackMultisig(\n address: PublicKey,\n info: AccountInfo | null,\n programId = TOKEN_PROGRAM_ID\n): Multisig {\n if (!info) throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId)) throw new TokenInvalidAccountOwnerError();\n if (info.data.length != MULTISIG_SIZE) throw new TokenInvalidAccountSizeError();\n\n const multisig = MultisigLayout.decode(info.data);\n\n return { address, ...multisig };\n}\n\n/** Get the minimum lamport balance for a multisig to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMultisig(\n connection: Connection,\n commitment?: Commitment\n): Promise {\n return await connection.getMinimumBalanceForRentExemption(MULTISIG_SIZE, commitment);\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** Deserialized instruction for the initiation of an immutable owner account */\nexport interface InitializeImmutableOwnerInstructionData {\n instruction: TokenInstruction.InitializeImmutableOwner;\n}\n\n/** The struct that represents the instruction data as it is read by the program */\nexport const initializeImmutableOwnerInstructionData = struct([\n u8('instruction'),\n]);\n\n/**\n * Construct an InitializeImmutableOwner instruction\n *\n * @param account Immutable Owner Account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeImmutableOwnerInstruction(\n account: PublicKey,\n programId: PublicKey\n): TransactionInstruction {\n const keys = [{ pubkey: account, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeImmutableOwnerInstructionData.span);\n initializeImmutableOwnerInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeImmutableOwner,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeImmutableOwner instruction */\nexport interface DecodedInitializeImmutableOwnerInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeImmutableOwner;\n };\n}\n\n/**\n * Decode an InitializeImmutableOwner instruction and validate it\n *\n * @param instruction InitializeImmutableOwner instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeImmutableOwnerInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedInitializeImmutableOwnerInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeImmutableOwnerInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account },\n data,\n } = decodeInitializeImmutableOwnerInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeImmutableOwner) throw new TokenInvalidInstructionTypeError();\n if (!account) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n account,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeImmutableOwner instruction */\nexport interface DecodedInitializeImmutableOwnerInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode an InitializeImmutableOwner instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeImmutableOwnerInstructionUnchecked({\n programId,\n keys: [account],\n data,\n}: TransactionInstruction): DecodedInitializeImmutableOwnerInstructionUnchecked {\n const { instruction } = initializeImmutableOwnerInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n account: account,\n },\n data: {\n instruction,\n },\n };\n}\n","import type { IdentifierString } from '@wallet-standard/base';\nimport type {\n SolanaSignTransactionInput,\n SolanaSignTransactionOptions,\n SolanaTransactionCommitment,\n SolanaTransactionVersion,\n} from './signTransaction.js';\n\n/** Name of the feature. */\nexport const SolanaSignAndSendTransaction = 'solana:signAndSendTransaction';\n\n/** TODO: docs */\nexport type SolanaSignAndSendTransactionFeature = {\n /** Name of the feature. */\n readonly [SolanaSignAndSendTransaction]: {\n /** Version of the feature API. */\n readonly version: SolanaSignAndSendTransactionVersion;\n\n /** TODO: docs */\n readonly supportedTransactionVersions: readonly SolanaTransactionVersion[];\n\n /**\n * Sign transactions using the account's secret key and send them to the chain.\n *\n * @param inputs Inputs for signing and sending transactions.\n *\n * @return Outputs of signing and sending transactions.\n */\n readonly signAndSendTransaction: SolanaSignAndSendTransactionMethod;\n };\n};\n\n/** Version of the feature. */\nexport type SolanaSignAndSendTransactionVersion = '1.0.0';\n\n/** TODO: docs */\nexport type SolanaSignAndSendTransactionMethod = (\n ...inputs: readonly SolanaSignAndSendTransactionInput[]\n) => Promise;\n\n/** Input for signing and sending a transaction. */\nexport interface SolanaSignAndSendTransactionInput extends SolanaSignTransactionInput {\n /** Chain to use. */\n readonly chain: IdentifierString;\n\n /** TODO: docs */\n readonly options?: SolanaSignAndSendTransactionOptions;\n}\n\n/** Output of signing and sending a transaction. */\nexport interface SolanaSignAndSendTransactionOutput {\n /** Transaction signature, as raw bytes. */\n readonly signature: Uint8Array;\n}\n\n/** Options for signing and sending a transaction. */\nexport type SolanaSignAndSendTransactionOptions = SolanaSignTransactionOptions & {\n /** Desired commitment level. If provided, confirm the transaction after sending. */\n readonly commitment?: SolanaTransactionCommitment;\n\n /** Disable transaction verification at the RPC. */\n readonly skipPreflight?: boolean;\n\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n readonly maxRetries?: number;\n};\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__exportStar(require(\"./btc/mempool/synchronizer/MempoolBtcRelaySynchronizer\"), exports);\r\n__exportStar(require(\"./btc/mempool/MempoolApi\"), exports);\r\n__exportStar(require(\"./btc/mempool/MempoolBitcoinRpc\"), exports);\r\n__exportStar(require(\"./btc/mempool/MempoolBitcoinBlock\"), exports);\r\n__exportStar(require(\"./btc/BitcoinRpcWithTxoListener\"), exports);\r\n__exportStar(require(\"./btc/LightningNetworkApi\"), exports);\r\n__exportStar(require(\"./btc/wallet/IBitcoinWallet\"), exports);\r\n__exportStar(require(\"./btc/wallet/MempoolBitcoinWallet\"), exports);\r\n__exportStar(require(\"./btc/coinselect2\"), exports);\r\n__exportStar(require(\"./errors/IntermediaryError\"), exports);\r\n__exportStar(require(\"./errors/PaymentAuthError\"), exports);\r\n__exportStar(require(\"./errors/RequestError\"), exports);\r\n__exportStar(require(\"./errors/UserError\"), exports);\r\n__exportStar(require(\"./intermediaries/Intermediary\"), exports);\r\n__exportStar(require(\"./intermediaries/IntermediaryDiscovery\"), exports);\r\n__exportStar(require(\"./prices/abstract/ICachedSwapPrice\"), exports);\r\n__exportStar(require(\"./prices/abstract/IPriceProvider\"), exports);\r\n__exportStar(require(\"./prices/abstract/ISwapPrice\"), exports);\r\n__exportStar(require(\"./prices/providers/abstract/ExchangePriceProvider\"), exports);\r\n__exportStar(require(\"./prices/providers/abstract/HttpPriceProvider\"), exports);\r\n__exportStar(require(\"./prices/providers/BinancePriceProvider\"), exports);\r\n__exportStar(require(\"./prices/providers/CoinGeckoPriceProvider\"), exports);\r\n__exportStar(require(\"./prices/providers/CoinPaprikaPriceProvider\"), exports);\r\n__exportStar(require(\"./prices/providers/OKXPriceProvider\"), exports);\r\n__exportStar(require(\"./prices/RedundantSwapPrice\"), exports);\r\n__exportStar(require(\"./prices/SingleSwapPrice\"), exports);\r\n__exportStar(require(\"./prices/SwapPriceWithChain\"), exports);\r\n__exportStar(require(\"./swaps/Tokens\"), exports);\r\n__exportStar(require(\"./swaps/ISwap\"), exports);\r\n__exportStar(require(\"./swaps/ISwapWrapper\"), exports);\r\n__exportStar(require(\"./swaps/Swapper\"), exports);\r\n__exportStar(require(\"./swaps/SwapType\"), exports);\r\n__exportStar(require(\"./swaps/SwapDirection\"), exports);\r\n__exportStar(require(\"./swaps/tobtc/IToBTCSwap\"), exports);\r\n__exportStar(require(\"./swaps/tobtc/IToBTCWrapper\"), exports);\r\n__exportStar(require(\"./swaps/tobtc/ln/ToBTCLNSwap\"), exports);\r\n__exportStar(require(\"./swaps/tobtc/ln/ToBTCLNWrapper\"), exports);\r\n__exportStar(require(\"./swaps/tobtc/onchain/ToBTCSwap\"), exports);\r\n__exportStar(require(\"./swaps/tobtc/onchain/ToBTCWrapper\"), exports);\r\n__exportStar(require(\"./swaps/frombtc/IFromBTCSwap\"), exports);\r\n__exportStar(require(\"./swaps/frombtc/IFromBTCWrapper\"), exports);\r\n__exportStar(require(\"./swaps/frombtc/ln/FromBTCLNSwap\"), exports);\r\n__exportStar(require(\"./swaps/frombtc/ln/FromBTCLNWrapper\"), exports);\r\n__exportStar(require(\"./swaps/frombtc/onchain/FromBTCSwap\"), exports);\r\n__exportStar(require(\"./swaps/frombtc/onchain/FromBTCWrapper\"), exports);\r\n__exportStar(require(\"./swaps/swapforgas/ln/LnForGasSwap\"), exports);\r\n__exportStar(require(\"./swaps/swapforgas/ln/LnForGasWrapper\"), exports);\r\n__exportStar(require(\"./utils/LNURL\"), exports);\r\n__exportStar(require(\"./storage/IUnifiedStorage\"), exports);\r\n__exportStar(require(\"./browser-storage/IndexedDBUnifiedStorage\"), exports);\r\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nmodule.exports = crc32;\n","module.exports = /([A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AD\\uA7B0-\\uA7B4\\uA7B6\\uFF21-\\uFF3A])([A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AD\\uA7B0-\\uA7B4\\uA7B6\\uFF21-\\uFF3A][a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0561-\\u0587\\u13F8-\\u13FD\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7B5\\uA7B7\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB65\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A])/g\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, Commitment, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../../constants.js';\nimport { TokenUnsupportedInstructionError } from '../../errors.js';\nimport { addSigners } from '../../instructions/internal.js';\nimport { TokenInstruction } from '../../instructions/types.js';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport { createTransferCheckedInstruction } from '../../instructions/transferChecked.js';\nimport { createTransferCheckedWithFeeInstruction } from '../transferFee/instructions.js';\nimport { getMint } from '../../state/mint.js';\nimport { getExtraAccountMetaAddress, getExtraAccountMetas, getTransferHook, resolveExtraAccountMeta } from './state.js';\n\nexport enum TransferHookInstruction {\n Initialize = 0,\n Update = 1,\n}\n\n/** Deserialized instruction for the initiation of an transfer hook */\nexport interface InitializeTransferHookInstructionData {\n instruction: TokenInstruction.TransferHookExtension;\n transferHookInstruction: TransferHookInstruction.Initialize;\n authority: PublicKey;\n transferHookProgramId: PublicKey;\n}\n\n/** The struct that represents the instruction data as it is read by the program */\nexport const initializeTransferHookInstructionData = struct([\n u8('instruction'),\n u8('transferHookInstruction'),\n publicKey('authority'),\n publicKey('transferHookProgramId'),\n]);\n\n/**\n * Construct an InitializeTransferHook instruction\n *\n * @param mint Token mint account\n * @param authority Transfer hook authority account\n * @param transferHookProgramId Transfer hook program account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeTransferHookInstruction(\n mint: PublicKey,\n authority: PublicKey,\n transferHookProgramId: PublicKey,\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeTransferHookInstructionData.span);\n initializeTransferHookInstructionData.encode(\n {\n instruction: TokenInstruction.TransferHookExtension,\n transferHookInstruction: TransferHookInstruction.Initialize,\n authority,\n transferHookProgramId,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** Deserialized instruction for the initiation of an transfer hook */\nexport interface UpdateTransferHookInstructionData {\n instruction: TokenInstruction.TransferHookExtension;\n transferHookInstruction: TransferHookInstruction.Update;\n transferHookProgramId: PublicKey;\n}\n\n/** The struct that represents the instruction data as it is read by the program */\nexport const updateTransferHookInstructionData = struct([\n u8('instruction'),\n u8('transferHookInstruction'),\n publicKey('transferHookProgramId'),\n]);\n\n/**\n * Construct an UpdateTransferHook instruction\n *\n * @param mint Mint to update\n * @param authority The mint's transfer hook authority\n * @param transferHookProgramId The new transfer hook program account\n * @param signers The signer account(s) for a multisig\n * @param tokenProgramId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createUpdateTransferHookInstruction(\n mint: PublicKey,\n authority: PublicKey,\n transferHookProgramId: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n\n const keys = addSigners([{ pubkey: mint, isSigner: false, isWritable: true }], authority, multiSigners);\n const data = Buffer.alloc(updateTransferHookInstructionData.span);\n updateTransferHookInstructionData.encode(\n {\n instruction: TokenInstruction.TransferHookExtension,\n transferHookInstruction: TransferHookInstruction.Update,\n transferHookProgramId,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\nfunction deEscalateAccountMeta(accountMeta: AccountMeta, accountMetas: AccountMeta[]): AccountMeta {\n const maybeHighestPrivileges = accountMetas\n .filter((x) => x.pubkey === accountMeta.pubkey)\n .reduce<{ isSigner: boolean; isWritable: boolean } | undefined>((acc, x) => {\n if (!acc) return { isSigner: x.isSigner, isWritable: x.isWritable };\n return { isSigner: acc.isSigner || x.isSigner, isWritable: acc.isWritable || x.isWritable };\n }, undefined);\n if (maybeHighestPrivileges) {\n const { isSigner, isWritable } = maybeHighestPrivileges;\n if (!isSigner && isSigner !== accountMeta.isSigner) {\n accountMeta.isSigner = false;\n }\n if (!isWritable && isWritable !== accountMeta.isWritable) {\n accountMeta.isWritable = false;\n }\n }\n return accountMeta;\n}\n\n/**\n * Add extra accounts needed for transfer hook to an instruction\n *\n * @param connection Connection to use\n * @param instruction The transferChecked instruction to add accounts to\n * @param commitment Commitment to use\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport async function addExtraAccountsToInstruction(\n connection: Connection,\n instruction: TransactionInstruction,\n mint: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n\n const mintInfo = await getMint(connection, mint, commitment, programId);\n const transferHook = getTransferHook(mintInfo);\n if (transferHook == null) {\n return instruction;\n }\n\n const extraAccountsAccount = getExtraAccountMetaAddress(mint, transferHook.programId);\n const extraAccountsInfo = await connection.getAccountInfo(extraAccountsAccount, commitment);\n if (extraAccountsInfo == null) {\n return instruction;\n }\n\n const extraAccountMetas = getExtraAccountMetas(extraAccountsInfo);\n\n const accountMetas = instruction.keys;\n\n for (const extraAccountMeta of extraAccountMetas) {\n const accountMetaUnchecked = await resolveExtraAccountMeta(\n connection,\n extraAccountMeta,\n accountMetas,\n instruction.data,\n transferHook.programId\n );\n const accountMeta = deEscalateAccountMeta(accountMetaUnchecked, accountMetas);\n accountMetas.push(accountMeta);\n }\n accountMetas.push({ pubkey: transferHook.programId, isSigner: false, isWritable: false });\n accountMetas.push({ pubkey: extraAccountsAccount, isSigner: false, isWritable: false });\n\n return new TransactionInstruction({ keys: accountMetas, programId, data: instruction.data });\n}\n\n/**\n * Construct an transferChecked instruction with extra accounts for transfer hook\n *\n * @param connection Connection to use\n * @param source Source account\n * @param mint Mint to update\n * @param destination Destination account\n * @param authority The mint's transfer hook authority\n * @param amount The amount of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners The signer account(s) for a multisig\n * @param commitment Commitment to use\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport async function createTransferCheckedWithTransferHookInstruction(\n connection: Connection,\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: bigint,\n decimals: number,\n multiSigners: (Signer | PublicKey)[] = [],\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n) {\n const rawInstruction = createTransferCheckedInstruction(\n source,\n mint,\n destination,\n authority,\n amount,\n decimals,\n multiSigners,\n programId\n );\n\n const hydratedInstruction = await addExtraAccountsToInstruction(\n connection,\n rawInstruction,\n mint,\n commitment,\n programId\n );\n\n return hydratedInstruction;\n}\n\n/**\n * Construct an transferChecked instruction with extra accounts for transfer hook\n *\n * @param connection Connection to use\n * @param source Source account\n * @param mint Mint to update\n * @param destination Destination account\n * @param authority The mint's transfer hook authority\n * @param amount The amount of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param fee The calculated fee for the transfer fee extension\n * @param multiSigners The signer account(s) for a multisig\n * @param commitment Commitment to use\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport async function createTransferCheckedWithFeeAndTransferHookInstruction(\n connection: Connection,\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: bigint,\n decimals: number,\n fee: bigint,\n multiSigners: (Signer | PublicKey)[] = [],\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n) {\n const rawInstruction = createTransferCheckedWithFeeInstruction(\n source,\n mint,\n destination,\n authority,\n amount,\n decimals,\n fee,\n multiSigners,\n programId\n );\n\n const hydratedInstruction = await addExtraAccountsToInstruction(\n connection,\n rawInstruction,\n mint,\n commitment,\n programId\n );\n\n return hydratedInstruction;\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","\"use strict\";\n/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.utils = exports.schnorr = exports.verify = exports.signSync = exports.sign = exports.getSharedSecret = exports.recoverPublicKey = exports.getPublicKey = exports.Signature = exports.Point = exports.CURVE = void 0;\nconst nodeCrypto = require(\"crypto\");\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst CURVE = Object.freeze({\n a: _0n,\n b: BigInt(7),\n P: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n});\nexports.CURVE = CURVE;\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst endo = {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000');\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n};\nconst fieldLen = 32;\nconst groupLen = 32;\nconst hashLen = 32;\nconst compressedLen = fieldLen + 1;\nconst uncompressedLen = 2 * fieldLen + 1;\nfunction weierstrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass ShaError extends Error {\n constructor(message) {\n super(message);\n }\n}\nfunction assertJacPoint(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n}\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n if (p.equals(Point.ZERO))\n return JacobianPoint.ZERO;\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n assertJacPoint(other);\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(B * B);\n const x1b = X1 + B;\n const D = mod(_2n * (mod(x1b * x1b) - A - C));\n const E = mod(_3n * A);\n const F = mod(E * E);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n assertJacPoint(other);\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H * H);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r * r - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n const P0 = JacobianPoint.ZERO;\n if (typeof scalar === 'bigint' && scalar === _0n)\n return P0;\n let n = normalizeScalar(scalar);\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.BASE;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1;\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n k1p = constTimeNegate(k1neg, k1p);\n k2p = constTimeNegate(k2neg, k2p);\n k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ) {\n const { x, y, z } = this;\n const is0 = this.equals(JacobianPoint.ZERO);\n if (invZ == null)\n invZ = is0 ? _8n : invert(z);\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (is0)\n return Point.ZERO;\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nfunction constTimeNegate(condition, item) {\n const neg = item.negate();\n return condition ? neg : item;\n}\nconst pointPrecomputes = new WeakMap();\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n hasEvenY() {\n return this.y % _2n === _0n;\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weierstrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, fieldLen + 1));\n const y = bytesToNumber(bytes.subarray(fieldLen + 1, fieldLen * 2 + 1));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === fieldLen)\n return this.fromCompressedHex(bytes);\n if (len === compressedLen && (header === 0x02 || header === 0x03)) {\n return this.fromCompressedHex(bytes);\n }\n if (len === uncompressedLen && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n const { r, s } = normalizeSignature(signature);\n if (![0, 1, 2, 3].includes(recovery))\n throw new Error('Cannot recover: invalid recovery bit');\n const h = truncateHash(ensureBytes(msgHash));\n const { n } = CURVE;\n const radj = recovery === 2 || recovery === 3 ? r + n : r;\n const rinv = invert(radj, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(radj));\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.hasEvenY() ? '02' : '03';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weierstrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = a === _0n || a === _1n || this !== Point.BASE ? P.multiplyUnsafe(a) : P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nexports.Point = Point;\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nclass Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = hex instanceof Uint8Array;\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = hex instanceof Uint8Array;\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, mod(-this.s, CURVE.n)) : this;\n }\n toDERRawBytes() {\n return hexToBytes(this.toDERHex());\n }\n toDERHex() {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const sHexL = sHex.length / 2;\n const rHexL = rHex.length / 2;\n const sLen = numberToHexUnpadded(sHexL);\n const rLen = numberToHexUnpadded(rHexL);\n const length = numberToHexUnpadded(rHexL + sHexL + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nexports.Signature = Signature;\nfunction concatBytes(...arrays) {\n if (!arrays.every((b) => b instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nfunction numTo32bStr(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n if (!(_0n <= num && num < POW_2_256))\n throw new Error('Expected number 0 <= n < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n const b = hexToBytes(numTo32bStr(num));\n if (b.length !== 32)\n throw new Error('Error: expected 32 bytes');\n return b;\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n const rt = pow2(t2, _2n);\n const xc = (rt * rt) % P;\n if (xc !== x)\n throw new Error('Cannot find square root');\n return rt;\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nfunction bits2int_2(bytes) {\n const delta = bytes.length * 8 - groupLen * 8;\n const num = bytesToNumber(bytes);\n return delta > 0 ? num >> BigInt(delta) : num;\n}\nfunction truncateHash(hash, truncateOnly = false) {\n const h = bits2int_2(hash);\n if (truncateOnly)\n return h;\n const { n } = CURVE;\n return h >= n ? h - n : h;\n}\nlet _sha256Sync;\nlet _hmacSha256Sync;\nclass HmacDrbg {\n constructor(hashLen, qByteLen) {\n this.hashLen = hashLen;\n this.qByteLen = qByteLen;\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n this.v = new Uint8Array(hashLen).fill(1);\n this.k = new Uint8Array(hashLen).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return exports.utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n return _hmacSha256Sync(this.k, ...values);\n }\n checkSync() {\n if (typeof _hmacSha256Sync !== 'function')\n throw new ShaError('hmacSha256Sync needs to be set');\n }\n incr() {\n if (this.counter >= 1000)\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.checkSync();\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n let len = 0;\n const out = [];\n while (len < this.qByteLen) {\n this.v = await this.hmac(this.v);\n const sl = this.v.slice();\n out.push(sl);\n len += this.v.length;\n }\n return concatBytes(...out);\n }\n generateSync() {\n this.checkSync();\n this.incr();\n let len = 0;\n const out = [];\n while (len < this.qByteLen) {\n this.v = this.hmacSync(this.v);\n const sl = this.v.slice();\n out.push(sl);\n len += this.v.length;\n }\n return concatBytes(...out);\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d, lowS = true) {\n const { n } = CURVE;\n const k = truncateHash(kBytes, true);\n if (!isWithinCurveOrder(k))\n return;\n const kinv = invert(k, n);\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(kinv * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n let sig = new Signature(r, s);\n let recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n if (lowS && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 2 * groupLen)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (key instanceof Uint8Array) {\n if (key.length !== groupLen)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nfunction getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexports.getPublicKey = getPublicKey;\nfunction recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nexports.recoverPublicKey = recoverPublicKey;\nfunction isProbPub(item) {\n const arr = item instanceof Uint8Array;\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === compressedLen * 2 || len === uncompressedLen * 2;\n if (item instanceof Point)\n return true;\n return false;\n}\nfunction getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isProbPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isProbPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nexports.getSharedSecret = getSharedSecret;\nfunction bits2int(bytes) {\n const slice = bytes.length > fieldLen ? bytes.slice(0, fieldLen) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n return numTo32b(num);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = exports.utils.randomBytes(fieldLen);\n const e = ensureBytes(extraEntropy);\n if (e.length !== fieldLen)\n throw new Error(`sign: Expected ${fieldLen} bytes of extra data`);\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n const { sig, recovery } = recSig;\n const { der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n const drbg = new HmacDrbg(hashLen, groupLen);\n await drbg.reseed(seed);\n let sig;\n while (!(sig = kmdToSig(await drbg.generate(), m, d, opts.canonical)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nexports.sign = sign;\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n const drbg = new HmacDrbg(hashLen, groupLen);\n drbg.reseedSync(seed);\n let sig;\n while (!(sig = kmdToSig(drbg.generateSync(), m, d, opts.canonical)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexports.signSync = signSync;\nconst vopts = { strict: true };\nfunction verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nexports.verify = verify;\nfunction schnorrChallengeFinalize(ch) {\n return mod(bytesToNumber(ch), CURVE.n);\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nclass InternalSchnorrSignature {\n constructor(message, privateKey, auxRand = exports.utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n this.m = ensureBytes(message);\n const { x, scalar } = this.getScalar(normalizePrivateKey(privateKey));\n this.px = x;\n this.d = scalar;\n this.rand = ensureBytes(auxRand);\n if (this.rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n }\n getScalar(priv) {\n const point = Point.fromPrivateKey(priv);\n const scalar = point.hasEvenY() ? priv : CURVE.n - priv;\n return { point, scalar, x: point.toRawX() };\n }\n initNonce(d, t0h) {\n return numTo32b(d ^ bytesToNumber(t0h));\n }\n finalizeNonce(k0h) {\n const k0 = mod(bytesToNumber(k0h), CURVE.n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const { point: R, x: rx, scalar: k } = this.getScalar(k0);\n return { R, rx, k };\n }\n finalizeSig(R, k, e, d) {\n return new SchnorrSignature(R.x, mod(k + e * d, CURVE.n)).toRawBytes();\n }\n error() {\n throw new Error('sign: Invalid signature produced');\n }\n async calc() {\n const { m, d, px, rand } = this;\n const tag = exports.utils.taggedHash;\n const t = this.initNonce(d, await tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(await tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(await tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!(await schnorrVerify(sig, m, px)))\n this.error();\n return sig;\n }\n calcSync() {\n const { m, d, px, rand } = this;\n const tag = exports.utils.taggedHashSync;\n const t = this.initNonce(d, tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!schnorrVerifySync(sig, m, px))\n this.error();\n return sig;\n }\n}\nasync function schnorrSign(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calc();\n}\nfunction schnorrSignSync(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calcSync();\n}\nfunction initSchnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n const sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n return {\n ...sig,\n m: ensureBytes(message),\n P: normalizePublicKey(publicKey),\n };\n}\nfunction finalizeSchnorrVerify(r, P, s, e) {\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !R.hasEvenY() || R.x !== r)\n return false;\n return true;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(await exports.utils.taggedHash(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n return false;\n }\n}\nfunction schnorrVerifySync(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(exports.utils.taggedHashSync(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n if (error instanceof ShaError)\n throw error;\n return false;\n }\n}\nexports.schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n signSync: schnorrSignSync,\n verifySync: schnorrVerifySync,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nconst TAGS = {\n challenge: 'BIP0340/challenge',\n aux: 'BIP0340/aux',\n nonce: 'BIP0340/nonce',\n};\nconst TAGGED_HASH_PREFIXES = {};\nexports.utils = {\n bytesToHex,\n hexToBytes,\n concatBytes,\n mod,\n invert,\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n _bigintTo32Bytes: numTo32b,\n _normalizePrivateKey: normalizePrivateKey,\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n const minLen = groupLen + 8;\n if (hash.length < minLen || hash.length > 1024) {\n throw new Error(`Expected valid bytes of private key as per FIPS 186`);\n }\n const num = mod(bytesToNumber(hash), CURVE.n - _1n) + _1n;\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => exports.utils.hashToPrivateKey(exports.utils.randomBytes(groupLen + 8)),\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n sha256: async (...messages) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', concatBytes(...messages));\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n const hash = createHash('sha256');\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n taggedHash: async (tag, ...messages) => {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = await exports.utils.sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return exports.utils.sha256(tagP, ...messages);\n },\n taggedHashSync: (tag, ...messages) => {\n if (typeof _sha256Sync !== 'function')\n throw new ShaError('sha256Sync is undefined, you need to set it');\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = _sha256Sync(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return _sha256Sync(tagP, ...messages);\n },\n _JacobianPoint: JacobianPoint,\n};\nObject.defineProperties(exports.utils, {\n sha256Sync: {\n configurable: false,\n get() {\n return _sha256Sync;\n },\n set(val) {\n if (!_sha256Sync)\n _sha256Sync = val;\n },\n },\n hmacSha256Sync: {\n configurable: false,\n get() {\n return _hmacSha256Sync;\n },\n set(val) {\n if (!_hmacSha256Sync)\n _hmacSha256Sync = val;\n },\n },\n});\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetSwapContract = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst EscrowManagerAbi_1 = require(\"./EscrowManagerAbi\");\r\nconst StarknetContractBase_1 = require(\"../contract/StarknetContractBase\");\r\nconst StarknetSigner_1 = require(\"../wallet/StarknetSigner\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst StarknetFees_1 = require(\"../base/modules/StarknetFees\");\r\nconst StarknetSwapData_1 = require(\"./StarknetSwapData\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst TimelockRefundHandler_1 = require(\"./handlers/refund/TimelockRefundHandler\");\r\nconst StarknetKeypairWallet_1 = require(\"../wallet/StarknetKeypairWallet\");\r\nconst StarknetLpVault_1 = require(\"./modules/StarknetLpVault\");\r\nconst StarknetSwapInit_1 = require(\"./modules/StarknetSwapInit\");\r\nconst StarknetSwapRefund_1 = require(\"./modules/StarknetSwapRefund\");\r\nconst ClaimHandlers_1 = require(\"./handlers/claim/ClaimHandlers\");\r\nconst StarknetSwapClaim_1 = require(\"./modules/StarknetSwapClaim\");\r\nconst createHash = require(\"create-hash\");\r\nconst ESCROW_STATE_COMMITTED = 1;\r\nconst ESCROW_STATE_CLAIMED = 2;\r\nconst ESCROW_STATE_REFUNDED = 3;\r\nconst swapContractAddreses = {\r\n [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: \"0x035e9a06faa09ee78d7c8f4722687e4f3c8d8094860cc5092704b26a50f8a43f\",\r\n [starknet_1.constants.StarknetChainId.SN_MAIN]: \"0x00b30f3bf0702d2570036c786a4b329816f99eecf36368cf74da0c0dfd67634d\"\r\n};\r\nconst defaultClaimAddresses = {\r\n [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: {\r\n [base_1.ChainSwapType.HTLC]: \"0x04a57ea54d4637c352aad1bbee046868926a11702216a0aaf7eeec1568be2d7b\",\r\n [base_1.ChainSwapType.CHAIN_TXID]: \"0x04c7cde88359e14b6f6f779f8b9d8310cee37e91a6f143f855ae29fab33c396e\",\r\n [base_1.ChainSwapType.CHAIN]: \"0x051bef6f5fd12e2832a7d38653bdfc8eb84ba7eb7a4aada5b87ef38a9999cf17\",\r\n [base_1.ChainSwapType.CHAIN_NONCED]: \"0x050e50eacd16da414f2c3a7c3570fd5e248974c6fe757d41acbf72d2836fa0a1\"\r\n },\r\n [starknet_1.constants.StarknetChainId.SN_MAIN]: {\r\n [base_1.ChainSwapType.HTLC]: \"0x0421c59a5442ccc430288c71ae606f2ca94dda7c8cd7c101f0865fa264853989\",\r\n [base_1.ChainSwapType.CHAIN_TXID]: \"0x03aad3b184fa6484e3f8dde6a45a2c2512460a3fb4893112694b68645b50ce2e\",\r\n [base_1.ChainSwapType.CHAIN]: \"0x012a938e57af955a4c96c49900731f572670bf1b7e120f99a7fe7d1f5d75cb8a\",\r\n [base_1.ChainSwapType.CHAIN_NONCED]: \"0x04a0cad6b9d9ed790ce3eb95bddc22663168f0d50d24adaf7495b344609874a7\"\r\n }\r\n};\r\nconst defaultRefundAddresses = {\r\n [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: {\r\n timelock: \"0x0726415752e78da4549e09da7824ae20b45539ca1fca71c93b349887cc0cac0d\"\r\n },\r\n [starknet_1.constants.StarknetChainId.SN_MAIN]: {\r\n timelock: \"0x014ceb49916bb9228d8179db0c480147fab2dab71e17cfd7eca9c214eeb427e2\"\r\n }\r\n};\r\nclass StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {\r\n constructor(chainId, provider, btcRelay, contractAddress = swapContractAddreses[chainId], retryPolicy, solanaFeeEstimator = new StarknetFees_1.StarknetFees(provider), handlerAddresses) {\r\n super(chainId, provider, contractAddress, EscrowManagerAbi_1.EscrowManagerAbi, retryPolicy, solanaFeeEstimator);\r\n ////////////////////////\r\n //// Constants\r\n this.chainId = \"STARKNET\";\r\n ////////////////////////\r\n //// Timeouts\r\n this.claimWithSecretTimeout = 180;\r\n this.claimWithTxDataTimeout = 180;\r\n this.refundTimeout = 180;\r\n this.claimGracePeriod = 10 * 60;\r\n this.refundGracePeriod = 10 * 60;\r\n this.authGracePeriod = 30;\r\n ////////////////////////\r\n //// Handlers\r\n this.claimHandlersByAddress = {};\r\n this.claimHandlersBySwapType = {};\r\n this.refundHandlersByAddress = {};\r\n this.Init = new StarknetSwapInit_1.StarknetSwapInit(this);\r\n this.Refund = new StarknetSwapRefund_1.StarknetSwapRefund(this);\r\n this.Claim = new StarknetSwapClaim_1.StarknetSwapClaim(this);\r\n this.LpVault = new StarknetLpVault_1.StarknetLpVault(this);\r\n this.btcRelay = btcRelay;\r\n handlerAddresses ?? (handlerAddresses = {});\r\n handlerAddresses.refund ?? (handlerAddresses.refund = {});\r\n handlerAddresses.refund = { ...defaultRefundAddresses[chainId], ...handlerAddresses.refund };\r\n handlerAddresses.claim ?? (handlerAddresses.claim = {});\r\n handlerAddresses.claim = { ...defaultClaimAddresses[chainId], ...handlerAddresses.claim };\r\n ClaimHandlers_1.claimHandlersList.forEach(handlerCtor => {\r\n const handler = new handlerCtor(handlerAddresses.claim[handlerCtor.type]);\r\n this.claimHandlersByAddress[handler.address] = handler;\r\n this.claimHandlersBySwapType[handlerCtor.type] = handler;\r\n });\r\n this.timelockRefundHandler = new TimelockRefundHandler_1.TimelockRefundHandler(handlerAddresses.refund.timelock);\r\n this.refundHandlersByAddress[this.timelockRefundHandler.address] = this.timelockRefundHandler;\r\n }\r\n async start() {\r\n }\r\n ////////////////////////////////////////////\r\n //// Signatures\r\n preFetchForInitSignatureVerification() {\r\n return this.Init.preFetchForInitSignatureVerification();\r\n }\r\n getInitSignature(signer, swapData, authorizationTimeout, preFetchedBlockData, feeRate) {\r\n return this.Init.signSwapInitialization(signer, swapData, authorizationTimeout);\r\n }\r\n isValidInitAuthorization(swapData, { timeout, prefix, signature }, feeRate, preFetchedData) {\r\n return this.Init.isSignatureValid(swapData, timeout, prefix, signature, preFetchedData);\r\n }\r\n getInitAuthorizationExpiry(swapData, { timeout, prefix, signature }, preFetchedData) {\r\n return this.Init.getSignatureExpiry(timeout);\r\n }\r\n isInitAuthorizationExpired(swapData, { timeout, prefix, signature }) {\r\n return this.Init.isSignatureExpired(timeout);\r\n }\r\n getRefundSignature(signer, swapData, authorizationTimeout) {\r\n return this.Refund.signSwapRefund(signer, swapData, authorizationTimeout);\r\n }\r\n isValidRefundAuthorization(swapData, { timeout, prefix, signature }) {\r\n return this.Refund.isSignatureValid(swapData, timeout, prefix, signature);\r\n }\r\n getDataSignature(signer, data) {\r\n return this.Signatures.getDataSignature(signer, data);\r\n }\r\n isValidDataSignature(data, signature, publicKey) {\r\n return this.Signatures.isValidDataSignature(data, signature, publicKey);\r\n }\r\n ////////////////////////////////////////////\r\n //// Swap data utils\r\n /**\r\n * Checks whether the claim is claimable by us, that means not expired, we are claimer & the swap is commited\r\n *\r\n * @param signer\r\n * @param data\r\n */\r\n async isClaimable(signer, data) {\r\n if (!data.isClaimer(signer))\r\n return false;\r\n if (await this.isExpired(signer, data))\r\n return false;\r\n return await this.isCommited(data);\r\n }\r\n /**\r\n * Checks whether a swap is commited, i.e. the swap still exists on-chain and was not claimed nor refunded\r\n *\r\n * @param swapData\r\n */\r\n async isCommited(swapData) {\r\n const data = await this.contract.get_hash_state(\"0x\" + swapData.getEscrowHash());\r\n return Number(data.state) === ESCROW_STATE_COMMITTED;\r\n }\r\n /**\r\n * Checks whether the swap is expired, takes into consideration possible on-chain time skew, therefore for claimer\r\n * the swap expires a bit sooner than it should've & for the offerer it expires a bit later\r\n *\r\n * @param signer\r\n * @param data\r\n */\r\n isExpired(signer, data) {\r\n let currentTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n if (data.isClaimer(signer))\r\n currentTimestamp = currentTimestamp + BigInt(this.claimGracePeriod);\r\n if (data.isOfferer(signer))\r\n currentTimestamp = currentTimestamp - BigInt(this.refundGracePeriod);\r\n return Promise.resolve(data.getExpiry() < currentTimestamp);\r\n }\r\n /**\r\n * Checks if the swap is refundable by us, checks if we are offerer, if the swap is already expired & if the swap\r\n * is still commited\r\n *\r\n * @param signer\r\n * @param data\r\n */\r\n async isRequestRefundable(signer, data) {\r\n //Swap can only be refunded by the offerer\r\n if (!data.isOfferer(signer))\r\n return false;\r\n if (!(await this.isExpired(signer, data)))\r\n return false;\r\n return await this.isCommited(data);\r\n }\r\n getHashForTxId(txId, confirmations) {\r\n return (0, Utils_1.bigNumberishToBuffer)(this.claimHandlersBySwapType[base_1.ChainSwapType.CHAIN_TXID].getCommitment({\r\n txId,\r\n confirmations,\r\n btcRelay: this.btcRelay\r\n }), 32);\r\n }\r\n /**\r\n * Get the swap payment hash to be used for an on-chain swap, uses poseidon hash of the value\r\n *\r\n * @param outputScript output script required to claim the swap\r\n * @param amount sats sent required to claim the swap\r\n * @param confirmations\r\n * @param nonce swap nonce uniquely identifying the transaction to prevent replay attacks\r\n */\r\n getHashForOnchain(outputScript, amount, confirmations, nonce) {\r\n let result;\r\n if (nonce == null || nonce === 0n) {\r\n result = this.claimHandlersBySwapType[base_1.ChainSwapType.CHAIN].getCommitment({\r\n output: outputScript,\r\n amount,\r\n confirmations,\r\n btcRelay: this.btcRelay\r\n });\r\n }\r\n else {\r\n result = this.claimHandlersBySwapType[base_1.ChainSwapType.CHAIN_NONCED].getCommitment({\r\n output: outputScript,\r\n amount,\r\n nonce,\r\n confirmations,\r\n btcRelay: this.btcRelay\r\n });\r\n }\r\n return (0, Utils_1.bigNumberishToBuffer)(result, 32);\r\n }\r\n /**\r\n * Get the swap payment hash to be used for a lightning htlc swap, uses poseidon hash of the sha256 hash of the preimage\r\n *\r\n * @param paymentHash payment hash of the HTLC\r\n */\r\n getHashForHtlc(paymentHash) {\r\n return (0, Utils_1.bigNumberishToBuffer)(this.claimHandlersBySwapType[base_1.ChainSwapType.HTLC].getCommitment(paymentHash), 32);\r\n }\r\n getExtraData(outputScript, amount, confirmations, nonce) {\r\n if (nonce == null)\r\n nonce = 0n;\r\n const txoHash = createHash(\"sha256\").update(buffer_1.Buffer.concat([\r\n base_1.BigIntBufferUtils.toBuffer(amount, \"le\", 8),\r\n outputScript\r\n ])).digest();\r\n return buffer_1.Buffer.concat([\r\n txoHash,\r\n base_1.BigIntBufferUtils.toBuffer(nonce, \"be\", 8),\r\n base_1.BigIntBufferUtils.toBuffer(BigInt(confirmations), \"be\", 2)\r\n ]);\r\n }\r\n ////////////////////////////////////////////\r\n //// Swap data getters\r\n /**\r\n * Gets the status of the specific swap, this also checks if we are offerer/claimer & checks for expiry (to see\r\n * if swap is refundable)\r\n *\r\n * @param signer\r\n * @param data\r\n */\r\n async getCommitStatus(signer, data) {\r\n const escrowHash = data.getEscrowHash();\r\n const stateData = await this.contract.get_hash_state(\"0x\" + escrowHash);\r\n const state = Number(stateData.state);\r\n switch (state) {\r\n case ESCROW_STATE_COMMITTED:\r\n if (data.isOfferer(signer) && await this.isExpired(signer, data))\r\n return base_1.SwapCommitStatus.REFUNDABLE;\r\n return base_1.SwapCommitStatus.COMMITED;\r\n case ESCROW_STATE_CLAIMED:\r\n return base_1.SwapCommitStatus.PAID;\r\n default:\r\n if (await this.isExpired(signer, data))\r\n return base_1.SwapCommitStatus.EXPIRED;\r\n return base_1.SwapCommitStatus.NOT_COMMITED;\r\n }\r\n }\r\n /**\r\n * Checks the status of the specific payment hash\r\n *\r\n * @param paymentHash\r\n */\r\n async getPaymentHashStatus(paymentHash) {\r\n //TODO: Noop\r\n return base_1.SwapCommitStatus.NOT_COMMITED;\r\n }\r\n /**\r\n * Returns the data committed for a specific payment hash, or null if no data is currently commited for\r\n * the specific swap\r\n *\r\n * @param paymentHashHex\r\n */\r\n async getCommitedData(paymentHashHex) {\r\n //TODO: Noop\r\n return null;\r\n }\r\n ////////////////////////////////////////////\r\n //// Swap data initializer\r\n createSwapData(type, offerer, claimer, token, amount, paymentHash, sequence, expiry, payIn, payOut, securityDeposit, claimerBounty, depositToken = this.Tokens.getNativeCurrencyAddress()) {\r\n return Promise.resolve(new StarknetSwapData_1.StarknetSwapData(offerer, claimer, token, this.timelockRefundHandler.address, this.claimHandlersBySwapType?.[type]?.address, payOut, payIn, payIn, //For now track reputation for all payIn swaps\r\n sequence, \"0x\" + paymentHash, (0, Utils_1.toHex)(expiry), amount, depositToken, securityDeposit, claimerBounty, type, null, []));\r\n }\r\n ////////////////////////////////////////////\r\n //// Utils\r\n async getBalance(signer, tokenAddress, inContract) {\r\n if (inContract)\r\n return await this.getIntermediaryBalance(signer, tokenAddress);\r\n //TODO: For native token we should discount the cost of deploying an account if it is not deployed yet\r\n return await this.Tokens.getTokenBalance(signer, tokenAddress);\r\n }\r\n getIntermediaryData(address, token) {\r\n return this.LpVault.getIntermediaryData(address, token);\r\n }\r\n getIntermediaryReputation(address, token) {\r\n return this.LpVault.getIntermediaryReputation(address, token);\r\n }\r\n getIntermediaryBalance(address, token) {\r\n return this.LpVault.getIntermediaryBalance(address, token);\r\n }\r\n isValidAddress(address) {\r\n return this.Addresses.isValidAddress(address);\r\n }\r\n getNativeCurrencyAddress() {\r\n return this.Tokens.getNativeCurrencyAddress();\r\n }\r\n ////////////////////////////////////////////\r\n //// Transaction initializers\r\n async txsClaimWithSecret(signer, swapData, secret, checkExpiry, initAta, feeRate, skipAtaCheck) {\r\n return this.Claim.txsClaimWithSecret(typeof (signer) === \"string\" ? signer : signer.getAddress(), swapData, secret, checkExpiry, feeRate);\r\n }\r\n async txsClaimWithTxData(signer, swapData, tx, requiredConfirmations, vout, commitedHeader, synchronizer, initAta, feeRate) {\r\n return this.Claim.txsClaimWithTxData(typeof (signer) === \"string\" ? signer : signer.getAddress(), swapData, tx, requiredConfirmations, vout, commitedHeader, synchronizer, feeRate);\r\n }\r\n txsRefund(signer, swapData, check, initAta, feeRate) {\r\n return this.Refund.txsRefund(signer, swapData, check, feeRate);\r\n }\r\n txsRefundWithAuthorization(signer, swapData, { timeout, prefix, signature }, check, initAta, feeRate) {\r\n return this.Refund.txsRefundWithAuthorization(signer, swapData, timeout, prefix, signature, check, feeRate);\r\n }\r\n txsInit(swapData, { timeout, prefix, signature }, skipChecks, feeRate) {\r\n return this.Init.txsInit(swapData, timeout, prefix, signature, skipChecks, feeRate);\r\n }\r\n txsWithdraw(signer, token, amount, feeRate) {\r\n return this.LpVault.txsWithdraw(signer, token, amount, feeRate);\r\n }\r\n txsDeposit(signer, token, amount, feeRate) {\r\n return this.LpVault.txsDeposit(signer, token, amount, feeRate);\r\n }\r\n txsTransfer(signer, token, amount, dstAddress, feeRate) {\r\n return this.Tokens.txsTransfer(signer, token, amount, dstAddress, feeRate);\r\n }\r\n ////////////////////////////////////////////\r\n //// Executors\r\n async claimWithSecret(signer, swapData, secret, checkExpiry, initAta, txOptions) {\r\n const result = await this.Claim.txsClaimWithSecret(signer.getAddress(), swapData, secret, checkExpiry, txOptions?.feeRate);\r\n const [signature] = await this.Transactions.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n return signature;\r\n }\r\n async claimWithTxData(signer, swapData, tx, requiredConfirmations, vout, commitedHeader, synchronizer, initAta, txOptions) {\r\n const txs = await this.Claim.txsClaimWithTxData(signer.getAddress(), swapData, tx, requiredConfirmations, vout, commitedHeader, synchronizer, txOptions?.feeRate);\r\n if (txs === null)\r\n throw new Error(\"Btc relay not synchronized to required blockheight!\");\r\n //TODO: This doesn't return proper tx signature\r\n const [signature] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n return signature;\r\n }\r\n async refund(signer, swapData, check, initAta, txOptions) {\r\n let result = await this.txsRefund(signer.getAddress(), swapData, check, initAta, txOptions?.feeRate);\r\n const [signature] = await this.Transactions.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n return signature;\r\n }\r\n async refundWithAuthorization(signer, swapData, signature, check, initAta, txOptions) {\r\n let result = await this.txsRefundWithAuthorization(signer.getAddress(), swapData, signature, check, initAta, txOptions?.feeRate);\r\n const [txSignature] = await this.Transactions.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n return txSignature;\r\n }\r\n async init(signer, swapData, signature, skipChecks, txOptions) {\r\n if (swapData.isPayIn()) {\r\n if (!swapData.isOfferer(signer.getAddress()))\r\n throw new Error(\"Invalid signer provided!\");\r\n }\r\n else {\r\n if (!swapData.isClaimer(signer.getAddress()))\r\n throw new Error(\"Invalid signer provided!\");\r\n }\r\n let result = await this.txsInit(swapData, signature, skipChecks, txOptions?.feeRate);\r\n const [txSignature] = await this.Transactions.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n return txSignature;\r\n }\r\n async withdraw(signer, token, amount, txOptions) {\r\n const txs = await this.LpVault.txsWithdraw(signer.getAddress(), token, amount, txOptions?.feeRate);\r\n const [txId] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);\r\n return txId;\r\n }\r\n async deposit(signer, token, amount, txOptions) {\r\n const txs = await this.LpVault.txsDeposit(signer.getAddress(), token, amount, txOptions?.feeRate);\r\n const [txId] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);\r\n return txId;\r\n }\r\n async transfer(signer, token, amount, dstAddress, txOptions) {\r\n const txs = await this.Tokens.txsTransfer(signer.getAddress(), token, amount, dstAddress, txOptions?.feeRate);\r\n const [txId] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);\r\n return txId;\r\n }\r\n ////////////////////////////////////////////\r\n //// Transactions\r\n sendAndConfirm(signer, txs, waitForConfirmation, abortSignal, parallel, onBeforePublish) {\r\n return this.Transactions.sendAndConfirm(signer, txs, waitForConfirmation, abortSignal, parallel, onBeforePublish);\r\n }\r\n serializeTx(tx) {\r\n return this.Transactions.serializeTx(tx);\r\n }\r\n deserializeTx(txData) {\r\n return this.Transactions.deserializeTx(txData);\r\n }\r\n getTxIdStatus(txId) {\r\n return this.Transactions.getTxIdStatus(txId);\r\n }\r\n getTxStatus(tx) {\r\n return this.Transactions.getTxStatus(tx);\r\n }\r\n ////////////////////////////////////////////\r\n //// Fees\r\n getInitPayInFeeRate(offerer, claimer, token, paymentHash) {\r\n return this.Fees.getFeeRate();\r\n }\r\n getInitFeeRate(offerer, claimer, token, paymentHash) {\r\n return this.Fees.getFeeRate();\r\n }\r\n getRefundFeeRate(swapData) {\r\n return this.Fees.getFeeRate();\r\n }\r\n getClaimFeeRate(signer, swapData) {\r\n return this.Fees.getFeeRate();\r\n }\r\n getClaimFee(signer, swapData, feeRate) {\r\n return this.Claim.getClaimFee(swapData, feeRate);\r\n }\r\n /**\r\n * Get the estimated solana fee of the commit transaction\r\n */\r\n getCommitFee(swapData, feeRate) {\r\n return this.Init.getInitFee(swapData, feeRate);\r\n }\r\n /**\r\n * Get the estimated solana transaction fee of the refund transaction\r\n */\r\n getRefundFee(swapData, feeRate) {\r\n return this.Refund.getRefundFee(swapData, feeRate);\r\n }\r\n ///////////////////////////////////\r\n //// Callbacks & handlers\r\n offBeforeTxReplace(callback) {\r\n return true;\r\n }\r\n onBeforeTxReplace(callback) { }\r\n onBeforeTxSigned(callback) {\r\n this.Transactions.onBeforeTxSigned(callback);\r\n }\r\n offBeforeTxSigned(callback) {\r\n return this.Transactions.offBeforeTxSigned(callback);\r\n }\r\n isValidToken(tokenIdentifier) {\r\n return this.Tokens.isValidToken(tokenIdentifier);\r\n }\r\n randomAddress() {\r\n return starknet_1.stark.randomAddress();\r\n }\r\n randomSigner() {\r\n const privateKey = \"0x\" + buffer_1.Buffer.from(starknet_1.ec.starkCurve.utils.randomPrivateKey()).toString(\"hex\");\r\n const wallet = new StarknetKeypairWallet_1.StarknetKeypairWallet(this.provider, privateKey);\r\n return new StarknetSigner_1.StarknetSigner(wallet);\r\n }\r\n}\r\nexports.StarknetSwapContract = StarknetSwapContract;\r\n","/* eslint-disable no-continue */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\n\nconst errorClasses = {};\nconst deserializers = {};\n\nexport const addCustomErrorDeserializer = (name: string, deserializer: (obj: any) => any): void => {\n deserializers[name] = deserializer;\n};\n\nexport interface LedgerErrorConstructor\n extends ErrorConstructor {\n new (message?: string, fields?: F, options?: any): Error;\n (message?: string, fields?: F, options?: any): Error;\n readonly prototype: Error;\n}\n\nexport const createCustomErrorClass = <\n F extends { [key: string]: unknown },\n T extends LedgerErrorConstructor = LedgerErrorConstructor,\n>(\n name: string,\n): T => {\n class CustomErrorClass extends Error {\n cause?: Error;\n constructor(message?: string, fields?: F, options?: any) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n super(message || name, options);\n // Set the prototype explicitly. See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, CustomErrorClass.prototype);\n this.name = name;\n if (fields) {\n for (const k in fields) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[k] = fields[k];\n }\n }\n if (options && isObject(options) && \"cause\" in options && !(\"cause\" in this)) {\n // .cause was specified but the superconstructor\n // did not create an instance property.\n const cause = options.cause;\n this.cause = cause;\n if (\"stack\" in cause) {\n this.stack = this.stack + \"\\nCAUSE: \" + cause.stack;\n }\n }\n }\n }\n\n errorClasses[name] = CustomErrorClass;\n\n return CustomErrorClass as unknown as T;\n};\n\nfunction isObject(value) {\n return typeof value === \"object\";\n}\n\n// inspired from https://github.com/programble/errio/blob/master/index.js\nexport const deserializeError = (object: any): Error | undefined => {\n if (object && typeof object === \"object\") {\n try {\n if (typeof object.message === \"string\") {\n const msg = JSON.parse(object.message);\n if (msg.message && msg.name) {\n object = msg;\n }\n }\n } catch (e) {\n // nothing\n }\n\n let error;\n if (typeof object.name === \"string\") {\n const { name } = object;\n const des = deserializers[name];\n if (des) {\n error = des(object);\n } else {\n let constructor = name === \"Error\" ? Error : errorClasses[name];\n\n if (!constructor) {\n console.warn(\"deserializing an unknown class '\" + name + \"'\");\n constructor = createCustomErrorClass(name);\n }\n\n error = Object.create(constructor.prototype);\n try {\n for (const prop in object) {\n if (object.hasOwnProperty(prop)) {\n error[prop] = object[prop];\n }\n }\n } catch (e) {\n // sometimes setting a property can fail (e.g. .name)\n }\n }\n } else {\n if (typeof object.message === \"string\") {\n error = new Error(object.message);\n }\n }\n\n if (error && !error.stack && Error.captureStackTrace) {\n Error.captureStackTrace(error, deserializeError);\n }\n return error;\n }\n return new Error(String(object));\n};\n\n// inspired from https://github.com/sindresorhus/serialize-error/blob/master/index.js\nexport const serializeError = (\n value: undefined | To | string | (() => unknown),\n): undefined | To | string => {\n if (!value) return value;\n if (typeof value === \"object\") {\n return destroyCircular(value, []);\n }\n if (typeof value === \"function\") {\n return `[Function: ${value.name || \"anonymous\"}]`;\n }\n return value;\n};\n\ninterface To {\n name?: string;\n message?: string;\n stack?: string;\n}\n\n// https://www.npmjs.com/package/destroy-circular\nfunction destroyCircular(from: To, seen: Array): To {\n const to: To = {};\n seen.push(from);\n for (const key of Object.keys(from)) {\n const value = from[key];\n if (typeof value === \"function\") {\n continue;\n }\n if (!value || typeof value !== \"object\") {\n to[key] = value;\n continue;\n }\n if (seen.indexOf(from[key]) === -1) {\n to[key] = destroyCircular(from[key], seen.slice(0));\n continue;\n }\n to[key] = \"[Circular]\";\n }\n if (typeof from.name === \"string\") {\n to.name = from.name;\n }\n if (typeof from.message === \"string\") {\n to.message = from.message;\n }\n if (typeof from.stack === \"string\") {\n to.stack = from.stack;\n }\n return to;\n}\n","import {\n serializeError,\n deserializeError,\n createCustomErrorClass,\n addCustomErrorDeserializer,\n LedgerErrorConstructor,\n} from \"./helpers\";\n\nexport { serializeError, deserializeError, createCustomErrorClass, addCustomErrorDeserializer };\n\nexport const AccountNameRequiredError = createCustomErrorClass(\"AccountNameRequired\");\nexport const AccountNotSupported = createCustomErrorClass(\"AccountNotSupported\");\nexport const AccountAwaitingSendPendingOperations = createCustomErrorClass(\n \"AccountAwaitingSendPendingOperations\",\n);\nexport const AmountRequired = createCustomErrorClass(\"AmountRequired\");\nexport const BluetoothRequired = createCustomErrorClass(\"BluetoothRequired\");\nexport const BtcUnmatchedApp = createCustomErrorClass(\"BtcUnmatchedApp\");\nexport const CantOpenDevice = createCustomErrorClass(\"CantOpenDevice\");\nexport const CashAddrNotSupported = createCustomErrorClass(\"CashAddrNotSupported\");\nexport const ClaimRewardsFeesWarning = createCustomErrorClass(\"ClaimRewardsFeesWarning\");\nexport const CurrencyNotSupported = createCustomErrorClass<\n { currencyName: string },\n LedgerErrorConstructor<{ currencyName: string }>\n>(\"CurrencyNotSupported\");\nexport const DeviceAppVerifyNotSupported = createCustomErrorClass(\"DeviceAppVerifyNotSupported\");\nexport const DeviceGenuineSocketEarlyClose = createCustomErrorClass(\n \"DeviceGenuineSocketEarlyClose\",\n);\nexport const DeviceNotGenuineError = createCustomErrorClass(\"DeviceNotGenuine\");\nexport const DeviceOnDashboardExpected = createCustomErrorClass(\"DeviceOnDashboardExpected\");\nexport const DeviceOnDashboardUnexpected = createCustomErrorClass(\"DeviceOnDashboardUnexpected\");\nexport const DeviceInOSUExpected = createCustomErrorClass(\"DeviceInOSUExpected\");\nexport const DeviceHalted = createCustomErrorClass(\"DeviceHalted\");\nexport const DeviceNameInvalid = createCustomErrorClass(\"DeviceNameInvalid\");\nexport const DeviceSocketFail = createCustomErrorClass(\"DeviceSocketFail\");\nexport const DeviceSocketNoBulkStatus = createCustomErrorClass(\"DeviceSocketNoBulkStatus\");\nexport const DeviceNeedsRestart = createCustomErrorClass(\"DeviceSocketNoBulkStatus\");\nexport const UnresponsiveDeviceError = createCustomErrorClass(\"UnresponsiveDeviceError\");\nexport const DisconnectedDevice = createCustomErrorClass(\"DisconnectedDevice\");\nexport const DisconnectedDeviceDuringOperation = createCustomErrorClass(\n \"DisconnectedDeviceDuringOperation\",\n);\nexport const DeviceExtractOnboardingStateError = createCustomErrorClass(\n \"DeviceExtractOnboardingStateError\",\n);\nexport const DeviceOnboardingStatePollingError = createCustomErrorClass(\n \"DeviceOnboardingStatePollingError\",\n);\nexport const EnpointConfigError = createCustomErrorClass(\"EnpointConfig\");\nexport const EthAppPleaseEnableContractData = createCustomErrorClass(\n \"EthAppPleaseEnableContractData\",\n);\nexport const FeeEstimationFailed = createCustomErrorClass(\"FeeEstimationFailed\");\nexport const FirmwareNotRecognized = createCustomErrorClass(\"FirmwareNotRecognized\");\nexport const HardResetFail = createCustomErrorClass(\"HardResetFail\");\nexport const InvalidXRPTag = createCustomErrorClass(\"InvalidXRPTag\");\nexport const InvalidAddress = createCustomErrorClass(\"InvalidAddress\");\nexport const InvalidNonce = createCustomErrorClass(\"InvalidNonce\");\nexport const InvalidAddressBecauseDestinationIsAlsoSource = createCustomErrorClass(\n \"InvalidAddressBecauseDestinationIsAlsoSource\",\n);\nexport const LatestMCUInstalledError = createCustomErrorClass(\"LatestMCUInstalledError\");\nexport const UnknownMCU = createCustomErrorClass(\"UnknownMCU\");\nexport const LedgerAPIError = createCustomErrorClass(\"LedgerAPIError\");\nexport const LedgerAPIErrorWithMessage = createCustomErrorClass(\"LedgerAPIErrorWithMessage\");\nexport const LedgerAPINotAvailable = createCustomErrorClass(\"LedgerAPINotAvailable\");\nexport const ManagerAppAlreadyInstalledError = createCustomErrorClass(\"ManagerAppAlreadyInstalled\");\nexport const ManagerAppRelyOnBTCError = createCustomErrorClass(\"ManagerAppRelyOnBTC\");\nexport const ManagerAppDepInstallRequired = createCustomErrorClass(\"ManagerAppDepInstallRequired\");\nexport const ManagerAppDepUninstallRequired = createCustomErrorClass(\n \"ManagerAppDepUninstallRequired\",\n);\nexport const ManagerDeviceLockedError = createCustomErrorClass(\"ManagerDeviceLocked\");\nexport const ManagerFirmwareNotEnoughSpaceError = createCustomErrorClass(\n \"ManagerFirmwareNotEnoughSpace\",\n);\nexport const ManagerNotEnoughSpaceError = createCustomErrorClass(\"ManagerNotEnoughSpace\");\nexport const ManagerUninstallBTCDep = createCustomErrorClass(\"ManagerUninstallBTCDep\");\nexport const NetworkDown = createCustomErrorClass(\"NetworkDown\");\nexport const NetworkError = createCustomErrorClass(\"NetworkError\");\nexport const NoAddressesFound = createCustomErrorClass(\"NoAddressesFound\");\nexport const NotEnoughBalance = createCustomErrorClass(\"NotEnoughBalance\");\nexport const NotEnoughBalanceSwap = createCustomErrorClass(\"NotEnoughBalanceSwap\");\nexport const NotEnoughBalanceToDelegate = createCustomErrorClass(\"NotEnoughBalanceToDelegate\");\nexport const NotEnoughBalanceInParentAccount = createCustomErrorClass(\n \"NotEnoughBalanceInParentAccount\",\n);\nexport const NotEnoughSpendableBalance = createCustomErrorClass(\"NotEnoughSpendableBalance\");\nexport const NotEnoughBalanceBecauseDestinationNotCreated = createCustomErrorClass(\n \"NotEnoughBalanceBecauseDestinationNotCreated\",\n);\nexport const NoAccessToCamera = createCustomErrorClass(\"NoAccessToCamera\");\nexport const NotEnoughGas = createCustomErrorClass(\"NotEnoughGas\");\n// Error message specifically for the PTX swap flow\nexport const NotEnoughGasSwap = createCustomErrorClass(\"NotEnoughGasSwap\");\nexport const TronEmptyAccount = createCustomErrorClass(\"TronEmptyAccount\");\nexport const MaybeKeepTronAccountAlive = createCustomErrorClass(\"MaybeKeepTronAccountAlive\");\nexport const NotSupportedLegacyAddress = createCustomErrorClass(\"NotSupportedLegacyAddress\");\nexport const GasLessThanEstimate = createCustomErrorClass(\"GasLessThanEstimate\");\nexport const PriorityFeeTooLow = createCustomErrorClass(\"PriorityFeeTooLow\");\nexport const PriorityFeeTooHigh = createCustomErrorClass(\"PriorityFeeTooHigh\");\nexport const PriorityFeeHigherThanMaxFee = createCustomErrorClass(\"PriorityFeeHigherThanMaxFee\");\nexport const MaxFeeTooLow = createCustomErrorClass(\"MaxFeeTooLow\");\nexport const PasswordsDontMatchError = createCustomErrorClass(\"PasswordsDontMatch\");\nexport const PasswordIncorrectError = createCustomErrorClass(\"PasswordIncorrect\");\nexport const RecommendSubAccountsToEmpty = createCustomErrorClass(\"RecommendSubAccountsToEmpty\");\nexport const RecommendUndelegation = createCustomErrorClass(\"RecommendUndelegation\");\nexport const TimeoutTagged = createCustomErrorClass(\"TimeoutTagged\");\nexport const UnexpectedBootloader = createCustomErrorClass(\"UnexpectedBootloader\");\nexport const MCUNotGenuineToDashboard = createCustomErrorClass(\"MCUNotGenuineToDashboard\");\nexport const RecipientRequired = createCustomErrorClass(\"RecipientRequired\");\nexport const UnavailableTezosOriginatedAccountReceive = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountReceive\",\n);\nexport const UnavailableTezosOriginatedAccountSend = createCustomErrorClass(\n \"UnavailableTezosOriginatedAccountSend\",\n);\nexport const UpdateFetchFileFail = createCustomErrorClass(\"UpdateFetchFileFail\");\nexport const UpdateIncorrectHash = createCustomErrorClass(\"UpdateIncorrectHash\");\nexport const UpdateIncorrectSig = createCustomErrorClass(\"UpdateIncorrectSig\");\nexport const UpdateYourApp = createCustomErrorClass(\"UpdateYourApp\");\nexport const UserRefusedDeviceNameChange = createCustomErrorClass(\"UserRefusedDeviceNameChange\");\nexport const UserRefusedAddress = createCustomErrorClass(\"UserRefusedAddress\");\nexport const UserRefusedFirmwareUpdate = createCustomErrorClass(\"UserRefusedFirmwareUpdate\");\nexport const UserRefusedAllowManager = createCustomErrorClass(\"UserRefusedAllowManager\");\nexport const UserRefusedOnDevice = createCustomErrorClass(\"UserRefusedOnDevice\"); // TODO rename because it's just for transaction refusal\nexport const PinNotSet = createCustomErrorClass(\"PinNotSet\");\nexport const ExpertModeRequired = createCustomErrorClass(\"ExpertModeRequired\");\nexport const TransportOpenUserCancelled = createCustomErrorClass(\"TransportOpenUserCancelled\");\nexport const TransportInterfaceNotAvailable = createCustomErrorClass(\n \"TransportInterfaceNotAvailable\",\n);\nexport const TransportRaceCondition = createCustomErrorClass(\"TransportRaceCondition\");\nexport const TransportWebUSBGestureRequired = createCustomErrorClass(\n \"TransportWebUSBGestureRequired\",\n);\nexport const TransactionHasBeenValidatedError = createCustomErrorClass(\n \"TransactionHasBeenValidatedError\",\n);\nexport const TransportExchangeTimeoutError = createCustomErrorClass(\n \"TransportExchangeTimeoutError\",\n);\nexport const DeviceShouldStayInApp = createCustomErrorClass(\"DeviceShouldStayInApp\");\nexport const WebsocketConnectionError = createCustomErrorClass(\"WebsocketConnectionError\");\nexport const WebsocketConnectionFailed = createCustomErrorClass(\"WebsocketConnectionFailed\");\nexport const WrongDeviceForAccount = createCustomErrorClass(\"WrongDeviceForAccount\");\nexport const WrongDeviceForAccountPayout = createCustomErrorClass(\"WrongDeviceForAccountPayout\");\nexport const WrongDeviceForAccountRefund = createCustomErrorClass(\"WrongDeviceForAccountRefund\");\nexport const WrongAppForCurrency = createCustomErrorClass(\"WrongAppForCurrency\");\n\nexport const ETHAddressNonEIP = createCustomErrorClass(\"ETHAddressNonEIP\");\nexport const CantScanQRCode = createCustomErrorClass(\"CantScanQRCode\");\nexport const FeeNotLoaded = createCustomErrorClass(\"FeeNotLoaded\");\nexport const FeeNotLoadedSwap = createCustomErrorClass(\"FeeNotLoadedSwap\");\nexport const FeeRequired = createCustomErrorClass(\"FeeRequired\");\nexport const FeeTooHigh = createCustomErrorClass(\"FeeTooHigh\");\nexport const PendingOperation = createCustomErrorClass(\"PendingOperation\");\nexport const SyncError = createCustomErrorClass(\"SyncError\");\nexport const PairingFailed = createCustomErrorClass(\"PairingFailed\");\nexport const PeerRemovedPairing = createCustomErrorClass(\"PeerRemovedPairing\");\nexport const GenuineCheckFailed = createCustomErrorClass(\"GenuineCheckFailed\");\ntype NetworkType = {\n status: number;\n url: string | undefined;\n method: string;\n};\nexport const LedgerAPI4xx = createCustomErrorClass<\n NetworkType,\n LedgerErrorConstructor\n>(\"LedgerAPI4xx\");\nexport const LedgerAPI5xx = createCustomErrorClass<\n NetworkType,\n LedgerErrorConstructor\n>(\"LedgerAPI5xx\");\nexport const FirmwareOrAppUpdateRequired = createCustomErrorClass(\"FirmwareOrAppUpdateRequired\");\n\n// SpeedUp / Cancel EVM tx\nexport const ReplacementTransactionUnderpriced = createCustomErrorClass(\n \"ReplacementTransactionUnderpriced\",\n);\n\n// Bitcoin family\nexport const OpReturnDataSizeLimit = createCustomErrorClass(\"OpReturnSizeLimit\");\nexport const DustLimit = createCustomErrorClass(\"DustLimit\");\n\n// Language\nexport const LanguageNotFound = createCustomErrorClass(\"LanguageNotFound\");\n\n// db stuff, no need to translate\nexport const NoDBPathGiven = createCustomErrorClass(\"NoDBPathGiven\");\nexport const DBWrongPassword = createCustomErrorClass(\"DBWrongPassword\");\nexport const DBNotReset = createCustomErrorClass(\"DBNotReset\");\n\nexport const SequenceNumberError = createCustomErrorClass(\"SequenceNumberError\");\nexport const DisabledTransactionBroadcastError = createCustomErrorClass(\n \"DisabledTransactionBroadcastError\",\n);\n\n// Represents the type of all the classes created with createCustomErrorClass\nexport type CustomErrorClassType = ReturnType;\n\n/**\n * Type of a Transport error used to represent all equivalent errors coming from all possible implementation of Transport\n */\nexport enum HwTransportErrorType {\n Unknown = \"Unknown\",\n LocationServicesDisabled = \"LocationServicesDisabled\",\n LocationServicesUnauthorized = \"LocationServicesUnauthorized\",\n BluetoothScanStartFailed = \"BluetoothScanStartFailed\",\n}\n\n/**\n * Represents an error coming from the usage of any Transport implementation.\n *\n * Needed to map a specific implementation error into an error that\n * can be managed by any code unaware of the specific Transport implementation\n * that was used.\n */\nexport class HwTransportError extends Error {\n type: HwTransportErrorType;\n\n constructor(type: HwTransportErrorType, message: string) {\n super(message);\n this.name = \"HwTransportError\";\n this.type = type;\n\n // Needed as long as we target < ES6\n Object.setPrototypeOf(this, HwTransportError.prototype);\n }\n}\n\n/**\n * TransportError is used for any generic transport errors.\n * e.g. Error thrown when data received by exchanges are incorrect or if exchanged failed to communicate with the device for various reason.\n */\nexport class TransportError extends Error {\n id: string;\n constructor(message: string, id: string) {\n const name = \"TransportError\";\n super(message || name);\n this.name = name;\n this.message = message;\n this.stack = new Error(message).stack;\n this.id = id;\n }\n}\n\naddCustomErrorDeserializer(\"TransportError\", e => new TransportError(e.message, e.id));\n\nexport const StatusCodes = {\n ACCESS_CONDITION_NOT_FULFILLED: 0x9804,\n ALGORITHM_NOT_SUPPORTED: 0x9484,\n CLA_NOT_SUPPORTED: 0x6e00,\n CODE_BLOCKED: 0x9840,\n CODE_NOT_INITIALIZED: 0x9802,\n COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981,\n CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985,\n CONTRADICTION_INVALIDATION: 0x9810,\n CONTRADICTION_SECRET_CODE_STATUS: 0x9808,\n DEVICE_IN_RECOVERY_MODE: 0x662f,\n CUSTOM_IMAGE_EMPTY: 0x662e,\n FILE_ALREADY_EXISTS: 0x6a89,\n FILE_NOT_FOUND: 0x9404,\n GP_AUTH_FAILED: 0x6300,\n HALTED: 0x6faa,\n INCONSISTENT_FILE: 0x9408,\n INCORRECT_DATA: 0x6a80,\n INCORRECT_LENGTH: 0x6700,\n INCORRECT_P1_P2: 0x6b00,\n INS_NOT_SUPPORTED: 0x6d00,\n DEVICE_NOT_ONBOARDED: 0x6d07,\n DEVICE_NOT_ONBOARDED_2: 0x6611,\n INVALID_KCV: 0x9485,\n INVALID_OFFSET: 0x9402,\n LICENSING: 0x6f42,\n LOCKED_DEVICE: 0x5515,\n MAX_VALUE_REACHED: 0x9850,\n MEMORY_PROBLEM: 0x9240,\n MISSING_CRITICAL_PARAMETER: 0x6800,\n NO_EF_SELECTED: 0x9400,\n NOT_ENOUGH_MEMORY_SPACE: 0x6a84,\n OK: 0x9000,\n PIN_REMAINING_ATTEMPTS: 0x63c0,\n REFERENCED_DATA_NOT_FOUND: 0x6a88,\n SECURITY_STATUS_NOT_SATISFIED: 0x6982,\n TECHNICAL_PROBLEM: 0x6f00,\n UNKNOWN_APDU: 0x6d02,\n USER_REFUSED_ON_DEVICE: 0x5501,\n NOT_ENOUGH_SPACE: 0x5102,\n APP_NOT_FOUND_OR_INVALID_CONTEXT: 0x5123,\n INVALID_APP_NAME_LENGTH: 0x670a,\n GEN_AES_KEY_FAILED: 0x5419,\n INTERNAL_CRYPTO_OPERATION_FAILED: 0x541a,\n INTERNAL_COMPUTE_AES_CMAC_FAILED: 0x541b,\n ENCRYPT_APP_STORAGE_FAILED: 0x541c,\n INVALID_BACKUP_STATE: 0x6642,\n PIN_NOT_SET: 0x5502,\n INVALID_BACKUP_LENGTH: 0x6733,\n INVALID_RESTORE_STATE: 0x6643,\n INVALID_CHUNK_LENGTH: 0x6734,\n INVALID_BACKUP_HEADER: 0x684a,\n\n // Not documented:\n TRUSTCHAIN_WRONG_SEED: 0xb007,\n};\n\nexport function getAltStatusMessage(code: number): string | undefined | null {\n switch (code) {\n // improve text of most common errors\n case 0x6700:\n return \"Incorrect length\";\n case 0x6800:\n return \"Missing critical parameter\";\n case 0x6982:\n return \"Security not satisfied (dongle locked or have invalid access rights)\";\n case 0x6985:\n return \"Condition of use not satisfied (denied by the user?)\";\n case 0x6a80:\n return \"Invalid data received\";\n case 0x6b00:\n return \"Invalid parameter received\";\n case 0x5515:\n return \"Locked device\";\n }\n if (0x6f00 <= code && code <= 0x6fff) {\n return \"Internal error, please report\";\n }\n}\n\n/**\n * Error thrown when a device returned a non success status.\n * the error.statusCode is one of the `StatusCodes` exported by this library.\n */\nexport class TransportStatusError extends Error {\n statusCode: number;\n statusText: string;\n\n /**\n * @param statusCode The error status code coming from a Transport implementation\n * @param options containing:\n * - canBeMappedToChildError: enable the mapping of TransportStatusError to an error extending/inheriting from it\n * . Ex: LockedDeviceError. Default to true.\n */\n constructor(\n statusCode: number,\n { canBeMappedToChildError = true }: { canBeMappedToChildError?: boolean } = {},\n ) {\n const statusText =\n Object.keys(StatusCodes).find(k => StatusCodes[k] === statusCode) || \"UNKNOWN_ERROR\";\n const smsg = getAltStatusMessage(statusCode) || statusText;\n const statusCodeStr = statusCode.toString(16);\n const message = `Ledger device: ${smsg} (0x${statusCodeStr})`;\n\n super(message);\n this.name = \"TransportStatusError\";\n\n this.statusCode = statusCode;\n this.statusText = statusText;\n\n Object.setPrototypeOf(this, TransportStatusError.prototype);\n\n // Maps to a LockedDeviceError\n if (canBeMappedToChildError && statusCode === StatusCodes.LOCKED_DEVICE) {\n return new LockedDeviceError(message);\n }\n }\n}\n\nexport class LockedDeviceError extends TransportStatusError {\n constructor(message?: string) {\n super(StatusCodes.LOCKED_DEVICE, { canBeMappedToChildError: false });\n if (message) {\n this.message = message;\n }\n this.name = \"LockedDeviceError\";\n Object.setPrototypeOf(this, LockedDeviceError.prototype);\n }\n}\n\n// Represents the type of the class TransportStatusError and its children\nexport type TransportStatusErrorClassType = typeof TransportStatusError | typeof LockedDeviceError;\n\naddCustomErrorDeserializer(\"TransportStatusError\", e => new TransportStatusError(e.statusCode));\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet converter;\n/**\n * Convert a little-endian buffer into a BigInt.\n * @param buf The little-endian buffer to convert\n * @returns A BigInt with the little-endian representation of buf.\n */\nfunction toBigIntLE(buf) {\n {\n const reversed = Buffer.from(buf);\n reversed.reverse();\n const hex = reversed.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, false);\n}\nexports.toBigIntLE = toBigIntLE;\n/**\n * Convert a big-endian buffer into a BigInt\n * @param buf The big-endian buffer to convert.\n * @returns A BigInt with the big-endian representation of buf.\n */\nfunction toBigIntBE(buf) {\n {\n const hex = buf.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, true);\n}\nexports.toBigIntBE = toBigIntBE;\n/**\n * Convert a BigInt to a little-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A little-endian buffer representation of num.\n */\nfunction toBufferLE(num, width) {\n {\n const hex = num.toString(16);\n const buffer = Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n buffer.reverse();\n return buffer;\n }\n // Allocation is done here, since it is slower using napi in C\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), false);\n}\nexports.toBufferLE = toBufferLE;\n/**\n * Convert a BigInt to a big-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A big-endian buffer representation of num.\n */\nfunction toBufferBE(num, width) {\n {\n const hex = num.toString(16);\n return Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n }\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), true);\n}\nexports.toBufferBE = toBufferBE;\n",null,"'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n",null,"import { Layout } from '@solana/buffer-layout';\nimport BigNumber from 'bignumber.js';\nimport { encodeDecode } from './base';\nimport { u128 } from './bigint';\n\nexport const WAD = new BigNumber('1e+18');\n\nexport const decimal = (property?: string): Layout => {\n const layout = u128(property);\n const { encode, decode } = encodeDecode(layout);\n\n const decimalLayout = layout as Layout as Layout;\n\n decimalLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset).toString();\n return new BigNumber(src).div(WAD);\n };\n\n decimalLayout.encode = (decimal: BigNumber, buffer: Buffer, offset: number) => {\n const src = BigInt(decimal.times(WAD).integerValue().toString());\n return encode(src, buffer, offset);\n };\n\n return decimalLayout;\n};\n","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.blackjack = void 0;\r\nconst utils_1 = require(\"./utils\");\r\n// add inputs until we reach or surpass the target value (or deplete)\r\n// worst-case: O(n)\r\nfunction blackjack(utxos, outputs, feeRate, type) {\r\n if (!isFinite(utils_1.utils.uintOrNaN(feeRate)))\r\n return null;\r\n let bytesAccum = utils_1.utils.transactionBytes([], outputs, type);\r\n let inAccum = 0;\r\n let cpfpAddFee = 0;\r\n const inputs = [];\r\n const outAccum = utils_1.utils.sumOrNaN(outputs);\r\n const threshold = utils_1.utils.dustThreshold({ type });\r\n for (let i = 0; i < utxos.length; ++i) {\r\n const input = utxos[i];\r\n const inputBytes = utils_1.utils.inputBytes(input);\r\n let cpfpFee = 0;\r\n if (input.cpfp != null && input.cpfp.txEffectiveFeeRate < feeRate)\r\n cpfpFee = input.cpfp.txVsize * (feeRate - input.cpfp.txEffectiveFeeRate);\r\n const fee = (feeRate * (bytesAccum + inputBytes)) + cpfpAddFee + cpfpFee;\r\n const inputValue = utils_1.utils.uintOrNaN(input.value);\r\n // would it waste value?\r\n if ((inAccum + inputValue) > (outAccum + fee + threshold))\r\n continue;\r\n bytesAccum += inputBytes;\r\n inAccum += inputValue;\r\n cpfpAddFee += cpfpFee;\r\n inputs.push(input);\r\n // go again?\r\n if (inAccum < outAccum + fee)\r\n continue;\r\n return utils_1.utils.finalize(inputs, outputs, feeRate, type, cpfpAddFee);\r\n }\r\n return { fee: (feeRate * bytesAccum) + cpfpAddFee };\r\n}\r\nexports.blackjack = blackjack;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaSwapModule = void 0;\r\nconst SolanaModule_1 = require(\"../base/SolanaModule\");\r\nclass SolanaSwapModule extends SolanaModule_1.SolanaModule {\r\n constructor(root) {\r\n super(root);\r\n this.root = root;\r\n this.program = root.program;\r\n }\r\n}\r\nexports.SolanaSwapModule = SolanaSwapModule;\r\n","// the whatwg-fetch polyfill installs the fetch() function\n// on the global object (window or self)\n//\n// Return that as the export for use in Webpack, Browserify etc.\nrequire('whatwg-fetch');\nmodule.exports = self.fetch.bind(self);\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.poseidonHashMany = exports.poseidonHashSingle = exports.poseidonHashFunc = exports.poseidonHash = exports.poseidonSmall = exports.poseidonCreate = exports.poseidonBasic = exports._poseidonMDS = exports.Fp251 = exports.keccak = exports.computeHashOnElements = exports.pedersen = exports.getAccountPath = exports.ethSigToPrivate = exports.getStarkKey = exports.grindKey = exports.utils = exports.Signature = exports.ProjectivePoint = exports.CURVE = exports.verify = exports.sign = exports.getSharedSecret = exports.getPublicKey = exports._starkCurve = exports.MAX_VALUE = void 0;\nconst sha3_1 = require(\"@noble/hashes/sha3\");\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nconst utils_1 = require(\"@noble/hashes/utils\");\nconst modular_1 = require(\"@noble/curves/abstract/modular\");\nconst poseidon_1 = require(\"@noble/curves/abstract/poseidon\");\nconst weierstrass_1 = require(\"@noble/curves/abstract/weierstrass\");\nconst u = require(\"@noble/curves/abstract/utils\");\nconst _shortw_utils_1 = require(\"@noble/curves/_shortw_utils\");\nconst CURVE_ORDER = BigInt('3618502788666131213697322783095070105526743751716087489154079457884512865583');\nexports.MAX_VALUE = BigInt('0x800000000000000000000000000000000000000000000000000000000000000');\nconst nBitLength = 252;\nfunction bits2int(bytes) {\n while (bytes[0] === 0)\n bytes = bytes.subarray(1);\n const delta = bytes.length * 8 - nBitLength;\n const num = u.bytesToNumberBE(bytes);\n return delta > 0 ? num >> BigInt(delta) : num;\n}\nfunction hex0xToBytes(hex) {\n if (typeof hex === 'string') {\n hex = strip0x(hex);\n if (hex.length & 1)\n hex = '0' + hex;\n }\n return u.hexToBytes(hex);\n}\nconst curve = (0, weierstrass_1.weierstrass)({\n a: BigInt(1),\n b: BigInt('3141592653589793238462643383279502884197169399375105820974944592307816406665'),\n Fp: (0, modular_1.Field)(BigInt('0x800000000000011000000000000000000000000000000000000000000000001')),\n n: CURVE_ORDER,\n nBitLength,\n Gx: BigInt('874739451078007766457464989774322083649278607533249481151382481072868806602'),\n Gy: BigInt('152666792071518830868575557812948353041420400780739481342941381225525861407'),\n h: BigInt(1),\n lowS: false,\n ...(0, _shortw_utils_1.getHash)(sha256_1.sha256),\n bits2int,\n bits2int_modN: (bytes) => {\n const hex = u.bytesToNumberBE(bytes).toString(16);\n if (hex.length === 63)\n bytes = hex0xToBytes(hex + '0');\n return (0, modular_1.mod)(bits2int(bytes), CURVE_ORDER);\n },\n});\nexports._starkCurve = curve;\nfunction ensureBytes(hex) {\n return u.ensureBytes('', typeof hex === 'string' ? hex0xToBytes(hex) : hex);\n}\nfunction normPrivKey(privKey) {\n return u.bytesToHex(ensureBytes(privKey)).padStart(64, '0');\n}\nfunction getPublicKey(privKey, isCompressed = false) {\n return curve.getPublicKey(normPrivKey(privKey), isCompressed);\n}\nexports.getPublicKey = getPublicKey;\nfunction getSharedSecret(privKeyA, pubKeyB) {\n return curve.getSharedSecret(normPrivKey(privKeyA), pubKeyB);\n}\nexports.getSharedSecret = getSharedSecret;\nfunction checkSignature(signature) {\n const { r, s } = signature;\n if (r < 0n || r >= exports.MAX_VALUE)\n throw new Error(`Signature.r should be [1, ${exports.MAX_VALUE})`);\n const w = (0, modular_1.invert)(s, CURVE_ORDER);\n if (w < 0n || w >= exports.MAX_VALUE)\n throw new Error(`inv(Signature.s) should be [1, ${exports.MAX_VALUE})`);\n}\nfunction checkMessage(msgHash) {\n const bytes = ensureBytes(msgHash);\n const num = u.bytesToNumberBE(bytes);\n if (num >= exports.MAX_VALUE)\n throw new Error(`msgHash should be [0, ${exports.MAX_VALUE})`);\n return bytes;\n}\nfunction sign(msgHash, privKey, opts) {\n const sig = curve.sign(checkMessage(msgHash), normPrivKey(privKey), opts);\n checkSignature(sig);\n return sig;\n}\nexports.sign = sign;\nfunction verify(signature, msgHash, pubKey) {\n if (!(signature instanceof Signature)) {\n const bytes = ensureBytes(signature);\n try {\n signature = Signature.fromDER(bytes);\n }\n catch (derError) {\n if (!(derError instanceof weierstrass_1.DER.Err))\n throw derError;\n signature = Signature.fromCompact(bytes);\n }\n }\n checkSignature(signature);\n return curve.verify(signature, checkMessage(msgHash), ensureBytes(pubKey));\n}\nexports.verify = verify;\nconst { CURVE, ProjectivePoint, Signature, utils } = curve;\nexports.CURVE = CURVE;\nexports.ProjectivePoint = ProjectivePoint;\nexports.Signature = Signature;\nexports.utils = utils;\nfunction extractX(bytes) {\n const hex = u.bytesToHex(bytes.subarray(1));\n const stripped = hex.replace(/^0+/gm, '');\n return `0x${stripped}`;\n}\nfunction strip0x(hex) {\n return hex.replace(/^0x/i, '');\n}\nfunction grindKey(seed) {\n const _seed = ensureBytes(seed);\n const sha256mask = 2n ** 256n;\n const limit = sha256mask - (0, modular_1.mod)(sha256mask, CURVE_ORDER);\n for (let i = 0;; i++) {\n const key = sha256Num(u.concatBytes(_seed, u.numberToVarBytesBE(BigInt(i))));\n if (key < limit)\n return (0, modular_1.mod)(key, CURVE_ORDER).toString(16);\n if (i === 100000)\n throw new Error('grindKey is broken: tried 100k vals');\n }\n}\nexports.grindKey = grindKey;\nfunction getStarkKey(privateKey) {\n return extractX(getPublicKey(privateKey, true));\n}\nexports.getStarkKey = getStarkKey;\nfunction ethSigToPrivate(signature) {\n signature = strip0x(signature);\n if (signature.length !== 130)\n throw new Error('Wrong ethereum signature');\n return grindKey(signature.substring(0, 64));\n}\nexports.ethSigToPrivate = ethSigToPrivate;\nconst MASK_31 = 2n ** 31n - 1n;\nconst int31 = (n) => Number(n & MASK_31);\nfunction getAccountPath(layer, application, ethereumAddress, index) {\n const layerNum = int31(sha256Num(layer));\n const applicationNum = int31(sha256Num(application));\n const eth = u.hexToNumber(strip0x(ethereumAddress));\n return `m/2645'/${layerNum}'/${applicationNum}'/${int31(eth)}'/${int31(eth >> 31n)}'/${index}`;\n}\nexports.getAccountPath = getAccountPath;\nconst PEDERSEN_POINTS = [\n new ProjectivePoint(2089986280348253421170679821480865132823066470938446095505822317253594081284n, 1713931329540660377023406109199410414810705867260802078187082345529207694986n, 1n),\n new ProjectivePoint(996781205833008774514500082376783249102396023663454813447423147977397232763n, 1668503676786377725805489344771023921079126552019160156920634619255970485781n, 1n),\n new ProjectivePoint(2251563274489750535117886426533222435294046428347329203627021249169616184184n, 1798716007562728905295480679789526322175868328062420237419143593021674992973n, 1n),\n new ProjectivePoint(2138414695194151160943305727036575959195309218611738193261179310511854807447n, 113410276730064486255102093846540133784865286929052426931474106396135072156n, 1n),\n new ProjectivePoint(2379962749567351885752724891227938183011949129833673362440656643086021394946n, 776496453633298175483985398648758586525933812536653089401905292063708816422n, 1n),\n];\nfunction pedersenPrecompute(p1, p2) {\n const out = [];\n let p = p1;\n for (let i = 0; i < 248; i++) {\n out.push(p);\n p = p.double();\n }\n p = p2;\n for (let i = 0; i < 4; i++) {\n out.push(p);\n p = p.double();\n }\n return out;\n}\nconst PEDERSEN_POINTS1 = pedersenPrecompute(PEDERSEN_POINTS[1], PEDERSEN_POINTS[2]);\nconst PEDERSEN_POINTS2 = pedersenPrecompute(PEDERSEN_POINTS[3], PEDERSEN_POINTS[4]);\nfunction pedersenArg(arg) {\n let value;\n if (typeof arg === 'bigint') {\n value = arg;\n }\n else if (typeof arg === 'number') {\n if (!Number.isSafeInteger(arg))\n throw new Error(`Invalid pedersenArg: ${arg}`);\n value = BigInt(arg);\n }\n else {\n value = u.bytesToNumberBE(ensureBytes(arg));\n }\n if (!(0n <= value && value < curve.CURVE.Fp.ORDER))\n throw new Error(`PedersenArg should be 0 <= value < CURVE.P: ${value}`);\n return value;\n}\nfunction pedersenSingle(point, value, constants) {\n let x = pedersenArg(value);\n for (let j = 0; j < 252; j++) {\n const pt = constants[j];\n if (pt.equals(point))\n throw new Error('Same point');\n if ((x & 1n) !== 0n)\n point = point.add(pt);\n x >>= 1n;\n }\n return point;\n}\nfunction pedersen(x, y) {\n let point = PEDERSEN_POINTS[0];\n point = pedersenSingle(point, x, PEDERSEN_POINTS1);\n point = pedersenSingle(point, y, PEDERSEN_POINTS2);\n return extractX(point.toRawBytes(true));\n}\nexports.pedersen = pedersen;\nconst computeHashOnElements = (data, fn = pedersen) => [0, ...data, data.length].reduce((x, y) => fn(x, y));\nexports.computeHashOnElements = computeHashOnElements;\nconst MASK_250 = u.bitMask(250);\nconst keccak = (data) => u.bytesToNumberBE((0, sha3_1.keccak_256)(data)) & MASK_250;\nexports.keccak = keccak;\nconst sha256Num = (data) => u.bytesToNumberBE((0, sha256_1.sha256)(data));\nexports.Fp251 = (0, modular_1.Field)(BigInt('3618502788666131213697322783095070105623107215331596699973092056135872020481'));\nfunction poseidonRoundConstant(Fp, name, idx) {\n const val = Fp.fromBytes((0, sha256_1.sha256)((0, utils_1.utf8ToBytes)(`${name}${idx}`)));\n return Fp.create(val);\n}\nfunction _poseidonMDS(Fp, name, m, attempt = 0) {\n const x_values = [];\n const y_values = [];\n for (let i = 0; i < m; i++) {\n x_values.push(poseidonRoundConstant(Fp, `${name}x`, attempt * m + i));\n y_values.push(poseidonRoundConstant(Fp, `${name}y`, attempt * m + i));\n }\n if (new Set([...x_values, ...y_values]).size !== 2 * m)\n throw new Error('X and Y values are not distinct');\n return x_values.map((x) => y_values.map((y) => Fp.inv(Fp.sub(x, y))));\n}\nexports._poseidonMDS = _poseidonMDS;\nconst MDS_SMALL = [\n [3, 1, 1],\n [1, -1, 1],\n [1, 1, -2],\n].map((i) => i.map(BigInt));\nfunction poseidonBasic(opts, mds) {\n (0, modular_1.validateField)(opts.Fp);\n if (!Number.isSafeInteger(opts.rate) || !Number.isSafeInteger(opts.capacity))\n throw new Error(`Wrong poseidon opts: ${opts}`);\n const m = opts.rate + opts.capacity;\n const rounds = opts.roundsFull + opts.roundsPartial;\n const roundConstants = [];\n for (let i = 0; i < rounds; i++) {\n const row = [];\n for (let j = 0; j < m; j++)\n row.push(poseidonRoundConstant(opts.Fp, 'Hades', m * i + j));\n roundConstants.push(row);\n }\n const res = (0, poseidon_1.poseidon)({\n ...opts,\n t: m,\n sboxPower: 3,\n reversePartialPowIdx: true,\n mds,\n roundConstants,\n });\n res.m = m;\n res.rate = opts.rate;\n res.capacity = opts.capacity;\n return res;\n}\nexports.poseidonBasic = poseidonBasic;\nfunction poseidonCreate(opts, mdsAttempt = 0) {\n const m = opts.rate + opts.capacity;\n if (!Number.isSafeInteger(mdsAttempt))\n throw new Error(`Wrong mdsAttempt=${mdsAttempt}`);\n return poseidonBasic(opts, _poseidonMDS(opts.Fp, 'HadesMDS', m, mdsAttempt));\n}\nexports.poseidonCreate = poseidonCreate;\nexports.poseidonSmall = poseidonBasic({ Fp: exports.Fp251, rate: 2, capacity: 1, roundsFull: 8, roundsPartial: 83 }, MDS_SMALL);\nfunction poseidonHash(x, y, fn = exports.poseidonSmall) {\n return fn([x, y, 2n])[0];\n}\nexports.poseidonHash = poseidonHash;\nfunction poseidonHashFunc(x, y, fn = exports.poseidonSmall) {\n return u.numberToVarBytesBE(poseidonHash(u.bytesToNumberBE(x), u.bytesToNumberBE(y), fn));\n}\nexports.poseidonHashFunc = poseidonHashFunc;\nfunction poseidonHashSingle(x, fn = exports.poseidonSmall) {\n return fn([x, 0n, 1n])[0];\n}\nexports.poseidonHashSingle = poseidonHashSingle;\nfunction poseidonHashMany(values, fn = exports.poseidonSmall) {\n const { m, rate } = fn;\n if (!Array.isArray(values))\n throw new Error('bigint array expected in values');\n const padded = Array.from(values);\n padded.push(1n);\n while (padded.length % rate !== 0)\n padded.push(0n);\n let state = new Array(m).fill(0n);\n for (let i = 0; i < padded.length; i += rate) {\n for (let j = 0; j < rate; j++)\n state[j] += padded[i + j];\n state = fn(state);\n }\n return state[0];\n}\nexports.poseidonHashMany = poseidonHashMany;\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__exportStar(require(\"./solana/btcrelay/headers/SolanaBtcHeader\"), exports);\r\n__exportStar(require(\"./solana/btcrelay/headers/SolanaBtcStoredHeader\"), exports);\r\n__exportStar(require(\"./solana/btcrelay/SolanaBtcRelay\"), exports);\r\n__exportStar(require(\"./solana/base/modules/SolanaAddresses\"), exports);\r\n__exportStar(require(\"./solana/base/modules/SolanaBlocks\"), exports);\r\n__exportStar(require(\"./solana/base/modules/SolanaEvents\"), exports);\r\n__exportStar(require(\"./solana/base/modules/SolanaFees\"), exports);\r\n__exportStar(require(\"./solana/base/modules/SolanaSignatures\"), exports);\r\n__exportStar(require(\"./solana/base/modules/SolanaSlots\"), exports);\r\n__exportStar(require(\"./solana/base/modules/SolanaTokens\"), exports);\r\n__exportStar(require(\"./solana/base/modules/SolanaTransactions\"), exports);\r\n__exportStar(require(\"./solana/base/SolanaAction\"), exports);\r\n__exportStar(require(\"./solana/base/SolanaBase\"), exports);\r\n__exportStar(require(\"./solana/base/SolanaModule\"), exports);\r\n__exportStar(require(\"./solana/program/modules/SolanaProgramEvents\"), exports);\r\n__exportStar(require(\"./solana/program/SolanaProgramBase\"), exports);\r\n__exportStar(require(\"./solana/swaps/SolanaSwapProgram\"), exports);\r\n__exportStar(require(\"./solana/swaps/SolanaSwapData\"), exports);\r\n__exportStar(require(\"./solana/swaps/SolanaSwapModule\"), exports);\r\n__exportStar(require(\"./solana/swaps/modules/SolanaDataAccount\"), exports);\r\n__exportStar(require(\"./solana/swaps/modules/SolanaLpVault\"), exports);\r\n__exportStar(require(\"./solana/swaps/modules/SwapClaim\"), exports);\r\n__exportStar(require(\"./solana/swaps/modules/SwapInit\"), exports);\r\n__exportStar(require(\"./solana/swaps/modules/SwapRefund\"), exports);\r\n__exportStar(require(\"./solana/wallet/SolanaKeypairWallet\"), exports);\r\n__exportStar(require(\"./solana/wallet/SolanaSigner\"), exports);\r\n__exportStar(require(\"./solana/SolanaChainType\"), exports);\r\n__exportStar(require(\"./solana/SolanaInitializer\"), exports);\r\n__exportStar(require(\"./utils/Utils\"), exports);\r\n","module.exports = /([a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0561-\\u0587\\u13F8-\\u13FD\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7B5\\uA7B7\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB65\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19])([A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AD\\uA7B0-\\uA7B4\\uA7B6\\uFF21-\\uFF3A])/g\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_refresh = void 0;\nvar ic_refresh = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"\n },\n \"children\": []\n }]\n};\nexports.ic_refresh = ic_refresh;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OKXPriceProvider = void 0;\r\nconst ExchangePriceProvider_1 = require(\"./abstract/ExchangePriceProvider\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass OKXPriceProvider extends ExchangePriceProvider_1.ExchangePriceProvider {\r\n constructor(coinsMap, url = \"https://www.okx.com/api/v5\", httpRequestTimeout) {\r\n super(coinsMap, url, httpRequestTimeout);\r\n }\r\n async fetchPair(pair, abortSignal) {\r\n const response = await (0, Utils_1.httpGet)(this.url + \"/market/index-tickers?instId=\" + pair, this.httpRequestTimeout, abortSignal);\r\n return parseFloat(response.data[0].idxPx);\r\n }\r\n async fetchUsdPrice(abortSignal) {\r\n const response = await (0, Utils_1.httpGet)(this.url + \"/market/index-tickers?instId=BTC-USD\", this.httpRequestTimeout, abortSignal);\r\n return parseFloat(response.data[0].idxPx) / 100000000;\r\n }\r\n}\r\nexports.OKXPriceProvider = OKXPriceProvider;\r\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { bytes as abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n// The rotate left (circular left shift) operation for uint32\nexport const rotl = (word: number, shift: number) =>\n (word << shift) | ((word >>> (32 - shift)) >>> 0);\n\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// The byte swap operation for uint32\nexport const byteSwap = (word: number) =>\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n// Conditionally byte swap if on a big-endian platform\nexport const byteSwapIfBE = isLE ? (n: number) => n : (n: number) => byteSwap(n);\n\n// In place byte swap for Uint32Array\nexport function byteSwap32(arr: Uint32Array) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","/*! scure-btc-signer - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n compareBytes,\n concatBytes,\n isBytes,\n pubSchnorr,\n randomPrivateKeyBytes,\n taprootTweakPubkey,\n} from './utils.js';\n// should multisig be exported as classicMultisig?\n// prettier-ignore\nexport {\n multisig,\n p2ms, p2pk, p2pkh, p2sh, p2tr, p2tr_ms, p2tr_ns, p2tr_pk, p2wpkh, p2wsh\n} from './payment.js';\nexport {\n CompactSize,\n MAX_SCRIPT_BYTE_LENGTH,\n OP,\n RawTx,\n RawWitness,\n Script,\n ScriptNum,\n} from './script.js';\nexport type { ScriptType } from './script.js';\nexport { Transaction } from './transaction.js';\nexport { NETWORK, TAPROOT_UNSPENDABLE_KEY, TEST_NETWORK } from './utils.js';\nexport { getInputType, selectUTXO } from './utxo.js';\n\nexport const utils = {\n isBytes,\n concatBytes,\n compareBytes,\n pubSchnorr,\n randomPrivateKeyBytes,\n taprootTweakPubkey,\n};\n\nexport {\n _sortPubkeys,\n Address,\n combinations,\n getAddress,\n OutScript,\n sortedMultisig,\n taprootListToTree,\n WIF,\n} from './payment.js'; // remove\n// remove\nexport type { CustomScript, OptScript } from './payment.js';\nexport { _DebugPSBT, TaprootControlBlock } from './psbt.js'; // remove\nexport { bip32Path, Decimal, DEFAULT_SEQUENCE, PSBTCombine, SigHash } from './transaction.js'; // remove\nexport { _cmpBig, _Estimator } from './utxo.js';\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetTransactions = void 0;\r\nconst StarknetModule_1 = require(\"../StarknetModule\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nclass StarknetTransactions extends StarknetModule_1.StarknetModule {\r\n /**\r\n * Waits for transaction confirmation using WS subscription and occasional HTTP polling, also re-sends\r\n * the transaction at regular interval\r\n *\r\n * @param tx starknet transaction to wait for confirmation for & keep re-sending until it confirms\r\n * @param abortSignal signal to abort waiting for tx confirmation\r\n * @private\r\n */\r\n async confirmTransaction(tx, abortSignal) {\r\n let state = \"pending\";\r\n while (state === \"pending\" || state === \"not_found\") {\r\n await (0, Utils_1.timeoutPromise)(3, abortSignal);\r\n state = await this.getTxIdStatus(tx.txId);\r\n if (state === \"not_found\" && tx.signed != null)\r\n await this.sendSignedTransaction(tx, undefined, undefined, false).catch(e => {\r\n if (e.message != null && e.message.includes(\"59: A transaction with the same hash already exists in the mempool\"))\r\n return;\r\n console.error(\"Error on transaction re-send: \", e);\r\n });\r\n }\r\n if (state === \"reverted\")\r\n throw new Error(\"Transaction reverted!\");\r\n }\r\n /**\r\n * Prepares starknet transactions, checks if the account is deployed, assigns nonces if needed & calls beforeTxSigned callback\r\n *\r\n * @param signer\r\n * @param txs\r\n * @private\r\n */\r\n async prepareTransactions(signer, txs) {\r\n let nonce = await signer.getNonce();\r\n if (nonce === BigInt(0) && signer.isWalletAccount()) {\r\n //Just increment the nonce by one and hope the wallet is smart enough to deploy account first\r\n nonce = BigInt(1);\r\n }\r\n const deployPayload = await signer.checkAndGetDeployPayload(nonce);\r\n if (deployPayload != null) {\r\n txs.unshift(await this.root.Accounts.getAccountDeployTransaction(deployPayload));\r\n }\r\n for (let i = 0; i < txs.length; i++) {\r\n const tx = txs[i];\r\n if (tx.details.nonce != null)\r\n nonce = BigInt(tx.details.nonce); //Take the nonce from last tx\r\n if (nonce == null)\r\n nonce = BigInt(await this.root.provider.getNonceForAddress(signer.getAddress())); //Fetch the nonce\r\n if (tx.details.nonce == null)\r\n tx.details.nonce = nonce;\r\n this.logger.debug(\"sendAndConfirm(): transaction prepared (\" + (i + 1) + \"/\" + txs.length + \"), nonce: \" + tx.details.nonce);\r\n nonce += BigInt(1);\r\n if (this.cbkBeforeTxSigned != null)\r\n await this.cbkBeforeTxSigned(tx);\r\n }\r\n }\r\n /**\r\n * Sends out a signed transaction to the RPC\r\n *\r\n * @param tx Starknet tx to send\r\n * @param onBeforePublish a callback called before every transaction is published\r\n * @param signer\r\n * @param retryOnSubmissionFailure\r\n * @private\r\n */\r\n async sendSignedTransaction(tx, onBeforePublish, signer, retryOnSubmissionFailure = true) {\r\n if (onBeforePublish != null)\r\n await onBeforePublish(tx.txId, await this.serializeTx(tx));\r\n this.logger.debug(\"sendSignedTransaction(): sending transaction: \", tx);\r\n if (tx.signed == null) {\r\n let txHash;\r\n switch (tx.type) {\r\n case \"INVOKE\":\r\n txHash = (await signer.account.execute(tx.tx, tx.details)).transaction_hash;\r\n break;\r\n case \"DEPLOY_ACCOUNT\":\r\n txHash = (await signer.account.deployAccount(tx.tx, tx.details)).transaction_hash;\r\n break;\r\n default:\r\n throw new Error(\"Unsupported tx type!\");\r\n }\r\n tx.txId = txHash;\r\n return txHash;\r\n }\r\n const txResult = await (0, Utils_1.tryWithRetries)(() => {\r\n switch (tx.type) {\r\n case \"INVOKE\":\r\n return this.provider.channel.invoke(tx.signed, tx.details).then(res => res.transaction_hash);\r\n case \"DEPLOY_ACCOUNT\":\r\n return this.provider.channel.deployAccount(tx.signed, tx.details).then((res) => res.transaction_hash);\r\n default:\r\n throw new Error(\"Unsupported tx type!\");\r\n }\r\n }, retryOnSubmissionFailure ? this.retryPolicy : { maxRetries: 1 });\r\n if (tx.txId !== txResult)\r\n this.logger.warn(\"sendSignedTransaction(): sent tx hash not matching the precomputed hash!\");\r\n this.logger.info(\"sendSignedTransaction(): tx sent, expected txHash: \" + tx.txId + \", txHash: \" + txResult);\r\n return txResult;\r\n }\r\n /**\r\n * Prepares, signs , sends (in parallel or sequentially) & optionally waits for confirmation\r\n * of a batch of starknet transactions\r\n *\r\n * @param signer\r\n * @param txs transactions to send\r\n * @param waitForConfirmation whether to wait for transaction confirmations (this also makes sure the transactions\r\n * are re-sent at regular intervals)\r\n * @param abortSignal abort signal to abort waiting for transaction confirmations\r\n * @param parallel whether the send all the transaction at once in parallel or sequentially (such that transactions\r\n * are executed in order)\r\n * @param onBeforePublish a callback called before every transaction is published\r\n */\r\n async sendAndConfirm(signer, txs, waitForConfirmation, abortSignal, parallel, onBeforePublish) {\r\n await this.prepareTransactions(signer, txs);\r\n if (!signer.isWalletAccount()) {\r\n for (let i = 0; i < txs.length; i++) {\r\n const tx = txs[i];\r\n switch (tx.type) {\r\n case \"INVOKE\":\r\n tx.signed = await signer.account.buildInvocation(tx.tx, tx.details);\r\n (0, Utils_1.calculateHash)(tx);\r\n break;\r\n case \"DEPLOY_ACCOUNT\":\r\n tx.signed = await signer.account.buildAccountDeployPayload(tx.tx, tx.details);\r\n (0, Utils_1.calculateHash)(tx);\r\n break;\r\n default:\r\n throw new Error(\"Unsupported tx type!\");\r\n }\r\n this.logger.debug(\"sendAndConfirm(): transaction signed (\" + (i + 1) + \"/\" + txs.length + \"): \" + tx.txId);\r\n }\r\n }\r\n this.logger.debug(\"sendAndConfirm(): sending transactions, count: \" + txs.length +\r\n \" waitForConfirmation: \" + waitForConfirmation + \" parallel: \" + parallel);\r\n const txIds = [];\r\n if (parallel) {\r\n const promises = [];\r\n for (let i = 0; i < txs.length; i++) {\r\n const signedTx = txs[i];\r\n const txId = await this.sendSignedTransaction(signedTx, onBeforePublish, signer);\r\n if (waitForConfirmation)\r\n promises.push(this.confirmTransaction(signedTx, abortSignal));\r\n txIds.push(txId);\r\n this.logger.debug(\"sendAndConfirm(): transaction sent (\" + (i + 1) + \"/\" + txs.length + \"): \" + signedTx.txId);\r\n }\r\n if (promises.length > 0)\r\n await Promise.all(promises);\r\n }\r\n else {\r\n for (let i = 0; i < txs.length; i++) {\r\n const signedTx = txs[i];\r\n const txId = await this.sendSignedTransaction(signedTx, onBeforePublish, signer);\r\n const confirmPromise = this.confirmTransaction(signedTx, abortSignal);\r\n this.logger.debug(\"sendAndConfirm(): transaction sent (\" + (i + 1) + \"/\" + txs.length + \"): \" + signedTx.txId);\r\n //Don't await the last promise when !waitForConfirmation\r\n if (i < txs.length - 1 || waitForConfirmation)\r\n await confirmPromise;\r\n txIds.push(txId);\r\n }\r\n }\r\n this.logger.info(\"sendAndConfirm(): sent transactions, count: \" + txs.length +\r\n \" waitForConfirmation: \" + waitForConfirmation + \" parallel: \" + parallel);\r\n return txIds;\r\n }\r\n /**\r\n * Serializes the solana transaction, saves the transaction, signers & last valid blockheight\r\n *\r\n * @param tx\r\n */\r\n serializeTx(tx) {\r\n return Promise.resolve(JSON.stringify(tx, (key, value) => {\r\n if (typeof (value) === \"bigint\")\r\n return (0, Utils_1.toHex)(value);\r\n return value;\r\n }));\r\n }\r\n /**\r\n * Deserializes saved solana transaction, extracting the transaction, signers & last valid blockheight\r\n *\r\n * @param txData\r\n */\r\n deserializeTx(txData) {\r\n return Promise.resolve(JSON.parse(txData));\r\n }\r\n /**\r\n * Gets the status of the raw starknet transaction\r\n *\r\n * @param tx\r\n */\r\n async getTxStatus(tx) {\r\n const parsedTx = await this.deserializeTx(tx);\r\n return await this.getTxIdStatus(parsedTx.txId);\r\n }\r\n /**\r\n * Gets the status of the starknet transaction with a specific txId\r\n *\r\n * @param txId\r\n */\r\n async getTxIdStatus(txId) {\r\n const status = await this.provider.getTransactionStatus(txId).catch(e => {\r\n if (e.message != null && e.message.includes(\"29: Transaction hash not found\"))\r\n return null;\r\n throw e;\r\n });\r\n if (status == null)\r\n return \"not_found\";\r\n if (status.finality_status === \"RECEIVED\")\r\n return \"pending\";\r\n if (status.finality_status !== \"REJECTED\" && status.execution_status === \"SUCCEEDED\") {\r\n return \"success\";\r\n }\r\n return \"reverted\";\r\n }\r\n onBeforeTxSigned(callback) {\r\n this.cbkBeforeTxSigned = callback;\r\n }\r\n offBeforeTxSigned(callback) {\r\n this.cbkBeforeTxSigned = null;\r\n return true;\r\n }\r\n}\r\nexports.StarknetTransactions = StarknetTransactions;\r\n","/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj } from './_md.js';\nimport { type CHash, rotr, wrapConstructor } from './utils.js';\n\n/** Round constants: first 32 bits of fractional parts of the cube roots of the first 64 primes 2..311). */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/** Initial state: first 32 bits of fractional parts of the square roots of the first 8 primes 2..19. */\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n\n/**\n * Temporary buffer, not used to store anything between runs.\n * Named this way because it matches specification.\n */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected A: number = SHA256_IV[0] | 0;\n protected B: number = SHA256_IV[1] | 0;\n protected C: number = SHA256_IV[2] | 0;\n protected D: number = SHA256_IV[3] | 0;\n protected E: number = SHA256_IV[4] | 0;\n protected F: number = SHA256_IV[5] | 0;\n protected G: number = SHA256_IV[6] | 0;\n protected H: number = SHA256_IV[7] | 0;\n\n constructor() {\n super(64, 32, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ): void {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean(): void {\n SHA256_W.fill(0);\n }\n destroy(): void {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n\n/**\n * Constants taken from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf.\n */\nclass SHA224 extends SHA256 {\n protected A = 0xc1059ed8 | 0;\n protected B = 0x367cd507 | 0;\n protected C = 0x3070dd17 | 0;\n protected D = 0xf70e5939 | 0;\n protected E = 0xffc00b31 | 0;\n protected F = 0x68581511 | 0;\n protected G = 0x64f98fa7 | 0;\n protected H = 0xbefa4fa4 | 0;\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\n/** SHA2-256 hash function */\nexport const sha256: CHash = /* @__PURE__ */ wrapConstructor(() => new SHA256());\n/** SHA2-224 hash function */\nexport const sha224: CHash = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LNURL = exports.MAIL_REGEX = exports.BASE64_REGEX = exports.isLNURLPaySuccessAction = exports.isLNURLPayResult = exports.isLNURLWithdrawParams = exports.isLNURLPayParams = exports.isLNURLError = exports.isLNURLWithdraw = exports.isLNURLPay = void 0;\r\nconst RequestError_1 = require(\"../errors/RequestError\");\r\nconst bolt11_1 = require(\"@atomiqlabs/bolt11\");\r\nconst createHash = require(\"create-hash\");\r\nconst UserError_1 = require(\"../errors/UserError\");\r\nconst Utils_1 = require(\"./Utils\");\r\nconst bech32_1 = require(\"bech32\");\r\nconst aes_js_1 = require(\"aes-js\");\r\nconst buffer_1 = require(\"buffer\");\r\nfunction isLNURLPay(value) {\r\n return (typeof value === \"object\" &&\r\n value != null &&\r\n value.type === \"pay\" &&\r\n typeof (value.min) === \"bigint\" &&\r\n typeof (value.max) === \"bigint\" &&\r\n typeof value.commentMaxLength === \"number\" &&\r\n typeof value.shortDescription === \"string\" &&\r\n (value.longDescription === undefined || typeof value.longDescription === \"string\") &&\r\n (value.icon === undefined || typeof value.icon === \"string\") &&\r\n isLNURLPayParams(value.params));\r\n}\r\nexports.isLNURLPay = isLNURLPay;\r\nfunction isLNURLWithdraw(value) {\r\n return (typeof value === \"object\" &&\r\n value != null &&\r\n value.type === \"withdraw\" &&\r\n typeof (value.min) === \"bigint\" &&\r\n typeof (value.max) === \"bigint\" &&\r\n isLNURLWithdrawParams(value.params));\r\n}\r\nexports.isLNURLWithdraw = isLNURLWithdraw;\r\nfunction isLNURLError(obj) {\r\n return obj.status === \"ERROR\" &&\r\n (obj.reason == null || typeof obj.reason === \"string\");\r\n}\r\nexports.isLNURLError = isLNURLError;\r\nfunction isLNURLPayParams(obj) {\r\n return obj.tag === \"payRequest\";\r\n}\r\nexports.isLNURLPayParams = isLNURLPayParams;\r\nfunction isLNURLWithdrawParams(obj) {\r\n return obj.tag === \"withdrawRequest\";\r\n}\r\nexports.isLNURLWithdrawParams = isLNURLWithdrawParams;\r\nfunction isLNURLPayResult(obj, domain) {\r\n return typeof obj.pr === \"string\" &&\r\n (obj.routes == null || Array.isArray(obj.routes)) &&\r\n (obj.disposable === null || obj.disposable === undefined || typeof obj.disposable === \"boolean\") &&\r\n (obj.successAction == null || isLNURLPaySuccessAction(obj.successAction, domain));\r\n}\r\nexports.isLNURLPayResult = isLNURLPayResult;\r\nfunction isLNURLPaySuccessAction(obj, domain) {\r\n if (obj == null || typeof obj !== 'object' || typeof obj.tag !== 'string')\r\n return false;\r\n switch (obj.tag) {\r\n case \"message\":\r\n return obj.message != null && obj.message.length <= 144;\r\n case \"url\":\r\n return obj.description != null && obj.description.length <= 144 &&\r\n obj.url != null &&\r\n (domain == null || new URL(obj.url).hostname === domain);\r\n case \"aes\":\r\n return obj.description != null && obj.description.length <= 144 &&\r\n obj.ciphertext != null && obj.ciphertext.length <= 4096 && exports.BASE64_REGEX.test(obj.ciphertext) &&\r\n obj.iv != null && obj.iv.length <= 24 && exports.BASE64_REGEX.test(obj.iv);\r\n default:\r\n //Unsupported action\r\n return false;\r\n }\r\n}\r\nexports.isLNURLPaySuccessAction = isLNURLPaySuccessAction;\r\nexports.BASE64_REGEX = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\r\nexports.MAIL_REGEX = /(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[A-z0-9](?:[A-z0-9-]*[A-z0-9])?\\.)+[A-z0-9](?:[A-z0-9-]*[A-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[A-z0-9-]*[A-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/;\r\nclass LNURL {\r\n static findBech32LNURL(str) {\r\n const arr = /,*?((lnurl)([0-9]{1,}[a-z0-9]+){1})/.exec(str.toLowerCase());\r\n if (arr == null)\r\n return null;\r\n return arr[1];\r\n }\r\n static isBech32LNURL(str) {\r\n return this.findBech32LNURL(str) != null;\r\n }\r\n /**\r\n * Checks whether a provided string is bare (non bech32 encoded) lnurl\r\n * @param str\r\n * @private\r\n */\r\n static isBareLNURL(str) {\r\n try {\r\n return str.startsWith(\"lnurlw://\") || str.startsWith(\"lnurlp://\");\r\n }\r\n catch (e) { }\r\n return false;\r\n }\r\n /**\r\n * Checks if the provided string is a lightning network address (e.g. satoshi@nakamoto.com)\r\n * @param str\r\n * @private\r\n */\r\n static isLightningAddress(str) {\r\n return exports.MAIL_REGEX.test(str);\r\n }\r\n /**\r\n * Checks whether a given string is a LNURL or lightning address\r\n * @param str\r\n */\r\n static isLNURL(str) {\r\n return LNURL.isBech32LNURL(str) || LNURL.isLightningAddress(str) || LNURL.isBareLNURL(str);\r\n }\r\n /**\r\n * Extracts the URL that needs to be request from LNURL or lightning address\r\n * @param str\r\n * @private\r\n * @returns An URL to send the request to, or null if it cannot be parsed\r\n */\r\n static extractCallUrl(str) {\r\n if (exports.MAIL_REGEX.test(str)) {\r\n //lightning e-mail like address\r\n const arr = str.split(\"@\");\r\n const username = arr[0];\r\n const domain = arr[1];\r\n let scheme = \"https\";\r\n if (domain.endsWith(\".onion\")) {\r\n scheme = \"http\";\r\n }\r\n return scheme + \"://\" + domain + \"/.well-known/lnurlp/\" + username;\r\n }\r\n else if (LNURL.isBareLNURL(str)) {\r\n //non-bech32m encoded lnurl\r\n const data = str.substring(\"lnurlw://\".length);\r\n const httpUrl = new URL(\"http://\" + data);\r\n let scheme = \"https\";\r\n if (httpUrl.hostname.endsWith(\".onion\")) {\r\n scheme = \"http\";\r\n }\r\n return scheme + \"://\" + data;\r\n }\r\n else {\r\n const lnurl = LNURL.findBech32LNURL(str);\r\n if (lnurl != null) {\r\n let { prefix: hrp, words: dataPart } = bech32_1.bech32.decode(lnurl, 2000);\r\n let requestByteArray = bech32_1.bech32.fromWords(dataPart);\r\n return buffer_1.Buffer.from(requestByteArray).toString();\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Sends a request to obtain data about a specific LNURL or lightning address\r\n *\r\n * @param str A lnurl or lightning address\r\n * @param shouldRetry Whether we should retry in case of network failure\r\n * @param timeout Request timeout in milliseconds\r\n * @param abortSignal\r\n */\r\n static async getLNURL(str, shouldRetry = true, timeout, abortSignal) {\r\n if (shouldRetry == null)\r\n shouldRetry = true;\r\n const url = LNURL.extractCallUrl(str);\r\n if (url != null) {\r\n const sendRequest = () => (0, Utils_1.httpGet)(url, timeout, abortSignal, true);\r\n let response = shouldRetry ?\r\n await (0, Utils_1.tryWithRetries)(sendRequest, null, RequestError_1.RequestError, abortSignal) :\r\n await sendRequest();\r\n if (isLNURLError(response))\r\n return null;\r\n if (response.tag === \"payRequest\")\r\n try {\r\n response.decodedMetadata = JSON.parse(response.metadata);\r\n }\r\n catch (err) {\r\n response.decodedMetadata = [];\r\n }\r\n if (!isLNURLPayParams(response) && !isLNURLWithdrawParams(response))\r\n return null;\r\n return {\r\n ...response,\r\n url: str\r\n };\r\n }\r\n }\r\n /**\r\n * Sends a request to obtain data about a specific LNURL or lightning address\r\n *\r\n * @param str A lnurl or lightning address\r\n * @param shouldRetry Whether we should retry in case of network failure\r\n * @param timeout Request timeout in milliseconds\r\n * @param abortSignal\r\n */\r\n static async getLNURLType(str, shouldRetry, timeout, abortSignal) {\r\n let res = await LNURL.getLNURL(str, shouldRetry, timeout, abortSignal);\r\n if (res.tag === \"payRequest\") {\r\n const payRequest = res;\r\n let shortDescription;\r\n let longDescription;\r\n let icon;\r\n payRequest.decodedMetadata.forEach(data => {\r\n switch (data[0]) {\r\n case \"text/plain\":\r\n shortDescription = data[1];\r\n break;\r\n case \"text/long-desc\":\r\n longDescription = data[1];\r\n break;\r\n case \"image/png;base64\":\r\n icon = \"data:\" + data[0] + \",\" + data[1];\r\n break;\r\n case \"image/jpeg;base64\":\r\n icon = \"data:\" + data[0] + \",\" + data[1];\r\n break;\r\n }\r\n });\r\n return {\r\n type: \"pay\",\r\n min: BigInt(payRequest.minSendable) / 1000n,\r\n max: BigInt(payRequest.maxSendable) / 1000n,\r\n commentMaxLength: payRequest.commentAllowed || 0,\r\n shortDescription,\r\n longDescription,\r\n icon,\r\n params: payRequest\r\n };\r\n }\r\n if (res.tag === \"withdrawRequest\") {\r\n const payRequest = res;\r\n return {\r\n type: \"withdraw\",\r\n min: BigInt(payRequest.minWithdrawable) / 1000n,\r\n max: BigInt(payRequest.maxWithdrawable) / 1000n,\r\n params: payRequest\r\n };\r\n }\r\n return null;\r\n }\r\n /**\r\n * Uses a LNURL-pay request by obtaining a lightning network invoice from it\r\n *\r\n * @param payRequest LNURL params as returned from the getLNURL call\r\n * @param amount Amount of sats (BTC) to pay\r\n * @param comment Optional comment for the payment request\r\n * @param timeout Request timeout in milliseconds\r\n * @param abortSignal\r\n * @throws {RequestError} If the response is non-200, status: ERROR, or invalid format\r\n */\r\n static async useLNURLPay(payRequest, amount, comment, timeout, abortSignal) {\r\n const params = [\"amount=\" + (amount * 1000n).toString(10)];\r\n if (comment != null) {\r\n params.push(\"comment=\" + encodeURIComponent(comment));\r\n }\r\n const queryParams = (payRequest.callback.includes(\"?\") ? \"&\" : \"?\") + params.join(\"&\");\r\n const response = await (0, Utils_1.tryWithRetries)(() => (0, Utils_1.httpGet)(payRequest.callback + queryParams, timeout, abortSignal, true), null, RequestError_1.RequestError, abortSignal);\r\n if (isLNURLError(response))\r\n throw new RequestError_1.RequestError(\"LNURL callback error: \" + response.reason, 200);\r\n if (!isLNURLPayResult(response))\r\n throw new RequestError_1.RequestError(\"Invalid LNURL response!\", 200);\r\n const parsedPR = (0, bolt11_1.decode)(response.pr);\r\n const descHash = createHash(\"sha256\").update(payRequest.metadata).digest().toString(\"hex\");\r\n if (parsedPR.tagsObject.purpose_commit_hash !== descHash)\r\n throw new RequestError_1.RequestError(\"Invalid invoice received (description hash)!\", 200);\r\n const invoiceMSats = BigInt(parsedPR.millisatoshis);\r\n if (invoiceMSats !== (amount * 1000n))\r\n throw new RequestError_1.RequestError(\"Invalid invoice received (amount)!\", 200);\r\n return {\r\n invoice: response.pr,\r\n parsedInvoice: parsedPR,\r\n successAction: response.successAction\r\n };\r\n }\r\n /**\r\n * Submits the bolt11 lightning invoice to the lnurl withdraw url\r\n *\r\n * @param withdrawRequest Withdraw request to use\r\n * @param withdrawRequest.k1 K1 parameter\r\n * @param withdrawRequest.callback A URL to call\r\n * @param lnpr bolt11 lightning network invoice to submit to the withdrawal endpoint\r\n * @throws {RequestError} If the response is non-200 or status: ERROR\r\n */\r\n static async postInvoiceToLNURLWithdraw(withdrawRequest, lnpr) {\r\n const params = [\r\n \"pr=\" + lnpr,\r\n \"k1=\" + withdrawRequest.k1\r\n ];\r\n const queryParams = (withdrawRequest.callback.includes(\"?\") ? \"&\" : \"?\") + params.join(\"&\");\r\n const response = await (0, Utils_1.tryWithRetries)(() => (0, Utils_1.httpGet)(withdrawRequest.callback + queryParams, null, null, true), null, RequestError_1.RequestError);\r\n if (isLNURLError(response))\r\n throw new RequestError_1.RequestError(\"LNURL callback error: \" + response.reason, 200);\r\n }\r\n /**\r\n * Uses a LNURL-withdraw request by submitting a lightning network invoice to it\r\n *\r\n * @param withdrawRequest Withdrawal request as returned from getLNURL call\r\n * @param lnpr bolt11 lightning network invoice to submit to the withdrawal endpoint\r\n * @throws {UserError} In case the provided bolt11 lightning invoice has an amount that is out of bounds for\r\n * the specified LNURL-withdraw request\r\n */\r\n static async useLNURLWithdraw(withdrawRequest, lnpr) {\r\n const min = BigInt(withdrawRequest.minWithdrawable) / 1000n;\r\n const max = BigInt(withdrawRequest.maxWithdrawable) / 1000n;\r\n const parsedPR = (0, bolt11_1.decode)(lnpr);\r\n const amount = (BigInt(parsedPR.millisatoshis) + 999n) / 1000n;\r\n if (amount < min)\r\n throw new UserError_1.UserError(\"Invoice amount less than minimum LNURL-withdraw limit\");\r\n if (amount > max)\r\n throw new UserError_1.UserError(\"Invoice amount more than maximum LNURL-withdraw limit\");\r\n return await LNURL.postInvoiceToLNURLWithdraw(withdrawRequest, lnpr);\r\n }\r\n static decodeSuccessAction(successAction, secret) {\r\n if (secret == null)\r\n return null;\r\n if (successAction.tag === \"message\") {\r\n return {\r\n description: successAction.message\r\n };\r\n }\r\n if (successAction.tag === \"url\") {\r\n return {\r\n description: successAction.description,\r\n url: successAction.url\r\n };\r\n }\r\n if (successAction.tag === \"aes\") {\r\n const CBC = new aes_js_1.ModeOfOperation.cbc(buffer_1.Buffer.from(secret, \"hex\"), buffer_1.Buffer.from(successAction.iv, \"hex\"));\r\n let plaintext = CBC.decrypt(buffer_1.Buffer.from(successAction.ciphertext, \"base64\"));\r\n // remove padding\r\n const size = plaintext.length;\r\n const pad = plaintext[size - 1];\r\n return {\r\n description: successAction.description,\r\n text: buffer_1.Buffer.from(plaintext).toString(\"utf8\", 0, size - pad)\r\n };\r\n }\r\n }\r\n}\r\nexports.LNURL = LNURL;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HttpPriceProvider = void 0;\r\nconst IPriceProvider_1 = require(\"../../abstract/IPriceProvider\");\r\nclass HttpPriceProvider extends IPriceProvider_1.IPriceProvider {\r\n constructor(coinsMap, url, httpRequestTimeout) {\r\n super(coinsMap);\r\n this.url = url;\r\n this.httpRequestTimeout = httpRequestTimeout;\r\n }\r\n}\r\nexports.HttpPriceProvider = HttpPriceProvider;\r\n","'use strict';\n\n\nconst zlib_inflate = require('./zlib/inflate');\nconst utils = require('./utils/common');\nconst strings = require('./utils/strings');\nconst msg = require('./zlib/messages');\nconst ZStream = require('./zlib/zstream');\nconst GZheader = require('./zlib/gzheader');\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = require('./zlib/constants');\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n this.options = utils.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n let status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = zlib_inflate.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n zlib_inflate.inflateReset(strm);\n status = zlib_inflate.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err) {\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n const inflator = new Inflate(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || msg[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nmodule.exports.Inflate = Inflate;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateRaw = inflateRaw;\nmodule.exports.ungzip = inflate;\nmodule.exports.constants = require('./zlib/constants');\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","export * from './amountToUiAmount.js';\nexport * from './approve.js';\nexport * from './approveChecked.js';\nexport * from './burn.js';\nexport * from './burnChecked.js';\nexport * from './closeAccount.js';\nexport * from './createAccount.js';\nexport * from './createAssociatedTokenAccount.js';\nexport * from './createAssociatedTokenAccountIdempotent.js';\nexport * from './createMint.js';\nexport * from './createMultisig.js';\nexport * from './createNativeMint.js';\nexport * from './createWrappedNativeAccount.js';\nexport * from './freezeAccount.js';\nexport * from './getOrCreateAssociatedTokenAccount.js';\nexport * from './mintTo.js';\nexport * from './mintToChecked.js';\nexport * from './recoverNested.js';\nexport * from './revoke.js';\nexport * from './setAuthority.js';\nexport * from './syncNative.js';\nexport * from './thawAccount.js';\nexport * from './transfer.js';\nexport * from './transferChecked.js';\nexport * from './uiAmountToAmount.js';\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IntermediaryAPI = exports.PaymentAuthorizationResponseCodes = exports.RefundAuthorizationResponseCodes = void 0;\r\nconst RequestError_1 = require(\"../errors/RequestError\");\r\nconst SchemaVerifier_1 = require(\"../utils/paramcoders/SchemaVerifier\");\r\nconst StreamingFetchPromise_1 = require(\"../utils/paramcoders/client/StreamingFetchPromise\");\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nconst randomBytes = require(\"randombytes\");\r\nvar RefundAuthorizationResponseCodes;\r\n(function (RefundAuthorizationResponseCodes) {\r\n RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes[\"EXPIRED\"] = 20010] = \"EXPIRED\";\r\n RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes[\"REFUND_DATA\"] = 20000] = \"REFUND_DATA\";\r\n RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes[\"NOT_FOUND\"] = 20007] = \"NOT_FOUND\";\r\n RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes[\"PENDING\"] = 20008] = \"PENDING\";\r\n RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes[\"PAID\"] = 20006] = \"PAID\";\r\n})(RefundAuthorizationResponseCodes = exports.RefundAuthorizationResponseCodes || (exports.RefundAuthorizationResponseCodes = {}));\r\nvar PaymentAuthorizationResponseCodes;\r\n(function (PaymentAuthorizationResponseCodes) {\r\n PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes[\"AUTH_DATA\"] = 10000] = \"AUTH_DATA\";\r\n PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes[\"EXPIRED\"] = 10001] = \"EXPIRED\";\r\n PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes[\"PAID\"] = 10002] = \"PAID\";\r\n PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes[\"PENDING\"] = 10003] = \"PENDING\";\r\n PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes[\"ALREADY_COMMITTED\"] = 10004] = \"ALREADY_COMMITTED\";\r\n})(PaymentAuthorizationResponseCodes = exports.PaymentAuthorizationResponseCodes || (exports.PaymentAuthorizationResponseCodes = {}));\r\nconst SwapResponseSchema = {\r\n data: SchemaVerifier_1.FieldTypeEnum.Any,\r\n prefix: SchemaVerifier_1.FieldTypeEnum.String,\r\n timeout: SchemaVerifier_1.FieldTypeEnum.String,\r\n signature: SchemaVerifier_1.FieldTypeEnum.String\r\n};\r\n/////////////////////////\r\n///// To BTC\r\nconst ToBTCResponseSchema = {\r\n amount: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n address: SchemaVerifier_1.FieldTypeEnum.String,\r\n satsPervByte: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n networkFee: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n totalFee: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n total: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n minRequiredExpiry: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n ...SwapResponseSchema\r\n};\r\n/////////////////////////\r\n///// To BTCLN\r\nconst ToBTCLNResponseSchema = {\r\n maxFee: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n total: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n confidence: SchemaVerifier_1.FieldTypeEnum.Number,\r\n address: SchemaVerifier_1.FieldTypeEnum.String,\r\n routingFeeSats: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n ...SwapResponseSchema\r\n};\r\nconst ToBTCLNPrepareExactInSchema = {\r\n amount: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n reqId: SchemaVerifier_1.FieldTypeEnum.String\r\n};\r\n/////////////////////////\r\n///// From BTC\r\nconst FromBTCResponseSchema = {\r\n amount: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n btcAddress: SchemaVerifier_1.FieldTypeEnum.String,\r\n address: SchemaVerifier_1.FieldTypeEnum.String,\r\n swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n total: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n confirmations: SchemaVerifier_1.FieldTypeEnum.NumberOptional,\r\n ...SwapResponseSchema\r\n};\r\n/////////////////////////\r\n///// From BTCLN\r\nconst FromBTCLNResponseSchema = {\r\n pr: SchemaVerifier_1.FieldTypeEnum.String,\r\n swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n total: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,\r\n securityDeposit: SchemaVerifier_1.FieldTypeEnum.BigInt\r\n};\r\nclass IntermediaryAPI {\r\n /**\r\n * Returns the information about a specific intermediary\r\n *\r\n * @param baseUrl Base URL of the intermediary\r\n * @param timeout Timeout in milliseconds for the HTTP request\r\n * @param abortSignal\r\n *\r\n * @throws {RequestError} If non-200 http response code is returned\r\n * @throws {Error} If the supplied nonce doesn't match the response\r\n */\r\n static async getIntermediaryInfo(baseUrl, timeout, abortSignal) {\r\n const nonce = randomBytes(32).toString(\"hex\");\r\n const response = await (0, Utils_1.httpPost)(baseUrl + \"/info\", {\r\n nonce,\r\n }, timeout, abortSignal);\r\n const info = JSON.parse(response.envelope);\r\n if (nonce !== info.nonce)\r\n throw new Error(\"Invalid response - nonce\");\r\n return response;\r\n }\r\n /**\r\n * Returns the information about an outcome of the To BTC swap\r\n *\r\n * @param url URL of the intermediary\r\n * @param paymentHash Payment hash of the swap\r\n * @param sequence Swap's sequence number\r\n * @param timeout Timeout in milliseconds for the HTTP request\r\n * @param abortSignal\r\n *\r\n * @throws {RequestError} If non-200 http response code is returned\r\n */\r\n static async getRefundAuthorization(url, paymentHash, sequence, timeout, abortSignal) {\r\n return (0, Utils_1.tryWithRetries)(() => (0, Utils_1.httpGet)(url + \"/getRefundAuthorization\" +\r\n \"?paymentHash=\" + encodeURIComponent(paymentHash) +\r\n \"&sequence=\" + encodeURIComponent(sequence.toString(10)), timeout, abortSignal), null, RequestError_1.RequestError, abortSignal);\r\n }\r\n /**\r\n * Returns the information about the payment of the From BTCLN swaps\r\n *\r\n * @param url URL of the intermediary\r\n * @param paymentHash Payment hash of the swap\r\n * @param timeout Timeout in milliseconds for the HTTP request\r\n * @param abortSignal\r\n *\r\n * @throws {RequestError} If non-200 http response code is returned\r\n */\r\n static async getPaymentAuthorization(url, paymentHash, timeout, abortSignal) {\r\n return (0, Utils_1.tryWithRetries)(() => (0, Utils_1.httpGet)(url + \"/getInvoicePaymentAuth\" +\r\n \"?paymentHash=\" + encodeURIComponent(paymentHash), timeout, abortSignal), null, RequestError_1.RequestError, abortSignal);\r\n }\r\n /**\r\n * Initiate To BTC swap with an intermediary\r\n *\r\n * @param chainIdentifier\r\n * @param baseUrl Base URL of the intermediary\r\n * @param init Swap initialization parameters\r\n * @param timeout Timeout in milliseconds for the HTTP request\r\n * @param abortSignal\r\n * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect\r\n *\r\n * @throws {RequestError} If non-200 http response code is returned\r\n */\r\n static initToBTC(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {\r\n const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + \"/tobtc/payInvoice?chain=\" + encodeURIComponent(chainIdentifier), {\r\n ...init.additionalParams,\r\n address: init.btcAddress,\r\n amount: init.amount.toString(10),\r\n exactIn: init.exactIn,\r\n confirmationTarget: init.confirmationTarget,\r\n confirmations: init.confirmations,\r\n nonce: init.nonce.toString(10),\r\n token: init.token,\r\n offerer: init.offerer,\r\n feeRate: init.feeRate\r\n }, {\r\n code: SchemaVerifier_1.FieldTypeEnum.Number,\r\n msg: SchemaVerifier_1.FieldTypeEnum.String,\r\n data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,\r\n signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional\r\n }, timeout, abortSignal, streamRequest);\r\n return {\r\n signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),\r\n response: responseBodyPromise.then((responseBody) => Promise.all([\r\n responseBody.code,\r\n responseBody.msg,\r\n responseBody.data,\r\n ])).then(([code, msg, data]) => {\r\n if (code !== 20000) {\r\n throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);\r\n }\r\n return (0, SchemaVerifier_1.verifySchema)(data, ToBTCResponseSchema);\r\n })\r\n };\r\n }\r\n /**\r\n * Initiate From BTC swap with an intermediary\r\n *\r\n * @param chainIdentifier\r\n * @param baseUrl Base URL of the intermediary\r\n * @param depositToken\r\n * @param init Swap initialization parameters\r\n * @param timeout Timeout in milliseconds for the HTTP request\r\n * @param abortSignal\r\n * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect\r\n *\r\n * @throws {RequestError} If non-200 http response code is returned\r\n */\r\n static initFromBTC(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {\r\n const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + \"/frombtc/getAddress?chain=\" + encodeURIComponent(chainIdentifier) + \"&depositToken=\" + encodeURIComponent(depositToken), {\r\n ...init.additionalParams,\r\n address: init.claimer,\r\n amount: init.amount.toString(10),\r\n token: init.token,\r\n exactOut: init.exactOut,\r\n sequence: init.sequence.toString(10),\r\n claimerBounty: init.claimerBounty.then(claimerBounty => {\r\n return {\r\n feePerBlock: claimerBounty.feePerBlock.toString(10),\r\n safetyFactor: claimerBounty.safetyFactor,\r\n startTimestamp: claimerBounty.startTimestamp.toString(10),\r\n addBlock: claimerBounty.addBlock,\r\n addFee: claimerBounty.addFee.toString(10)\r\n };\r\n }),\r\n feeRate: init.feeRate\r\n }, {\r\n code: SchemaVerifier_1.FieldTypeEnum.Number,\r\n msg: SchemaVerifier_1.FieldTypeEnum.String,\r\n data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,\r\n signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional\r\n }, timeout, abortSignal, streamRequest);\r\n return {\r\n signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),\r\n response: responseBodyPromise.then((responseBody) => Promise.all([\r\n responseBody.code,\r\n responseBody.msg,\r\n responseBody.data,\r\n ])).then(([code, msg, data]) => {\r\n if (code !== 20000) {\r\n throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);\r\n }\r\n return (0, SchemaVerifier_1.verifySchema)(data, FromBTCResponseSchema);\r\n })\r\n };\r\n }\r\n /**\r\n * Initiate From BTCLN swap with an intermediary\r\n *\r\n * @param chainIdentifier\r\n * @param baseUrl Base URL of the intermediary\r\n * @param depositToken\r\n * @param init Swap initialization parameters\r\n * @param timeout Timeout in milliseconds for the HTTP request\r\n * @param abortSignal\r\n * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect\r\n *\r\n * @throws {RequestError} If non-200 http response code is returned\r\n */\r\n static initFromBTCLN(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {\r\n const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + \"/frombtcln/createInvoice?chain=\" + encodeURIComponent(chainIdentifier) + \"&depositToken=\" + encodeURIComponent(depositToken), {\r\n ...init.additionalParams,\r\n paymentHash: init.paymentHash.toString(\"hex\"),\r\n amount: init.amount.toString(),\r\n address: init.claimer,\r\n token: init.token,\r\n descriptionHash: init.descriptionHash == null ? null : init.descriptionHash.toString(\"hex\"),\r\n exactOut: init.exactOut,\r\n feeRate: init.feeRate\r\n }, {\r\n code: SchemaVerifier_1.FieldTypeEnum.Number,\r\n msg: SchemaVerifier_1.FieldTypeEnum.String,\r\n data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,\r\n lnPublicKey: SchemaVerifier_1.FieldTypeEnum.StringOptional\r\n }, timeout, abortSignal, streamRequest);\r\n return {\r\n lnPublicKey: responseBodyPromise.then(responseBody => responseBody.lnPublicKey),\r\n response: responseBodyPromise.then((responseBody) => Promise.all([\r\n responseBody.code,\r\n responseBody.msg,\r\n responseBody.data,\r\n ])).then(([code, msg, data]) => {\r\n if (code !== 20000) {\r\n throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);\r\n }\r\n return (0, SchemaVerifier_1.verifySchema)(data, FromBTCLNResponseSchema);\r\n })\r\n };\r\n }\r\n /**\r\n * Initiate To BTCLN swap with an intermediary\r\n *\r\n * @param chainIdentifier\r\n * @param baseUrl Base URL of the intermediary\r\n * @param init Swap initialization parameters\r\n * @param timeout Timeout in milliseconds for the HTTP request\r\n * @param abortSignal\r\n * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect\r\n *\r\n * @throws {RequestError} If non-200 http response code is returned\r\n */\r\n static initToBTCLN(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {\r\n const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + \"/tobtcln/payInvoice?chain=\" + encodeURIComponent(chainIdentifier), {\r\n exactIn: false,\r\n ...init.additionalParams,\r\n pr: init.pr,\r\n maxFee: init.maxFee.toString(10),\r\n expiryTimestamp: init.expiryTimestamp.toString(10),\r\n token: init.token,\r\n offerer: init.offerer,\r\n feeRate: init.feeRate,\r\n amount: null\r\n }, {\r\n code: SchemaVerifier_1.FieldTypeEnum.Number,\r\n msg: SchemaVerifier_1.FieldTypeEnum.String,\r\n data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,\r\n signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional\r\n }, timeout, abortSignal, streamRequest);\r\n return {\r\n signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),\r\n response: responseBodyPromise.then((responseBody) => Promise.all([\r\n responseBody.code,\r\n responseBody.msg,\r\n responseBody.data,\r\n ])).then(([code, msg, data]) => {\r\n if (code !== 20000) {\r\n throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);\r\n }\r\n return (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);\r\n })\r\n };\r\n }\r\n /**\r\n * Initiate To BTCLN exact in swap with an intermediary\r\n *\r\n * @param baseUrl Base URL of the intermediary\r\n * @param init Swap initialization parameters\r\n * @param timeout Timeout in milliseconds for the HTTP request\r\n * @param abortSignal\r\n * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect\r\n *\r\n * @throws {RequestError} If non-200 http response code is returned\r\n */\r\n static async initToBTCLNExactIn(baseUrl, init, timeout, abortSignal, streamRequest) {\r\n const responseBody = await (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + \"/tobtcln/payInvoiceExactIn\", {\r\n ...init.additionalParams,\r\n pr: init.pr,\r\n reqId: init.reqId,\r\n feeRate: init.feeRate\r\n }, {\r\n code: SchemaVerifier_1.FieldTypeEnum.Number,\r\n msg: SchemaVerifier_1.FieldTypeEnum.String,\r\n data: SchemaVerifier_1.FieldTypeEnum.AnyOptional\r\n }, timeout, abortSignal, streamRequest);\r\n const [code, msg, data] = await Promise.all([\r\n responseBody.code,\r\n responseBody.msg,\r\n responseBody.data,\r\n ]);\r\n if (code !== 20000)\r\n throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);\r\n return (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);\r\n }\r\n /**\r\n * Prepare To BTCLN exact in swap with an intermediary\r\n *\r\n * @param chainIdentifier\r\n * @param baseUrl Base URL of the intermediary\r\n * @param init Swap initialization parameters\r\n * @param timeout Timeout in milliseconds for the HTTP request\r\n * @param abortSignal\r\n * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect\r\n *\r\n * @throws {RequestError} If non-200 http response code is returned\r\n */\r\n static prepareToBTCLNExactIn(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {\r\n const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + \"/tobtcln/payInvoice?chain=\" + encodeURIComponent(chainIdentifier), {\r\n exactIn: true,\r\n ...init.additionalParams,\r\n pr: init.pr,\r\n maxFee: init.maxFee.toString(10),\r\n expiryTimestamp: init.expiryTimestamp.toString(10),\r\n token: init.token,\r\n offerer: init.offerer,\r\n amount: init.amount.toString(10)\r\n }, {\r\n code: SchemaVerifier_1.FieldTypeEnum.Number,\r\n msg: SchemaVerifier_1.FieldTypeEnum.String,\r\n data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,\r\n signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional\r\n }, timeout, abortSignal, streamRequest);\r\n return {\r\n signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),\r\n response: responseBodyPromise.then((responseBody) => Promise.all([\r\n responseBody.code,\r\n responseBody.msg,\r\n responseBody.data,\r\n ])).then(([code, msg, data]) => {\r\n if (code !== 20000) {\r\n throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);\r\n }\r\n return (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNPrepareExactInSchema);\r\n })\r\n };\r\n }\r\n}\r\nexports.IntermediaryAPI = IntermediaryAPI;\r\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface TransferInstructionData {\n instruction: TokenInstruction.Transfer;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const transferInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct a Transfer instruction\n *\n * @param source Source account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferInstruction(\n source: PublicKey,\n destination: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(transferInstructionData.span);\n transferInstructionData.encode(\n {\n instruction: TokenInstruction.Transfer,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Transfer instruction */\nexport interface DecodedTransferInstruction {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n destination: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Transfer;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Transfer instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedTransferInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { source, destination, owner, multiSigners },\n data,\n } = decodeTransferInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Transfer) throw new TokenInvalidInstructionTypeError();\n if (!source || !destination || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n source,\n destination,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Transfer instruction */\nexport interface DecodedTransferInstructionUnchecked {\n programId: PublicKey;\n keys: {\n source: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Transfer instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferInstructionUnchecked({\n programId,\n keys: [source, destination, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedTransferInstructionUnchecked {\n return {\n programId,\n keys: {\n source,\n destination,\n owner,\n multiSigners,\n },\n data: transferInstructionData.decode(data),\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FromBTCWrapper = void 0;\r\nconst IFromBTCWrapper_1 = require(\"../IFromBTCWrapper\");\r\nconst FromBTCSwap_1 = require(\"./FromBTCSwap\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst IntermediaryError_1 = require(\"../../../errors/IntermediaryError\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst IntermediaryAPI_1 = require(\"../../../intermediaries/IntermediaryAPI\");\r\nconst RequestError_1 = require(\"../../../errors/RequestError\");\r\nconst randomBytes = require(\"randombytes\");\r\nconst utils_1 = require(\"@scure/btc-signer/utils\");\r\nclass FromBTCWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {\r\n /**\r\n * @param chainIdentifier\r\n * @param unifiedStorage Storage interface for the current environment\r\n * @param unifiedChainEvents On-chain event listener\r\n * @param contract Underlying contract handling the swaps\r\n * @param prices Pricing to use\r\n * @param tokens\r\n * @param swapDataDeserializer Deserializer for SwapData\r\n * @param btcRelay\r\n * @param synchronizer Btc relay synchronizer\r\n * @param btcRpc Bitcoin RPC which also supports getting transactions by txoHash\r\n * @param options\r\n * @param events Instance to use for emitting events\r\n */\r\n constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, btcRelay, synchronizer, btcRpc, options, events) {\r\n if (options == null)\r\n options = {};\r\n options.bitcoinNetwork = options.bitcoinNetwork ?? utils_1.TEST_NETWORK;\r\n options.safetyFactor = options.safetyFactor || 2;\r\n options.blocksTillTxConfirms = options.blocksTillTxConfirms || 12;\r\n options.maxConfirmations = options.maxConfirmations || 6;\r\n options.minSendWindow = options.minSendWindow || 30 * 60; //Minimum time window for user to send in the on-chain funds for From BTC swap\r\n options.bitcoinBlocktime = options.bitcoinBlocktime || 10 * 60;\r\n super(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, options, events);\r\n this.TYPE = SwapType_1.SwapType.FROM_BTC;\r\n this.swapDeserializer = FromBTCSwap_1.FromBTCSwap;\r\n this.pendingSwapStates = [\r\n FromBTCSwap_1.FromBTCSwapState.PR_CREATED,\r\n FromBTCSwap_1.FromBTCSwapState.QUOTE_SOFT_EXPIRED,\r\n FromBTCSwap_1.FromBTCSwapState.CLAIM_COMMITED,\r\n FromBTCSwap_1.FromBTCSwapState.BTC_TX_CONFIRMED,\r\n FromBTCSwap_1.FromBTCSwapState.EXPIRED\r\n ];\r\n this.tickSwapState = [FromBTCSwap_1.FromBTCSwapState.PR_CREATED, FromBTCSwap_1.FromBTCSwapState.CLAIM_COMMITED, FromBTCSwap_1.FromBTCSwapState.EXPIRED];\r\n this.btcRelay = btcRelay;\r\n this.synchronizer = synchronizer;\r\n this.btcRpc = btcRpc;\r\n }\r\n processEventInitialize(swap, event) {\r\n if (swap.state === FromBTCSwap_1.FromBTCSwapState.PR_CREATED || swap.state === FromBTCSwap_1.FromBTCSwapState.QUOTE_SOFT_EXPIRED) {\r\n swap.state = FromBTCSwap_1.FromBTCSwapState.CLAIM_COMMITED;\r\n return Promise.resolve(true);\r\n }\r\n return Promise.resolve(false);\r\n }\r\n processEventClaim(swap, event) {\r\n if (swap.state !== FromBTCSwap_1.FromBTCSwapState.FAILED) {\r\n swap.state = FromBTCSwap_1.FromBTCSwapState.CLAIM_CLAIMED;\r\n return Promise.resolve(true);\r\n }\r\n return Promise.resolve(false);\r\n }\r\n processEventRefund(swap, event) {\r\n if (swap.state !== FromBTCSwap_1.FromBTCSwapState.CLAIM_CLAIMED) {\r\n swap.state = FromBTCSwap_1.FromBTCSwapState.FAILED;\r\n return Promise.resolve(true);\r\n }\r\n return Promise.resolve(false);\r\n }\r\n /**\r\n * Returns the swap expiry, leaving enough time for the user to send a transaction and for it to confirm\r\n *\r\n * @param data Parsed swap data\r\n * @param requiredConfirmations Confirmations required to claim the tx\r\n */\r\n getOnchainSendTimeout(data, requiredConfirmations) {\r\n const tsDelta = (this.options.blocksTillTxConfirms + requiredConfirmations) * this.options.bitcoinBlocktime * this.options.safetyFactor;\r\n return data.getExpiry() - BigInt(tsDelta);\r\n }\r\n /**\r\n * Pre-fetches claimer (watchtower) bounty data for the swap. Doesn't throw, instead returns null and aborts the\r\n * provided abortController\r\n *\r\n * @param signer Smartchain signer address initiating the swap\r\n * @param amountData\r\n * @param options Options as passed to the swap creation function\r\n * @param abortController\r\n * @private\r\n */\r\n async preFetchClaimerBounty(signer, amountData, options, abortController) {\r\n const startTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n const dummyAmount = BigInt(Math.floor(Math.random() * 0x1000000));\r\n const dummySwapData = await this.contract.createSwapData(base_1.ChainSwapType.CHAIN, signer, signer, amountData.token, dummyAmount, this.contract.getHashForOnchain(randomBytes(20), dummyAmount, 3).toString(\"hex\"), this.getRandomSequence(), startTimestamp, false, true, BigInt(Math.floor(Math.random() * 0x10000)), BigInt(Math.floor(Math.random() * 0x10000)));\r\n try {\r\n const [feePerBlock, btcRelayData, currentBtcBlock, claimFeeRate] = await Promise.all([\r\n (0, Utils_1.tryWithRetries)(() => this.btcRelay.getFeePerBlock(), null, null, abortController.signal),\r\n (0, Utils_1.tryWithRetries)(() => this.btcRelay.getTipData(), null, null, abortController.signal),\r\n this.btcRpc.getTipHeight(),\r\n (0, Utils_1.tryWithRetries)(() => this.contract.getClaimFee(signer, dummySwapData), null, null, abortController.signal)\r\n ]);\r\n const currentBtcRelayBlock = btcRelayData.blockheight;\r\n const addBlock = Math.max(currentBtcBlock - currentBtcRelayBlock, 0);\r\n return {\r\n feePerBlock: feePerBlock * options.feeSafetyFactor,\r\n safetyFactor: options.blockSafetyFactor,\r\n startTimestamp: startTimestamp,\r\n addBlock,\r\n addFee: claimFeeRate * options.feeSafetyFactor\r\n };\r\n }\r\n catch (e) {\r\n abortController.abort(e);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns calculated claimer bounty calculated from the claimer bounty data as fetched from preFetchClaimerBounty()\r\n *\r\n * @param data Parsed swap data returned from the intermediary\r\n * @param options Options as passed to the swap creation function\r\n * @param claimerBounty Claimer bounty data as fetched from preFetchClaimerBounty() function\r\n * @private\r\n */\r\n getClaimerBounty(data, options, claimerBounty) {\r\n const tsDelta = data.getExpiry() - claimerBounty.startTimestamp;\r\n const blocksDelta = tsDelta / BigInt(this.options.bitcoinBlocktime) * BigInt(options.blockSafetyFactor);\r\n const totalBlock = blocksDelta + BigInt(claimerBounty.addBlock);\r\n return claimerBounty.addFee + (totalBlock * claimerBounty.feePerBlock);\r\n }\r\n /**\r\n * Verifies response returned from intermediary\r\n *\r\n * @param resp Response as returned by the intermediary\r\n * @param amountData\r\n * @param lp Intermediary\r\n * @param options Options as passed to the swap creation function\r\n * @param data Parsed swap data returned by the intermediary\r\n * @param sequence Required swap sequence\r\n * @param claimerBounty Claimer bount data as returned from the preFetchClaimerBounty() pre-fetch promise\r\n * @param depositToken\r\n * @private\r\n * @throws {IntermediaryError} in case the response is invalid\r\n */\r\n verifyReturnedData(resp, amountData, lp, options, data, sequence, claimerBounty, depositToken) {\r\n if (amountData.exactIn) {\r\n if (resp.amount !== amountData.amount)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid amount returned\");\r\n }\r\n else {\r\n if (resp.total !== amountData.amount)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid total returned\");\r\n }\r\n const requiredConfirmations = resp.confirmations ?? lp.services[SwapType_1.SwapType.FROM_BTC].data.confirmations;\r\n if (requiredConfirmations > this.options.maxConfirmations)\r\n throw new IntermediaryError_1.IntermediaryError(\"Requires too many confirmations\");\r\n const totalClaimerBounty = this.getClaimerBounty(data, options, claimerBounty);\r\n if (data.getClaimerBounty() !== totalClaimerBounty ||\r\n data.getType() != base_1.ChainSwapType.CHAIN ||\r\n data.getSequence() !== sequence ||\r\n data.getAmount() !== resp.total ||\r\n data.isPayIn() ||\r\n !data.isToken(amountData.token) ||\r\n data.getOfferer() !== lp.getAddress(this.chainIdentifier) ||\r\n !data.isDepositToken(depositToken)) {\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid data returned\");\r\n }\r\n //Check that we have enough time to send the TX and for it to confirm\r\n const expiry = this.getOnchainSendTimeout(data, requiredConfirmations);\r\n const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n if ((expiry - currentTimestamp) < BigInt(this.options.minSendWindow)) {\r\n throw new IntermediaryError_1.IntermediaryError(\"Send window too low\");\r\n }\r\n const lockingScript = (0, Utils_1.toOutputScript)(this.options.bitcoinNetwork, resp.btcAddress);\r\n const desiredExtraData = this.contract.getExtraData(lockingScript, resp.amount, requiredConfirmations);\r\n const desiredClaimHash = this.contract.getHashForOnchain(lockingScript, resp.amount, requiredConfirmations);\r\n if (!desiredClaimHash.equals(buffer_1.Buffer.from(data.getClaimHash(), \"hex\"))) {\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid claim hash returned!\");\r\n }\r\n if (!desiredExtraData.equals(buffer_1.Buffer.from(data.getExtraData(), \"hex\"))) {\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid extra data returned!\");\r\n }\r\n }\r\n /**\r\n * Returns a newly created swap, receiving 'amount' on chain\r\n *\r\n * @param signer Smartchain signer's address intiating the swap\r\n * @param amountData Amount of token & amount to swap\r\n * @param lps LPs (liquidity providers) to get the quotes from\r\n * @param options Quote options\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n * @param abortSignal Abort signal for aborting the process\r\n */\r\n create(signer, amountData, lps, options, additionalParams, abortSignal) {\r\n options ??= {};\r\n options.blockSafetyFactor ??= 1;\r\n options.feeSafetyFactor ??= 2n;\r\n const sequence = this.getRandomSequence();\r\n const _abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n const pricePrefetchPromise = this.preFetchPrice(amountData, _abortController.signal);\r\n const claimerBountyPrefetchPromise = this.preFetchClaimerBounty(signer, amountData, options, _abortController);\r\n const nativeTokenAddress = this.contract.getNativeCurrencyAddress();\r\n const feeRatePromise = this.preFetchFeeRate(signer, amountData, null, _abortController);\r\n return lps.map(lp => {\r\n return {\r\n intermediary: lp,\r\n quote: (async () => {\r\n const abortController = (0, Utils_1.extendAbortController)(_abortController.signal);\r\n const liquidityPromise = this.preFetchIntermediaryLiquidity(amountData, lp, abortController);\r\n try {\r\n const { signDataPromise, resp } = await (0, Utils_1.tryWithRetries)(async (retryCount) => {\r\n const { signDataPrefetch, response } = IntermediaryAPI_1.IntermediaryAPI.initFromBTC(this.chainIdentifier, lp.url, nativeTokenAddress, {\r\n claimer: signer,\r\n amount: amountData.amount,\r\n token: amountData.token.toString(),\r\n exactOut: !amountData.exactIn,\r\n sequence,\r\n claimerBounty: claimerBountyPrefetchPromise,\r\n feeRate: feeRatePromise,\r\n additionalParams\r\n }, this.options.postRequestTimeout, abortController.signal, retryCount > 0 ? false : null);\r\n return {\r\n signDataPromise: this.preFetchSignData(signDataPrefetch),\r\n resp: await response\r\n };\r\n }, null, e => e instanceof RequestError_1.RequestError, abortController.signal);\r\n const data = new this.swapDataDeserializer(resp.data);\r\n data.setClaimer(signer);\r\n this.verifyReturnedData(resp, amountData, lp, options, data, sequence, await claimerBountyPrefetchPromise, nativeTokenAddress);\r\n const [pricingInfo, signatureExpiry] = await Promise.all([\r\n //Get intermediary's liquidity\r\n this.verifyReturnedPrice(lp.services[SwapType_1.SwapType.FROM_BTC], false, resp.amount, resp.total, amountData.token, resp, pricePrefetchPromise, abortController.signal),\r\n this.verifyReturnedSignature(data, resp, feeRatePromise, signDataPromise, abortController.signal),\r\n this.verifyIntermediaryLiquidity(data.getAmount(), liquidityPromise),\r\n ]);\r\n const quote = new FromBTCSwap_1.FromBTCSwap(this, {\r\n pricingInfo,\r\n url: lp.url,\r\n expiry: signatureExpiry,\r\n swapFee: resp.swapFee,\r\n feeRate: await feeRatePromise,\r\n signatureData: resp,\r\n data,\r\n address: resp.btcAddress,\r\n amount: resp.amount,\r\n exactIn: amountData.exactIn ?? true,\r\n requiredConfirmations: resp.confirmations ?? lp.services[SwapType_1.SwapType.FROM_BTC].data.confirmations\r\n });\r\n await quote._save();\r\n return quote;\r\n }\r\n catch (e) {\r\n abortController.abort(e);\r\n throw e;\r\n }\r\n })()\r\n };\r\n });\r\n }\r\n}\r\nexports.FromBTCWrapper = FromBTCWrapper;\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.safeToString = exports.objectToString = void 0;\nexports.createPromiseCallback = createPromiseCallback;\nexports.inOperator = inOperator;\n/** Wrapped `Object.prototype.toString`, so that you don't need to remember to use `.call()`. */\nconst objectToString = (obj) => Object.prototype.toString.call(obj);\nexports.objectToString = objectToString;\n/**\n * Converts an array to string, safely handling symbols, null prototype objects, and recursive arrays.\n */\nconst safeArrayToString = (arr, seenArrays) => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString#description\n if (typeof arr.join !== 'function')\n return (0, exports.objectToString)(arr);\n seenArrays.add(arr);\n const mapped = arr.map((val) => val === null || val === undefined || seenArrays.has(val)\n ? ''\n : safeToStringImpl(val, seenArrays));\n return mapped.join();\n};\nconst safeToStringImpl = (val, seenArrays = new WeakSet()) => {\n // Using .toString() fails for null/undefined and implicit conversion (val + \"\") fails for symbols\n // and objects with null prototype\n if (typeof val !== 'object' || val === null) {\n return String(val);\n }\n else if (typeof val.toString === 'function') {\n return Array.isArray(val)\n ? // Arrays have a weird custom toString that we need to replicate\n safeArrayToString(val, seenArrays)\n : // eslint-disable-next-line @typescript-eslint/no-base-to-string\n String(val);\n }\n else {\n // This case should just be objects with null prototype, so we can just use Object#toString\n return (0, exports.objectToString)(val);\n }\n};\n/** Safely converts any value to string, using the value's own `toString` when available. */\nconst safeToString = (val) => safeToStringImpl(val);\nexports.safeToString = safeToString;\n/** Converts a callback into a utility object where either a callback or a promise can be used. */\nfunction createPromiseCallback(cb) {\n let callback;\n let resolve;\n let reject;\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n if (typeof cb === 'function') {\n callback = (err, result) => {\n try {\n if (err)\n cb(err);\n // If `err` is null, we know `result` must be `T`\n // The assertion isn't *strictly* correct, as `T` could be nullish, but, ehh, good enough...\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n else\n cb(null, result);\n }\n catch (e) {\n reject(e instanceof Error ? e : new Error());\n }\n };\n }\n else {\n callback = (err, result) => {\n try {\n // If `err` is null, we know `result` must be `T`\n // The assertion isn't *strictly* correct, as `T` could be nullish, but, ehh, good enough...\n if (err)\n reject(err);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n else\n resolve(result);\n }\n catch (e) {\n reject(e instanceof Error ? e : new Error());\n }\n };\n }\n return {\n promise,\n callback,\n resolve: (value) => {\n callback(null, value);\n return promise;\n },\n reject: (error) => {\n callback(error);\n return promise;\n },\n };\n}\nfunction inOperator(k, o) {\n return k in o;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetChainEventsBrowser = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst starknet_1 = require(\"starknet\");\r\n/**\r\n * Solana on-chain event handler for front-end systems without access to fs, uses pure WS to subscribe, might lose\r\n * out on some events if the network is unreliable, front-end systems should take this into consideration and not\r\n * rely purely on events\r\n */\r\nclass StarknetChainEventsBrowser {\r\n constructor(starknetSwapContract, pollIntervalSeconds = 5) {\r\n this.listeners = [];\r\n this.eventListeners = [];\r\n this.logger = (0, Utils_1.getLogger)(\"StarknetChainEventsBrowser: \");\r\n this.initFunctionName = \"initialize\";\r\n this.initEntryPointSelector = BigInt(starknet_1.hash.starknetKeccak(this.initFunctionName));\r\n this.provider = starknetSwapContract.provider;\r\n this.starknetSwapContract = starknetSwapContract;\r\n this.pollIntervalSeconds = pollIntervalSeconds;\r\n }\r\n findInitSwapData(call, escrowHash, claimHandler) {\r\n if (BigInt(call.contract_address) === BigInt(this.starknetSwapContract.contract.address) &&\r\n BigInt(call.entry_point_selector) === this.initEntryPointSelector) {\r\n //Found, check correct escrow hash\r\n const { escrow, extraData } = (0, Utils_1.parseInitFunctionCalldata)(call.calldata, claimHandler);\r\n if (\"0x\" + escrow.getEscrowHash() === (0, Utils_1.toHex)(escrowHash)) {\r\n if (extraData.length !== 0) {\r\n escrow.setExtraData((0, Utils_1.bytes31SpanToBuffer)(extraData, 42).toString(\"hex\"));\r\n }\r\n return escrow;\r\n }\r\n }\r\n for (let _call of call.calls) {\r\n const found = this.findInitSwapData(_call, escrowHash, claimHandler);\r\n if (found != null)\r\n return found;\r\n }\r\n return null;\r\n }\r\n /**\r\n * Returns async getter for fetching on-demand initialize event swap data\r\n *\r\n * @param event\r\n * @param claimHandler\r\n * @private\r\n * @returns {() => Promise} getter to be passed to InitializeEvent constructor\r\n */\r\n getSwapDataGetter(event, claimHandler) {\r\n return async () => {\r\n const trace = await this.provider.getTransactionTrace(event.txHash);\r\n if (trace == null)\r\n return null;\r\n if (trace.execute_invocation.revert_reason != null)\r\n return null;\r\n return this.findInitSwapData(trace.execute_invocation, event.params.escrow_hash, claimHandler);\r\n };\r\n }\r\n parseInitializeEvent(event) {\r\n const escrowHashBuffer = (0, Utils_1.bigNumberishToBuffer)(event.params.escrow_hash, 32);\r\n const escrowHash = escrowHashBuffer.toString(\"hex\");\r\n const claimHandlerHex = (0, Utils_1.toHex)(event.params.claim_handler);\r\n const claimHandler = this.starknetSwapContract.claimHandlersByAddress[claimHandlerHex];\r\n if (claimHandler == null) {\r\n this.logger.warn(\"parseInitializeEvent(\" + escrowHash + \"): Unknown claim handler with claim: \" + claimHandlerHex);\r\n return null;\r\n }\r\n const swapType = claimHandler.getType();\r\n this.logger.debug(\"InitializeEvent claimHash: \" + (0, Utils_1.toHex)(event.params.claim_data) + \" escrowHash: \" + escrowHash);\r\n return new base_1.InitializeEvent(escrowHash, swapType, (0, Utils_1.onceAsync)(this.getSwapDataGetter(event, claimHandler)));\r\n }\r\n parseRefundEvent(event) {\r\n const escrowHashBuffer = (0, Utils_1.bigNumberishToBuffer)(event.params.escrow_hash, 32);\r\n const escrowHash = escrowHashBuffer.toString(\"hex\");\r\n this.logger.debug(\"RefundEvent claimHash: \" + (0, Utils_1.toHex)(event.params.claim_data) + \" escrowHash: \" + escrowHash);\r\n return new base_1.RefundEvent(escrowHash);\r\n }\r\n parseClaimEvent(event) {\r\n const escrowHashBuffer = (0, Utils_1.bigNumberishToBuffer)(event.params.escrow_hash, 32);\r\n const escrowHash = escrowHashBuffer.toString(\"hex\");\r\n const claimHandlerHex = (0, Utils_1.toHex)(event.params.claim_handler);\r\n const claimHandler = this.starknetSwapContract.claimHandlersByAddress[claimHandlerHex];\r\n if (claimHandler == null) {\r\n this.logger.warn(\"parseClaimEvent(\" + escrowHash + \"): Unknown claim handler with claim: \" + claimHandlerHex);\r\n return null;\r\n }\r\n const witnessResult = claimHandler.parseWitnessResult(event.params.witness_result);\r\n this.logger.debug(\"ClaimEvent claimHash: \" + (0, Utils_1.toHex)(event.params.claim_data) +\r\n \" witnessResult: \" + witnessResult + \" escrowHash: \" + escrowHash);\r\n return new base_1.ClaimEvent(escrowHash, witnessResult);\r\n }\r\n /**\r\n * Processes event as received from the chain, parses it & calls event listeners\r\n *\r\n * @param events\r\n * @param currentBlockNumber\r\n * @param currentBlockTimestamp\r\n * @protected\r\n */\r\n async processEvents(events, currentBlockNumber, currentBlockTimestamp) {\r\n const blockTimestampsCache = {};\r\n const getBlockTimestamp = async (blockNumber) => {\r\n const blockNumberString = blockNumber.toString();\r\n blockTimestampsCache[blockNumberString] ?? (blockTimestampsCache[blockNumberString] = (await this.provider.getBlockWithTxHashes(blockNumber)).timestamp);\r\n return blockTimestampsCache[blockNumberString];\r\n };\r\n const parsedEvents = [];\r\n for (let event of events) {\r\n let parsedEvent;\r\n switch (event.name) {\r\n case \"escrow_manager::events::Claim\":\r\n parsedEvent = this.parseClaimEvent(event);\r\n break;\r\n case \"escrow_manager::events::Refund\":\r\n parsedEvent = this.parseRefundEvent(event);\r\n break;\r\n case \"escrow_manager::events::Initialize\":\r\n parsedEvent = this.parseInitializeEvent(event);\r\n break;\r\n }\r\n const timestamp = (event.blockNumber == null || event.blockNumber === currentBlockNumber) ? currentBlockTimestamp : await getBlockTimestamp(event.blockNumber);\r\n parsedEvent.meta = {\r\n blockTime: timestamp,\r\n txId: event.txHash,\r\n timestamp //Maybe deprecated\r\n };\r\n parsedEvents.push(parsedEvent);\r\n }\r\n for (let listener of this.listeners) {\r\n await listener(parsedEvents);\r\n }\r\n }\r\n async checkEvents(lastBlockNumber, lastTxHash) {\r\n //Get pending events\r\n let pendingEvents = await this.starknetSwapContract.Events.getContractBlockEvents([\"escrow_manager::events::Initialize\", \"escrow_manager::events::Claim\", \"escrow_manager::events::Refund\"], []);\r\n if (lastTxHash != null) {\r\n const latestProcessedEventIndex = (0, Utils_1.findLastIndex)(pendingEvents, val => val.txHash === lastTxHash);\r\n if (latestProcessedEventIndex !== -1)\r\n pendingEvents.splice(0, latestProcessedEventIndex + 1);\r\n }\r\n if (pendingEvents.length > 0) {\r\n await this.processEvents(pendingEvents, null, Math.floor(Date.now() / 1000));\r\n lastTxHash = pendingEvents[pendingEvents.length - 1].txHash;\r\n }\r\n const currentBlock = await this.provider.getBlockWithTxHashes(\"latest\");\r\n const currentBlockNumber = currentBlock.block_number;\r\n if (lastBlockNumber != null && currentBlockNumber > lastBlockNumber) {\r\n const events = await this.starknetSwapContract.Events.getContractBlockEvents([\"escrow_manager::events::Initialize\", \"escrow_manager::events::Claim\", \"escrow_manager::events::Refund\"], [], lastBlockNumber + 1, currentBlockNumber);\r\n if (lastTxHash != null) {\r\n const latestProcessedEventIndex = (0, Utils_1.findLastIndex)(events, val => val.txHash === lastTxHash);\r\n if (latestProcessedEventIndex !== -1)\r\n events.splice(0, latestProcessedEventIndex + 1);\r\n }\r\n if (events.length > 0) {\r\n await this.processEvents(events, currentBlockNumber, currentBlock.timestamp);\r\n lastTxHash = events[events.length - 1].txHash;\r\n }\r\n }\r\n return {\r\n txHash: lastTxHash,\r\n blockNumber: currentBlockNumber\r\n };\r\n }\r\n /**\r\n * Sets up event handlers listening for swap events over websocket\r\n *\r\n * @protected\r\n */\r\n async setupPoll(lastBlockNumber, lastTxHash, saveLatestProcessedBlockNumber) {\r\n this.stopped = false;\r\n let func;\r\n func = async () => {\r\n await this.checkEvents(lastBlockNumber, lastTxHash).then(({ blockNumber, txHash }) => {\r\n lastBlockNumber = blockNumber;\r\n lastTxHash = txHash;\r\n if (saveLatestProcessedBlockNumber != null)\r\n return saveLatestProcessedBlockNumber(blockNumber, lastTxHash);\r\n }).catch(e => {\r\n this.logger.error(\"setupPoll(): Failed to fetch starknet log: \", e);\r\n });\r\n if (this.stopped)\r\n return;\r\n this.timeout = setTimeout(func, this.pollIntervalSeconds * 1000);\r\n };\r\n await func();\r\n }\r\n init() {\r\n this.setupPoll();\r\n return Promise.resolve();\r\n }\r\n async stop() {\r\n this.stopped = true;\r\n if (this.timeout != null)\r\n clearTimeout(this.timeout);\r\n this.eventListeners = [];\r\n }\r\n registerListener(cbk) {\r\n this.listeners.push(cbk);\r\n }\r\n unregisterListener(cbk) {\r\n const index = this.listeners.indexOf(cbk);\r\n if (index >= 0) {\r\n this.listeners.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nexports.StarknetChainEventsBrowser = StarknetChainEventsBrowser;\r\n","/* The MIT License (MIT)\n *\n * Copyright 2015-2018 Peter A. Bigot\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * Support for translating between Buffer instances and JavaScript\n * native types.\n *\n * {@link module:Layout~Layout|Layout} is the basis of a class\n * hierarchy that associates property names with sequences of encoded\n * bytes.\n *\n * Layouts are supported for these scalar (numeric) types:\n * * {@link module:Layout~UInt|Unsigned integers in little-endian\n * format} with {@link module:Layout.u8|8-bit}, {@link\n * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit},\n * {@link module:Layout.u32|32-bit}, {@link\n * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit}\n * representation ranges;\n * * {@link module:Layout~UIntBE|Unsigned integers in big-endian\n * format} with {@link module:Layout.u16be|16-bit}, {@link\n * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit},\n * {@link module:Layout.u40be|40-bit}, and {@link\n * module:Layout.u48be|48-bit} representation ranges;\n * * {@link module:Layout~Int|Signed integers in little-endian\n * format} with {@link module:Layout.s8|8-bit}, {@link\n * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit},\n * {@link module:Layout.s32|32-bit}, {@link\n * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit}\n * representation ranges;\n * * {@link module:Layout~IntBE|Signed integers in big-endian format}\n * with {@link module:Layout.s16be|16-bit}, {@link\n * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit},\n * {@link module:Layout.s40be|40-bit}, and {@link\n * module:Layout.s48be|48-bit} representation ranges;\n * * 64-bit integral values that decode to an exact (if magnitude is\n * less than 2^53) or nearby integral Number in {@link\n * module:Layout.nu64|unsigned little-endian}, {@link\n * module:Layout.nu64be|unsigned big-endian}, {@link\n * module:Layout.ns64|signed little-endian}, and {@link\n * module:Layout.ns64be|unsigned big-endian} encodings;\n * * 32-bit floating point values with {@link\n * module:Layout.f32|little-endian} and {@link\n * module:Layout.f32be|big-endian} representations;\n * * 64-bit floating point values with {@link\n * module:Layout.f64|little-endian} and {@link\n * module:Layout.f64be|big-endian} representations;\n * * {@link module:Layout.const|Constants} that take no space in the\n * encoded expression.\n *\n * and for these aggregate types:\n * * {@link module:Layout.seq|Sequence}s of instances of a {@link\n * module:Layout~Layout|Layout}, with JavaScript representation as\n * an Array and constant or data-dependent {@link\n * module:Layout~Sequence#count|length};\n * * {@link module:Layout.struct|Structure}s that aggregate a\n * heterogeneous sequence of {@link module:Layout~Layout|Layout}\n * instances, with JavaScript representation as an Object;\n * * {@link module:Layout.union|Union}s that support multiple {@link\n * module:Layout~VariantLayout|variant layouts} over a fixed\n * (padded) or variable (not padded) span of bytes, using an\n * unsigned integer at the start of the data or a separate {@link\n * module:Layout.unionLayoutDiscriminator|layout element} to\n * determine which layout to use when interpreting the buffer\n * contents;\n * * {@link module:Layout.bits|BitStructure}s that contain a sequence\n * of individual {@link\n * module:Layout~BitStructure#addField|BitField}s packed into an 8,\n * 16, 24, or 32-bit unsigned integer starting at the least- or\n * most-significant bit;\n * * {@link module:Layout.cstr|C strings} of varying length;\n * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link\n * module:Layout~Blob#length|length} raw data.\n *\n * All {@link module:Layout~Layout|Layout} instances are immutable\n * after construction, to prevent internal state from becoming\n * inconsistent.\n *\n * @local Layout\n * @local ExternalLayout\n * @local GreedyCount\n * @local OffsetLayout\n * @local UInt\n * @local UIntBE\n * @local Int\n * @local IntBE\n * @local NearUInt64\n * @local NearUInt64BE\n * @local NearInt64\n * @local NearInt64BE\n * @local Float\n * @local FloatBE\n * @local Double\n * @local DoubleBE\n * @local Sequence\n * @local Structure\n * @local UnionDiscriminator\n * @local UnionLayoutDiscriminator\n * @local Union\n * @local VariantLayout\n * @local BitStructure\n * @local BitField\n * @local Boolean\n * @local Blob\n * @local CString\n * @local Constant\n * @local bindConstructorLayout\n * @module Layout\n * @license MIT\n * @author Peter A. Bigot\n * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub}\n */\n\n'use strict';\n\n/**\n * Base class for layout objects.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * Layout#encode|encode} or {@link Layout#decode|decode} functions.\n *\n * @param {Number} span - Initializer for {@link Layout#span|span}. The\n * parameter must be an integer; a negative value signifies that the\n * span is {@link Layout#getSpan|value-specific}.\n *\n * @param {string} [property] - Initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n */\nclass Layout {\n constructor(span, property) {\n if (!Number.isInteger(span)) {\n throw new TypeError('span must be an integer');\n }\n\n /** The span of the layout in bytes.\n *\n * Positive values are generally expected.\n *\n * Zero will only appear in {@link Constant}s and in {@link\n * Sequence}s where the {@link Sequence#count|count} is zero.\n *\n * A negative value indicates that the span is value-specific, and\n * must be obtained using {@link Layout#getSpan|getSpan}. */\n this.span = span;\n\n /** The property name used when this layout is represented in an\n * Object.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances. If left undefined the span of the unnamed layout will\n * be treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n\n /** Function to create an Object into which decoded properties will\n * be written.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances, which means:\n * * {@link Structure}\n * * {@link Union}\n * * {@link VariantLayout}\n * * {@link BitStructure}\n *\n * If left undefined the JavaScript representation of these layouts\n * will be Object instances.\n *\n * See {@link bindConstructorLayout}.\n */\n makeDestinationObject() {\n return {};\n }\n\n /**\n * Decode from a Buffer into an JavaScript value.\n *\n * @param {Buffer} b - the buffer from which encoded data is read.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {(Number|Array|Object)} - the value of the decoded data.\n *\n * @abstract\n */\n decode(b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Encode a JavaScript value into a Buffer.\n *\n * @param {(Number|Array|Object)} src - the value to be encoded into\n * the buffer. The type accepted depends on the (sub-)type of {@link\n * Layout}.\n *\n * @param {Buffer} b - the buffer into which encoded data will be\n * written.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {Number} - the number of bytes encoded, including the\n * space skipped for internal padding, but excluding data such as\n * {@link Sequence#count|lengths} when stored {@link\n * ExternalLayout|externally}. This is the adjustment to `offset`\n * producing the offset where data for the next layout would be\n * written.\n *\n * @abstract\n */\n encode(src, b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Calculate the span of a specific instance of a layout.\n *\n * @param {Buffer} b - the buffer that contains an encoded instance.\n *\n * @param {Number} [offset] - the offset at which the encoded instance\n * starts. If absent a zero offset is inferred.\n *\n * @return {Number} - the number of bytes covered by the layout\n * instance. If this method is not overridden in a subclass the\n * definition-time constant {@link Layout#span|span} will be\n * returned.\n *\n * @throws {RangeError} - if the length of the value cannot be\n * determined.\n */\n getSpan(b, offset) {\n if (0 > this.span) {\n throw new RangeError('indeterminate span');\n }\n return this.span;\n }\n\n /**\n * Replicate the layout using a new property.\n *\n * This function must be used to get a structurally-equivalent layout\n * with a different name since all {@link Layout} instances are\n * immutable.\n *\n * **NOTE** This is a shallow copy. All fields except {@link\n * Layout#property|property} are strictly equal to the origin layout.\n *\n * @param {String} property - the value for {@link\n * Layout#property|property} in the replica.\n *\n * @returns {Layout} - the copy with {@link Layout#property|property}\n * set to `property`.\n */\n replicate(property) {\n const rv = Object.create(this.constructor.prototype);\n Object.assign(rv, this);\n rv.property = property;\n return rv;\n }\n\n /**\n * Create an object from layout properties and an array of values.\n *\n * **NOTE** This function returns `undefined` if invoked on a layout\n * that does not return its value as an Object. Objects are\n * returned for things that are a {@link Structure}, which includes\n * {@link VariantLayout|variant layouts} if they are structures, and\n * excludes {@link Union}s. If you want this feature for a union\n * you must use {@link Union.getVariant|getVariant} to select the\n * desired layout.\n *\n * @param {Array} values - an array of values that correspond to the\n * default order for properties. As with {@link Layout#decode|decode}\n * layout elements that have no property name are skipped when\n * iterating over the array values. Only the top-level properties are\n * assigned; arguments are not assigned to properties of contained\n * layouts. Any unused values are ignored.\n *\n * @return {(Object|undefined)}\n */\n fromArray(values) {\n return undefined;\n }\n}\nexports.Layout = Layout;\n\n/* Provide text that carries a name (such as for a function that will\n * be throwing an error) annotated with the property of a given layout\n * (such as one for which the value was unacceptable).\n *\n * @ignore */\nfunction nameWithProperty(name, lo) {\n if (lo.property) {\n return name + '[' + lo.property + ']';\n }\n return name;\n}\nexports.nameWithProperty = nameWithProperty;\n\n/**\n * Augment a class so that instances can be encoded/decoded using a\n * given layout.\n *\n * Calling this function couples `Class` with `layout` in several ways:\n *\n * * `Class.layout_` becomes a static member property equal to `layout`;\n * * `layout.boundConstructor_` becomes a static member property equal\n * to `Class`;\n * * The {@link Layout#makeDestinationObject|makeDestinationObject()}\n * property of `layout` is set to a function that returns a `new\n * Class()`;\n * * `Class.decode(b, offset)` becomes a static member function that\n * delegates to {@link Layout#decode|layout.decode}. The\n * synthesized function may be captured and extended.\n * * `Class.prototype.encode(b, offset)` provides an instance member\n * function that delegates to {@link Layout#encode|layout.encode}\n * with `src` set to `this`. The synthesized function may be\n * captured and extended, but when the extension is invoked `this`\n * must be explicitly bound to the instance.\n *\n * @param {class} Class - a JavaScript class with a nullary\n * constructor.\n *\n * @param {Layout} layout - the {@link Layout} instance used to encode\n * instances of `Class`.\n */\nfunction bindConstructorLayout(Class, layout) {\n if ('function' !== typeof Class) {\n throw new TypeError('Class must be constructor');\n }\n if (Class.hasOwnProperty('layout_')) {\n throw new Error('Class is already bound to a layout');\n }\n if (!(layout && (layout instanceof Layout))) {\n throw new TypeError('layout must be a Layout');\n }\n if (layout.hasOwnProperty('boundConstructor_')) {\n throw new Error('layout is already bound to a constructor');\n }\n Class.layout_ = layout;\n layout.boundConstructor_ = Class;\n layout.makeDestinationObject = (() => new Class());\n Object.defineProperty(Class.prototype, 'encode', {\n value: function(b, offset) {\n return layout.encode(this, b, offset);\n },\n writable: true,\n });\n Object.defineProperty(Class, 'decode', {\n value: function(b, offset) {\n return layout.decode(b, offset);\n },\n writable: true,\n });\n}\nexports.bindConstructorLayout = bindConstructorLayout;\n\n/**\n * An object that behaves like a layout but does not consume space\n * within its containing layout.\n *\n * This is primarily used to obtain metadata about a member, such as a\n * {@link OffsetLayout} that can provide data about a {@link\n * Layout#getSpan|value-specific span}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support {@link\n * ExternalLayout#isCount|isCount} or other {@link Layout} functions.\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n * @augments {Layout}\n */\nclass ExternalLayout extends Layout {\n /**\n * Return `true` iff the external layout decodes to an unsigned\n * integer layout.\n *\n * In that case it can be used as the source of {@link\n * Sequence#count|Sequence counts}, {@link Blob#length|Blob lengths},\n * or as {@link UnionLayoutDiscriminator#layout|external union\n * discriminators}.\n *\n * @abstract\n */\n isCount() {\n throw new Error('ExternalLayout is abstract');\n }\n}\n\n/**\n * An {@link ExternalLayout} that determines its {@link\n * Layout#decode|value} based on offset into and length of the buffer\n * on which it is invoked.\n *\n * *Factory*: {@link module:Layout.greedy|greedy}\n *\n * @param {Number} [elementSpan] - initializer for {@link\n * GreedyCount#elementSpan|elementSpan}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {ExternalLayout}\n */\nclass GreedyCount extends ExternalLayout {\n constructor(elementSpan, property) {\n if (undefined === elementSpan) {\n elementSpan = 1;\n }\n if ((!Number.isInteger(elementSpan)) || (0 >= elementSpan)) {\n throw new TypeError('elementSpan must be a (positive) integer');\n }\n super(-1, property);\n\n /** The layout for individual elements of the sequence. The value\n * must be a positive integer. If not provided, the value will be\n * 1. */\n this.elementSpan = elementSpan;\n }\n\n /** @override */\n isCount() {\n return true;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const rem = b.length - offset;\n return Math.floor(rem / this.elementSpan);\n }\n\n /** @override */\n encode(src, b, offset) {\n return 0;\n }\n}\n\n/**\n * An {@link ExternalLayout} that supports accessing a {@link Layout}\n * at a fixed offset from the start of another Layout. The offset may\n * be before, within, or after the base layout.\n *\n * *Factory*: {@link module:Layout.offset|offset}\n *\n * @param {Layout} layout - initializer for {@link\n * OffsetLayout#layout|layout}, modulo `property`.\n *\n * @param {Number} [offset] - Initializes {@link\n * OffsetLayout#offset|offset}. Defaults to zero.\n *\n * @param {string} [property] - Optional new property name for a\n * {@link Layout#replicate| replica} of `layout` to be used as {@link\n * OffsetLayout#layout|layout}. If not provided the `layout` is used\n * unchanged.\n *\n * @augments {Layout}\n */\nclass OffsetLayout extends ExternalLayout {\n constructor(layout, offset, property) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n\n if (undefined === offset) {\n offset = 0;\n } else if (!Number.isInteger(offset)) {\n throw new TypeError('offset must be integer or undefined');\n }\n\n super(layout.span, property || layout.property);\n\n /** The subordinated layout. */\n this.layout = layout;\n\n /** The location of {@link OffsetLayout#layout} relative to the\n * start of another layout.\n *\n * The value may be positive or negative, but an error will thrown\n * if at the point of use it goes outside the span of the Buffer\n * being accessed. */\n this.offset = offset;\n }\n\n /** @override */\n isCount() {\n return ((this.layout instanceof UInt)\n || (this.layout instanceof UIntBE));\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.decode(b, offset + this.offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.encode(src, b, offset + this.offset);\n }\n}\n\n/**\n * Represent an unsigned integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.u8|u8}, {@link\n * module:Layout.u16|u16}, {@link module:Layout.u24|u24}, {@link\n * module:Layout.u32|u32}, {@link module:Layout.u40|u40}, {@link\n * module:Layout.u48|u48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UInt extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntLE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntLE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent an unsigned integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.u8be|u8be}, {@link\n * module:Layout.u16be|u16be}, {@link module:Layout.u24be|u24be},\n * {@link module:Layout.u32be|u32be}, {@link\n * module:Layout.u40be|u40be}, {@link module:Layout.u48be|u48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UIntBE extends Layout {\n constructor(span, property) {\n super( span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntBE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntBE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent a signed integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.s8|s8}, {@link\n * module:Layout.s16|s16}, {@link module:Layout.s24|s24}, {@link\n * module:Layout.s32|s32}, {@link module:Layout.s40|s40}, {@link\n * module:Layout.s48|s48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Int extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readIntLE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeIntLE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent a signed integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.s8be|s8be}, {@link\n * module:Layout.s16be|s16be}, {@link module:Layout.s24be|s24be},\n * {@link module:Layout.s32be|s32be}, {@link\n * module:Layout.s40be|s40be}, {@link module:Layout.s48be|s48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass IntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readIntBE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeIntBE(src, offset, this.span);\n return this.span;\n }\n}\n\nconst V2E32 = Math.pow(2, 32);\n\n/* True modulus high and low 32-bit words, where low word is always\n * non-negative. */\nfunction divmodInt64(src) {\n const hi32 = Math.floor(src / V2E32);\n const lo32 = src - (hi32 * V2E32);\n return {hi32, lo32};\n}\n/* Reconstruct Number from quotient and non-negative remainder */\nfunction roundedInt64(hi32, lo32) {\n return hi32 * V2E32 + lo32;\n}\n\n/**\n * Represent an unsigned 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64|nu64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readUInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeUInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent an unsigned 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64be|nu64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const hi32 = b.readUInt32BE(offset);\n const lo32 = b.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32BE(split.hi32, offset);\n b.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a signed 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64|ns64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a signed 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64be|ns64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const hi32 = b.readInt32BE(offset);\n const lo32 = b.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeInt32BE(split.hi32, offset);\n b.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a 32-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f32|f32}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Float extends Layout {\n constructor(property) {\n super(4, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readFloatLE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeFloatLE(src, offset);\n return 4;\n }\n}\n\n/**\n * Represent a 32-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f32be|f32be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass FloatBE extends Layout {\n constructor(property) {\n super(4, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readFloatBE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeFloatBE(src, offset);\n return 4;\n }\n}\n\n/**\n * Represent a 64-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f64|f64}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Double extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readDoubleLE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeDoubleLE(src, offset);\n return 8;\n }\n}\n\n/**\n * Represent a 64-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f64be|f64be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass DoubleBE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readDoubleBE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeDoubleBE(src, offset);\n return 8;\n }\n}\n\n/**\n * Represent a contiguous sequence of a specific layout as an Array.\n *\n * *Factory*: {@link module:Layout.seq|seq}\n *\n * @param {Layout} elementLayout - initializer for {@link\n * Sequence#elementLayout|elementLayout}.\n *\n * @param {(Number|ExternalLayout)} count - initializer for {@link\n * Sequence#count|count}. The parameter must be either a positive\n * integer or an instance of {@link ExternalLayout}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Sequence extends Layout {\n constructor(elementLayout, count, property) {\n if (!(elementLayout instanceof Layout)) {\n throw new TypeError('elementLayout must be a Layout');\n }\n if (!(((count instanceof ExternalLayout) && count.isCount())\n || (Number.isInteger(count) && (0 <= count)))) {\n throw new TypeError('count must be non-negative integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if ((!(count instanceof ExternalLayout))\n && (0 < elementLayout.span)) {\n span = count * elementLayout.span;\n }\n\n super(span, property);\n\n /** The layout for individual elements of the sequence. */\n this.elementLayout = elementLayout;\n\n /** The number of elements in the sequence.\n *\n * This will be either a non-negative integer or an instance of\n * {@link ExternalLayout} for which {@link\n * ExternalLayout#isCount|isCount()} is `true`. */\n this.count = count;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let span = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n if (0 < this.elementLayout.span) {\n span = count * this.elementLayout.span;\n } else {\n let idx = 0;\n while (idx < count) {\n span += this.elementLayout.getSpan(b, offset + span);\n ++idx;\n }\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const rv = [];\n let i = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n while (i < count) {\n rv.push(this.elementLayout.decode(b, offset));\n offset += this.elementLayout.getSpan(b, offset);\n i += 1;\n }\n return rv;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Sequence}.\n *\n * **NOTE** If `src` is shorter than {@link Sequence#count|count} then\n * the unused space in the buffer is left unchanged. If `src` is\n * longer than {@link Sequence#count|count} the unneeded elements are\n * ignored.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const elo = this.elementLayout;\n const span = src.reduce((span, v) => {\n return span + elo.encode(v, b, offset + span);\n }, 0);\n if (this.count instanceof ExternalLayout) {\n this.count.encode(src.length, b, offset);\n }\n return span;\n }\n}\n\n/**\n * Represent a contiguous sequence of arbitrary layout elements as an\n * Object.\n *\n * *Factory*: {@link module:Layout.struct|struct}\n *\n * **NOTE** The {@link Layout#span|span} of the structure is variable\n * if any layout in {@link Structure#fields|fields} has a variable\n * span. When {@link Layout#encode|encoding} we must have a value for\n * all variable-length fields, or we wouldn't be able to figure out\n * how much space to use for storage. We can only identify the value\n * for a field when it has a {@link Layout#property|property}. As\n * such, although a structure may contain both unnamed fields and\n * variable-length fields, it cannot contain an unnamed\n * variable-length field.\n *\n * @param {Layout[]} fields - initializer for {@link\n * Structure#fields|fields}. An error is raised if this contains a\n * variable-length field for which a {@link Layout#property|property}\n * is not defined.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @param {Boolean} [decodePrefixes] - initializer for {@link\n * Structure#decodePrefixes|property}.\n *\n * @throws {Error} - if `fields` contains an unnamed variable-length\n * layout.\n *\n * @augments {Layout}\n */\nclass Structure extends Layout {\n constructor(fields, property, decodePrefixes) {\n if (!(Array.isArray(fields)\n && fields.reduce((acc, v) => acc && (v instanceof Layout), true))) {\n throw new TypeError('fields must be array of Layout instances');\n }\n if (('boolean' === typeof property)\n && (undefined === decodePrefixes)) {\n decodePrefixes = property;\n property = undefined;\n }\n\n /* Verify absence of unnamed variable-length fields. */\n for (const fd of fields) {\n if ((0 > fd.span)\n && (undefined === fd.property)) {\n throw new Error('fields cannot contain unnamed variable-length layout');\n }\n }\n\n let span = -1;\n try {\n span = fields.reduce((span, fd) => span + fd.getSpan(), 0);\n } catch (e) {\n }\n super(span, property);\n\n /** The sequence of {@link Layout} values that comprise the\n * structure.\n *\n * The individual elements need not be the same type, and may be\n * either scalar or aggregate layouts. If a member layout leaves\n * its {@link Layout#property|property} undefined the\n * corresponding region of the buffer associated with the element\n * will not be mutated.\n *\n * @type {Layout[]} */\n this.fields = fields;\n\n /** Control behavior of {@link Layout#decode|decode()} given short\n * buffers.\n *\n * In some situations a structure many be extended with additional\n * fields over time, with older installations providing only a\n * prefix of the full structure. If this property is `true`\n * decoding will accept those buffers and leave subsequent fields\n * undefined, as long as the buffer ends at a field boundary.\n * Defaults to `false`. */\n this.decodePrefixes = !!decodePrefixes;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let span = 0;\n try {\n span = this.fields.reduce((span, fd) => {\n const fsp = fd.getSpan(b, offset);\n offset += fsp;\n return span + fsp;\n }, 0);\n } catch (e) {\n throw new RangeError('indeterminate span');\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b, offset);\n }\n offset += fd.getSpan(b, offset);\n if (this.decodePrefixes\n && (b.length === offset)) {\n break;\n }\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Structure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the buffer is\n * left unmodified. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const firstOffset = offset;\n let lastOffset = 0;\n let lastWrote = 0;\n for (const fd of this.fields) {\n let span = fd.span;\n lastWrote = (0 < span) ? span : 0;\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n lastWrote = fd.encode(fv, b, offset);\n if (0 > span) {\n /* Read the as-encoded span, which is not necessarily the\n * same as what we wrote. */\n span = fd.getSpan(b, offset);\n }\n }\n }\n lastOffset = offset;\n offset += span;\n }\n /* Use (lastOffset + lastWrote) instead of offset because the last\n * item may have had a dynamic length and we don't want to include\n * the padding between it and the end of the space reserved for\n * it. */\n return (lastOffset + lastWrote) - firstOffset;\n }\n\n /** @override */\n fromArray(values) {\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if ((undefined !== fd.property)\n && (0 < values.length)) {\n dest[fd.property] = values.shift();\n }\n }\n return dest;\n }\n\n /**\n * Get access to the layout of a given property.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Layout} - the layout associated with `property`, or\n * undefined if there is no such property.\n */\n layoutFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n }\n\n /**\n * Get the offset of a structure member.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Number} - the offset in bytes to the start of `property`\n * within the structure, or undefined if `property` is not a field\n * within the structure. If the property is a member but follows a\n * variable-length structure member a negative number will be\n * returned.\n */\n offsetOf(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n let offset = 0;\n for (const fd of this.fields) {\n if (fd.property === property) {\n return offset;\n }\n if (0 > fd.span) {\n offset = -1;\n } else if (0 <= offset) {\n offset += fd.span;\n }\n }\n }\n}\n\n/**\n * An object that can provide a {@link\n * Union#discriminator|discriminator} API for {@link Union}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * UnionDiscriminator#encode|encode} or {@link\n * UnionDiscriminator#decode|decode} functions.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}.\n *\n * @abstract\n */\nclass UnionDiscriminator {\n constructor(property) {\n /** The {@link Layout#property|property} to be used when the\n * discriminator is referenced in isolation (generally when {@link\n * Union#decode|Union decode} cannot delegate to a specific\n * variant). */\n this.property = property;\n }\n\n /** Analog to {@link Layout#decode|Layout decode} for union discriminators.\n *\n * The implementation of this method need not reference the buffer if\n * variant information is available through other means. */\n decode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n\n /** Analog to {@link Layout#decode|Layout encode} for union discriminators.\n *\n * The implementation of this method need not store the value if\n * variant information is maintained through other means. */\n encode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n}\n\n/**\n * An object that can provide a {@link\n * UnionDiscriminator|discriminator API} for {@link Union} using an\n * unsigned integral {@link Layout} instance located either inside or\n * outside the union.\n *\n * @param {ExternalLayout} layout - initializes {@link\n * UnionLayoutDiscriminator#layout|layout}. Must satisfy {@link\n * ExternalLayout#isCount|isCount()}.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}, superseding the property\n * from `layout`, but defaulting to `variant` if neither `property`\n * nor layout provide a property name.\n *\n * @augments {UnionDiscriminator}\n */\nclass UnionLayoutDiscriminator extends UnionDiscriminator {\n constructor(layout, property) {\n if (!((layout instanceof ExternalLayout)\n && layout.isCount())) {\n throw new TypeError('layout must be an unsigned integer ExternalLayout');\n }\n\n super(property || layout.property || 'variant');\n\n /** The {@link ExternalLayout} used to access the discriminator\n * value. */\n this.layout = layout;\n }\n\n /** Delegate decoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n decode(b, offset) {\n return this.layout.decode(b, offset);\n }\n\n /** Delegate encoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n encode(src, b, offset) {\n return this.layout.encode(src, b, offset);\n }\n}\n\n/**\n * Represent any number of span-compatible layouts.\n *\n * *Factory*: {@link module:Layout.union|union}\n *\n * If the union has a {@link Union#defaultLayout|default layout} that\n * layout must have a non-negative {@link Layout#span|span}. The span\n * of a fixed-span union includes its {@link\n * Union#discriminator|discriminator} if the variant is a {@link\n * Union#usesPrefixDiscriminator|prefix of the union}, plus the span\n * of its {@link Union#defaultLayout|default layout}.\n *\n * If the union does not have a default layout then the encoded span\n * of the union depends on the encoded span of its variant (which may\n * be fixed or variable).\n *\n * {@link VariantLayout#layout|Variant layout}s are added through\n * {@link Union#addVariant|addVariant}. If the union has a default\n * layout, the span of the {@link VariantLayout#layout|layout\n * contained by the variant} must not exceed the span of the {@link\n * Union#defaultLayout|default layout} (minus the span of a {@link\n * Union#usesPrefixDiscriminator|prefix disriminator}, if used). The\n * span of the variant will equal the span of the union itself.\n *\n * The variant for a buffer can only be identified from the {@link\n * Union#discriminator|discriminator} {@link\n * UnionDiscriminator#property|property} (in the case of the {@link\n * Union#defaultLayout|default layout}), or by using {@link\n * Union#getVariant|getVariant} and examining the resulting {@link\n * VariantLayout} instance.\n *\n * A variant compatible with a JavaScript object can be identified\n * using {@link Union#getSourceVariant|getSourceVariant}.\n *\n * @param {(UnionDiscriminator|ExternalLayout|Layout)} discr - How to\n * identify the layout used to interpret the union contents. The\n * parameter must be an instance of {@link UnionDiscriminator}, an\n * {@link ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}, or {@link UInt} (or {@link\n * UIntBE}). When a non-external layout element is passed the layout\n * appears at the start of the union. In all cases the (synthesized)\n * {@link UnionDiscriminator} instance is recorded as {@link\n * Union#discriminator|discriminator}.\n *\n * @param {(Layout|null)} defaultLayout - initializer for {@link\n * Union#defaultLayout|defaultLayout}. If absent defaults to `null`.\n * If `null` there is no default layout: the union has data-dependent\n * length and attempts to decode or encode unrecognized variants will\n * throw an exception. A {@link Layout} instance must have a\n * non-negative {@link Layout#span|span}, and if it lacks a {@link\n * Layout#property|property} the {@link\n * Union#defaultLayout|defaultLayout} will be a {@link\n * Layout#replicate|replica} with property `content`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Union extends Layout {\n constructor(discr, defaultLayout, property) {\n const upv = ((discr instanceof UInt)\n || (discr instanceof UIntBE));\n if (upv) {\n discr = new UnionLayoutDiscriminator(new OffsetLayout(discr));\n } else if ((discr instanceof ExternalLayout)\n && discr.isCount()) {\n discr = new UnionLayoutDiscriminator(discr);\n } else if (!(discr instanceof UnionDiscriminator)) {\n throw new TypeError('discr must be a UnionDiscriminator '\n + 'or an unsigned integer layout');\n }\n if (undefined === defaultLayout) {\n defaultLayout = null;\n }\n if (!((null === defaultLayout)\n || (defaultLayout instanceof Layout))) {\n throw new TypeError('defaultLayout must be null or a Layout');\n }\n if (null !== defaultLayout) {\n if (0 > defaultLayout.span) {\n throw new Error('defaultLayout must have constant span');\n }\n if (undefined === defaultLayout.property) {\n defaultLayout = defaultLayout.replicate('content');\n }\n }\n\n /* The union span can be estimated only if there's a default\n * layout. The union spans its default layout, plus any prefix\n * variant layout. By construction both layouts, if present, have\n * non-negative span. */\n let span = -1;\n if (defaultLayout) {\n span = defaultLayout.span;\n if ((0 <= span) && upv) {\n span += discr.layout.span;\n }\n }\n super(span, property);\n\n /** The interface for the discriminator value in isolation.\n *\n * This a {@link UnionDiscriminator} either passed to the\n * constructor or synthesized from the `discr` constructor\n * argument. {@link\n * Union#usesPrefixDiscriminator|usesPrefixDiscriminator} will be\n * `true` iff the `discr` parameter was a non-offset {@link\n * Layout} instance. */\n this.discriminator = discr;\n\n /** `true` if the {@link Union#discriminator|discriminator} is the\n * first field in the union.\n *\n * If `false` the discriminator is obtained from somewhere\n * else. */\n this.usesPrefixDiscriminator = upv;\n\n /** The layout for non-discriminator content when the value of the\n * discriminator is not recognized.\n *\n * This is the value passed to the constructor. It is\n * structurally equivalent to the second component of {@link\n * Union#layout|layout} but may have a different property\n * name. */\n this.defaultLayout = defaultLayout;\n\n /** A registry of allowed variants.\n *\n * The keys are unsigned integers which should be compatible with\n * {@link Union.discriminator|discriminator}. The property value\n * is the corresponding {@link VariantLayout} instances assigned\n * to this union by {@link Union#addVariant|addVariant}.\n *\n * **NOTE** The registry remains mutable so that variants can be\n * {@link Union#addVariant|added} at any time. Users should not\n * manipulate the content of this property. */\n this.registry = {};\n\n /* Private variable used when invoking getSourceVariant */\n let boundGetSourceVariant = this.defaultGetSourceVariant.bind(this);\n\n /** Function to infer the variant selected by a source object.\n *\n * Defaults to {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant} but may\n * be overridden using {@link\n * Union#configGetSourceVariant|configGetSourceVariant}.\n *\n * @param {Object} src - as with {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * @returns {(undefined|VariantLayout)} The default variant\n * (`undefined`) or first registered variant that uses a property\n * available in `src`. */\n this.getSourceVariant = function(src) {\n return boundGetSourceVariant(src);\n };\n\n /** Function to override the implementation of {@link\n * Union#getSourceVariant|getSourceVariant}.\n *\n * Use this if the desired variant cannot be identified using the\n * algorithm of {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * **NOTE** The provided function will be invoked bound to this\n * Union instance, providing local access to {@link\n * Union#registry|registry}.\n *\n * @param {Function} gsv - a function that follows the API of\n * {@link Union#defaultGetSourceVariant|defaultGetSourceVariant}. */\n this.configGetSourceVariant = function(gsv) {\n boundGetSourceVariant = gsv.bind(this);\n };\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n /* Default layouts always have non-negative span, so we don't have\n * one and we have to recognize the variant which will in turn\n * determine the span. */\n const vlo = this.getVariant(b, offset);\n if (!vlo) {\n throw new Error('unable to determine span for unrecognized variant');\n }\n return vlo.getSpan(b, offset);\n }\n\n /**\n * Method to infer a registered Union variant compatible with `src`.\n *\n * The first satisified rule in the following sequence defines the\n * return value:\n * * If `src` has properties matching the Union discriminator and\n * the default layout, `undefined` is returned regardless of the\n * value of the discriminator property (this ensures the default\n * layout will be used);\n * * If `src` has a property matching the Union discriminator, the\n * value of the discriminator identifies a registered variant, and\n * either (a) the variant has no layout, or (b) `src` has the\n * variant's property, then the variant is returned (because the\n * source satisfies the constraints of the variant it identifies);\n * * If `src` does not have a property matching the Union\n * discriminator, but does have a property matching a registered\n * variant, then the variant is returned (because the source\n * matches a variant without an explicit conflict);\n * * An error is thrown (because we either can't identify a variant,\n * or we were explicitly told the variant but can't satisfy it).\n *\n * @param {Object} src - an object presumed to be compatible with\n * the content of the Union.\n *\n * @return {(undefined|VariantLayout)} - as described above.\n *\n * @throws {Error} - if `src` cannot be associated with a default or\n * registered variant.\n */\n defaultGetSourceVariant(src) {\n if (src.hasOwnProperty(this.discriminator.property)) {\n if (this.defaultLayout\n && src.hasOwnProperty(this.defaultLayout.property)) {\n return undefined;\n }\n const vlo = this.registry[src[this.discriminator.property]];\n if (vlo\n && ((!vlo.layout)\n || src.hasOwnProperty(vlo.property))) {\n return vlo;\n }\n } else {\n for (const tag in this.registry) {\n const vlo = this.registry[tag];\n if (src.hasOwnProperty(vlo.property)) {\n return vlo;\n }\n }\n }\n throw new Error('unable to infer src variant');\n }\n\n /** Implement {@link Layout#decode|decode} for {@link Union}.\n *\n * If the variant is {@link Union#addVariant|registered} the return\n * value is an instance of that variant, with no explicit\n * discriminator. Otherwise the {@link Union#defaultLayout|default\n * layout} is used to decode the content. */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let dest;\n const dlo = this.discriminator;\n const discr = dlo.decode(b, offset);\n let clo = this.registry[discr];\n if (undefined === clo) {\n let contentOffset = 0;\n clo = this.defaultLayout;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dest = this.makeDestinationObject();\n dest[dlo.property] = discr;\n dest[clo.property] = this.defaultLayout.decode(b, offset + contentOffset);\n } else {\n dest = clo.decode(b, offset);\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Union}.\n *\n * This API assumes the `src` object is consistent with the union's\n * {@link Union#defaultLayout|default layout}. To encode variants\n * use the appropriate variant-specific {@link VariantLayout#encode}\n * method. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const vlo = this.getSourceVariant(src);\n if (undefined === vlo) {\n const dlo = this.discriminator;\n const clo = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dlo.encode(src[dlo.property], b, offset);\n return contentOffset + clo.encode(src[clo.property], b,\n offset + contentOffset);\n }\n return vlo.encode(src, b, offset);\n }\n\n /** Register a new variant structure within a union. The newly\n * created variant is returned.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} layout - initializer for {@link\n * VariantLayout#layout|layout}.\n *\n * @param {String} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {VariantLayout} */\n addVariant(variant, layout, property) {\n const rv = new VariantLayout(this, variant, layout, property);\n this.registry[variant] = rv;\n return rv;\n }\n\n /**\n * Get the layout associated with a registered variant.\n *\n * If `vb` does not produce a registered variant the function returns\n * `undefined`.\n *\n * @param {(Number|Buffer)} vb - either the variant number, or a\n * buffer from which the discriminator is to be read.\n *\n * @param {Number} offset - offset into `vb` for the start of the\n * union. Used only when `vb` is an instance of {Buffer}.\n *\n * @return {({VariantLayout}|undefined)}\n */\n getVariant(vb, offset) {\n let variant = vb;\n if (Buffer.isBuffer(vb)) {\n if (undefined === offset) {\n offset = 0;\n }\n variant = this.discriminator.decode(vb, offset);\n }\n return this.registry[variant];\n }\n}\n\n/**\n * Represent a specific variant within a containing union.\n *\n * **NOTE** The {@link Layout#span|span} of the variant may include\n * the span of the {@link Union#discriminator|discriminator} used to\n * identify it, but values read and written using the variant strictly\n * conform to the content of {@link VariantLayout#layout|layout}.\n *\n * **NOTE** User code should not invoke this constructor directly. Use\n * the union {@link Union#addVariant|addVariant} helper method.\n *\n * @param {Union} union - initializer for {@link\n * VariantLayout#union|union}.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} [layout] - initializer for {@link\n * VariantLayout#layout|layout}. If absent the variant carries no\n * data.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}. Unlike many other layouts, variant\n * layouts normally include a property name so they can be identified\n * within their containing {@link Union}. The property identifier may\n * be absent only if `layout` is is absent.\n *\n * @augments {Layout}\n */\nclass VariantLayout extends Layout {\n constructor(union, variant, layout, property) {\n if (!(union instanceof Union)) {\n throw new TypeError('union must be a Union');\n }\n if ((!Number.isInteger(variant)) || (0 > variant)) {\n throw new TypeError('variant must be a (non-negative) integer');\n }\n if (('string' === typeof layout)\n && (undefined === property)) {\n property = layout;\n layout = null;\n }\n if (layout) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if ((null !== union.defaultLayout)\n && (0 <= layout.span)\n && (layout.span > union.defaultLayout.span)) {\n throw new Error('variant span exceeds span of containing union');\n }\n if ('string' !== typeof property) {\n throw new TypeError('variant must have a String property');\n }\n }\n let span = union.span;\n if (0 > union.span) {\n span = layout ? layout.span : 0;\n if ((0 <= span) && union.usesPrefixDiscriminator) {\n span += union.discriminator.layout.span;\n }\n }\n super(span, property);\n\n /** The {@link Union} to which this variant belongs. */\n this.union = union;\n\n /** The unsigned integral value identifying this variant within\n * the {@link Union#discriminator|discriminator} of the containing\n * union. */\n this.variant = variant;\n\n /** The {@link Layout} to be used when reading/writing the\n * non-discriminator part of the {@link\n * VariantLayout#union|union}. If `null` the variant carries no\n * data. */\n this.layout = layout || null;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n /* Will be equal to the containing union span if that is not\n * variable. */\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n /* Span is defined solely by the variant (and prefix discriminator) */\n return contentOffset + this.layout.getSpan(b, offset + contentOffset);\n }\n\n /** @override */\n decode(b, offset) {\n const dest = this.makeDestinationObject();\n if (undefined === offset) {\n offset = 0;\n }\n if (this !== this.union.getVariant(b, offset)) {\n throw new Error('variant mismatch');\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout) {\n dest[this.property] = this.layout.decode(b, offset + contentOffset);\n } else if (this.property) {\n dest[this.property] = true;\n } else if (this.union.usesPrefixDiscriminator) {\n dest[this.union.discriminator.property] = this.variant;\n }\n return dest;\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout\n && (!src.hasOwnProperty(this.property))) {\n throw new TypeError('variant lacks property ' + this.property);\n }\n this.union.discriminator.encode(this.variant, b, offset);\n let span = contentOffset;\n if (this.layout) {\n this.layout.encode(src[this.property], b, offset + contentOffset);\n span += this.layout.getSpan(b, offset + contentOffset);\n if ((0 <= this.union.span)\n && (span > this.union.span)) {\n throw new Error('encoded variant overruns containing union');\n }\n }\n return span;\n }\n\n /** Delegate {@link Layout#fromArray|fromArray} to {@link\n * VariantLayout#layout|layout}. */\n fromArray(values) {\n if (this.layout) {\n return this.layout.fromArray(values);\n }\n }\n}\n\n/** JavaScript chose to define bitwise operations as operating on\n * signed 32-bit values in 2's complement form, meaning any integer\n * with bit 31 set is going to look negative. For right shifts that's\n * not a problem, because `>>>` is a logical shift, but for every\n * other bitwise operator we have to compensate for possible negative\n * results. */\nfunction fixBitwiseResult(v) {\n if (0 > v) {\n v += 0x100000000;\n }\n return v;\n}\n\n/**\n * Contain a sequence of bit fields as an unsigned integer.\n *\n * *Factory*: {@link module:Layout.bits|bits}\n *\n * This is a container element; within it there are {@link BitField}\n * instances that provide the extracted properties. The container\n * simply defines the aggregate representation and its bit ordering.\n * The representation is an object containing properties with numeric\n * or {@link Boolean} values.\n *\n * {@link BitField}s are added with the {@link\n * BitStructure#addField|addField} and {@link\n * BitStructure#addBoolean|addBoolean} methods.\n\n * @param {Layout} word - initializer for {@link\n * BitStructure#word|word}. The parameter must be an instance of\n * {@link UInt} (or {@link UIntBE}) that is no more than 4 bytes wide.\n *\n * @param {bool} [msb] - `true` if the bit numbering starts at the\n * most significant bit of the containing word; `false` (default) if\n * it starts at the least significant bit of the containing word. If\n * the parameter at this position is a string and `property` is\n * `undefined` the value of this argument will instead be used as the\n * value of `property`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass BitStructure extends Layout {\n constructor(word, msb, property) {\n if (!((word instanceof UInt)\n || (word instanceof UIntBE))) {\n throw new TypeError('word must be a UInt or UIntBE layout');\n }\n if (('string' === typeof msb)\n && (undefined === property)) {\n property = msb;\n msb = undefined;\n }\n if (4 < word.span) {\n throw new RangeError('word cannot exceed 32 bits');\n }\n super(word.span, property);\n\n /** The layout used for the packed value. {@link BitField}\n * instances are packed sequentially depending on {@link\n * BitStructure#msb|msb}. */\n this.word = word;\n\n /** Whether the bit sequences are packed starting at the most\n * significant bit growing down (`true`), or the least significant\n * bit growing up (`false`).\n *\n * **NOTE** Regardless of this value, the least significant bit of\n * any {@link BitField} value is the least significant bit of the\n * corresponding section of the packed value. */\n this.msb = !!msb;\n\n /** The sequence of {@link BitField} layouts that comprise the\n * packed structure.\n *\n * **NOTE** The array remains mutable to allow fields to be {@link\n * BitStructure#addField|added} after construction. Users should\n * not manipulate the content of this property.*/\n this.fields = [];\n\n /* Storage for the value. Capture a variable instead of using an\n * instance property because we don't want anything to change the\n * value without going through the mutator. */\n let value = 0;\n this._packedSetValue = function(v) {\n value = fixBitwiseResult(v);\n return this;\n };\n this._packedGetValue = function() {\n return value;\n };\n }\n\n /** @override */\n decode(b, offset) {\n const dest = this.makeDestinationObject();\n if (undefined === offset) {\n offset = 0;\n }\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(value);\n }\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link BitStructure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the packed\n * value is left unmodified. Unused bits are also left unmodified. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n fd.encode(fv);\n }\n }\n }\n return this.word.encode(this._packedGetValue(), b, offset);\n }\n\n /** Register a new bitfield with a containing bit structure. The\n * resulting bitfield is returned.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {BitField} */\n addField(bits, property) {\n const bf = new BitField(this, bits, property);\n this.fields.push(bf);\n return bf;\n }\n\n /** As with {@link BitStructure#addField|addField} for single-bit\n * fields with `boolean` value representation.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {Boolean} */\n addBoolean(property) {\n // This is my Boolean, not the Javascript one.\n // eslint-disable-next-line no-new-wrappers\n const bf = new Boolean(this, property);\n this.fields.push(bf);\n return bf;\n }\n\n /**\n * Get access to the bit field for a given property.\n *\n * @param {String} property - the bit field of interest.\n *\n * @return {BitField} - the field associated with `property`, or\n * undefined if there is no such property.\n */\n fieldFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n }\n}\n\n/**\n * Represent a sequence of bits within a {@link BitStructure}.\n *\n * All bit field values are represented as unsigned integers.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addField|addField} helper\n * method.\n *\n * **NOTE** BitField instances are not instances of {@link Layout}\n * since {@link Layout#span|span} measures 8-bit units.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n */\nclass BitField {\n constructor(container, bits, property) {\n if (!(container instanceof BitStructure)) {\n throw new TypeError('container must be a BitStructure');\n }\n if ((!Number.isInteger(bits)) || (0 >= bits)) {\n throw new TypeError('bits must be positive integer');\n }\n const totalBits = 8 * container.span;\n const usedBits = container.fields.reduce((sum, fd) => sum + fd.bits, 0);\n if ((bits + usedBits) > totalBits) {\n throw new Error('bits too long for span remainder ('\n + (totalBits - usedBits) + ' of '\n + totalBits + ' remain)');\n }\n\n /** The {@link BitStructure} instance to which this bit field\n * belongs. */\n this.container = container;\n\n /** The span of this value in bits. */\n this.bits = bits;\n\n /** A mask of {@link BitField#bits|bits} bits isolating value bits\n * that fit within the field.\n *\n * That is, it masks a value that has not yet been shifted into\n * position within its containing packed integer. */\n this.valueMask = (1 << bits) - 1;\n if (32 === bits) { // shifted value out of range\n this.valueMask = 0xFFFFFFFF;\n }\n\n /** The offset of the value within the containing packed unsigned\n * integer. The least significant bit of the packed value is at\n * offset zero, regardless of bit ordering used. */\n this.start = usedBits;\n if (this.container.msb) {\n this.start = totalBits - usedBits - bits;\n }\n\n /** A mask of {@link BitField#bits|bits} isolating the field value\n * within the containing packed unsigned integer. */\n this.wordMask = fixBitwiseResult(this.valueMask << this.start);\n\n /** The property name used when this bitfield is represented in an\n * Object.\n *\n * Intended to be functionally equivalent to {@link\n * Layout#property}.\n *\n * If left undefined the corresponding span of bits will be\n * treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n\n /** Store a value into the corresponding subsequence of the containing\n * bit field. */\n decode() {\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(word & this.wordMask);\n const value = wordValue >>> this.start;\n return value;\n }\n\n /** Store a value into the corresponding subsequence of the containing\n * bit field.\n *\n * **NOTE** This is not a specialization of {@link\n * Layout#encode|Layout.encode} and there is no return value. */\n encode(value) {\n if ((!Number.isInteger(value))\n || (value !== fixBitwiseResult(value & this.valueMask))) {\n throw new TypeError(nameWithProperty('BitField.encode', this)\n + ' value must be integer not exceeding ' + this.valueMask);\n }\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(value << this.start);\n this.container._packedSetValue(fixBitwiseResult(word & ~this.wordMask)\n | wordValue);\n };\n}\n\n/**\n * Represent a single bit within a {@link BitStructure} as a\n * JavaScript boolean.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addBoolean|addBoolean} helper\n * method.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {BitField}\n */\n/* eslint-disable no-extend-native */\nclass Boolean extends BitField {\n constructor(container, property) {\n super(container, 1, property);\n }\n\n /** Override {@link BitField#decode|decode} for {@link Boolean|Boolean}.\n *\n * @returns {boolean} */\n decode(b, offset) {\n return !!BitField.prototype.decode.call(this, b, offset);\n }\n\n /** @override */\n encode(value) {\n if ('boolean' === typeof value) {\n // BitField requires integer values\n value = +value;\n }\n return BitField.prototype.encode.call(this, value);\n }\n}\n/* eslint-enable no-extend-native */\n\n/**\n * Contain a fixed-length block of arbitrary data, represented as a\n * Buffer.\n *\n * *Factory*: {@link module:Layout.blob|blob}\n *\n * @param {(Number|ExternalLayout)} length - initializes {@link\n * Blob#length|length}.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Blob extends Layout {\n constructor(length, property) {\n if (!(((length instanceof ExternalLayout) && length.isCount())\n || (Number.isInteger(length) && (0 <= length)))) {\n throw new TypeError('length must be positive integer '\n + 'or an unsigned integer ExternalLayout');\n }\n\n let span = -1;\n if (!(length instanceof ExternalLayout)) {\n span = length;\n }\n super(span, property);\n\n /** The number of bytes in the blob.\n *\n * This may be a non-negative integer, or an instance of {@link\n * ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}. */\n this.length = length;\n }\n\n /** @override */\n getSpan(b, offset) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return b.slice(offset, offset + span);\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Blob}.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n let span = this.length;\n if (this.length instanceof ExternalLayout) {\n span = src.length;\n }\n if (!(Buffer.isBuffer(src)\n && (span === src.length))) {\n throw new TypeError(nameWithProperty('Blob.encode', this)\n + ' requires (length ' + span + ') Buffer as src');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n b.write(src.toString('hex'), offset, span, 'hex');\n if (this.length instanceof ExternalLayout) {\n this.length.encode(span, b, offset);\n }\n return span;\n }\n}\n\n/**\n * Contain a `NUL`-terminated UTF8 string.\n *\n * *Factory*: {@link module:Layout.cstr|cstr}\n *\n * **NOTE** Any UTF8 string that incorporates a zero-valued byte will\n * not be correctly decoded by this layout.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass CString extends Layout {\n constructor(property) {\n super(-1, property);\n }\n\n /** @override */\n getSpan(b, offset) {\n if (!Buffer.isBuffer(b)) {\n throw new TypeError('b must be a Buffer');\n }\n if (undefined === offset) {\n offset = 0;\n }\n let idx = offset;\n while ((idx < b.length) && (0 !== b[idx])) {\n idx += 1;\n }\n return 1 + idx - offset;\n }\n\n /** @override */\n decode(b, offset, dest) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.getSpan(b, offset);\n return b.slice(offset, offset + span - 1).toString('utf-8');\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = src.toString();\n }\n const srcb = new Buffer(src, 'utf8');\n const span = srcb.length;\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(b, offset);\n b[offset + span] = 0;\n return span + 1;\n }\n}\n\n/**\n * Contain a UTF8 string with implicit length.\n *\n * *Factory*: {@link module:Layout.utf8|utf8}\n *\n * **NOTE** Because the length is implicit in the size of the buffer\n * this layout should be used only in isolation, or in a situation\n * where the length can be expressed by operating on a slice of the\n * containing buffer.\n *\n * @param {Number} [maxSpan] - the maximum length allowed for encoded\n * string content. If not provided there is no bound on the allowed\n * content.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UTF8 extends Layout {\n constructor(maxSpan, property) {\n if (('string' === typeof maxSpan)\n && (undefined === property)) {\n property = maxSpan;\n maxSpan = undefined;\n }\n if (undefined === maxSpan) {\n maxSpan = -1;\n } else if (!Number.isInteger(maxSpan)) {\n throw new TypeError('maxSpan must be an integer');\n }\n\n super(-1, property);\n\n /** The maximum span of the layout in bytes.\n *\n * Positive values are generally expected. Zero is abnormal.\n * Attempts to encode or decode a value that exceeds this length\n * will throw a `RangeError`.\n *\n * A negative value indicates that there is no bound on the length\n * of the content. */\n this.maxSpan = maxSpan;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (!Buffer.isBuffer(b)) {\n throw new TypeError('b must be a Buffer');\n }\n if (undefined === offset) {\n offset = 0;\n }\n return b.length - offset;\n }\n\n /** @override */\n decode(b, offset, dest) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.getSpan(b, offset);\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n return b.slice(offset, offset + span).toString('utf-8');\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = src.toString();\n }\n const srcb = new Buffer(src, 'utf8');\n const span = srcb.length;\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(b, offset);\n return span;\n }\n}\n\n/**\n * Contain a constant value.\n *\n * This layout may be used in cases where a JavaScript value can be\n * inferred without an expression in the binary encoding. An example\n * would be a {@link VariantLayout|variant layout} where the content\n * is implied by the union {@link Union#discriminator|discriminator}.\n *\n * @param {Object|Number|String} value - initializer for {@link\n * Constant#value|value}. If the value is an object (or array) and\n * the application intends the object to remain unchanged regardless\n * of what is done to values decoded by this layout, the value should\n * be frozen prior passing it to this constructor.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Constant extends Layout {\n constructor(value, property) {\n super(0, property);\n\n /** The value produced by this constant when the layout is {@link\n * Constant#decode|decoded}.\n *\n * Any JavaScript value including `null` and `undefined` is\n * permitted.\n *\n * **WARNING** If `value` passed in the constructor was not\n * frozen, it is possible for users of decoded values to change\n * the content of the value. */\n this.value = value;\n }\n\n /** @override */\n decode(b, offset, dest) {\n return this.value;\n }\n\n /** @override */\n encode(src, b, offset) {\n /* Constants take no space */\n return 0;\n }\n}\n\nexports.ExternalLayout = ExternalLayout;\nexports.GreedyCount = GreedyCount;\nexports.OffsetLayout = OffsetLayout;\nexports.UInt = UInt;\nexports.UIntBE = UIntBE;\nexports.Int = Int;\nexports.IntBE = IntBE;\nexports.Float = Float;\nexports.FloatBE = FloatBE;\nexports.Double = Double;\nexports.DoubleBE = DoubleBE;\nexports.Sequence = Sequence;\nexports.Structure = Structure;\nexports.UnionDiscriminator = UnionDiscriminator;\nexports.UnionLayoutDiscriminator = UnionLayoutDiscriminator;\nexports.Union = Union;\nexports.VariantLayout = VariantLayout;\nexports.BitStructure = BitStructure;\nexports.BitField = BitField;\nexports.Boolean = Boolean;\nexports.Blob = Blob;\nexports.CString = CString;\nexports.UTF8 = UTF8;\nexports.Constant = Constant;\n\n/** Factory for {@link GreedyCount}. */\nexports.greedy = ((elementSpan, property) => new GreedyCount(elementSpan, property));\n\n/** Factory for {@link OffsetLayout}. */\nexports.offset = ((layout, offset, property) => new OffsetLayout(layout, offset, property));\n\n/** Factory for {@link UInt|unsigned int layouts} spanning one\n * byte. */\nexports.u8 = (property => new UInt(1, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16 = (property => new UInt(2, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24 = (property => new UInt(3, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32 = (property => new UInt(4, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40 = (property => new UInt(5, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48 = (property => new UInt(6, property));\n\n/** Factory for {@link NearUInt64|little-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64 = (property => new NearUInt64(property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16be = (property => new UIntBE(2, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24be = (property => new UIntBE(3, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32be = (property => new UIntBE(4, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40be = (property => new UIntBE(5, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48be = (property => new UIntBE(6, property));\n\n/** Factory for {@link NearUInt64BE|big-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64be = (property => new NearUInt64BE(property));\n\n/** Factory for {@link Int|signed int layouts} spanning one\n * byte. */\nexports.s8 = (property => new Int(1, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning two bytes. */\nexports.s16 = (property => new Int(2, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning three bytes. */\nexports.s24 = (property => new Int(3, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning four bytes. */\nexports.s32 = (property => new Int(4, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning five bytes. */\nexports.s40 = (property => new Int(5, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning six bytes. */\nexports.s48 = (property => new Int(6, property));\n\n/** Factory for {@link NearInt64|little-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64 = (property => new NearInt64(property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning two bytes. */\nexports.s16be = (property => new IntBE(2, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning three bytes. */\nexports.s24be = (property => new IntBE(3, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning four bytes. */\nexports.s32be = (property => new IntBE(4, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning five bytes. */\nexports.s40be = (property => new IntBE(5, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning six bytes. */\nexports.s48be = (property => new IntBE(6, property));\n\n/** Factory for {@link NearInt64BE|big-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64be = (property => new NearInt64BE(property));\n\n/** Factory for {@link Float|little-endian 32-bit floating point} values. */\nexports.f32 = (property => new Float(property));\n\n/** Factory for {@link FloatBE|big-endian 32-bit floating point} values. */\nexports.f32be = (property => new FloatBE(property));\n\n/** Factory for {@link Double|little-endian 64-bit floating point} values. */\nexports.f64 = (property => new Double(property));\n\n/** Factory for {@link DoubleBE|big-endian 64-bit floating point} values. */\nexports.f64be = (property => new DoubleBE(property));\n\n/** Factory for {@link Structure} values. */\nexports.struct = ((fields, property, decodePrefixes) => new Structure(fields, property, decodePrefixes));\n\n/** Factory for {@link BitStructure} values. */\nexports.bits = ((word, msb, property) => new BitStructure(word, msb, property));\n\n/** Factory for {@link Sequence} values. */\nexports.seq = ((elementLayout, count, property) => new Sequence(elementLayout, count, property));\n\n/** Factory for {@link Union} values. */\nexports.union = ((discr, defaultLayout, property) => new Union(discr, defaultLayout, property));\n\n/** Factory for {@link UnionLayoutDiscriminator} values. */\nexports.unionLayoutDiscriminator = ((layout, property) => new UnionLayoutDiscriminator(layout, property));\n\n/** Factory for {@link Blob} values. */\nexports.blob = ((length, property) => new Blob(length, property));\n\n/** Factory for {@link CString} values. */\nexports.cstr = (property => new CString(property));\n\n/** Factory for {@link UTF8} values. */\nexports.utf8 = ((maxSpan, property) => new UTF8(maxSpan, property));\n\n/** Factory for {@link Constant} values. */\nexports.const = ((value, property) => new Constant(value, property));\n","import type { ConfirmOptions, Connection, Keypair, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { getAccountLenForMint } from '../extensions/extensionType.js';\nimport { createInitializeAccountInstruction } from '../instructions/initializeAccount.js';\nimport { getMint } from '../state/mint.js';\nimport { createAssociatedTokenAccount } from './createAssociatedTokenAccount.js';\n\n/**\n * Create and initialize a new token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mint Mint for the account\n * @param owner Owner of the new account\n * @param keypair Optional keypair, defaulting to the associated token account for the `mint` and `owner`\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Address of the new token account\n */\nexport async function createAccount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n owner: PublicKey,\n keypair?: Keypair,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n // If a keypair isn't provided, create the associated token account and return its address\n if (!keypair) return await createAssociatedTokenAccount(connection, payer, mint, owner, confirmOptions, programId);\n\n // Otherwise, create the account with the provided keypair and return its public key\n const mintState = await getMint(connection, mint, confirmOptions?.commitment, programId);\n const space = getAccountLenForMint(mintState);\n const lamports = await connection.getMinimumBalanceForRentExemption(space);\n\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space,\n lamports,\n programId,\n }),\n createInitializeAccountInstruction(keypair.publicKey, mint, owner, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n\n return keypair.publicKey;\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface ApproveInstructionData {\n instruction: TokenInstruction.Approve;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const approveInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct an Approve instruction\n *\n * @param account Account to set the delegate for\n * @param delegate Account authorized to transfer tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createApproveInstruction(\n account: PublicKey,\n delegate: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: delegate, isSigner: false, isWritable: false },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(approveInstructionData.span);\n approveInstructionData.encode(\n {\n instruction: TokenInstruction.Approve,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Approve instruction */\nexport interface DecodedApproveInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n delegate: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Approve;\n amount: bigint;\n };\n}\n\n/**\n * Decode an Approve instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeApproveInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedApproveInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== approveInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, delegate, owner, multiSigners },\n data,\n } = decodeApproveInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Approve) throw new TokenInvalidInstructionTypeError();\n if (!account || !delegate || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n delegate,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Approve instruction */\nexport interface DecodedApproveInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n delegate: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode an Approve instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeApproveInstructionUnchecked({\n programId,\n keys: [account, delegate, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedApproveInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n delegate,\n owner,\n multiSigners,\n },\n data: approveInstructionData.decode(data),\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrows_vertical = void 0;\nvar arrows_vertical = {\n \"viewBox\": \"0 0 64 64\",\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {\n \"id\": \"ARROWS__x2F__VERTICAL_1_\",\n \"enable-background\": \"new \"\n },\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {\n \"id\": \"ARROWS__x2F__VERTICAL\"\n },\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {\n \"id\": \"ARROWS__x2F__VERTICAL\"\n },\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M57,51c0-1.657-1.343-3-3-3c-0.885,0-1.673,0.391-2.223,1l-0.008-0.007L48,53.182V29l0,0V3c0-1.657-1.343-3-3-3\\r\\n\\t\\t\\t\\ts-3,1.343-3,3v7.818l0,0V26l0,0v13l0,0v14.182l-3.77-4.188L38.223,49c-0.55-0.609-1.338-1-2.223-1c-1.657,0-3,1.343-3,3\\r\\n\\t\\t\\t\\tc0,0.771,0.3,1.468,0.777,2l-0.008,0.007l9,10L42.777,63c0.55,0.609,1.338,1,2.223,1s1.672-0.391,2.223-1l0.008,0.007l9-10\\r\\n\\t\\t\\t\\tL56.223,53C56.701,52.468,57,51.771,57,51z M30.23,10.993l-9-10L21.222,1C20.673,0.391,19.885,0,19,0s-1.673,0.391-2.222,1.001\\r\\n\\t\\t\\t\\tL16.77,0.993l-9,10L7.778,11C7.3,11.532,7,12.228,7,13c0,1.657,1.343,3,3,3c0.885,0,1.673-0.391,2.222-1l0.008,0.007L16,10.818\\r\\n\\t\\t\\t\\tV25l0,0v13l0,0v15.182l0,0V61c0,1.657,1.343,3,3,3s3-1.343,3-3V29l0,0V10.818l3.77,4.189L25.778,15c0.549,0.61,1.337,1,2.222,1\\r\\n\\t\\t\\t\\tc1.657,0,3-1.343,3-3c0-0.772-0.299-1.468-0.778-2L30.23,10.993z\"\n },\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M57,51c0-1.657-1.343-3-3-3c-0.885,0-1.673,0.391-2.223,1l-0.008-0.007L48,53.182V29l0,0V3c0-1.657-1.343-3-3-3\\r\\n\\t\\t\\t\\ts-3,1.343-3,3v7.818l0,0V26l0,0v13l0,0v14.182l-3.77-4.188L38.223,49c-0.55-0.609-1.338-1-2.223-1c-1.657,0-3,1.343-3,3\\r\\n\\t\\t\\t\\tc0,0.771,0.3,1.468,0.777,2l-0.008,0.007l9,10L42.777,63c0.55,0.609,1.338,1,2.223,1s1.672-0.391,2.223-1l0.008,0.007l9-10\\r\\n\\t\\t\\t\\tL56.223,53C56.701,52.468,57,51.771,57,51z M30.23,10.993l-9-10L21.222,1C20.673,0.391,19.885,0,19,0s-1.673,0.391-2.222,1.001\\r\\n\\t\\t\\t\\tL16.77,0.993l-9,10L7.778,11C7.3,11.532,7,12.228,7,13c0,1.657,1.343,3,3,3c0.885,0,1.673-0.391,2.222-1l0.008,0.007L16,10.818\\r\\n\\t\\t\\t\\tV25l0,0v13l0,0v15.182l0,0V61c0,1.657,1.343,3,3,3s3-1.343,3-3V29l0,0V10.818l3.77,4.189L25.778,15c0.549,0.61,1.337,1,2.222,1\\r\\n\\t\\t\\t\\tc1.657,0,3-1.343,3-3c0-0.772-0.299-1.468-0.778-2L30.23,10.993z\"\n },\n \"children\": []\n }]\n }]\n }]\n }]\n }]\n }]\n }]\n};\nexports.arrows_vertical = arrows_vertical;","'use strict';\n\nconst uuid = require('uuid').v4;\nconst generateRequest = require('../../generateRequest');\n\n/**\n * Constructor for a Jayson Browser Client that does not depend any node.js core libraries\n * @class ClientBrowser\n * @param {Function} callServer Method that calls the server, receives the stringified request and a regular node-style callback\n * @param {Object} [options]\n * @param {Function} [options.reviver] Reviver function for JSON\n * @param {Function} [options.replacer] Replacer function for JSON\n * @param {Number} [options.version=2] JSON-RPC version to use (1|2)\n * @param {Function} [options.generator] Function to use for generating request IDs\n * @param {Boolean} [options.notificationIdNull=false] When true, version 2 requests will set id to null instead of omitting it\n * @return {ClientBrowser}\n */\nconst ClientBrowser = function(callServer, options) {\n if(!(this instanceof ClientBrowser)) {\n return new ClientBrowser(callServer, options);\n }\n\n if (!options) {\n options = {};\n }\n\n this.options = {\n reviver: typeof options.reviver !== 'undefined' ? options.reviver : null,\n replacer: typeof options.replacer !== 'undefined' ? options.replacer : null,\n generator: typeof options.generator !== 'undefined' ? options.generator : function() { return uuid(); },\n version: typeof options.version !== 'undefined' ? options.version : 2,\n notificationIdNull: typeof options.notificationIdNull === 'boolean' ? options.notificationIdNull : false,\n };\n\n this.callServer = callServer;\n};\n\nmodule.exports = ClientBrowser;\n\n/**\n * Creates a request and dispatches it if given a callback.\n * @param {String|Array} method A batch request if passed an Array, or a method name if passed a String\n * @param {Array|Object} [params] Parameters for the method\n * @param {String|Number} [id] Optional id. If undefined an id will be generated. If null it creates a notification request\n * @param {Function} [callback] Request callback. If specified, executes the request rather than only returning it.\n * @throws {TypeError} Invalid parameters\n * @return {Object} JSON-RPC 1.0 or 2.0 compatible request\n */\nClientBrowser.prototype.request = function(method, params, id, callback) {\n const self = this;\n let request = null;\n\n // is this a batch request?\n const isBatch = Array.isArray(method) && typeof params === 'function';\n\n if (this.options.version === 1 && isBatch) {\n throw new TypeError('JSON-RPC 1.0 does not support batching');\n }\n\n // is this a raw request?\n const isRaw = !isBatch && method && typeof method === 'object' && typeof params === 'function';\n\n if(isBatch || isRaw) {\n callback = params;\n request = method;\n } else {\n if(typeof id === 'function') {\n callback = id;\n // specifically undefined because \"null\" is a notification request\n id = undefined;\n }\n\n const hasCallback = typeof callback === 'function';\n\n try {\n request = generateRequest(method, params, id, {\n generator: this.options.generator,\n version: this.options.version,\n notificationIdNull: this.options.notificationIdNull,\n });\n } catch(err) {\n if(hasCallback) {\n return callback(err);\n }\n throw err;\n }\n\n // no callback means we should just return a raw request\n if(!hasCallback) {\n return request;\n }\n\n }\n\n let message;\n try {\n message = JSON.stringify(request, this.options.replacer);\n } catch(err) {\n return callback(err);\n }\n\n this.callServer(message, function(err, response) {\n self._parseResponse(err, response, callback);\n });\n\n // always return the raw request\n return request;\n};\n\n/**\n * Parses a response from a server\n * @param {Object} err Error to pass on that is unrelated to the actual response\n * @param {String} responseText JSON-RPC 1.0 or 2.0 response\n * @param {Function} callback Callback that will receive different arguments depending on the amount of parameters\n * @private\n */\nClientBrowser.prototype._parseResponse = function(err, responseText, callback) {\n if(err) {\n callback(err);\n return;\n }\n\n if(!responseText) {\n // empty response text, assume that is correct because it could be a\n // notification which jayson does not give any body for\n return callback();\n }\n\n let response;\n try {\n response = JSON.parse(responseText, this.options.reviver);\n } catch(err) {\n return callback(err);\n }\n\n if(callback.length === 3) {\n // if callback length is 3, we split callback arguments on error and response\n\n // is batch response?\n if(Array.isArray(response)) {\n\n // neccesary to split strictly on validity according to spec here\n const isError = function(res) {\n return typeof res.error !== 'undefined';\n };\n\n const isNotError = function (res) {\n return !isError(res);\n };\n\n return callback(null, response.filter(isError), response.filter(isNotError));\n \n } else {\n\n // split regardless of validity\n return callback(null, response.error, response.result);\n \n }\n \n }\n\n callback(null, response);\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapDirection = void 0;\r\nvar SwapDirection;\r\n(function (SwapDirection) {\r\n SwapDirection[SwapDirection[\"FROM_BTC\"] = 0] = \"FROM_BTC\";\r\n SwapDirection[SwapDirection[\"TO_BTC\"] = 1] = \"TO_BTC\";\r\n})(SwapDirection = exports.SwapDirection || (exports.SwapDirection = {}));\r\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaBase = void 0;\r\nconst SolanaFees_1 = require(\"./modules/SolanaFees\");\r\nconst SolanaBlocks_1 = require(\"./modules/SolanaBlocks\");\r\nconst SolanaSlots_1 = require(\"./modules/SolanaSlots\");\r\nconst SolanaTokens_1 = require(\"./modules/SolanaTokens\");\r\nconst SolanaTransactions_1 = require(\"./modules/SolanaTransactions\");\r\nconst SolanaAddresses_1 = require(\"./modules/SolanaAddresses\");\r\nconst SolanaSignatures_1 = require(\"./modules/SolanaSignatures\");\r\nconst SolanaEvents_1 = require(\"./modules/SolanaEvents\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass SolanaBase {\r\n constructor(connection, retryPolicy, solanaFeeEstimator = new SolanaFees_1.SolanaFees(connection)) {\r\n this.SLOT_TIME = 400;\r\n this.TX_SLOT_VALIDITY = 151;\r\n this.logger = (0, Utils_1.getLogger)(this.constructor.name + \": \");\r\n this.connection = connection;\r\n this.retryPolicy = retryPolicy;\r\n this.Blocks = new SolanaBlocks_1.SolanaBlocks(this);\r\n this.Fees = solanaFeeEstimator;\r\n this.Slots = new SolanaSlots_1.SolanaSlots(this);\r\n this.Tokens = new SolanaTokens_1.SolanaTokens(this);\r\n this.Transactions = new SolanaTransactions_1.SolanaTransactions(this);\r\n this.Addresses = new SolanaAddresses_1.SolanaAddresses(this);\r\n this.Signatures = new SolanaSignatures_1.SolanaSignatures(this);\r\n this.Events = new SolanaEvents_1.SolanaEvents(this);\r\n }\r\n}\r\nexports.SolanaBase = SolanaBase;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StreamParamEncoder = void 0;\r\nconst ParamEncoder_1 = require(\"../ParamEncoder\");\r\nclass StreamParamEncoder extends ParamEncoder_1.ParamEncoder {\r\n constructor() {\r\n let stream = new TransformStream();\r\n let writeStream = stream.writable.getWriter();\r\n writeStream.closed.then(() => this.closed = true);\r\n super(writeStream.write.bind(writeStream), () => {\r\n if (this.closed)\r\n return Promise.resolve();\r\n this.closed = true;\r\n return writeStream.close();\r\n });\r\n this.closed = false;\r\n this.stream = stream;\r\n }\r\n /**\r\n * Returns the readable stream to be passed to the fetch API\r\n */\r\n getReadableStream() {\r\n return this.stream.readable;\r\n }\r\n}\r\nexports.StreamParamEncoder = StreamParamEncoder;\r\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/**\n * @param url - URL we want to extract a hostname from.\n * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.\n */\nexport default function extractHostname(\n url: string,\n urlIsValidHostname: boolean,\n): string | null {\n let start = 0;\n let end: number = url.length;\n let hasUpper = false;\n\n // If url is not already a valid hostname, then try to extract hostname.\n if (!urlIsValidHostname) {\n // Special handling of data URLs\n if (url.startsWith('data:')) {\n return null;\n }\n\n // Trim leading spaces\n while (start < url.length && url.charCodeAt(start) <= 32) {\n start += 1;\n }\n\n // Trim trailing spaces\n while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {\n end -= 1;\n }\n\n // Skip scheme.\n if (\n url.charCodeAt(start) === 47 /* '/' */ &&\n url.charCodeAt(start + 1) === 47 /* '/' */\n ) {\n start += 2;\n } else {\n const indexOfProtocol = url.indexOf(':/', start);\n if (indexOfProtocol !== -1) {\n // Implement fast-path for common protocols. We expect most protocols\n // should be one of these 4 and thus we will not need to perform the\n // more expansive validity check most of the time.\n const protocolSize = indexOfProtocol - start;\n const c0 = url.charCodeAt(start);\n const c1 = url.charCodeAt(start + 1);\n const c2 = url.charCodeAt(start + 2);\n const c3 = url.charCodeAt(start + 3);\n const c4 = url.charCodeAt(start + 4);\n\n if (\n protocolSize === 5 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */ &&\n c4 === 115 /* 's' */\n ) {\n // https\n } else if (\n protocolSize === 4 &&\n c0 === 104 /* 'h' */ &&\n c1 === 116 /* 't' */ &&\n c2 === 116 /* 't' */ &&\n c3 === 112 /* 'p' */\n ) {\n // http\n } else if (\n protocolSize === 3 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */ &&\n c2 === 115 /* 's' */\n ) {\n // wss\n } else if (\n protocolSize === 2 &&\n c0 === 119 /* 'w' */ &&\n c1 === 115 /* 's' */\n ) {\n // ws\n } else {\n // Check that scheme is valid\n for (let i = start; i < indexOfProtocol; i += 1) {\n const lowerCaseCode = url.charCodeAt(i) | 32;\n if (\n !(\n (\n (lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]\n (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]\n lowerCaseCode === 46 || // '.'\n lowerCaseCode === 45 || // '-'\n lowerCaseCode === 43\n ) // '+'\n )\n ) {\n return null;\n }\n }\n }\n\n // Skip 0, 1 or more '/' after ':/'\n start = indexOfProtocol + 2;\n while (url.charCodeAt(start) === 47 /* '/' */) {\n start += 1;\n }\n }\n }\n\n // Detect first occurrence of '/', '?' or '#'. We also keep track of the\n // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of\n // (respectively), identifier, ipv6 or port.\n let indexOfIdentifier = -1;\n let indexOfClosingBracket = -1;\n let indexOfPort = -1;\n for (let i = start; i < end; i += 1) {\n const code: number = url.charCodeAt(i);\n if (\n code === 35 || // '#'\n code === 47 || // '/'\n code === 63 // '?'\n ) {\n end = i;\n break;\n } else if (code === 64) {\n // '@'\n indexOfIdentifier = i;\n } else if (code === 93) {\n // ']'\n indexOfClosingBracket = i;\n } else if (code === 58) {\n // ':'\n indexOfPort = i;\n } else if (code >= 65 && code <= 90) {\n hasUpper = true;\n }\n }\n\n // Detect identifier: '@'\n if (\n indexOfIdentifier !== -1 &&\n indexOfIdentifier > start &&\n indexOfIdentifier < end\n ) {\n start = indexOfIdentifier + 1;\n }\n\n // Handle ipv6 addresses\n if (url.charCodeAt(start) === 91 /* '[' */) {\n if (indexOfClosingBracket !== -1) {\n return url.slice(start + 1, indexOfClosingBracket).toLowerCase();\n }\n return null;\n } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {\n // Detect port: ':'\n end = indexOfPort;\n }\n }\n\n // Trim trailing dots\n while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {\n end -= 1;\n }\n\n const hostname: string =\n start !== 0 || end !== url.length ? url.slice(start, end) : url;\n\n if (hasUpper) {\n return hostname.toLowerCase();\n }\n\n return hostname;\n}\n","/**\n * Implements fast shallow verification of hostnames. This does not perform a\n * struct check on the content of labels (classes of Unicode characters, etc.)\n * but instead check that the structure is valid (number of labels, length of\n * labels, etc.).\n *\n * If you need stricter validation, consider using an external library.\n */\n\nfunction isValidAscii(code: number): boolean {\n return (\n (code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127\n );\n}\n\n/**\n * Check if a hostname string is valid. It's usually a preliminary check before\n * trying to use getDomain or anything else.\n *\n * Beware: it does not check if the TLD exists.\n */\nexport default function (hostname: string): boolean {\n if (hostname.length > 255) {\n return false;\n }\n\n if (hostname.length === 0) {\n return false;\n }\n\n if (\n /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&\n hostname.charCodeAt(0) !== 46 && // '.' (dot)\n hostname.charCodeAt(0) !== 95 // '_' (underscore)\n ) {\n return false;\n }\n\n // Validate hostname according to RFC\n let lastDotIndex = -1;\n let lastCharCode = -1;\n const len = hostname.length;\n\n for (let i = 0; i < len; i += 1) {\n const code = hostname.charCodeAt(i);\n if (code === 46 /* '.' */) {\n if (\n // Check that previous label is < 63 bytes long (64 = 63 + '.')\n i - lastDotIndex > 64 ||\n // Check that previous character was not already a '.'\n lastCharCode === 46 ||\n // Check that the previous label does not end with a '-' (dash)\n lastCharCode === 45 ||\n // Check that the previous label does not end with a '_' (underscore)\n lastCharCode === 95\n ) {\n return false;\n }\n\n lastDotIndex = i;\n } else if (\n !(/*@__INLINE__*/ (isValidAscii(code) || code === 45 || code === 95))\n ) {\n // Check if there is a forbidden character in the label\n return false;\n }\n\n lastCharCode = code;\n }\n\n return (\n // Check that last label is shorter than 63 chars\n len - lastDotIndex - 1 <= 63 &&\n // Check that the last character is an allowed trailing label character.\n // Since we already checked that the char is a valid hostname character,\n // we only need to check that it's different from '-'.\n lastCharCode !== 45\n );\n}\n","export interface IOptions {\n allowIcannDomains: boolean;\n allowPrivateDomains: boolean;\n detectIp: boolean;\n extractHostname: boolean;\n mixedInputs: boolean;\n validHosts: string[] | null;\n validateHostname: boolean;\n}\n\nfunction setDefaultsImpl({\n allowIcannDomains = true,\n allowPrivateDomains = false,\n detectIp = true,\n extractHostname = true,\n mixedInputs = true,\n validHosts = null,\n validateHostname = true,\n}: Partial): IOptions {\n return {\n allowIcannDomains,\n allowPrivateDomains,\n detectIp,\n extractHostname,\n mixedInputs,\n validHosts,\n validateHostname,\n };\n}\n\nconst DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});\n\nexport function setDefaults(options?: Partial): IOptions {\n if (options === undefined) {\n return DEFAULT_OPTIONS;\n }\n\n return /*@__INLINE__*/ setDefaultsImpl(options);\n}\n","/**\n * Implement a factory allowing to plug different implementations of suffix\n * lookup (e.g.: using a trie or the packed hashes datastructures). This is used\n * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.\n */\n\nimport getDomain from './domain';\nimport getDomainWithoutSuffix from './domain-without-suffix';\nimport extractHostname from './extract-hostname';\nimport isIp from './is-ip';\nimport isValidHostname from './is-valid';\nimport { IPublicSuffix, ISuffixLookupOptions } from './lookup/interface';\nimport { IOptions, setDefaults } from './options';\nimport getSubdomain from './subdomain';\n\nexport interface IResult {\n // `hostname` is either a registered name (including but not limited to a\n // hostname), or an IP address. IPv4 addresses must be in dot-decimal\n // notation, and IPv6 addresses must be enclosed in brackets ([]). This is\n // directly extracted from the input URL.\n hostname: string | null;\n\n // Is `hostname` an IP? (IPv4 or IPv6)\n isIp: boolean | null;\n\n // `hostname` split between subdomain, domain and its public suffix (if any)\n subdomain: string | null;\n domain: string | null;\n publicSuffix: string | null;\n domainWithoutSuffix: string | null;\n\n // Specifies if `publicSuffix` comes from the ICANN or PRIVATE section of the list\n isIcann: boolean | null;\n isPrivate: boolean | null;\n}\n\nexport function getEmptyResult(): IResult {\n return {\n domain: null,\n domainWithoutSuffix: null,\n hostname: null,\n isIcann: null,\n isIp: null,\n isPrivate: null,\n publicSuffix: null,\n subdomain: null,\n };\n}\n\nexport function resetResult(result: IResult): void {\n result.domain = null;\n result.domainWithoutSuffix = null;\n result.hostname = null;\n result.isIcann = null;\n result.isIp = null;\n result.isPrivate = null;\n result.publicSuffix = null;\n result.subdomain = null;\n}\n\n// Flags representing steps in the `parse` function. They are used to implement\n// an early stop mechanism (simulating some form of laziness) to avoid doing\n// more work than necessary to perform a given action (e.g.: we don't need to\n// extract the domain and subdomain if we are only interested in public suffix).\nexport const enum FLAG {\n HOSTNAME,\n IS_VALID,\n PUBLIC_SUFFIX,\n DOMAIN,\n SUB_DOMAIN,\n ALL,\n}\n\nexport function parseImpl(\n url: string,\n step: FLAG,\n suffixLookup: (\n _1: string,\n _2: ISuffixLookupOptions,\n _3: IPublicSuffix,\n ) => void,\n partialOptions: Partial,\n result: IResult,\n): IResult {\n const options: IOptions = /*@__INLINE__*/ setDefaults(partialOptions);\n\n // Very fast approximate check to make sure `url` is a string. This is needed\n // because the library will not necessarily be used in a typed setup and\n // values of arbitrary types might be given as argument.\n if (typeof url !== 'string') {\n return result;\n }\n\n // Extract hostname from `url` only if needed. This can be made optional\n // using `options.extractHostname`. This option will typically be used\n // whenever we are sure the inputs to `parse` are already hostnames and not\n // arbitrary URLs.\n //\n // `mixedInput` allows to specify if we expect a mix of URLs and hostnames\n // as input. If only hostnames are expected then `extractHostname` can be\n // set to `false` to speed-up parsing. If only URLs are expected then\n // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint\n // and will not change the behavior of the library.\n if (!options.extractHostname) {\n result.hostname = url;\n } else if (options.mixedInputs) {\n result.hostname = extractHostname(url, isValidHostname(url));\n } else {\n result.hostname = extractHostname(url, false);\n }\n\n if (step === FLAG.HOSTNAME || result.hostname === null) {\n return result;\n }\n\n // Check if `hostname` is a valid ip address\n if (options.detectIp) {\n result.isIp = isIp(result.hostname);\n if (result.isIp) {\n return result;\n }\n }\n\n // Perform optional hostname validation. If hostname is not valid, no need to\n // go further as there will be no valid domain or sub-domain.\n if (\n options.validateHostname &&\n options.extractHostname &&\n !isValidHostname(result.hostname)\n ) {\n result.hostname = null;\n return result;\n }\n\n // Extract public suffix\n suffixLookup(result.hostname, options, result);\n if (step === FLAG.PUBLIC_SUFFIX || result.publicSuffix === null) {\n return result;\n }\n\n // Extract domain\n result.domain = getDomain(result.publicSuffix, result.hostname, options);\n if (step === FLAG.DOMAIN || result.domain === null) {\n return result;\n }\n\n // Extract subdomain\n result.subdomain = getSubdomain(result.hostname, result.domain);\n if (step === FLAG.SUB_DOMAIN) {\n return result;\n }\n\n // Extract domain without suffix\n result.domainWithoutSuffix = getDomainWithoutSuffix(\n result.domain,\n result.publicSuffix,\n );\n\n return result;\n}\n","/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nfunction isProbablyIpv4(hostname: string): boolean {\n // Cannot be shorted than 1.1.1.1\n if (hostname.length < 7) {\n return false;\n }\n\n // Cannot be longer than: 255.255.255.255\n if (hostname.length > 15) {\n return false;\n }\n\n let numberOfDots = 0;\n\n for (let i = 0; i < hostname.length; i += 1) {\n const code = hostname.charCodeAt(i);\n\n if (code === 46 /* '.' */) {\n numberOfDots += 1;\n } else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n return false;\n }\n }\n\n return (\n numberOfDots === 3 &&\n hostname.charCodeAt(0) !== 46 /* '.' */ &&\n hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */\n );\n}\n\n/**\n * Similar to isProbablyIpv4.\n */\nfunction isProbablyIpv6(hostname: string): boolean {\n if (hostname.length < 3) {\n return false;\n }\n\n let start = hostname.startsWith('[') ? 1 : 0;\n let end = hostname.length;\n\n if (hostname[end - 1] === ']') {\n end -= 1;\n }\n\n // We only consider the maximum size of a normal IPV6. Note that this will\n // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n // and a proper validation library should be used for these.\n if (end - start > 39) {\n return false;\n }\n\n let hasColon = false;\n\n for (; start < end; start += 1) {\n const code = hostname.charCodeAt(start);\n\n if (code === 58 /* ':' */) {\n hasColon = true;\n } else if (\n !(\n (\n (code >= 48 && code <= 57) || // 0-9\n (code >= 97 && code <= 102) || // a-f\n (code >= 65 && code <= 90)\n ) // A-F\n )\n ) {\n return false;\n }\n }\n\n return hasColon;\n}\n\n/**\n * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).\n * This *will not* work on any string. We need `hostname` to be a valid\n * hostname.\n */\nexport default function isIp(hostname: string): boolean {\n return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);\n}\n","import { IOptions } from './options';\n\n/**\n * Check if `vhost` is a valid suffix of `hostname` (top-domain)\n *\n * It means that `vhost` needs to be a suffix of `hostname` and we then need to\n * make sure that: either they are equal, or the character preceding `vhost` in\n * `hostname` is a '.' (it should not be a partial label).\n *\n * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok\n * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok\n * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok\n */\nfunction shareSameDomainSuffix(hostname: string, vhost: string): boolean {\n if (hostname.endsWith(vhost)) {\n return (\n hostname.length === vhost.length ||\n hostname[hostname.length - vhost.length - 1] === '.'\n );\n }\n\n return false;\n}\n\n/**\n * Given a hostname and its public suffix, extract the general domain.\n */\nfunction extractDomainWithSuffix(\n hostname: string,\n publicSuffix: string,\n): string {\n // Locate the index of the last '.' in the part of the `hostname` preceding\n // the public suffix.\n //\n // examples:\n // 1. not.evil.co.uk => evil.co.uk\n // ^ ^\n // | | start of public suffix\n // | index of the last dot\n //\n // 2. example.co.uk => example.co.uk\n // ^ ^\n // | | start of public suffix\n // |\n // | (-1) no dot found before the public suffix\n const publicSuffixIndex = hostname.length - publicSuffix.length - 2;\n const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);\n\n // No '.' found, then `hostname` is the general domain (no sub-domain)\n if (lastDotBeforeSuffixIndex === -1) {\n return hostname;\n }\n\n // Extract the part between the last '.'\n return hostname.slice(lastDotBeforeSuffixIndex + 1);\n}\n\n/**\n * Detects the domain based on rules and upon and a host string\n */\nexport default function getDomain(\n suffix: string,\n hostname: string,\n options: IOptions,\n): string | null {\n // Check if `hostname` ends with a member of `validHosts`.\n if (options.validHosts !== null) {\n const validHosts = options.validHosts;\n for (const vhost of validHosts) {\n if (/*@__INLINE__*/ shareSameDomainSuffix(hostname, vhost)) {\n return vhost;\n }\n }\n }\n\n let numberOfLeadingDots = 0;\n if (hostname.startsWith('.')) {\n while (\n numberOfLeadingDots < hostname.length &&\n hostname[numberOfLeadingDots] === '.'\n ) {\n numberOfLeadingDots += 1;\n }\n }\n\n // If `hostname` is a valid public suffix, then there is no domain to return.\n // Since we already know that `getPublicSuffix` returns a suffix of `hostname`\n // there is no need to perform a string comparison and we only compare the\n // size.\n if (suffix.length === hostname.length - numberOfLeadingDots) {\n return null;\n }\n\n // To extract the general domain, we start by identifying the public suffix\n // (if any), then consider the domain to be the public suffix with one added\n // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:\n // `co.uk`, then we take one more level: `evil`, giving the final result:\n // `evil.co.uk`).\n return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);\n}\n","/**\n * Returns the subdomain of a hostname string\n */\nexport default function getSubdomain(hostname: string, domain: string): string {\n // If `hostname` and `domain` are the same, then there is no sub-domain\n if (domain.length === hostname.length) {\n return '';\n }\n\n return hostname.slice(0, -domain.length - 1);\n}\n","/**\n * Return the part of domain without suffix.\n *\n * Example: for domain 'foo.com', the result would be 'foo'.\n */\nexport default function getDomainWithoutSuffix(\n domain: string,\n suffix: string,\n): string {\n // Note: here `domain` and `suffix` cannot have the same length because in\n // this case we set `domain` to `null` instead. It is thus safe to assume\n // that `suffix` is shorter than `domain`.\n return domain.slice(0, -suffix.length - 1);\n}\n","\nexport type ITrie = [0 | 1 | 2, { [label: string]: ITrie}];\n\nexport const exceptions: ITrie = (function() {\n const _0: ITrie = [1,{}],_1: ITrie = [2,{}],_2: ITrie = [0,{\"city\":_0}];\nconst exceptions: ITrie = [0,{\"ck\":[0,{\"www\":_0}],\"jp\":[0,{\"kawasaki\":_2,\"kitakyushu\":_2,\"kobe\":_2,\"nagoya\":_2,\"sapporo\":_2,\"sendai\":_2,\"yokohama\":_2}],\"dev\":[0,{\"hrsn\":[0,{\"psl\":[0,{\"wc\":[0,{\"ignored\":_1,\"sub\":[0,{\"ignored\":_1}]}]}]}]}]}];\n return exceptions;\n})();\n\nexport const rules: ITrie = (function() {\n const _3: ITrie = [1,{}],_4: ITrie = [2,{}],_5: ITrie = [1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3}],_6: ITrie = [1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3}],_7: ITrie = [0,{\"*\":_4}],_8: ITrie = [2,{\"s\":_7}],_9: ITrie = [0,{\"relay\":_4}],_10: ITrie = [2,{\"id\":_4}],_11: ITrie = [1,{\"gov\":_3}],_12: ITrie = [0,{\"transfer-webapp\":_4}],_13: ITrie = [0,{\"notebook\":_4,\"studio\":_4}],_14: ITrie = [0,{\"labeling\":_4,\"notebook\":_4,\"studio\":_4}],_15: ITrie = [0,{\"notebook\":_4}],_16: ITrie = [0,{\"labeling\":_4,\"notebook\":_4,\"notebook-fips\":_4,\"studio\":_4}],_17: ITrie = [0,{\"notebook\":_4,\"notebook-fips\":_4,\"studio\":_4,\"studio-fips\":_4}],_18: ITrie = [0,{\"*\":_3}],_19: ITrie = [1,{\"co\":_4}],_20: ITrie = [0,{\"objects\":_4}],_21: ITrie = [2,{\"nodes\":_4}],_22: ITrie = [0,{\"my\":_7}],_23: ITrie = [0,{\"s3\":_4,\"s3-accesspoint\":_4,\"s3-website\":_4}],_24: ITrie = [0,{\"s3\":_4,\"s3-accesspoint\":_4}],_25: ITrie = [0,{\"direct\":_4}],_26: ITrie = [0,{\"webview-assets\":_4}],_27: ITrie = [0,{\"vfs\":_4,\"webview-assets\":_4}],_28: ITrie = [0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_23,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4,\"aws-cloud9\":_26,\"cloud9\":_27}],_29: ITrie = [0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_24,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4,\"aws-cloud9\":_26,\"cloud9\":_27}],_30: ITrie = [0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_23,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4,\"analytics-gateway\":_4,\"aws-cloud9\":_26,\"cloud9\":_27}],_31: ITrie = [0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_23,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4}],_32: ITrie = [0,{\"s3\":_4,\"s3-accesspoint\":_4,\"s3-accesspoint-fips\":_4,\"s3-fips\":_4,\"s3-website\":_4}],_33: ITrie = [0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_32,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-accesspoint-fips\":_4,\"s3-fips\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4,\"aws-cloud9\":_26,\"cloud9\":_27}],_34: ITrie = [0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_32,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-accesspoint-fips\":_4,\"s3-deprecated\":_4,\"s3-fips\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4,\"analytics-gateway\":_4,\"aws-cloud9\":_26,\"cloud9\":_27}],_35: ITrie = [0,{\"s3\":_4,\"s3-accesspoint\":_4,\"s3-accesspoint-fips\":_4,\"s3-fips\":_4}],_36: ITrie = [0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_35,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-accesspoint-fips\":_4,\"s3-fips\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4}],_37: ITrie = [0,{\"auth\":_4}],_38: ITrie = [0,{\"auth\":_4,\"auth-fips\":_4}],_39: ITrie = [0,{\"apps\":_4}],_40: ITrie = [0,{\"paas\":_4}],_41: ITrie = [2,{\"eu\":_4}],_42: ITrie = [0,{\"app\":_4}],_43: ITrie = [0,{\"site\":_4}],_44: ITrie = [1,{\"com\":_3,\"edu\":_3,\"net\":_3,\"org\":_3}],_45: ITrie = [0,{\"j\":_4}],_46: ITrie = [0,{\"dyn\":_4}],_47: ITrie = [1,{\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3}],_48: ITrie = [0,{\"p\":_4}],_49: ITrie = [0,{\"user\":_4}],_50: ITrie = [0,{\"shop\":_4}],_51: ITrie = [0,{\"cdn\":_4}],_52: ITrie = [0,{\"cust\":_4,\"reservd\":_4}],_53: ITrie = [0,{\"cust\":_4}],_54: ITrie = [0,{\"s3\":_4}],_55: ITrie = [1,{\"biz\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"net\":_3,\"org\":_3}],_56: ITrie = [1,{\"framer\":_4}],_57: ITrie = [0,{\"forgot\":_4}],_58: ITrie = [1,{\"gs\":_3}],_59: ITrie = [0,{\"nes\":_3}],_60: ITrie = [1,{\"k12\":_3,\"cc\":_3,\"lib\":_3}],_61: ITrie = [1,{\"cc\":_3,\"lib\":_3}];\nconst rules: ITrie = [0,{\"ac\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"drr\":_4,\"feedback\":_4,\"forms\":_4}],\"ad\":_3,\"ae\":[1,{\"ac\":_3,\"co\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"sch\":_3}],\"aero\":[1,{\"airline\":_3,\"airport\":_3,\"accident-investigation\":_3,\"accident-prevention\":_3,\"aerobatic\":_3,\"aeroclub\":_3,\"aerodrome\":_3,\"agents\":_3,\"air-surveillance\":_3,\"air-traffic-control\":_3,\"aircraft\":_3,\"airtraffic\":_3,\"ambulance\":_3,\"association\":_3,\"author\":_3,\"ballooning\":_3,\"broker\":_3,\"caa\":_3,\"cargo\":_3,\"catering\":_3,\"certification\":_3,\"championship\":_3,\"charter\":_3,\"civilaviation\":_3,\"club\":_3,\"conference\":_3,\"consultant\":_3,\"consulting\":_3,\"control\":_3,\"council\":_3,\"crew\":_3,\"design\":_3,\"dgca\":_3,\"educator\":_3,\"emergency\":_3,\"engine\":_3,\"engineer\":_3,\"entertainment\":_3,\"equipment\":_3,\"exchange\":_3,\"express\":_3,\"federation\":_3,\"flight\":_3,\"freight\":_3,\"fuel\":_3,\"gliding\":_3,\"government\":_3,\"groundhandling\":_3,\"group\":_3,\"hanggliding\":_3,\"homebuilt\":_3,\"insurance\":_3,\"journal\":_3,\"journalist\":_3,\"leasing\":_3,\"logistics\":_3,\"magazine\":_3,\"maintenance\":_3,\"marketplace\":_3,\"media\":_3,\"microlight\":_3,\"modelling\":_3,\"navigation\":_3,\"parachuting\":_3,\"paragliding\":_3,\"passenger-association\":_3,\"pilot\":_3,\"press\":_3,\"production\":_3,\"recreation\":_3,\"repbody\":_3,\"res\":_3,\"research\":_3,\"rotorcraft\":_3,\"safety\":_3,\"scientist\":_3,\"services\":_3,\"show\":_3,\"skydiving\":_3,\"software\":_3,\"student\":_3,\"taxi\":_3,\"trader\":_3,\"trading\":_3,\"trainer\":_3,\"union\":_3,\"workinggroup\":_3,\"works\":_3}],\"af\":_5,\"ag\":[1,{\"co\":_3,\"com\":_3,\"net\":_3,\"nom\":_3,\"org\":_3,\"obj\":_4}],\"ai\":[1,{\"com\":_3,\"net\":_3,\"off\":_3,\"org\":_3,\"uwu\":_4,\"framer\":_4}],\"al\":_6,\"am\":[1,{\"co\":_3,\"com\":_3,\"commune\":_3,\"net\":_3,\"org\":_3,\"radio\":_4}],\"ao\":[1,{\"co\":_3,\"ed\":_3,\"edu\":_3,\"gov\":_3,\"gv\":_3,\"it\":_3,\"og\":_3,\"org\":_3,\"pb\":_3}],\"aq\":_3,\"ar\":[1,{\"bet\":_3,\"com\":_3,\"coop\":_3,\"edu\":_3,\"gob\":_3,\"gov\":_3,\"int\":_3,\"mil\":_3,\"musica\":_3,\"mutual\":_3,\"net\":_3,\"org\":_3,\"senasa\":_3,\"tur\":_3}],\"arpa\":[1,{\"e164\":_3,\"home\":_3,\"in-addr\":_3,\"ip6\":_3,\"iris\":_3,\"uri\":_3,\"urn\":_3}],\"as\":_11,\"asia\":[1,{\"cloudns\":_4,\"daemon\":_4,\"dix\":_4}],\"at\":[1,{\"ac\":[1,{\"sth\":_3}],\"co\":_3,\"gv\":_3,\"or\":_3,\"funkfeuer\":[0,{\"wien\":_4}],\"futurecms\":[0,{\"*\":_4,\"ex\":_7,\"in\":_7}],\"futurehosting\":_4,\"futuremailing\":_4,\"ortsinfo\":[0,{\"ex\":_7,\"kunden\":_7}],\"biz\":_4,\"info\":_4,\"123webseite\":_4,\"priv\":_4,\"myspreadshop\":_4,\"12hp\":_4,\"2ix\":_4,\"4lima\":_4,\"lima-city\":_4}],\"au\":[1,{\"asn\":_3,\"com\":[1,{\"cloudlets\":[0,{\"mel\":_4}],\"myspreadshop\":_4}],\"edu\":[1,{\"act\":_3,\"catholic\":_3,\"nsw\":[1,{\"schools\":_3}],\"nt\":_3,\"qld\":_3,\"sa\":_3,\"tas\":_3,\"vic\":_3,\"wa\":_3}],\"gov\":[1,{\"qld\":_3,\"sa\":_3,\"tas\":_3,\"vic\":_3,\"wa\":_3}],\"id\":_3,\"net\":_3,\"org\":_3,\"conf\":_3,\"oz\":_3,\"act\":_3,\"nsw\":_3,\"nt\":_3,\"qld\":_3,\"sa\":_3,\"tas\":_3,\"vic\":_3,\"wa\":_3}],\"aw\":[1,{\"com\":_3}],\"ax\":_3,\"az\":[1,{\"biz\":_3,\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"int\":_3,\"mil\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"pp\":_3,\"pro\":_3}],\"ba\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"rs\":_4}],\"bb\":[1,{\"biz\":_3,\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"net\":_3,\"org\":_3,\"store\":_3,\"tv\":_3}],\"bd\":_18,\"be\":[1,{\"ac\":_3,\"cloudns\":_4,\"webhosting\":_4,\"interhostsolutions\":[0,{\"cloud\":_4}],\"kuleuven\":[0,{\"ezproxy\":_4}],\"123website\":_4,\"myspreadshop\":_4,\"transurl\":_7}],\"bf\":_11,\"bg\":[1,{\"0\":_3,\"1\":_3,\"2\":_3,\"3\":_3,\"4\":_3,\"5\":_3,\"6\":_3,\"7\":_3,\"8\":_3,\"9\":_3,\"a\":_3,\"b\":_3,\"c\":_3,\"d\":_3,\"e\":_3,\"f\":_3,\"g\":_3,\"h\":_3,\"i\":_3,\"j\":_3,\"k\":_3,\"l\":_3,\"m\":_3,\"n\":_3,\"o\":_3,\"p\":_3,\"q\":_3,\"r\":_3,\"s\":_3,\"t\":_3,\"u\":_3,\"v\":_3,\"w\":_3,\"x\":_3,\"y\":_3,\"z\":_3,\"barsy\":_4}],\"bh\":_5,\"bi\":[1,{\"co\":_3,\"com\":_3,\"edu\":_3,\"or\":_3,\"org\":_3}],\"biz\":[1,{\"activetrail\":_4,\"cloud-ip\":_4,\"cloudns\":_4,\"jozi\":_4,\"dyndns\":_4,\"for-better\":_4,\"for-more\":_4,\"for-some\":_4,\"for-the\":_4,\"selfip\":_4,\"webhop\":_4,\"orx\":_4,\"mmafan\":_4,\"myftp\":_4,\"no-ip\":_4,\"dscloud\":_4}],\"bj\":[1,{\"africa\":_3,\"agro\":_3,\"architectes\":_3,\"assur\":_3,\"avocats\":_3,\"co\":_3,\"com\":_3,\"eco\":_3,\"econo\":_3,\"edu\":_3,\"info\":_3,\"loisirs\":_3,\"money\":_3,\"net\":_3,\"org\":_3,\"ote\":_3,\"restaurant\":_3,\"resto\":_3,\"tourism\":_3,\"univ\":_3}],\"bm\":_5,\"bn\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"co\":_4}],\"bo\":[1,{\"com\":_3,\"edu\":_3,\"gob\":_3,\"int\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"tv\":_3,\"web\":_3,\"academia\":_3,\"agro\":_3,\"arte\":_3,\"blog\":_3,\"bolivia\":_3,\"ciencia\":_3,\"cooperativa\":_3,\"democracia\":_3,\"deporte\":_3,\"ecologia\":_3,\"economia\":_3,\"empresa\":_3,\"indigena\":_3,\"industria\":_3,\"info\":_3,\"medicina\":_3,\"movimiento\":_3,\"musica\":_3,\"natural\":_3,\"nombre\":_3,\"noticias\":_3,\"patria\":_3,\"plurinacional\":_3,\"politica\":_3,\"profesional\":_3,\"pueblo\":_3,\"revista\":_3,\"salud\":_3,\"tecnologia\":_3,\"tksat\":_3,\"transporte\":_3,\"wiki\":_3}],\"br\":[1,{\"9guacu\":_3,\"abc\":_3,\"adm\":_3,\"adv\":_3,\"agr\":_3,\"aju\":_3,\"am\":_3,\"anani\":_3,\"aparecida\":_3,\"app\":_3,\"arq\":_3,\"art\":_3,\"ato\":_3,\"b\":_3,\"barueri\":_3,\"belem\":_3,\"bet\":_3,\"bhz\":_3,\"bib\":_3,\"bio\":_3,\"blog\":_3,\"bmd\":_3,\"boavista\":_3,\"bsb\":_3,\"campinagrande\":_3,\"campinas\":_3,\"caxias\":_3,\"cim\":_3,\"cng\":_3,\"cnt\":_3,\"com\":[1,{\"simplesite\":_4}],\"contagem\":_3,\"coop\":_3,\"coz\":_3,\"cri\":_3,\"cuiaba\":_3,\"curitiba\":_3,\"def\":_3,\"des\":_3,\"det\":_3,\"dev\":_3,\"ecn\":_3,\"eco\":_3,\"edu\":_3,\"emp\":_3,\"enf\":_3,\"eng\":_3,\"esp\":_3,\"etc\":_3,\"eti\":_3,\"far\":_3,\"feira\":_3,\"flog\":_3,\"floripa\":_3,\"fm\":_3,\"fnd\":_3,\"fortal\":_3,\"fot\":_3,\"foz\":_3,\"fst\":_3,\"g12\":_3,\"geo\":_3,\"ggf\":_3,\"goiania\":_3,\"gov\":[1,{\"ac\":_3,\"al\":_3,\"am\":_3,\"ap\":_3,\"ba\":_3,\"ce\":_3,\"df\":_3,\"es\":_3,\"go\":_3,\"ma\":_3,\"mg\":_3,\"ms\":_3,\"mt\":_3,\"pa\":_3,\"pb\":_3,\"pe\":_3,\"pi\":_3,\"pr\":_3,\"rj\":_3,\"rn\":_3,\"ro\":_3,\"rr\":_3,\"rs\":_3,\"sc\":_3,\"se\":_3,\"sp\":_3,\"to\":_3}],\"gru\":_3,\"imb\":_3,\"ind\":_3,\"inf\":_3,\"jab\":_3,\"jampa\":_3,\"jdf\":_3,\"joinville\":_3,\"jor\":_3,\"jus\":_3,\"leg\":[1,{\"ac\":_4,\"al\":_4,\"am\":_4,\"ap\":_4,\"ba\":_4,\"ce\":_4,\"df\":_4,\"es\":_4,\"go\":_4,\"ma\":_4,\"mg\":_4,\"ms\":_4,\"mt\":_4,\"pa\":_4,\"pb\":_4,\"pe\":_4,\"pi\":_4,\"pr\":_4,\"rj\":_4,\"rn\":_4,\"ro\":_4,\"rr\":_4,\"rs\":_4,\"sc\":_4,\"se\":_4,\"sp\":_4,\"to\":_4}],\"leilao\":_3,\"lel\":_3,\"log\":_3,\"londrina\":_3,\"macapa\":_3,\"maceio\":_3,\"manaus\":_3,\"maringa\":_3,\"mat\":_3,\"med\":_3,\"mil\":_3,\"morena\":_3,\"mp\":_3,\"mus\":_3,\"natal\":_3,\"net\":_3,\"niteroi\":_3,\"nom\":_18,\"not\":_3,\"ntr\":_3,\"odo\":_3,\"ong\":_3,\"org\":_3,\"osasco\":_3,\"palmas\":_3,\"poa\":_3,\"ppg\":_3,\"pro\":_3,\"psc\":_3,\"psi\":_3,\"pvh\":_3,\"qsl\":_3,\"radio\":_3,\"rec\":_3,\"recife\":_3,\"rep\":_3,\"ribeirao\":_3,\"rio\":_3,\"riobranco\":_3,\"riopreto\":_3,\"salvador\":_3,\"sampa\":_3,\"santamaria\":_3,\"santoandre\":_3,\"saobernardo\":_3,\"saogonca\":_3,\"seg\":_3,\"sjc\":_3,\"slg\":_3,\"slz\":_3,\"sorocaba\":_3,\"srv\":_3,\"taxi\":_3,\"tc\":_3,\"tec\":_3,\"teo\":_3,\"the\":_3,\"tmp\":_3,\"trd\":_3,\"tur\":_3,\"tv\":_3,\"udi\":_3,\"vet\":_3,\"vix\":_3,\"vlog\":_3,\"wiki\":_3,\"zlg\":_3}],\"bs\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"we\":_4}],\"bt\":_5,\"bv\":_3,\"bw\":[1,{\"ac\":_3,\"co\":_3,\"gov\":_3,\"net\":_3,\"org\":_3}],\"by\":[1,{\"gov\":_3,\"mil\":_3,\"com\":_3,\"of\":_3,\"mediatech\":_4}],\"bz\":[1,{\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"za\":_4,\"mydns\":_4,\"gsj\":_4}],\"ca\":[1,{\"ab\":_3,\"bc\":_3,\"mb\":_3,\"nb\":_3,\"nf\":_3,\"nl\":_3,\"ns\":_3,\"nt\":_3,\"nu\":_3,\"on\":_3,\"pe\":_3,\"qc\":_3,\"sk\":_3,\"yk\":_3,\"gc\":_3,\"barsy\":_4,\"awdev\":_7,\"co\":_4,\"no-ip\":_4,\"myspreadshop\":_4,\"box\":_4}],\"cat\":_3,\"cc\":[1,{\"cleverapps\":_4,\"cloudns\":_4,\"ftpaccess\":_4,\"game-server\":_4,\"myphotos\":_4,\"scrapping\":_4,\"twmail\":_4,\"csx\":_4,\"fantasyleague\":_4,\"spawn\":[0,{\"instances\":_4}]}],\"cd\":_11,\"cf\":_3,\"cg\":_3,\"ch\":[1,{\"square7\":_4,\"cloudns\":_4,\"cloudscale\":[0,{\"cust\":_4,\"lpg\":_20,\"rma\":_20}],\"flow\":[0,{\"ae\":[0,{\"alp1\":_4}],\"appengine\":_4}],\"linkyard-cloud\":_4,\"gotdns\":_4,\"dnsking\":_4,\"123website\":_4,\"myspreadshop\":_4,\"firenet\":[0,{\"*\":_4,\"svc\":_7}],\"12hp\":_4,\"2ix\":_4,\"4lima\":_4,\"lima-city\":_4}],\"ci\":[1,{\"ac\":_3,\"xn--aroport-bya\":_3,\"aéroport\":_3,\"asso\":_3,\"co\":_3,\"com\":_3,\"ed\":_3,\"edu\":_3,\"go\":_3,\"gouv\":_3,\"int\":_3,\"net\":_3,\"or\":_3,\"org\":_3}],\"ck\":_18,\"cl\":[1,{\"co\":_3,\"gob\":_3,\"gov\":_3,\"mil\":_3,\"cloudns\":_4}],\"cm\":[1,{\"co\":_3,\"com\":_3,\"gov\":_3,\"net\":_3}],\"cn\":[1,{\"ac\":_3,\"com\":[1,{\"amazonaws\":[0,{\"cn-north-1\":[0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_23,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-deprecated\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4}],\"cn-northwest-1\":[0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_24,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4}],\"compute\":_7,\"airflow\":[0,{\"cn-north-1\":_7,\"cn-northwest-1\":_7}],\"eb\":[0,{\"cn-north-1\":_4,\"cn-northwest-1\":_4}],\"elb\":_7}],\"sagemaker\":[0,{\"cn-north-1\":_13,\"cn-northwest-1\":_13}]}],\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"xn--55qx5d\":_3,\"公司\":_3,\"xn--od0alg\":_3,\"網絡\":_3,\"xn--io0a7i\":_3,\"网络\":_3,\"ah\":_3,\"bj\":_3,\"cq\":_3,\"fj\":_3,\"gd\":_3,\"gs\":_3,\"gx\":_3,\"gz\":_3,\"ha\":_3,\"hb\":_3,\"he\":_3,\"hi\":_3,\"hk\":_3,\"hl\":_3,\"hn\":_3,\"jl\":_3,\"js\":_3,\"jx\":_3,\"ln\":_3,\"mo\":_3,\"nm\":_3,\"nx\":_3,\"qh\":_3,\"sc\":_3,\"sd\":_3,\"sh\":[1,{\"as\":_4}],\"sn\":_3,\"sx\":_3,\"tj\":_3,\"tw\":_3,\"xj\":_3,\"xz\":_3,\"yn\":_3,\"zj\":_3,\"canva-apps\":_4,\"canvasite\":_22,\"myqnapcloud\":_4,\"quickconnect\":_25}],\"co\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"nom\":_3,\"org\":_3,\"carrd\":_4,\"crd\":_4,\"otap\":_7,\"leadpages\":_4,\"lpages\":_4,\"mypi\":_4,\"xmit\":_7,\"firewalledreplit\":_10,\"repl\":_10,\"supabase\":_4}],\"com\":[1,{\"a2hosted\":_4,\"cpserver\":_4,\"adobeaemcloud\":[2,{\"dev\":_7}],\"africa\":_4,\"airkitapps\":_4,\"airkitapps-au\":_4,\"aivencloud\":_4,\"alibabacloudcs\":_4,\"kasserver\":_4,\"amazonaws\":[0,{\"af-south-1\":_28,\"ap-east-1\":_29,\"ap-northeast-1\":_30,\"ap-northeast-2\":_30,\"ap-northeast-3\":_28,\"ap-south-1\":_30,\"ap-south-2\":_31,\"ap-southeast-1\":_30,\"ap-southeast-2\":_30,\"ap-southeast-3\":_31,\"ap-southeast-4\":_31,\"ap-southeast-5\":[0,{\"execute-api\":_4,\"dualstack\":_23,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-deprecated\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4}],\"ca-central-1\":_33,\"ca-west-1\":[0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_32,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-accesspoint-fips\":_4,\"s3-fips\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4}],\"eu-central-1\":_30,\"eu-central-2\":_31,\"eu-north-1\":_29,\"eu-south-1\":_28,\"eu-south-2\":_31,\"eu-west-1\":[0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_23,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-deprecated\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4,\"analytics-gateway\":_4,\"aws-cloud9\":_26,\"cloud9\":_27}],\"eu-west-2\":_29,\"eu-west-3\":_28,\"il-central-1\":[0,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_23,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4,\"aws-cloud9\":_26,\"cloud9\":[0,{\"vfs\":_4}]}],\"me-central-1\":_31,\"me-south-1\":_29,\"sa-east-1\":_28,\"us-east-1\":[2,{\"execute-api\":_4,\"emrappui-prod\":_4,\"emrnotebooks-prod\":_4,\"emrstudio-prod\":_4,\"dualstack\":_32,\"s3\":_4,\"s3-accesspoint\":_4,\"s3-accesspoint-fips\":_4,\"s3-deprecated\":_4,\"s3-fips\":_4,\"s3-object-lambda\":_4,\"s3-website\":_4,\"analytics-gateway\":_4,\"aws-cloud9\":_26,\"cloud9\":_27}],\"us-east-2\":_34,\"us-gov-east-1\":_36,\"us-gov-west-1\":_36,\"us-west-1\":_33,\"us-west-2\":_34,\"compute\":_7,\"compute-1\":_7,\"airflow\":[0,{\"af-south-1\":_7,\"ap-east-1\":_7,\"ap-northeast-1\":_7,\"ap-northeast-2\":_7,\"ap-northeast-3\":_7,\"ap-south-1\":_7,\"ap-south-2\":_7,\"ap-southeast-1\":_7,\"ap-southeast-2\":_7,\"ap-southeast-3\":_7,\"ap-southeast-4\":_7,\"ca-central-1\":_7,\"ca-west-1\":_7,\"eu-central-1\":_7,\"eu-central-2\":_7,\"eu-north-1\":_7,\"eu-south-1\":_7,\"eu-south-2\":_7,\"eu-west-1\":_7,\"eu-west-2\":_7,\"eu-west-3\":_7,\"il-central-1\":_7,\"me-central-1\":_7,\"me-south-1\":_7,\"sa-east-1\":_7,\"us-east-1\":_7,\"us-east-2\":_7,\"us-west-1\":_7,\"us-west-2\":_7}],\"s3\":_4,\"s3-1\":_4,\"s3-ap-east-1\":_4,\"s3-ap-northeast-1\":_4,\"s3-ap-northeast-2\":_4,\"s3-ap-northeast-3\":_4,\"s3-ap-south-1\":_4,\"s3-ap-southeast-1\":_4,\"s3-ap-southeast-2\":_4,\"s3-ca-central-1\":_4,\"s3-eu-central-1\":_4,\"s3-eu-north-1\":_4,\"s3-eu-west-1\":_4,\"s3-eu-west-2\":_4,\"s3-eu-west-3\":_4,\"s3-external-1\":_4,\"s3-fips-us-gov-east-1\":_4,\"s3-fips-us-gov-west-1\":_4,\"s3-global\":[0,{\"accesspoint\":[0,{\"mrap\":_4}]}],\"s3-me-south-1\":_4,\"s3-sa-east-1\":_4,\"s3-us-east-2\":_4,\"s3-us-gov-east-1\":_4,\"s3-us-gov-west-1\":_4,\"s3-us-west-1\":_4,\"s3-us-west-2\":_4,\"s3-website-ap-northeast-1\":_4,\"s3-website-ap-southeast-1\":_4,\"s3-website-ap-southeast-2\":_4,\"s3-website-eu-west-1\":_4,\"s3-website-sa-east-1\":_4,\"s3-website-us-east-1\":_4,\"s3-website-us-gov-west-1\":_4,\"s3-website-us-west-1\":_4,\"s3-website-us-west-2\":_4,\"elb\":_7}],\"amazoncognito\":[0,{\"af-south-1\":_37,\"ap-east-1\":_37,\"ap-northeast-1\":_37,\"ap-northeast-2\":_37,\"ap-northeast-3\":_37,\"ap-south-1\":_37,\"ap-south-2\":_37,\"ap-southeast-1\":_37,\"ap-southeast-2\":_37,\"ap-southeast-3\":_37,\"ap-southeast-4\":_37,\"ca-central-1\":_37,\"ca-west-1\":_37,\"eu-central-1\":_37,\"eu-central-2\":_37,\"eu-north-1\":_37,\"eu-south-1\":_37,\"eu-south-2\":_37,\"eu-west-1\":_37,\"eu-west-2\":_37,\"eu-west-3\":_37,\"il-central-1\":_37,\"me-central-1\":_37,\"me-south-1\":_37,\"sa-east-1\":_37,\"us-east-1\":_38,\"us-east-2\":_38,\"us-gov-west-1\":[0,{\"auth-fips\":_4}],\"us-west-1\":_38,\"us-west-2\":_38}],\"amplifyapp\":_4,\"awsapprunner\":_7,\"awsapps\":_4,\"elasticbeanstalk\":[2,{\"af-south-1\":_4,\"ap-east-1\":_4,\"ap-northeast-1\":_4,\"ap-northeast-2\":_4,\"ap-northeast-3\":_4,\"ap-south-1\":_4,\"ap-southeast-1\":_4,\"ap-southeast-2\":_4,\"ap-southeast-3\":_4,\"ca-central-1\":_4,\"eu-central-1\":_4,\"eu-north-1\":_4,\"eu-south-1\":_4,\"eu-west-1\":_4,\"eu-west-2\":_4,\"eu-west-3\":_4,\"il-central-1\":_4,\"me-south-1\":_4,\"sa-east-1\":_4,\"us-east-1\":_4,\"us-east-2\":_4,\"us-gov-east-1\":_4,\"us-gov-west-1\":_4,\"us-west-1\":_4,\"us-west-2\":_4}],\"awsglobalaccelerator\":_4,\"siiites\":_4,\"appspacehosted\":_4,\"appspaceusercontent\":_4,\"on-aptible\":_4,\"myasustor\":_4,\"balena-devices\":_4,\"boutir\":_4,\"bplaced\":_4,\"cafjs\":_4,\"canva-apps\":_4,\"cdn77-storage\":_4,\"br\":_4,\"cn\":_4,\"de\":_4,\"eu\":_4,\"jpn\":_4,\"mex\":_4,\"ru\":_4,\"sa\":_4,\"uk\":_4,\"us\":_4,\"za\":_4,\"clever-cloud\":[0,{\"services\":_7}],\"dnsabr\":_4,\"ip-ddns\":_4,\"jdevcloud\":_4,\"wpdevcloud\":_4,\"cf-ipfs\":_4,\"cloudflare-ipfs\":_4,\"trycloudflare\":_4,\"co\":_4,\"builtwithdark\":_4,\"datadetect\":[0,{\"demo\":_4,\"instance\":_4}],\"dattolocal\":_4,\"dattorelay\":_4,\"dattoweb\":_4,\"mydatto\":_4,\"digitaloceanspaces\":_7,\"discordsays\":_4,\"discordsez\":_4,\"drayddns\":_4,\"dreamhosters\":_4,\"durumis\":_4,\"mydrobo\":_4,\"blogdns\":_4,\"cechire\":_4,\"dnsalias\":_4,\"dnsdojo\":_4,\"doesntexist\":_4,\"dontexist\":_4,\"doomdns\":_4,\"dyn-o-saur\":_4,\"dynalias\":_4,\"dyndns-at-home\":_4,\"dyndns-at-work\":_4,\"dyndns-blog\":_4,\"dyndns-free\":_4,\"dyndns-home\":_4,\"dyndns-ip\":_4,\"dyndns-mail\":_4,\"dyndns-office\":_4,\"dyndns-pics\":_4,\"dyndns-remote\":_4,\"dyndns-server\":_4,\"dyndns-web\":_4,\"dyndns-wiki\":_4,\"dyndns-work\":_4,\"est-a-la-maison\":_4,\"est-a-la-masion\":_4,\"est-le-patron\":_4,\"est-mon-blogueur\":_4,\"from-ak\":_4,\"from-al\":_4,\"from-ar\":_4,\"from-ca\":_4,\"from-ct\":_4,\"from-dc\":_4,\"from-de\":_4,\"from-fl\":_4,\"from-ga\":_4,\"from-hi\":_4,\"from-ia\":_4,\"from-id\":_4,\"from-il\":_4,\"from-in\":_4,\"from-ks\":_4,\"from-ky\":_4,\"from-ma\":_4,\"from-md\":_4,\"from-mi\":_4,\"from-mn\":_4,\"from-mo\":_4,\"from-ms\":_4,\"from-mt\":_4,\"from-nc\":_4,\"from-nd\":_4,\"from-ne\":_4,\"from-nh\":_4,\"from-nj\":_4,\"from-nm\":_4,\"from-nv\":_4,\"from-oh\":_4,\"from-ok\":_4,\"from-or\":_4,\"from-pa\":_4,\"from-pr\":_4,\"from-ri\":_4,\"from-sc\":_4,\"from-sd\":_4,\"from-tn\":_4,\"from-tx\":_4,\"from-ut\":_4,\"from-va\":_4,\"from-vt\":_4,\"from-wa\":_4,\"from-wi\":_4,\"from-wv\":_4,\"from-wy\":_4,\"getmyip\":_4,\"gotdns\":_4,\"hobby-site\":_4,\"homelinux\":_4,\"homeunix\":_4,\"iamallama\":_4,\"is-a-anarchist\":_4,\"is-a-blogger\":_4,\"is-a-bookkeeper\":_4,\"is-a-bulls-fan\":_4,\"is-a-caterer\":_4,\"is-a-chef\":_4,\"is-a-conservative\":_4,\"is-a-cpa\":_4,\"is-a-cubicle-slave\":_4,\"is-a-democrat\":_4,\"is-a-designer\":_4,\"is-a-doctor\":_4,\"is-a-financialadvisor\":_4,\"is-a-geek\":_4,\"is-a-green\":_4,\"is-a-guru\":_4,\"is-a-hard-worker\":_4,\"is-a-hunter\":_4,\"is-a-landscaper\":_4,\"is-a-lawyer\":_4,\"is-a-liberal\":_4,\"is-a-libertarian\":_4,\"is-a-llama\":_4,\"is-a-musician\":_4,\"is-a-nascarfan\":_4,\"is-a-nurse\":_4,\"is-a-painter\":_4,\"is-a-personaltrainer\":_4,\"is-a-photographer\":_4,\"is-a-player\":_4,\"is-a-republican\":_4,\"is-a-rockstar\":_4,\"is-a-socialist\":_4,\"is-a-student\":_4,\"is-a-teacher\":_4,\"is-a-techie\":_4,\"is-a-therapist\":_4,\"is-an-accountant\":_4,\"is-an-actor\":_4,\"is-an-actress\":_4,\"is-an-anarchist\":_4,\"is-an-artist\":_4,\"is-an-engineer\":_4,\"is-an-entertainer\":_4,\"is-certified\":_4,\"is-gone\":_4,\"is-into-anime\":_4,\"is-into-cars\":_4,\"is-into-cartoons\":_4,\"is-into-games\":_4,\"is-leet\":_4,\"is-not-certified\":_4,\"is-slick\":_4,\"is-uberleet\":_4,\"is-with-theband\":_4,\"isa-geek\":_4,\"isa-hockeynut\":_4,\"issmarterthanyou\":_4,\"likes-pie\":_4,\"likescandy\":_4,\"neat-url\":_4,\"saves-the-whales\":_4,\"selfip\":_4,\"sells-for-less\":_4,\"sells-for-u\":_4,\"servebbs\":_4,\"simple-url\":_4,\"space-to-rent\":_4,\"teaches-yoga\":_4,\"writesthisblog\":_4,\"ddnsfree\":_4,\"ddnsgeek\":_4,\"giize\":_4,\"gleeze\":_4,\"kozow\":_4,\"loseyourip\":_4,\"ooguy\":_4,\"theworkpc\":_4,\"mytuleap\":_4,\"tuleap-partners\":_4,\"encoreapi\":_4,\"evennode\":[0,{\"eu-1\":_4,\"eu-2\":_4,\"eu-3\":_4,\"eu-4\":_4,\"us-1\":_4,\"us-2\":_4,\"us-3\":_4,\"us-4\":_4}],\"onfabrica\":_4,\"fastly-edge\":_4,\"fastly-terrarium\":_4,\"fastvps-server\":_4,\"mydobiss\":_4,\"firebaseapp\":_4,\"fldrv\":_4,\"forgeblocks\":_4,\"framercanvas\":_4,\"freebox-os\":_4,\"freeboxos\":_4,\"freemyip\":_4,\"aliases121\":_4,\"gentapps\":_4,\"gentlentapis\":_4,\"githubusercontent\":_4,\"0emm\":_7,\"appspot\":[2,{\"r\":_7}],\"blogspot\":_4,\"codespot\":_4,\"googleapis\":_4,\"googlecode\":_4,\"pagespeedmobilizer\":_4,\"withgoogle\":_4,\"withyoutube\":_4,\"grayjayleagues\":_4,\"hatenablog\":_4,\"hatenadiary\":_4,\"herokuapp\":_4,\"gr\":_4,\"smushcdn\":_4,\"wphostedmail\":_4,\"wpmucdn\":_4,\"pixolino\":_4,\"apps-1and1\":_4,\"live-website\":_4,\"dopaas\":_4,\"hosted-by-previder\":_40,\"hosteur\":[0,{\"rag-cloud\":_4,\"rag-cloud-ch\":_4}],\"ik-server\":[0,{\"jcloud\":_4,\"jcloud-ver-jpc\":_4}],\"jelastic\":[0,{\"demo\":_4}],\"massivegrid\":_40,\"wafaicloud\":[0,{\"jed\":_4,\"ryd\":_4}],\"webadorsite\":_4,\"joyent\":[0,{\"cns\":_7}],\"lpusercontent\":_4,\"linode\":[0,{\"members\":_4,\"nodebalancer\":_7}],\"linodeobjects\":_7,\"linodeusercontent\":[0,{\"ip\":_4}],\"localtonet\":_4,\"lovableproject\":_4,\"barsycenter\":_4,\"barsyonline\":_4,\"modelscape\":_4,\"mwcloudnonprod\":_4,\"polyspace\":_4,\"mazeplay\":_4,\"miniserver\":_4,\"atmeta\":_4,\"fbsbx\":_39,\"meteorapp\":_41,\"routingthecloud\":_4,\"mydbserver\":_4,\"hostedpi\":_4,\"mythic-beasts\":[0,{\"caracal\":_4,\"customer\":_4,\"fentiger\":_4,\"lynx\":_4,\"ocelot\":_4,\"oncilla\":_4,\"onza\":_4,\"sphinx\":_4,\"vs\":_4,\"x\":_4,\"yali\":_4}],\"nospamproxy\":[0,{\"cloud\":[2,{\"o365\":_4}]}],\"4u\":_4,\"nfshost\":_4,\"3utilities\":_4,\"blogsyte\":_4,\"ciscofreak\":_4,\"damnserver\":_4,\"ddnsking\":_4,\"ditchyourip\":_4,\"dnsiskinky\":_4,\"dynns\":_4,\"geekgalaxy\":_4,\"health-carereform\":_4,\"homesecuritymac\":_4,\"homesecuritypc\":_4,\"myactivedirectory\":_4,\"mysecuritycamera\":_4,\"myvnc\":_4,\"net-freaks\":_4,\"onthewifi\":_4,\"point2this\":_4,\"quicksytes\":_4,\"securitytactics\":_4,\"servebeer\":_4,\"servecounterstrike\":_4,\"serveexchange\":_4,\"serveftp\":_4,\"servegame\":_4,\"servehalflife\":_4,\"servehttp\":_4,\"servehumour\":_4,\"serveirc\":_4,\"servemp3\":_4,\"servep2p\":_4,\"servepics\":_4,\"servequake\":_4,\"servesarcasm\":_4,\"stufftoread\":_4,\"unusualperson\":_4,\"workisboring\":_4,\"myiphost\":_4,\"observableusercontent\":[0,{\"static\":_4}],\"simplesite\":_4,\"orsites\":_4,\"operaunite\":_4,\"customer-oci\":[0,{\"*\":_4,\"oci\":_7,\"ocp\":_7,\"ocs\":_7}],\"oraclecloudapps\":_7,\"oraclegovcloudapps\":_7,\"authgear-staging\":_4,\"authgearapps\":_4,\"skygearapp\":_4,\"outsystemscloud\":_4,\"ownprovider\":_4,\"pgfog\":_4,\"pagexl\":_4,\"gotpantheon\":_4,\"paywhirl\":_7,\"upsunapp\":_4,\"postman-echo\":_4,\"prgmr\":[0,{\"xen\":_4}],\"pythonanywhere\":_41,\"qa2\":_4,\"alpha-myqnapcloud\":_4,\"dev-myqnapcloud\":_4,\"mycloudnas\":_4,\"mynascloud\":_4,\"myqnapcloud\":_4,\"qualifioapp\":_4,\"ladesk\":_4,\"qbuser\":_4,\"quipelements\":_7,\"rackmaze\":_4,\"readthedocs-hosted\":_4,\"rhcloud\":_4,\"onrender\":_4,\"render\":_42,\"subsc-pay\":_4,\"180r\":_4,\"dojin\":_4,\"sakuratan\":_4,\"sakuraweb\":_4,\"x0\":_4,\"code\":[0,{\"builder\":_7,\"dev-builder\":_7,\"stg-builder\":_7}],\"salesforce\":[0,{\"platform\":[0,{\"code-builder-stg\":[0,{\"test\":[0,{\"001\":_7}]}]}]}],\"logoip\":_4,\"scrysec\":_4,\"firewall-gateway\":_4,\"myshopblocks\":_4,\"myshopify\":_4,\"shopitsite\":_4,\"1kapp\":_4,\"appchizi\":_4,\"applinzi\":_4,\"sinaapp\":_4,\"vipsinaapp\":_4,\"streamlitapp\":_4,\"try-snowplow\":_4,\"playstation-cloud\":_4,\"myspreadshop\":_4,\"w-corp-staticblitz\":_4,\"w-credentialless-staticblitz\":_4,\"w-staticblitz\":_4,\"stackhero-network\":_4,\"stdlib\":[0,{\"api\":_4}],\"strapiapp\":[2,{\"media\":_4}],\"streak-link\":_4,\"streaklinks\":_4,\"streakusercontent\":_4,\"temp-dns\":_4,\"dsmynas\":_4,\"familyds\":_4,\"mytabit\":_4,\"taveusercontent\":_4,\"tb-hosting\":_43,\"reservd\":_4,\"thingdustdata\":_4,\"townnews-staging\":_4,\"typeform\":[0,{\"pro\":_4}],\"hk\":_4,\"it\":_4,\"deus-canvas\":_4,\"vultrobjects\":_7,\"wafflecell\":_4,\"hotelwithflight\":_4,\"reserve-online\":_4,\"cprapid\":_4,\"pleskns\":_4,\"remotewd\":_4,\"wiardweb\":[0,{\"pages\":_4}],\"wixsite\":_4,\"wixstudio\":_4,\"messwithdns\":_4,\"woltlab-demo\":_4,\"wpenginepowered\":[2,{\"js\":_4}],\"xnbay\":[2,{\"u2\":_4,\"u2-local\":_4}],\"yolasite\":_4}],\"coop\":_3,\"cr\":[1,{\"ac\":_3,\"co\":_3,\"ed\":_3,\"fi\":_3,\"go\":_3,\"or\":_3,\"sa\":_3}],\"cu\":[1,{\"com\":_3,\"edu\":_3,\"gob\":_3,\"inf\":_3,\"nat\":_3,\"net\":_3,\"org\":_3}],\"cv\":[1,{\"com\":_3,\"edu\":_3,\"id\":_3,\"int\":_3,\"net\":_3,\"nome\":_3,\"org\":_3,\"publ\":_3}],\"cw\":_44,\"cx\":[1,{\"gov\":_3,\"cloudns\":_4,\"ath\":_4,\"info\":_4,\"assessments\":_4,\"calculators\":_4,\"funnels\":_4,\"paynow\":_4,\"quizzes\":_4,\"researched\":_4,\"tests\":_4}],\"cy\":[1,{\"ac\":_3,\"biz\":_3,\"com\":[1,{\"scaleforce\":_45}],\"ekloges\":_3,\"gov\":_3,\"ltd\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"press\":_3,\"pro\":_3,\"tm\":_3}],\"cz\":[1,{\"contentproxy9\":[0,{\"rsc\":_4}],\"realm\":_4,\"e4\":_4,\"co\":_4,\"metacentrum\":[0,{\"cloud\":_7,\"custom\":_4}],\"muni\":[0,{\"cloud\":[0,{\"flt\":_4,\"usr\":_4}]}]}],\"de\":[1,{\"bplaced\":_4,\"square7\":_4,\"com\":_4,\"cosidns\":_46,\"dnsupdater\":_4,\"dynamisches-dns\":_4,\"internet-dns\":_4,\"l-o-g-i-n\":_4,\"ddnss\":[2,{\"dyn\":_4,\"dyndns\":_4}],\"dyn-ip24\":_4,\"dyndns1\":_4,\"home-webserver\":[2,{\"dyn\":_4}],\"myhome-server\":_4,\"dnshome\":_4,\"fuettertdasnetz\":_4,\"isteingeek\":_4,\"istmein\":_4,\"lebtimnetz\":_4,\"leitungsen\":_4,\"traeumtgerade\":_4,\"frusky\":_7,\"goip\":_4,\"xn--gnstigbestellen-zvb\":_4,\"günstigbestellen\":_4,\"xn--gnstigliefern-wob\":_4,\"günstigliefern\":_4,\"hs-heilbronn\":[0,{\"it\":[0,{\"pages\":_4,\"pages-research\":_4}]}],\"dyn-berlin\":_4,\"in-berlin\":_4,\"in-brb\":_4,\"in-butter\":_4,\"in-dsl\":_4,\"in-vpn\":_4,\"iservschule\":_4,\"mein-iserv\":_4,\"schulplattform\":_4,\"schulserver\":_4,\"test-iserv\":_4,\"keymachine\":_4,\"git-repos\":_4,\"lcube-server\":_4,\"svn-repos\":_4,\"barsy\":_4,\"webspaceconfig\":_4,\"123webseite\":_4,\"rub\":_4,\"ruhr-uni-bochum\":[2,{\"noc\":[0,{\"io\":_4}]}],\"logoip\":_4,\"firewall-gateway\":_4,\"my-gateway\":_4,\"my-router\":_4,\"spdns\":_4,\"speedpartner\":[0,{\"customer\":_4}],\"myspreadshop\":_4,\"taifun-dns\":_4,\"12hp\":_4,\"2ix\":_4,\"4lima\":_4,\"lima-city\":_4,\"dd-dns\":_4,\"dray-dns\":_4,\"draydns\":_4,\"dyn-vpn\":_4,\"dynvpn\":_4,\"mein-vigor\":_4,\"my-vigor\":_4,\"my-wan\":_4,\"syno-ds\":_4,\"synology-diskstation\":_4,\"synology-ds\":_4,\"uberspace\":_7,\"virtual-user\":_4,\"virtualuser\":_4,\"community-pro\":_4,\"diskussionsbereich\":_4}],\"dj\":_3,\"dk\":[1,{\"biz\":_4,\"co\":_4,\"firm\":_4,\"reg\":_4,\"store\":_4,\"123hjemmeside\":_4,\"myspreadshop\":_4}],\"dm\":_47,\"do\":[1,{\"art\":_3,\"com\":_3,\"edu\":_3,\"gob\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"sld\":_3,\"web\":_3}],\"dz\":[1,{\"art\":_3,\"asso\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"pol\":_3,\"soc\":_3,\"tm\":_3}],\"ec\":[1,{\"com\":_3,\"edu\":_3,\"fin\":_3,\"gob\":_3,\"gov\":_3,\"info\":_3,\"k12\":_3,\"med\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"pro\":_3,\"base\":_4,\"official\":_4}],\"edu\":[1,{\"rit\":[0,{\"git-pages\":_4}]}],\"ee\":[1,{\"aip\":_3,\"com\":_3,\"edu\":_3,\"fie\":_3,\"gov\":_3,\"lib\":_3,\"med\":_3,\"org\":_3,\"pri\":_3,\"riik\":_3}],\"eg\":[1,{\"ac\":_3,\"com\":_3,\"edu\":_3,\"eun\":_3,\"gov\":_3,\"info\":_3,\"me\":_3,\"mil\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"sci\":_3,\"sport\":_3,\"tv\":_3}],\"er\":_18,\"es\":[1,{\"com\":_3,\"edu\":_3,\"gob\":_3,\"nom\":_3,\"org\":_3,\"123miweb\":_4,\"myspreadshop\":_4}],\"et\":[1,{\"biz\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"name\":_3,\"net\":_3,\"org\":_3}],\"eu\":[1,{\"airkitapps\":_4,\"cloudns\":_4,\"dogado\":[0,{\"jelastic\":_4}],\"barsy\":_4,\"spdns\":_4,\"transurl\":_7,\"diskstation\":_4}],\"fi\":[1,{\"aland\":_3,\"dy\":_4,\"xn--hkkinen-5wa\":_4,\"häkkinen\":_4,\"iki\":_4,\"cloudplatform\":[0,{\"fi\":_4}],\"datacenter\":[0,{\"demo\":_4,\"paas\":_4}],\"kapsi\":_4,\"123kotisivu\":_4,\"myspreadshop\":_4}],\"fj\":[1,{\"ac\":_3,\"biz\":_3,\"com\":_3,\"gov\":_3,\"info\":_3,\"mil\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"pro\":_3}],\"fk\":_18,\"fm\":[1,{\"com\":_3,\"edu\":_3,\"net\":_3,\"org\":_3,\"radio\":_4,\"user\":_7}],\"fo\":_3,\"fr\":[1,{\"asso\":_3,\"com\":_3,\"gouv\":_3,\"nom\":_3,\"prd\":_3,\"tm\":_3,\"avoues\":_3,\"cci\":_3,\"greta\":_3,\"huissier-justice\":_3,\"en-root\":_4,\"fbx-os\":_4,\"fbxos\":_4,\"freebox-os\":_4,\"freeboxos\":_4,\"goupile\":_4,\"123siteweb\":_4,\"on-web\":_4,\"chirurgiens-dentistes-en-france\":_4,\"dedibox\":_4,\"aeroport\":_4,\"avocat\":_4,\"chambagri\":_4,\"chirurgiens-dentistes\":_4,\"experts-comptables\":_4,\"medecin\":_4,\"notaires\":_4,\"pharmacien\":_4,\"port\":_4,\"veterinaire\":_4,\"myspreadshop\":_4,\"ynh\":_4}],\"ga\":_3,\"gb\":_3,\"gd\":[1,{\"edu\":_3,\"gov\":_3}],\"ge\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"pvt\":_3,\"school\":_3}],\"gf\":_3,\"gg\":[1,{\"co\":_3,\"net\":_3,\"org\":_3,\"botdash\":_4,\"kaas\":_4,\"stackit\":_4,\"panel\":[2,{\"daemon\":_4}]}],\"gh\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"org\":_3}],\"gi\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"ltd\":_3,\"mod\":_3,\"org\":_3}],\"gl\":[1,{\"co\":_3,\"com\":_3,\"edu\":_3,\"net\":_3,\"org\":_3,\"biz\":_4}],\"gm\":_3,\"gn\":[1,{\"ac\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3}],\"gov\":_3,\"gp\":[1,{\"asso\":_3,\"com\":_3,\"edu\":_3,\"mobi\":_3,\"net\":_3,\"org\":_3}],\"gq\":_3,\"gr\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"barsy\":_4,\"simplesite\":_4}],\"gs\":_3,\"gt\":[1,{\"com\":_3,\"edu\":_3,\"gob\":_3,\"ind\":_3,\"mil\":_3,\"net\":_3,\"org\":_3}],\"gu\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"guam\":_3,\"info\":_3,\"net\":_3,\"org\":_3,\"web\":_3}],\"gw\":_3,\"gy\":_47,\"hk\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"idv\":_3,\"net\":_3,\"org\":_3,\"xn--ciqpn\":_3,\"个人\":_3,\"xn--gmqw5a\":_3,\"個人\":_3,\"xn--55qx5d\":_3,\"公司\":_3,\"xn--mxtq1m\":_3,\"政府\":_3,\"xn--lcvr32d\":_3,\"敎育\":_3,\"xn--wcvs22d\":_3,\"教育\":_3,\"xn--gmq050i\":_3,\"箇人\":_3,\"xn--uc0atv\":_3,\"組織\":_3,\"xn--uc0ay4a\":_3,\"組织\":_3,\"xn--od0alg\":_3,\"網絡\":_3,\"xn--zf0avx\":_3,\"網络\":_3,\"xn--mk0axi\":_3,\"组織\":_3,\"xn--tn0ag\":_3,\"组织\":_3,\"xn--od0aq3b\":_3,\"网絡\":_3,\"xn--io0a7i\":_3,\"网络\":_3,\"inc\":_4,\"ltd\":_4}],\"hm\":_3,\"hn\":[1,{\"com\":_3,\"edu\":_3,\"gob\":_3,\"mil\":_3,\"net\":_3,\"org\":_3}],\"hr\":[1,{\"com\":_3,\"from\":_3,\"iz\":_3,\"name\":_3,\"brendly\":_50}],\"ht\":[1,{\"adult\":_3,\"art\":_3,\"asso\":_3,\"com\":_3,\"coop\":_3,\"edu\":_3,\"firm\":_3,\"gouv\":_3,\"info\":_3,\"med\":_3,\"net\":_3,\"org\":_3,\"perso\":_3,\"pol\":_3,\"pro\":_3,\"rel\":_3,\"shop\":_3,\"rt\":_4}],\"hu\":[1,{\"2000\":_3,\"agrar\":_3,\"bolt\":_3,\"casino\":_3,\"city\":_3,\"co\":_3,\"erotica\":_3,\"erotika\":_3,\"film\":_3,\"forum\":_3,\"games\":_3,\"hotel\":_3,\"info\":_3,\"ingatlan\":_3,\"jogasz\":_3,\"konyvelo\":_3,\"lakas\":_3,\"media\":_3,\"news\":_3,\"org\":_3,\"priv\":_3,\"reklam\":_3,\"sex\":_3,\"shop\":_3,\"sport\":_3,\"suli\":_3,\"szex\":_3,\"tm\":_3,\"tozsde\":_3,\"utazas\":_3,\"video\":_3}],\"id\":[1,{\"ac\":_3,\"biz\":_3,\"co\":_3,\"desa\":_3,\"go\":_3,\"mil\":_3,\"my\":_3,\"net\":_3,\"or\":_3,\"ponpes\":_3,\"sch\":_3,\"web\":_3,\"zone\":_4}],\"ie\":[1,{\"gov\":_3,\"myspreadshop\":_4}],\"il\":[1,{\"ac\":_3,\"co\":[1,{\"ravpage\":_4,\"mytabit\":_4,\"tabitorder\":_4}],\"gov\":_3,\"idf\":_3,\"k12\":_3,\"muni\":_3,\"net\":_3,\"org\":_3}],\"xn--4dbrk0ce\":[1,{\"xn--4dbgdty6c\":_3,\"xn--5dbhl8d\":_3,\"xn--8dbq2a\":_3,\"xn--hebda8b\":_3}],\"ישראל\":[1,{\"אקדמיה\":_3,\"ישוב\":_3,\"צהל\":_3,\"ממשל\":_3}],\"im\":[1,{\"ac\":_3,\"co\":[1,{\"ltd\":_3,\"plc\":_3}],\"com\":_3,\"net\":_3,\"org\":_3,\"tt\":_3,\"tv\":_3}],\"in\":[1,{\"5g\":_3,\"6g\":_3,\"ac\":_3,\"ai\":_3,\"am\":_3,\"bihar\":_3,\"biz\":_3,\"business\":_3,\"ca\":_3,\"cn\":_3,\"co\":_3,\"com\":_3,\"coop\":_3,\"cs\":_3,\"delhi\":_3,\"dr\":_3,\"edu\":_3,\"er\":_3,\"firm\":_3,\"gen\":_3,\"gov\":_3,\"gujarat\":_3,\"ind\":_3,\"info\":_3,\"int\":_3,\"internet\":_3,\"io\":_3,\"me\":_3,\"mil\":_3,\"net\":_3,\"nic\":_3,\"org\":_3,\"pg\":_3,\"post\":_3,\"pro\":_3,\"res\":_3,\"travel\":_3,\"tv\":_3,\"uk\":_3,\"up\":_3,\"us\":_3,\"cloudns\":_4,\"barsy\":_4,\"web\":_4,\"supabase\":_4}],\"info\":[1,{\"cloudns\":_4,\"dynamic-dns\":_4,\"barrel-of-knowledge\":_4,\"barrell-of-knowledge\":_4,\"dyndns\":_4,\"for-our\":_4,\"groks-the\":_4,\"groks-this\":_4,\"here-for-more\":_4,\"knowsitall\":_4,\"selfip\":_4,\"webhop\":_4,\"barsy\":_4,\"mayfirst\":_4,\"mittwald\":_4,\"mittwaldserver\":_4,\"typo3server\":_4,\"dvrcam\":_4,\"ilovecollege\":_4,\"no-ip\":_4,\"forumz\":_4,\"nsupdate\":_4,\"dnsupdate\":_4,\"v-info\":_4}],\"int\":[1,{\"eu\":_3}],\"io\":[1,{\"2038\":_4,\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"nom\":_3,\"org\":_3,\"on-acorn\":_7,\"myaddr\":_4,\"apigee\":_4,\"b-data\":_4,\"beagleboard\":_4,\"bitbucket\":_4,\"bluebite\":_4,\"boxfuse\":_4,\"brave\":_8,\"browsersafetymark\":_4,\"bubble\":_51,\"bubbleapps\":_4,\"bigv\":[0,{\"uk0\":_4}],\"cleverapps\":_4,\"cloudbeesusercontent\":_4,\"dappnode\":[0,{\"dyndns\":_4}],\"darklang\":_4,\"definima\":_4,\"dedyn\":_4,\"fh-muenster\":_4,\"shw\":_4,\"forgerock\":[0,{\"id\":_4}],\"github\":_4,\"gitlab\":_4,\"lolipop\":_4,\"hasura-app\":_4,\"hostyhosting\":_4,\"hypernode\":_4,\"moonscale\":_7,\"beebyte\":_40,\"beebyteapp\":[0,{\"sekd1\":_4}],\"jele\":_4,\"webthings\":_4,\"loginline\":_4,\"barsy\":_4,\"azurecontainer\":_7,\"ngrok\":[2,{\"ap\":_4,\"au\":_4,\"eu\":_4,\"in\":_4,\"jp\":_4,\"sa\":_4,\"us\":_4}],\"nodeart\":[0,{\"stage\":_4}],\"pantheonsite\":_4,\"pstmn\":[2,{\"mock\":_4}],\"protonet\":_4,\"qcx\":[2,{\"sys\":_7}],\"qoto\":_4,\"vaporcloud\":_4,\"myrdbx\":_4,\"rb-hosting\":_43,\"on-k3s\":_7,\"on-rio\":_7,\"readthedocs\":_4,\"resindevice\":_4,\"resinstaging\":[0,{\"devices\":_4}],\"hzc\":_4,\"sandcats\":_4,\"scrypted\":[0,{\"client\":_4}],\"mo-siemens\":_4,\"lair\":_39,\"stolos\":_7,\"musician\":_4,\"utwente\":_4,\"edugit\":_4,\"telebit\":_4,\"thingdust\":[0,{\"dev\":_52,\"disrec\":_52,\"prod\":_53,\"testing\":_52}],\"tickets\":_4,\"webflow\":_4,\"webflowtest\":_4,\"editorx\":_4,\"wixstudio\":_4,\"basicserver\":_4,\"virtualserver\":_4}],\"iq\":_6,\"ir\":[1,{\"ac\":_3,\"co\":_3,\"gov\":_3,\"id\":_3,\"net\":_3,\"org\":_3,\"sch\":_3,\"xn--mgba3a4f16a\":_3,\"ایران\":_3,\"xn--mgba3a4fra\":_3,\"ايران\":_3,\"arvanedge\":_4}],\"is\":_3,\"it\":[1,{\"edu\":_3,\"gov\":_3,\"abr\":_3,\"abruzzo\":_3,\"aosta-valley\":_3,\"aostavalley\":_3,\"bas\":_3,\"basilicata\":_3,\"cal\":_3,\"calabria\":_3,\"cam\":_3,\"campania\":_3,\"emilia-romagna\":_3,\"emiliaromagna\":_3,\"emr\":_3,\"friuli-v-giulia\":_3,\"friuli-ve-giulia\":_3,\"friuli-vegiulia\":_3,\"friuli-venezia-giulia\":_3,\"friuli-veneziagiulia\":_3,\"friuli-vgiulia\":_3,\"friuliv-giulia\":_3,\"friulive-giulia\":_3,\"friulivegiulia\":_3,\"friulivenezia-giulia\":_3,\"friuliveneziagiulia\":_3,\"friulivgiulia\":_3,\"fvg\":_3,\"laz\":_3,\"lazio\":_3,\"lig\":_3,\"liguria\":_3,\"lom\":_3,\"lombardia\":_3,\"lombardy\":_3,\"lucania\":_3,\"mar\":_3,\"marche\":_3,\"mol\":_3,\"molise\":_3,\"piedmont\":_3,\"piemonte\":_3,\"pmn\":_3,\"pug\":_3,\"puglia\":_3,\"sar\":_3,\"sardegna\":_3,\"sardinia\":_3,\"sic\":_3,\"sicilia\":_3,\"sicily\":_3,\"taa\":_3,\"tos\":_3,\"toscana\":_3,\"trentin-sud-tirol\":_3,\"xn--trentin-sd-tirol-rzb\":_3,\"trentin-süd-tirol\":_3,\"trentin-sudtirol\":_3,\"xn--trentin-sdtirol-7vb\":_3,\"trentin-südtirol\":_3,\"trentin-sued-tirol\":_3,\"trentin-suedtirol\":_3,\"trentino\":_3,\"trentino-a-adige\":_3,\"trentino-aadige\":_3,\"trentino-alto-adige\":_3,\"trentino-altoadige\":_3,\"trentino-s-tirol\":_3,\"trentino-stirol\":_3,\"trentino-sud-tirol\":_3,\"xn--trentino-sd-tirol-c3b\":_3,\"trentino-süd-tirol\":_3,\"trentino-sudtirol\":_3,\"xn--trentino-sdtirol-szb\":_3,\"trentino-südtirol\":_3,\"trentino-sued-tirol\":_3,\"trentino-suedtirol\":_3,\"trentinoa-adige\":_3,\"trentinoaadige\":_3,\"trentinoalto-adige\":_3,\"trentinoaltoadige\":_3,\"trentinos-tirol\":_3,\"trentinostirol\":_3,\"trentinosud-tirol\":_3,\"xn--trentinosd-tirol-rzb\":_3,\"trentinosüd-tirol\":_3,\"trentinosudtirol\":_3,\"xn--trentinosdtirol-7vb\":_3,\"trentinosüdtirol\":_3,\"trentinosued-tirol\":_3,\"trentinosuedtirol\":_3,\"trentinsud-tirol\":_3,\"xn--trentinsd-tirol-6vb\":_3,\"trentinsüd-tirol\":_3,\"trentinsudtirol\":_3,\"xn--trentinsdtirol-nsb\":_3,\"trentinsüdtirol\":_3,\"trentinsued-tirol\":_3,\"trentinsuedtirol\":_3,\"tuscany\":_3,\"umb\":_3,\"umbria\":_3,\"val-d-aosta\":_3,\"val-daosta\":_3,\"vald-aosta\":_3,\"valdaosta\":_3,\"valle-aosta\":_3,\"valle-d-aosta\":_3,\"valle-daosta\":_3,\"valleaosta\":_3,\"valled-aosta\":_3,\"valledaosta\":_3,\"vallee-aoste\":_3,\"xn--valle-aoste-ebb\":_3,\"vallée-aoste\":_3,\"vallee-d-aoste\":_3,\"xn--valle-d-aoste-ehb\":_3,\"vallée-d-aoste\":_3,\"valleeaoste\":_3,\"xn--valleaoste-e7a\":_3,\"valléeaoste\":_3,\"valleedaoste\":_3,\"xn--valledaoste-ebb\":_3,\"valléedaoste\":_3,\"vao\":_3,\"vda\":_3,\"ven\":_3,\"veneto\":_3,\"ag\":_3,\"agrigento\":_3,\"al\":_3,\"alessandria\":_3,\"alto-adige\":_3,\"altoadige\":_3,\"an\":_3,\"ancona\":_3,\"andria-barletta-trani\":_3,\"andria-trani-barletta\":_3,\"andriabarlettatrani\":_3,\"andriatranibarletta\":_3,\"ao\":_3,\"aosta\":_3,\"aoste\":_3,\"ap\":_3,\"aq\":_3,\"aquila\":_3,\"ar\":_3,\"arezzo\":_3,\"ascoli-piceno\":_3,\"ascolipiceno\":_3,\"asti\":_3,\"at\":_3,\"av\":_3,\"avellino\":_3,\"ba\":_3,\"balsan\":_3,\"balsan-sudtirol\":_3,\"xn--balsan-sdtirol-nsb\":_3,\"balsan-südtirol\":_3,\"balsan-suedtirol\":_3,\"bari\":_3,\"barletta-trani-andria\":_3,\"barlettatraniandria\":_3,\"belluno\":_3,\"benevento\":_3,\"bergamo\":_3,\"bg\":_3,\"bi\":_3,\"biella\":_3,\"bl\":_3,\"bn\":_3,\"bo\":_3,\"bologna\":_3,\"bolzano\":_3,\"bolzano-altoadige\":_3,\"bozen\":_3,\"bozen-sudtirol\":_3,\"xn--bozen-sdtirol-2ob\":_3,\"bozen-südtirol\":_3,\"bozen-suedtirol\":_3,\"br\":_3,\"brescia\":_3,\"brindisi\":_3,\"bs\":_3,\"bt\":_3,\"bulsan\":_3,\"bulsan-sudtirol\":_3,\"xn--bulsan-sdtirol-nsb\":_3,\"bulsan-südtirol\":_3,\"bulsan-suedtirol\":_3,\"bz\":_3,\"ca\":_3,\"cagliari\":_3,\"caltanissetta\":_3,\"campidano-medio\":_3,\"campidanomedio\":_3,\"campobasso\":_3,\"carbonia-iglesias\":_3,\"carboniaiglesias\":_3,\"carrara-massa\":_3,\"carraramassa\":_3,\"caserta\":_3,\"catania\":_3,\"catanzaro\":_3,\"cb\":_3,\"ce\":_3,\"cesena-forli\":_3,\"xn--cesena-forl-mcb\":_3,\"cesena-forlì\":_3,\"cesenaforli\":_3,\"xn--cesenaforl-i8a\":_3,\"cesenaforlì\":_3,\"ch\":_3,\"chieti\":_3,\"ci\":_3,\"cl\":_3,\"cn\":_3,\"co\":_3,\"como\":_3,\"cosenza\":_3,\"cr\":_3,\"cremona\":_3,\"crotone\":_3,\"cs\":_3,\"ct\":_3,\"cuneo\":_3,\"cz\":_3,\"dell-ogliastra\":_3,\"dellogliastra\":_3,\"en\":_3,\"enna\":_3,\"fc\":_3,\"fe\":_3,\"fermo\":_3,\"ferrara\":_3,\"fg\":_3,\"fi\":_3,\"firenze\":_3,\"florence\":_3,\"fm\":_3,\"foggia\":_3,\"forli-cesena\":_3,\"xn--forl-cesena-fcb\":_3,\"forlì-cesena\":_3,\"forlicesena\":_3,\"xn--forlcesena-c8a\":_3,\"forlìcesena\":_3,\"fr\":_3,\"frosinone\":_3,\"ge\":_3,\"genoa\":_3,\"genova\":_3,\"go\":_3,\"gorizia\":_3,\"gr\":_3,\"grosseto\":_3,\"iglesias-carbonia\":_3,\"iglesiascarbonia\":_3,\"im\":_3,\"imperia\":_3,\"is\":_3,\"isernia\":_3,\"kr\":_3,\"la-spezia\":_3,\"laquila\":_3,\"laspezia\":_3,\"latina\":_3,\"lc\":_3,\"le\":_3,\"lecce\":_3,\"lecco\":_3,\"li\":_3,\"livorno\":_3,\"lo\":_3,\"lodi\":_3,\"lt\":_3,\"lu\":_3,\"lucca\":_3,\"macerata\":_3,\"mantova\":_3,\"massa-carrara\":_3,\"massacarrara\":_3,\"matera\":_3,\"mb\":_3,\"mc\":_3,\"me\":_3,\"medio-campidano\":_3,\"mediocampidano\":_3,\"messina\":_3,\"mi\":_3,\"milan\":_3,\"milano\":_3,\"mn\":_3,\"mo\":_3,\"modena\":_3,\"monza\":_3,\"monza-brianza\":_3,\"monza-e-della-brianza\":_3,\"monzabrianza\":_3,\"monzaebrianza\":_3,\"monzaedellabrianza\":_3,\"ms\":_3,\"mt\":_3,\"na\":_3,\"naples\":_3,\"napoli\":_3,\"no\":_3,\"novara\":_3,\"nu\":_3,\"nuoro\":_3,\"og\":_3,\"ogliastra\":_3,\"olbia-tempio\":_3,\"olbiatempio\":_3,\"or\":_3,\"oristano\":_3,\"ot\":_3,\"pa\":_3,\"padova\":_3,\"padua\":_3,\"palermo\":_3,\"parma\":_3,\"pavia\":_3,\"pc\":_3,\"pd\":_3,\"pe\":_3,\"perugia\":_3,\"pesaro-urbino\":_3,\"pesarourbino\":_3,\"pescara\":_3,\"pg\":_3,\"pi\":_3,\"piacenza\":_3,\"pisa\":_3,\"pistoia\":_3,\"pn\":_3,\"po\":_3,\"pordenone\":_3,\"potenza\":_3,\"pr\":_3,\"prato\":_3,\"pt\":_3,\"pu\":_3,\"pv\":_3,\"pz\":_3,\"ra\":_3,\"ragusa\":_3,\"ravenna\":_3,\"rc\":_3,\"re\":_3,\"reggio-calabria\":_3,\"reggio-emilia\":_3,\"reggiocalabria\":_3,\"reggioemilia\":_3,\"rg\":_3,\"ri\":_3,\"rieti\":_3,\"rimini\":_3,\"rm\":_3,\"rn\":_3,\"ro\":_3,\"roma\":_3,\"rome\":_3,\"rovigo\":_3,\"sa\":_3,\"salerno\":_3,\"sassari\":_3,\"savona\":_3,\"si\":_3,\"siena\":_3,\"siracusa\":_3,\"so\":_3,\"sondrio\":_3,\"sp\":_3,\"sr\":_3,\"ss\":_3,\"xn--sdtirol-n2a\":_3,\"südtirol\":_3,\"suedtirol\":_3,\"sv\":_3,\"ta\":_3,\"taranto\":_3,\"te\":_3,\"tempio-olbia\":_3,\"tempioolbia\":_3,\"teramo\":_3,\"terni\":_3,\"tn\":_3,\"to\":_3,\"torino\":_3,\"tp\":_3,\"tr\":_3,\"trani-andria-barletta\":_3,\"trani-barletta-andria\":_3,\"traniandriabarletta\":_3,\"tranibarlettaandria\":_3,\"trapani\":_3,\"trento\":_3,\"treviso\":_3,\"trieste\":_3,\"ts\":_3,\"turin\":_3,\"tv\":_3,\"ud\":_3,\"udine\":_3,\"urbino-pesaro\":_3,\"urbinopesaro\":_3,\"va\":_3,\"varese\":_3,\"vb\":_3,\"vc\":_3,\"ve\":_3,\"venezia\":_3,\"venice\":_3,\"verbania\":_3,\"vercelli\":_3,\"verona\":_3,\"vi\":_3,\"vibo-valentia\":_3,\"vibovalentia\":_3,\"vicenza\":_3,\"viterbo\":_3,\"vr\":_3,\"vs\":_3,\"vt\":_3,\"vv\":_3,\"12chars\":_4,\"ibxos\":_4,\"iliadboxos\":_4,\"neen\":[0,{\"jc\":_4}],\"123homepage\":_4,\"16-b\":_4,\"32-b\":_4,\"64-b\":_4,\"myspreadshop\":_4,\"syncloud\":_4}],\"je\":[1,{\"co\":_3,\"net\":_3,\"org\":_3,\"of\":_4}],\"jm\":_18,\"jo\":[1,{\"agri\":_3,\"ai\":_3,\"com\":_3,\"edu\":_3,\"eng\":_3,\"fm\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"per\":_3,\"phd\":_3,\"sch\":_3,\"tv\":_3}],\"jobs\":_3,\"jp\":[1,{\"ac\":_3,\"ad\":_3,\"co\":_3,\"ed\":_3,\"go\":_3,\"gr\":_3,\"lg\":_3,\"ne\":[1,{\"aseinet\":_49,\"gehirn\":_4,\"ivory\":_4,\"mail-box\":_4,\"mints\":_4,\"mokuren\":_4,\"opal\":_4,\"sakura\":_4,\"sumomo\":_4,\"topaz\":_4}],\"or\":_3,\"aichi\":[1,{\"aisai\":_3,\"ama\":_3,\"anjo\":_3,\"asuke\":_3,\"chiryu\":_3,\"chita\":_3,\"fuso\":_3,\"gamagori\":_3,\"handa\":_3,\"hazu\":_3,\"hekinan\":_3,\"higashiura\":_3,\"ichinomiya\":_3,\"inazawa\":_3,\"inuyama\":_3,\"isshiki\":_3,\"iwakura\":_3,\"kanie\":_3,\"kariya\":_3,\"kasugai\":_3,\"kira\":_3,\"kiyosu\":_3,\"komaki\":_3,\"konan\":_3,\"kota\":_3,\"mihama\":_3,\"miyoshi\":_3,\"nishio\":_3,\"nisshin\":_3,\"obu\":_3,\"oguchi\":_3,\"oharu\":_3,\"okazaki\":_3,\"owariasahi\":_3,\"seto\":_3,\"shikatsu\":_3,\"shinshiro\":_3,\"shitara\":_3,\"tahara\":_3,\"takahama\":_3,\"tobishima\":_3,\"toei\":_3,\"togo\":_3,\"tokai\":_3,\"tokoname\":_3,\"toyoake\":_3,\"toyohashi\":_3,\"toyokawa\":_3,\"toyone\":_3,\"toyota\":_3,\"tsushima\":_3,\"yatomi\":_3}],\"akita\":[1,{\"akita\":_3,\"daisen\":_3,\"fujisato\":_3,\"gojome\":_3,\"hachirogata\":_3,\"happou\":_3,\"higashinaruse\":_3,\"honjo\":_3,\"honjyo\":_3,\"ikawa\":_3,\"kamikoani\":_3,\"kamioka\":_3,\"katagami\":_3,\"kazuno\":_3,\"kitaakita\":_3,\"kosaka\":_3,\"kyowa\":_3,\"misato\":_3,\"mitane\":_3,\"moriyoshi\":_3,\"nikaho\":_3,\"noshiro\":_3,\"odate\":_3,\"oga\":_3,\"ogata\":_3,\"semboku\":_3,\"yokote\":_3,\"yurihonjo\":_3}],\"aomori\":[1,{\"aomori\":_3,\"gonohe\":_3,\"hachinohe\":_3,\"hashikami\":_3,\"hiranai\":_3,\"hirosaki\":_3,\"itayanagi\":_3,\"kuroishi\":_3,\"misawa\":_3,\"mutsu\":_3,\"nakadomari\":_3,\"noheji\":_3,\"oirase\":_3,\"owani\":_3,\"rokunohe\":_3,\"sannohe\":_3,\"shichinohe\":_3,\"shingo\":_3,\"takko\":_3,\"towada\":_3,\"tsugaru\":_3,\"tsuruta\":_3}],\"chiba\":[1,{\"abiko\":_3,\"asahi\":_3,\"chonan\":_3,\"chosei\":_3,\"choshi\":_3,\"chuo\":_3,\"funabashi\":_3,\"futtsu\":_3,\"hanamigawa\":_3,\"ichihara\":_3,\"ichikawa\":_3,\"ichinomiya\":_3,\"inzai\":_3,\"isumi\":_3,\"kamagaya\":_3,\"kamogawa\":_3,\"kashiwa\":_3,\"katori\":_3,\"katsuura\":_3,\"kimitsu\":_3,\"kisarazu\":_3,\"kozaki\":_3,\"kujukuri\":_3,\"kyonan\":_3,\"matsudo\":_3,\"midori\":_3,\"mihama\":_3,\"minamiboso\":_3,\"mobara\":_3,\"mutsuzawa\":_3,\"nagara\":_3,\"nagareyama\":_3,\"narashino\":_3,\"narita\":_3,\"noda\":_3,\"oamishirasato\":_3,\"omigawa\":_3,\"onjuku\":_3,\"otaki\":_3,\"sakae\":_3,\"sakura\":_3,\"shimofusa\":_3,\"shirako\":_3,\"shiroi\":_3,\"shisui\":_3,\"sodegaura\":_3,\"sosa\":_3,\"tako\":_3,\"tateyama\":_3,\"togane\":_3,\"tohnosho\":_3,\"tomisato\":_3,\"urayasu\":_3,\"yachimata\":_3,\"yachiyo\":_3,\"yokaichiba\":_3,\"yokoshibahikari\":_3,\"yotsukaido\":_3}],\"ehime\":[1,{\"ainan\":_3,\"honai\":_3,\"ikata\":_3,\"imabari\":_3,\"iyo\":_3,\"kamijima\":_3,\"kihoku\":_3,\"kumakogen\":_3,\"masaki\":_3,\"matsuno\":_3,\"matsuyama\":_3,\"namikata\":_3,\"niihama\":_3,\"ozu\":_3,\"saijo\":_3,\"seiyo\":_3,\"shikokuchuo\":_3,\"tobe\":_3,\"toon\":_3,\"uchiko\":_3,\"uwajima\":_3,\"yawatahama\":_3}],\"fukui\":[1,{\"echizen\":_3,\"eiheiji\":_3,\"fukui\":_3,\"ikeda\":_3,\"katsuyama\":_3,\"mihama\":_3,\"minamiechizen\":_3,\"obama\":_3,\"ohi\":_3,\"ono\":_3,\"sabae\":_3,\"sakai\":_3,\"takahama\":_3,\"tsuruga\":_3,\"wakasa\":_3}],\"fukuoka\":[1,{\"ashiya\":_3,\"buzen\":_3,\"chikugo\":_3,\"chikuho\":_3,\"chikujo\":_3,\"chikushino\":_3,\"chikuzen\":_3,\"chuo\":_3,\"dazaifu\":_3,\"fukuchi\":_3,\"hakata\":_3,\"higashi\":_3,\"hirokawa\":_3,\"hisayama\":_3,\"iizuka\":_3,\"inatsuki\":_3,\"kaho\":_3,\"kasuga\":_3,\"kasuya\":_3,\"kawara\":_3,\"keisen\":_3,\"koga\":_3,\"kurate\":_3,\"kurogi\":_3,\"kurume\":_3,\"minami\":_3,\"miyako\":_3,\"miyama\":_3,\"miyawaka\":_3,\"mizumaki\":_3,\"munakata\":_3,\"nakagawa\":_3,\"nakama\":_3,\"nishi\":_3,\"nogata\":_3,\"ogori\":_3,\"okagaki\":_3,\"okawa\":_3,\"oki\":_3,\"omuta\":_3,\"onga\":_3,\"onojo\":_3,\"oto\":_3,\"saigawa\":_3,\"sasaguri\":_3,\"shingu\":_3,\"shinyoshitomi\":_3,\"shonai\":_3,\"soeda\":_3,\"sue\":_3,\"tachiarai\":_3,\"tagawa\":_3,\"takata\":_3,\"toho\":_3,\"toyotsu\":_3,\"tsuiki\":_3,\"ukiha\":_3,\"umi\":_3,\"usui\":_3,\"yamada\":_3,\"yame\":_3,\"yanagawa\":_3,\"yukuhashi\":_3}],\"fukushima\":[1,{\"aizubange\":_3,\"aizumisato\":_3,\"aizuwakamatsu\":_3,\"asakawa\":_3,\"bandai\":_3,\"date\":_3,\"fukushima\":_3,\"furudono\":_3,\"futaba\":_3,\"hanawa\":_3,\"higashi\":_3,\"hirata\":_3,\"hirono\":_3,\"iitate\":_3,\"inawashiro\":_3,\"ishikawa\":_3,\"iwaki\":_3,\"izumizaki\":_3,\"kagamiishi\":_3,\"kaneyama\":_3,\"kawamata\":_3,\"kitakata\":_3,\"kitashiobara\":_3,\"koori\":_3,\"koriyama\":_3,\"kunimi\":_3,\"miharu\":_3,\"mishima\":_3,\"namie\":_3,\"nango\":_3,\"nishiaizu\":_3,\"nishigo\":_3,\"okuma\":_3,\"omotego\":_3,\"ono\":_3,\"otama\":_3,\"samegawa\":_3,\"shimogo\":_3,\"shirakawa\":_3,\"showa\":_3,\"soma\":_3,\"sukagawa\":_3,\"taishin\":_3,\"tamakawa\":_3,\"tanagura\":_3,\"tenei\":_3,\"yabuki\":_3,\"yamato\":_3,\"yamatsuri\":_3,\"yanaizu\":_3,\"yugawa\":_3}],\"gifu\":[1,{\"anpachi\":_3,\"ena\":_3,\"gifu\":_3,\"ginan\":_3,\"godo\":_3,\"gujo\":_3,\"hashima\":_3,\"hichiso\":_3,\"hida\":_3,\"higashishirakawa\":_3,\"ibigawa\":_3,\"ikeda\":_3,\"kakamigahara\":_3,\"kani\":_3,\"kasahara\":_3,\"kasamatsu\":_3,\"kawaue\":_3,\"kitagata\":_3,\"mino\":_3,\"minokamo\":_3,\"mitake\":_3,\"mizunami\":_3,\"motosu\":_3,\"nakatsugawa\":_3,\"ogaki\":_3,\"sakahogi\":_3,\"seki\":_3,\"sekigahara\":_3,\"shirakawa\":_3,\"tajimi\":_3,\"takayama\":_3,\"tarui\":_3,\"toki\":_3,\"tomika\":_3,\"wanouchi\":_3,\"yamagata\":_3,\"yaotsu\":_3,\"yoro\":_3}],\"gunma\":[1,{\"annaka\":_3,\"chiyoda\":_3,\"fujioka\":_3,\"higashiagatsuma\":_3,\"isesaki\":_3,\"itakura\":_3,\"kanna\":_3,\"kanra\":_3,\"katashina\":_3,\"kawaba\":_3,\"kiryu\":_3,\"kusatsu\":_3,\"maebashi\":_3,\"meiwa\":_3,\"midori\":_3,\"minakami\":_3,\"naganohara\":_3,\"nakanojo\":_3,\"nanmoku\":_3,\"numata\":_3,\"oizumi\":_3,\"ora\":_3,\"ota\":_3,\"shibukawa\":_3,\"shimonita\":_3,\"shinto\":_3,\"showa\":_3,\"takasaki\":_3,\"takayama\":_3,\"tamamura\":_3,\"tatebayashi\":_3,\"tomioka\":_3,\"tsukiyono\":_3,\"tsumagoi\":_3,\"ueno\":_3,\"yoshioka\":_3}],\"hiroshima\":[1,{\"asaminami\":_3,\"daiwa\":_3,\"etajima\":_3,\"fuchu\":_3,\"fukuyama\":_3,\"hatsukaichi\":_3,\"higashihiroshima\":_3,\"hongo\":_3,\"jinsekikogen\":_3,\"kaita\":_3,\"kui\":_3,\"kumano\":_3,\"kure\":_3,\"mihara\":_3,\"miyoshi\":_3,\"naka\":_3,\"onomichi\":_3,\"osakikamijima\":_3,\"otake\":_3,\"saka\":_3,\"sera\":_3,\"seranishi\":_3,\"shinichi\":_3,\"shobara\":_3,\"takehara\":_3}],\"hokkaido\":[1,{\"abashiri\":_3,\"abira\":_3,\"aibetsu\":_3,\"akabira\":_3,\"akkeshi\":_3,\"asahikawa\":_3,\"ashibetsu\":_3,\"ashoro\":_3,\"assabu\":_3,\"atsuma\":_3,\"bibai\":_3,\"biei\":_3,\"bifuka\":_3,\"bihoro\":_3,\"biratori\":_3,\"chippubetsu\":_3,\"chitose\":_3,\"date\":_3,\"ebetsu\":_3,\"embetsu\":_3,\"eniwa\":_3,\"erimo\":_3,\"esan\":_3,\"esashi\":_3,\"fukagawa\":_3,\"fukushima\":_3,\"furano\":_3,\"furubira\":_3,\"haboro\":_3,\"hakodate\":_3,\"hamatonbetsu\":_3,\"hidaka\":_3,\"higashikagura\":_3,\"higashikawa\":_3,\"hiroo\":_3,\"hokuryu\":_3,\"hokuto\":_3,\"honbetsu\":_3,\"horokanai\":_3,\"horonobe\":_3,\"ikeda\":_3,\"imakane\":_3,\"ishikari\":_3,\"iwamizawa\":_3,\"iwanai\":_3,\"kamifurano\":_3,\"kamikawa\":_3,\"kamishihoro\":_3,\"kamisunagawa\":_3,\"kamoenai\":_3,\"kayabe\":_3,\"kembuchi\":_3,\"kikonai\":_3,\"kimobetsu\":_3,\"kitahiroshima\":_3,\"kitami\":_3,\"kiyosato\":_3,\"koshimizu\":_3,\"kunneppu\":_3,\"kuriyama\":_3,\"kuromatsunai\":_3,\"kushiro\":_3,\"kutchan\":_3,\"kyowa\":_3,\"mashike\":_3,\"matsumae\":_3,\"mikasa\":_3,\"minamifurano\":_3,\"mombetsu\":_3,\"moseushi\":_3,\"mukawa\":_3,\"muroran\":_3,\"naie\":_3,\"nakagawa\":_3,\"nakasatsunai\":_3,\"nakatombetsu\":_3,\"nanae\":_3,\"nanporo\":_3,\"nayoro\":_3,\"nemuro\":_3,\"niikappu\":_3,\"niki\":_3,\"nishiokoppe\":_3,\"noboribetsu\":_3,\"numata\":_3,\"obihiro\":_3,\"obira\":_3,\"oketo\":_3,\"okoppe\":_3,\"otaru\":_3,\"otobe\":_3,\"otofuke\":_3,\"otoineppu\":_3,\"oumu\":_3,\"ozora\":_3,\"pippu\":_3,\"rankoshi\":_3,\"rebun\":_3,\"rikubetsu\":_3,\"rishiri\":_3,\"rishirifuji\":_3,\"saroma\":_3,\"sarufutsu\":_3,\"shakotan\":_3,\"shari\":_3,\"shibecha\":_3,\"shibetsu\":_3,\"shikabe\":_3,\"shikaoi\":_3,\"shimamaki\":_3,\"shimizu\":_3,\"shimokawa\":_3,\"shinshinotsu\":_3,\"shintoku\":_3,\"shiranuka\":_3,\"shiraoi\":_3,\"shiriuchi\":_3,\"sobetsu\":_3,\"sunagawa\":_3,\"taiki\":_3,\"takasu\":_3,\"takikawa\":_3,\"takinoue\":_3,\"teshikaga\":_3,\"tobetsu\":_3,\"tohma\":_3,\"tomakomai\":_3,\"tomari\":_3,\"toya\":_3,\"toyako\":_3,\"toyotomi\":_3,\"toyoura\":_3,\"tsubetsu\":_3,\"tsukigata\":_3,\"urakawa\":_3,\"urausu\":_3,\"uryu\":_3,\"utashinai\":_3,\"wakkanai\":_3,\"wassamu\":_3,\"yakumo\":_3,\"yoichi\":_3}],\"hyogo\":[1,{\"aioi\":_3,\"akashi\":_3,\"ako\":_3,\"amagasaki\":_3,\"aogaki\":_3,\"asago\":_3,\"ashiya\":_3,\"awaji\":_3,\"fukusaki\":_3,\"goshiki\":_3,\"harima\":_3,\"himeji\":_3,\"ichikawa\":_3,\"inagawa\":_3,\"itami\":_3,\"kakogawa\":_3,\"kamigori\":_3,\"kamikawa\":_3,\"kasai\":_3,\"kasuga\":_3,\"kawanishi\":_3,\"miki\":_3,\"minamiawaji\":_3,\"nishinomiya\":_3,\"nishiwaki\":_3,\"ono\":_3,\"sanda\":_3,\"sannan\":_3,\"sasayama\":_3,\"sayo\":_3,\"shingu\":_3,\"shinonsen\":_3,\"shiso\":_3,\"sumoto\":_3,\"taishi\":_3,\"taka\":_3,\"takarazuka\":_3,\"takasago\":_3,\"takino\":_3,\"tamba\":_3,\"tatsuno\":_3,\"toyooka\":_3,\"yabu\":_3,\"yashiro\":_3,\"yoka\":_3,\"yokawa\":_3}],\"ibaraki\":[1,{\"ami\":_3,\"asahi\":_3,\"bando\":_3,\"chikusei\":_3,\"daigo\":_3,\"fujishiro\":_3,\"hitachi\":_3,\"hitachinaka\":_3,\"hitachiomiya\":_3,\"hitachiota\":_3,\"ibaraki\":_3,\"ina\":_3,\"inashiki\":_3,\"itako\":_3,\"iwama\":_3,\"joso\":_3,\"kamisu\":_3,\"kasama\":_3,\"kashima\":_3,\"kasumigaura\":_3,\"koga\":_3,\"miho\":_3,\"mito\":_3,\"moriya\":_3,\"naka\":_3,\"namegata\":_3,\"oarai\":_3,\"ogawa\":_3,\"omitama\":_3,\"ryugasaki\":_3,\"sakai\":_3,\"sakuragawa\":_3,\"shimodate\":_3,\"shimotsuma\":_3,\"shirosato\":_3,\"sowa\":_3,\"suifu\":_3,\"takahagi\":_3,\"tamatsukuri\":_3,\"tokai\":_3,\"tomobe\":_3,\"tone\":_3,\"toride\":_3,\"tsuchiura\":_3,\"tsukuba\":_3,\"uchihara\":_3,\"ushiku\":_3,\"yachiyo\":_3,\"yamagata\":_3,\"yawara\":_3,\"yuki\":_3}],\"ishikawa\":[1,{\"anamizu\":_3,\"hakui\":_3,\"hakusan\":_3,\"kaga\":_3,\"kahoku\":_3,\"kanazawa\":_3,\"kawakita\":_3,\"komatsu\":_3,\"nakanoto\":_3,\"nanao\":_3,\"nomi\":_3,\"nonoichi\":_3,\"noto\":_3,\"shika\":_3,\"suzu\":_3,\"tsubata\":_3,\"tsurugi\":_3,\"uchinada\":_3,\"wajima\":_3}],\"iwate\":[1,{\"fudai\":_3,\"fujisawa\":_3,\"hanamaki\":_3,\"hiraizumi\":_3,\"hirono\":_3,\"ichinohe\":_3,\"ichinoseki\":_3,\"iwaizumi\":_3,\"iwate\":_3,\"joboji\":_3,\"kamaishi\":_3,\"kanegasaki\":_3,\"karumai\":_3,\"kawai\":_3,\"kitakami\":_3,\"kuji\":_3,\"kunohe\":_3,\"kuzumaki\":_3,\"miyako\":_3,\"mizusawa\":_3,\"morioka\":_3,\"ninohe\":_3,\"noda\":_3,\"ofunato\":_3,\"oshu\":_3,\"otsuchi\":_3,\"rikuzentakata\":_3,\"shiwa\":_3,\"shizukuishi\":_3,\"sumita\":_3,\"tanohata\":_3,\"tono\":_3,\"yahaba\":_3,\"yamada\":_3}],\"kagawa\":[1,{\"ayagawa\":_3,\"higashikagawa\":_3,\"kanonji\":_3,\"kotohira\":_3,\"manno\":_3,\"marugame\":_3,\"mitoyo\":_3,\"naoshima\":_3,\"sanuki\":_3,\"tadotsu\":_3,\"takamatsu\":_3,\"tonosho\":_3,\"uchinomi\":_3,\"utazu\":_3,\"zentsuji\":_3}],\"kagoshima\":[1,{\"akune\":_3,\"amami\":_3,\"hioki\":_3,\"isa\":_3,\"isen\":_3,\"izumi\":_3,\"kagoshima\":_3,\"kanoya\":_3,\"kawanabe\":_3,\"kinko\":_3,\"kouyama\":_3,\"makurazaki\":_3,\"matsumoto\":_3,\"minamitane\":_3,\"nakatane\":_3,\"nishinoomote\":_3,\"satsumasendai\":_3,\"soo\":_3,\"tarumizu\":_3,\"yusui\":_3}],\"kanagawa\":[1,{\"aikawa\":_3,\"atsugi\":_3,\"ayase\":_3,\"chigasaki\":_3,\"ebina\":_3,\"fujisawa\":_3,\"hadano\":_3,\"hakone\":_3,\"hiratsuka\":_3,\"isehara\":_3,\"kaisei\":_3,\"kamakura\":_3,\"kiyokawa\":_3,\"matsuda\":_3,\"minamiashigara\":_3,\"miura\":_3,\"nakai\":_3,\"ninomiya\":_3,\"odawara\":_3,\"oi\":_3,\"oiso\":_3,\"sagamihara\":_3,\"samukawa\":_3,\"tsukui\":_3,\"yamakita\":_3,\"yamato\":_3,\"yokosuka\":_3,\"yugawara\":_3,\"zama\":_3,\"zushi\":_3}],\"kochi\":[1,{\"aki\":_3,\"geisei\":_3,\"hidaka\":_3,\"higashitsuno\":_3,\"ino\":_3,\"kagami\":_3,\"kami\":_3,\"kitagawa\":_3,\"kochi\":_3,\"mihara\":_3,\"motoyama\":_3,\"muroto\":_3,\"nahari\":_3,\"nakamura\":_3,\"nankoku\":_3,\"nishitosa\":_3,\"niyodogawa\":_3,\"ochi\":_3,\"okawa\":_3,\"otoyo\":_3,\"otsuki\":_3,\"sakawa\":_3,\"sukumo\":_3,\"susaki\":_3,\"tosa\":_3,\"tosashimizu\":_3,\"toyo\":_3,\"tsuno\":_3,\"umaji\":_3,\"yasuda\":_3,\"yusuhara\":_3}],\"kumamoto\":[1,{\"amakusa\":_3,\"arao\":_3,\"aso\":_3,\"choyo\":_3,\"gyokuto\":_3,\"kamiamakusa\":_3,\"kikuchi\":_3,\"kumamoto\":_3,\"mashiki\":_3,\"mifune\":_3,\"minamata\":_3,\"minamioguni\":_3,\"nagasu\":_3,\"nishihara\":_3,\"oguni\":_3,\"ozu\":_3,\"sumoto\":_3,\"takamori\":_3,\"uki\":_3,\"uto\":_3,\"yamaga\":_3,\"yamato\":_3,\"yatsushiro\":_3}],\"kyoto\":[1,{\"ayabe\":_3,\"fukuchiyama\":_3,\"higashiyama\":_3,\"ide\":_3,\"ine\":_3,\"joyo\":_3,\"kameoka\":_3,\"kamo\":_3,\"kita\":_3,\"kizu\":_3,\"kumiyama\":_3,\"kyotamba\":_3,\"kyotanabe\":_3,\"kyotango\":_3,\"maizuru\":_3,\"minami\":_3,\"minamiyamashiro\":_3,\"miyazu\":_3,\"muko\":_3,\"nagaokakyo\":_3,\"nakagyo\":_3,\"nantan\":_3,\"oyamazaki\":_3,\"sakyo\":_3,\"seika\":_3,\"tanabe\":_3,\"uji\":_3,\"ujitawara\":_3,\"wazuka\":_3,\"yamashina\":_3,\"yawata\":_3}],\"mie\":[1,{\"asahi\":_3,\"inabe\":_3,\"ise\":_3,\"kameyama\":_3,\"kawagoe\":_3,\"kiho\":_3,\"kisosaki\":_3,\"kiwa\":_3,\"komono\":_3,\"kumano\":_3,\"kuwana\":_3,\"matsusaka\":_3,\"meiwa\":_3,\"mihama\":_3,\"minamiise\":_3,\"misugi\":_3,\"miyama\":_3,\"nabari\":_3,\"shima\":_3,\"suzuka\":_3,\"tado\":_3,\"taiki\":_3,\"taki\":_3,\"tamaki\":_3,\"toba\":_3,\"tsu\":_3,\"udono\":_3,\"ureshino\":_3,\"watarai\":_3,\"yokkaichi\":_3}],\"miyagi\":[1,{\"furukawa\":_3,\"higashimatsushima\":_3,\"ishinomaki\":_3,\"iwanuma\":_3,\"kakuda\":_3,\"kami\":_3,\"kawasaki\":_3,\"marumori\":_3,\"matsushima\":_3,\"minamisanriku\":_3,\"misato\":_3,\"murata\":_3,\"natori\":_3,\"ogawara\":_3,\"ohira\":_3,\"onagawa\":_3,\"osaki\":_3,\"rifu\":_3,\"semine\":_3,\"shibata\":_3,\"shichikashuku\":_3,\"shikama\":_3,\"shiogama\":_3,\"shiroishi\":_3,\"tagajo\":_3,\"taiwa\":_3,\"tome\":_3,\"tomiya\":_3,\"wakuya\":_3,\"watari\":_3,\"yamamoto\":_3,\"zao\":_3}],\"miyazaki\":[1,{\"aya\":_3,\"ebino\":_3,\"gokase\":_3,\"hyuga\":_3,\"kadogawa\":_3,\"kawaminami\":_3,\"kijo\":_3,\"kitagawa\":_3,\"kitakata\":_3,\"kitaura\":_3,\"kobayashi\":_3,\"kunitomi\":_3,\"kushima\":_3,\"mimata\":_3,\"miyakonojo\":_3,\"miyazaki\":_3,\"morotsuka\":_3,\"nichinan\":_3,\"nishimera\":_3,\"nobeoka\":_3,\"saito\":_3,\"shiiba\":_3,\"shintomi\":_3,\"takaharu\":_3,\"takanabe\":_3,\"takazaki\":_3,\"tsuno\":_3}],\"nagano\":[1,{\"achi\":_3,\"agematsu\":_3,\"anan\":_3,\"aoki\":_3,\"asahi\":_3,\"azumino\":_3,\"chikuhoku\":_3,\"chikuma\":_3,\"chino\":_3,\"fujimi\":_3,\"hakuba\":_3,\"hara\":_3,\"hiraya\":_3,\"iida\":_3,\"iijima\":_3,\"iiyama\":_3,\"iizuna\":_3,\"ikeda\":_3,\"ikusaka\":_3,\"ina\":_3,\"karuizawa\":_3,\"kawakami\":_3,\"kiso\":_3,\"kisofukushima\":_3,\"kitaaiki\":_3,\"komagane\":_3,\"komoro\":_3,\"matsukawa\":_3,\"matsumoto\":_3,\"miasa\":_3,\"minamiaiki\":_3,\"minamimaki\":_3,\"minamiminowa\":_3,\"minowa\":_3,\"miyada\":_3,\"miyota\":_3,\"mochizuki\":_3,\"nagano\":_3,\"nagawa\":_3,\"nagiso\":_3,\"nakagawa\":_3,\"nakano\":_3,\"nozawaonsen\":_3,\"obuse\":_3,\"ogawa\":_3,\"okaya\":_3,\"omachi\":_3,\"omi\":_3,\"ookuwa\":_3,\"ooshika\":_3,\"otaki\":_3,\"otari\":_3,\"sakae\":_3,\"sakaki\":_3,\"saku\":_3,\"sakuho\":_3,\"shimosuwa\":_3,\"shinanomachi\":_3,\"shiojiri\":_3,\"suwa\":_3,\"suzaka\":_3,\"takagi\":_3,\"takamori\":_3,\"takayama\":_3,\"tateshina\":_3,\"tatsuno\":_3,\"togakushi\":_3,\"togura\":_3,\"tomi\":_3,\"ueda\":_3,\"wada\":_3,\"yamagata\":_3,\"yamanouchi\":_3,\"yasaka\":_3,\"yasuoka\":_3}],\"nagasaki\":[1,{\"chijiwa\":_3,\"futsu\":_3,\"goto\":_3,\"hasami\":_3,\"hirado\":_3,\"iki\":_3,\"isahaya\":_3,\"kawatana\":_3,\"kuchinotsu\":_3,\"matsuura\":_3,\"nagasaki\":_3,\"obama\":_3,\"omura\":_3,\"oseto\":_3,\"saikai\":_3,\"sasebo\":_3,\"seihi\":_3,\"shimabara\":_3,\"shinkamigoto\":_3,\"togitsu\":_3,\"tsushima\":_3,\"unzen\":_3}],\"nara\":[1,{\"ando\":_3,\"gose\":_3,\"heguri\":_3,\"higashiyoshino\":_3,\"ikaruga\":_3,\"ikoma\":_3,\"kamikitayama\":_3,\"kanmaki\":_3,\"kashiba\":_3,\"kashihara\":_3,\"katsuragi\":_3,\"kawai\":_3,\"kawakami\":_3,\"kawanishi\":_3,\"koryo\":_3,\"kurotaki\":_3,\"mitsue\":_3,\"miyake\":_3,\"nara\":_3,\"nosegawa\":_3,\"oji\":_3,\"ouda\":_3,\"oyodo\":_3,\"sakurai\":_3,\"sango\":_3,\"shimoichi\":_3,\"shimokitayama\":_3,\"shinjo\":_3,\"soni\":_3,\"takatori\":_3,\"tawaramoto\":_3,\"tenkawa\":_3,\"tenri\":_3,\"uda\":_3,\"yamatokoriyama\":_3,\"yamatotakada\":_3,\"yamazoe\":_3,\"yoshino\":_3}],\"niigata\":[1,{\"aga\":_3,\"agano\":_3,\"gosen\":_3,\"itoigawa\":_3,\"izumozaki\":_3,\"joetsu\":_3,\"kamo\":_3,\"kariwa\":_3,\"kashiwazaki\":_3,\"minamiuonuma\":_3,\"mitsuke\":_3,\"muika\":_3,\"murakami\":_3,\"myoko\":_3,\"nagaoka\":_3,\"niigata\":_3,\"ojiya\":_3,\"omi\":_3,\"sado\":_3,\"sanjo\":_3,\"seiro\":_3,\"seirou\":_3,\"sekikawa\":_3,\"shibata\":_3,\"tagami\":_3,\"tainai\":_3,\"tochio\":_3,\"tokamachi\":_3,\"tsubame\":_3,\"tsunan\":_3,\"uonuma\":_3,\"yahiko\":_3,\"yoita\":_3,\"yuzawa\":_3}],\"oita\":[1,{\"beppu\":_3,\"bungoono\":_3,\"bungotakada\":_3,\"hasama\":_3,\"hiji\":_3,\"himeshima\":_3,\"hita\":_3,\"kamitsue\":_3,\"kokonoe\":_3,\"kuju\":_3,\"kunisaki\":_3,\"kusu\":_3,\"oita\":_3,\"saiki\":_3,\"taketa\":_3,\"tsukumi\":_3,\"usa\":_3,\"usuki\":_3,\"yufu\":_3}],\"okayama\":[1,{\"akaiwa\":_3,\"asakuchi\":_3,\"bizen\":_3,\"hayashima\":_3,\"ibara\":_3,\"kagamino\":_3,\"kasaoka\":_3,\"kibichuo\":_3,\"kumenan\":_3,\"kurashiki\":_3,\"maniwa\":_3,\"misaki\":_3,\"nagi\":_3,\"niimi\":_3,\"nishiawakura\":_3,\"okayama\":_3,\"satosho\":_3,\"setouchi\":_3,\"shinjo\":_3,\"shoo\":_3,\"soja\":_3,\"takahashi\":_3,\"tamano\":_3,\"tsuyama\":_3,\"wake\":_3,\"yakage\":_3}],\"okinawa\":[1,{\"aguni\":_3,\"ginowan\":_3,\"ginoza\":_3,\"gushikami\":_3,\"haebaru\":_3,\"higashi\":_3,\"hirara\":_3,\"iheya\":_3,\"ishigaki\":_3,\"ishikawa\":_3,\"itoman\":_3,\"izena\":_3,\"kadena\":_3,\"kin\":_3,\"kitadaito\":_3,\"kitanakagusuku\":_3,\"kumejima\":_3,\"kunigami\":_3,\"minamidaito\":_3,\"motobu\":_3,\"nago\":_3,\"naha\":_3,\"nakagusuku\":_3,\"nakijin\":_3,\"nanjo\":_3,\"nishihara\":_3,\"ogimi\":_3,\"okinawa\":_3,\"onna\":_3,\"shimoji\":_3,\"taketomi\":_3,\"tarama\":_3,\"tokashiki\":_3,\"tomigusuku\":_3,\"tonaki\":_3,\"urasoe\":_3,\"uruma\":_3,\"yaese\":_3,\"yomitan\":_3,\"yonabaru\":_3,\"yonaguni\":_3,\"zamami\":_3}],\"osaka\":[1,{\"abeno\":_3,\"chihayaakasaka\":_3,\"chuo\":_3,\"daito\":_3,\"fujiidera\":_3,\"habikino\":_3,\"hannan\":_3,\"higashiosaka\":_3,\"higashisumiyoshi\":_3,\"higashiyodogawa\":_3,\"hirakata\":_3,\"ibaraki\":_3,\"ikeda\":_3,\"izumi\":_3,\"izumiotsu\":_3,\"izumisano\":_3,\"kadoma\":_3,\"kaizuka\":_3,\"kanan\":_3,\"kashiwara\":_3,\"katano\":_3,\"kawachinagano\":_3,\"kishiwada\":_3,\"kita\":_3,\"kumatori\":_3,\"matsubara\":_3,\"minato\":_3,\"minoh\":_3,\"misaki\":_3,\"moriguchi\":_3,\"neyagawa\":_3,\"nishi\":_3,\"nose\":_3,\"osakasayama\":_3,\"sakai\":_3,\"sayama\":_3,\"sennan\":_3,\"settsu\":_3,\"shijonawate\":_3,\"shimamoto\":_3,\"suita\":_3,\"tadaoka\":_3,\"taishi\":_3,\"tajiri\":_3,\"takaishi\":_3,\"takatsuki\":_3,\"tondabayashi\":_3,\"toyonaka\":_3,\"toyono\":_3,\"yao\":_3}],\"saga\":[1,{\"ariake\":_3,\"arita\":_3,\"fukudomi\":_3,\"genkai\":_3,\"hamatama\":_3,\"hizen\":_3,\"imari\":_3,\"kamimine\":_3,\"kanzaki\":_3,\"karatsu\":_3,\"kashima\":_3,\"kitagata\":_3,\"kitahata\":_3,\"kiyama\":_3,\"kouhoku\":_3,\"kyuragi\":_3,\"nishiarita\":_3,\"ogi\":_3,\"omachi\":_3,\"ouchi\":_3,\"saga\":_3,\"shiroishi\":_3,\"taku\":_3,\"tara\":_3,\"tosu\":_3,\"yoshinogari\":_3}],\"saitama\":[1,{\"arakawa\":_3,\"asaka\":_3,\"chichibu\":_3,\"fujimi\":_3,\"fujimino\":_3,\"fukaya\":_3,\"hanno\":_3,\"hanyu\":_3,\"hasuda\":_3,\"hatogaya\":_3,\"hatoyama\":_3,\"hidaka\":_3,\"higashichichibu\":_3,\"higashimatsuyama\":_3,\"honjo\":_3,\"ina\":_3,\"iruma\":_3,\"iwatsuki\":_3,\"kamiizumi\":_3,\"kamikawa\":_3,\"kamisato\":_3,\"kasukabe\":_3,\"kawagoe\":_3,\"kawaguchi\":_3,\"kawajima\":_3,\"kazo\":_3,\"kitamoto\":_3,\"koshigaya\":_3,\"kounosu\":_3,\"kuki\":_3,\"kumagaya\":_3,\"matsubushi\":_3,\"minano\":_3,\"misato\":_3,\"miyashiro\":_3,\"miyoshi\":_3,\"moroyama\":_3,\"nagatoro\":_3,\"namegawa\":_3,\"niiza\":_3,\"ogano\":_3,\"ogawa\":_3,\"ogose\":_3,\"okegawa\":_3,\"omiya\":_3,\"otaki\":_3,\"ranzan\":_3,\"ryokami\":_3,\"saitama\":_3,\"sakado\":_3,\"satte\":_3,\"sayama\":_3,\"shiki\":_3,\"shiraoka\":_3,\"soka\":_3,\"sugito\":_3,\"toda\":_3,\"tokigawa\":_3,\"tokorozawa\":_3,\"tsurugashima\":_3,\"urawa\":_3,\"warabi\":_3,\"yashio\":_3,\"yokoze\":_3,\"yono\":_3,\"yorii\":_3,\"yoshida\":_3,\"yoshikawa\":_3,\"yoshimi\":_3}],\"shiga\":[1,{\"aisho\":_3,\"gamo\":_3,\"higashiomi\":_3,\"hikone\":_3,\"koka\":_3,\"konan\":_3,\"kosei\":_3,\"koto\":_3,\"kusatsu\":_3,\"maibara\":_3,\"moriyama\":_3,\"nagahama\":_3,\"nishiazai\":_3,\"notogawa\":_3,\"omihachiman\":_3,\"otsu\":_3,\"ritto\":_3,\"ryuoh\":_3,\"takashima\":_3,\"takatsuki\":_3,\"torahime\":_3,\"toyosato\":_3,\"yasu\":_3}],\"shimane\":[1,{\"akagi\":_3,\"ama\":_3,\"gotsu\":_3,\"hamada\":_3,\"higashiizumo\":_3,\"hikawa\":_3,\"hikimi\":_3,\"izumo\":_3,\"kakinoki\":_3,\"masuda\":_3,\"matsue\":_3,\"misato\":_3,\"nishinoshima\":_3,\"ohda\":_3,\"okinoshima\":_3,\"okuizumo\":_3,\"shimane\":_3,\"tamayu\":_3,\"tsuwano\":_3,\"unnan\":_3,\"yakumo\":_3,\"yasugi\":_3,\"yatsuka\":_3}],\"shizuoka\":[1,{\"arai\":_3,\"atami\":_3,\"fuji\":_3,\"fujieda\":_3,\"fujikawa\":_3,\"fujinomiya\":_3,\"fukuroi\":_3,\"gotemba\":_3,\"haibara\":_3,\"hamamatsu\":_3,\"higashiizu\":_3,\"ito\":_3,\"iwata\":_3,\"izu\":_3,\"izunokuni\":_3,\"kakegawa\":_3,\"kannami\":_3,\"kawanehon\":_3,\"kawazu\":_3,\"kikugawa\":_3,\"kosai\":_3,\"makinohara\":_3,\"matsuzaki\":_3,\"minamiizu\":_3,\"mishima\":_3,\"morimachi\":_3,\"nishiizu\":_3,\"numazu\":_3,\"omaezaki\":_3,\"shimada\":_3,\"shimizu\":_3,\"shimoda\":_3,\"shizuoka\":_3,\"susono\":_3,\"yaizu\":_3,\"yoshida\":_3}],\"tochigi\":[1,{\"ashikaga\":_3,\"bato\":_3,\"haga\":_3,\"ichikai\":_3,\"iwafune\":_3,\"kaminokawa\":_3,\"kanuma\":_3,\"karasuyama\":_3,\"kuroiso\":_3,\"mashiko\":_3,\"mibu\":_3,\"moka\":_3,\"motegi\":_3,\"nasu\":_3,\"nasushiobara\":_3,\"nikko\":_3,\"nishikata\":_3,\"nogi\":_3,\"ohira\":_3,\"ohtawara\":_3,\"oyama\":_3,\"sakura\":_3,\"sano\":_3,\"shimotsuke\":_3,\"shioya\":_3,\"takanezawa\":_3,\"tochigi\":_3,\"tsuga\":_3,\"ujiie\":_3,\"utsunomiya\":_3,\"yaita\":_3}],\"tokushima\":[1,{\"aizumi\":_3,\"anan\":_3,\"ichiba\":_3,\"itano\":_3,\"kainan\":_3,\"komatsushima\":_3,\"matsushige\":_3,\"mima\":_3,\"minami\":_3,\"miyoshi\":_3,\"mugi\":_3,\"nakagawa\":_3,\"naruto\":_3,\"sanagochi\":_3,\"shishikui\":_3,\"tokushima\":_3,\"wajiki\":_3}],\"tokyo\":[1,{\"adachi\":_3,\"akiruno\":_3,\"akishima\":_3,\"aogashima\":_3,\"arakawa\":_3,\"bunkyo\":_3,\"chiyoda\":_3,\"chofu\":_3,\"chuo\":_3,\"edogawa\":_3,\"fuchu\":_3,\"fussa\":_3,\"hachijo\":_3,\"hachioji\":_3,\"hamura\":_3,\"higashikurume\":_3,\"higashimurayama\":_3,\"higashiyamato\":_3,\"hino\":_3,\"hinode\":_3,\"hinohara\":_3,\"inagi\":_3,\"itabashi\":_3,\"katsushika\":_3,\"kita\":_3,\"kiyose\":_3,\"kodaira\":_3,\"koganei\":_3,\"kokubunji\":_3,\"komae\":_3,\"koto\":_3,\"kouzushima\":_3,\"kunitachi\":_3,\"machida\":_3,\"meguro\":_3,\"minato\":_3,\"mitaka\":_3,\"mizuho\":_3,\"musashimurayama\":_3,\"musashino\":_3,\"nakano\":_3,\"nerima\":_3,\"ogasawara\":_3,\"okutama\":_3,\"ome\":_3,\"oshima\":_3,\"ota\":_3,\"setagaya\":_3,\"shibuya\":_3,\"shinagawa\":_3,\"shinjuku\":_3,\"suginami\":_3,\"sumida\":_3,\"tachikawa\":_3,\"taito\":_3,\"tama\":_3,\"toshima\":_3}],\"tottori\":[1,{\"chizu\":_3,\"hino\":_3,\"kawahara\":_3,\"koge\":_3,\"kotoura\":_3,\"misasa\":_3,\"nanbu\":_3,\"nichinan\":_3,\"sakaiminato\":_3,\"tottori\":_3,\"wakasa\":_3,\"yazu\":_3,\"yonago\":_3}],\"toyama\":[1,{\"asahi\":_3,\"fuchu\":_3,\"fukumitsu\":_3,\"funahashi\":_3,\"himi\":_3,\"imizu\":_3,\"inami\":_3,\"johana\":_3,\"kamiichi\":_3,\"kurobe\":_3,\"nakaniikawa\":_3,\"namerikawa\":_3,\"nanto\":_3,\"nyuzen\":_3,\"oyabe\":_3,\"taira\":_3,\"takaoka\":_3,\"tateyama\":_3,\"toga\":_3,\"tonami\":_3,\"toyama\":_3,\"unazuki\":_3,\"uozu\":_3,\"yamada\":_3}],\"wakayama\":[1,{\"arida\":_3,\"aridagawa\":_3,\"gobo\":_3,\"hashimoto\":_3,\"hidaka\":_3,\"hirogawa\":_3,\"inami\":_3,\"iwade\":_3,\"kainan\":_3,\"kamitonda\":_3,\"katsuragi\":_3,\"kimino\":_3,\"kinokawa\":_3,\"kitayama\":_3,\"koya\":_3,\"koza\":_3,\"kozagawa\":_3,\"kudoyama\":_3,\"kushimoto\":_3,\"mihama\":_3,\"misato\":_3,\"nachikatsuura\":_3,\"shingu\":_3,\"shirahama\":_3,\"taiji\":_3,\"tanabe\":_3,\"wakayama\":_3,\"yuasa\":_3,\"yura\":_3}],\"yamagata\":[1,{\"asahi\":_3,\"funagata\":_3,\"higashine\":_3,\"iide\":_3,\"kahoku\":_3,\"kaminoyama\":_3,\"kaneyama\":_3,\"kawanishi\":_3,\"mamurogawa\":_3,\"mikawa\":_3,\"murayama\":_3,\"nagai\":_3,\"nakayama\":_3,\"nanyo\":_3,\"nishikawa\":_3,\"obanazawa\":_3,\"oe\":_3,\"oguni\":_3,\"ohkura\":_3,\"oishida\":_3,\"sagae\":_3,\"sakata\":_3,\"sakegawa\":_3,\"shinjo\":_3,\"shirataka\":_3,\"shonai\":_3,\"takahata\":_3,\"tendo\":_3,\"tozawa\":_3,\"tsuruoka\":_3,\"yamagata\":_3,\"yamanobe\":_3,\"yonezawa\":_3,\"yuza\":_3}],\"yamaguchi\":[1,{\"abu\":_3,\"hagi\":_3,\"hikari\":_3,\"hofu\":_3,\"iwakuni\":_3,\"kudamatsu\":_3,\"mitou\":_3,\"nagato\":_3,\"oshima\":_3,\"shimonoseki\":_3,\"shunan\":_3,\"tabuse\":_3,\"tokuyama\":_3,\"toyota\":_3,\"ube\":_3,\"yuu\":_3}],\"yamanashi\":[1,{\"chuo\":_3,\"doshi\":_3,\"fuefuki\":_3,\"fujikawa\":_3,\"fujikawaguchiko\":_3,\"fujiyoshida\":_3,\"hayakawa\":_3,\"hokuto\":_3,\"ichikawamisato\":_3,\"kai\":_3,\"kofu\":_3,\"koshu\":_3,\"kosuge\":_3,\"minami-alps\":_3,\"minobu\":_3,\"nakamichi\":_3,\"nanbu\":_3,\"narusawa\":_3,\"nirasaki\":_3,\"nishikatsura\":_3,\"oshino\":_3,\"otsuki\":_3,\"showa\":_3,\"tabayama\":_3,\"tsuru\":_3,\"uenohara\":_3,\"yamanakako\":_3,\"yamanashi\":_3}],\"xn--ehqz56n\":_3,\"三重\":_3,\"xn--1lqs03n\":_3,\"京都\":_3,\"xn--qqqt11m\":_3,\"佐賀\":_3,\"xn--f6qx53a\":_3,\"兵庫\":_3,\"xn--djrs72d6uy\":_3,\"北海道\":_3,\"xn--mkru45i\":_3,\"千葉\":_3,\"xn--0trq7p7nn\":_3,\"和歌山\":_3,\"xn--5js045d\":_3,\"埼玉\":_3,\"xn--kbrq7o\":_3,\"大分\":_3,\"xn--pssu33l\":_3,\"大阪\":_3,\"xn--ntsq17g\":_3,\"奈良\":_3,\"xn--uisz3g\":_3,\"宮城\":_3,\"xn--6btw5a\":_3,\"宮崎\":_3,\"xn--1ctwo\":_3,\"富山\":_3,\"xn--6orx2r\":_3,\"山口\":_3,\"xn--rht61e\":_3,\"山形\":_3,\"xn--rht27z\":_3,\"山梨\":_3,\"xn--nit225k\":_3,\"岐阜\":_3,\"xn--rht3d\":_3,\"岡山\":_3,\"xn--djty4k\":_3,\"岩手\":_3,\"xn--klty5x\":_3,\"島根\":_3,\"xn--kltx9a\":_3,\"広島\":_3,\"xn--kltp7d\":_3,\"徳島\":_3,\"xn--c3s14m\":_3,\"愛媛\":_3,\"xn--vgu402c\":_3,\"愛知\":_3,\"xn--efvn9s\":_3,\"新潟\":_3,\"xn--1lqs71d\":_3,\"東京\":_3,\"xn--4pvxs\":_3,\"栃木\":_3,\"xn--uuwu58a\":_3,\"沖縄\":_3,\"xn--zbx025d\":_3,\"滋賀\":_3,\"xn--8pvr4u\":_3,\"熊本\":_3,\"xn--5rtp49c\":_3,\"石川\":_3,\"xn--ntso0iqx3a\":_3,\"神奈川\":_3,\"xn--elqq16h\":_3,\"福井\":_3,\"xn--4it168d\":_3,\"福岡\":_3,\"xn--klt787d\":_3,\"福島\":_3,\"xn--rny31h\":_3,\"秋田\":_3,\"xn--7t0a264c\":_3,\"群馬\":_3,\"xn--uist22h\":_3,\"茨城\":_3,\"xn--8ltr62k\":_3,\"長崎\":_3,\"xn--2m4a15e\":_3,\"長野\":_3,\"xn--32vp30h\":_3,\"青森\":_3,\"xn--4it797k\":_3,\"静岡\":_3,\"xn--5rtq34k\":_3,\"香川\":_3,\"xn--k7yn95e\":_3,\"高知\":_3,\"xn--tor131o\":_3,\"鳥取\":_3,\"xn--d5qv7z876c\":_3,\"鹿児島\":_3,\"kawasaki\":_18,\"kitakyushu\":_18,\"kobe\":_18,\"nagoya\":_18,\"sapporo\":_18,\"sendai\":_18,\"yokohama\":_18,\"buyshop\":_4,\"fashionstore\":_4,\"handcrafted\":_4,\"kawaiishop\":_4,\"supersale\":_4,\"theshop\":_4,\"0am\":_4,\"0g0\":_4,\"0j0\":_4,\"0t0\":_4,\"mydns\":_4,\"pgw\":_4,\"wjg\":_4,\"usercontent\":_4,\"angry\":_4,\"babyblue\":_4,\"babymilk\":_4,\"backdrop\":_4,\"bambina\":_4,\"bitter\":_4,\"blush\":_4,\"boo\":_4,\"boy\":_4,\"boyfriend\":_4,\"but\":_4,\"candypop\":_4,\"capoo\":_4,\"catfood\":_4,\"cheap\":_4,\"chicappa\":_4,\"chillout\":_4,\"chips\":_4,\"chowder\":_4,\"chu\":_4,\"ciao\":_4,\"cocotte\":_4,\"coolblog\":_4,\"cranky\":_4,\"cutegirl\":_4,\"daa\":_4,\"deca\":_4,\"deci\":_4,\"digick\":_4,\"egoism\":_4,\"fakefur\":_4,\"fem\":_4,\"flier\":_4,\"floppy\":_4,\"fool\":_4,\"frenchkiss\":_4,\"girlfriend\":_4,\"girly\":_4,\"gloomy\":_4,\"gonna\":_4,\"greater\":_4,\"hacca\":_4,\"heavy\":_4,\"her\":_4,\"hiho\":_4,\"hippy\":_4,\"holy\":_4,\"hungry\":_4,\"icurus\":_4,\"itigo\":_4,\"jellybean\":_4,\"kikirara\":_4,\"kill\":_4,\"kilo\":_4,\"kuron\":_4,\"littlestar\":_4,\"lolipopmc\":_4,\"lolitapunk\":_4,\"lomo\":_4,\"lovepop\":_4,\"lovesick\":_4,\"main\":_4,\"mods\":_4,\"mond\":_4,\"mongolian\":_4,\"moo\":_4,\"namaste\":_4,\"nikita\":_4,\"nobushi\":_4,\"noor\":_4,\"oops\":_4,\"parallel\":_4,\"parasite\":_4,\"pecori\":_4,\"peewee\":_4,\"penne\":_4,\"pepper\":_4,\"perma\":_4,\"pigboat\":_4,\"pinoko\":_4,\"punyu\":_4,\"pupu\":_4,\"pussycat\":_4,\"pya\":_4,\"raindrop\":_4,\"readymade\":_4,\"sadist\":_4,\"schoolbus\":_4,\"secret\":_4,\"staba\":_4,\"stripper\":_4,\"sub\":_4,\"sunnyday\":_4,\"thick\":_4,\"tonkotsu\":_4,\"under\":_4,\"upper\":_4,\"velvet\":_4,\"verse\":_4,\"versus\":_4,\"vivian\":_4,\"watson\":_4,\"weblike\":_4,\"whitesnow\":_4,\"zombie\":_4,\"hateblo\":_4,\"hatenablog\":_4,\"hatenadiary\":_4,\"2-d\":_4,\"bona\":_4,\"crap\":_4,\"daynight\":_4,\"eek\":_4,\"flop\":_4,\"halfmoon\":_4,\"jeez\":_4,\"matrix\":_4,\"mimoza\":_4,\"netgamers\":_4,\"nyanta\":_4,\"o0o0\":_4,\"rdy\":_4,\"rgr\":_4,\"rulez\":_4,\"sakurastorage\":[0,{\"isk01\":_54,\"isk02\":_54}],\"saloon\":_4,\"sblo\":_4,\"skr\":_4,\"tank\":_4,\"uh-oh\":_4,\"undo\":_4,\"webaccel\":[0,{\"rs\":_4,\"user\":_4}],\"websozai\":_4,\"xii\":_4}],\"ke\":[1,{\"ac\":_3,\"co\":_3,\"go\":_3,\"info\":_3,\"me\":_3,\"mobi\":_3,\"ne\":_3,\"or\":_3,\"sc\":_3}],\"kg\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"us\":_4}],\"kh\":_18,\"ki\":_55,\"km\":[1,{\"ass\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"nom\":_3,\"org\":_3,\"prd\":_3,\"tm\":_3,\"asso\":_3,\"coop\":_3,\"gouv\":_3,\"medecin\":_3,\"notaires\":_3,\"pharmaciens\":_3,\"presse\":_3,\"veterinaire\":_3}],\"kn\":[1,{\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3}],\"kp\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"org\":_3,\"rep\":_3,\"tra\":_3}],\"kr\":[1,{\"ac\":_3,\"co\":_3,\"es\":_3,\"go\":_3,\"hs\":_3,\"kg\":_3,\"mil\":_3,\"ms\":_3,\"ne\":_3,\"or\":_3,\"pe\":_3,\"re\":_3,\"sc\":_3,\"busan\":_3,\"chungbuk\":_3,\"chungnam\":_3,\"daegu\":_3,\"daejeon\":_3,\"gangwon\":_3,\"gwangju\":_3,\"gyeongbuk\":_3,\"gyeonggi\":_3,\"gyeongnam\":_3,\"incheon\":_3,\"jeju\":_3,\"jeonbuk\":_3,\"jeonnam\":_3,\"seoul\":_3,\"ulsan\":_3}],\"kw\":[1,{\"com\":_3,\"edu\":_3,\"emb\":_3,\"gov\":_3,\"ind\":_3,\"net\":_3,\"org\":_3}],\"ky\":_44,\"kz\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"jcloud\":_4}],\"la\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"int\":_3,\"net\":_3,\"org\":_3,\"per\":_3,\"bnr\":_4}],\"lb\":_5,\"lc\":[1,{\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"oy\":_4}],\"li\":_3,\"lk\":[1,{\"ac\":_3,\"assn\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"grp\":_3,\"hotel\":_3,\"int\":_3,\"ltd\":_3,\"net\":_3,\"ngo\":_3,\"org\":_3,\"sch\":_3,\"soc\":_3,\"web\":_3}],\"lr\":_5,\"ls\":[1,{\"ac\":_3,\"biz\":_3,\"co\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"net\":_3,\"org\":_3,\"sc\":_3}],\"lt\":_11,\"lu\":[1,{\"123website\":_4}],\"lv\":[1,{\"asn\":_3,\"com\":_3,\"conf\":_3,\"edu\":_3,\"gov\":_3,\"id\":_3,\"mil\":_3,\"net\":_3,\"org\":_3}],\"ly\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"id\":_3,\"med\":_3,\"net\":_3,\"org\":_3,\"plc\":_3,\"sch\":_3}],\"ma\":[1,{\"ac\":_3,\"co\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"press\":_3}],\"mc\":[1,{\"asso\":_3,\"tm\":_3}],\"md\":[1,{\"ir\":_4}],\"me\":[1,{\"ac\":_3,\"co\":_3,\"edu\":_3,\"gov\":_3,\"its\":_3,\"net\":_3,\"org\":_3,\"priv\":_3,\"c66\":_4,\"craft\":_4,\"edgestack\":_4,\"filegear\":_4,\"glitch\":_4,\"filegear-sg\":_4,\"lohmus\":_4,\"barsy\":_4,\"mcdir\":_4,\"brasilia\":_4,\"ddns\":_4,\"dnsfor\":_4,\"hopto\":_4,\"loginto\":_4,\"noip\":_4,\"webhop\":_4,\"soundcast\":_4,\"tcp4\":_4,\"vp4\":_4,\"diskstation\":_4,\"dscloud\":_4,\"i234\":_4,\"myds\":_4,\"synology\":_4,\"transip\":_43,\"nohost\":_4}],\"mg\":[1,{\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"nom\":_3,\"org\":_3,\"prd\":_3}],\"mh\":_3,\"mil\":_3,\"mk\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"inf\":_3,\"name\":_3,\"net\":_3,\"org\":_3}],\"ml\":[1,{\"ac\":_3,\"art\":_3,\"asso\":_3,\"com\":_3,\"edu\":_3,\"gouv\":_3,\"gov\":_3,\"info\":_3,\"inst\":_3,\"net\":_3,\"org\":_3,\"pr\":_3,\"presse\":_3}],\"mm\":_18,\"mn\":[1,{\"edu\":_3,\"gov\":_3,\"org\":_3,\"nyc\":_4}],\"mo\":_5,\"mobi\":[1,{\"barsy\":_4,\"dscloud\":_4}],\"mp\":[1,{\"ju\":_4}],\"mq\":_3,\"mr\":_11,\"ms\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"minisite\":_4}],\"mt\":_44,\"mu\":[1,{\"ac\":_3,\"co\":_3,\"com\":_3,\"gov\":_3,\"net\":_3,\"or\":_3,\"org\":_3}],\"museum\":_3,\"mv\":[1,{\"aero\":_3,\"biz\":_3,\"com\":_3,\"coop\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"int\":_3,\"mil\":_3,\"museum\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"pro\":_3}],\"mw\":[1,{\"ac\":_3,\"biz\":_3,\"co\":_3,\"com\":_3,\"coop\":_3,\"edu\":_3,\"gov\":_3,\"int\":_3,\"net\":_3,\"org\":_3}],\"mx\":[1,{\"com\":_3,\"edu\":_3,\"gob\":_3,\"net\":_3,\"org\":_3}],\"my\":[1,{\"biz\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"name\":_3,\"net\":_3,\"org\":_3}],\"mz\":[1,{\"ac\":_3,\"adv\":_3,\"co\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3}],\"na\":[1,{\"alt\":_3,\"co\":_3,\"com\":_3,\"gov\":_3,\"net\":_3,\"org\":_3}],\"name\":[1,{\"her\":_57,\"his\":_57}],\"nc\":[1,{\"asso\":_3,\"nom\":_3}],\"ne\":_3,\"net\":[1,{\"adobeaemcloud\":_4,\"adobeio-static\":_4,\"adobeioruntime\":_4,\"akadns\":_4,\"akamai\":_4,\"akamai-staging\":_4,\"akamaiedge\":_4,\"akamaiedge-staging\":_4,\"akamaihd\":_4,\"akamaihd-staging\":_4,\"akamaiorigin\":_4,\"akamaiorigin-staging\":_4,\"akamaized\":_4,\"akamaized-staging\":_4,\"edgekey\":_4,\"edgekey-staging\":_4,\"edgesuite\":_4,\"edgesuite-staging\":_4,\"alwaysdata\":_4,\"myamaze\":_4,\"cloudfront\":_4,\"appudo\":_4,\"atlassian-dev\":[0,{\"prod\":_51}],\"myfritz\":_4,\"onavstack\":_4,\"shopselect\":_4,\"blackbaudcdn\":_4,\"boomla\":_4,\"bplaced\":_4,\"square7\":_4,\"cdn77\":[0,{\"r\":_4}],\"cdn77-ssl\":_4,\"gb\":_4,\"hu\":_4,\"jp\":_4,\"se\":_4,\"uk\":_4,\"clickrising\":_4,\"ddns-ip\":_4,\"dns-cloud\":_4,\"dns-dynamic\":_4,\"cloudaccess\":_4,\"cloudflare\":[2,{\"cdn\":_4}],\"cloudflareanycast\":_51,\"cloudflarecn\":_51,\"cloudflareglobal\":_51,\"ctfcloud\":_4,\"feste-ip\":_4,\"knx-server\":_4,\"static-access\":_4,\"cryptonomic\":_7,\"dattolocal\":_4,\"mydatto\":_4,\"debian\":_4,\"definima\":_4,\"deno\":_4,\"at-band-camp\":_4,\"blogdns\":_4,\"broke-it\":_4,\"buyshouses\":_4,\"dnsalias\":_4,\"dnsdojo\":_4,\"does-it\":_4,\"dontexist\":_4,\"dynalias\":_4,\"dynathome\":_4,\"endofinternet\":_4,\"from-az\":_4,\"from-co\":_4,\"from-la\":_4,\"from-ny\":_4,\"gets-it\":_4,\"ham-radio-op\":_4,\"homeftp\":_4,\"homeip\":_4,\"homelinux\":_4,\"homeunix\":_4,\"in-the-band\":_4,\"is-a-chef\":_4,\"is-a-geek\":_4,\"isa-geek\":_4,\"kicks-ass\":_4,\"office-on-the\":_4,\"podzone\":_4,\"scrapper-site\":_4,\"selfip\":_4,\"sells-it\":_4,\"servebbs\":_4,\"serveftp\":_4,\"thruhere\":_4,\"webhop\":_4,\"casacam\":_4,\"dynu\":_4,\"dynv6\":_4,\"twmail\":_4,\"ru\":_4,\"channelsdvr\":[2,{\"u\":_4}],\"fastly\":[0,{\"freetls\":_4,\"map\":_4,\"prod\":[0,{\"a\":_4,\"global\":_4}],\"ssl\":[0,{\"a\":_4,\"b\":_4,\"global\":_4}]}],\"fastlylb\":[2,{\"map\":_4}],\"edgeapp\":_4,\"keyword-on\":_4,\"live-on\":_4,\"server-on\":_4,\"cdn-edges\":_4,\"heteml\":_4,\"cloudfunctions\":_4,\"grafana-dev\":_4,\"iobb\":_4,\"moonscale\":_4,\"in-dsl\":_4,\"in-vpn\":_4,\"oninferno\":_4,\"botdash\":_4,\"apps-1and1\":_4,\"ipifony\":_4,\"cloudjiffy\":[2,{\"fra1-de\":_4,\"west1-us\":_4}],\"elastx\":[0,{\"jls-sto1\":_4,\"jls-sto2\":_4,\"jls-sto3\":_4}],\"massivegrid\":[0,{\"paas\":[0,{\"fr-1\":_4,\"lon-1\":_4,\"lon-2\":_4,\"ny-1\":_4,\"ny-2\":_4,\"sg-1\":_4}]}],\"saveincloud\":[0,{\"jelastic\":_4,\"nordeste-idc\":_4}],\"scaleforce\":_45,\"kinghost\":_4,\"uni5\":_4,\"krellian\":_4,\"ggff\":_4,\"localcert\":_4,\"localhostcert\":_4,\"localto\":_7,\"barsy\":_4,\"memset\":_4,\"azure-api\":_4,\"azure-mobile\":_4,\"azureedge\":_4,\"azurefd\":_4,\"azurestaticapps\":[2,{\"1\":_4,\"2\":_4,\"3\":_4,\"4\":_4,\"5\":_4,\"6\":_4,\"7\":_4,\"centralus\":_4,\"eastasia\":_4,\"eastus2\":_4,\"westeurope\":_4,\"westus2\":_4}],\"azurewebsites\":_4,\"cloudapp\":_4,\"trafficmanager\":_4,\"windows\":[0,{\"core\":[0,{\"blob\":_4}],\"servicebus\":_4}],\"mynetname\":[0,{\"sn\":_4}],\"routingthecloud\":_4,\"bounceme\":_4,\"ddns\":_4,\"eating-organic\":_4,\"mydissent\":_4,\"myeffect\":_4,\"mymediapc\":_4,\"mypsx\":_4,\"mysecuritycamera\":_4,\"nhlfan\":_4,\"no-ip\":_4,\"pgafan\":_4,\"privatizehealthinsurance\":_4,\"redirectme\":_4,\"serveblog\":_4,\"serveminecraft\":_4,\"sytes\":_4,\"dnsup\":_4,\"hicam\":_4,\"now-dns\":_4,\"ownip\":_4,\"vpndns\":_4,\"cloudycluster\":_4,\"ovh\":[0,{\"hosting\":_7,\"webpaas\":_7}],\"rackmaze\":_4,\"myradweb\":_4,\"in\":_4,\"subsc-pay\":_4,\"squares\":_4,\"schokokeks\":_4,\"firewall-gateway\":_4,\"seidat\":_4,\"senseering\":_4,\"siteleaf\":_4,\"mafelo\":_4,\"myspreadshop\":_4,\"vps-host\":[2,{\"jelastic\":[0,{\"atl\":_4,\"njs\":_4,\"ric\":_4}]}],\"srcf\":[0,{\"soc\":_4,\"user\":_4}],\"supabase\":_4,\"dsmynas\":_4,\"familyds\":_4,\"ts\":[2,{\"c\":_7}],\"torproject\":[2,{\"pages\":_4}],\"vusercontent\":_4,\"reserve-online\":_4,\"community-pro\":_4,\"meinforum\":_4,\"yandexcloud\":[2,{\"storage\":_4,\"website\":_4}],\"za\":_4}],\"nf\":[1,{\"arts\":_3,\"com\":_3,\"firm\":_3,\"info\":_3,\"net\":_3,\"other\":_3,\"per\":_3,\"rec\":_3,\"store\":_3,\"web\":_3}],\"ng\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"i\":_3,\"mil\":_3,\"mobi\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"sch\":_3,\"biz\":[2,{\"co\":_4,\"dl\":_4,\"go\":_4,\"lg\":_4,\"on\":_4}],\"col\":_4,\"firm\":_4,\"gen\":_4,\"ltd\":_4,\"ngo\":_4,\"plc\":_4}],\"ni\":[1,{\"ac\":_3,\"biz\":_3,\"co\":_3,\"com\":_3,\"edu\":_3,\"gob\":_3,\"in\":_3,\"info\":_3,\"int\":_3,\"mil\":_3,\"net\":_3,\"nom\":_3,\"org\":_3,\"web\":_3}],\"nl\":[1,{\"co\":_4,\"hosting-cluster\":_4,\"gov\":_4,\"khplay\":_4,\"123website\":_4,\"myspreadshop\":_4,\"transurl\":_7,\"cistron\":_4,\"demon\":_4}],\"no\":[1,{\"fhs\":_3,\"folkebibl\":_3,\"fylkesbibl\":_3,\"idrett\":_3,\"museum\":_3,\"priv\":_3,\"vgs\":_3,\"dep\":_3,\"herad\":_3,\"kommune\":_3,\"mil\":_3,\"stat\":_3,\"aa\":_58,\"ah\":_58,\"bu\":_58,\"fm\":_58,\"hl\":_58,\"hm\":_58,\"jan-mayen\":_58,\"mr\":_58,\"nl\":_58,\"nt\":_58,\"of\":_58,\"ol\":_58,\"oslo\":_58,\"rl\":_58,\"sf\":_58,\"st\":_58,\"svalbard\":_58,\"tm\":_58,\"tr\":_58,\"va\":_58,\"vf\":_58,\"akrehamn\":_3,\"xn--krehamn-dxa\":_3,\"åkrehamn\":_3,\"algard\":_3,\"xn--lgrd-poac\":_3,\"ålgård\":_3,\"arna\":_3,\"bronnoysund\":_3,\"xn--brnnysund-m8ac\":_3,\"brønnøysund\":_3,\"brumunddal\":_3,\"bryne\":_3,\"drobak\":_3,\"xn--drbak-wua\":_3,\"drøbak\":_3,\"egersund\":_3,\"fetsund\":_3,\"floro\":_3,\"xn--flor-jra\":_3,\"florø\":_3,\"fredrikstad\":_3,\"hokksund\":_3,\"honefoss\":_3,\"xn--hnefoss-q1a\":_3,\"hønefoss\":_3,\"jessheim\":_3,\"jorpeland\":_3,\"xn--jrpeland-54a\":_3,\"jørpeland\":_3,\"kirkenes\":_3,\"kopervik\":_3,\"krokstadelva\":_3,\"langevag\":_3,\"xn--langevg-jxa\":_3,\"langevåg\":_3,\"leirvik\":_3,\"mjondalen\":_3,\"xn--mjndalen-64a\":_3,\"mjøndalen\":_3,\"mo-i-rana\":_3,\"mosjoen\":_3,\"xn--mosjen-eya\":_3,\"mosjøen\":_3,\"nesoddtangen\":_3,\"orkanger\":_3,\"osoyro\":_3,\"xn--osyro-wua\":_3,\"osøyro\":_3,\"raholt\":_3,\"xn--rholt-mra\":_3,\"råholt\":_3,\"sandnessjoen\":_3,\"xn--sandnessjen-ogb\":_3,\"sandnessjøen\":_3,\"skedsmokorset\":_3,\"slattum\":_3,\"spjelkavik\":_3,\"stathelle\":_3,\"stavern\":_3,\"stjordalshalsen\":_3,\"xn--stjrdalshalsen-sqb\":_3,\"stjørdalshalsen\":_3,\"tananger\":_3,\"tranby\":_3,\"vossevangen\":_3,\"aarborte\":_3,\"aejrie\":_3,\"afjord\":_3,\"xn--fjord-lra\":_3,\"åfjord\":_3,\"agdenes\":_3,\"akershus\":_59,\"aknoluokta\":_3,\"xn--koluokta-7ya57h\":_3,\"ákŋoluokta\":_3,\"al\":_3,\"xn--l-1fa\":_3,\"ål\":_3,\"alaheadju\":_3,\"xn--laheadju-7ya\":_3,\"álaheadju\":_3,\"alesund\":_3,\"xn--lesund-hua\":_3,\"ålesund\":_3,\"alstahaug\":_3,\"alta\":_3,\"xn--lt-liac\":_3,\"áltá\":_3,\"alvdal\":_3,\"amli\":_3,\"xn--mli-tla\":_3,\"åmli\":_3,\"amot\":_3,\"xn--mot-tla\":_3,\"åmot\":_3,\"andasuolo\":_3,\"andebu\":_3,\"andoy\":_3,\"xn--andy-ira\":_3,\"andøy\":_3,\"ardal\":_3,\"xn--rdal-poa\":_3,\"årdal\":_3,\"aremark\":_3,\"arendal\":_3,\"xn--s-1fa\":_3,\"ås\":_3,\"aseral\":_3,\"xn--seral-lra\":_3,\"åseral\":_3,\"asker\":_3,\"askim\":_3,\"askoy\":_3,\"xn--asky-ira\":_3,\"askøy\":_3,\"askvoll\":_3,\"asnes\":_3,\"xn--snes-poa\":_3,\"åsnes\":_3,\"audnedaln\":_3,\"aukra\":_3,\"aure\":_3,\"aurland\":_3,\"aurskog-holand\":_3,\"xn--aurskog-hland-jnb\":_3,\"aurskog-høland\":_3,\"austevoll\":_3,\"austrheim\":_3,\"averoy\":_3,\"xn--avery-yua\":_3,\"averøy\":_3,\"badaddja\":_3,\"xn--bdddj-mrabd\":_3,\"bådåddjå\":_3,\"xn--brum-voa\":_3,\"bærum\":_3,\"bahcavuotna\":_3,\"xn--bhcavuotna-s4a\":_3,\"báhcavuotna\":_3,\"bahccavuotna\":_3,\"xn--bhccavuotna-k7a\":_3,\"báhccavuotna\":_3,\"baidar\":_3,\"xn--bidr-5nac\":_3,\"báidár\":_3,\"bajddar\":_3,\"xn--bjddar-pta\":_3,\"bájddar\":_3,\"balat\":_3,\"xn--blt-elab\":_3,\"bálát\":_3,\"balestrand\":_3,\"ballangen\":_3,\"balsfjord\":_3,\"bamble\":_3,\"bardu\":_3,\"barum\":_3,\"batsfjord\":_3,\"xn--btsfjord-9za\":_3,\"båtsfjord\":_3,\"bearalvahki\":_3,\"xn--bearalvhki-y4a\":_3,\"bearalváhki\":_3,\"beardu\":_3,\"beiarn\":_3,\"berg\":_3,\"bergen\":_3,\"berlevag\":_3,\"xn--berlevg-jxa\":_3,\"berlevåg\":_3,\"bievat\":_3,\"xn--bievt-0qa\":_3,\"bievát\":_3,\"bindal\":_3,\"birkenes\":_3,\"bjarkoy\":_3,\"xn--bjarky-fya\":_3,\"bjarkøy\":_3,\"bjerkreim\":_3,\"bjugn\":_3,\"bodo\":_3,\"xn--bod-2na\":_3,\"bodø\":_3,\"bokn\":_3,\"bomlo\":_3,\"xn--bmlo-gra\":_3,\"bømlo\":_3,\"bremanger\":_3,\"bronnoy\":_3,\"xn--brnny-wuac\":_3,\"brønnøy\":_3,\"budejju\":_3,\"buskerud\":_59,\"bygland\":_3,\"bykle\":_3,\"cahcesuolo\":_3,\"xn--hcesuolo-7ya35b\":_3,\"čáhcesuolo\":_3,\"davvenjarga\":_3,\"xn--davvenjrga-y4a\":_3,\"davvenjárga\":_3,\"davvesiida\":_3,\"deatnu\":_3,\"dielddanuorri\":_3,\"divtasvuodna\":_3,\"divttasvuotna\":_3,\"donna\":_3,\"xn--dnna-gra\":_3,\"dønna\":_3,\"dovre\":_3,\"drammen\":_3,\"drangedal\":_3,\"dyroy\":_3,\"xn--dyry-ira\":_3,\"dyrøy\":_3,\"eid\":_3,\"eidfjord\":_3,\"eidsberg\":_3,\"eidskog\":_3,\"eidsvoll\":_3,\"eigersund\":_3,\"elverum\":_3,\"enebakk\":_3,\"engerdal\":_3,\"etne\":_3,\"etnedal\":_3,\"evenassi\":_3,\"xn--eveni-0qa01ga\":_3,\"evenášši\":_3,\"evenes\":_3,\"evje-og-hornnes\":_3,\"farsund\":_3,\"fauske\":_3,\"fedje\":_3,\"fet\":_3,\"finnoy\":_3,\"xn--finny-yua\":_3,\"finnøy\":_3,\"fitjar\":_3,\"fjaler\":_3,\"fjell\":_3,\"fla\":_3,\"xn--fl-zia\":_3,\"flå\":_3,\"flakstad\":_3,\"flatanger\":_3,\"flekkefjord\":_3,\"flesberg\":_3,\"flora\":_3,\"folldal\":_3,\"forde\":_3,\"xn--frde-gra\":_3,\"førde\":_3,\"forsand\":_3,\"fosnes\":_3,\"xn--frna-woa\":_3,\"fræna\":_3,\"frana\":_3,\"frei\":_3,\"frogn\":_3,\"froland\":_3,\"frosta\":_3,\"froya\":_3,\"xn--frya-hra\":_3,\"frøya\":_3,\"fuoisku\":_3,\"fuossko\":_3,\"fusa\":_3,\"fyresdal\":_3,\"gaivuotna\":_3,\"xn--givuotna-8ya\":_3,\"gáivuotna\":_3,\"galsa\":_3,\"xn--gls-elac\":_3,\"gálsá\":_3,\"gamvik\":_3,\"gangaviika\":_3,\"xn--ggaviika-8ya47h\":_3,\"gáŋgaviika\":_3,\"gaular\":_3,\"gausdal\":_3,\"giehtavuoatna\":_3,\"gildeskal\":_3,\"xn--gildeskl-g0a\":_3,\"gildeskål\":_3,\"giske\":_3,\"gjemnes\":_3,\"gjerdrum\":_3,\"gjerstad\":_3,\"gjesdal\":_3,\"gjovik\":_3,\"xn--gjvik-wua\":_3,\"gjøvik\":_3,\"gloppen\":_3,\"gol\":_3,\"gran\":_3,\"grane\":_3,\"granvin\":_3,\"gratangen\":_3,\"grimstad\":_3,\"grong\":_3,\"grue\":_3,\"gulen\":_3,\"guovdageaidnu\":_3,\"ha\":_3,\"xn--h-2fa\":_3,\"hå\":_3,\"habmer\":_3,\"xn--hbmer-xqa\":_3,\"hábmer\":_3,\"hadsel\":_3,\"xn--hgebostad-g3a\":_3,\"hægebostad\":_3,\"hagebostad\":_3,\"halden\":_3,\"halsa\":_3,\"hamar\":_3,\"hamaroy\":_3,\"hammarfeasta\":_3,\"xn--hmmrfeasta-s4ac\":_3,\"hámmárfeasta\":_3,\"hammerfest\":_3,\"hapmir\":_3,\"xn--hpmir-xqa\":_3,\"hápmir\":_3,\"haram\":_3,\"hareid\":_3,\"harstad\":_3,\"hasvik\":_3,\"hattfjelldal\":_3,\"haugesund\":_3,\"hedmark\":[0,{\"os\":_3,\"valer\":_3,\"xn--vler-qoa\":_3,\"våler\":_3}],\"hemne\":_3,\"hemnes\":_3,\"hemsedal\":_3,\"hitra\":_3,\"hjartdal\":_3,\"hjelmeland\":_3,\"hobol\":_3,\"xn--hobl-ira\":_3,\"hobøl\":_3,\"hof\":_3,\"hol\":_3,\"hole\":_3,\"holmestrand\":_3,\"holtalen\":_3,\"xn--holtlen-hxa\":_3,\"holtålen\":_3,\"hordaland\":[0,{\"os\":_3}],\"hornindal\":_3,\"horten\":_3,\"hoyanger\":_3,\"xn--hyanger-q1a\":_3,\"høyanger\":_3,\"hoylandet\":_3,\"xn--hylandet-54a\":_3,\"høylandet\":_3,\"hurdal\":_3,\"hurum\":_3,\"hvaler\":_3,\"hyllestad\":_3,\"ibestad\":_3,\"inderoy\":_3,\"xn--indery-fya\":_3,\"inderøy\":_3,\"iveland\":_3,\"ivgu\":_3,\"jevnaker\":_3,\"jolster\":_3,\"xn--jlster-bya\":_3,\"jølster\":_3,\"jondal\":_3,\"kafjord\":_3,\"xn--kfjord-iua\":_3,\"kåfjord\":_3,\"karasjohka\":_3,\"xn--krjohka-hwab49j\":_3,\"kárášjohka\":_3,\"karasjok\":_3,\"karlsoy\":_3,\"karmoy\":_3,\"xn--karmy-yua\":_3,\"karmøy\":_3,\"kautokeino\":_3,\"klabu\":_3,\"xn--klbu-woa\":_3,\"klæbu\":_3,\"klepp\":_3,\"kongsberg\":_3,\"kongsvinger\":_3,\"kraanghke\":_3,\"xn--kranghke-b0a\":_3,\"kråanghke\":_3,\"kragero\":_3,\"xn--krager-gya\":_3,\"kragerø\":_3,\"kristiansand\":_3,\"kristiansund\":_3,\"krodsherad\":_3,\"xn--krdsherad-m8a\":_3,\"krødsherad\":_3,\"xn--kvfjord-nxa\":_3,\"kvæfjord\":_3,\"xn--kvnangen-k0a\":_3,\"kvænangen\":_3,\"kvafjord\":_3,\"kvalsund\":_3,\"kvam\":_3,\"kvanangen\":_3,\"kvinesdal\":_3,\"kvinnherad\":_3,\"kviteseid\":_3,\"kvitsoy\":_3,\"xn--kvitsy-fya\":_3,\"kvitsøy\":_3,\"laakesvuemie\":_3,\"xn--lrdal-sra\":_3,\"lærdal\":_3,\"lahppi\":_3,\"xn--lhppi-xqa\":_3,\"láhppi\":_3,\"lardal\":_3,\"larvik\":_3,\"lavagis\":_3,\"lavangen\":_3,\"leangaviika\":_3,\"xn--leagaviika-52b\":_3,\"leaŋgaviika\":_3,\"lebesby\":_3,\"leikanger\":_3,\"leirfjord\":_3,\"leka\":_3,\"leksvik\":_3,\"lenvik\":_3,\"lerdal\":_3,\"lesja\":_3,\"levanger\":_3,\"lier\":_3,\"lierne\":_3,\"lillehammer\":_3,\"lillesand\":_3,\"lindas\":_3,\"xn--linds-pra\":_3,\"lindås\":_3,\"lindesnes\":_3,\"loabat\":_3,\"xn--loabt-0qa\":_3,\"loabát\":_3,\"lodingen\":_3,\"xn--ldingen-q1a\":_3,\"lødingen\":_3,\"lom\":_3,\"loppa\":_3,\"lorenskog\":_3,\"xn--lrenskog-54a\":_3,\"lørenskog\":_3,\"loten\":_3,\"xn--lten-gra\":_3,\"løten\":_3,\"lund\":_3,\"lunner\":_3,\"luroy\":_3,\"xn--lury-ira\":_3,\"lurøy\":_3,\"luster\":_3,\"lyngdal\":_3,\"lyngen\":_3,\"malatvuopmi\":_3,\"xn--mlatvuopmi-s4a\":_3,\"málatvuopmi\":_3,\"malselv\":_3,\"xn--mlselv-iua\":_3,\"målselv\":_3,\"malvik\":_3,\"mandal\":_3,\"marker\":_3,\"marnardal\":_3,\"masfjorden\":_3,\"masoy\":_3,\"xn--msy-ula0h\":_3,\"måsøy\":_3,\"matta-varjjat\":_3,\"xn--mtta-vrjjat-k7af\":_3,\"mátta-várjjat\":_3,\"meland\":_3,\"meldal\":_3,\"melhus\":_3,\"meloy\":_3,\"xn--mely-ira\":_3,\"meløy\":_3,\"meraker\":_3,\"xn--merker-kua\":_3,\"meråker\":_3,\"midsund\":_3,\"midtre-gauldal\":_3,\"moareke\":_3,\"xn--moreke-jua\":_3,\"moåreke\":_3,\"modalen\":_3,\"modum\":_3,\"molde\":_3,\"more-og-romsdal\":[0,{\"heroy\":_3,\"sande\":_3}],\"xn--mre-og-romsdal-qqb\":[0,{\"xn--hery-ira\":_3,\"sande\":_3}],\"møre-og-romsdal\":[0,{\"herøy\":_3,\"sande\":_3}],\"moskenes\":_3,\"moss\":_3,\"mosvik\":_3,\"muosat\":_3,\"xn--muost-0qa\":_3,\"muosát\":_3,\"naamesjevuemie\":_3,\"xn--nmesjevuemie-tcba\":_3,\"nååmesjevuemie\":_3,\"xn--nry-yla5g\":_3,\"nærøy\":_3,\"namdalseid\":_3,\"namsos\":_3,\"namsskogan\":_3,\"nannestad\":_3,\"naroy\":_3,\"narviika\":_3,\"narvik\":_3,\"naustdal\":_3,\"navuotna\":_3,\"xn--nvuotna-hwa\":_3,\"návuotna\":_3,\"nedre-eiker\":_3,\"nesna\":_3,\"nesodden\":_3,\"nesseby\":_3,\"nesset\":_3,\"nissedal\":_3,\"nittedal\":_3,\"nord-aurdal\":_3,\"nord-fron\":_3,\"nord-odal\":_3,\"norddal\":_3,\"nordkapp\":_3,\"nordland\":[0,{\"bo\":_3,\"xn--b-5ga\":_3,\"bø\":_3,\"heroy\":_3,\"xn--hery-ira\":_3,\"herøy\":_3}],\"nordre-land\":_3,\"nordreisa\":_3,\"nore-og-uvdal\":_3,\"notodden\":_3,\"notteroy\":_3,\"xn--nttery-byae\":_3,\"nøtterøy\":_3,\"odda\":_3,\"oksnes\":_3,\"xn--ksnes-uua\":_3,\"øksnes\":_3,\"omasvuotna\":_3,\"oppdal\":_3,\"oppegard\":_3,\"xn--oppegrd-ixa\":_3,\"oppegård\":_3,\"orkdal\":_3,\"orland\":_3,\"xn--rland-uua\":_3,\"ørland\":_3,\"orskog\":_3,\"xn--rskog-uua\":_3,\"ørskog\":_3,\"orsta\":_3,\"xn--rsta-fra\":_3,\"ørsta\":_3,\"osen\":_3,\"osteroy\":_3,\"xn--ostery-fya\":_3,\"osterøy\":_3,\"ostfold\":[0,{\"valer\":_3}],\"xn--stfold-9xa\":[0,{\"xn--vler-qoa\":_3}],\"østfold\":[0,{\"våler\":_3}],\"ostre-toten\":_3,\"xn--stre-toten-zcb\":_3,\"østre-toten\":_3,\"overhalla\":_3,\"ovre-eiker\":_3,\"xn--vre-eiker-k8a\":_3,\"øvre-eiker\":_3,\"oyer\":_3,\"xn--yer-zna\":_3,\"øyer\":_3,\"oygarden\":_3,\"xn--ygarden-p1a\":_3,\"øygarden\":_3,\"oystre-slidre\":_3,\"xn--ystre-slidre-ujb\":_3,\"øystre-slidre\":_3,\"porsanger\":_3,\"porsangu\":_3,\"xn--porsgu-sta26f\":_3,\"porsáŋgu\":_3,\"porsgrunn\":_3,\"rade\":_3,\"xn--rde-ula\":_3,\"råde\":_3,\"radoy\":_3,\"xn--rady-ira\":_3,\"radøy\":_3,\"xn--rlingen-mxa\":_3,\"rælingen\":_3,\"rahkkeravju\":_3,\"xn--rhkkervju-01af\":_3,\"ráhkkerávju\":_3,\"raisa\":_3,\"xn--risa-5na\":_3,\"ráisa\":_3,\"rakkestad\":_3,\"ralingen\":_3,\"rana\":_3,\"randaberg\":_3,\"rauma\":_3,\"rendalen\":_3,\"rennebu\":_3,\"rennesoy\":_3,\"xn--rennesy-v1a\":_3,\"rennesøy\":_3,\"rindal\":_3,\"ringebu\":_3,\"ringerike\":_3,\"ringsaker\":_3,\"risor\":_3,\"xn--risr-ira\":_3,\"risør\":_3,\"rissa\":_3,\"roan\":_3,\"rodoy\":_3,\"xn--rdy-0nab\":_3,\"rødøy\":_3,\"rollag\":_3,\"romsa\":_3,\"romskog\":_3,\"xn--rmskog-bya\":_3,\"rømskog\":_3,\"roros\":_3,\"xn--rros-gra\":_3,\"røros\":_3,\"rost\":_3,\"xn--rst-0na\":_3,\"røst\":_3,\"royken\":_3,\"xn--ryken-vua\":_3,\"røyken\":_3,\"royrvik\":_3,\"xn--ryrvik-bya\":_3,\"røyrvik\":_3,\"ruovat\":_3,\"rygge\":_3,\"salangen\":_3,\"salat\":_3,\"xn--slat-5na\":_3,\"sálat\":_3,\"xn--slt-elab\":_3,\"sálát\":_3,\"saltdal\":_3,\"samnanger\":_3,\"sandefjord\":_3,\"sandnes\":_3,\"sandoy\":_3,\"xn--sandy-yua\":_3,\"sandøy\":_3,\"sarpsborg\":_3,\"sauda\":_3,\"sauherad\":_3,\"sel\":_3,\"selbu\":_3,\"selje\":_3,\"seljord\":_3,\"siellak\":_3,\"sigdal\":_3,\"siljan\":_3,\"sirdal\":_3,\"skanit\":_3,\"xn--sknit-yqa\":_3,\"skánit\":_3,\"skanland\":_3,\"xn--sknland-fxa\":_3,\"skånland\":_3,\"skaun\":_3,\"skedsmo\":_3,\"ski\":_3,\"skien\":_3,\"skierva\":_3,\"xn--skierv-uta\":_3,\"skiervá\":_3,\"skiptvet\":_3,\"skjak\":_3,\"xn--skjk-soa\":_3,\"skjåk\":_3,\"skjervoy\":_3,\"xn--skjervy-v1a\":_3,\"skjervøy\":_3,\"skodje\":_3,\"smola\":_3,\"xn--smla-hra\":_3,\"smøla\":_3,\"snaase\":_3,\"xn--snase-nra\":_3,\"snåase\":_3,\"snasa\":_3,\"xn--snsa-roa\":_3,\"snåsa\":_3,\"snillfjord\":_3,\"snoasa\":_3,\"sogndal\":_3,\"sogne\":_3,\"xn--sgne-gra\":_3,\"søgne\":_3,\"sokndal\":_3,\"sola\":_3,\"solund\":_3,\"somna\":_3,\"xn--smna-gra\":_3,\"sømna\":_3,\"sondre-land\":_3,\"xn--sndre-land-0cb\":_3,\"søndre-land\":_3,\"songdalen\":_3,\"sor-aurdal\":_3,\"xn--sr-aurdal-l8a\":_3,\"sør-aurdal\":_3,\"sor-fron\":_3,\"xn--sr-fron-q1a\":_3,\"sør-fron\":_3,\"sor-odal\":_3,\"xn--sr-odal-q1a\":_3,\"sør-odal\":_3,\"sor-varanger\":_3,\"xn--sr-varanger-ggb\":_3,\"sør-varanger\":_3,\"sorfold\":_3,\"xn--srfold-bya\":_3,\"sørfold\":_3,\"sorreisa\":_3,\"xn--srreisa-q1a\":_3,\"sørreisa\":_3,\"sortland\":_3,\"sorum\":_3,\"xn--srum-gra\":_3,\"sørum\":_3,\"spydeberg\":_3,\"stange\":_3,\"stavanger\":_3,\"steigen\":_3,\"steinkjer\":_3,\"stjordal\":_3,\"xn--stjrdal-s1a\":_3,\"stjørdal\":_3,\"stokke\":_3,\"stor-elvdal\":_3,\"stord\":_3,\"stordal\":_3,\"storfjord\":_3,\"strand\":_3,\"stranda\":_3,\"stryn\":_3,\"sula\":_3,\"suldal\":_3,\"sund\":_3,\"sunndal\":_3,\"surnadal\":_3,\"sveio\":_3,\"svelvik\":_3,\"sykkylven\":_3,\"tana\":_3,\"telemark\":[0,{\"bo\":_3,\"xn--b-5ga\":_3,\"bø\":_3}],\"time\":_3,\"tingvoll\":_3,\"tinn\":_3,\"tjeldsund\":_3,\"tjome\":_3,\"xn--tjme-hra\":_3,\"tjøme\":_3,\"tokke\":_3,\"tolga\":_3,\"tonsberg\":_3,\"xn--tnsberg-q1a\":_3,\"tønsberg\":_3,\"torsken\":_3,\"xn--trna-woa\":_3,\"træna\":_3,\"trana\":_3,\"tranoy\":_3,\"xn--trany-yua\":_3,\"tranøy\":_3,\"troandin\":_3,\"trogstad\":_3,\"xn--trgstad-r1a\":_3,\"trøgstad\":_3,\"tromsa\":_3,\"tromso\":_3,\"xn--troms-zua\":_3,\"tromsø\":_3,\"trondheim\":_3,\"trysil\":_3,\"tvedestrand\":_3,\"tydal\":_3,\"tynset\":_3,\"tysfjord\":_3,\"tysnes\":_3,\"xn--tysvr-vra\":_3,\"tysvær\":_3,\"tysvar\":_3,\"ullensaker\":_3,\"ullensvang\":_3,\"ulvik\":_3,\"unjarga\":_3,\"xn--unjrga-rta\":_3,\"unjárga\":_3,\"utsira\":_3,\"vaapste\":_3,\"vadso\":_3,\"xn--vads-jra\":_3,\"vadsø\":_3,\"xn--vry-yla5g\":_3,\"værøy\":_3,\"vaga\":_3,\"xn--vg-yiab\":_3,\"vågå\":_3,\"vagan\":_3,\"xn--vgan-qoa\":_3,\"vågan\":_3,\"vagsoy\":_3,\"xn--vgsy-qoa0j\":_3,\"vågsøy\":_3,\"vaksdal\":_3,\"valle\":_3,\"vang\":_3,\"vanylven\":_3,\"vardo\":_3,\"xn--vard-jra\":_3,\"vardø\":_3,\"varggat\":_3,\"xn--vrggt-xqad\":_3,\"várggát\":_3,\"varoy\":_3,\"vefsn\":_3,\"vega\":_3,\"vegarshei\":_3,\"xn--vegrshei-c0a\":_3,\"vegårshei\":_3,\"vennesla\":_3,\"verdal\":_3,\"verran\":_3,\"vestby\":_3,\"vestfold\":[0,{\"sande\":_3}],\"vestnes\":_3,\"vestre-slidre\":_3,\"vestre-toten\":_3,\"vestvagoy\":_3,\"xn--vestvgy-ixa6o\":_3,\"vestvågøy\":_3,\"vevelstad\":_3,\"vik\":_3,\"vikna\":_3,\"vindafjord\":_3,\"voagat\":_3,\"volda\":_3,\"voss\":_3,\"co\":_4,\"123hjemmeside\":_4,\"myspreadshop\":_4}],\"np\":_18,\"nr\":_55,\"nu\":[1,{\"merseine\":_4,\"mine\":_4,\"shacknet\":_4,\"enterprisecloud\":_4}],\"nz\":[1,{\"ac\":_3,\"co\":_3,\"cri\":_3,\"geek\":_3,\"gen\":_3,\"govt\":_3,\"health\":_3,\"iwi\":_3,\"kiwi\":_3,\"maori\":_3,\"xn--mori-qsa\":_3,\"māori\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"parliament\":_3,\"school\":_3,\"cloudns\":_4}],\"om\":[1,{\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"med\":_3,\"museum\":_3,\"net\":_3,\"org\":_3,\"pro\":_3}],\"onion\":_3,\"org\":[1,{\"altervista\":_4,\"pimienta\":_4,\"poivron\":_4,\"potager\":_4,\"sweetpepper\":_4,\"cdn77\":[0,{\"c\":_4,\"rsc\":_4}],\"cdn77-secure\":[0,{\"origin\":[0,{\"ssl\":_4}]}],\"ae\":_4,\"cloudns\":_4,\"ip-dynamic\":_4,\"ddnss\":_4,\"duckdns\":_4,\"tunk\":_4,\"blogdns\":_4,\"blogsite\":_4,\"boldlygoingnowhere\":_4,\"dnsalias\":_4,\"dnsdojo\":_4,\"doesntexist\":_4,\"dontexist\":_4,\"doomdns\":_4,\"dvrdns\":_4,\"dynalias\":_4,\"dyndns\":[2,{\"go\":_4,\"home\":_4}],\"endofinternet\":_4,\"endoftheinternet\":_4,\"from-me\":_4,\"game-host\":_4,\"gotdns\":_4,\"hobby-site\":_4,\"homedns\":_4,\"homeftp\":_4,\"homelinux\":_4,\"homeunix\":_4,\"is-a-bruinsfan\":_4,\"is-a-candidate\":_4,\"is-a-celticsfan\":_4,\"is-a-chef\":_4,\"is-a-geek\":_4,\"is-a-knight\":_4,\"is-a-linux-user\":_4,\"is-a-patsfan\":_4,\"is-a-soxfan\":_4,\"is-found\":_4,\"is-lost\":_4,\"is-saved\":_4,\"is-very-bad\":_4,\"is-very-evil\":_4,\"is-very-good\":_4,\"is-very-nice\":_4,\"is-very-sweet\":_4,\"isa-geek\":_4,\"kicks-ass\":_4,\"misconfused\":_4,\"podzone\":_4,\"readmyblog\":_4,\"selfip\":_4,\"sellsyourhome\":_4,\"servebbs\":_4,\"serveftp\":_4,\"servegame\":_4,\"stuff-4-sale\":_4,\"webhop\":_4,\"accesscam\":_4,\"camdvr\":_4,\"freeddns\":_4,\"mywire\":_4,\"webredirect\":_4,\"twmail\":_4,\"eu\":[2,{\"al\":_4,\"asso\":_4,\"at\":_4,\"au\":_4,\"be\":_4,\"bg\":_4,\"ca\":_4,\"cd\":_4,\"ch\":_4,\"cn\":_4,\"cy\":_4,\"cz\":_4,\"de\":_4,\"dk\":_4,\"edu\":_4,\"ee\":_4,\"es\":_4,\"fi\":_4,\"fr\":_4,\"gr\":_4,\"hr\":_4,\"hu\":_4,\"ie\":_4,\"il\":_4,\"in\":_4,\"int\":_4,\"is\":_4,\"it\":_4,\"jp\":_4,\"kr\":_4,\"lt\":_4,\"lu\":_4,\"lv\":_4,\"me\":_4,\"mk\":_4,\"mt\":_4,\"my\":_4,\"net\":_4,\"ng\":_4,\"nl\":_4,\"no\":_4,\"nz\":_4,\"pl\":_4,\"pt\":_4,\"ro\":_4,\"ru\":_4,\"se\":_4,\"si\":_4,\"sk\":_4,\"tr\":_4,\"uk\":_4,\"us\":_4}],\"fedorainfracloud\":_4,\"fedorapeople\":_4,\"fedoraproject\":[0,{\"cloud\":_4,\"os\":_42,\"stg\":[0,{\"os\":_42}]}],\"freedesktop\":_4,\"hatenadiary\":_4,\"hepforge\":_4,\"in-dsl\":_4,\"in-vpn\":_4,\"js\":_4,\"barsy\":_4,\"mayfirst\":_4,\"routingthecloud\":_4,\"bmoattachments\":_4,\"cable-modem\":_4,\"collegefan\":_4,\"couchpotatofries\":_4,\"hopto\":_4,\"mlbfan\":_4,\"myftp\":_4,\"mysecuritycamera\":_4,\"nflfan\":_4,\"no-ip\":_4,\"read-books\":_4,\"ufcfan\":_4,\"zapto\":_4,\"dynserv\":_4,\"now-dns\":_4,\"is-local\":_4,\"httpbin\":_4,\"pubtls\":_4,\"jpn\":_4,\"my-firewall\":_4,\"myfirewall\":_4,\"spdns\":_4,\"small-web\":_4,\"dsmynas\":_4,\"familyds\":_4,\"teckids\":_54,\"tuxfamily\":_4,\"diskstation\":_4,\"hk\":_4,\"us\":_4,\"toolforge\":_4,\"wmcloud\":_4,\"wmflabs\":_4,\"za\":_4}],\"pa\":[1,{\"abo\":_3,\"ac\":_3,\"com\":_3,\"edu\":_3,\"gob\":_3,\"ing\":_3,\"med\":_3,\"net\":_3,\"nom\":_3,\"org\":_3,\"sld\":_3}],\"pe\":[1,{\"com\":_3,\"edu\":_3,\"gob\":_3,\"mil\":_3,\"net\":_3,\"nom\":_3,\"org\":_3}],\"pf\":[1,{\"com\":_3,\"edu\":_3,\"org\":_3}],\"pg\":_18,\"ph\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"i\":_3,\"mil\":_3,\"net\":_3,\"ngo\":_3,\"org\":_3,\"cloudns\":_4}],\"pk\":[1,{\"ac\":_3,\"biz\":_3,\"com\":_3,\"edu\":_3,\"fam\":_3,\"gkp\":_3,\"gob\":_3,\"gog\":_3,\"gok\":_3,\"gop\":_3,\"gos\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"web\":_3}],\"pl\":[1,{\"com\":_3,\"net\":_3,\"org\":_3,\"agro\":_3,\"aid\":_3,\"atm\":_3,\"auto\":_3,\"biz\":_3,\"edu\":_3,\"gmina\":_3,\"gsm\":_3,\"info\":_3,\"mail\":_3,\"media\":_3,\"miasta\":_3,\"mil\":_3,\"nieruchomosci\":_3,\"nom\":_3,\"pc\":_3,\"powiat\":_3,\"priv\":_3,\"realestate\":_3,\"rel\":_3,\"sex\":_3,\"shop\":_3,\"sklep\":_3,\"sos\":_3,\"szkola\":_3,\"targi\":_3,\"tm\":_3,\"tourism\":_3,\"travel\":_3,\"turystyka\":_3,\"gov\":[1,{\"ap\":_3,\"griw\":_3,\"ic\":_3,\"is\":_3,\"kmpsp\":_3,\"konsulat\":_3,\"kppsp\":_3,\"kwp\":_3,\"kwpsp\":_3,\"mup\":_3,\"mw\":_3,\"oia\":_3,\"oirm\":_3,\"oke\":_3,\"oow\":_3,\"oschr\":_3,\"oum\":_3,\"pa\":_3,\"pinb\":_3,\"piw\":_3,\"po\":_3,\"pr\":_3,\"psp\":_3,\"psse\":_3,\"pup\":_3,\"rzgw\":_3,\"sa\":_3,\"sdn\":_3,\"sko\":_3,\"so\":_3,\"sr\":_3,\"starostwo\":_3,\"ug\":_3,\"ugim\":_3,\"um\":_3,\"umig\":_3,\"upow\":_3,\"uppo\":_3,\"us\":_3,\"uw\":_3,\"uzs\":_3,\"wif\":_3,\"wiih\":_3,\"winb\":_3,\"wios\":_3,\"witd\":_3,\"wiw\":_3,\"wkz\":_3,\"wsa\":_3,\"wskr\":_3,\"wsse\":_3,\"wuoz\":_3,\"wzmiuw\":_3,\"zp\":_3,\"zpisdn\":_3}],\"augustow\":_3,\"babia-gora\":_3,\"bedzin\":_3,\"beskidy\":_3,\"bialowieza\":_3,\"bialystok\":_3,\"bielawa\":_3,\"bieszczady\":_3,\"boleslawiec\":_3,\"bydgoszcz\":_3,\"bytom\":_3,\"cieszyn\":_3,\"czeladz\":_3,\"czest\":_3,\"dlugoleka\":_3,\"elblag\":_3,\"elk\":_3,\"glogow\":_3,\"gniezno\":_3,\"gorlice\":_3,\"grajewo\":_3,\"ilawa\":_3,\"jaworzno\":_3,\"jelenia-gora\":_3,\"jgora\":_3,\"kalisz\":_3,\"karpacz\":_3,\"kartuzy\":_3,\"kaszuby\":_3,\"katowice\":_3,\"kazimierz-dolny\":_3,\"kepno\":_3,\"ketrzyn\":_3,\"klodzko\":_3,\"kobierzyce\":_3,\"kolobrzeg\":_3,\"konin\":_3,\"konskowola\":_3,\"kutno\":_3,\"lapy\":_3,\"lebork\":_3,\"legnica\":_3,\"lezajsk\":_3,\"limanowa\":_3,\"lomza\":_3,\"lowicz\":_3,\"lubin\":_3,\"lukow\":_3,\"malbork\":_3,\"malopolska\":_3,\"mazowsze\":_3,\"mazury\":_3,\"mielec\":_3,\"mielno\":_3,\"mragowo\":_3,\"naklo\":_3,\"nowaruda\":_3,\"nysa\":_3,\"olawa\":_3,\"olecko\":_3,\"olkusz\":_3,\"olsztyn\":_3,\"opoczno\":_3,\"opole\":_3,\"ostroda\":_3,\"ostroleka\":_3,\"ostrowiec\":_3,\"ostrowwlkp\":_3,\"pila\":_3,\"pisz\":_3,\"podhale\":_3,\"podlasie\":_3,\"polkowice\":_3,\"pomorskie\":_3,\"pomorze\":_3,\"prochowice\":_3,\"pruszkow\":_3,\"przeworsk\":_3,\"pulawy\":_3,\"radom\":_3,\"rawa-maz\":_3,\"rybnik\":_3,\"rzeszow\":_3,\"sanok\":_3,\"sejny\":_3,\"skoczow\":_3,\"slask\":_3,\"slupsk\":_3,\"sosnowiec\":_3,\"stalowa-wola\":_3,\"starachowice\":_3,\"stargard\":_3,\"suwalki\":_3,\"swidnica\":_3,\"swiebodzin\":_3,\"swinoujscie\":_3,\"szczecin\":_3,\"szczytno\":_3,\"tarnobrzeg\":_3,\"tgory\":_3,\"turek\":_3,\"tychy\":_3,\"ustka\":_3,\"walbrzych\":_3,\"warmia\":_3,\"warszawa\":_3,\"waw\":_3,\"wegrow\":_3,\"wielun\":_3,\"wlocl\":_3,\"wloclawek\":_3,\"wodzislaw\":_3,\"wolomin\":_3,\"wroclaw\":_3,\"zachpomor\":_3,\"zagan\":_3,\"zarow\":_3,\"zgora\":_3,\"zgorzelec\":_3,\"art\":_4,\"gliwice\":_4,\"krakow\":_4,\"poznan\":_4,\"wroc\":_4,\"zakopane\":_4,\"beep\":_4,\"ecommerce-shop\":_4,\"cfolks\":_4,\"dfirma\":_4,\"dkonto\":_4,\"you2\":_4,\"shoparena\":_4,\"homesklep\":_4,\"sdscloud\":_4,\"unicloud\":_4,\"lodz\":_4,\"pabianice\":_4,\"plock\":_4,\"sieradz\":_4,\"skierniewice\":_4,\"zgierz\":_4,\"krasnik\":_4,\"leczna\":_4,\"lubartow\":_4,\"lublin\":_4,\"poniatowa\":_4,\"swidnik\":_4,\"co\":_4,\"torun\":_4,\"simplesite\":_4,\"myspreadshop\":_4,\"gda\":_4,\"gdansk\":_4,\"gdynia\":_4,\"med\":_4,\"sopot\":_4,\"bielsko\":_4}],\"pm\":[1,{\"own\":_4,\"name\":_4}],\"pn\":[1,{\"co\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3}],\"post\":_3,\"pr\":[1,{\"biz\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"isla\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"pro\":_3,\"ac\":_3,\"est\":_3,\"prof\":_3}],\"pro\":[1,{\"aaa\":_3,\"aca\":_3,\"acct\":_3,\"avocat\":_3,\"bar\":_3,\"cpa\":_3,\"eng\":_3,\"jur\":_3,\"law\":_3,\"med\":_3,\"recht\":_3,\"12chars\":_4,\"cloudns\":_4,\"barsy\":_4,\"ngrok\":_4}],\"ps\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"plo\":_3,\"sec\":_3}],\"pt\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"int\":_3,\"net\":_3,\"nome\":_3,\"org\":_3,\"publ\":_3,\"123paginaweb\":_4}],\"pw\":[1,{\"gov\":_3,\"cloudns\":_4,\"x443\":_4}],\"py\":[1,{\"com\":_3,\"coop\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3}],\"qa\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"sch\":_3}],\"re\":[1,{\"asso\":_3,\"com\":_3,\"netlib\":_4,\"can\":_4}],\"ro\":[1,{\"arts\":_3,\"com\":_3,\"firm\":_3,\"info\":_3,\"nom\":_3,\"nt\":_3,\"org\":_3,\"rec\":_3,\"store\":_3,\"tm\":_3,\"www\":_3,\"co\":_4,\"shop\":_4,\"barsy\":_4}],\"rs\":[1,{\"ac\":_3,\"co\":_3,\"edu\":_3,\"gov\":_3,\"in\":_3,\"org\":_3,\"brendly\":_50,\"barsy\":_4,\"ox\":_4}],\"ru\":[1,{\"ac\":_4,\"edu\":_4,\"gov\":_4,\"int\":_4,\"mil\":_4,\"eurodir\":_4,\"adygeya\":_4,\"bashkiria\":_4,\"bir\":_4,\"cbg\":_4,\"com\":_4,\"dagestan\":_4,\"grozny\":_4,\"kalmykia\":_4,\"kustanai\":_4,\"marine\":_4,\"mordovia\":_4,\"msk\":_4,\"mytis\":_4,\"nalchik\":_4,\"nov\":_4,\"pyatigorsk\":_4,\"spb\":_4,\"vladikavkaz\":_4,\"vladimir\":_4,\"na4u\":_4,\"mircloud\":_4,\"myjino\":[2,{\"hosting\":_7,\"landing\":_7,\"spectrum\":_7,\"vps\":_7}],\"cldmail\":[0,{\"hb\":_4}],\"mcdir\":[2,{\"vps\":_4}],\"mcpre\":_4,\"net\":_4,\"org\":_4,\"pp\":_4,\"lk3\":_4,\"ras\":_4}],\"rw\":[1,{\"ac\":_3,\"co\":_3,\"coop\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3}],\"sa\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"med\":_3,\"net\":_3,\"org\":_3,\"pub\":_3,\"sch\":_3}],\"sb\":_5,\"sc\":_5,\"sd\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"med\":_3,\"net\":_3,\"org\":_3,\"tv\":_3}],\"se\":[1,{\"a\":_3,\"ac\":_3,\"b\":_3,\"bd\":_3,\"brand\":_3,\"c\":_3,\"d\":_3,\"e\":_3,\"f\":_3,\"fh\":_3,\"fhsk\":_3,\"fhv\":_3,\"g\":_3,\"h\":_3,\"i\":_3,\"k\":_3,\"komforb\":_3,\"kommunalforbund\":_3,\"komvux\":_3,\"l\":_3,\"lanbib\":_3,\"m\":_3,\"n\":_3,\"naturbruksgymn\":_3,\"o\":_3,\"org\":_3,\"p\":_3,\"parti\":_3,\"pp\":_3,\"press\":_3,\"r\":_3,\"s\":_3,\"t\":_3,\"tm\":_3,\"u\":_3,\"w\":_3,\"x\":_3,\"y\":_3,\"z\":_3,\"com\":_4,\"iopsys\":_4,\"123minsida\":_4,\"itcouldbewor\":_4,\"myspreadshop\":_4}],\"sg\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"enscaled\":_4}],\"sh\":[1,{\"com\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"hashbang\":_4,\"botda\":_4,\"platform\":[0,{\"ent\":_4,\"eu\":_4,\"us\":_4}],\"now\":_4}],\"si\":[1,{\"f5\":_4,\"gitapp\":_4,\"gitpage\":_4}],\"sj\":_3,\"sk\":_3,\"sl\":_5,\"sm\":_3,\"sn\":[1,{\"art\":_3,\"com\":_3,\"edu\":_3,\"gouv\":_3,\"org\":_3,\"perso\":_3,\"univ\":_3}],\"so\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"me\":_3,\"net\":_3,\"org\":_3,\"surveys\":_4}],\"sr\":_3,\"ss\":[1,{\"biz\":_3,\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"me\":_3,\"net\":_3,\"org\":_3,\"sch\":_3}],\"st\":[1,{\"co\":_3,\"com\":_3,\"consulado\":_3,\"edu\":_3,\"embaixada\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"principe\":_3,\"saotome\":_3,\"store\":_3,\"helioho\":_4,\"kirara\":_4,\"noho\":_4}],\"su\":[1,{\"abkhazia\":_4,\"adygeya\":_4,\"aktyubinsk\":_4,\"arkhangelsk\":_4,\"armenia\":_4,\"ashgabad\":_4,\"azerbaijan\":_4,\"balashov\":_4,\"bashkiria\":_4,\"bryansk\":_4,\"bukhara\":_4,\"chimkent\":_4,\"dagestan\":_4,\"east-kazakhstan\":_4,\"exnet\":_4,\"georgia\":_4,\"grozny\":_4,\"ivanovo\":_4,\"jambyl\":_4,\"kalmykia\":_4,\"kaluga\":_4,\"karacol\":_4,\"karaganda\":_4,\"karelia\":_4,\"khakassia\":_4,\"krasnodar\":_4,\"kurgan\":_4,\"kustanai\":_4,\"lenug\":_4,\"mangyshlak\":_4,\"mordovia\":_4,\"msk\":_4,\"murmansk\":_4,\"nalchik\":_4,\"navoi\":_4,\"north-kazakhstan\":_4,\"nov\":_4,\"obninsk\":_4,\"penza\":_4,\"pokrovsk\":_4,\"sochi\":_4,\"spb\":_4,\"tashkent\":_4,\"termez\":_4,\"togliatti\":_4,\"troitsk\":_4,\"tselinograd\":_4,\"tula\":_4,\"tuva\":_4,\"vladikavkaz\":_4,\"vladimir\":_4,\"vologda\":_4}],\"sv\":[1,{\"com\":_3,\"edu\":_3,\"gob\":_3,\"org\":_3,\"red\":_3}],\"sx\":_11,\"sy\":_6,\"sz\":[1,{\"ac\":_3,\"co\":_3,\"org\":_3}],\"tc\":_3,\"td\":_3,\"tel\":_3,\"tf\":[1,{\"sch\":_4}],\"tg\":_3,\"th\":[1,{\"ac\":_3,\"co\":_3,\"go\":_3,\"in\":_3,\"mi\":_3,\"net\":_3,\"or\":_3,\"online\":_4,\"shop\":_4}],\"tj\":[1,{\"ac\":_3,\"biz\":_3,\"co\":_3,\"com\":_3,\"edu\":_3,\"go\":_3,\"gov\":_3,\"int\":_3,\"mil\":_3,\"name\":_3,\"net\":_3,\"nic\":_3,\"org\":_3,\"test\":_3,\"web\":_3}],\"tk\":_3,\"tl\":_11,\"tm\":[1,{\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"nom\":_3,\"org\":_3}],\"tn\":[1,{\"com\":_3,\"ens\":_3,\"fin\":_3,\"gov\":_3,\"ind\":_3,\"info\":_3,\"intl\":_3,\"mincom\":_3,\"nat\":_3,\"net\":_3,\"org\":_3,\"perso\":_3,\"tourism\":_3,\"orangecloud\":_4}],\"to\":[1,{\"611\":_4,\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"oya\":_4,\"x0\":_4,\"quickconnect\":_25,\"vpnplus\":_4}],\"tr\":[1,{\"av\":_3,\"bbs\":_3,\"bel\":_3,\"biz\":_3,\"com\":_3,\"dr\":_3,\"edu\":_3,\"gen\":_3,\"gov\":_3,\"info\":_3,\"k12\":_3,\"kep\":_3,\"mil\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"pol\":_3,\"tel\":_3,\"tsk\":_3,\"tv\":_3,\"web\":_3,\"nc\":_11}],\"tt\":[1,{\"biz\":_3,\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"mil\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"pro\":_3}],\"tv\":[1,{\"better-than\":_4,\"dyndns\":_4,\"on-the-web\":_4,\"worse-than\":_4,\"from\":_4,\"sakura\":_4}],\"tw\":[1,{\"club\":_3,\"com\":[1,{\"mymailer\":_4}],\"ebiz\":_3,\"edu\":_3,\"game\":_3,\"gov\":_3,\"idv\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"url\":_4,\"mydns\":_4}],\"tz\":[1,{\"ac\":_3,\"co\":_3,\"go\":_3,\"hotel\":_3,\"info\":_3,\"me\":_3,\"mil\":_3,\"mobi\":_3,\"ne\":_3,\"or\":_3,\"sc\":_3,\"tv\":_3}],\"ua\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"in\":_3,\"net\":_3,\"org\":_3,\"cherkassy\":_3,\"cherkasy\":_3,\"chernigov\":_3,\"chernihiv\":_3,\"chernivtsi\":_3,\"chernovtsy\":_3,\"ck\":_3,\"cn\":_3,\"cr\":_3,\"crimea\":_3,\"cv\":_3,\"dn\":_3,\"dnepropetrovsk\":_3,\"dnipropetrovsk\":_3,\"donetsk\":_3,\"dp\":_3,\"if\":_3,\"ivano-frankivsk\":_3,\"kh\":_3,\"kharkiv\":_3,\"kharkov\":_3,\"kherson\":_3,\"khmelnitskiy\":_3,\"khmelnytskyi\":_3,\"kiev\":_3,\"kirovograd\":_3,\"km\":_3,\"kr\":_3,\"kropyvnytskyi\":_3,\"krym\":_3,\"ks\":_3,\"kv\":_3,\"kyiv\":_3,\"lg\":_3,\"lt\":_3,\"lugansk\":_3,\"luhansk\":_3,\"lutsk\":_3,\"lv\":_3,\"lviv\":_3,\"mk\":_3,\"mykolaiv\":_3,\"nikolaev\":_3,\"od\":_3,\"odesa\":_3,\"odessa\":_3,\"pl\":_3,\"poltava\":_3,\"rivne\":_3,\"rovno\":_3,\"rv\":_3,\"sb\":_3,\"sebastopol\":_3,\"sevastopol\":_3,\"sm\":_3,\"sumy\":_3,\"te\":_3,\"ternopil\":_3,\"uz\":_3,\"uzhgorod\":_3,\"uzhhorod\":_3,\"vinnica\":_3,\"vinnytsia\":_3,\"vn\":_3,\"volyn\":_3,\"yalta\":_3,\"zakarpattia\":_3,\"zaporizhzhe\":_3,\"zaporizhzhia\":_3,\"zhitomir\":_3,\"zhytomyr\":_3,\"zp\":_3,\"zt\":_3,\"cc\":_4,\"inf\":_4,\"ltd\":_4,\"cx\":_4,\"ie\":_4,\"biz\":_4,\"co\":_4,\"pp\":_4,\"v\":_4}],\"ug\":[1,{\"ac\":_3,\"co\":_3,\"com\":_3,\"edu\":_3,\"go\":_3,\"gov\":_3,\"mil\":_3,\"ne\":_3,\"or\":_3,\"org\":_3,\"sc\":_3,\"us\":_3}],\"uk\":[1,{\"ac\":_3,\"co\":[1,{\"bytemark\":[0,{\"dh\":_4,\"vm\":_4}],\"layershift\":_45,\"barsy\":_4,\"barsyonline\":_4,\"retrosnub\":_53,\"nh-serv\":_4,\"no-ip\":_4,\"adimo\":_4,\"myspreadshop\":_4}],\"gov\":[1,{\"api\":_4,\"campaign\":_4,\"service\":_4}],\"ltd\":_3,\"me\":_3,\"net\":_3,\"nhs\":_3,\"org\":[1,{\"glug\":_4,\"lug\":_4,\"lugs\":_4,\"affinitylottery\":_4,\"raffleentry\":_4,\"weeklylottery\":_4}],\"plc\":_3,\"police\":_3,\"sch\":_18,\"conn\":_4,\"copro\":_4,\"hosp\":_4,\"independent-commission\":_4,\"independent-inquest\":_4,\"independent-inquiry\":_4,\"independent-panel\":_4,\"independent-review\":_4,\"public-inquiry\":_4,\"royal-commission\":_4,\"pymnt\":_4,\"barsy\":_4,\"nimsite\":_4,\"oraclegovcloudapps\":_7}],\"us\":[1,{\"dni\":_3,\"isa\":_3,\"nsn\":_3,\"ak\":_60,\"al\":_60,\"ar\":_60,\"as\":_60,\"az\":_60,\"ca\":_60,\"co\":_60,\"ct\":_60,\"dc\":_60,\"de\":[1,{\"cc\":_3,\"lib\":_4}],\"fl\":_60,\"ga\":_60,\"gu\":_60,\"hi\":_61,\"ia\":_60,\"id\":_60,\"il\":_60,\"in\":_60,\"ks\":_60,\"ky\":_60,\"la\":_60,\"ma\":[1,{\"k12\":[1,{\"chtr\":_3,\"paroch\":_3,\"pvt\":_3}],\"cc\":_3,\"lib\":_3}],\"md\":_60,\"me\":_60,\"mi\":[1,{\"k12\":_3,\"cc\":_3,\"lib\":_3,\"ann-arbor\":_3,\"cog\":_3,\"dst\":_3,\"eaton\":_3,\"gen\":_3,\"mus\":_3,\"tec\":_3,\"washtenaw\":_3}],\"mn\":_60,\"mo\":_60,\"ms\":_60,\"mt\":_60,\"nc\":_60,\"nd\":_61,\"ne\":_60,\"nh\":_60,\"nj\":_60,\"nm\":_60,\"nv\":_60,\"ny\":_60,\"oh\":_60,\"ok\":_60,\"or\":_60,\"pa\":_60,\"pr\":_60,\"ri\":_61,\"sc\":_60,\"sd\":_61,\"tn\":_60,\"tx\":_60,\"ut\":_60,\"va\":_60,\"vi\":_60,\"vt\":_60,\"wa\":_60,\"wi\":_60,\"wv\":[1,{\"cc\":_3}],\"wy\":_60,\"cloudns\":_4,\"is-by\":_4,\"land-4-sale\":_4,\"stuff-4-sale\":_4,\"heliohost\":_4,\"enscaled\":[0,{\"phx\":_4}],\"mircloud\":_4,\"ngo\":_4,\"golffan\":_4,\"noip\":_4,\"pointto\":_4,\"freeddns\":_4,\"srv\":[2,{\"gh\":_4,\"gl\":_4}],\"platterp\":_4,\"servername\":_4}],\"uy\":[1,{\"com\":_3,\"edu\":_3,\"gub\":_3,\"mil\":_3,\"net\":_3,\"org\":_3}],\"uz\":[1,{\"co\":_3,\"com\":_3,\"net\":_3,\"org\":_3}],\"va\":_3,\"vc\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"gv\":[2,{\"d\":_4}],\"0e\":_7,\"mydns\":_4}],\"ve\":[1,{\"arts\":_3,\"bib\":_3,\"co\":_3,\"com\":_3,\"e12\":_3,\"edu\":_3,\"emprende\":_3,\"firm\":_3,\"gob\":_3,\"gov\":_3,\"info\":_3,\"int\":_3,\"mil\":_3,\"net\":_3,\"nom\":_3,\"org\":_3,\"rar\":_3,\"rec\":_3,\"store\":_3,\"tec\":_3,\"web\":_3}],\"vg\":[1,{\"edu\":_3}],\"vi\":[1,{\"co\":_3,\"com\":_3,\"k12\":_3,\"net\":_3,\"org\":_3}],\"vn\":[1,{\"ac\":_3,\"ai\":_3,\"biz\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"health\":_3,\"id\":_3,\"info\":_3,\"int\":_3,\"io\":_3,\"name\":_3,\"net\":_3,\"org\":_3,\"pro\":_3,\"angiang\":_3,\"bacgiang\":_3,\"backan\":_3,\"baclieu\":_3,\"bacninh\":_3,\"baria-vungtau\":_3,\"bentre\":_3,\"binhdinh\":_3,\"binhduong\":_3,\"binhphuoc\":_3,\"binhthuan\":_3,\"camau\":_3,\"cantho\":_3,\"caobang\":_3,\"daklak\":_3,\"daknong\":_3,\"danang\":_3,\"dienbien\":_3,\"dongnai\":_3,\"dongthap\":_3,\"gialai\":_3,\"hagiang\":_3,\"haiduong\":_3,\"haiphong\":_3,\"hanam\":_3,\"hanoi\":_3,\"hatinh\":_3,\"haugiang\":_3,\"hoabinh\":_3,\"hungyen\":_3,\"khanhhoa\":_3,\"kiengiang\":_3,\"kontum\":_3,\"laichau\":_3,\"lamdong\":_3,\"langson\":_3,\"laocai\":_3,\"longan\":_3,\"namdinh\":_3,\"nghean\":_3,\"ninhbinh\":_3,\"ninhthuan\":_3,\"phutho\":_3,\"phuyen\":_3,\"quangbinh\":_3,\"quangnam\":_3,\"quangngai\":_3,\"quangninh\":_3,\"quangtri\":_3,\"soctrang\":_3,\"sonla\":_3,\"tayninh\":_3,\"thaibinh\":_3,\"thainguyen\":_3,\"thanhhoa\":_3,\"thanhphohochiminh\":_3,\"thuathienhue\":_3,\"tiengiang\":_3,\"travinh\":_3,\"tuyenquang\":_3,\"vinhlong\":_3,\"vinhphuc\":_3,\"yenbai\":_3}],\"vu\":_44,\"wf\":[1,{\"biz\":_4,\"sch\":_4}],\"ws\":[1,{\"com\":_3,\"edu\":_3,\"gov\":_3,\"net\":_3,\"org\":_3,\"advisor\":_7,\"cloud66\":_4,\"dyndns\":_4,\"mypets\":_4}],\"yt\":[1,{\"org\":_4}],\"xn--mgbaam7a8h\":_3,\"امارات\":_3,\"xn--y9a3aq\":_3,\"հայ\":_3,\"xn--54b7fta0cc\":_3,\"বাংলা\":_3,\"xn--90ae\":_3,\"бг\":_3,\"xn--mgbcpq6gpa1a\":_3,\"البحرين\":_3,\"xn--90ais\":_3,\"бел\":_3,\"xn--fiqs8s\":_3,\"中国\":_3,\"xn--fiqz9s\":_3,\"中國\":_3,\"xn--lgbbat1ad8j\":_3,\"الجزائر\":_3,\"xn--wgbh1c\":_3,\"مصر\":_3,\"xn--e1a4c\":_3,\"ею\":_3,\"xn--qxa6a\":_3,\"ευ\":_3,\"xn--mgbah1a3hjkrd\":_3,\"موريتانيا\":_3,\"xn--node\":_3,\"გე\":_3,\"xn--qxam\":_3,\"ελ\":_3,\"xn--j6w193g\":[1,{\"xn--gmqw5a\":_3,\"xn--55qx5d\":_3,\"xn--mxtq1m\":_3,\"xn--wcvs22d\":_3,\"xn--uc0atv\":_3,\"xn--od0alg\":_3}],\"香港\":[1,{\"個人\":_3,\"公司\":_3,\"政府\":_3,\"教育\":_3,\"組織\":_3,\"網絡\":_3}],\"xn--2scrj9c\":_3,\"ಭಾರತ\":_3,\"xn--3hcrj9c\":_3,\"ଭାରତ\":_3,\"xn--45br5cyl\":_3,\"ভাৰত\":_3,\"xn--h2breg3eve\":_3,\"भारतम्\":_3,\"xn--h2brj9c8c\":_3,\"भारोत\":_3,\"xn--mgbgu82a\":_3,\"ڀارت\":_3,\"xn--rvc1e0am3e\":_3,\"ഭാരതം\":_3,\"xn--h2brj9c\":_3,\"भारत\":_3,\"xn--mgbbh1a\":_3,\"بارت\":_3,\"xn--mgbbh1a71e\":_3,\"بھارت\":_3,\"xn--fpcrj9c3d\":_3,\"భారత్\":_3,\"xn--gecrj9c\":_3,\"ભારત\":_3,\"xn--s9brj9c\":_3,\"ਭਾਰਤ\":_3,\"xn--45brj9c\":_3,\"ভারত\":_3,\"xn--xkc2dl3a5ee0h\":_3,\"இந்தியா\":_3,\"xn--mgba3a4f16a\":_3,\"ایران\":_3,\"xn--mgba3a4fra\":_3,\"ايران\":_3,\"xn--mgbtx2b\":_3,\"عراق\":_3,\"xn--mgbayh7gpa\":_3,\"الاردن\":_3,\"xn--3e0b707e\":_3,\"한국\":_3,\"xn--80ao21a\":_3,\"қаз\":_3,\"xn--q7ce6a\":_3,\"ລາວ\":_3,\"xn--fzc2c9e2c\":_3,\"ලංකා\":_3,\"xn--xkc2al3hye2a\":_3,\"இலங்கை\":_3,\"xn--mgbc0a9azcg\":_3,\"المغرب\":_3,\"xn--d1alf\":_3,\"мкд\":_3,\"xn--l1acc\":_3,\"мон\":_3,\"xn--mix891f\":_3,\"澳門\":_3,\"xn--mix082f\":_3,\"澳门\":_3,\"xn--mgbx4cd0ab\":_3,\"مليسيا\":_3,\"xn--mgb9awbf\":_3,\"عمان\":_3,\"xn--mgbai9azgqp6j\":_3,\"پاکستان\":_3,\"xn--mgbai9a5eva00b\":_3,\"پاكستان\":_3,\"xn--ygbi2ammx\":_3,\"فلسطين\":_3,\"xn--90a3ac\":[1,{\"xn--80au\":_3,\"xn--90azh\":_3,\"xn--d1at\":_3,\"xn--c1avg\":_3,\"xn--o1ac\":_3,\"xn--o1ach\":_3}],\"срб\":[1,{\"ак\":_3,\"обр\":_3,\"од\":_3,\"орг\":_3,\"пр\":_3,\"упр\":_3}],\"xn--p1ai\":_3,\"рф\":_3,\"xn--wgbl6a\":_3,\"قطر\":_3,\"xn--mgberp4a5d4ar\":_3,\"السعودية\":_3,\"xn--mgberp4a5d4a87g\":_3,\"السعودیة\":_3,\"xn--mgbqly7c0a67fbc\":_3,\"السعودیۃ\":_3,\"xn--mgbqly7cvafr\":_3,\"السعوديه\":_3,\"xn--mgbpl2fh\":_3,\"سودان\":_3,\"xn--yfro4i67o\":_3,\"新加坡\":_3,\"xn--clchc0ea0b2g2a9gcd\":_3,\"சிங்கப்பூர்\":_3,\"xn--ogbpf8fl\":_3,\"سورية\":_3,\"xn--mgbtf8fl\":_3,\"سوريا\":_3,\"xn--o3cw4h\":[1,{\"xn--o3cyx2a\":_3,\"xn--12co0c3b4eva\":_3,\"xn--m3ch0j3a\":_3,\"xn--h3cuzk1di\":_3,\"xn--12c1fe0br\":_3,\"xn--12cfi8ixb8l\":_3}],\"ไทย\":[1,{\"ทหาร\":_3,\"ธุรกิจ\":_3,\"เน็ต\":_3,\"รัฐบาล\":_3,\"ศึกษา\":_3,\"องค์กร\":_3}],\"xn--pgbs0dh\":_3,\"تونس\":_3,\"xn--kpry57d\":_3,\"台灣\":_3,\"xn--kprw13d\":_3,\"台湾\":_3,\"xn--nnx388a\":_3,\"臺灣\":_3,\"xn--j1amh\":_3,\"укр\":_3,\"xn--mgb2ddes\":_3,\"اليمن\":_3,\"xxx\":_3,\"ye\":_6,\"za\":[0,{\"ac\":_3,\"agric\":_3,\"alt\":_3,\"co\":_3,\"edu\":_3,\"gov\":_3,\"grondar\":_3,\"law\":_3,\"mil\":_3,\"net\":_3,\"ngo\":_3,\"nic\":_3,\"nis\":_3,\"nom\":_3,\"org\":_3,\"school\":_3,\"tm\":_3,\"web\":_3}],\"zm\":[1,{\"ac\":_3,\"biz\":_3,\"co\":_3,\"com\":_3,\"edu\":_3,\"gov\":_3,\"info\":_3,\"mil\":_3,\"net\":_3,\"org\":_3,\"sch\":_3}],\"zw\":[1,{\"ac\":_3,\"co\":_3,\"gov\":_3,\"mil\":_3,\"org\":_3}],\"aaa\":_3,\"aarp\":_3,\"abb\":_3,\"abbott\":_3,\"abbvie\":_3,\"abc\":_3,\"able\":_3,\"abogado\":_3,\"abudhabi\":_3,\"academy\":[1,{\"official\":_4}],\"accenture\":_3,\"accountant\":_3,\"accountants\":_3,\"aco\":_3,\"actor\":_3,\"ads\":_3,\"adult\":_3,\"aeg\":_3,\"aetna\":_3,\"afl\":_3,\"africa\":_3,\"agakhan\":_3,\"agency\":_3,\"aig\":_3,\"airbus\":_3,\"airforce\":_3,\"airtel\":_3,\"akdn\":_3,\"alibaba\":_3,\"alipay\":_3,\"allfinanz\":_3,\"allstate\":_3,\"ally\":_3,\"alsace\":_3,\"alstom\":_3,\"amazon\":_3,\"americanexpress\":_3,\"americanfamily\":_3,\"amex\":_3,\"amfam\":_3,\"amica\":_3,\"amsterdam\":_3,\"analytics\":_3,\"android\":_3,\"anquan\":_3,\"anz\":_3,\"aol\":_3,\"apartments\":_3,\"app\":[1,{\"adaptable\":_4,\"aiven\":_4,\"beget\":_7,\"brave\":_8,\"clerk\":_4,\"clerkstage\":_4,\"wnext\":_4,\"csb\":[2,{\"preview\":_4}],\"deta\":_4,\"ondigitalocean\":_4,\"easypanel\":_4,\"encr\":_4,\"evervault\":_9,\"expo\":[2,{\"staging\":_4}],\"edgecompute\":_4,\"on-fleek\":_4,\"flutterflow\":_4,\"framer\":_4,\"hosted\":_7,\"run\":_7,\"web\":_4,\"hasura\":_4,\"botdash\":_4,\"loginline\":_4,\"lovable\":_4,\"medusajs\":_4,\"messerli\":_4,\"netfy\":_4,\"netlify\":_4,\"ngrok\":_4,\"ngrok-free\":_4,\"developer\":_7,\"noop\":_4,\"northflank\":_7,\"upsun\":_7,\"replit\":_10,\"nyat\":_4,\"snowflake\":[0,{\"*\":_4,\"privatelink\":_7}],\"streamlit\":_4,\"storipress\":_4,\"telebit\":_4,\"typedream\":_4,\"vercel\":_4,\"bookonline\":_4,\"wdh\":_4,\"zeabur\":_4,\"zerops\":_7}],\"apple\":_3,\"aquarelle\":_3,\"arab\":_3,\"aramco\":_3,\"archi\":_3,\"army\":_3,\"art\":_3,\"arte\":_3,\"asda\":_3,\"associates\":_3,\"athleta\":_3,\"attorney\":_3,\"auction\":_3,\"audi\":_3,\"audible\":_3,\"audio\":_3,\"auspost\":_3,\"author\":_3,\"auto\":_3,\"autos\":_3,\"aws\":[1,{\"sagemaker\":[0,{\"ap-northeast-1\":_14,\"ap-northeast-2\":_14,\"ap-south-1\":_14,\"ap-southeast-1\":_14,\"ap-southeast-2\":_14,\"ca-central-1\":_16,\"eu-central-1\":_14,\"eu-west-1\":_14,\"eu-west-2\":_14,\"us-east-1\":_16,\"us-east-2\":_16,\"us-west-2\":_16,\"af-south-1\":_13,\"ap-east-1\":_13,\"ap-northeast-3\":_13,\"ap-south-2\":_15,\"ap-southeast-3\":_13,\"ap-southeast-4\":_15,\"ca-west-1\":[0,{\"notebook\":_4,\"notebook-fips\":_4}],\"eu-central-2\":_13,\"eu-north-1\":_13,\"eu-south-1\":_13,\"eu-south-2\":_13,\"eu-west-3\":_13,\"il-central-1\":_13,\"me-central-1\":_13,\"me-south-1\":_13,\"sa-east-1\":_13,\"us-gov-east-1\":_17,\"us-gov-west-1\":_17,\"us-west-1\":[0,{\"notebook\":_4,\"notebook-fips\":_4,\"studio\":_4}],\"experiments\":_7}],\"repost\":[0,{\"private\":_7}],\"on\":[0,{\"ap-northeast-1\":_12,\"ap-southeast-1\":_12,\"ap-southeast-2\":_12,\"eu-central-1\":_12,\"eu-north-1\":_12,\"eu-west-1\":_12,\"us-east-1\":_12,\"us-east-2\":_12,\"us-west-2\":_12}]}],\"axa\":_3,\"azure\":_3,\"baby\":_3,\"baidu\":_3,\"banamex\":_3,\"band\":_3,\"bank\":_3,\"bar\":_3,\"barcelona\":_3,\"barclaycard\":_3,\"barclays\":_3,\"barefoot\":_3,\"bargains\":_3,\"baseball\":_3,\"basketball\":[1,{\"aus\":_4,\"nz\":_4}],\"bauhaus\":_3,\"bayern\":_3,\"bbc\":_3,\"bbt\":_3,\"bbva\":_3,\"bcg\":_3,\"bcn\":_3,\"beats\":_3,\"beauty\":_3,\"beer\":_3,\"bentley\":_3,\"berlin\":_3,\"best\":_3,\"bestbuy\":_3,\"bet\":_3,\"bharti\":_3,\"bible\":_3,\"bid\":_3,\"bike\":_3,\"bing\":_3,\"bingo\":_3,\"bio\":_3,\"black\":_3,\"blackfriday\":_3,\"blockbuster\":_3,\"blog\":_3,\"bloomberg\":_3,\"blue\":_3,\"bms\":_3,\"bmw\":_3,\"bnpparibas\":_3,\"boats\":_3,\"boehringer\":_3,\"bofa\":_3,\"bom\":_3,\"bond\":_3,\"boo\":_3,\"book\":_3,\"booking\":_3,\"bosch\":_3,\"bostik\":_3,\"boston\":_3,\"bot\":_3,\"boutique\":_3,\"box\":_3,\"bradesco\":_3,\"bridgestone\":_3,\"broadway\":_3,\"broker\":_3,\"brother\":_3,\"brussels\":_3,\"build\":[1,{\"v0\":_4}],\"builders\":[1,{\"cloudsite\":_4}],\"business\":_19,\"buy\":_3,\"buzz\":_3,\"bzh\":_3,\"cab\":_3,\"cafe\":_3,\"cal\":_3,\"call\":_3,\"calvinklein\":_3,\"cam\":_3,\"camera\":_3,\"camp\":[1,{\"emf\":[0,{\"at\":_4}]}],\"canon\":_3,\"capetown\":_3,\"capital\":_3,\"capitalone\":_3,\"car\":_3,\"caravan\":_3,\"cards\":_3,\"care\":_3,\"career\":_3,\"careers\":_3,\"cars\":_3,\"casa\":[1,{\"nabu\":[0,{\"ui\":_4}]}],\"case\":_3,\"cash\":_3,\"casino\":_3,\"catering\":_3,\"catholic\":_3,\"cba\":_3,\"cbn\":_3,\"cbre\":_3,\"center\":_3,\"ceo\":_3,\"cern\":_3,\"cfa\":_3,\"cfd\":_3,\"chanel\":_3,\"channel\":_3,\"charity\":_3,\"chase\":_3,\"chat\":_3,\"cheap\":_3,\"chintai\":_3,\"christmas\":_3,\"chrome\":_3,\"church\":_3,\"cipriani\":_3,\"circle\":_3,\"cisco\":_3,\"citadel\":_3,\"citi\":_3,\"citic\":_3,\"city\":_3,\"claims\":_3,\"cleaning\":_3,\"click\":_3,\"clinic\":_3,\"clinique\":_3,\"clothing\":_3,\"cloud\":[1,{\"elementor\":_4,\"encoway\":[0,{\"eu\":_4}],\"statics\":_7,\"ravendb\":_4,\"axarnet\":[0,{\"es-1\":_4}],\"diadem\":_4,\"jelastic\":[0,{\"vip\":_4}],\"jele\":_4,\"jenv-aruba\":[0,{\"aruba\":[0,{\"eur\":[0,{\"it1\":_4}]}],\"it1\":_4}],\"keliweb\":[2,{\"cs\":_4}],\"oxa\":[2,{\"tn\":_4,\"uk\":_4}],\"primetel\":[2,{\"uk\":_4}],\"reclaim\":[0,{\"ca\":_4,\"uk\":_4,\"us\":_4}],\"trendhosting\":[0,{\"ch\":_4,\"de\":_4}],\"jotelulu\":_4,\"kuleuven\":_4,\"laravel\":_4,\"linkyard\":_4,\"magentosite\":_7,\"matlab\":_4,\"observablehq\":_4,\"perspecta\":_4,\"vapor\":_4,\"on-rancher\":_7,\"scw\":[0,{\"baremetal\":[0,{\"fr-par-1\":_4,\"fr-par-2\":_4,\"nl-ams-1\":_4}],\"fr-par\":[0,{\"cockpit\":_4,\"fnc\":[2,{\"functions\":_4}],\"k8s\":_21,\"s3\":_4,\"s3-website\":_4,\"whm\":_4}],\"instances\":[0,{\"priv\":_4,\"pub\":_4}],\"k8s\":_4,\"nl-ams\":[0,{\"cockpit\":_4,\"k8s\":_21,\"s3\":_4,\"s3-website\":_4,\"whm\":_4}],\"pl-waw\":[0,{\"cockpit\":_4,\"k8s\":_21,\"s3\":_4,\"s3-website\":_4}],\"scalebook\":_4,\"smartlabeling\":_4}],\"servebolt\":_4,\"onstackit\":[0,{\"runs\":_4}],\"trafficplex\":_4,\"unison-services\":_4,\"urown\":_4,\"voorloper\":_4,\"zap\":_4}],\"club\":[1,{\"cloudns\":_4,\"jele\":_4,\"barsy\":_4}],\"clubmed\":_3,\"coach\":_3,\"codes\":[1,{\"owo\":_7}],\"coffee\":_3,\"college\":_3,\"cologne\":_3,\"commbank\":_3,\"community\":[1,{\"nog\":_4,\"ravendb\":_4,\"myforum\":_4}],\"company\":_3,\"compare\":_3,\"computer\":_3,\"comsec\":_3,\"condos\":_3,\"construction\":_3,\"consulting\":_3,\"contact\":_3,\"contractors\":_3,\"cooking\":_3,\"cool\":[1,{\"elementor\":_4,\"de\":_4}],\"corsica\":_3,\"country\":_3,\"coupon\":_3,\"coupons\":_3,\"courses\":_3,\"cpa\":_3,\"credit\":_3,\"creditcard\":_3,\"creditunion\":_3,\"cricket\":_3,\"crown\":_3,\"crs\":_3,\"cruise\":_3,\"cruises\":_3,\"cuisinella\":_3,\"cymru\":_3,\"cyou\":_3,\"dad\":_3,\"dance\":_3,\"data\":_3,\"date\":_3,\"dating\":_3,\"datsun\":_3,\"day\":_3,\"dclk\":_3,\"dds\":_3,\"deal\":_3,\"dealer\":_3,\"deals\":_3,\"degree\":_3,\"delivery\":_3,\"dell\":_3,\"deloitte\":_3,\"delta\":_3,\"democrat\":_3,\"dental\":_3,\"dentist\":_3,\"desi\":_3,\"design\":[1,{\"graphic\":_4,\"bss\":_4}],\"dev\":[1,{\"12chars\":_4,\"myaddr\":_4,\"panel\":_4,\"lcl\":_7,\"lclstage\":_7,\"stg\":_7,\"stgstage\":_7,\"pages\":_4,\"r2\":_4,\"workers\":_4,\"deno\":_4,\"deno-staging\":_4,\"deta\":_4,\"evervault\":_9,\"fly\":_4,\"githubpreview\":_4,\"gateway\":_7,\"hrsn\":[2,{\"psl\":[0,{\"sub\":_4,\"wc\":[0,{\"*\":_4,\"sub\":_7}]}]}],\"botdash\":_4,\"is-a-good\":_4,\"is-a\":_4,\"iserv\":_4,\"runcontainers\":_4,\"localcert\":[0,{\"user\":_7}],\"loginline\":_4,\"barsy\":_4,\"mediatech\":_4,\"modx\":_4,\"ngrok\":_4,\"ngrok-free\":_4,\"is-a-fullstack\":_4,\"is-cool\":_4,\"is-not-a\":_4,\"localplayer\":_4,\"xmit\":_4,\"platter-app\":_4,\"replit\":[2,{\"archer\":_4,\"bones\":_4,\"canary\":_4,\"global\":_4,\"hacker\":_4,\"id\":_4,\"janeway\":_4,\"kim\":_4,\"kira\":_4,\"kirk\":_4,\"odo\":_4,\"paris\":_4,\"picard\":_4,\"pike\":_4,\"prerelease\":_4,\"reed\":_4,\"riker\":_4,\"sisko\":_4,\"spock\":_4,\"staging\":_4,\"sulu\":_4,\"tarpit\":_4,\"teams\":_4,\"tucker\":_4,\"wesley\":_4,\"worf\":_4}],\"crm\":[0,{\"d\":_7,\"w\":_7,\"wa\":_7,\"wb\":_7,\"wc\":_7,\"wd\":_7,\"we\":_7,\"wf\":_7}],\"vercel\":_4,\"webhare\":_7}],\"dhl\":_3,\"diamonds\":_3,\"diet\":_3,\"digital\":[1,{\"cloudapps\":[2,{\"london\":_4}]}],\"direct\":[1,{\"libp2p\":_4}],\"directory\":_3,\"discount\":_3,\"discover\":_3,\"dish\":_3,\"diy\":_3,\"dnp\":_3,\"docs\":_3,\"doctor\":_3,\"dog\":_3,\"domains\":_3,\"dot\":_3,\"download\":_3,\"drive\":_3,\"dtv\":_3,\"dubai\":_3,\"dunlop\":_3,\"dupont\":_3,\"durban\":_3,\"dvag\":_3,\"dvr\":_3,\"earth\":_3,\"eat\":_3,\"eco\":_3,\"edeka\":_3,\"education\":_19,\"email\":[1,{\"crisp\":[0,{\"on\":_4}],\"tawk\":_48,\"tawkto\":_48}],\"emerck\":_3,\"energy\":_3,\"engineer\":_3,\"engineering\":_3,\"enterprises\":_3,\"epson\":_3,\"equipment\":_3,\"ericsson\":_3,\"erni\":_3,\"esq\":_3,\"estate\":[1,{\"compute\":_7}],\"eurovision\":_3,\"eus\":[1,{\"party\":_49}],\"events\":[1,{\"koobin\":_4,\"co\":_4}],\"exchange\":_3,\"expert\":_3,\"exposed\":_3,\"express\":_3,\"extraspace\":_3,\"fage\":_3,\"fail\":_3,\"fairwinds\":_3,\"faith\":_3,\"family\":_3,\"fan\":_3,\"fans\":_3,\"farm\":[1,{\"storj\":_4}],\"farmers\":_3,\"fashion\":_3,\"fast\":_3,\"fedex\":_3,\"feedback\":_3,\"ferrari\":_3,\"ferrero\":_3,\"fidelity\":_3,\"fido\":_3,\"film\":_3,\"final\":_3,\"finance\":_3,\"financial\":_19,\"fire\":_3,\"firestone\":_3,\"firmdale\":_3,\"fish\":_3,\"fishing\":_3,\"fit\":_3,\"fitness\":_3,\"flickr\":_3,\"flights\":_3,\"flir\":_3,\"florist\":_3,\"flowers\":_3,\"fly\":_3,\"foo\":_3,\"food\":_3,\"football\":_3,\"ford\":_3,\"forex\":_3,\"forsale\":_3,\"forum\":_3,\"foundation\":_3,\"fox\":_3,\"free\":_3,\"fresenius\":_3,\"frl\":_3,\"frogans\":_3,\"frontier\":_3,\"ftr\":_3,\"fujitsu\":_3,\"fun\":_3,\"fund\":_3,\"furniture\":_3,\"futbol\":_3,\"fyi\":_3,\"gal\":_3,\"gallery\":_3,\"gallo\":_3,\"gallup\":_3,\"game\":_3,\"games\":[1,{\"pley\":_4,\"sheezy\":_4}],\"gap\":_3,\"garden\":_3,\"gay\":[1,{\"pages\":_4}],\"gbiz\":_3,\"gdn\":[1,{\"cnpy\":_4}],\"gea\":_3,\"gent\":_3,\"genting\":_3,\"george\":_3,\"ggee\":_3,\"gift\":_3,\"gifts\":_3,\"gives\":_3,\"giving\":_3,\"glass\":_3,\"gle\":_3,\"global\":_3,\"globo\":_3,\"gmail\":_3,\"gmbh\":_3,\"gmo\":_3,\"gmx\":_3,\"godaddy\":_3,\"gold\":_3,\"goldpoint\":_3,\"golf\":_3,\"goo\":_3,\"goodyear\":_3,\"goog\":[1,{\"cloud\":_4,\"translate\":_4,\"usercontent\":_7}],\"google\":_3,\"gop\":_3,\"got\":_3,\"grainger\":_3,\"graphics\":_3,\"gratis\":_3,\"green\":_3,\"gripe\":_3,\"grocery\":_3,\"group\":[1,{\"discourse\":_4}],\"gucci\":_3,\"guge\":_3,\"guide\":_3,\"guitars\":_3,\"guru\":_3,\"hair\":_3,\"hamburg\":_3,\"hangout\":_3,\"haus\":_3,\"hbo\":_3,\"hdfc\":_3,\"hdfcbank\":_3,\"health\":[1,{\"hra\":_4}],\"healthcare\":_3,\"help\":_3,\"helsinki\":_3,\"here\":_3,\"hermes\":_3,\"hiphop\":_3,\"hisamitsu\":_3,\"hitachi\":_3,\"hiv\":_3,\"hkt\":_3,\"hockey\":_3,\"holdings\":_3,\"holiday\":_3,\"homedepot\":_3,\"homegoods\":_3,\"homes\":_3,\"homesense\":_3,\"honda\":_3,\"horse\":_3,\"hospital\":_3,\"host\":[1,{\"cloudaccess\":_4,\"freesite\":_4,\"easypanel\":_4,\"fastvps\":_4,\"myfast\":_4,\"tempurl\":_4,\"wpmudev\":_4,\"jele\":_4,\"mircloud\":_4,\"wp2\":_4,\"half\":_4}],\"hosting\":[1,{\"opencraft\":_4}],\"hot\":_3,\"hotels\":_3,\"hotmail\":_3,\"house\":_3,\"how\":_3,\"hsbc\":_3,\"hughes\":_3,\"hyatt\":_3,\"hyundai\":_3,\"ibm\":_3,\"icbc\":_3,\"ice\":_3,\"icu\":_3,\"ieee\":_3,\"ifm\":_3,\"ikano\":_3,\"imamat\":_3,\"imdb\":_3,\"immo\":_3,\"immobilien\":_3,\"inc\":_3,\"industries\":_3,\"infiniti\":_3,\"ing\":_3,\"ink\":_3,\"institute\":_3,\"insurance\":_3,\"insure\":_3,\"international\":_3,\"intuit\":_3,\"investments\":_3,\"ipiranga\":_3,\"irish\":_3,\"ismaili\":_3,\"ist\":_3,\"istanbul\":_3,\"itau\":_3,\"itv\":_3,\"jaguar\":_3,\"java\":_3,\"jcb\":_3,\"jeep\":_3,\"jetzt\":_3,\"jewelry\":_3,\"jio\":_3,\"jll\":_3,\"jmp\":_3,\"jnj\":_3,\"joburg\":_3,\"jot\":_3,\"joy\":_3,\"jpmorgan\":_3,\"jprs\":_3,\"juegos\":_3,\"juniper\":_3,\"kaufen\":_3,\"kddi\":_3,\"kerryhotels\":_3,\"kerryproperties\":_3,\"kfh\":_3,\"kia\":_3,\"kids\":_3,\"kim\":_3,\"kindle\":_3,\"kitchen\":_3,\"kiwi\":_3,\"koeln\":_3,\"komatsu\":_3,\"kosher\":_3,\"kpmg\":_3,\"kpn\":_3,\"krd\":[1,{\"co\":_4,\"edu\":_4}],\"kred\":_3,\"kuokgroup\":_3,\"kyoto\":_3,\"lacaixa\":_3,\"lamborghini\":_3,\"lamer\":_3,\"lancaster\":_3,\"land\":_3,\"landrover\":_3,\"lanxess\":_3,\"lasalle\":_3,\"lat\":_3,\"latino\":_3,\"latrobe\":_3,\"law\":_3,\"lawyer\":_3,\"lds\":_3,\"lease\":_3,\"leclerc\":_3,\"lefrak\":_3,\"legal\":_3,\"lego\":_3,\"lexus\":_3,\"lgbt\":_3,\"lidl\":_3,\"life\":_3,\"lifeinsurance\":_3,\"lifestyle\":_3,\"lighting\":_3,\"like\":_3,\"lilly\":_3,\"limited\":_3,\"limo\":_3,\"lincoln\":_3,\"link\":[1,{\"myfritz\":_4,\"cyon\":_4,\"dweb\":_7,\"nftstorage\":[0,{\"ipfs\":_4}],\"mypep\":_4}],\"live\":[1,{\"aem\":_4,\"hlx\":_4,\"ewp\":_7}],\"living\":_3,\"llc\":_3,\"llp\":_3,\"loan\":_3,\"loans\":_3,\"locker\":_3,\"locus\":_3,\"lol\":[1,{\"omg\":_4}],\"london\":_3,\"lotte\":_3,\"lotto\":_3,\"love\":_3,\"lpl\":_3,\"lplfinancial\":_3,\"ltd\":_3,\"ltda\":_3,\"lundbeck\":_3,\"luxe\":_3,\"luxury\":_3,\"madrid\":_3,\"maif\":_3,\"maison\":_3,\"makeup\":_3,\"man\":_3,\"management\":[1,{\"router\":_4}],\"mango\":_3,\"map\":_3,\"market\":_3,\"marketing\":_3,\"markets\":_3,\"marriott\":_3,\"marshalls\":_3,\"mattel\":_3,\"mba\":_3,\"mckinsey\":_3,\"med\":_3,\"media\":_56,\"meet\":_3,\"melbourne\":_3,\"meme\":_3,\"memorial\":_3,\"men\":_3,\"menu\":[1,{\"barsy\":_4,\"barsyonline\":_4}],\"merck\":_3,\"merckmsd\":_3,\"miami\":_3,\"microsoft\":_3,\"mini\":_3,\"mint\":_3,\"mit\":_3,\"mitsubishi\":_3,\"mlb\":_3,\"mls\":_3,\"mma\":_3,\"mobile\":_3,\"moda\":_3,\"moe\":_3,\"moi\":_3,\"mom\":[1,{\"ind\":_4}],\"monash\":_3,\"money\":_3,\"monster\":_3,\"mormon\":_3,\"mortgage\":_3,\"moscow\":_3,\"moto\":_3,\"motorcycles\":_3,\"mov\":_3,\"movie\":_3,\"msd\":_3,\"mtn\":_3,\"mtr\":_3,\"music\":_3,\"nab\":_3,\"nagoya\":_3,\"navy\":_3,\"nba\":_3,\"nec\":_3,\"netbank\":_3,\"netflix\":_3,\"network\":[1,{\"alces\":_7,\"co\":_4,\"arvo\":_4,\"azimuth\":_4,\"tlon\":_4}],\"neustar\":_3,\"new\":_3,\"news\":[1,{\"noticeable\":_4}],\"next\":_3,\"nextdirect\":_3,\"nexus\":_3,\"nfl\":_3,\"ngo\":_3,\"nhk\":_3,\"nico\":_3,\"nike\":_3,\"nikon\":_3,\"ninja\":_3,\"nissan\":_3,\"nissay\":_3,\"nokia\":_3,\"norton\":_3,\"now\":_3,\"nowruz\":_3,\"nowtv\":_3,\"nra\":_3,\"nrw\":_3,\"ntt\":_3,\"nyc\":_3,\"obi\":_3,\"observer\":_3,\"office\":_3,\"okinawa\":_3,\"olayan\":_3,\"olayangroup\":_3,\"ollo\":_3,\"omega\":_3,\"one\":[1,{\"kin\":_7,\"service\":_4}],\"ong\":[1,{\"obl\":_4}],\"onl\":_3,\"online\":[1,{\"eero\":_4,\"eero-stage\":_4,\"websitebuilder\":_4,\"barsy\":_4}],\"ooo\":_3,\"open\":_3,\"oracle\":_3,\"orange\":[1,{\"tech\":_4}],\"organic\":_3,\"origins\":_3,\"osaka\":_3,\"otsuka\":_3,\"ott\":_3,\"ovh\":[1,{\"nerdpol\":_4}],\"page\":[1,{\"aem\":_4,\"hlx\":_4,\"hlx3\":_4,\"translated\":_4,\"codeberg\":_4,\"heyflow\":_4,\"prvcy\":_4,\"rocky\":_4,\"pdns\":_4,\"plesk\":_4}],\"panasonic\":_3,\"paris\":_3,\"pars\":_3,\"partners\":_3,\"parts\":_3,\"party\":_3,\"pay\":_3,\"pccw\":_3,\"pet\":_3,\"pfizer\":_3,\"pharmacy\":_3,\"phd\":_3,\"philips\":_3,\"phone\":_3,\"photo\":_3,\"photography\":_3,\"photos\":_56,\"physio\":_3,\"pics\":_3,\"pictet\":_3,\"pictures\":[1,{\"1337\":_4}],\"pid\":_3,\"pin\":_3,\"ping\":_3,\"pink\":_3,\"pioneer\":_3,\"pizza\":[1,{\"ngrok\":_4}],\"place\":_19,\"play\":_3,\"playstation\":_3,\"plumbing\":_3,\"plus\":_3,\"pnc\":_3,\"pohl\":_3,\"poker\":_3,\"politie\":_3,\"porn\":_3,\"pramerica\":_3,\"praxi\":_3,\"press\":_3,\"prime\":_3,\"prod\":_3,\"productions\":_3,\"prof\":_3,\"progressive\":_3,\"promo\":_3,\"properties\":_3,\"property\":_3,\"protection\":_3,\"pru\":_3,\"prudential\":_3,\"pub\":[1,{\"id\":_7,\"kin\":_7,\"barsy\":_4}],\"pwc\":_3,\"qpon\":_3,\"quebec\":_3,\"quest\":_3,\"racing\":_3,\"radio\":_3,\"read\":_3,\"realestate\":_3,\"realtor\":_3,\"realty\":_3,\"recipes\":_3,\"red\":_3,\"redstone\":_3,\"redumbrella\":_3,\"rehab\":_3,\"reise\":_3,\"reisen\":_3,\"reit\":_3,\"reliance\":_3,\"ren\":_3,\"rent\":_3,\"rentals\":_3,\"repair\":_3,\"report\":_3,\"republican\":_3,\"rest\":_3,\"restaurant\":_3,\"review\":_3,\"reviews\":_3,\"rexroth\":_3,\"rich\":_3,\"richardli\":_3,\"ricoh\":_3,\"ril\":_3,\"rio\":_3,\"rip\":[1,{\"clan\":_4}],\"rocks\":[1,{\"myddns\":_4,\"stackit\":_4,\"lima-city\":_4,\"webspace\":_4}],\"rodeo\":_3,\"rogers\":_3,\"room\":_3,\"rsvp\":_3,\"rugby\":_3,\"ruhr\":_3,\"run\":[1,{\"development\":_4,\"ravendb\":_4,\"liara\":[2,{\"iran\":_4}],\"servers\":_4,\"build\":_7,\"code\":_7,\"database\":_7,\"migration\":_7,\"onporter\":_4,\"repl\":_4,\"stackit\":_4,\"val\":[0,{\"express\":_4,\"web\":_4}],\"wix\":_4}],\"rwe\":_3,\"ryukyu\":_3,\"saarland\":_3,\"safe\":_3,\"safety\":_3,\"sakura\":_3,\"sale\":_3,\"salon\":_3,\"samsclub\":_3,\"samsung\":_3,\"sandvik\":_3,\"sandvikcoromant\":_3,\"sanofi\":_3,\"sap\":_3,\"sarl\":_3,\"sas\":_3,\"save\":_3,\"saxo\":_3,\"sbi\":_3,\"sbs\":_3,\"scb\":_3,\"schaeffler\":_3,\"schmidt\":_3,\"scholarships\":_3,\"school\":_3,\"schule\":_3,\"schwarz\":_3,\"science\":_3,\"scot\":[1,{\"gov\":[2,{\"service\":_4}]}],\"search\":_3,\"seat\":_3,\"secure\":_3,\"security\":_3,\"seek\":_3,\"select\":_3,\"sener\":_3,\"services\":[1,{\"loginline\":_4}],\"seven\":_3,\"sew\":_3,\"sex\":_3,\"sexy\":_3,\"sfr\":_3,\"shangrila\":_3,\"sharp\":_3,\"shell\":_3,\"shia\":_3,\"shiksha\":_3,\"shoes\":_3,\"shop\":[1,{\"base\":_4,\"hoplix\":_4,\"barsy\":_4,\"barsyonline\":_4,\"shopware\":_4}],\"shopping\":_3,\"shouji\":_3,\"show\":_3,\"silk\":_3,\"sina\":_3,\"singles\":_3,\"site\":[1,{\"square\":_4,\"canva\":_22,\"cloudera\":_7,\"convex\":_4,\"cyon\":_4,\"fastvps\":_4,\"heyflow\":_4,\"jele\":_4,\"jouwweb\":_4,\"loginline\":_4,\"barsy\":_4,\"notion\":_4,\"omniwe\":_4,\"opensocial\":_4,\"madethis\":_4,\"platformsh\":_7,\"tst\":_7,\"byen\":_4,\"srht\":_4,\"novecore\":_4,\"cpanel\":_4,\"wpsquared\":_4}],\"ski\":_3,\"skin\":_3,\"sky\":_3,\"skype\":_3,\"sling\":_3,\"smart\":_3,\"smile\":_3,\"sncf\":_3,\"soccer\":_3,\"social\":_3,\"softbank\":_3,\"software\":_3,\"sohu\":_3,\"solar\":_3,\"solutions\":_3,\"song\":_3,\"sony\":_3,\"soy\":_3,\"spa\":_3,\"space\":[1,{\"myfast\":_4,\"heiyu\":_4,\"hf\":[2,{\"static\":_4}],\"app-ionos\":_4,\"project\":_4,\"uber\":_4,\"xs4all\":_4}],\"sport\":_3,\"spot\":_3,\"srl\":_3,\"stada\":_3,\"staples\":_3,\"star\":_3,\"statebank\":_3,\"statefarm\":_3,\"stc\":_3,\"stcgroup\":_3,\"stockholm\":_3,\"storage\":_3,\"store\":[1,{\"barsy\":_4,\"sellfy\":_4,\"shopware\":_4,\"storebase\":_4}],\"stream\":_3,\"studio\":_3,\"study\":_3,\"style\":_3,\"sucks\":_3,\"supplies\":_3,\"supply\":_3,\"support\":[1,{\"barsy\":_4}],\"surf\":_3,\"surgery\":_3,\"suzuki\":_3,\"swatch\":_3,\"swiss\":_3,\"sydney\":_3,\"systems\":[1,{\"knightpoint\":_4}],\"tab\":_3,\"taipei\":_3,\"talk\":_3,\"taobao\":_3,\"target\":_3,\"tatamotors\":_3,\"tatar\":_3,\"tattoo\":_3,\"tax\":_3,\"taxi\":_3,\"tci\":_3,\"tdk\":_3,\"team\":[1,{\"discourse\":_4,\"jelastic\":_4}],\"tech\":[1,{\"cleverapps\":_4}],\"technology\":_19,\"temasek\":_3,\"tennis\":_3,\"teva\":_3,\"thd\":_3,\"theater\":_3,\"theatre\":_3,\"tiaa\":_3,\"tickets\":_3,\"tienda\":_3,\"tips\":_3,\"tires\":_3,\"tirol\":_3,\"tjmaxx\":_3,\"tjx\":_3,\"tkmaxx\":_3,\"tmall\":_3,\"today\":[1,{\"prequalifyme\":_4}],\"tokyo\":_3,\"tools\":[1,{\"addr\":_46,\"myaddr\":_4}],\"top\":[1,{\"ntdll\":_4,\"wadl\":_7}],\"toray\":_3,\"toshiba\":_3,\"total\":_3,\"tours\":_3,\"town\":_3,\"toyota\":_3,\"toys\":_3,\"trade\":_3,\"trading\":_3,\"training\":_3,\"travel\":_3,\"travelers\":_3,\"travelersinsurance\":_3,\"trust\":_3,\"trv\":_3,\"tube\":_3,\"tui\":_3,\"tunes\":_3,\"tushu\":_3,\"tvs\":_3,\"ubank\":_3,\"ubs\":_3,\"unicom\":_3,\"university\":_3,\"uno\":_3,\"uol\":_3,\"ups\":_3,\"vacations\":_3,\"vana\":_3,\"vanguard\":_3,\"vegas\":_3,\"ventures\":_3,\"verisign\":_3,\"versicherung\":_3,\"vet\":_3,\"viajes\":_3,\"video\":_3,\"vig\":_3,\"viking\":_3,\"villas\":_3,\"vin\":_3,\"vip\":_3,\"virgin\":_3,\"visa\":_3,\"vision\":_3,\"viva\":_3,\"vivo\":_3,\"vlaanderen\":_3,\"vodka\":_3,\"volvo\":_3,\"vote\":_3,\"voting\":_3,\"voto\":_3,\"voyage\":_3,\"wales\":_3,\"walmart\":_3,\"walter\":_3,\"wang\":_3,\"wanggou\":_3,\"watch\":_3,\"watches\":_3,\"weather\":_3,\"weatherchannel\":_3,\"webcam\":_3,\"weber\":_3,\"website\":_56,\"wed\":_3,\"wedding\":_3,\"weibo\":_3,\"weir\":_3,\"whoswho\":_3,\"wien\":_3,\"wiki\":_56,\"williamhill\":_3,\"win\":_3,\"windows\":_3,\"wine\":_3,\"winners\":_3,\"wme\":_3,\"wolterskluwer\":_3,\"woodside\":_3,\"work\":_3,\"works\":_3,\"world\":_3,\"wow\":_3,\"wtc\":_3,\"wtf\":_3,\"xbox\":_3,\"xerox\":_3,\"xihuan\":_3,\"xin\":_3,\"xn--11b4c3d\":_3,\"कॉम\":_3,\"xn--1ck2e1b\":_3,\"セール\":_3,\"xn--1qqw23a\":_3,\"佛山\":_3,\"xn--30rr7y\":_3,\"慈善\":_3,\"xn--3bst00m\":_3,\"集团\":_3,\"xn--3ds443g\":_3,\"在线\":_3,\"xn--3pxu8k\":_3,\"点看\":_3,\"xn--42c2d9a\":_3,\"คอม\":_3,\"xn--45q11c\":_3,\"八卦\":_3,\"xn--4gbrim\":_3,\"موقع\":_3,\"xn--55qw42g\":_3,\"公益\":_3,\"xn--55qx5d\":_3,\"公司\":_3,\"xn--5su34j936bgsg\":_3,\"香格里拉\":_3,\"xn--5tzm5g\":_3,\"网站\":_3,\"xn--6frz82g\":_3,\"移动\":_3,\"xn--6qq986b3xl\":_3,\"我爱你\":_3,\"xn--80adxhks\":_3,\"москва\":_3,\"xn--80aqecdr1a\":_3,\"католик\":_3,\"xn--80asehdb\":_3,\"онлайн\":_3,\"xn--80aswg\":_3,\"сайт\":_3,\"xn--8y0a063a\":_3,\"联通\":_3,\"xn--9dbq2a\":_3,\"קום\":_3,\"xn--9et52u\":_3,\"时尚\":_3,\"xn--9krt00a\":_3,\"微博\":_3,\"xn--b4w605ferd\":_3,\"淡马锡\":_3,\"xn--bck1b9a5dre4c\":_3,\"ファッション\":_3,\"xn--c1avg\":_3,\"орг\":_3,\"xn--c2br7g\":_3,\"नेट\":_3,\"xn--cck2b3b\":_3,\"ストア\":_3,\"xn--cckwcxetd\":_3,\"アマゾン\":_3,\"xn--cg4bki\":_3,\"삼성\":_3,\"xn--czr694b\":_3,\"商标\":_3,\"xn--czrs0t\":_3,\"商店\":_3,\"xn--czru2d\":_3,\"商城\":_3,\"xn--d1acj3b\":_3,\"дети\":_3,\"xn--eckvdtc9d\":_3,\"ポイント\":_3,\"xn--efvy88h\":_3,\"新闻\":_3,\"xn--fct429k\":_3,\"家電\":_3,\"xn--fhbei\":_3,\"كوم\":_3,\"xn--fiq228c5hs\":_3,\"中文网\":_3,\"xn--fiq64b\":_3,\"中信\":_3,\"xn--fjq720a\":_3,\"娱乐\":_3,\"xn--flw351e\":_3,\"谷歌\":_3,\"xn--fzys8d69uvgm\":_3,\"電訊盈科\":_3,\"xn--g2xx48c\":_3,\"购物\":_3,\"xn--gckr3f0f\":_3,\"クラウド\":_3,\"xn--gk3at1e\":_3,\"通販\":_3,\"xn--hxt814e\":_3,\"网店\":_3,\"xn--i1b6b1a6a2e\":_3,\"संगठन\":_3,\"xn--imr513n\":_3,\"餐厅\":_3,\"xn--io0a7i\":_3,\"网络\":_3,\"xn--j1aef\":_3,\"ком\":_3,\"xn--jlq480n2rg\":_3,\"亚马逊\":_3,\"xn--jvr189m\":_3,\"食品\":_3,\"xn--kcrx77d1x4a\":_3,\"飞利浦\":_3,\"xn--kput3i\":_3,\"手机\":_3,\"xn--mgba3a3ejt\":_3,\"ارامكو\":_3,\"xn--mgba7c0bbn0a\":_3,\"العليان\":_3,\"xn--mgbab2bd\":_3,\"بازار\":_3,\"xn--mgbca7dzdo\":_3,\"ابوظبي\":_3,\"xn--mgbi4ecexp\":_3,\"كاثوليك\":_3,\"xn--mgbt3dhd\":_3,\"همراه\":_3,\"xn--mk1bu44c\":_3,\"닷컴\":_3,\"xn--mxtq1m\":_3,\"政府\":_3,\"xn--ngbc5azd\":_3,\"شبكة\":_3,\"xn--ngbe9e0a\":_3,\"بيتك\":_3,\"xn--ngbrx\":_3,\"عرب\":_3,\"xn--nqv7f\":_3,\"机构\":_3,\"xn--nqv7fs00ema\":_3,\"组织机构\":_3,\"xn--nyqy26a\":_3,\"健康\":_3,\"xn--otu796d\":_3,\"招聘\":_3,\"xn--p1acf\":[1,{\"xn--90amc\":_4,\"xn--j1aef\":_4,\"xn--j1ael8b\":_4,\"xn--h1ahn\":_4,\"xn--j1adp\":_4,\"xn--c1avg\":_4,\"xn--80aaa0cvac\":_4,\"xn--h1aliz\":_4,\"xn--90a1af\":_4,\"xn--41a\":_4}],\"рус\":[1,{\"биз\":_4,\"ком\":_4,\"крым\":_4,\"мир\":_4,\"мск\":_4,\"орг\":_4,\"самара\":_4,\"сочи\":_4,\"спб\":_4,\"я\":_4}],\"xn--pssy2u\":_3,\"大拿\":_3,\"xn--q9jyb4c\":_3,\"みんな\":_3,\"xn--qcka1pmc\":_3,\"グーグル\":_3,\"xn--rhqv96g\":_3,\"世界\":_3,\"xn--rovu88b\":_3,\"書籍\":_3,\"xn--ses554g\":_3,\"网址\":_3,\"xn--t60b56a\":_3,\"닷넷\":_3,\"xn--tckwe\":_3,\"コム\":_3,\"xn--tiq49xqyj\":_3,\"天主教\":_3,\"xn--unup4y\":_3,\"游戏\":_3,\"xn--vermgensberater-ctb\":_3,\"vermögensberater\":_3,\"xn--vermgensberatung-pwb\":_3,\"vermögensberatung\":_3,\"xn--vhquv\":_3,\"企业\":_3,\"xn--vuq861b\":_3,\"信息\":_3,\"xn--w4r85el8fhu5dnra\":_3,\"嘉里大酒店\":_3,\"xn--w4rs40l\":_3,\"嘉里\":_3,\"xn--xhq521b\":_3,\"广东\":_3,\"xn--zfr164b\":_3,\"政务\":_3,\"xyz\":[1,{\"botdash\":_4,\"telebit\":_7}],\"yachts\":_3,\"yahoo\":_3,\"yamaxun\":_3,\"yandex\":_3,\"yodobashi\":_3,\"yoga\":_3,\"yokohama\":_3,\"you\":_3,\"youtube\":_3,\"yun\":_3,\"zappos\":_3,\"zara\":_3,\"zero\":_3,\"zip\":_3,\"zone\":[1,{\"cloud66\":_4,\"triton\":_7,\"stackit\":_4,\"lima\":_4}],\"zuerich\":_3}];\n return rules;\n})();\n","import {\n fastPathLookup,\n IPublicSuffix,\n ISuffixLookupOptions,\n} from 'tldts-core';\nimport { exceptions, ITrie, rules } from './data/trie';\n\n// Flags used to know if a rule is ICANN or Private\nconst enum RULE_TYPE {\n ICANN = 1,\n PRIVATE = 2,\n}\n\ninterface IMatch {\n index: number;\n isIcann: boolean;\n isPrivate: boolean;\n}\n\n/**\n * Lookup parts of domain in Trie\n */\nfunction lookupInTrie(\n parts: string[],\n trie: ITrie,\n index: number,\n allowedMask: number,\n): IMatch | null {\n let result: IMatch | null = null;\n let node: ITrie | undefined = trie;\n while (node !== undefined) {\n // We have a match!\n if ((node[0] & allowedMask) !== 0) {\n result = {\n index: index + 1,\n isIcann: node[0] === RULE_TYPE.ICANN,\n isPrivate: node[0] === RULE_TYPE.PRIVATE,\n };\n }\n\n // No more `parts` to look for\n if (index === -1) {\n break;\n }\n\n const succ: { [label: string]: ITrie } = node[1];\n node = Object.prototype.hasOwnProperty.call(succ, parts[index]!)\n ? succ[parts[index]!]\n : succ['*'];\n index -= 1;\n }\n\n return result;\n}\n\n/**\n * Check if `hostname` has a valid public suffix in `trie`.\n */\nexport default function suffixLookup(\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): void {\n if (fastPathLookup(hostname, options, out)) {\n return;\n }\n\n const hostnameParts = hostname.split('.');\n\n const allowedMask =\n (options.allowPrivateDomains ? RULE_TYPE.PRIVATE : 0) |\n (options.allowIcannDomains ? RULE_TYPE.ICANN : 0);\n\n // Look for exceptions\n const exceptionMatch = lookupInTrie(\n hostnameParts,\n exceptions,\n hostnameParts.length - 1,\n allowedMask,\n );\n\n if (exceptionMatch !== null) {\n out.isIcann = exceptionMatch.isIcann;\n out.isPrivate = exceptionMatch.isPrivate;\n out.publicSuffix = hostnameParts.slice(exceptionMatch.index + 1).join('.');\n return;\n }\n\n // Look for a match in rules\n const rulesMatch = lookupInTrie(\n hostnameParts,\n rules,\n hostnameParts.length - 1,\n allowedMask,\n );\n\n if (rulesMatch !== null) {\n out.isIcann = rulesMatch.isIcann;\n out.isPrivate = rulesMatch.isPrivate;\n out.publicSuffix = hostnameParts.slice(rulesMatch.index).join('.');\n return;\n }\n\n // No match found...\n // Prevailing rule is '*' so we consider the top-level domain to be the\n // public suffix of `hostname` (e.g.: 'example.org' => 'org').\n out.isIcann = false;\n out.isPrivate = false;\n out.publicSuffix = hostnameParts[hostnameParts.length - 1] ?? null;\n}\n","import { IPublicSuffix, ISuffixLookupOptions } from './interface';\n\nexport default function (\n hostname: string,\n options: ISuffixLookupOptions,\n out: IPublicSuffix,\n): boolean {\n // Fast path for very popular suffixes; this allows to by-pass lookup\n // completely as well as any extra allocation or string manipulation.\n if (!options.allowPrivateDomains && hostname.length > 3) {\n const last: number = hostname.length - 1;\n const c3: number = hostname.charCodeAt(last);\n const c2: number = hostname.charCodeAt(last - 1);\n const c1: number = hostname.charCodeAt(last - 2);\n const c0: number = hostname.charCodeAt(last - 3);\n\n if (\n c3 === 109 /* 'm' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 99 /* 'c' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'com';\n return true;\n } else if (\n c3 === 103 /* 'g' */ &&\n c2 === 114 /* 'r' */ &&\n c1 === 111 /* 'o' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'org';\n return true;\n } else if (\n c3 === 117 /* 'u' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 101 /* 'e' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'edu';\n return true;\n } else if (\n c3 === 118 /* 'v' */ &&\n c2 === 111 /* 'o' */ &&\n c1 === 103 /* 'g' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'gov';\n return true;\n } else if (\n c3 === 116 /* 't' */ &&\n c2 === 101 /* 'e' */ &&\n c1 === 110 /* 'n' */ &&\n c0 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'net';\n return true;\n } else if (\n c3 === 101 /* 'e' */ &&\n c2 === 100 /* 'd' */ &&\n c1 === 46 /* '.' */\n ) {\n out.isIcann = true;\n out.isPrivate = false;\n out.publicSuffix = 'de';\n return true;\n }\n }\n\n return false;\n}\n","import {\n FLAG,\n getEmptyResult,\n IOptions,\n IResult,\n parseImpl,\n resetResult,\n} from 'tldts-core';\n\nimport suffixLookup from './src/suffix-trie';\n\n// For all methods but 'parse', it does not make sense to allocate an object\n// every single time to only return the value of a specific attribute. To avoid\n// this un-necessary allocation, we use a global object which is re-used.\nconst RESULT: IResult = getEmptyResult();\n\nexport function parse(url: string, options: Partial = {}): IResult {\n return parseImpl(url, FLAG.ALL, suffixLookup, options, getEmptyResult());\n}\n\nexport function getHostname(\n url: string,\n options: Partial = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.HOSTNAME, suffixLookup, options, RESULT).hostname;\n}\n\nexport function getPublicSuffix(\n url: string,\n options: Partial = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.PUBLIC_SUFFIX, suffixLookup, options, RESULT)\n .publicSuffix;\n}\n\nexport function getDomain(\n url: string,\n options: Partial = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.DOMAIN, suffixLookup, options, RESULT).domain;\n}\n\nexport function getSubdomain(\n url: string,\n options: Partial = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.SUB_DOMAIN, suffixLookup, options, RESULT)\n .subdomain;\n}\n\nexport function getDomainWithoutSuffix(\n url: string,\n options: Partial = {},\n): string | null {\n /*@__INLINE__*/ resetResult(RESULT);\n return parseImpl(url, FLAG.ALL, suffixLookup, options, RESULT)\n .domainWithoutSuffix;\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","import { blob, Layout } from '@solana/buffer-layout';\nimport { toBigIntBE, toBigIntLE, toBufferBE, toBufferLE } from 'bigint-buffer';\nimport { encodeDecode } from './base';\n\nexport const bigInt =\n (length: number) =>\n (property?: string): Layout => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout as Layout;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const bigIntBE =\n (length: number) =>\n (property?: string): Layout => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout as Layout;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntBE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferBE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const u64 = bigInt(8);\n\nexport const u64be = bigIntBE(8);\n\nexport const u128 = bigInt(16);\n\nexport const u128be = bigIntBE(16);\n\nexport const u192 = bigInt(24);\n\nexport const u192be = bigIntBE(24);\n\nexport const u256 = bigInt(32);\n\nexport const u256be = bigIntBE(32);\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.heart = void 0;\nvar heart = {\n \"viewBox\": \"0 0 1792 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M896 1664q-26 0-44-18l-624-602q-10-8-27.5-26t-55.5-65.5-68-97.5-53.5-121-23.5-138q0-220 127-344t351-124q62 0 126.5 21.5t120 58 95.5 68.5 76 68q36-36 76-68t95.5-68.5 120-58 126.5-21.5q224 0 351 124t127 344q0 221-229 450l-623 600q-18 18-44 18z\"\n }\n }]\n};\nexports.heart = heart;","import EventEmitter from \"events\";\nimport type { DeviceModel } from \"@ledgerhq/devices\";\nimport {\n TransportRaceCondition,\n TransportError,\n StatusCodes,\n getAltStatusMessage,\n TransportStatusError,\n} from \"@ledgerhq/errors\";\nexport {\n TransportError,\n TransportStatusError,\n StatusCodes,\n getAltStatusMessage,\n};\n\n/**\n */\nexport type Subscription = {\n unsubscribe: () => void;\n};\n\n/**\n */\nexport type Device = any; // Should be a union type of all possible Device object's shape\n\n/**\n * type: add or remove event\n * descriptor: a parameter that can be passed to open(descriptor)\n * deviceModel: device info on the model (is it a nano s, nano x, ...)\n * device: transport specific device info\n */\nexport interface DescriptorEvent {\n type: \"add\" | \"remove\";\n descriptor: Descriptor;\n deviceModel?: DeviceModel | null | undefined;\n device?: Device;\n}\n\n/**\n */\nexport type Observer = Readonly<{\n next: (event: Ev) => unknown;\n error: (e: any) => unknown;\n complete: () => unknown;\n}>;\n/**\n * Transport defines the generic interface to share between node/u2f impl\n * A **Descriptor** is a parametric type that is up to be determined for the implementation.\n * it can be for instance an ID, an file path, a URL,...\n */\n\nexport default class Transport {\n exchangeTimeout = 30000;\n unresponsiveTimeout = 15000;\n deviceModel: DeviceModel | null | undefined = null;\n\n /**\n * Statically check if a transport is supported on the user's platform/browser.\n */\n static readonly isSupported: () => Promise;\n\n /**\n * List once all available descriptors. For a better granularity, checkout `listen()`.\n * @return a promise of descriptors\n * @example\n * TransportFoo.list().then(descriptors => ...)\n */\n static readonly list: () => Promise>;\n\n /**\n * Listen all device events for a given Transport. The method takes an Obverver of DescriptorEvent and returns a Subscription (according to Observable paradigm https://github.com/tc39/proposal-observable )\n * a DescriptorEvent is a `{ descriptor, type }` object. type can be `\"add\"` or `\"remove\"` and descriptor is a value you can pass to `open(descriptor)`.\n * each listen() call will first emit all potential device already connected and then will emit events can come over times,\n * for instance if you plug a USB device after listen() or a bluetooth device become discoverable.\n * @param observer is an object with a next, error and complete function (compatible with observer pattern)\n * @return a Subscription object on which you can `.unsubscribe()` to stop listening descriptors.\n * @example\n const sub = TransportFoo.listen({\n next: e => {\n if (e.type===\"add\") {\n sub.unsubscribe();\n const transport = await TransportFoo.open(e.descriptor);\n ...\n }\n },\n error: error => {},\n complete: () => {}\n })\n */\n static readonly listen: (\n observer: Observer>\n ) => Subscription;\n\n /**\n * attempt to create a Transport instance with potentially a descriptor.\n * @param descriptor: the descriptor to open the transport with.\n * @param timeout: an optional timeout\n * @return a Promise of Transport instance\n * @example\n TransportFoo.open(descriptor).then(transport => ...)\n */\n static readonly open: (\n descriptor?: any,\n timeout?: number\n ) => Promise;\n\n /**\n * low level api to communicate with the device\n * This method is for implementations to implement but should not be directly called.\n * Instead, the recommanded way is to use send() method\n * @param apdu the data to send\n * @return a Promise of response data\n */\n exchange(_apdu: Buffer): Promise {\n throw new Error(\"exchange not implemented\");\n }\n\n /**\n * set the \"scramble key\" for the next exchanges with the device.\n * Each App can have a different scramble key and they internally will set it at instanciation.\n * @param key the scramble key\n */\n setScrambleKey(_key: string) {}\n\n /**\n * close the exchange with the device.\n * @return a Promise that ends when the transport is closed.\n */\n close(): Promise {\n return Promise.resolve();\n }\n\n _events = new EventEmitter();\n\n /**\n * Listen to an event on an instance of transport.\n * Transport implementation can have specific events. Here is the common events:\n * * `\"disconnect\"` : triggered if Transport is disconnected\n */\n on(eventName: string, cb: (...args: Array) => any): void {\n this._events.on(eventName, cb);\n }\n\n /**\n * Stop listening to an event on an instance of transport.\n */\n off(eventName: string, cb: (...args: Array) => any): void {\n this._events.removeListener(eventName, cb);\n }\n\n emit(event: string, ...args: any): void {\n this._events.emit(event, ...args);\n }\n\n /**\n * Enable or not logs of the binary exchange\n */\n setDebugMode() {\n console.warn(\n \"setDebugMode is deprecated. use @ledgerhq/logs instead. No logs are emitted in this anymore.\"\n );\n }\n\n /**\n * Set a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F)\n */\n setExchangeTimeout(exchangeTimeout: number): void {\n this.exchangeTimeout = exchangeTimeout;\n }\n\n /**\n * Define the delay before emitting \"unresponsive\" on an exchange that does not respond\n */\n setExchangeUnresponsiveTimeout(unresponsiveTimeout: number): void {\n this.unresponsiveTimeout = unresponsiveTimeout;\n }\n\n /**\n * wrapper on top of exchange to simplify work of the implementation.\n * @param cla\n * @param ins\n * @param p1\n * @param p2\n * @param data\n * @param statusList is a list of accepted status code (shorts). [0x9000] by default\n * @return a Promise of response buffer\n */\n send = async (\n cla: number,\n ins: number,\n p1: number,\n p2: number,\n data: Buffer = Buffer.alloc(0),\n statusList: Array = [StatusCodes.OK]\n ): Promise => {\n if (data.length >= 256) {\n throw new TransportError(\n \"data.length exceed 256 bytes limit. Got: \" + data.length,\n \"DataLengthTooBig\"\n );\n }\n\n const response = await this.exchange(\n Buffer.concat([\n Buffer.from([cla, ins, p1, p2]),\n Buffer.from([data.length]),\n data,\n ])\n );\n const sw = response.readUInt16BE(response.length - 2);\n\n if (!statusList.some((s) => s === sw)) {\n throw new TransportStatusError(sw);\n }\n\n return response;\n };\n\n /**\n * create() allows to open the first descriptor available or\n * throw if there is none or if timeout is reached.\n * This is a light helper, alternative to using listen() and open() (that you may need for any more advanced usecase)\n * @example\n TransportFoo.create().then(transport => ...)\n */\n static create(\n openTimeout = 3000,\n listenTimeout?: number\n ): Promise {\n return new Promise((resolve, reject) => {\n let found = false;\n const sub = this.listen({\n next: (e) => {\n found = true;\n if (sub) sub.unsubscribe();\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n this.open(e.descriptor, openTimeout).then(resolve, reject);\n },\n error: (e) => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n reject(e);\n },\n complete: () => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n\n if (!found) {\n reject(\n new TransportError(\n this.ErrorMessage_NoDeviceFound,\n \"NoDeviceFound\"\n )\n );\n }\n },\n });\n const listenTimeoutId = listenTimeout\n ? setTimeout(() => {\n sub.unsubscribe();\n reject(\n new TransportError(\n this.ErrorMessage_ListenTimeout,\n \"ListenTimeout\"\n )\n );\n }, listenTimeout)\n : null;\n });\n }\n\n exchangeBusyPromise: Promise | null | undefined;\n exchangeAtomicImpl = async (\n f: () => Promise\n ): Promise => {\n if (this.exchangeBusyPromise) {\n throw new TransportRaceCondition(\n \"An action was already pending on the Ledger device. Please deny or reconnect.\"\n );\n }\n\n let resolveBusy;\n const busyPromise: Promise = new Promise((r) => {\n resolveBusy = r;\n });\n this.exchangeBusyPromise = busyPromise;\n let unresponsiveReached = false;\n const timeout = setTimeout(() => {\n unresponsiveReached = true;\n this.emit(\"unresponsive\");\n }, this.unresponsiveTimeout);\n\n try {\n const res = await f();\n\n if (unresponsiveReached) {\n this.emit(\"responsive\");\n }\n\n return res;\n } finally {\n clearTimeout(timeout);\n if (resolveBusy) resolveBusy();\n this.exchangeBusyPromise = null;\n }\n };\n\n decorateAppAPIMethods(\n self: Record,\n methods: Array,\n scrambleKey: string\n ) {\n for (const methodName of methods) {\n self[methodName] = this.decorateAppAPIMethod(\n methodName,\n self[methodName],\n self,\n scrambleKey\n );\n }\n }\n\n _appAPIlock: string | null = null;\n\n decorateAppAPIMethod(\n methodName: string,\n f: (...args: A) => Promise,\n ctx: any,\n scrambleKey: string\n ): (...args: A) => Promise {\n return async (...args) => {\n const { _appAPIlock } = this;\n\n if (_appAPIlock) {\n return Promise.reject(\n new TransportError(\n \"Ledger Device is busy (lock \" + _appAPIlock + \")\",\n \"TransportLocked\"\n )\n );\n }\n\n try {\n this._appAPIlock = methodName;\n this.setScrambleKey(scrambleKey);\n return await f.apply(ctx, args);\n } finally {\n this._appAPIlock = null;\n }\n };\n }\n\n static ErrorMessage_ListenTimeout = \"No Ledger device found (timeout)\";\n static ErrorMessage_NoDeviceFound = \"No Ledger device found\";\n}\n",null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.permutePath = permutePath;\n/**\n * Generates the permutation of all possible values that {@link pathMatch} the `path` parameter.\n * The array is in longest-to-shortest order. Useful when building custom {@link Store} implementations.\n *\n * @example\n * ```\n * permutePath('/foo/bar/')\n * // ['/foo/bar/', '/foo/bar', '/foo', '/']\n * ```\n *\n * @param path - the path to generate permutations for\n * @public\n */\nfunction permutePath(path) {\n if (path === '/') {\n return ['/'];\n }\n const permutations = [path];\n while (path.length > 1) {\n const lindex = path.lastIndexOf('/');\n if (lindex === 0) {\n break;\n }\n path = path.slice(0, lindex);\n permutations.push(path);\n }\n permutations.push('/');\n return permutations;\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { CHash } from './abstract/utils.js';\nimport { CurveType, weierstrass } from './abstract/weierstrass.js';\n\n// connects noble-curves to noble-hashes\nexport function getHash(hash: CHash) {\n return {\n hash,\n hmac: (key: Uint8Array, ...msgs: Uint8Array[]) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\n// Same API as @noble/hashes, with ability to create curve with custom hash\ntype CurveDef = Readonly>;\nexport function createCurve(curveDef: CurveDef, defHash: CHash) {\n const create = (hash: CHash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\n}\n","'use strict';\n\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nmodule.exports.assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nmodule.exports.flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n","\"use strict\";\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CookieJar = void 0;\nconst getPublicSuffix_1 = require(\"../getPublicSuffix\");\nconst validators = __importStar(require(\"../validators\"));\nconst validators_1 = require(\"../validators\");\nconst store_1 = require(\"../store\");\nconst memstore_1 = require(\"../memstore\");\nconst pathMatch_1 = require(\"../pathMatch\");\nconst cookie_1 = require(\"./cookie\");\nconst utils_1 = require(\"../utils\");\nconst canonicalDomain_1 = require(\"./canonicalDomain\");\nconst constants_1 = require(\"./constants\");\nconst defaultPath_1 = require(\"./defaultPath\");\nconst domainMatch_1 = require(\"./domainMatch\");\nconst cookieCompare_1 = require(\"./cookieCompare\");\nconst version_1 = require(\"../version\");\nconst defaultSetCookieOptions = {\n loose: false,\n sameSiteContext: undefined,\n ignoreError: false,\n http: true,\n};\nconst defaultGetCookieOptions = {\n http: true,\n expire: true,\n allPaths: false,\n sameSiteContext: undefined,\n sort: undefined,\n};\nconst SAME_SITE_CONTEXT_VAL_ERR = 'Invalid sameSiteContext option for getCookies(); expected one of \"strict\", \"lax\", or \"none\"';\nfunction getCookieContext(url) {\n if (url &&\n typeof url === 'object' &&\n 'hostname' in url &&\n typeof url.hostname === 'string' &&\n 'pathname' in url &&\n typeof url.pathname === 'string' &&\n 'protocol' in url &&\n typeof url.protocol === 'string') {\n return {\n hostname: url.hostname,\n pathname: url.pathname,\n protocol: url.protocol,\n };\n }\n else if (typeof url === 'string') {\n try {\n return new URL(decodeURI(url));\n }\n catch {\n return new URL(url);\n }\n }\n else {\n throw new validators_1.ParameterError('`url` argument is not a string or URL.');\n }\n}\nfunction checkSameSiteContext(value) {\n const context = String(value).toLowerCase();\n if (context === 'none' || context === 'lax' || context === 'strict') {\n return context;\n }\n else {\n return undefined;\n }\n}\n/**\n * If the cookie-name begins with a case-sensitive match for the\n * string \"__Secure-\", abort these steps and ignore the cookie\n * entirely unless the cookie's secure-only-flag is true.\n * @param cookie\n * @returns boolean\n */\nfunction isSecurePrefixConditionMet(cookie) {\n const startsWithSecurePrefix = typeof cookie.key === 'string' && cookie.key.startsWith('__Secure-');\n return !startsWithSecurePrefix || cookie.secure;\n}\n/**\n * If the cookie-name begins with a case-sensitive match for the\n * string \"__Host-\", abort these steps and ignore the cookie\n * entirely unless the cookie meets all the following criteria:\n * 1. The cookie's secure-only-flag is true.\n * 2. The cookie's host-only-flag is true.\n * 3. The cookie-attribute-list contains an attribute with an\n * attribute-name of \"Path\", and the cookie's path is \"/\".\n * @param cookie\n * @returns boolean\n */\nfunction isHostPrefixConditionMet(cookie) {\n const startsWithHostPrefix = typeof cookie.key === 'string' && cookie.key.startsWith('__Host-');\n return (!startsWithHostPrefix ||\n Boolean(cookie.secure &&\n cookie.hostOnly &&\n cookie.path != null &&\n cookie.path === '/'));\n}\nfunction getNormalizedPrefixSecurity(prefixSecurity) {\n const normalizedPrefixSecurity = prefixSecurity.toLowerCase();\n /* The three supported options */\n switch (normalizedPrefixSecurity) {\n case constants_1.PrefixSecurityEnum.STRICT:\n case constants_1.PrefixSecurityEnum.SILENT:\n case constants_1.PrefixSecurityEnum.DISABLED:\n return normalizedPrefixSecurity;\n default:\n return constants_1.PrefixSecurityEnum.SILENT;\n }\n}\n/**\n * A CookieJar is for storage and retrieval of {@link Cookie} objects as defined in\n * {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.3 | RFC6265 - Section 5.3}.\n *\n * It also supports a pluggable persistence layer via {@link Store}.\n * @public\n */\nclass CookieJar {\n /**\n * Creates a new `CookieJar` instance.\n *\n * @remarks\n * - If a custom store is not passed to the constructor, an in-memory store ({@link MemoryCookieStore} will be created and used.\n * - If a boolean value is passed as the `options` parameter, this is equivalent to passing `{ rejectPublicSuffixes: }`\n *\n * @param store - a custom {@link Store} implementation (defaults to {@link MemoryCookieStore})\n * @param options - configures how cookies are processed by the cookie jar\n */\n constructor(store, options) {\n if (typeof options === 'boolean') {\n options = { rejectPublicSuffixes: options };\n }\n this.rejectPublicSuffixes = options?.rejectPublicSuffixes ?? true;\n this.enableLooseMode = options?.looseMode ?? false;\n this.allowSpecialUseDomain = options?.allowSpecialUseDomain ?? true;\n this.prefixSecurity = getNormalizedPrefixSecurity(options?.prefixSecurity ?? 'silent');\n this.store = store ?? new memstore_1.MemoryCookieStore();\n }\n callSync(fn) {\n if (!this.store.synchronous) {\n throw new Error('CookieJar store is not synchronous; use async API instead.');\n }\n let syncErr = null;\n let syncResult = undefined;\n try {\n fn.call(this, (error, result) => {\n syncErr = error;\n syncResult = result;\n });\n }\n catch (err) {\n syncErr = err;\n }\n if (syncErr)\n throw syncErr;\n return syncResult;\n }\n /**\n * @internal No doc because this is the overload implementation\n */\n setCookie(cookie, url, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n const cb = promiseCallback.callback;\n let context;\n try {\n if (typeof url === 'string') {\n validators.validate(validators.isNonEmptyString(url), callback, (0, utils_1.safeToString)(options));\n }\n context = getCookieContext(url);\n if (typeof url === 'function') {\n return promiseCallback.reject(new Error('No URL was specified'));\n }\n if (typeof options === 'function') {\n options = defaultSetCookieOptions;\n }\n validators.validate(typeof cb === 'function', cb);\n if (!validators.isNonEmptyString(cookie) &&\n !validators.isObject(cookie) &&\n cookie instanceof String &&\n cookie.length == 0) {\n return promiseCallback.resolve(undefined);\n }\n }\n catch (err) {\n return promiseCallback.reject(err);\n }\n const host = (0, canonicalDomain_1.canonicalDomain)(context.hostname) ?? null;\n const loose = options?.loose || this.enableLooseMode;\n let sameSiteContext = null;\n if (options?.sameSiteContext) {\n sameSiteContext = checkSameSiteContext(options.sameSiteContext);\n if (!sameSiteContext) {\n return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));\n }\n }\n // S5.3 step 1\n if (typeof cookie === 'string' || cookie instanceof String) {\n const parsedCookie = cookie_1.Cookie.parse(cookie.toString(), { loose: loose });\n if (!parsedCookie) {\n const err = new Error('Cookie failed to parse');\n return options?.ignoreError\n ? promiseCallback.resolve(undefined)\n : promiseCallback.reject(err);\n }\n cookie = parsedCookie;\n }\n else if (!(cookie instanceof cookie_1.Cookie)) {\n // If you're seeing this error, and are passing in a Cookie object,\n // it *might* be a Cookie object from another loaded version of tough-cookie.\n const err = new Error('First argument to setCookie must be a Cookie object or string');\n return options?.ignoreError\n ? promiseCallback.resolve(undefined)\n : promiseCallback.reject(err);\n }\n // S5.3 step 2\n const now = options?.now || new Date(); // will assign later to save effort in the face of errors\n // S5.3 step 3: NOOP; persistent-flag and expiry-time is handled by getCookie()\n // S5.3 step 4: NOOP; domain is null by default\n // S5.3 step 5: public suffixes\n if (this.rejectPublicSuffixes && cookie.domain) {\n try {\n const cdomain = cookie.cdomain();\n const suffix = typeof cdomain === 'string'\n ? (0, getPublicSuffix_1.getPublicSuffix)(cdomain, {\n allowSpecialUseDomain: this.allowSpecialUseDomain,\n ignoreError: options?.ignoreError,\n })\n : null;\n if (suffix == null && !constants_1.IP_V6_REGEX_OBJECT.test(cookie.domain)) {\n // e.g. \"com\"\n const err = new Error('Cookie has domain set to a public suffix');\n return options?.ignoreError\n ? promiseCallback.resolve(undefined)\n : promiseCallback.reject(err);\n }\n // Using `any` here rather than `unknown` to avoid a type assertion, at the cost of needing\n // to disable eslint directives. It's easier to have this one spot of technically incorrect\n // types, rather than having to deal with _all_ callback errors being `unknown`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (err) {\n return options?.ignoreError\n ? promiseCallback.resolve(undefined)\n : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n promiseCallback.reject(err);\n }\n }\n // S5.3 step 6:\n if (cookie.domain) {\n if (!(0, domainMatch_1.domainMatch)(host ?? undefined, cookie.cdomain() ?? undefined, false)) {\n const err = new Error(`Cookie not in this host's domain. Cookie:${cookie.cdomain() ?? 'null'} Request:${host ?? 'null'}`);\n return options?.ignoreError\n ? promiseCallback.resolve(undefined)\n : promiseCallback.reject(err);\n }\n if (cookie.hostOnly == null) {\n // don't reset if already set\n cookie.hostOnly = false;\n }\n }\n else {\n cookie.hostOnly = true;\n cookie.domain = host;\n }\n //S5.2.4 If the attribute-value is empty or if the first character of the\n //attribute-value is not %x2F (\"/\"):\n //Let cookie-path be the default-path.\n if (!cookie.path || cookie.path[0] !== '/') {\n cookie.path = (0, defaultPath_1.defaultPath)(context.pathname);\n cookie.pathIsDefault = true;\n }\n // S5.3 step 8: NOOP; secure attribute\n // S5.3 step 9: NOOP; httpOnly attribute\n // S5.3 step 10\n if (options?.http === false && cookie.httpOnly) {\n const err = new Error(\"Cookie is HttpOnly and this isn't an HTTP API\");\n return options.ignoreError\n ? promiseCallback.resolve(undefined)\n : promiseCallback.reject(err);\n }\n // 6252bis-02 S5.4 Step 13 & 14:\n if (cookie.sameSite !== 'none' &&\n cookie.sameSite !== undefined &&\n sameSiteContext) {\n // \"If the cookie's \"same-site-flag\" is not \"None\", and the cookie\n // is being set from a context whose \"site for cookies\" is not an\n // exact match for request-uri's host's registered domain, then\n // abort these steps and ignore the newly created cookie entirely.\"\n if (sameSiteContext === 'none') {\n const err = new Error('Cookie is SameSite but this is a cross-origin request');\n return options?.ignoreError\n ? promiseCallback.resolve(undefined)\n : promiseCallback.reject(err);\n }\n }\n /* 6265bis-02 S5.4 Steps 15 & 16 */\n const ignoreErrorForPrefixSecurity = this.prefixSecurity === constants_1.PrefixSecurityEnum.SILENT;\n const prefixSecurityDisabled = this.prefixSecurity === constants_1.PrefixSecurityEnum.DISABLED;\n /* If prefix checking is not disabled ...*/\n if (!prefixSecurityDisabled) {\n let errorFound = false;\n let errorMsg;\n /* Check secure prefix condition */\n if (!isSecurePrefixConditionMet(cookie)) {\n errorFound = true;\n errorMsg = 'Cookie has __Secure prefix but Secure attribute is not set';\n }\n else if (!isHostPrefixConditionMet(cookie)) {\n /* Check host prefix condition */\n errorFound = true;\n errorMsg =\n \"Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'\";\n }\n if (errorFound) {\n return options?.ignoreError || ignoreErrorForPrefixSecurity\n ? promiseCallback.resolve(undefined)\n : promiseCallback.reject(new Error(errorMsg));\n }\n }\n const store = this.store;\n // TODO: It feels weird to be manipulating the store as a side effect of a method.\n // We should either do it in the constructor or not at all.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!store.updateCookie) {\n store.updateCookie = async function (_oldCookie, newCookie, cb) {\n return this.putCookie(newCookie).then(() => cb?.(null), (error) => cb?.(error));\n };\n }\n const withCookie = function withCookie(err, oldCookie) {\n if (err) {\n cb(err);\n return;\n }\n const next = function (err) {\n if (err) {\n cb(err);\n }\n else if (typeof cookie === 'string') {\n cb(null, undefined);\n }\n else {\n cb(null, cookie);\n }\n };\n if (oldCookie) {\n // S5.3 step 11 - \"If the cookie store contains a cookie with the same name,\n // domain, and path as the newly created cookie:\"\n if (options &&\n 'http' in options &&\n options.http === false &&\n oldCookie.httpOnly) {\n // step 11.2\n err = new Error(\"old Cookie is HttpOnly and this isn't an HTTP API\");\n if (options.ignoreError)\n cb(null, undefined);\n else\n cb(err);\n return;\n }\n if (cookie instanceof cookie_1.Cookie) {\n cookie.creation = oldCookie.creation;\n // step 11.3\n cookie.creationIndex = oldCookie.creationIndex;\n // preserve tie-breaker\n cookie.lastAccessed = now;\n // Step 11.4 (delete cookie) is implied by just setting the new one:\n store.updateCookie(oldCookie, cookie, next); // step 12\n }\n }\n else {\n if (cookie instanceof cookie_1.Cookie) {\n cookie.creation = cookie.lastAccessed = now;\n store.putCookie(cookie, next); // step 12\n }\n }\n };\n // TODO: Refactor to avoid using a callback\n store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie);\n return promiseCallback.promise;\n }\n /**\n * Synchronously attempt to set the {@link Cookie} in the {@link CookieJar}.\n *\n * Note: Only works if the configured {@link Store} is also synchronous.\n *\n * @remarks\n * - If successfully persisted, the {@link Cookie} will have updated\n * {@link Cookie.creation}, {@link Cookie.lastAccessed} and {@link Cookie.hostOnly}\n * properties.\n *\n * - As per the RFC, the {@link Cookie.hostOnly} flag is set if there was no `Domain={value}`\n * atttribute on the cookie string. The {@link Cookie.domain} property is set to the\n * fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an\n * exact hostname match (not a {@link domainMatch} as per usual)\n *\n * @param cookie - The cookie object or cookie string to store. A string value will be parsed into a cookie using {@link Cookie.parse}.\n * @param url - The domain to store the cookie with.\n * @param options - Configuration settings to use when storing the cookie.\n * @public\n */\n setCookieSync(cookie, url, options) {\n const setCookieFn = options\n ? this.setCookie.bind(this, cookie, url, options)\n : this.setCookie.bind(this, cookie, url);\n return this.callSync(setCookieFn);\n }\n /**\n * @internal No doc because this is the overload implementation\n */\n getCookies(url, options, callback) {\n // RFC6365 S5.4\n if (typeof options === 'function') {\n callback = options;\n options = defaultGetCookieOptions;\n }\n else if (options === undefined) {\n options = defaultGetCookieOptions;\n }\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n const cb = promiseCallback.callback;\n let context;\n try {\n if (typeof url === 'string') {\n validators.validate(validators.isNonEmptyString(url), cb, url);\n }\n context = getCookieContext(url);\n validators.validate(validators.isObject(options), cb, (0, utils_1.safeToString)(options));\n validators.validate(typeof cb === 'function', cb);\n }\n catch (parameterError) {\n return promiseCallback.reject(parameterError);\n }\n const host = (0, canonicalDomain_1.canonicalDomain)(context.hostname);\n const path = context.pathname || '/';\n const secure = context.protocol &&\n (context.protocol == 'https:' || context.protocol == 'wss:');\n let sameSiteLevel = 0;\n if (options.sameSiteContext) {\n const sameSiteContext = checkSameSiteContext(options.sameSiteContext);\n if (sameSiteContext == null) {\n return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));\n }\n sameSiteLevel = cookie_1.Cookie.sameSiteLevel[sameSiteContext];\n if (!sameSiteLevel) {\n return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));\n }\n }\n const http = options.http ?? true;\n const now = Date.now();\n const expireCheck = options.expire ?? true;\n const allPaths = options.allPaths ?? false;\n const store = this.store;\n function matchingCookie(c) {\n // \"Either:\n // The cookie's host-only-flag is true and the canonicalized\n // request-host is identical to the cookie's domain.\n // Or:\n // The cookie's host-only-flag is false and the canonicalized\n // request-host domain-matches the cookie's domain.\"\n if (c.hostOnly) {\n if (c.domain != host) {\n return false;\n }\n }\n else {\n if (!(0, domainMatch_1.domainMatch)(host ?? undefined, c.domain ?? undefined, false)) {\n return false;\n }\n }\n // \"The request-uri's path path-matches the cookie's path.\"\n if (!allPaths && typeof c.path === 'string' && !(0, pathMatch_1.pathMatch)(path, c.path)) {\n return false;\n }\n // \"If the cookie's secure-only-flag is true, then the request-uri's\n // scheme must denote a \"secure\" protocol\"\n if (c.secure && !secure) {\n return false;\n }\n // \"If the cookie's http-only-flag is true, then exclude the cookie if the\n // cookie-string is being generated for a \"non-HTTP\" API\"\n if (c.httpOnly && !http) {\n return false;\n }\n // RFC6265bis-02 S5.3.7\n if (sameSiteLevel) {\n let cookieLevel;\n if (c.sameSite === 'lax') {\n cookieLevel = cookie_1.Cookie.sameSiteLevel.lax;\n }\n else if (c.sameSite === 'strict') {\n cookieLevel = cookie_1.Cookie.sameSiteLevel.strict;\n }\n else {\n cookieLevel = cookie_1.Cookie.sameSiteLevel.none;\n }\n if (cookieLevel > sameSiteLevel) {\n // only allow cookies at or below the request level\n return false;\n }\n }\n // deferred from S5.3\n // non-RFC: allow retention of expired cookies by choice\n const expiryTime = c.expiryTime();\n if (expireCheck && expiryTime != undefined && expiryTime <= now) {\n store.removeCookie(c.domain, c.path, c.key, () => { }); // result ignored\n return false;\n }\n return true;\n }\n store.findCookies(host, allPaths ? null : path, this.allowSpecialUseDomain, (err, cookies) => {\n if (err) {\n cb(err);\n return;\n }\n if (cookies == null) {\n cb(null, []);\n return;\n }\n cookies = cookies.filter(matchingCookie);\n // sorting of S5.4 part 2\n if ('sort' in options && options.sort !== false) {\n cookies = cookies.sort(cookieCompare_1.cookieCompare);\n }\n // S5.4 part 3\n const now = new Date();\n for (const cookie of cookies) {\n cookie.lastAccessed = now;\n }\n // TODO persist lastAccessed\n cb(null, cookies);\n });\n return promiseCallback.promise;\n }\n /**\n * Synchronously retrieve the list of cookies that can be sent in a Cookie header for the\n * current URL.\n *\n * Note: Only works if the configured Store is also synchronous.\n *\n * @remarks\n * - The array of cookies returned will be sorted according to {@link cookieCompare}.\n *\n * - The {@link Cookie.lastAccessed} property will be updated on all returned cookies.\n *\n * @param url - The domain to store the cookie with.\n * @param options - Configuration settings to use when retrieving the cookies.\n */\n getCookiesSync(url, options) {\n return this.callSync(this.getCookies.bind(this, url, options)) ?? [];\n }\n /**\n * @internal No doc because this is the overload implementation\n */\n getCookieString(url, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n const next = function (err, cookies) {\n if (err) {\n promiseCallback.callback(err);\n }\n else {\n promiseCallback.callback(null, cookies\n ?.sort(cookieCompare_1.cookieCompare)\n .map((c) => c.cookieString())\n .join('; '));\n }\n };\n this.getCookies(url, options, next);\n return promiseCallback.promise;\n }\n /**\n * Synchronous version of `.getCookieString()`. Accepts the same options as `.getCookies()` but returns a string suitable for a\n * `Cookie` header rather than an Array.\n *\n * Note: Only works if the configured Store is also synchronous.\n *\n * @param url - The domain to store the cookie with.\n * @param options - Configuration settings to use when retrieving the cookies.\n */\n getCookieStringSync(url, options) {\n return (this.callSync(options\n ? this.getCookieString.bind(this, url, options)\n : this.getCookieString.bind(this, url)) ?? '');\n }\n /**\n * @internal No doc because this is the overload implementation\n */\n getSetCookieStrings(url, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n const next = function (err, cookies) {\n if (err) {\n promiseCallback.callback(err);\n }\n else {\n promiseCallback.callback(null, cookies?.map((c) => {\n return c.toString();\n }));\n }\n };\n this.getCookies(url, options, next);\n return promiseCallback.promise;\n }\n /**\n * Synchronous version of `.getSetCookieStrings()`. Returns an array of strings suitable for `Set-Cookie` headers.\n * Accepts the same options as `.getCookies()`.\n *\n * Note: Only works if the configured Store is also synchronous.\n *\n * @param url - The domain to store the cookie with.\n * @param options - Configuration settings to use when retrieving the cookies.\n */\n getSetCookieStringsSync(url, options = {}) {\n return (this.callSync(this.getSetCookieStrings.bind(this, url, options)) ?? []);\n }\n /**\n * @internal No doc because this is the overload implementation\n */\n serialize(callback) {\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n let type = this.store.constructor.name;\n if (validators.isObject(type)) {\n type = null;\n }\n // update README.md \"Serialization Format\" if you change this, please!\n const serialized = {\n // The version of tough-cookie that serialized this jar. Generally a good\n // practice since future versions can make data import decisions based on\n // known past behavior. When/if this matters, use `semver`.\n version: `tough-cookie@${version_1.version}`,\n // add the store type, to make humans happy:\n storeType: type,\n // CookieJar configuration:\n rejectPublicSuffixes: this.rejectPublicSuffixes,\n enableLooseMode: this.enableLooseMode,\n allowSpecialUseDomain: this.allowSpecialUseDomain,\n prefixSecurity: getNormalizedPrefixSecurity(this.prefixSecurity),\n // this gets filled from getAllCookies:\n cookies: [],\n };\n if (typeof this.store.getAllCookies !== 'function') {\n return promiseCallback.reject(new Error('store does not support getAllCookies and cannot be serialized'));\n }\n this.store.getAllCookies((err, cookies) => {\n if (err) {\n promiseCallback.callback(err);\n return;\n }\n if (cookies == null) {\n promiseCallback.callback(null, serialized);\n return;\n }\n serialized.cookies = cookies.map((cookie) => {\n // convert to serialized 'raw' cookies\n const serializedCookie = cookie.toJSON();\n // Remove the index so new ones get assigned during deserialization\n delete serializedCookie.creationIndex;\n return serializedCookie;\n });\n promiseCallback.callback(null, serialized);\n });\n return promiseCallback.promise;\n }\n /**\n * Serialize the CookieJar if the underlying store supports `.getAllCookies`.\n *\n * Note: Only works if the configured Store is also synchronous.\n */\n serializeSync() {\n return this.callSync((callback) => {\n this.serialize(callback);\n });\n }\n /**\n * Alias of {@link CookieJar.serializeSync}. Allows the cookie to be serialized\n * with `JSON.stringify(cookieJar)`.\n */\n toJSON() {\n return this.serializeSync();\n }\n /**\n * Use the class method CookieJar.deserialize instead of calling this directly\n * @internal\n */\n _importCookies(serialized, callback) {\n let cookies = undefined;\n if (serialized &&\n typeof serialized === 'object' &&\n (0, utils_1.inOperator)('cookies', serialized) &&\n Array.isArray(serialized.cookies)) {\n cookies = serialized.cookies;\n }\n if (!cookies) {\n callback(new Error('serialized jar has no cookies array'), undefined);\n return;\n }\n cookies = cookies.slice(); // do not modify the original\n const putNext = (err) => {\n if (err) {\n callback(err, undefined);\n return;\n }\n if (Array.isArray(cookies)) {\n if (!cookies.length) {\n callback(err, this);\n return;\n }\n let cookie;\n try {\n cookie = cookie_1.Cookie.fromJSON(cookies.shift());\n }\n catch (e) {\n callback(e instanceof Error ? e : new Error(), undefined);\n return;\n }\n if (cookie === undefined) {\n putNext(null); // skip this cookie\n return;\n }\n this.store.putCookie(cookie, putNext);\n }\n };\n putNext(null);\n }\n /**\n * @internal\n */\n _importCookiesSync(serialized) {\n this.callSync(this._importCookies.bind(this, serialized));\n }\n /**\n * @internal No doc because this is the overload implementation\n */\n clone(newStore, callback) {\n if (typeof newStore === 'function') {\n callback = newStore;\n newStore = undefined;\n }\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n const cb = promiseCallback.callback;\n this.serialize((err, serialized) => {\n if (err) {\n return promiseCallback.reject(err);\n }\n return CookieJar.deserialize(serialized ?? '', newStore, cb);\n });\n return promiseCallback.promise;\n }\n /**\n * @internal\n */\n _cloneSync(newStore) {\n const cloneFn = newStore && typeof newStore !== 'function'\n ? this.clone.bind(this, newStore)\n : this.clone.bind(this);\n return this.callSync((callback) => {\n cloneFn(callback);\n });\n }\n /**\n * Produces a deep clone of this CookieJar. Modifications to the original do\n * not affect the clone, and vice versa.\n *\n * Note: Only works if both the configured Store and destination\n * Store are synchronous.\n *\n * @remarks\n * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.\n *\n * - Transferring between store types is supported so long as the source\n * implements `.getAllCookies()` and the destination implements `.putCookie()`.\n *\n * @param newStore - The target {@link Store} to clone cookies into.\n */\n cloneSync(newStore) {\n if (!newStore) {\n return this._cloneSync();\n }\n if (!newStore.synchronous) {\n throw new Error('CookieJar clone destination store is not synchronous; use async API instead.');\n }\n return this._cloneSync(newStore);\n }\n /**\n * @internal No doc because this is the overload implementation\n */\n removeAllCookies(callback) {\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n const cb = promiseCallback.callback;\n const store = this.store;\n // Check that the store implements its own removeAllCookies(). The default\n // implementation in Store will immediately call the callback with a \"not\n // implemented\" Error.\n if (typeof store.removeAllCookies === 'function' &&\n store.removeAllCookies !== store_1.Store.prototype.removeAllCookies) {\n // `Callback` and `ErrorCallback` are *technically* incompatible, but for the\n // standard implementation `cb = (err, result) => {}`, they're essentially the same.\n store.removeAllCookies(cb);\n return promiseCallback.promise;\n }\n store.getAllCookies((err, cookies) => {\n if (err) {\n cb(err);\n return;\n }\n if (!cookies) {\n cookies = [];\n }\n if (cookies.length === 0) {\n cb(null, undefined);\n return;\n }\n let completedCount = 0;\n const removeErrors = [];\n // TODO: Refactor to avoid using callback\n const removeCookieCb = function removeCookieCb(removeErr) {\n if (removeErr) {\n removeErrors.push(removeErr);\n }\n completedCount++;\n if (completedCount === cookies.length) {\n if (removeErrors[0])\n cb(removeErrors[0]);\n else\n cb(null, undefined);\n return;\n }\n };\n cookies.forEach((cookie) => {\n store.removeCookie(cookie.domain, cookie.path, cookie.key, removeCookieCb);\n });\n });\n return promiseCallback.promise;\n }\n /**\n * Removes all cookies from the CookieJar.\n *\n * Note: Only works if the configured Store is also synchronous.\n *\n * @remarks\n * - This is a new backwards-compatible feature of tough-cookie version 2.5,\n * so not all Stores will implement it efficiently. For Stores that do not\n * implement `removeAllCookies`, the fallback is to call `removeCookie` after\n * `getAllCookies`.\n *\n * - If `getAllCookies` fails or isn't implemented in the Store, an error is returned.\n *\n * - If one or more of the `removeCookie` calls fail, only the first error is returned.\n */\n removeAllCookiesSync() {\n this.callSync((callback) => {\n // `Callback` and `ErrorCallback` are *technically* incompatible, but for the\n // standard implementation `cb = (err, result) => {}`, they're essentially the same.\n this.removeAllCookies(callback);\n });\n }\n /**\n * @internal No doc because this is the overload implementation\n */\n static deserialize(strOrObj, store, callback) {\n if (typeof store === 'function') {\n callback = store;\n store = undefined;\n }\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n let serialized;\n if (typeof strOrObj === 'string') {\n try {\n serialized = JSON.parse(strOrObj);\n }\n catch (e) {\n return promiseCallback.reject(e instanceof Error ? e : new Error());\n }\n }\n else {\n serialized = strOrObj;\n }\n const readSerializedProperty = (property) => {\n return serialized &&\n typeof serialized === 'object' &&\n (0, utils_1.inOperator)(property, serialized)\n ? serialized[property]\n : undefined;\n };\n const readSerializedBoolean = (property) => {\n const value = readSerializedProperty(property);\n return typeof value === 'boolean' ? value : undefined;\n };\n const readSerializedString = (property) => {\n const value = readSerializedProperty(property);\n return typeof value === 'string' ? value : undefined;\n };\n const jar = new CookieJar(store, {\n rejectPublicSuffixes: readSerializedBoolean('rejectPublicSuffixes'),\n looseMode: readSerializedBoolean('enableLooseMode'),\n allowSpecialUseDomain: readSerializedBoolean('allowSpecialUseDomain'),\n prefixSecurity: getNormalizedPrefixSecurity(readSerializedString('prefixSecurity') ?? 'silent'),\n });\n jar._importCookies(serialized, (err) => {\n if (err) {\n promiseCallback.callback(err);\n return;\n }\n promiseCallback.callback(null, jar);\n });\n return promiseCallback.promise;\n }\n /**\n * A new CookieJar is created and the serialized {@link Cookie} values are added to\n * the underlying store. Each {@link Cookie} is added via `store.putCookie(...)` in\n * the order in which they appear in the serialization.\n *\n * Note: Only works if the configured Store is also synchronous.\n *\n * @remarks\n * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.\n *\n * - As a convenience, if `strOrObj` is a string, it is passed through `JSON.parse` first.\n *\n * @param strOrObj - A JSON string or object representing the deserialized cookies.\n * @param store - The underlying store to persist the deserialized cookies into.\n */\n static deserializeSync(strOrObj, store) {\n const serialized = typeof strOrObj === 'string' ? JSON.parse(strOrObj) : strOrObj;\n const readSerializedProperty = (property) => {\n return serialized &&\n typeof serialized === 'object' &&\n (0, utils_1.inOperator)(property, serialized)\n ? serialized[property]\n : undefined;\n };\n const readSerializedBoolean = (property) => {\n const value = readSerializedProperty(property);\n return typeof value === 'boolean' ? value : undefined;\n };\n const readSerializedString = (property) => {\n const value = readSerializedProperty(property);\n return typeof value === 'string' ? value : undefined;\n };\n const jar = new CookieJar(store, {\n rejectPublicSuffixes: readSerializedBoolean('rejectPublicSuffixes'),\n looseMode: readSerializedBoolean('enableLooseMode'),\n allowSpecialUseDomain: readSerializedBoolean('allowSpecialUseDomain'),\n prefixSecurity: getNormalizedPrefixSecurity(readSerializedString('prefixSecurity') ?? 'silent'),\n });\n // catch this mistake early:\n if (!jar.store.synchronous) {\n throw new Error('CookieJar store is not synchronous; use async API instead.');\n }\n jar._importCookiesSync(serialized);\n return jar;\n }\n /**\n * Alias of {@link CookieJar.deserializeSync}.\n *\n * @remarks\n * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.\n *\n * - As a convenience, if `strOrObj` is a string, it is passed through `JSON.parse` first.\n *\n * @param jsonString - A JSON string or object representing the deserialized cookies.\n * @param store - The underlying store to persist the deserialized cookies into.\n */\n static fromJSON(jsonString, store) {\n return CookieJar.deserializeSync(jsonString, store);\n }\n}\nexports.CookieJar = CookieJar;\n","import { struct } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { PublicKey } from '@solana/web3.js';\nimport type { Mint } from '../state/mint.js';\nimport { ExtensionType, getExtensionData } from './extensionType.js';\n\n/** PermanentDelegate as stored by the program */\nexport interface PermanentDelegate {\n delegate: PublicKey;\n}\n\n/** Buffer layout for de/serializing a mint */\nexport const PermanentDelegateLayout = struct([publicKey('delegate')]);\n\nexport const PERMANENT_DELEGATE_SIZE = PermanentDelegateLayout.span;\n\nexport function getPermanentDelegate(mint: Mint): PermanentDelegate | null {\n const extensionData = getExtensionData(ExtensionType.PermanentDelegate, mint.tlvData);\n if (extensionData !== null) {\n return PermanentDelegateLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n","/** Instructions defined by the program */\nexport enum TokenInstruction {\n InitializeMint = 0,\n InitializeAccount = 1,\n InitializeMultisig = 2,\n Transfer = 3,\n Approve = 4,\n Revoke = 5,\n SetAuthority = 6,\n MintTo = 7,\n Burn = 8,\n CloseAccount = 9,\n FreezeAccount = 10,\n ThawAccount = 11,\n TransferChecked = 12,\n ApproveChecked = 13,\n MintToChecked = 14,\n BurnChecked = 15,\n InitializeAccount2 = 16,\n SyncNative = 17,\n InitializeAccount3 = 18,\n InitializeMultisig2 = 19,\n InitializeMint2 = 20,\n GetAccountDataSize = 21,\n InitializeImmutableOwner = 22,\n AmountToUiAmount = 23,\n UiAmountToAmount = 24,\n InitializeMintCloseAuthority = 25,\n TransferFeeExtension = 26,\n ConfidentialTransferExtension = 27,\n DefaultAccountStateExtension = 28,\n Reallocate = 29,\n MemoTransferExtension = 30,\n CreateNativeMint = 31,\n InitializeNonTransferableMint = 32,\n InterestBearingMintExtension = 33,\n CpiGuardExtension = 34,\n InitializePermanentDelegate = 35,\n TransferHookExtension = 36,\n // ConfidentialTransferFeeExtension = 37,\n // WithdrawalExcessLamports = 38,\n MetadataPointerExtension = 39,\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createRecoverNestedInstruction } from '../instructions/associatedTokenAccount.js';\nimport { getAssociatedTokenAddressSync } from '../state/mint.js';\n\n/**\n * Recover funds funds in an associated token account which is owned by an associated token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param owner Owner of original ATA\n * @param mint Mint for the original ATA\n * @param nestedMint Mint for the nested ATA\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function recoverNested(\n connection: Connection,\n payer: Signer,\n owner: Signer,\n mint: PublicKey,\n nestedMint: PublicKey,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n const ownerAssociatedToken = getAssociatedTokenAddressSync(\n mint,\n owner.publicKey,\n false,\n programId,\n associatedTokenProgramId\n );\n\n const destinationAssociatedToken = getAssociatedTokenAddressSync(\n nestedMint,\n owner.publicKey,\n false,\n programId,\n associatedTokenProgramId\n );\n\n const nestedAssociatedToken = getAssociatedTokenAddressSync(\n nestedMint,\n ownerAssociatedToken,\n true,\n programId,\n associatedTokenProgramId\n );\n\n const transaction = new Transaction().add(\n createRecoverNestedInstruction(\n nestedAssociatedToken,\n nestedMint,\n destinationAssociatedToken,\n ownerAssociatedToken,\n mint,\n owner.publicKey,\n programId,\n associatedTokenProgramId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, owner], confirmOptions);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OnchainForGasWrapper = void 0;\r\nconst ISwapWrapper_1 = require(\"../../ISwapWrapper\");\r\nconst TrustedIntermediaryAPI_1 = require(\"../../../intermediaries/TrustedIntermediaryAPI\");\r\nconst IntermediaryError_1 = require(\"../../../errors/IntermediaryError\");\r\nconst OnchainForGasSwap_1 = require(\"./OnchainForGasSwap\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nclass OnchainForGasWrapper extends ISwapWrapper_1.ISwapWrapper {\r\n /**\r\n * @param chainIdentifier\r\n * @param unifiedStorage Storage interface for the current environment\r\n * @param unifiedChainEvents On-chain event listener\r\n * @param contract Underlying contract handling the swaps\r\n * @param prices Pricing to use\r\n * @param tokens\r\n * @param swapDataDeserializer Deserializer for SwapData\r\n * @param btcRpc Bitcoin RPC which also supports getting transactions by txoHash\r\n * @param options\r\n * @param events Instance to use for emitting events\r\n */\r\n constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, btcRpc, options, events) {\r\n super(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, options, events);\r\n this.TYPE = SwapType_1.SwapType.TRUSTED_FROM_BTC;\r\n this.swapDeserializer = OnchainForGasSwap_1.OnchainForGasSwap;\r\n this.pendingSwapStates = [OnchainForGasSwap_1.OnchainForGasSwapState.PR_CREATED];\r\n this.tickSwapState = null;\r\n this.btcRpc = btcRpc;\r\n }\r\n /**\r\n * Returns a newly created swap, receiving 'amount' base units of gas token\r\n *\r\n * @param signer\r\n * @param amount Amount you wish to receive in base units\r\n * @param lpOrUrl Intermediary/Counterparty swap service Intermediary object or raw url\r\n * @param refundAddress Bitcoin address to receive refund on in case the counterparty cannot execute the swap\r\n */\r\n async create(signer, amount, lpOrUrl, refundAddress) {\r\n if (!this.isInitialized)\r\n throw new Error(\"Not initialized, call init() first!\");\r\n const lpUrl = typeof (lpOrUrl) === \"string\" ? lpOrUrl : lpOrUrl.url;\r\n const token = this.contract.getNativeCurrencyAddress();\r\n const resp = await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.initTrustedFromBTC(this.chainIdentifier, lpUrl, {\r\n address: signer,\r\n amount,\r\n refundAddress,\r\n token\r\n }, this.options.getRequestTimeout);\r\n if (resp.total !== amount)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid total returned\");\r\n const pricingInfo = await this.verifyReturnedPrice(typeof (lpOrUrl) === \"string\" ?\r\n { swapFeePPM: 10000, swapBaseFee: 10 } :\r\n lpOrUrl.services[SwapType_1.SwapType.TRUSTED_FROM_BTC], false, resp.amountSats, amount, this.contract.getNativeCurrencyAddress(), resp);\r\n const quote = new OnchainForGasSwap_1.OnchainForGasSwap(this, {\r\n paymentHash: resp.paymentHash,\r\n sequence: resp.sequence,\r\n address: resp.btcAddress,\r\n inputAmount: resp.amountSats,\r\n outputAmount: resp.total,\r\n recipient: signer,\r\n refundAddress,\r\n pricingInfo,\r\n url: lpUrl,\r\n expiry: resp.expiresAt,\r\n swapFee: resp.swapFee,\r\n swapFeeBtc: resp.swapFeeSats,\r\n feeRate: \"\",\r\n exactIn: false,\r\n token\r\n });\r\n await quote._save();\r\n return quote;\r\n }\r\n}\r\nexports.OnchainForGasWrapper = OnchainForGasWrapper;\r\n",null,"/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let 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\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.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\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let 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 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) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let 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\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let 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\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\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\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\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\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\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 & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n 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\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let 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) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let 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\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const 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\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\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 & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let 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}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\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}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\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\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\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 (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (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}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n",null,"\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetKeypairWallet = void 0;\r\nconst starknet_1 = require(\"starknet\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst OZaccountClassHash = '0x066358a3bf5515033abe327a433e2947f9ee8dcd500ccb260f710b47039ebd36';\r\n//Openzeppelin Account wallet\r\nclass StarknetKeypairWallet extends starknet_1.Account {\r\n constructor(provider, privateKey) {\r\n const publicKey = starknet_1.ec.starkCurve.getStarkKey((0, Utils_1.toHex)(privateKey));\r\n // Calculate future address of the account\r\n const OZaccountConstructorCallData = starknet_1.CallData.compile({ publicKey });\r\n const OZcontractAddress = starknet_1.hash.calculateContractAddressFromHash(publicKey, OZaccountClassHash, OZaccountConstructorCallData, 0);\r\n super(provider, OZcontractAddress, privateKey, \"1\");\r\n this.publicKey = publicKey;\r\n }\r\n getDeploymentData() {\r\n return {\r\n classHash: OZaccountClassHash,\r\n constructorCalldata: starknet_1.CallData.compile({ publicKey: this.publicKey }),\r\n addressSalt: this.publicKey,\r\n contractAddress: this.address\r\n };\r\n }\r\n}\r\nexports.StarknetKeypairWallet = StarknetKeypairWallet;\r\n","// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\ndeclare const globalThis: Record | undefined;\nexport const crypto =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__exportStar(require(\"@atomiqlabs/base\"), exports);\r\n__exportStar(require(\"@atomiqlabs/sdk-lib\"), exports);\r\n__exportStar(require(\"./SwapperFactory\"), exports);\r\n__exportStar(require(\"./Utils\"), exports);\r\n__exportStar(require(\"./storage/LocalStorageManager\"), exports);\r\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\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\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaSwapData = void 0;\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst BN = require(\"bn.js\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst SwapTypeEnum_1 = require(\"./SwapTypeEnum\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst spl_token_1 = require(\"@solana/spl-token\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst SolanaTokens_1 = require(\"../base/modules/SolanaTokens\");\r\nconst EXPIRY_BLOCKHEIGHT_THRESHOLD = new BN(\"1000000000\");\r\nclass SolanaSwapData extends base_1.SwapData {\r\n constructor(offererOrData, claimer, token, amount, paymentHash, sequence, expiry, nonce, confirmations, payOut, kind, payIn, offererAta, claimerAta, securityDeposit, claimerBounty, txoHash) {\r\n super();\r\n if (claimer != null || token != null || amount != null || paymentHash != null || expiry != null ||\r\n nonce != null || confirmations != null || payOut != null || kind != null || payIn != null || claimerAta != null) {\r\n this.offerer = offererOrData;\r\n this.claimer = claimer;\r\n this.token = token;\r\n this.amount = amount;\r\n this.paymentHash = paymentHash;\r\n this.sequence = sequence;\r\n this.expiry = expiry;\r\n this.nonce = nonce;\r\n this.confirmations = confirmations;\r\n this.payOut = payOut;\r\n this.kind = kind;\r\n this.payIn = payIn;\r\n this.claimerAta = claimerAta;\r\n this.offererAta = offererAta;\r\n this.securityDeposit = securityDeposit;\r\n this.claimerBounty = claimerBounty;\r\n this.txoHash = txoHash;\r\n }\r\n else {\r\n this.offerer = offererOrData.offerer == null ? null : new web3_js_1.PublicKey(offererOrData.offerer);\r\n this.claimer = offererOrData.claimer == null ? null : new web3_js_1.PublicKey(offererOrData.claimer);\r\n this.token = offererOrData.token == null ? null : new web3_js_1.PublicKey(offererOrData.token);\r\n this.amount = offererOrData.amount == null ? null : new BN(offererOrData.amount);\r\n this.paymentHash = offererOrData.paymentHash;\r\n this.sequence = offererOrData.sequence == null ? null : new BN(offererOrData.sequence);\r\n this.expiry = offererOrData.expiry == null ? null : new BN(offererOrData.expiry);\r\n this.nonce = offererOrData.nonce == null ? null : new BN(offererOrData.nonce);\r\n this.confirmations = offererOrData.confirmations;\r\n this.payOut = offererOrData.payOut;\r\n this.kind = offererOrData.kind;\r\n this.payIn = offererOrData.payIn;\r\n this.claimerAta = offererOrData.claimerAta == null ? null : new web3_js_1.PublicKey(offererOrData.claimerAta);\r\n this.offererAta = offererOrData.offererAta == null ? null : new web3_js_1.PublicKey(offererOrData.offererAta);\r\n this.securityDeposit = offererOrData.securityDeposit == null ? null : new BN(offererOrData.securityDeposit);\r\n this.claimerBounty = offererOrData.claimerBounty == null ? null : new BN(offererOrData.claimerBounty);\r\n this.txoHash = offererOrData.txoHash;\r\n }\r\n }\r\n getOfferer() {\r\n return this.offerer.toBase58();\r\n }\r\n setOfferer(newOfferer) {\r\n this.offerer = new web3_js_1.PublicKey(newOfferer);\r\n this.offererAta = (0, spl_token_1.getAssociatedTokenAddressSync)(this.token, this.offerer);\r\n this.payIn = true;\r\n }\r\n getClaimer() {\r\n return this.claimer.toBase58();\r\n }\r\n setClaimer(newClaimer) {\r\n this.claimer = new web3_js_1.PublicKey(newClaimer);\r\n this.payIn = false;\r\n this.payOut = true;\r\n this.claimerAta = (0, spl_token_1.getAssociatedTokenAddressSync)(this.token, this.claimer);\r\n }\r\n serialize() {\r\n return {\r\n type: \"sol\",\r\n offerer: this.offerer == null ? null : this.offerer.toBase58(),\r\n claimer: this.claimer == null ? null : this.claimer.toBase58(),\r\n token: this.token == null ? null : this.token.toBase58(),\r\n amount: this.amount == null ? null : this.amount.toString(10),\r\n paymentHash: this.paymentHash,\r\n sequence: this.sequence == null ? null : this.sequence.toString(10),\r\n expiry: this.expiry == null ? null : this.expiry.toString(10),\r\n nonce: this.nonce == null ? null : this.nonce.toString(10),\r\n confirmations: this.confirmations,\r\n payOut: this.payOut,\r\n kind: this.kind,\r\n payIn: this.payIn,\r\n offererAta: this.offererAta == null ? null : this.offererAta.toBase58(),\r\n claimerAta: this.claimerAta == null ? null : this.claimerAta.toBase58(),\r\n securityDeposit: this.securityDeposit == null ? null : this.securityDeposit.toString(10),\r\n claimerBounty: this.claimerBounty == null ? null : this.claimerBounty.toString(10),\r\n txoHash: this.txoHash\r\n };\r\n }\r\n getAmount() {\r\n return (0, Utils_1.toBigInt)(this.amount);\r\n }\r\n getToken() {\r\n return this.token.toString();\r\n }\r\n isToken(token) {\r\n return this.token.equals(new web3_js_1.PublicKey(token));\r\n }\r\n getType() {\r\n return SolanaSwapData.kindToType(this.kind);\r\n }\r\n getExpiry() {\r\n if (this.expiry.lt(EXPIRY_BLOCKHEIGHT_THRESHOLD))\r\n return null;\r\n return (0, Utils_1.toBigInt)(this.expiry);\r\n }\r\n getConfirmationsHint() {\r\n return this.confirmations;\r\n }\r\n getNonceHint() {\r\n return (0, Utils_1.toBigInt)(this.nonce);\r\n }\r\n isPayIn() {\r\n return this.payIn;\r\n }\r\n isPayOut() {\r\n return this.payOut;\r\n }\r\n getClaimHash() {\r\n return (0, Utils_1.toClaimHash)(this.paymentHash, (0, Utils_1.toBigInt)(this.nonce), this.confirmations);\r\n }\r\n getEscrowHash() {\r\n return (0, Utils_1.toEscrowHash)(this.paymentHash, this.sequence);\r\n }\r\n getSequence() {\r\n return (0, Utils_1.toBigInt)(this.sequence);\r\n }\r\n getTxoHashHint() {\r\n if (this.txoHash === \"0000000000000000000000000000000000000000000000000000000000000000\")\r\n return null; //Txo hash opt-out flag\r\n return this.txoHash;\r\n }\r\n getExtraData() {\r\n return this.txoHash;\r\n }\r\n setExtraData(txoHash) {\r\n this.txoHash = txoHash;\r\n }\r\n getSecurityDeposit() {\r\n return (0, Utils_1.toBigInt)(this.securityDeposit);\r\n }\r\n getClaimerBounty() {\r\n return (0, Utils_1.toBigInt)(this.claimerBounty);\r\n }\r\n getTotalDeposit() {\r\n return (0, Utils_1.toBigInt)(this.claimerBounty.lt(this.securityDeposit) ? this.securityDeposit : this.claimerBounty);\r\n }\r\n toSwapDataStruct() {\r\n return {\r\n kind: SwapTypeEnum_1.SwapTypeEnum.fromNumber(this.kind),\r\n confirmations: this.confirmations,\r\n nonce: this.nonce,\r\n hash: [...buffer_1.Buffer.from(this.paymentHash, \"hex\")],\r\n payIn: this.payIn,\r\n payOut: this.payOut,\r\n amount: this.amount,\r\n expiry: this.expiry,\r\n sequence: this.sequence\r\n };\r\n }\r\n correctPDA(account) {\r\n return SwapTypeEnum_1.SwapTypeEnum.toNumber(account.data.kind) === this.kind &&\r\n account.data.confirmations === this.confirmations &&\r\n this.nonce.eq(account.data.nonce) &&\r\n buffer_1.Buffer.from(account.data.hash).toString(\"hex\") === this.paymentHash &&\r\n account.data.payIn === this.payIn &&\r\n account.data.payOut === this.payOut &&\r\n this.amount.eq(account.data.amount) &&\r\n this.expiry.eq(account.data.expiry) &&\r\n this.sequence.eq(account.data.sequence) &&\r\n account.offerer.equals(this.offerer) &&\r\n (this.offererAta == null || account.offererAta.equals(this.offererAta)) &&\r\n account.claimer.equals(this.claimer) &&\r\n (this.claimerAta == null || account.claimerAta.equals(this.claimerAta)) &&\r\n account.mint.equals(this.token) &&\r\n this.claimerBounty.eq(account.claimerBounty) &&\r\n this.securityDeposit.eq(account.securityDeposit);\r\n }\r\n equals(other) {\r\n if (this.claimerAta == null && other.claimerAta != null)\r\n return false;\r\n if (this.claimerAta != null && other.claimerAta == null)\r\n return false;\r\n if (this.claimerAta != null && other.claimerAta != null) {\r\n if (!this.claimerAta.equals(other.claimerAta))\r\n return false;\r\n }\r\n if (this.offererAta == null && other.offererAta != null)\r\n return false;\r\n if (this.offererAta != null && other.offererAta == null)\r\n return false;\r\n if (this.offererAta != null && other.offererAta != null) {\r\n if (!this.offererAta.equals(other.offererAta))\r\n return false;\r\n }\r\n return other.kind === this.kind &&\r\n other.confirmations === this.confirmations &&\r\n this.nonce.eq(other.nonce) &&\r\n other.paymentHash === this.paymentHash &&\r\n this.sequence.eq(other.sequence) &&\r\n other.payIn === this.payIn &&\r\n other.payOut === this.payOut &&\r\n other.offerer.equals(this.offerer) &&\r\n other.claimer.equals(this.claimer) &&\r\n other.expiry.eq(this.expiry) &&\r\n other.amount.eq(this.amount) &&\r\n other.securityDeposit.eq(this.securityDeposit) &&\r\n other.claimerBounty.eq(this.claimerBounty) &&\r\n other.token.equals(this.token);\r\n }\r\n static fromEscrowState(account) {\r\n const data = account.data;\r\n return new SolanaSwapData(account.offerer, account.claimer, account.mint, data.amount, buffer_1.Buffer.from(data.hash).toString(\"hex\"), data.sequence, data.expiry, data.nonce, data.confirmations, data.payOut, SwapTypeEnum_1.SwapTypeEnum.toNumber(data.kind), data.payIn, account.offererAta, account.claimerAta, account.securityDeposit, account.claimerBounty, null);\r\n }\r\n static typeToKind(type) {\r\n switch (type) {\r\n case base_1.ChainSwapType.HTLC:\r\n return 0;\r\n case base_1.ChainSwapType.CHAIN:\r\n return 1;\r\n case base_1.ChainSwapType.CHAIN_NONCED:\r\n return 2;\r\n case base_1.ChainSwapType.CHAIN_TXID:\r\n return 3;\r\n }\r\n return null;\r\n }\r\n static kindToType(value) {\r\n switch (value) {\r\n case 0:\r\n return base_1.ChainSwapType.HTLC;\r\n case 1:\r\n return base_1.ChainSwapType.CHAIN;\r\n case 2:\r\n return base_1.ChainSwapType.CHAIN_NONCED;\r\n case 3:\r\n return base_1.ChainSwapType.CHAIN_TXID;\r\n }\r\n return null;\r\n }\r\n isClaimer(address) {\r\n const _address = new web3_js_1.PublicKey(address);\r\n if (this.isPayOut()) {\r\n //Also check that swapData's ATA is correct\r\n const ourAta = (0, spl_token_1.getAssociatedTokenAddressSync)(this.token, _address);\r\n if (!this.claimerAta.equals(ourAta))\r\n return false;\r\n }\r\n return this.claimer.equals(new web3_js_1.PublicKey(address));\r\n }\r\n isOfferer(address) {\r\n return this.offerer.equals(new web3_js_1.PublicKey(address));\r\n }\r\n getDepositToken() {\r\n return SolanaTokens_1.SolanaTokens.WSOL_ADDRESS.toString();\r\n }\r\n isDepositToken(token) {\r\n return SolanaTokens_1.SolanaTokens.WSOL_ADDRESS.equals(new web3_js_1.PublicKey(token));\r\n }\r\n}\r\nexports.SolanaSwapData = SolanaSwapData;\r\nbase_1.SwapData.deserializers[\"sol\"] = SolanaSwapData;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TrustedIntermediaryAPI = exports.InvoiceStatusResponseCodes = exports.AddressStatusResponseCodes = void 0;\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nconst RequestError_1 = require(\"../errors/RequestError\");\r\nconst SchemaVerifier_1 = require(\"../utils/paramcoders/SchemaVerifier\");\r\nvar AddressStatusResponseCodes;\r\n(function (AddressStatusResponseCodes) {\r\n AddressStatusResponseCodes[AddressStatusResponseCodes[\"EXPIRED\"] = 10001] = \"EXPIRED\";\r\n AddressStatusResponseCodes[AddressStatusResponseCodes[\"PAID\"] = 10000] = \"PAID\";\r\n AddressStatusResponseCodes[AddressStatusResponseCodes[\"AWAIT_PAYMENT\"] = 10010] = \"AWAIT_PAYMENT\";\r\n AddressStatusResponseCodes[AddressStatusResponseCodes[\"AWAIT_CONFIRMATION\"] = 10011] = \"AWAIT_CONFIRMATION\";\r\n AddressStatusResponseCodes[AddressStatusResponseCodes[\"PENDING\"] = 10013] = \"PENDING\";\r\n AddressStatusResponseCodes[AddressStatusResponseCodes[\"TX_SENT\"] = 10012] = \"TX_SENT\";\r\n AddressStatusResponseCodes[AddressStatusResponseCodes[\"REFUNDED\"] = 10014] = \"REFUNDED\";\r\n AddressStatusResponseCodes[AddressStatusResponseCodes[\"DOUBLE_SPENT\"] = 10015] = \"DOUBLE_SPENT\";\r\n AddressStatusResponseCodes[AddressStatusResponseCodes[\"REFUNDABLE\"] = 10016] = \"REFUNDABLE\";\r\n})(AddressStatusResponseCodes = exports.AddressStatusResponseCodes || (exports.AddressStatusResponseCodes = {}));\r\nconst TrustedFromBTCResponseSchema = {\r\n paymentHash: SchemaVerifier_1.FieldTypeEnum.String,\r\n sequence: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n btcAddress: SchemaVerifier_1.FieldTypeEnum.String,\r\n amountSats: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n swapFeeSats: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n total: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,\r\n recommendedFee: SchemaVerifier_1.FieldTypeEnum.Number,\r\n expiresAt: SchemaVerifier_1.FieldTypeEnum.Number\r\n};\r\nvar InvoiceStatusResponseCodes;\r\n(function (InvoiceStatusResponseCodes) {\r\n InvoiceStatusResponseCodes[InvoiceStatusResponseCodes[\"EXPIRED\"] = 10001] = \"EXPIRED\";\r\n InvoiceStatusResponseCodes[InvoiceStatusResponseCodes[\"PAID\"] = 10000] = \"PAID\";\r\n InvoiceStatusResponseCodes[InvoiceStatusResponseCodes[\"AWAIT_PAYMENT\"] = 10010] = \"AWAIT_PAYMENT\";\r\n InvoiceStatusResponseCodes[InvoiceStatusResponseCodes[\"PENDING\"] = 10011] = \"PENDING\";\r\n InvoiceStatusResponseCodes[InvoiceStatusResponseCodes[\"TX_SENT\"] = 10012] = \"TX_SENT\";\r\n})(InvoiceStatusResponseCodes = exports.InvoiceStatusResponseCodes || (exports.InvoiceStatusResponseCodes = {}));\r\nconst TrustedFromBTCLNResponseSchema = {\r\n pr: SchemaVerifier_1.FieldTypeEnum.String,\r\n swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,\r\n total: SchemaVerifier_1.FieldTypeEnum.BigInt\r\n};\r\nclass TrustedIntermediaryAPI {\r\n /**\r\n * Fetches the invoice status from the intermediary node\r\n *\r\n * @param url Url of the trusted intermediary\r\n * @param paymentHash Payment hash of the lightning invoice\r\n * @param timeout Timeout in milliseconds\r\n * @param abortSignal\r\n * @throws {RequestError} if non-200 http response is returned\r\n */\r\n static async getInvoiceStatus(url, paymentHash, timeout, abortSignal) {\r\n return (0, Utils_1.tryWithRetries)(() => (0, Utils_1.httpGet)(url + \"/getInvoiceStatus?paymentHash=\" + encodeURIComponent(paymentHash), timeout, abortSignal), null, RequestError_1.RequestError, abortSignal);\r\n }\r\n /**\r\n * Initiate a trusted swap from BTCLN to SC native currency, retries!\r\n *\r\n * @param chainIdentifier\r\n * @param baseUrl Base url of the trusted swap intermediary\r\n * @param init Initialization parameters\r\n * @param timeout Timeout in milliseconds for the request\r\n * @param abortSignal\r\n * @throws {RequestError} If the response is non-200\r\n */\r\n static async initTrustedFromBTCLN(chainIdentifier, baseUrl, init, timeout, abortSignal) {\r\n const resp = await (0, Utils_1.tryWithRetries)(() => (0, Utils_1.httpGet)(baseUrl + \"/lnforgas/createInvoice\" +\r\n \"?address=\" + encodeURIComponent(init.address) +\r\n \"&amount=\" + encodeURIComponent(init.amount.toString(10)) +\r\n \"&chain=\" + encodeURIComponent(chainIdentifier) +\r\n \"&token=\" + encodeURIComponent(init.token), timeout, abortSignal), null, RequestError_1.RequestError, abortSignal);\r\n if (resp.code !== 10000)\r\n throw RequestError_1.RequestError.parse(JSON.stringify(resp), 400);\r\n return (0, SchemaVerifier_1.verifySchema)(resp.data, TrustedFromBTCLNResponseSchema);\r\n }\r\n /**\r\n * Fetches the address status from the intermediary node\r\n *\r\n * @param url Url of the trusted intermediary\r\n * @param paymentHash Payment hash of the swap\r\n * @param sequence Sequence number of the swap\r\n * @param timeout Timeout in milliseconds\r\n * @param abortSignal\r\n * @throws {RequestError} if non-200 http response is returned\r\n */\r\n static async getAddressStatus(url, paymentHash, sequence, timeout, abortSignal) {\r\n return (0, Utils_1.tryWithRetries)(() => (0, Utils_1.httpGet)(url + \"/getAddressStatus?paymentHash=\" + encodeURIComponent(paymentHash) + \"&sequence=\" + encodeURIComponent(sequence.toString(10)), timeout, abortSignal), null, RequestError_1.RequestError, abortSignal);\r\n }\r\n /**\r\n * Sets the refund address for an on-chain gas swap\r\n *\r\n * @param url Url of the trusted intermediary\r\n * @param paymentHash Payment hash of the swap\r\n * @param sequence Sequence number of the swap\r\n * @param refundAddress Refund address to set for the swap\r\n * @param timeout Timeout in milliseconds\r\n * @param abortSignal\r\n * @throws {RequestError} if non-200 http response is returned\r\n */\r\n static async setRefundAddress(url, paymentHash, sequence, refundAddress, timeout, abortSignal) {\r\n return (0, Utils_1.tryWithRetries)(() => (0, Utils_1.httpGet)(url + \"/setRefundAddress\" +\r\n \"?paymentHash=\" + encodeURIComponent(paymentHash) +\r\n \"&sequence=\" + encodeURIComponent(sequence.toString(10)) +\r\n \"&refundAddress=\" + encodeURIComponent(refundAddress), timeout, abortSignal), null, RequestError_1.RequestError, abortSignal);\r\n }\r\n /**\r\n * Initiate a trusted swap from BTC to SC native currency, retries!\r\n *\r\n * @param chainIdentifier\r\n * @param baseUrl Base url of the trusted swap intermediary\r\n * @param init Initialization parameters\r\n * @param timeout Timeout in milliseconds for the request\r\n * @param abortSignal\r\n * @throws {RequestError} If the response is non-200\r\n */\r\n static async initTrustedFromBTC(chainIdentifier, baseUrl, init, timeout, abortSignal) {\r\n const resp = await (0, Utils_1.tryWithRetries)(() => (0, Utils_1.httpGet)(baseUrl + \"/frombtc_trusted/getAddress?chain=\" + encodeURIComponent(chainIdentifier) +\r\n \"&address=\" + encodeURIComponent(init.address) +\r\n \"&amount=\" + encodeURIComponent(init.amount.toString(10)) +\r\n \"&refundAddress=\" + encodeURIComponent(init.refundAddress) +\r\n \"&exactIn=true\" +\r\n \"&token=\" + encodeURIComponent(init.token), timeout, abortSignal), null, RequestError_1.RequestError, abortSignal);\r\n if (resp.code !== 10000)\r\n throw RequestError_1.RequestError.parse(JSON.stringify(resp), 400);\r\n return (0, SchemaVerifier_1.verifySchema)(resp.data, TrustedFromBTCResponseSchema);\r\n }\r\n}\r\nexports.TrustedIntermediaryAPI = TrustedIntermediaryAPI;\r\n",null,"let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","import { struct } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport { PublicKey } from '@solana/web3.js';\nimport type { Mint } from '../../state/mint.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\n/** MetadataPointer as stored by the program */\nexport interface MetadataPointer {\n /** Optional authority that can set the metadata address */\n authority: PublicKey | null;\n /** Optional Account Address that holds the metadata */\n metadataAddress: PublicKey | null;\n}\n\n/** Buffer layout for de/serializing a Metadata Pointer extension */\nexport const MetadataPointerLayout = struct<{ authority: PublicKey; metadataAddress: PublicKey }>([\n publicKey('authority'),\n publicKey('metadataAddress'),\n]);\n\nexport const METADATA_POINTER_SIZE = MetadataPointerLayout.span;\n\nexport function getMetadataPointerState(mint: Mint): Partial | null {\n const extensionData = getExtensionData(ExtensionType.MetadataPointer, mint.tlvData);\n if (extensionData !== null) {\n const { authority, metadataAddress } = MetadataPointerLayout.decode(extensionData);\n\n // Explicity set None/Zero keys to null\n return {\n authority: authority.equals(PublicKey.default) ? null : authority,\n metadataAddress: metadataAddress.equals(PublicKey.default) ? null : metadataAddress,\n };\n } else {\n return null;\n }\n}\n","export * from './accountType.js';\nexport * from './cpiGuard/index.js';\nexport * from './defaultAccountState/index.js';\nexport * from './extensionType.js';\nexport * from './immutableOwner.js';\nexport * from './interestBearingMint/index.js';\nexport * from './memoTransfer/index.js';\nexport * from './metadataPointer/index.js';\nexport * from './mintCloseAuthority.js';\nexport * from './nonTransferable.js';\nexport * from './transferFee/index.js';\nexport * from './permanentDelegate.js';\nexport * from './transferHook/index.js';\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HashlockClaimHandler = void 0;\r\nconst Utils_1 = require(\"../../../../utils/Utils\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst createHash = require(\"create-hash\");\r\nclass HashlockClaimHandler {\r\n constructor(address) {\r\n this.address = address;\r\n }\r\n getCommitment(data) {\r\n if (data.length !== 32)\r\n throw new Error(\"Invalid swap hash\");\r\n return starknet_1.hash.computePoseidonHashOnElements((0, Utils_1.bufferToU32Array)(data));\r\n }\r\n getWitness(signer, data, witnessData) {\r\n if (!data.isClaimHandler(this.address))\r\n throw new Error(\"Invalid claim handler\");\r\n if (witnessData.length !== 64)\r\n throw new Error(\"Invalid hash secret: string length\");\r\n const buffer = buffer_1.Buffer.from(witnessData, \"hex\");\r\n if (buffer.length !== 32)\r\n throw new Error(\"Invalid hash secret: buff length\");\r\n const witnessSha256 = createHash(\"sha256\").update(buffer).digest();\r\n if (!data.isClaimData((0, Utils_1.toHex)(this.getCommitment(witnessSha256))))\r\n throw new Error(\"Invalid hash secret: poseidon hash doesn't match\");\r\n const witnessArray = (0, Utils_1.bufferToU32Array)(buffer);\r\n return Promise.resolve({ initialTxns: [], witness: witnessArray });\r\n }\r\n getGas() {\r\n return HashlockClaimHandler.gas;\r\n }\r\n getType() {\r\n return HashlockClaimHandler.type;\r\n }\r\n parseWitnessResult(result) {\r\n return (0, Utils_1.u32ArrayToBuffer)(result).toString(\"hex\");\r\n }\r\n}\r\nexports.HashlockClaimHandler = HashlockClaimHandler;\r\nHashlockClaimHandler.type = base_1.ChainSwapType.HTLC;\r\nHashlockClaimHandler.gas = { l1: 750 };\r\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nexport type Hex = Uint8Array | string; // hex strings are accepted for simplicity\nexport type PrivKey = Hex | bigint; // bigints are accepted to ease learning curve\nexport type CHash = {\n (message: Uint8Array | string): Uint8Array;\n blockLen: number;\n outputLen: number;\n create(opts?: { dkLen?: number }): any; // For shake\n};\nexport type FHash = (message: Uint8Array | string) => Uint8Array;\n\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!isBytes(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\nexport function numberToHexUnpadded(num: number | bigint): string {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\n\nexport function hexToNumber(hex: string): bigint {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes: Uint8Array): bigint {\n if (!isBytes(bytes)) throw new Error('Uint8Array expected');\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\n\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n: number | bigint, len: number): Uint8Array {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n: number | bigint): Uint8Array {\n return hexToBytes(numberToHexUnpadded(n));\n}\n\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title: string, hex: Hex, expectedLength?: number): Uint8Array {\n let res: Uint8Array;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n } catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n } else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n } else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a)) throw new Error('Uint8Array expected');\n sum += a.length;\n }\n let res = new Uint8Array(sum);\n let pad = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a: Uint8Array, b: Uint8Array) {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n return diff === 0;\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n// Bit operations\n\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n: bigint) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1);\n return len;\n}\n\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n: bigint, pos: number) {\n return (n >> BigInt(pos)) & _1n;\n}\n\n/**\n * Sets single bit at position.\n */\nexport const bitSet = (n: bigint, pos: number, value: boolean) => {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n};\n\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n: number) => (_2n << BigInt(n - 1)) - _1n;\n\n// DRBG\n\nconst u8n = (data?: any) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr: any) => Uint8Array.from(arr); // another shortcut\ntype Pred = (v: Uint8Array) => T | undefined;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(\n hashLen: number,\n qByteLen: number,\n hmacFn: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array\n): (seed: Uint8Array, predicate: Pred) => T {\n if (typeof hashLen !== 'number' || hashLen < 2) throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2) throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function') throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b: Uint8Array[]) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0) return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000) throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out: Uint8Array[] = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed: Uint8Array, pred: Pred): T => {\n reset();\n reseed(seed); // Steps D-G\n let res: T | undefined = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen()))) reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n\n// Validating curves and fields\n\nconst validatorFns = {\n bigint: (val: any) => typeof val === 'bigint',\n function: (val: any) => typeof val === 'function',\n boolean: (val: any) => typeof val === 'boolean',\n string: (val: any) => typeof val === 'string',\n stringOrUint8Array: (val: any) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val: any) => Number.isSafeInteger(val),\n array: (val: any) => Array.isArray(val),\n field: (val: any, object: any) => (object as any).Fp.isValid(val),\n hash: (val: any) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n} as const;\ntype Validator = keyof typeof validatorFns;\ntype ValMap> = { [K in keyof T]?: Validator };\n// type Record = { [P in K]: T; }\n\nexport function validateObject>(\n object: T,\n validators: ValMap,\n optValidators: ValMap = {}\n) {\n const checkField = (fieldName: keyof T, type: Validator, isOptional: boolean) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n\n const val = object[fieldName as keyof typeof object];\n if (isOptional && val === undefined) return;\n if (!checkVal(val, object)) {\n throw new Error(\n `Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`\n );\n }\n };\n for (const [fieldName, type] of Object.entries(validators)) checkField(fieldName, type!, false);\n for (const [fieldName, type] of Object.entries(optValidators)) checkField(fieldName, type!, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ClaimEvent = void 0;\r\nconst SwapEvent_1 = require(\"./SwapEvent\");\r\nclass ClaimEvent extends SwapEvent_1.SwapEvent {\r\n constructor(escrowHash, result) {\r\n super(escrowHash);\r\n this.result = result;\r\n }\r\n}\r\nexports.ClaimEvent = ClaimEvent;\r\n","import type { Coder as BaseCoder } from '@scure/base';\nimport { hex as baseHex, utf8 } from '@scure/base';\n\n/**\n * Define complex binary structures using composable primitives.\n * Main ideas:\n * - Encode / decode can be chained, same as in `scure-base`\n * - A complex structure can be created from an array and struct of primitive types\n * - Strings / bytes are arrays with specific optimizations: we can just read bytes directly\n * without creating plain array first and reading each byte separately.\n * - Types are inferred from definition\n * @module\n * @example\n * import * as P from 'micro-packed';\n * const s = P.struct({\n * field1: P.U32BE, // 32-bit unsigned big-endian integer\n * field2: P.string(P.U8), // String with U8 length prefix\n * field3: P.bytes(32), // 32 bytes\n * field4: P.array(P.U16BE, P.struct({ // Array of structs with U16BE length\n * subField1: P.U64BE, // 64-bit unsigned big-endian integer\n * subField2: P.string(10) // 10-byte string\n * }))\n * });\n */\n\n// TODO: remove dependency on scure-base & inline?\n\n/*\nExports can be groupped like this:\n\n- Primitive types: P.bytes, P.string, P.hex, P.constant, P.pointer\n- Complex types: P.array, P.struct, P.tuple, P.map, P.tag, P.mappedTag\n- Padding, prefix, magic: P.padLeft, P.padRight, P.prefix, P.magic, P.magicBytes\n- Flags: P.flag, P.flagged, P.optional\n- Wrappers: P.apply, P.wrap, P.lazy\n- Bit fiddling: P.bits, P.bitset\n- utils: P.validate, coders.decimal\n- Debugger\n*/\n\n/** Shortcut to zero-length (empty) byte array */\nexport const EMPTY: Uint8Array = /* @__PURE__ */ new Uint8Array();\n/** Shortcut to one-element (element is 0) byte array */\nexport const NULL: Uint8Array = /* @__PURE__ */ new Uint8Array([0]);\n\n/** Checks if two Uint8Arrays are equal. Not constant-time. */\nfunction equalBytes(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;\n return true;\n}\n/** Checks if the given value is a Uint8Array. */\nfunction isBytes(a: unknown): a is Bytes {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/**\n * Concatenates multiple Uint8Arrays.\n * Engines limit functions to 65K+ arguments.\n * @param arrays Array of Uint8Array elements\n * @returns Concatenated Uint8Array\n */\nfunction concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a)) throw new Error('Uint8Array expected');\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n/**\n * Creates DataView from Uint8Array\n * @param arr - bytes\n * @returns DataView\n */\nconst createView = (arr: Uint8Array) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n/**\n * Checks if the provided value is a plain object, not created from any class or special constructor.\n * Array, Uint8Array and others are not plain objects.\n * @param obj - The value to be checked.\n */\nfunction isPlainObject(obj: any): boolean {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nfunction isNum(num: unknown): num is number {\n return Number.isSafeInteger(num);\n}\n\nexport const utils: {\n equalBytes: typeof equalBytes;\n isBytes: typeof isBytes;\n isCoder: typeof isCoder;\n checkBounds: typeof checkBounds;\n concatBytes: typeof concatBytes;\n createView: (arr: Uint8Array) => DataView;\n isPlainObject: typeof isPlainObject;\n} = {\n equalBytes,\n isBytes,\n isCoder,\n checkBounds,\n concatBytes,\n createView,\n isPlainObject,\n};\n\n// Types\nexport type Bytes = Uint8Array;\nexport type Option = T | undefined;\n/**\n * Coder encodes and decodes between two types.\n * @property {(from: F) => T} encode - Encodes (converts) F to T\n * @property {(to: T) => F} decode - Decodes (converts) T to F\n */\nexport interface Coder {\n encode(from: F): T;\n decode(to: T): F;\n}\n/**\n * BytesCoder converts value between a type and a byte array\n * @property {number} [size] - Size hint for the element.\n * @property {(data: T) => Bytes} encode - Encodes a value of type T to a byte array\n * @property {(data: Bytes, opts?: ReaderOpts) => T} decode - Decodes a byte array to a value of type T\n */\nexport interface BytesCoder extends Coder {\n size?: number; // Size hint element\n encode: (data: T) => Bytes;\n decode: (data: Bytes, opts?: ReaderOpts) => T;\n}\n/**\n * BytesCoderStream converts value between a type and a byte array, using streams.\n * @property {number} [size] - Size hint for the element.\n * @property {(w: Writer, value: T) => void} encodeStream - Encodes a value of type T to a byte array using a Writer stream.\n * @property {(r: Reader) => T} decodeStream - Decodes a byte array to a value of type T using a Reader stream.\n */\nexport interface BytesCoderStream {\n size?: number;\n encodeStream: (w: Writer, value: T) => void;\n decodeStream: (r: Reader) => T;\n}\nexport type CoderType = BytesCoderStream & BytesCoder;\nexport type Sized = CoderType & { size: number };\nexport type UnwrapCoder = T extends CoderType ? U : T;\n/**\n * Validation function. Should return value after validation.\n * Can be used to narrow types\n */\nexport type Validate = (elm: T) => T;\n\nexport type Length = CoderType | CoderType | number | Bytes | string | null;\n\n// NOTE: we can't have terminator separate function, since it won't know about boundaries\n// E.g. array of U16LE ([1,2,3]) would be [1, 0, 2, 0, 3, 0]\n// But terminator will find array at index '1', which happens to be inside of an element itself\n/**\n * Can be:\n * - Dynamic (CoderType)\n * - Fixed (number)\n * - Terminated (usually zero): Uint8Array with terminator\n * - Field path to field with length (string)\n * - Infinity (null) - decodes until end of buffer\n * Used in:\n * - bytes (string, prefix is implementation of bytes)\n * - array\n */\nconst lengthCoder = (len: Length) => {\n if (len !== null && typeof len !== 'string' && !isCoder(len) && !isBytes(len) && !isNum(len)) {\n throw new Error(\n `lengthCoder: expected null | number | Uint8Array | CoderType, got ${len} (${typeof len})`\n );\n }\n return {\n encodeStream(w: Writer, value: number | null) {\n if (len === null) return;\n if (isCoder(len)) return len.encodeStream(w, value);\n let byteLen;\n if (typeof len === 'number') byteLen = len;\n else if (typeof len === 'string') byteLen = Path.resolve((w as _Writer).stack, len);\n if (typeof byteLen === 'bigint') byteLen = Number(byteLen);\n if (byteLen === undefined || byteLen !== value)\n throw w.err(`Wrong length: ${byteLen} len=${len} exp=${value} (${typeof value})`);\n },\n decodeStream(r: Reader) {\n let byteLen;\n if (isCoder(len)) byteLen = Number(len.decodeStream(r));\n else if (typeof len === 'number') byteLen = len;\n else if (typeof len === 'string') byteLen = Path.resolve((r as _Reader).stack, len);\n if (typeof byteLen === 'bigint') byteLen = Number(byteLen);\n if (typeof byteLen !== 'number') throw r.err(`Wrong length: ${byteLen}`);\n return byteLen;\n },\n };\n};\n\ntype ArrLike = Array | ReadonlyArray;\n// prettier-ignore\nexport type TypedArray =\n | Uint8Array | Int8Array | Uint8ClampedArray\n | Uint16Array | Int16Array\n | Uint32Array | Int32Array;\n\n/** Writable version of a type, where readonly properties are made writable. */\nexport type Writable = T extends {}\n ? T extends TypedArray\n ? T\n : {\n -readonly [P in keyof T]: Writable;\n }\n : T;\nexport type Values = T[keyof T];\nexport type NonUndefinedKey = T[K] extends undefined ? never : K;\nexport type NullableKey = T[K] extends NonNullable ? never : K;\n// Opt: value !== undefined, but value === T|undefined\nexport type OptKey = NullableKey & NonUndefinedKey;\nexport type ReqKey = T[K] extends NonNullable ? K : never;\n\nexport type OptKeys = Pick }[keyof T]>;\nexport type ReqKeys = Pick }[keyof T]>;\nexport type StructInput> = { [P in keyof ReqKeys]: T[P] } & {\n [P in keyof OptKeys]?: T[P];\n};\nexport type StructRecord> = {\n [P in keyof T]: CoderType;\n};\n\nexport type StructOut = Record;\n/** Padding function that takes an index and returns a padding value. */\nexport type PadFn = (i: number) => number;\n\n/**\n * Small bitset structure to store position of ranges that have been read.\n * Can be more efficient when internal trees are utilized at the cost of complexity.\n * Needs `O(N/8)` memory for parsing.\n * Purpose: if there are pointers in parsed structure,\n * they can cause read of two distinct ranges:\n * [0-32, 64-128], which means 'pos' is not enough to handle them\n */\nconst Bitset = {\n BITS: 32,\n FULL_MASK: -1 >>> 0, // 1<<32 will overflow\n len: (len: number) => Math.ceil(len / 32),\n create: (len: number) => new Uint32Array(Bitset.len(len)),\n clean: (bs: Uint32Array) => bs.fill(0),\n debug: (bs: Uint32Array) => Array.from(bs).map((i) => (i >>> 0).toString(2).padStart(32, '0')),\n checkLen: (bs: Uint32Array, len: number) => {\n if (Bitset.len(len) === bs.length) return;\n throw new Error(`wrong length=${bs.length}. Expected: ${Bitset.len(len)}`);\n },\n chunkLen: (bsLen: number, pos: number, len: number) => {\n if (pos < 0) throw new Error(`wrong pos=${pos}`);\n if (pos + len > bsLen) throw new Error(`wrong range=${pos}/${len} of ${bsLen}`);\n },\n set: (bs: Uint32Array, chunk: number, value: number, allowRewrite = true) => {\n if (!allowRewrite && (bs[chunk] & value) !== 0) return false;\n bs[chunk] |= value;\n return true;\n },\n pos: (pos: number, i: number) => ({\n chunk: Math.floor((pos + i) / 32),\n mask: 1 << (32 - ((pos + i) % 32) - 1),\n }),\n indices: (bs: Uint32Array, len: number, invert = false) => {\n Bitset.checkLen(bs, len);\n const { FULL_MASK, BITS } = Bitset;\n const left = BITS - (len % BITS);\n const lastMask = left ? (FULL_MASK >>> left) << left : FULL_MASK;\n const res = [];\n for (let i = 0; i < bs.length; i++) {\n let c = bs[i];\n if (invert) c = ~c; // allows to gen unset elements\n // apply mask to last element, so we won't iterate non-existent items\n if (i === bs.length - 1) c &= lastMask;\n if (c === 0) continue; // fast-path\n for (let j = 0; j < BITS; j++) {\n const m = 1 << (BITS - j - 1);\n if (c & m) res.push(i * BITS + j);\n }\n }\n return res;\n },\n range: (arr: number[]) => {\n const res = [];\n let cur;\n for (const i of arr) {\n if (cur === undefined || i !== cur.pos + cur.length) res.push((cur = { pos: i, length: 1 }));\n else cur.length += 1;\n }\n return res;\n },\n rangeDebug: (bs: Uint32Array, len: number, invert = false) =>\n `[${Bitset.range(Bitset.indices(bs, len, invert))\n .map((i) => `(${i.pos}/${i.length})`)\n .join(', ')}]`,\n setRange: (bs: Uint32Array, bsLen: number, pos: number, len: number, allowRewrite = true) => {\n Bitset.chunkLen(bsLen, pos, len);\n const { FULL_MASK, BITS } = Bitset;\n // Try to set range with maximum efficiency:\n // - first chunk is always '0000[1111]' (only right ones)\n // - middle chunks are set to '[1111 1111]' (all ones)\n // - last chunk is always '[1111]0000' (only left ones)\n // - max operations: (N/32) + 2 (first and last)\n const first = pos % BITS ? Math.floor(pos / BITS) : undefined;\n const lastPos = pos + len;\n const last = lastPos % BITS ? Math.floor(lastPos / BITS) : undefined;\n // special case, whole range inside single chunk\n if (first !== undefined && first === last)\n return Bitset.set(\n bs,\n first,\n (FULL_MASK >>> (BITS - len)) << (BITS - len - pos),\n allowRewrite\n );\n if (first !== undefined) {\n if (!Bitset.set(bs, first, FULL_MASK >>> pos % BITS, allowRewrite)) return false; // first chunk\n }\n // middle chunks\n const start = first !== undefined ? first + 1 : pos / BITS;\n const end = last !== undefined ? last : lastPos / BITS;\n for (let i = start; i < end; i++) if (!Bitset.set(bs, i, FULL_MASK, allowRewrite)) return false;\n if (last !== undefined && first !== last)\n if (!Bitset.set(bs, last, FULL_MASK << (BITS - (lastPos % BITS)), allowRewrite)) return false; // last chunk\n return true;\n },\n};\n\n/** Path related utils (internal) */\ntype Path = { obj: StructOut; field?: string };\ntype PathStack = Path[];\nexport type _PathObjFn = (cb: (field: string, fieldFn: Function) => void) => void;\nconst Path = {\n /**\n * Internal method for handling stack of paths (debug, errors, dynamic fields via path)\n * This is looks ugly (callback), but allows us to force stack cleaning by construction (.pop always after function).\n * Also, this makes impossible:\n * - pushing field when stack is empty\n * - pushing field inside of field (real bug)\n * NOTE: we don't want to do '.pop' on error!\n */\n pushObj: (stack: PathStack, obj: StructOut, objFn: _PathObjFn): void => {\n const last: Path = { obj };\n stack.push(last);\n objFn((field: string, fieldFn: Function) => {\n last.field = field;\n fieldFn();\n last.field = undefined;\n });\n stack.pop();\n },\n path: (stack: PathStack): string => {\n const res = [];\n for (const i of stack) if (i.field !== undefined) res.push(i.field);\n return res.join('/');\n },\n err: (name: string, stack: PathStack, msg: string | Error): Error => {\n const err = new Error(\n `${name}(${Path.path(stack)}): ${typeof msg === 'string' ? msg : msg.message}`\n );\n if (msg instanceof Error && msg.stack) err.stack = msg.stack;\n return err;\n },\n resolve: (stack: PathStack, path: string): StructOut | undefined => {\n const parts = path.split('/');\n const objPath = stack.map((i) => i.obj);\n let i = 0;\n for (; i < parts.length; i++) {\n if (parts[i] === '..') objPath.pop();\n else break;\n }\n let cur = objPath.pop();\n for (; i < parts.length; i++) {\n if (!cur || cur[parts[i]] === undefined) return undefined;\n cur = cur[parts[i]];\n }\n return cur;\n },\n};\n\n/**\n * Options for the Reader class.\n * @property {boolean} [allowUnreadBytes: false] - If there are remaining unparsed bytes, the decoding is probably wrong.\n * @property {boolean} [allowMultipleReads: false] - The check enforces parser termination. If pointers can read the same region of memory multiple times, you can cause combinatorial explosion by creating an array of pointers to the same address and cause DoS.\n */\nexport type ReaderOpts = {\n allowUnreadBytes?: boolean;\n allowMultipleReads?: boolean;\n};\n// These are safe API for external usage\nexport type Reader = {\n // Utils\n /** Current position in the buffer. */\n readonly pos: number;\n /** Number of bytes left in the buffer. */\n readonly leftBytes: number;\n /** Total number of bytes in the buffer. */\n readonly totalBytes: number;\n /** Checks if the end of the buffer has been reached. */\n isEnd(): boolean;\n /**\n * Creates an error with the given message. Adds information about current field path.\n * If Error object provided, saves original stack trace.\n * @param msg - The error message or an Error object.\n * @returns The created Error object.\n */\n err(msg: string | Error): Error;\n /**\n * Reads a specified number of bytes from the buffer.\n *\n * WARNING: Uint8Array is subarray of original buffer. Do not modify.\n * @param n - The number of bytes to read.\n * @param peek - If `true`, the bytes are read without advancing the position.\n * @returns The read bytes as a Uint8Array.\n */\n bytes(n: number, peek?: boolean): Uint8Array;\n /**\n * Reads a single byte from the buffer.\n * @param peek - If `true`, the byte is read without advancing the position.\n * @returns The read byte as a number.\n */\n byte(peek?: boolean): number;\n /**\n * Reads a specified number of bits from the buffer.\n * @param bits - The number of bits to read.\n * @returns The read bits as a number.\n */\n bits(bits: number): number;\n /**\n * Finds the first occurrence of a needle in the buffer.\n * @param needle - The needle to search for.\n * @param pos - The starting position for the search.\n * @returns The position of the first occurrence of the needle, or `undefined` if not found.\n */\n find(needle: Bytes, pos?: number): number | undefined;\n /**\n * Creates a new Reader instance at the specified offset.\n * Complex and unsafe API: currently only used in eth ABI parsing of pointers.\n * Required to break pointer boundaries inside arrays for complex structure.\n * Please use only if absolutely necessary!\n * @param n - The offset to create the new Reader at.\n * @returns A new Reader instance at the specified offset.\n */\n offsetReader(n: number): Reader;\n};\n\nexport type Writer = {\n /**\n * Creates an error with the given message. Adds information about current field path.\n * If Error object provided, saves original stack trace.\n * @param msg - The error message or an Error object.\n * @returns The created Error object.\n */\n err(msg: string | Error): Error;\n /**\n * Writes a byte array to the buffer.\n * @param b - The byte array to write.\n */\n bytes(b: Bytes): void;\n /**\n * Writes a single byte to the buffer.\n * @param b - The byte to write.\n */\n byte(b: number): void;\n /**\n * Writes a specified number of bits to the buffer.\n * @param value - The value to write.\n * @param bits - The number of bits to write.\n */\n bits(value: number, bits: number): void;\n};\n\n/**\n * Internal structure. Reader class for reading from a byte array.\n * `stack` is internal: for debugger and logging\n * @class Reader\n */\nclass _Reader implements Reader {\n pos = 0;\n private bitBuf = 0;\n private bitPos = 0;\n private bs: Uint32Array | undefined; // bitset\n private view: DataView;\n constructor(\n readonly data: Bytes,\n readonly opts: ReaderOpts = {},\n readonly stack: PathStack = [],\n private parent: _Reader | undefined = undefined,\n private parentOffset: number = 0\n ) {\n this.view = createView(data);\n }\n /** Internal method for pointers. */\n _enablePointers(): void {\n if (this.parent) return this.parent._enablePointers();\n if (this.bs) return;\n this.bs = Bitset.create(this.data.length);\n Bitset.setRange(this.bs, this.data.length, 0, this.pos, this.opts.allowMultipleReads);\n }\n private markBytesBS(pos: number, len: number): boolean {\n if (this.parent) return this.parent.markBytesBS(this.parentOffset + pos, len);\n if (!len) return true;\n if (!this.bs) return true;\n return Bitset.setRange(this.bs, this.data.length, pos, len, false);\n }\n private markBytes(len: number): boolean {\n const pos = this.pos;\n this.pos += len;\n const res = this.markBytesBS(pos, len);\n if (!this.opts.allowMultipleReads && !res)\n throw this.err(`multiple read pos=${this.pos} len=${len}`);\n return res;\n }\n\n pushObj(obj: StructOut, objFn: _PathObjFn): void {\n return Path.pushObj(this.stack, obj, objFn);\n }\n readView(n: number, fn: (view: DataView, pos: number) => number): number {\n if (!Number.isFinite(n)) throw this.err(`readView: wrong length=${n}`);\n if (this.pos + n > this.data.length) throw this.err('readView: Unexpected end of buffer');\n const res = fn(this.view, this.pos);\n this.markBytes(n);\n return res;\n }\n // read bytes by absolute offset\n absBytes(n: number): Uint8Array {\n if (n > this.data.length) throw new Error('Unexpected end of buffer');\n return this.data.subarray(n);\n }\n finish(): void {\n if (this.opts.allowUnreadBytes) return;\n if (this.bitPos) {\n throw this.err(\n `${this.bitPos} bits left after unpack: ${baseHex.encode(this.data.slice(this.pos))}`\n );\n }\n if (this.bs && !this.parent) {\n const notRead = Bitset.indices(this.bs, this.data.length, true);\n if (notRead.length) {\n const formatted = Bitset.range(notRead)\n .map(\n ({ pos, length }) =>\n `(${pos}/${length})[${baseHex.encode(this.data.subarray(pos, pos + length))}]`\n )\n .join(', ');\n throw this.err(`unread byte ranges: ${formatted} (total=${this.data.length})`);\n } else return; // all bytes read, everything is ok\n }\n // Default: no pointers enabled\n if (!this.isEnd()) {\n throw this.err(\n `${this.leftBytes} bytes ${this.bitPos} bits left after unpack: ${baseHex.encode(\n this.data.slice(this.pos)\n )}`\n );\n }\n }\n // User methods\n err(msg: string | Error): Error {\n return Path.err('Reader', this.stack, msg);\n }\n offsetReader(n: number): _Reader {\n if (n > this.data.length) throw this.err('offsetReader: Unexpected end of buffer');\n return new _Reader(this.absBytes(n), this.opts, this.stack, this, n);\n }\n bytes(n: number, peek = false): Uint8Array {\n if (this.bitPos) throw this.err('readBytes: bitPos not empty');\n if (!Number.isFinite(n)) throw this.err(`readBytes: wrong length=${n}`);\n if (this.pos + n > this.data.length) throw this.err('readBytes: Unexpected end of buffer');\n const slice = this.data.subarray(this.pos, this.pos + n);\n if (!peek) this.markBytes(n);\n return slice;\n }\n byte(peek = false): number {\n if (this.bitPos) throw this.err('readByte: bitPos not empty');\n if (this.pos + 1 > this.data.length) throw this.err('readBytes: Unexpected end of buffer');\n const data = this.data[this.pos];\n if (!peek) this.markBytes(1);\n return data;\n }\n get leftBytes(): number {\n return this.data.length - this.pos;\n }\n get totalBytes(): number {\n return this.data.length;\n }\n isEnd(): boolean {\n return this.pos >= this.data.length && !this.bitPos;\n }\n // bits are read in BE mode (left to right): (0b1000_0000).readBits(1) == 1\n bits(bits: number): number {\n if (bits > 32) throw this.err('BitReader: cannot read more than 32 bits in single call');\n let out = 0;\n while (bits) {\n if (!this.bitPos) {\n this.bitBuf = this.byte();\n this.bitPos = 8;\n }\n const take = Math.min(bits, this.bitPos);\n this.bitPos -= take;\n out = (out << take) | ((this.bitBuf >> this.bitPos) & (2 ** take - 1));\n this.bitBuf &= 2 ** this.bitPos - 1;\n bits -= take;\n }\n // Fix signed integers\n return out >>> 0;\n }\n find(needle: Bytes, pos: number = this.pos): number | undefined {\n if (!isBytes(needle)) throw this.err(`find: needle is not bytes! ${needle}`);\n if (this.bitPos) throw this.err('findByte: bitPos not empty');\n if (!needle.length) throw this.err(`find: needle is empty`);\n // indexOf should be faster than full equalBytes check\n for (let idx = pos; (idx = this.data.indexOf(needle[0], idx)) !== -1; idx++) {\n if (idx === -1) return;\n const leftBytes = this.data.length - idx;\n if (leftBytes < needle.length) return;\n if (equalBytes(needle, this.data.subarray(idx, idx + needle.length))) return idx;\n }\n return;\n }\n}\n\n/**\n * Internal structure. Writer class for writing to a byte array.\n * The `stack` argument of constructor is internal, for debugging and logs.\n * @class Writer\n */\nclass _Writer implements Writer {\n pos: number = 0;\n // We could have a single buffer here and re-alloc it with\n // x1.5-2 size each time it full, but it will be slower:\n // basic/encode bench: 395ns -> 560ns\n private buffers: Bytes[] = [];\n ptrs: { pos: number; ptr: CoderType; buffer: Bytes }[] = [];\n private bitBuf = 0;\n private bitPos = 0;\n private viewBuf = new Uint8Array(8);\n private view: DataView;\n private finished = false;\n constructor(readonly stack: PathStack = []) {\n this.view = createView(this.viewBuf);\n }\n pushObj(obj: StructOut, objFn: _PathObjFn): void {\n return Path.pushObj(this.stack, obj, objFn);\n }\n writeView(len: number, fn: (view: DataView) => void): void {\n if (this.finished) throw this.err('buffer: finished');\n if (!isNum(len) || len > 8) throw new Error(`wrong writeView length=${len}`);\n fn(this.view);\n this.bytes(this.viewBuf.slice(0, len));\n this.viewBuf.fill(0);\n }\n // User methods\n err(msg: string | Error): Error {\n if (this.finished) throw this.err('buffer: finished');\n return Path.err('Reader', this.stack, msg);\n }\n bytes(b: Bytes): void {\n if (this.finished) throw this.err('buffer: finished');\n if (this.bitPos) throw this.err('writeBytes: ends with non-empty bit buffer');\n this.buffers.push(b);\n this.pos += b.length;\n }\n byte(b: number): void {\n if (this.finished) throw this.err('buffer: finished');\n if (this.bitPos) throw this.err('writeByte: ends with non-empty bit buffer');\n this.buffers.push(new Uint8Array([b]));\n this.pos++;\n }\n finish(clean = true): Bytes {\n if (this.finished) throw this.err('buffer: finished');\n if (this.bitPos) throw this.err('buffer: ends with non-empty bit buffer');\n // Can't use concatBytes, because it limits amount of arguments (65K).\n const buffers = this.buffers.concat(this.ptrs.map((i) => i.buffer));\n const sum = buffers.map((b) => b.length).reduce((a, b) => a + b, 0);\n const buf = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < buffers.length; i++) {\n const a = buffers[i];\n buf.set(a, pad);\n pad += a.length;\n }\n\n for (let pos = this.pos, i = 0; i < this.ptrs.length; i++) {\n const ptr = this.ptrs[i];\n buf.set(ptr.ptr.encode(pos), ptr.pos);\n pos += ptr.buffer.length;\n }\n // Cleanup\n if (clean) {\n // We cannot cleanup buffers here, since it can be static user provided buffer.\n // Only '.byte' and '.bits' create buffer which we can safely clean.\n // for (const b of this.buffers) b.fill(0);\n this.buffers = [];\n for (const p of this.ptrs) p.buffer.fill(0);\n this.ptrs = [];\n this.finished = true;\n this.bitBuf = 0;\n }\n return buf;\n }\n bits(value: number, bits: number): void {\n if (bits > 32) throw this.err('writeBits: cannot write more than 32 bits in single call');\n if (value >= 2 ** bits) throw this.err(`writeBits: value (${value}) >= 2**bits (${bits})`);\n while (bits) {\n const take = Math.min(bits, 8 - this.bitPos);\n this.bitBuf = (this.bitBuf << take) | (value >> (bits - take));\n this.bitPos += take;\n bits -= take;\n value &= 2 ** bits - 1;\n if (this.bitPos === 8) {\n this.bitPos = 0;\n this.buffers.push(new Uint8Array([this.bitBuf]));\n this.pos++;\n }\n }\n }\n}\n// Immutable LE<->BE\nconst swapEndianness = (b: Bytes): Bytes => Uint8Array.from(b).reverse();\n/** Internal function for checking bit bounds of bigint in signed/unsinged form */\nfunction checkBounds(value: bigint, bits: bigint, signed: boolean): void {\n if (signed) {\n // [-(2**(32-1)), 2**(32-1)-1]\n const signBit = 2n ** (bits - 1n);\n if (value < -signBit || value >= signBit)\n throw new Error(`value out of signed bounds. Expected ${-signBit} <= ${value} < ${signBit}`);\n } else {\n // [0, 2**32-1]\n if (0n > value || value >= 2n ** bits)\n throw new Error(`value out of unsigned bounds. Expected 0 <= ${value} < ${2n ** bits}`);\n }\n}\n\nfunction _wrap(inner: BytesCoderStream): CoderType {\n return {\n // NOTE: we cannot export validate here, since it is likely mistake.\n encodeStream: inner.encodeStream,\n decodeStream: inner.decodeStream,\n size: inner.size,\n encode: (value: T): Bytes => {\n const w = new _Writer();\n inner.encodeStream(w, value);\n return w.finish();\n },\n decode: (data: Bytes, opts: ReaderOpts = {}): T => {\n const r = new _Reader(data, opts);\n const res = inner.decodeStream(r);\n r.finish();\n return res;\n },\n };\n}\n\n/**\n * Validates a value before encoding and after decoding using a provided function.\n * @param inner - The inner CoderType.\n * @param fn - The validation function.\n * @returns CoderType which check value with validation function.\n * @example\n * const val = (n: number) => {\n * if (n > 10) throw new Error(`${n} > 10`);\n * return n;\n * };\n *\n * const RangedInt = P.validate(P.U32LE, val); // Will check if value is <= 10 during encoding and decoding\n */\nexport function validate(inner: CoderType, fn: Validate): CoderType {\n if (!isCoder(inner)) throw new Error(`validate: invalid inner value ${inner}`);\n if (typeof fn !== 'function') throw new Error('validate: fn should be function');\n return _wrap({\n size: inner.size,\n encodeStream: (w: Writer, value: T) => {\n let res;\n try {\n res = fn(value);\n } catch (e) {\n throw w.err(e as Error);\n }\n inner.encodeStream(w, res);\n },\n decodeStream: (r: Reader): T => {\n const res = inner.decodeStream(r);\n try {\n return fn(res);\n } catch (e) {\n throw r.err(e as Error);\n }\n },\n });\n}\n\n/**\n * Wraps a stream encoder into a generic encoder and optionally validation function\n * @param {inner} inner BytesCoderStream & { validate?: Validate }.\n * @returns The wrapped CoderType.\n * @example\n * const U8 = P.wrap({\n * encodeStream: (w: Writer, value: number) => w.byte(value),\n * decodeStream: (r: Reader): number => r.byte()\n * });\n * const checkedU8 = P.wrap({\n * encodeStream: (w: Writer, value: number) => w.byte(value),\n * decodeStream: (r: Reader): number => r.byte()\n * validate: (n: number) => {\n * if (n > 10) throw new Error(`${n} > 10`);\n * return n;\n * }\n * });\n */\nexport const wrap = (inner: BytesCoderStream & { validate?: Validate }): CoderType => {\n const res = _wrap(inner);\n return inner.validate ? validate(res, inner.validate) : res;\n};\n\nconst isBaseCoder = (elm: any) =>\n isPlainObject(elm) && typeof elm.decode === 'function' && typeof elm.encode === 'function';\n\n/**\n * Checks if the given value is a CoderType.\n * @param elm - The value to check.\n * @returns True if the value is a CoderType, false otherwise.\n */\nexport function isCoder(elm: any): elm is CoderType {\n return (\n isPlainObject(elm) &&\n isBaseCoder(elm) &&\n typeof elm.encodeStream === 'function' &&\n typeof elm.decodeStream === 'function' &&\n (elm.size === undefined || isNum(elm.size))\n );\n}\n\n// Coders (like in @scure/base) for common operations\n\n/**\n * Base coder for working with dictionaries (records, objects, key-value map)\n * Dictionary is dynamic type like: `[key: string, value: any][]`\n * @returns base coder that encodes/decodes between arrays of key-value tuples and dictionaries.\n * @example\n * const dict: P.CoderType> = P.apply(\n * P.array(P.U16BE, P.tuple([P.cstring, P.U32LE] as const)),\n * P.coders.dict()\n * );\n */\nfunction dict(): BaseCoder<[string, T][], Record> {\n return {\n encode: (from: [string, T][]): Record => {\n if (!Array.isArray(from)) throw new Error('array expected');\n const to: Record = {};\n for (const item of from) {\n if (!Array.isArray(item) || item.length !== 2)\n throw new Error(`array of two elements expected`);\n const name = item[0];\n const value = item[1];\n if (to[name] !== undefined) throw new Error(`key(${name}) appears twice in struct`);\n to[name] = value;\n }\n return to;\n },\n decode: (to: Record): [string, T][] => {\n if (!isPlainObject(to)) throw new Error(`expected plain object, got ${to}`);\n return Object.entries(to);\n },\n };\n}\n/**\n * Safely converts bigint to number.\n * Sometimes pointers / tags use u64 or other big numbers which cannot be represented by number,\n * but we still can use them since real value will be smaller than u32\n */\nconst numberBigint: BaseCoder = {\n encode: (from: bigint): number => {\n if (typeof from !== 'bigint') throw new Error(`expected bigint, got ${typeof from}`);\n if (from > BigInt(Number.MAX_SAFE_INTEGER))\n throw new Error(`element bigger than MAX_SAFE_INTEGER=${from}`);\n return Number(from);\n },\n decode: (to: number): bigint => {\n if (!isNum(to)) throw new Error('element is not a safe integer');\n return BigInt(to);\n },\n};\n// TODO: replace map with this?\ntype Enum = { [k: string]: number | string } & { [k: number]: string };\n// Doesn't return numeric keys, so it's fine\ntype EnumKeys = keyof T;\n/**\n * Base coder for working with TypeScript enums.\n * @param e - TypeScript enum.\n * @returns base coder that encodes/decodes between numbers and enum keys.\n * @example\n * enum Color { Red, Green, Blue }\n * const colorCoder = P.coders.tsEnum(Color);\n * colorCoder.encode(Color.Red); // 'Red'\n * colorCoder.decode('Green'); // 1\n */\nfunction tsEnum(e: T): BaseCoder> {\n if (!isPlainObject(e)) throw new Error('plain object expected');\n return {\n encode: (from: number): string => {\n if (!isNum(from) || !(from in e)) throw new Error(`wrong value ${from}`);\n return e[from];\n },\n decode: (to: string): number => {\n if (typeof to !== 'string') throw new Error(`wrong value ${typeof to}`);\n return e[to] as number;\n },\n };\n}\n/**\n * Base coder for working with decimal numbers.\n * @param precision - Number of decimal places.\n * @param round - Round fraction part if bigger than precision (throws error by default)\n * @returns base coder that encodes/decodes between bigints and decimal strings.\n * @example\n * const decimal8 = P.coders.decimal(8);\n * decimal8.encode(630880845n); // '6.30880845'\n * decimal8.decode('6.30880845'); // 630880845n\n */\nfunction decimal(precision: number, round = false): Coder {\n if (!isNum(precision)) throw new Error(`decimal/precision: wrong value ${precision}`);\n if (typeof round !== 'boolean')\n throw new Error(`decimal/round: expected boolean, got ${typeof round}`);\n const decimalMask = 10n ** BigInt(precision);\n return {\n encode: (from: bigint): string => {\n if (typeof from !== 'bigint') throw new Error(`expected bigint, got ${typeof from}`);\n let s = (from < 0n ? -from : from).toString(10);\n let sep = s.length - precision;\n if (sep < 0) {\n s = s.padStart(s.length - sep, '0');\n sep = 0;\n }\n let i = s.length - 1;\n for (; i >= sep && s[i] === '0'; i--);\n let int = s.slice(0, sep);\n let frac = s.slice(sep, i + 1);\n if (!int) int = '0';\n if (from < 0n) int = '-' + int;\n if (!frac) return int;\n return `${int}.${frac}`;\n },\n decode: (to: string): bigint => {\n if (typeof to !== 'string') throw new Error(`expected string, got ${typeof to}`);\n if (to === '-0') throw new Error(`negative zero is not allowed`);\n let neg = false;\n if (to.startsWith('-')) {\n neg = true;\n to = to.slice(1);\n }\n if (!/^(0|[1-9]\\d*)(\\.\\d+)?$/.test(to)) throw new Error(`wrong string value=${to}`);\n let sep = to.indexOf('.');\n sep = sep === -1 ? to.length : sep;\n // split by separator and strip trailing zeros from fraction. always returns [string, string] (.split doesn't).\n const intS = to.slice(0, sep);\n const fracS = to.slice(sep + 1).replace(/0+$/, '');\n const int = BigInt(intS) * decimalMask;\n if (!round && fracS.length > precision) {\n throw new Error(\n `fractional part cannot be represented with this precision (num=${to}, prec=${precision})`\n );\n }\n const fracLen = Math.min(fracS.length, precision);\n const frac = BigInt(fracS.slice(0, fracLen)) * 10n ** BigInt(precision - fracLen);\n const value = int + frac;\n return neg ? -value : value;\n },\n };\n}\n\n// TODO: export from @scure/base?\ntype BaseInput = F extends BaseCoder ? T : never;\ntype BaseOutput = F extends BaseCoder ? T : never;\n\n/**\n * Combines multiple coders into a single coder, allowing conditional encoding/decoding based on input.\n * Acts as a parser combinator, splitting complex conditional coders into smaller parts.\n *\n * `encode = [Ae, Be]; decode = [Ad, Bd]`\n * ->\n * `match([{encode: Ae, decode: Ad}, {encode: Be; decode: Bd}])`\n *\n * @param lst - Array of coders to match.\n * @returns Combined coder for conditional encoding/decoding.\n */\nfunction match<\n L extends BaseCoder[],\n I = { [K in keyof L]: NonNullable> }[number],\n O = { [K in keyof L]: NonNullable> }[number],\n>(lst: L): BaseCoder {\n if (!Array.isArray(lst)) throw new Error(`expected array, got ${typeof lst}`);\n for (const i of lst) if (!isBaseCoder(i)) throw new Error(`wrong base coder ${i}`);\n return {\n encode: (from: I): O => {\n for (const c of lst) {\n const elm = c.encode(from);\n if (elm !== undefined) return elm as O;\n }\n throw new Error(`match/encode: cannot find match in ${from}`);\n },\n decode: (to: O): I => {\n for (const c of lst) {\n const elm = c.decode(to);\n if (elm !== undefined) return elm as I;\n }\n throw new Error(`match/decode: cannot find match in ${to}`);\n },\n };\n}\n/** Reverses direction of coder */\nconst reverse = (coder: Coder): Coder => {\n if (!isBaseCoder(coder)) throw new Error('BaseCoder expected');\n return { encode: coder.decode, decode: coder.encode };\n};\n\nexport const coders: {\n dict: typeof dict;\n numberBigint: BaseCoder;\n tsEnum: typeof tsEnum;\n decimal: typeof decimal;\n match: typeof match;\n reverse: (coder: Coder) => Coder;\n} = { dict, numberBigint, tsEnum, decimal, match, reverse };\n\n/**\n * CoderType for parsing individual bits.\n * NOTE: Structure should parse whole amount of bytes before it can start parsing byte-level elements.\n * @param len - Number of bits to parse.\n * @returns CoderType representing the parsed bits.\n * @example\n * const s = P.struct({ magic: P.bits(1), version: P.bits(1), tag: P.bits(4), len: P.bits(2) });\n */\nexport const bits = (len: number): CoderType => {\n if (!isNum(len)) throw new Error(`bits: wrong length ${len} (${typeof len})`);\n return wrap({\n encodeStream: (w: Writer, value: number) => w.bits(value, len),\n decodeStream: (r: Reader): number => r.bits(len),\n validate: (value) => {\n if (!isNum(value)) throw new Error(`bits: wrong value ${value}`);\n return value;\n },\n });\n};\n\n/**\n * CoderType for working with bigint values.\n * Unsized bigint values should be wrapped in a container (e.g., bytes or string).\n *\n * `0n = new Uint8Array([])`\n *\n * `1n = new Uint8Array([1n])`\n *\n * Please open issue, if you need different behavior for zero.\n *\n * @param size - Size of the bigint in bytes.\n * @param le - Whether to use little-endian byte order.\n * @param signed - Whether the bigint is signed.\n * @param sized - Whether the bigint should have a fixed size.\n * @returns CoderType representing the bigint value.\n * @example\n * const U512BE = P.bigint(64, false, true, true); // Define a CoderType for a 512-bit unsigned big-endian integer\n */\nexport const bigint = (\n size: number,\n le = false,\n signed = false,\n sized = true\n): CoderType => {\n if (!isNum(size)) throw new Error(`bigint/size: wrong value ${size}`);\n if (typeof le !== 'boolean') throw new Error(`bigint/le: expected boolean, got ${typeof le}`);\n if (typeof signed !== 'boolean')\n throw new Error(`bigint/signed: expected boolean, got ${typeof signed}`);\n if (typeof sized !== 'boolean')\n throw new Error(`bigint/sized: expected boolean, got ${typeof sized}`);\n const bLen = BigInt(size);\n const signBit = 2n ** (8n * bLen - 1n);\n return wrap({\n size: sized ? size : undefined,\n encodeStream: (w: Writer, value: bigint) => {\n if (signed && value < 0) value = value | signBit;\n const b = [];\n for (let i = 0; i < size; i++) {\n b.push(Number(value & 255n));\n value >>= 8n;\n }\n let res = new Uint8Array(b).reverse();\n if (!sized) {\n let pos = 0;\n for (pos = 0; pos < res.length; pos++) if (res[pos] !== 0) break;\n res = res.subarray(pos); // remove leading zeros\n }\n w.bytes(le ? res.reverse() : res);\n },\n decodeStream: (r: Reader): bigint => {\n // TODO: for le we can read until first zero?\n const value = r.bytes(sized ? size : Math.min(size, r.leftBytes));\n const b = le ? value : swapEndianness(value);\n let res = 0n;\n for (let i = 0; i < b.length; i++) res |= BigInt(b[i]) << (8n * BigInt(i));\n if (signed && res & signBit) res = (res ^ signBit) - signBit;\n return res;\n },\n validate: (value) => {\n if (typeof value !== 'bigint') throw new Error(`bigint: invalid value: ${value}`);\n checkBounds(value, 8n * bLen, !!signed);\n return value;\n },\n });\n};\n/** Unsigned 256-bit little-endian integer CoderType. */\nexport const U256LE: CoderType = /* @__PURE__ */ bigint(32, true);\n/** Unsigned 256-bit big-endian integer CoderType. */\nexport const U256BE: CoderType = /* @__PURE__ */ bigint(32, false);\n/** Signed 256-bit little-endian integer CoderType. */\nexport const I256LE: CoderType = /* @__PURE__ */ bigint(32, true, true);\n/** Signed 256-bit big-endian integer CoderType. */\nexport const I256BE: CoderType = /* @__PURE__ */ bigint(32, false, true);\n/** Unsigned 128-bit little-endian integer CoderType. */\nexport const U128LE: CoderType = /* @__PURE__ */ bigint(16, true);\n/** Unsigned 128-bit big-endian integer CoderType. */\nexport const U128BE: CoderType = /* @__PURE__ */ bigint(16, false);\n/** Signed 128-bit little-endian integer CoderType. */\nexport const I128LE: CoderType = /* @__PURE__ */ bigint(16, true, true);\n/** Signed 128-bit big-endian integer CoderType. */\nexport const I128BE: CoderType = /* @__PURE__ */ bigint(16, false, true);\n/** Unsigned 64-bit little-endian integer CoderType. */\nexport const U64LE: CoderType = /* @__PURE__ */ bigint(8, true);\n/** Unsigned 64-bit big-endian integer CoderType. */\nexport const U64BE: CoderType = /* @__PURE__ */ bigint(8, false);\n/** Signed 64-bit little-endian integer CoderType. */\nexport const I64LE: CoderType = /* @__PURE__ */ bigint(8, true, true);\n/** Signed 64-bit big-endian integer CoderType. */\nexport const I64BE: CoderType = /* @__PURE__ */ bigint(8, false, true);\n\n/**\n * CoderType for working with numbber values (up to 6 bytes/48 bits).\n * Unsized int values should be wrapped in a container (e.g., bytes or string).\n *\n * `0 = new Uint8Array([])`\n *\n * `1 = new Uint8Array([1n])`\n *\n * Please open issue, if you need different behavior for zero.\n *\n * @param size - Size of the number in bytes.\n * @param le - Whether to use little-endian byte order.\n * @param signed - Whether the number is signed.\n * @param sized - Whether the number should have a fixed size.\n * @returns CoderType representing the number value.\n * @example\n * const uint64BE = P.bigint(8, false, true); // Define a CoderType for a 64-bit unsigned big-endian integer\n */\nexport const int = (size: number, le = false, signed = false, sized = true): CoderType => {\n if (!isNum(size)) throw new Error(`int/size: wrong value ${size}`);\n if (typeof le !== 'boolean') throw new Error(`int/le: expected boolean, got ${typeof le}`);\n if (typeof signed !== 'boolean')\n throw new Error(`int/signed: expected boolean, got ${typeof signed}`);\n if (typeof sized !== 'boolean')\n throw new Error(`int/sized: expected boolean, got ${typeof sized}`);\n if (size > 6) throw new Error('int supports size up to 6 bytes (48 bits): use bigints instead');\n return apply(bigint(size, le, signed, sized), coders.numberBigint);\n};\n\ntype ViewCoder = {\n read: (view: DataView, pos: number) => number;\n write: (view: DataView, value: number) => void;\n validate?: (value: number) => void;\n};\n\nconst view = (len: number, opts: ViewCoder) =>\n wrap({\n size: len,\n encodeStream: (w, value: number) =>\n (w as _Writer).writeView(len, (view) => opts.write(view, value)),\n decodeStream: (r) => (r as _Reader).readView(len, opts.read),\n validate: (value: number) => {\n if (typeof value !== 'number')\n throw new Error(`viewCoder: expected number, got ${typeof value}`);\n if (opts.validate) opts.validate(value);\n return value;\n },\n });\n\nconst intView = (len: number, signed: boolean, opts: ViewCoder) => {\n const bits = len * 8;\n const signBit = 2 ** (bits - 1);\n // Inlined checkBounds for integer\n const validateSigned = (value: number) => {\n if (!isNum(value)) throw new Error(`sintView: value is not safe integer: ${value}`);\n if (value < -signBit || value >= signBit) {\n throw new Error(\n `sintView: value out of bounds. Expected ${-signBit} <= ${value} < ${signBit}`\n );\n }\n };\n const maxVal = 2 ** bits;\n const validateUnsigned = (value: number) => {\n if (!isNum(value)) throw new Error(`uintView: value is not safe integer: ${value}`);\n if (0 > value || value >= maxVal) {\n throw new Error(`uintView: value out of bounds. Expected 0 <= ${value} < ${maxVal}`);\n }\n };\n return view(len, {\n write: opts.write,\n read: opts.read,\n validate: signed ? validateSigned : validateUnsigned,\n });\n};\n\n/** Unsigned 32-bit little-endian integer CoderType. */\nexport const U32LE: CoderType = /* @__PURE__ */ intView(4, false, {\n read: (view, pos) => view.getUint32(pos, true),\n write: (view, value) => view.setUint32(0, value, true),\n});\n/** Unsigned 32-bit big-endian integer CoderType. */\nexport const U32BE: CoderType = /* @__PURE__ */ intView(4, false, {\n read: (view, pos) => view.getUint32(pos, false),\n write: (view, value) => view.setUint32(0, value, false),\n});\n/** Signed 32-bit little-endian integer CoderType. */\nexport const I32LE: CoderType = /* @__PURE__ */ intView(4, true, {\n read: (view, pos) => view.getInt32(pos, true),\n write: (view, value) => view.setInt32(0, value, true),\n});\n/** Signed 32-bit big-endian integer CoderType. */\nexport const I32BE: CoderType = /* @__PURE__ */ intView(4, true, {\n read: (view, pos) => view.getInt32(pos, false),\n write: (view, value) => view.setInt32(0, value, false),\n});\n/** Unsigned 16-bit little-endian integer CoderType. */\nexport const U16LE: CoderType = /* @__PURE__ */ intView(2, false, {\n read: (view, pos) => view.getUint16(pos, true),\n write: (view, value) => view.setUint16(0, value, true),\n});\n/** Unsigned 16-bit big-endian integer CoderType. */\nexport const U16BE: CoderType = /* @__PURE__ */ intView(2, false, {\n read: (view, pos) => view.getUint16(pos, false),\n write: (view, value) => view.setUint16(0, value, false),\n});\n/** Signed 16-bit little-endian integer CoderType. */\nexport const I16LE: CoderType = /* @__PURE__ */ intView(2, true, {\n read: (view, pos) => view.getInt16(pos, true),\n write: (view, value) => view.setInt16(0, value, true),\n});\n/** Signed 16-bit big-endian integer CoderType. */\nexport const I16BE: CoderType = /* @__PURE__ */ intView(2, true, {\n read: (view, pos) => view.getInt16(pos, false),\n write: (view, value) => view.setInt16(0, value, false),\n});\n/** Unsigned 8-bit integer CoderType. */\nexport const U8: CoderType = /* @__PURE__ */ intView(1, false, {\n read: (view, pos) => view.getUint8(pos),\n write: (view, value) => view.setUint8(0, value),\n});\n/** Signed 8-bit integer CoderType. */\nexport const I8: CoderType = /* @__PURE__ */ intView(1, true, {\n read: (view, pos) => view.getInt8(pos),\n write: (view, value) => view.setInt8(0, value),\n});\n\n// Floats\nconst f32 = (le?: boolean) =>\n view(4, {\n read: (view, pos) => view.getFloat32(pos, le),\n write: (view, value) => view.setFloat32(0, value, le),\n validate: (value) => {\n if (Math.fround(value) !== value && !Number.isNaN(value))\n throw new Error(`f32: wrong value=${value}`);\n },\n });\nconst f64 = (le?: boolean) =>\n view(8, {\n read: (view, pos) => view.getFloat64(pos, le),\n write: (view, value) => view.setFloat64(0, value, le),\n });\n\n/** 32-bit big-endian floating point CoderType (\"binary32\", IEEE 754-2008). */\nexport const F32BE: CoderType = /* @__PURE__ */ f32(false);\n/** 32-bit little-endian floating point CoderType (\"binary32\", IEEE 754-2008). */\nexport const F32LE: CoderType = /* @__PURE__ */ f32(true);\n/** A 64-bit big-endian floating point type (\"binary64\", IEEE 754-2008). Any JS number can be encoded. */\nexport const F64BE: CoderType = /* @__PURE__ */ f64(false);\n/** A 64-bit little-endian floating point type (\"binary64\", IEEE 754-2008). Any JS number can be encoded. */\nexport const F64LE: CoderType = /* @__PURE__ */ f64(true);\n\n/** Boolean CoderType. */\nexport const bool: CoderType = /* @__PURE__ */ wrap({\n size: 1,\n encodeStream: (w: Writer, value: boolean) => w.byte(value ? 1 : 0),\n decodeStream: (r: Reader): boolean => {\n const value = r.byte();\n if (value !== 0 && value !== 1) throw r.err(`bool: invalid value ${value}`);\n return value === 1;\n },\n validate: (value) => {\n if (typeof value !== 'boolean') throw new Error(`bool: invalid value ${value}`);\n return value;\n },\n});\n\n/**\n * Bytes CoderType with a specified length and endianness.\n * The bytes can have:\n * - Dynamic size (prefixed with a length CoderType like U16BE)\n * - Fixed size (specified by a number)\n * - Unknown size (null, will parse until end of buffer)\n * - Zero-terminated (terminator can be any Uint8Array)\n * @param len - CoderType, number, Uint8Array (terminator) or null\n * @param le - Whether to use little-endian byte order.\n * @returns CoderType representing the bytes.\n * @example\n * // Dynamic size bytes (prefixed with P.U16BE number of bytes length)\n * const dynamicBytes = P.bytes(P.U16BE, false);\n * const fixedBytes = P.bytes(32, false); // Fixed size bytes\n * const unknownBytes = P.bytes(null, false); // Unknown size bytes, will parse until end of buffer\n * const zeroTerminatedBytes = P.bytes(new Uint8Array([0]), false); // Zero-terminated bytes\n */\nconst createBytes = (len: Length, le = false): CoderType => {\n if (typeof le !== 'boolean') throw new Error(`bytes/le: expected boolean, got ${typeof le}`);\n const _length = lengthCoder(len);\n const _isb = isBytes(len);\n return wrap({\n size: typeof len === 'number' ? len : undefined,\n encodeStream: (w: Writer, value: Bytes) => {\n if (!_isb) _length.encodeStream(w, value.length);\n w.bytes(le ? swapEndianness(value) : value);\n if (_isb) w.bytes(len);\n },\n decodeStream: (r: Reader): Bytes => {\n let bytes: Bytes;\n if (_isb) {\n const tPos = r.find(len);\n if (!tPos) throw r.err(`bytes: cannot find terminator`);\n bytes = r.bytes(tPos - r.pos);\n r.bytes(len.length);\n } else {\n bytes = r.bytes(len === null ? r.leftBytes : _length.decodeStream(r));\n }\n return le ? swapEndianness(bytes) : bytes;\n },\n validate: (value) => {\n if (!isBytes(value)) throw new Error(`bytes: invalid value ${value}`);\n return value;\n },\n });\n};\n\nexport { createBytes as bytes, createHex as hex };\n\n/**\n * Prefix-encoded value using a length prefix and an inner CoderType.\n * The prefix can have:\n * - Dynamic size (prefixed with a length CoderType like U16BE)\n * - Fixed size (specified by a number)\n * - Unknown size (null, will parse until end of buffer)\n * - Zero-terminated (terminator can be any Uint8Array)\n * @param len - Length CoderType (dynamic size), number (fixed size), Uint8Array (for terminator), or null (will parse until end of buffer)\n * @param inner - CoderType for the actual value to be prefix-encoded.\n * @returns CoderType representing the prefix-encoded value.\n * @example\n * const dynamicPrefix = P.prefix(P.U16BE, P.bytes(null)); // Dynamic size prefix (prefixed with P.U16BE number of bytes length)\n * const fixedPrefix = P.prefix(10, P.bytes(null)); // Fixed size prefix (always 10 bytes)\n */\nexport function prefix(len: Length, inner: CoderType): CoderType {\n if (!isCoder(inner)) throw new Error(`prefix: invalid inner value ${inner}`);\n return apply(createBytes(len), reverse(inner)) as CoderType;\n}\n\n/**\n * String CoderType with a specified length and endianness.\n * The string can be:\n * - Dynamic size (prefixed with a length CoderType like U16BE)\n * - Fixed size (specified by a number)\n * - Unknown size (null, will parse until end of buffer)\n * - Zero-terminated (terminator can be any Uint8Array)\n * @param len - Length CoderType (dynamic size), number (fixed size), Uint8Array (for terminator), or null (will parse until end of buffer)\n * @param le - Whether to use little-endian byte order.\n * @returns CoderType representing the string.\n * @example\n * const dynamicString = P.string(P.U16BE, false); // Dynamic size string (prefixed with P.U16BE number of string length)\n * const fixedString = P.string(10, false); // Fixed size string\n * const unknownString = P.string(null, false); // Unknown size string, will parse until end of buffer\n * const nullTerminatedString = P.cstring; // NUL-terminated string\n * const _cstring = P.string(new Uint8Array([0])); // Same thing\n */\nexport const string = (len: Length, le = false): CoderType =>\n validate(apply(createBytes(len, le), utf8), (value) => {\n // TextEncoder/TextDecoder will fail on non-string, but we create more readable errors earlier\n if (typeof value !== 'string') throw new Error(`expected string, got ${typeof value}`);\n return value;\n });\n\n/** NUL-terminated string CoderType. */\nexport const cstring: CoderType = /* @__PURE__ */ string(NULL);\n\ntype HexOpts = { isLE?: boolean; with0x?: boolean };\n/**\n * Hexadecimal string CoderType with a specified length, endianness, and optional 0x prefix.\n * @param len - Length CoderType (dynamic size), number (fixed size), Uint8Array (for terminator), or null (will parse until end of buffer)\n * @param le - Whether to use little-endian byte order.\n * @param withZero - Whether to include the 0x prefix.\n * @returns CoderType representing the hexadecimal string.\n * @example\n * const dynamicHex = P.hex(P.U16BE, {isLE: false, with0x: true}); // Hex string with 0x prefix and U16BE length\n * const fixedHex = P.hex(32, {isLE: false, with0x: false}); // Fixed-length 32-byte hex string without 0x prefix\n */\nconst createHex = (\n len: Length,\n options: HexOpts = { isLE: false, with0x: false }\n): CoderType => {\n let inner = apply(createBytes(len, options.isLE), baseHex);\n const prefix = options.with0x;\n if (typeof prefix !== 'boolean')\n throw new Error(`hex/with0x: expected boolean, got ${typeof prefix}`);\n if (prefix) {\n inner = apply(inner, {\n encode: (value) => `0x${value}`,\n decode: (value) => {\n if (!value.startsWith('0x'))\n throw new Error('hex(with0x=true).encode input should start with 0x');\n return value.slice(2);\n },\n });\n }\n return inner;\n};\n\n/**\n * Applies a base coder to a CoderType.\n * @param inner - The inner CoderType.\n * @param b - The base coder to apply.\n * @returns CoderType representing the transformed value.\n * @example\n * import { hex } from '@scure/base';\n * const hex = P.apply(P.bytes(32), hex); // will decode bytes into a hex string\n */\nexport function apply(inner: CoderType, base: BaseCoder): CoderType {\n if (!isCoder(inner)) throw new Error(`apply: invalid inner value ${inner}`);\n if (!isBaseCoder(base)) throw new Error(`apply: invalid base value ${inner}`);\n return wrap({\n size: inner.size,\n encodeStream: (w: Writer, value: F) => {\n let innerValue;\n try {\n innerValue = base.decode(value);\n } catch (e) {\n throw w.err('' + e);\n }\n return inner.encodeStream(w, innerValue);\n },\n decodeStream: (r: Reader): F => {\n const innerValue = inner.decodeStream(r);\n try {\n return base.encode(innerValue);\n } catch (e) {\n throw r.err('' + e);\n }\n },\n });\n}\n\n/**\n * Lazy CoderType that is evaluated at runtime.\n * @param fn - A function that returns the CoderType.\n * @returns CoderType representing the lazy value.\n * @example\n * type Tree = { name: string; children: Tree[] };\n * const tree = P.struct({\n * name: P.cstring,\n * children: P.array(\n * P.U16BE,\n * P.lazy((): P.CoderType => tree)\n * ),\n * });\n */\nexport function lazy(fn: () => CoderType): CoderType {\n if (typeof fn !== 'function') throw new Error(`lazy: expected function, got ${typeof fn}`);\n return wrap({\n encodeStream: (w: Writer, value: T) => fn().encodeStream(w, value),\n decodeStream: (r: Reader): T => fn().decodeStream(r),\n });\n}\n\n/**\n * Flag CoderType that encodes/decodes a boolean value based on the presence of a marker.\n * @param flagValue - Marker value.\n * @param xor - Whether to invert the flag behavior.\n * @returns CoderType representing the flag value.\n * @example\n * const flag = P.flag(new Uint8Array([0x01, 0x02])); // Encodes true as u8a([0x01, 0x02]), false as u8a([])\n * const flagXor = P.flag(new Uint8Array([0x01, 0x02]), true); // Encodes true as u8a([]), false as u8a([0x01, 0x02])\n * // Conditional encoding with flagged\n * const s = P.struct({ f: P.flag(new Uint8Array([0x0, 0x1])), f2: P.flagged('f', P.U32BE) });\n */\nexport const flag = (flagValue: Bytes, xor = false): CoderType => {\n if (!isBytes(flagValue))\n throw new Error(`flag/flagValue: expected Uint8Array, got ${typeof flagValue}`);\n if (typeof xor !== 'boolean') throw new Error(`flag/xor: expected boolean, got ${typeof xor}`);\n return wrap({\n size: flagValue.length,\n encodeStream: (w: Writer, value: boolean | undefined) => {\n if (!!value !== xor) w.bytes(flagValue);\n },\n decodeStream: (r: Reader): boolean | undefined => {\n let hasFlag = r.leftBytes >= flagValue.length;\n if (hasFlag) {\n hasFlag = equalBytes(r.bytes(flagValue.length, true), flagValue);\n // Found flag, advance cursor position\n if (hasFlag) r.bytes(flagValue.length);\n }\n return hasFlag !== xor; // hasFlag ^ xor\n },\n validate: (value) => {\n if (value !== undefined && typeof value !== 'boolean')\n throw new Error(`flag: expected boolean value or undefined, got ${typeof value}`);\n return value;\n },\n });\n};\n\n/**\n * Conditional CoderType that encodes/decodes a value only if a flag is present.\n * @param path - Path to the flag value or a CoderType for the flag.\n * @param inner - Inner CoderType for the value.\n * @param def - Optional default value to use if the flag is not present.\n * @returns CoderType representing the conditional value.\n * @example\n * const s = P.struct({\n * f: P.flag(new Uint8Array([0x0, 0x1])),\n * f2: P.flagged('f', P.U32BE)\n * });\n *\n * @example\n * const s2 = P.struct({\n * f: P.flag(new Uint8Array([0x0, 0x1])),\n * f2: P.flagged('f', P.U32BE, 123)\n * });\n */\nexport function flagged(\n path: string | CoderType,\n inner: CoderType,\n def?: T\n): CoderType> {\n if (!isCoder(inner)) throw new Error(`flagged: invalid inner value ${inner}`);\n if (typeof path !== 'string' && !isCoder(inner)) throw new Error(`flagged: wrong path=${path}`);\n return wrap({\n encodeStream: (w: Writer, value: Option) => {\n if (typeof path === 'string') {\n if (Path.resolve((w as _Writer).stack, path)) inner.encodeStream(w, value);\n else if (def) inner.encodeStream(w, def);\n } else {\n path.encodeStream(w, !!value);\n if (!!value) inner.encodeStream(w, value);\n else if (def) inner.encodeStream(w, def);\n }\n },\n decodeStream: (r: Reader): Option => {\n let hasFlag = false;\n if (typeof path === 'string') hasFlag = !!Path.resolve((r as _Reader).stack, path);\n else hasFlag = path.decodeStream(r);\n // If there is a flag -- decode and return value\n if (hasFlag) return inner.decodeStream(r);\n else if (def) inner.decodeStream(r);\n return;\n },\n });\n}\n/**\n * Optional CoderType that encodes/decodes a value based on a flag.\n * @param flag - CoderType for the flag value.\n * @param inner - Inner CoderType for the value.\n * @param def - Optional default value to use if the flag is not present.\n * @returns CoderType representing the optional value.\n * @example\n * // Will decode into P.U32BE only if flag present\n * const optional = P.optional(P.flag(new Uint8Array([0x0, 0x1])), P.U32BE);\n *\n * @example\n * // If no flag present, will decode into default value\n * const optionalWithDefault = P.optional(P.flag(new Uint8Array([0x0, 0x1])), P.U32BE, 123);\n */\nexport function optional(\n flag: CoderType,\n inner: CoderType,\n def?: T\n): CoderType> {\n if (!isCoder(flag) || !isCoder(inner))\n throw new Error(`optional: invalid flag or inner value flag=${flag} inner=${inner}`);\n return wrap({\n size: def !== undefined && flag.size && inner.size ? flag.size + inner.size : undefined,\n encodeStream: (w: Writer, value: Option) => {\n flag.encodeStream(w, !!value);\n if (value) inner.encodeStream(w, value);\n else if (def !== undefined) inner.encodeStream(w, def);\n },\n decodeStream: (r: Reader): Option => {\n if (flag.decodeStream(r)) return inner.decodeStream(r);\n else if (def !== undefined) inner.decodeStream(r);\n return;\n },\n });\n}\n/**\n * Magic value CoderType that encodes/decodes a constant value.\n * This can be used to check for a specific magic value or sequence of bytes at the beginning of a data structure.\n * @param inner - Inner CoderType for the value.\n * @param constant - Constant value.\n * @param check - Whether to check the decoded value against the constant.\n * @returns CoderType representing the magic value.\n * @example\n * // Always encodes constant as bytes using inner CoderType, throws if encoded value is not present\n * const magicU8 = P.magic(P.U8, 0x42);\n */\nexport function magic(inner: CoderType, constant: T, check = true): CoderType {\n if (!isCoder(inner)) throw new Error(`magic: invalid inner value ${inner}`);\n if (typeof check !== 'boolean') throw new Error(`magic: expected boolean, got ${typeof check}`);\n return wrap({\n size: inner.size,\n encodeStream: (w: Writer, _value: undefined) => inner.encodeStream(w, constant),\n decodeStream: (r: Reader): undefined => {\n const value = inner.decodeStream(r);\n if (\n (check && typeof value !== 'object' && value !== constant) ||\n (isBytes(constant) && !equalBytes(constant, value as any))\n ) {\n throw r.err(`magic: invalid value: ${value} !== ${constant}`);\n }\n return;\n },\n validate: (value) => {\n if (value !== undefined) throw new Error(`magic: wrong value=${typeof value}`);\n return value;\n },\n });\n}\n/**\n * Magic bytes CoderType that encodes/decodes a constant byte array or string.\n * @param constant - Constant byte array or string.\n * @returns CoderType representing the magic bytes.\n * @example\n * // Always encodes undefined into byte representation of string 'MAGIC'\n * const magicBytes = P.magicBytes('MAGIC');\n */\nexport const magicBytes = (constant: Bytes | string): CoderType => {\n const c = typeof constant === 'string' ? utf8.decode(constant) : constant;\n return magic(createBytes(c.length), c);\n};\n\n/**\n * Creates a CoderType for a constant value. The function enforces this value during encoding,\n * ensuring it matches the provided constant. During decoding, it always returns the constant value.\n * The actual value is not written to or read from any byte stream; it's used only for validation.\n *\n * @param c - Constant value.\n * @returns CoderType representing the constant value.\n * @example\n * // Always return 123 on decode, throws on encoding anything other than 123\n * const constantU8 = P.constant(123);\n */\nexport function constant(c: T): CoderType {\n return wrap({\n encodeStream: (_w: Writer, value: T) => {\n if (value !== c) throw new Error(`constant: invalid value ${value} (exp: ${c})`);\n },\n decodeStream: (_r: Reader): T => c,\n });\n}\n\nfunction sizeof(fields: CoderType[]): Option {\n let size: Option = 0;\n for (const f of fields) {\n if (f.size === undefined) return;\n if (!isNum(f.size)) throw new Error(`sizeof: wrong element size=${size}`);\n size += f.size;\n }\n return size;\n}\n/**\n * Structure of composable primitives (C/Rust struct)\n * @param fields - Object mapping field names to CoderTypes.\n * @returns CoderType representing the structure.\n * @example\n * // Define a structure with a 32-bit big-endian unsigned integer, a string, and a nested structure\n * const myStruct = P.struct({\n * id: P.U32BE,\n * name: P.string(P.U8),\n * nested: P.struct({\n * flag: P.bool,\n * value: P.I16LE\n * })\n * });\n */\nexport function struct>(\n fields: StructRecord\n): CoderType> {\n if (!isPlainObject(fields)) throw new Error(`struct: expected plain object, got ${fields}`);\n for (const name in fields) {\n if (!isCoder(fields[name])) throw new Error(`struct: field ${name} is not CoderType`);\n }\n return wrap({\n size: sizeof(Object.values(fields)),\n encodeStream: (w: Writer, value: StructInput) => {\n (w as _Writer).pushObj(value, (fieldFn) => {\n for (const name in fields)\n fieldFn(name, () => fields[name].encodeStream(w, (value as T)[name]));\n });\n },\n decodeStream: (r: Reader): StructInput => {\n const res: Partial = {};\n (r as _Reader).pushObj(res, (fieldFn) => {\n for (const name in fields) fieldFn(name, () => (res[name] = fields[name].decodeStream(r)));\n });\n return res as T;\n },\n validate: (value) => {\n if (typeof value !== 'object' || value === null)\n throw new Error(`struct: invalid value ${value}`);\n return value;\n },\n });\n}\n/**\n * Tuple (unnamed structure) of CoderTypes. Same as struct but with unnamed fields.\n * @param fields - Array of CoderTypes.\n * @returns CoderType representing the tuple.\n * @example\n * const myTuple = P.tuple([P.U8, P.U16LE, P.string(P.U8)]);\n */\nexport function tuple<\n T extends ArrLike>,\n O = Writable<{ [K in keyof T]: UnwrapCoder }>,\n>(fields: T): CoderType {\n if (!Array.isArray(fields))\n throw new Error(`Packed.Tuple: got ${typeof fields} instead of array`);\n for (let i = 0; i < fields.length; i++) {\n if (!isCoder(fields[i])) throw new Error(`tuple: field ${i} is not CoderType`);\n }\n return wrap({\n size: sizeof(fields),\n encodeStream: (w: Writer, value: O) => {\n // TODO: fix types\n if (!Array.isArray(value)) throw w.err(`tuple: invalid value ${value}`);\n (w as _Writer).pushObj(value, (fieldFn) => {\n for (let i = 0; i < fields.length; i++)\n fieldFn(`${i}`, () => fields[i].encodeStream(w, value[i]));\n });\n },\n decodeStream: (r: Reader): O => {\n const res: any = [];\n (r as _Reader).pushObj(res, (fieldFn) => {\n for (let i = 0; i < fields.length; i++)\n fieldFn(`${i}`, () => res.push(fields[i].decodeStream(r)));\n });\n return res;\n },\n validate: (value) => {\n if (!Array.isArray(value)) throw new Error(`tuple: invalid value ${value}`);\n if (value.length !== fields.length)\n throw new Error(`tuple: wrong length=${value.length}, expected ${fields.length}`);\n return value;\n },\n });\n}\n\n/**\n * Array of items (inner type) with a specified length.\n * @param len - Length CoderType (dynamic size), number (fixed size), Uint8Array (for terminator), or null (will parse until end of buffer)\n * @param inner - CoderType for encoding/decoding each array item.\n * @returns CoderType representing the array.\n * @example\n * const a1 = P.array(P.U16BE, child); // Dynamic size array (prefixed with P.U16BE number of array length)\n * const a2 = P.array(4, child); // Fixed size array\n * const a3 = P.array(null, child); // Unknown size array, will parse until end of buffer\n * const a4 = P.array(new Uint8Array([0]), child); // zero-terminated array (NOTE: terminator can be any buffer)\n */\nexport function array(len: Length, inner: CoderType): CoderType {\n if (!isCoder(inner)) throw new Error(`array: invalid inner value ${inner}`);\n // By construction length is inside array (otherwise there will be various incorrect stack states)\n // But forcing users always write '..' seems like bad idea. Also, breaking change.\n const _length = lengthCoder(typeof len === 'string' ? `../${len}` : len);\n return wrap({\n size: typeof len === 'number' && inner.size ? len * inner.size : undefined,\n encodeStream: (w: Writer, value: T[]) => {\n const _w = w as _Writer;\n _w.pushObj(value, (fieldFn) => {\n if (!isBytes(len)) _length.encodeStream(w, value.length);\n for (let i = 0; i < value.length; i++) {\n fieldFn(`${i}`, () => {\n const elm = value[i];\n const startPos = (w as _Writer).pos;\n inner.encodeStream(w, elm);\n if (isBytes(len)) {\n // Terminator is bigger than elm size, so skip\n if (len.length > _w.pos - startPos) return;\n const data = _w.finish(false).subarray(startPos, _w.pos);\n // There is still possible case when multiple elements create terminator,\n // but it is hard to catch here, will be very slow\n if (equalBytes(data.subarray(0, len.length), len))\n throw _w.err(\n `array: inner element encoding same as separator. elm=${elm} data=${data}`\n );\n }\n });\n }\n });\n if (isBytes(len)) w.bytes(len);\n },\n decodeStream: (r: Reader): T[] => {\n const res: T[] = [];\n (r as _Reader).pushObj(res, (fieldFn) => {\n if (len === null) {\n for (let i = 0; !r.isEnd(); i++) {\n fieldFn(`${i}`, () => res.push(inner.decodeStream(r)));\n if (inner.size && r.leftBytes < inner.size) break;\n }\n } else if (isBytes(len)) {\n for (let i = 0; ; i++) {\n if (equalBytes(r.bytes(len.length, true), len)) {\n // Advance cursor position if terminator found\n r.bytes(len.length);\n break;\n }\n fieldFn(`${i}`, () => res.push(inner.decodeStream(r)));\n }\n } else {\n let length: number;\n fieldFn('arrayLen', () => (length = _length.decodeStream(r)));\n for (let i = 0; i < length!; i++) fieldFn(`${i}`, () => res.push(inner.decodeStream(r)));\n }\n });\n return res;\n },\n validate: (value) => {\n if (!Array.isArray(value)) throw new Error(`array: invalid value ${value}`);\n return value;\n },\n });\n}\n/**\n * Mapping between encoded values and string representations.\n * @param inner - CoderType for encoded values.\n * @param variants - Object mapping string representations to encoded values.\n * @returns CoderType representing the mapping.\n * @example\n * // Map between numbers and strings\n * const numberMap = P.map(P.U8, {\n * 'one': 1,\n * 'two': 2,\n * 'three': 3\n * });\n *\n * // Map between byte arrays and strings\n * const byteMap = P.map(P.bytes(2, false), {\n * 'ab': Uint8Array.from([0x61, 0x62]),\n * 'cd': Uint8Array.from([0x63, 0x64])\n * });\n */\nexport function map(inner: CoderType, variants: Record): CoderType {\n if (!isCoder(inner)) throw new Error(`map: invalid inner value ${inner}`);\n if (!isPlainObject(variants)) throw new Error(`map: variants should be plain object`);\n const variantNames: Map = new Map();\n for (const k in variants) variantNames.set(variants[k], k);\n return wrap({\n size: inner.size,\n encodeStream: (w: Writer, value: string) => inner.encodeStream(w, variants[value]),\n decodeStream: (r: Reader): string => {\n const variant = inner.decodeStream(r);\n const name = variantNames.get(variant);\n if (name === undefined)\n throw r.err(`Enum: unknown value: ${variant} ${Array.from(variantNames.keys())}`);\n return name;\n },\n validate: (value) => {\n if (typeof value !== 'string') throw new Error(`map: invalid value ${value}`);\n if (!(value in variants)) throw new Error(`Map: unknown variant: ${value}`);\n return value;\n },\n });\n}\n/**\n * Tagged union of CoderTypes, where the tag value determines which CoderType to use.\n * The decoded value will have the structure `{ TAG: number, data: ... }`.\n * @param tag - CoderType for the tag value.\n * @param variants - Object mapping tag values to CoderTypes.\n * @returns CoderType representing the tagged union.\n * @example\n * // Tagged union of array, string, and number\n * // Depending on the value of the first byte, it will be decoded as an array, string, or number.\n * const taggedUnion = P.tag(P.U8, {\n * 0x01: P.array(P.U16LE, P.U8),\n * 0x02: P.string(P.U8),\n * 0x03: P.U32BE\n * });\n *\n * const encoded = taggedUnion.encode({ TAG: 0x01, data: 'hello' }); // Encodes the string 'hello' with tag 0x01\n * const decoded = taggedUnion.decode(encoded); // Decodes the encoded value back to { TAG: 0x01, data: 'hello' }\n */\nexport function tag<\n T extends Values<{\n [P in keyof Variants]: { TAG: P; data: UnwrapCoder };\n }>,\n TagValue extends string | number,\n Variants extends Record>,\n>(tag: CoderType, variants: Variants): CoderType {\n if (!isCoder(tag)) throw new Error(`tag: invalid tag value ${tag}`);\n if (!isPlainObject(variants)) throw new Error(`tag: variants should be plain object`);\n for (const name in variants) {\n if (!isCoder(variants[name])) throw new Error(`tag: variant ${name} is not CoderType`);\n }\n return wrap({\n size: tag.size,\n encodeStream: (w: Writer, value: T) => {\n const { TAG, data } = value;\n const dataType = variants[TAG];\n tag.encodeStream(w, TAG as any);\n dataType.encodeStream(w, data);\n },\n decodeStream: (r: Reader): T => {\n const TAG = tag.decodeStream(r);\n const dataType = variants[TAG];\n if (!dataType) throw r.err(`Tag: invalid tag ${TAG}`);\n return { TAG, data: dataType.decodeStream(r) } as any;\n },\n validate: (value) => {\n const { TAG } = value;\n const dataType = variants[TAG];\n if (!dataType) throw new Error(`Tag: invalid tag ${TAG.toString()}`);\n return value;\n },\n });\n}\n\n/**\n * Mapping between encoded values, string representations, and CoderTypes using a tag CoderType.\n * @param tagCoder - CoderType for the tag value.\n * @param variants - Object mapping string representations to [tag value, CoderType] pairs.\n * * @returns CoderType representing the mapping.\n * @example\n * const cborValue: P.CoderType = P.mappedTag(P.bits(3), {\n * uint: [0, cborUint], // An unsigned integer in the range 0..264-1 inclusive.\n * negint: [1, cborNegint], // A negative integer in the range -264..-1 inclusive\n * bytes: [2, P.lazy(() => cborLength(P.bytes, cborValue))], // A byte string.\n * string: [3, P.lazy(() => cborLength(P.string, cborValue))], // A text string (utf8)\n * array: [4, cborArrLength(P.lazy(() => cborValue))], // An array of data items\n * map: [5, P.lazy(() => cborArrLength(P.tuple([cborValue, cborValue])))], // A map of pairs of data items\n * tag: [6, P.tuple([cborUint, P.lazy(() => cborValue)] as const)], // A tagged data item (\"tag\") whose tag number\n * simple: [7, cborSimple], // Floating-point numbers and simple values, as well as the \"break\" stop code\n * });\n */\nexport function mappedTag<\n T extends Values<{\n [P in keyof Variants]: { TAG: P; data: UnwrapCoder };\n }>,\n TagValue extends string | number,\n Variants extends Record]>,\n>(tagCoder: CoderType, variants: Variants): CoderType {\n if (!isCoder(tagCoder)) throw new Error(`mappedTag: invalid tag value ${tag}`);\n if (!isPlainObject(variants)) throw new Error(`mappedTag: variants should be plain object`);\n const mapValue: Record = {};\n const tagValue: Record> = {};\n for (const key in variants) {\n const v = variants[key];\n mapValue[key] = v[0];\n tagValue[key] = v[1];\n }\n return tag(map(tagCoder, mapValue), tagValue) as any as CoderType;\n}\n\n/**\n * Bitset of boolean values with optional padding.\n * @param names - An array of string names for the bitset values.\n * @param pad - Whether to pad the bitset to a multiple of 8 bits.\n * @returns CoderType representing the bitset.\n * @template Names\n * @example\n * const myBitset = P.bitset(['flag1', 'flag2', 'flag3', 'flag4'], true);\n */\nexport function bitset(\n names: Names,\n pad = false\n): CoderType> {\n if (typeof pad !== 'boolean') throw new Error(`bitset/pad: expected boolean, got ${typeof pad}`);\n if (!Array.isArray(names)) throw new Error('bitset/names: expected array');\n for (const name of names) {\n if (typeof name !== 'string') throw new Error('bitset/names: expected array of strings');\n }\n return wrap({\n encodeStream: (w: Writer, value: Record) => {\n for (let i = 0; i < names.length; i++) w.bits(+(value as any)[names[i]], 1);\n if (pad && names.length % 8) w.bits(0, 8 - (names.length % 8));\n },\n decodeStream: (r: Reader): Record => {\n const out: Record = {};\n for (let i = 0; i < names.length; i++) out[names[i]] = !!r.bits(1);\n if (pad && names.length % 8) r.bits(8 - (names.length % 8));\n return out;\n },\n validate: (value) => {\n if (!isPlainObject(value)) throw new Error(`bitset: invalid value ${value}`);\n for (const v of Object.values(value)) {\n if (typeof v !== 'boolean') throw new Error('expected boolean');\n }\n return value;\n },\n });\n}\n/** Padding function which always returns zero */\nexport const ZeroPad: PadFn = (_) => 0;\n\nfunction padLength(blockSize: number, len: number): number {\n if (len % blockSize === 0) return 0;\n return blockSize - (len % blockSize);\n}\n/**\n * Pads a CoderType with a specified block size and padding function on the left side.\n * @param blockSize - Block size for padding (positive safe integer).\n * @param inner - Inner CoderType to pad.\n * @param padFn - Padding function to use. If not provided, zero padding is used.\n * @returns CoderType representing the padded value.\n * @example\n * // Pad a U32BE with a block size of 4 and zero padding\n * const paddedU32BE = P.padLeft(4, P.U32BE);\n *\n * // Pad a string with a block size of 16 and custom padding\n * const paddedString = P.padLeft(16, P.string(P.U8), (i) => i + 1);\n */\nexport function padLeft(\n blockSize: number,\n inner: CoderType,\n padFn: Option\n): CoderType {\n if (!isNum(blockSize) || blockSize <= 0) throw new Error(`padLeft: wrong blockSize=${blockSize}`);\n if (!isCoder(inner)) throw new Error(`padLeft: invalid inner value ${inner}`);\n if (padFn !== undefined && typeof padFn !== 'function')\n throw new Error(`padLeft: wrong padFn=${typeof padFn}`);\n const _padFn = padFn || ZeroPad;\n if (!inner.size) throw new Error('padLeft cannot have dynamic size');\n return wrap({\n size: inner.size + padLength(blockSize, inner.size),\n encodeStream: (w: Writer, value: T) => {\n const padBytes = padLength(blockSize, inner.size!);\n for (let i = 0; i < padBytes; i++) w.byte(_padFn(i));\n inner.encodeStream(w, value);\n },\n decodeStream: (r: Reader): T => {\n r.bytes(padLength(blockSize, inner.size!));\n return inner.decodeStream(r);\n },\n });\n}\n/**\n * Pads a CoderType with a specified block size and padding function on the right side.\n * @param blockSize - Block size for padding (positive safe integer).\n * @param inner - Inner CoderType to pad.\n * @param padFn - Padding function to use. If not provided, zero padding is used.\n * @returns CoderType representing the padded value.\n * @example\n * // Pad a U16BE with a block size of 2 and zero padding\n * const paddedU16BE = P.padRight(2, P.U16BE);\n *\n * // Pad a bytes with a block size of 8 and custom padding\n * const paddedBytes = P.padRight(8, P.bytes(null), (i) => i + 1);\n */\nexport function padRight(\n blockSize: number,\n inner: CoderType,\n padFn: Option\n): CoderType {\n if (!isCoder(inner)) throw new Error(`padRight: invalid inner value ${inner}`);\n if (!isNum(blockSize) || blockSize <= 0) throw new Error(`padLeft: wrong blockSize=${blockSize}`);\n if (padFn !== undefined && typeof padFn !== 'function')\n throw new Error(`padRight: wrong padFn=${typeof padFn}`);\n const _padFn = padFn || ZeroPad;\n return wrap({\n size: inner.size ? inner.size + padLength(blockSize, inner.size) : undefined,\n encodeStream: (w: Writer, value: T) => {\n const _w = w as _Writer;\n const pos = _w.pos;\n inner.encodeStream(w, value);\n const padBytes = padLength(blockSize, _w.pos - pos);\n for (let i = 0; i < padBytes; i++) w.byte(_padFn(i));\n },\n decodeStream: (r: Reader): T => {\n const start = r.pos;\n const res = inner.decodeStream(r);\n r.bytes(padLength(blockSize, r.pos - start));\n return res;\n },\n });\n}\n1;\n/**\n * Pointer to a value using a pointer CoderType and an inner CoderType.\n * Pointers are scoped, and the next pointer in the dereference chain is offset by the previous one.\n * By default (if no 'allowMultipleReads' in ReaderOpts is set) is safe, since\n * same region of memory cannot be read multiple times.\n * @param ptr - CoderType for the pointer value.\n * @param inner - CoderType for encoding/decoding the pointed value.\n * @param sized - Whether the pointer should have a fixed size.\n * @returns CoderType representing the pointer to the value.\n * @example\n * const pointerToU8 = P.pointer(P.U16BE, P.U8); // Pointer to a single U8 value\n */\nexport function pointer(\n ptr: CoderType,\n inner: CoderType,\n sized = false\n): CoderType {\n if (!isCoder(ptr)) throw new Error(`pointer: invalid ptr value ${ptr}`);\n if (!isCoder(inner)) throw new Error(`pointer: invalid inner value ${inner}`);\n if (typeof sized !== 'boolean')\n throw new Error(`pointer/sized: expected boolean, got ${typeof sized}`);\n if (!ptr.size) throw new Error('unsized pointer');\n return wrap({\n size: sized ? ptr.size : undefined,\n encodeStream: (w: Writer, value: T) => {\n const _w = w as _Writer;\n const start = _w.pos;\n ptr.encodeStream(w, 0);\n _w.ptrs.push({ pos: start, ptr, buffer: inner.encode(value) });\n },\n decodeStream: (r: Reader): T => {\n const ptrVal = ptr.decodeStream(r);\n (r as _Reader)._enablePointers();\n return inner.decodeStream(r.offsetReader(ptrVal));\n },\n });\n}\n\n// Internal methods for test purposes only\nexport const _TEST: {\n _bitset: {\n BITS: number;\n FULL_MASK: number;\n len: (len: number) => number;\n create: (len: number) => Uint32Array;\n clean: (bs: Uint32Array) => Uint32Array;\n debug: (bs: Uint32Array) => string[];\n checkLen: (bs: Uint32Array, len: number) => void;\n chunkLen: (bsLen: number, pos: number, len: number) => void;\n set: (bs: Uint32Array, chunk: number, value: number, allowRewrite?: boolean) => boolean;\n pos: (\n pos: number,\n i: number\n ) => {\n chunk: number;\n mask: number;\n };\n indices: (bs: Uint32Array, len: number, invert?: boolean) => number[];\n range: (arr: number[]) => {\n pos: number;\n length: number;\n }[];\n rangeDebug: (bs: Uint32Array, len: number, invert?: boolean) => string;\n setRange: (\n bs: Uint32Array,\n bsLen: number,\n pos: number,\n len: number,\n allowRewrite?: boolean\n ) => boolean;\n };\n _Reader: typeof _Reader;\n _Writer: typeof _Writer;\n Path: {\n /**\n * Internal method for handling stack of paths (debug, errors, dynamic fields via path)\n * This is looks ugly (callback), but allows us to force stack cleaning by construction (.pop always after function).\n * Also, this makes impossible:\n * - pushing field when stack is empty\n * - pushing field inside of field (real bug)\n * NOTE: we don't want to do '.pop' on error!\n */\n pushObj: (stack: PathStack, obj: StructOut, objFn: _PathObjFn) => void;\n path: (stack: PathStack) => string;\n err(name: string, stack: PathStack, msg: string | Error): Error;\n resolve: (stack: PathStack, path: string) => StructOut | undefined;\n };\n} = { _bitset: Bitset, _Reader, _Writer, Path };\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetFees = void 0;\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst StarknetTokens_1 = require(\"./StarknetTokens\");\r\nconst MAX_FEE_AGE = 5000;\r\nconst ERC20_ADDRESS_ETH = \"\";\r\nconst ERC20_ADDRESS_STRK = \"\";\r\nclass StarknetFees {\r\n constructor(provider, gasToken = \"ETH\", maxFeeRate = gasToken === \"ETH\" ? 100000000000 /*100 GWei*/ : 1000000000000000 /*100 * 10000 GWei*/, feeMultiplier = 1.25, da) {\r\n this.logger = (0, Utils_1.getLogger)(\"StarknetFees: \");\r\n this.blockFeeCache = null;\r\n this.provider = provider;\r\n this.gasToken = gasToken;\r\n this.maxFeeRate = BigInt(maxFeeRate);\r\n this.feeDA = da?.fee ?? \"L1\";\r\n this.nonceDA = da?.nonce ?? \"L1\";\r\n this.feeMultiplierPPM = BigInt(Math.floor(feeMultiplier * 1000000));\r\n }\r\n /**\r\n * Gets starknet fee rate\r\n *\r\n * @private\r\n * @returns {Promise} L1 gas price denominated in Wei\r\n */\r\n async _getFeeRate() {\r\n const block = await this.provider.getBlockWithTxHashes(\"latest\");\r\n let l1GasCost = (0, Utils_1.toBigInt)(this.gasToken === \"ETH\" ? block.l1_gas_price.price_in_wei : block.l1_gas_price.price_in_fri);\r\n l1GasCost = l1GasCost * this.feeMultiplierPPM / 1000000n;\r\n this.logger.debug(\"_getFeeRate(): L1 fee rate: \" + l1GasCost.toString(10));\r\n return l1GasCost;\r\n }\r\n /**\r\n * Gets the gas price with caching, format: ;\r\n *\r\n * @private\r\n */\r\n async getFeeRate() {\r\n if (this.blockFeeCache == null || Date.now() - this.blockFeeCache.timestamp > MAX_FEE_AGE) {\r\n let obj = {\r\n timestamp: Date.now(),\r\n feeRate: null\r\n };\r\n obj.feeRate = this._getFeeRate().catch(e => {\r\n if (this.blockFeeCache === obj)\r\n this.blockFeeCache = null;\r\n throw e;\r\n });\r\n this.blockFeeCache = obj;\r\n }\r\n let feeRate = await this.blockFeeCache.feeRate;\r\n if (feeRate > this.maxFeeRate)\r\n feeRate = this.maxFeeRate;\r\n const fee = feeRate.toString(10) + \";\" + (this.gasToken === \"ETH\" ? \"v1\" : \"v3\");\r\n this.logger.debug(\"getFeeRate(): calculated fee: \" + fee);\r\n return fee;\r\n }\r\n getDefaultGasToken() {\r\n return this.gasToken === \"ETH\" ? StarknetTokens_1.StarknetTokens.ERC20_ETH : StarknetTokens_1.StarknetTokens.ERC20_STRK;\r\n }\r\n /**\r\n * Calculates the total gas fee fee paid for a given gas limit at a given fee rate\r\n *\r\n * @param gas\r\n * @param feeRate\r\n */\r\n static getGasFee(gas, feeRate) {\r\n if (feeRate == null)\r\n return 0n;\r\n const arr = feeRate.split(\";\");\r\n const gasPrice = BigInt(arr[0]);\r\n return gasPrice * BigInt(gas);\r\n }\r\n static getGasToken(feeRate) {\r\n if (feeRate == null)\r\n return null;\r\n const arr = feeRate.split(\";\");\r\n const txVersion = arr[1];\r\n return txVersion === \"v1\" ? StarknetTokens_1.StarknetTokens.ERC20_ETH : StarknetTokens_1.StarknetTokens.ERC20_STRK;\r\n }\r\n getFeeDetails(L1GasLimit, L2GasLimit, feeRate) {\r\n if (feeRate == null)\r\n return null;\r\n const arr = feeRate.split(\";\");\r\n const gasPrice = BigInt(arr[0]);\r\n const version = arr[1];\r\n const maxFee = (0, Utils_1.toHex)(BigInt(L1GasLimit) * gasPrice, 16);\r\n return {\r\n maxFee: maxFee,\r\n version: version === \"v1\" ? \"0x1\" : \"0x3\",\r\n resourceBounds: {\r\n l1_gas: { max_amount: (0, Utils_1.toHex)(L1GasLimit, 16), max_price_per_unit: (0, Utils_1.toHex)(gasPrice, 16) },\r\n l2_gas: { max_amount: \"0x0\", max_price_per_unit: \"0x0\" }\r\n },\r\n tip: \"0x0\",\r\n paymasterData: [],\r\n nonceDataAvailabilityMode: this.nonceDA,\r\n feeDataAvailabilityMode: this.feeDA\r\n };\r\n }\r\n}\r\nexports.StarknetFees = StarknetFees;\r\n","export * from './actions.js';\nexport * from './instructions.js';\nexport * from './state.js';\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToBTCWrapper = void 0;\r\nconst ToBTCSwap_1 = require(\"./ToBTCSwap\");\r\nconst IToBTCWrapper_1 = require(\"../IToBTCWrapper\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst randomBytes = require(\"randombytes\");\r\nconst UserError_1 = require(\"../../../errors/UserError\");\r\nconst IntermediaryError_1 = require(\"../../../errors/IntermediaryError\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst IntermediaryAPI_1 = require(\"../../../intermediaries/IntermediaryAPI\");\r\nconst RequestError_1 = require(\"../../../errors/RequestError\");\r\nconst utils_1 = require(\"@scure/btc-signer/utils\");\r\nclass ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {\r\n /**\r\n * @param chainIdentifier\r\n * @param unifiedStorage Storage interface for the current environment\r\n * @param unifiedChainEvents Smart chain on-chain event listener\r\n * @param contract Chain specific swap contract\r\n * @param prices Swap pricing handler\r\n * @param tokens\r\n * @param swapDataDeserializer Deserializer for chain specific SwapData\r\n * @param btcRpc Bitcoin RPC api\r\n * @param options\r\n * @param events Instance to use for emitting events\r\n */\r\n constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, btcRpc, options, events) {\r\n if (options == null)\r\n options = {};\r\n options.bitcoinNetwork = options.bitcoinNetwork ?? utils_1.TEST_NETWORK;\r\n options.safetyFactor = options.safetyFactor || 2;\r\n options.maxConfirmations = options.maxConfirmations || 6;\r\n options.bitcoinBlocktime = options.bitcoinBlocktime || (60 * 10);\r\n options.maxExpectedOnchainSendSafetyFactor = options.maxExpectedOnchainSendSafetyFactor || 4;\r\n options.maxExpectedOnchainSendGracePeriodBlocks = options.maxExpectedOnchainSendGracePeriodBlocks || 12;\r\n super(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, options, events);\r\n this.TYPE = SwapType_1.SwapType.TO_BTC;\r\n this.swapDeserializer = ToBTCSwap_1.ToBTCSwap;\r\n this.btcRpc = btcRpc;\r\n }\r\n /**\r\n * Returns randomly generated random escrow nonce to be used for to BTC on-chain swaps\r\n * @private\r\n * @returns Escrow nonce\r\n */\r\n getRandomNonce() {\r\n const firstPart = BigInt(Math.floor((Date.now() / 1000)) - 700000000);\r\n return (firstPart << 24n) | base_1.BigIntBufferUtils.fromBuffer(randomBytes(3));\r\n }\r\n /**\r\n * Converts bitcoin address to its corresponding output script\r\n *\r\n * @param addr Bitcoin address to get the output script for\r\n * @private\r\n * @returns Output script as Buffer\r\n * @throws {UserError} if invalid address is specified\r\n */\r\n btcAddressToOutputScript(addr) {\r\n try {\r\n return (0, Utils_1.toOutputScript)(this.options.bitcoinNetwork, addr);\r\n }\r\n catch (e) {\r\n throw new UserError_1.UserError(\"Invalid address specified\");\r\n }\r\n }\r\n /**\r\n * Verifies returned LP data\r\n *\r\n * @param resp LP's response\r\n * @param amountData\r\n * @param lp\r\n * @param options Options as passed to the swap create function\r\n * @param data LP's returned parsed swap data\r\n * @param hash Payment hash of the swap\r\n * @private\r\n * @throws {IntermediaryError} if returned data are not correct\r\n */\r\n verifyReturnedData(resp, amountData, lp, options, data, hash) {\r\n if (resp.totalFee !== (resp.swapFee + resp.networkFee))\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid totalFee returned\");\r\n if (amountData.exactIn) {\r\n if (resp.total !== amountData.amount)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid total returned\");\r\n }\r\n else {\r\n if (resp.amount !== amountData.amount)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid amount returned\");\r\n }\r\n const maxAllowedBlockDelta = BigInt(options.confirmations +\r\n options.confirmationTarget +\r\n this.options.maxExpectedOnchainSendGracePeriodBlocks);\r\n const maxAllowedExpiryDelta = maxAllowedBlockDelta\r\n * BigInt(this.options.maxExpectedOnchainSendSafetyFactor)\r\n * BigInt(this.options.bitcoinBlocktime);\r\n const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n const maxAllowedExpiryTimestamp = currentTimestamp + maxAllowedExpiryDelta;\r\n if (data.getExpiry() > maxAllowedExpiryTimestamp) {\r\n throw new IntermediaryError_1.IntermediaryError(\"Expiry time returned too high!\");\r\n }\r\n if (data.getAmount() !== resp.total ||\r\n data.getClaimHash() !== hash ||\r\n data.getType() !== base_1.ChainSwapType.CHAIN_NONCED ||\r\n !data.isPayIn() ||\r\n !data.isToken(amountData.token) ||\r\n data.getClaimer() !== lp.getAddress(this.chainIdentifier)) {\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid data returned\");\r\n }\r\n }\r\n /**\r\n * Returns quotes fetched from LPs, paying to an 'address' - a bitcoin address\r\n *\r\n * @param signer Smart-chain signer address initiating the swap\r\n * @param address Bitcoin on-chain address you wish to pay to\r\n * @param amountData Amount of token & amount to swap\r\n * @param lps LPs (liquidity providers) to get the quotes from\r\n * @param options Quote options\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n * @param abortSignal Abort signal for aborting the process\r\n */\r\n create(signer, address, amountData, lps, options, additionalParams, abortSignal) {\r\n if (!this.isInitialized)\r\n throw new Error(\"Not initialized, call init() first!\");\r\n options ??= {};\r\n options.confirmationTarget ??= 3;\r\n options.confirmations ??= 2;\r\n const nonce = this.getRandomNonce();\r\n const outputScript = this.btcAddressToOutputScript(address);\r\n const _hash = !amountData.exactIn ?\r\n this.contract.getHashForOnchain(outputScript, amountData.amount, options.confirmations, nonce).toString(\"hex\") :\r\n null;\r\n const _abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n const pricePreFetchPromise = this.preFetchPrice(amountData, _abortController.signal);\r\n const feeRatePromise = this.preFetchFeeRate(signer, amountData, _hash, _abortController);\r\n return lps.map(lp => {\r\n return {\r\n intermediary: lp,\r\n quote: (async () => {\r\n const abortController = (0, Utils_1.extendAbortController)(_abortController.signal);\r\n const reputationPromise = this.preFetchIntermediaryReputation(amountData, lp, abortController);\r\n try {\r\n const { signDataPromise, resp } = await (0, Utils_1.tryWithRetries)(async (retryCount) => {\r\n const { signDataPrefetch, response } = IntermediaryAPI_1.IntermediaryAPI.initToBTC(this.chainIdentifier, lp.url, {\r\n btcAddress: address,\r\n amount: amountData.amount,\r\n confirmationTarget: options.confirmationTarget,\r\n confirmations: options.confirmations,\r\n nonce: nonce,\r\n token: amountData.token,\r\n offerer: signer,\r\n exactIn: amountData.exactIn,\r\n feeRate: feeRatePromise,\r\n additionalParams\r\n }, this.options.postRequestTimeout, abortController.signal, retryCount > 0 ? false : null);\r\n return {\r\n signDataPromise: this.preFetchSignData(signDataPrefetch),\r\n resp: await response\r\n };\r\n }, null, RequestError_1.RequestError, abortController.signal);\r\n let hash = amountData.exactIn ?\r\n this.contract.getHashForOnchain(outputScript, resp.amount, options.confirmations, nonce).toString(\"hex\") :\r\n _hash;\r\n const data = new this.swapDataDeserializer(resp.data);\r\n data.setOfferer(signer);\r\n this.verifyReturnedData(resp, amountData, lp, options, data, hash);\r\n const [pricingInfo, signatureExpiry, reputation] = await Promise.all([\r\n this.verifyReturnedPrice(lp.services[SwapType_1.SwapType.TO_BTC], true, resp.amount, data.getAmount(), amountData.token, resp, pricePreFetchPromise, abortController.signal),\r\n this.verifyReturnedSignature(data, resp, feeRatePromise, signDataPromise, abortController.signal),\r\n reputationPromise\r\n ]);\r\n abortController.signal.throwIfAborted();\r\n const quote = new ToBTCSwap_1.ToBTCSwap(this, {\r\n pricingInfo,\r\n url: lp.url,\r\n expiry: signatureExpiry,\r\n swapFee: resp.swapFee,\r\n feeRate: await feeRatePromise,\r\n signatureData: resp,\r\n data,\r\n networkFee: resp.networkFee,\r\n address,\r\n amount: resp.amount,\r\n confirmationTarget: options.confirmationTarget,\r\n satsPerVByte: Number(resp.satsPervByte),\r\n exactIn: amountData.exactIn ?? false,\r\n requiredConfirmations: options.confirmations,\r\n nonce\r\n });\r\n await quote._save();\r\n return quote;\r\n }\r\n catch (e) {\r\n abortController.abort(e);\r\n throw e;\r\n }\r\n })()\r\n };\r\n });\r\n }\r\n}\r\nexports.ToBTCWrapper = ToBTCWrapper;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetSwapClaim = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst StarknetSwapModule_1 = require(\"../StarknetSwapModule\");\r\nconst StarknetAction_1 = require(\"../../base/StarknetAction\");\r\nconst StarknetFees_1 = require(\"../../base/modules/StarknetFees\");\r\nclass StarknetSwapClaim extends StarknetSwapModule_1.StarknetSwapModule {\r\n /**\r\n * Claim action which uses the provided witness for claiming the swap\r\n *\r\n * @param signer\r\n * @param swapData\r\n * @param witness\r\n * @param claimHandlerGas\r\n * @constructor\r\n * @private\r\n */\r\n Claim(signer, swapData, witness, claimHandlerGas) {\r\n return new StarknetAction_1.StarknetAction(signer, this.root, this.contract.populateTransaction.claim(swapData.toEscrowStruct(), witness), (0, StarknetAction_1.sumStarknetGas)(swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM, claimHandlerGas));\r\n }\r\n /**\r\n * Creates transactions claiming the swap using a secret (for HTLC swaps)\r\n *\r\n * @param signer\r\n * @param swapData swap to claim\r\n * @param secret hex encoded secret pre-image to the HTLC hash\r\n * @param checkExpiry whether to check if the swap is already expired (trying to claim an expired swap with a secret\r\n * is dangerous because we might end up revealing the secret to the counterparty without being able to claim the swap)\r\n * @param feeRate fee rate to use for the transaction\r\n */\r\n async txsClaimWithSecret(signer, swapData, secret, checkExpiry, feeRate) {\r\n //We need to be sure that this transaction confirms in time, otherwise we reveal the secret to the counterparty\r\n // and won't claim the funds\r\n if (checkExpiry && await this.root.isExpired(swapData.claimer.toString(), swapData)) {\r\n throw new base_1.SwapDataVerificationError(\"Not enough time to reliably pay the invoice\");\r\n }\r\n const claimHandler = this.root.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];\r\n if (claimHandler == null)\r\n throw new base_1.SwapDataVerificationError(\"Unknown claim handler!\");\r\n if (claimHandler.getType() !== base_1.ChainSwapType.HTLC)\r\n throw new base_1.SwapDataVerificationError(\"Invalid claim handler!\");\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n const { initialTxns, witness } = await claimHandler.getWitness(signer, swapData, secret, feeRate);\r\n const action = this.Claim(signer, swapData, witness, claimHandler.getGas(swapData));\r\n await action.addToTxs(initialTxns, feeRate);\r\n this.logger.debug(\"txsClaimWithSecret(): creating claim transaction, swap: \" + swapData.getClaimHash() + \" witness: \", witness.map(Utils_1.toHex));\r\n return initialTxns;\r\n }\r\n /**\r\n * Creates transaction claiming the swap using a confirmed transaction data (for BTC on-chain swaps)\r\n *\r\n * @param signer\r\n * @param swapData swap to claim\r\n * @param tx bitcoin transaction that satisfies the swap condition\r\n * @param requiredConfirmations\r\n * @param vout vout of the bitcoin transaction that satisfies the swap condition\r\n * @param commitedHeader commited header data from btc relay (fetched internally if null)\r\n * @param synchronizer optional synchronizer to use in case we need to sync up the btc relay ourselves\r\n * @param feeRate fee rate to be used for the transactions\r\n */\r\n async txsClaimWithTxData(signer, swapData, tx, requiredConfirmations, vout, commitedHeader, synchronizer, feeRate) {\r\n const claimHandler = this.root.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];\r\n if (claimHandler == null)\r\n throw new base_1.SwapDataVerificationError(\"Unknown claim handler!\");\r\n if (claimHandler.getType() !== base_1.ChainSwapType.CHAIN_NONCED &&\r\n claimHandler.getType() !== base_1.ChainSwapType.CHAIN_TXID &&\r\n claimHandler.getType() !== base_1.ChainSwapType.CHAIN)\r\n throw new base_1.SwapDataVerificationError(\"Invalid claim handler!\");\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n const { initialTxns, witness } = await claimHandler.getWitness(signer, swapData, {\r\n tx,\r\n vout,\r\n requiredConfirmations,\r\n commitedHeader,\r\n btcRelay: this.root.btcRelay,\r\n synchronizer,\r\n }, feeRate);\r\n const action = this.Claim(signer, swapData, witness, claimHandler.getGas(swapData));\r\n await action.addToTxs(initialTxns, feeRate);\r\n return initialTxns;\r\n }\r\n /**\r\n * Get the estimated starknet transaction fee of the claim transaction\r\n */\r\n async getClaimFee(swapData, feeRate) {\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n let gasRequired = swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM;\r\n const claimHandler = this.root.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];\r\n if (claimHandler != null)\r\n gasRequired = (0, StarknetAction_1.sumStarknetGas)(gasRequired, claimHandler.getGas(swapData));\r\n return StarknetFees_1.StarknetFees.getGasFee(gasRequired.l1, feeRate);\r\n }\r\n}\r\nexports.StarknetSwapClaim = StarknetSwapClaim;\r\nStarknetSwapClaim.GasCosts = {\r\n CLAIM: { l1: 500, l2: 0 },\r\n CLAIM_PAY_OUT: { l1: 1000, l2: 0 }\r\n};\r\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, Signer } from '@solana/web3.js';\nimport { PublicKey, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeMultisigInstructionData {\n instruction: TokenInstruction.InitializeMultisig;\n m: number;\n}\n\n/** TODO: docs */\nexport const initializeMultisigInstructionData = struct([\n u8('instruction'),\n u8('m'),\n]);\n\n/**\n * Construct an InitializeMultisig instruction\n *\n * @param account Multisig account\n * @param signers Full set of signers\n * @param m Number of required signatures\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMultisigInstruction(\n account: PublicKey,\n signers: (Signer | PublicKey)[],\n m: number,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n for (const signer of signers) {\n keys.push({\n pubkey: signer instanceof PublicKey ? signer : signer.publicKey,\n isSigner: false,\n isWritable: false,\n });\n }\n\n const data = Buffer.alloc(initializeMultisigInstructionData.span);\n initializeMultisigInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMultisig,\n m,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMultisig instruction */\nexport interface DecodedInitializeMultisigInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n rent: AccountMeta;\n signers: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.InitializeMultisig;\n m: number;\n };\n}\n\n/**\n * Decode an InitializeMultisig instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMultisigInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeMultisigInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMultisigInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, rent, signers },\n data,\n } = decodeInitializeMultisigInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMultisig) throw new TokenInvalidInstructionTypeError();\n if (!account || !rent || !signers.length) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n rent,\n signers,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMultisig instruction */\nexport interface DecodedInitializeMultisigInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n signers: AccountMeta[];\n };\n data: {\n instruction: number;\n m: number;\n };\n}\n\n/**\n * Decode an InitializeMultisig instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMultisigInstructionUnchecked({\n programId,\n keys: [account, rent, ...signers],\n data,\n}: TransactionInstruction): DecodedInitializeMultisigInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n rent,\n signers,\n },\n data: initializeMultisigInstructionData.decode(data),\n };\n}\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.toTokenAmount = exports.toDecimal = exports.fromDecimal = exports.isToken = exports.isSCToken = exports.BitcoinTokens = exports.isBtcToken = void 0;\r\nfunction isBtcToken(obj) {\r\n return typeof (obj) === \"object\" &&\r\n obj.chain === \"BTC\" &&\r\n typeof (obj.lightning) === \"boolean\" &&\r\n typeof (obj.ticker) === \"string\" &&\r\n typeof (obj.decimals) === \"number\" &&\r\n typeof (obj.name) === \"string\";\r\n}\r\nexports.isBtcToken = isBtcToken;\r\nexports.BitcoinTokens = {\r\n BTC: {\r\n chain: \"BTC\",\r\n lightning: false,\r\n ticker: \"BTC\",\r\n decimals: 8,\r\n name: \"Bitcoin (on-chain L1)\"\r\n },\r\n BTCLN: {\r\n chain: \"BTC\",\r\n lightning: true,\r\n ticker: \"BTCLN\",\r\n decimals: 8,\r\n name: \"Bitcoin (lightning L2)\"\r\n }\r\n};\r\nfunction isSCToken(obj) {\r\n return typeof (obj) === \"object\" &&\r\n obj.chain === \"SC\" &&\r\n typeof (obj.chainId) === \"string\" &&\r\n typeof (obj.address) === \"string\" &&\r\n typeof (obj.ticker) === \"string\" &&\r\n typeof (obj.decimals) === \"number\" &&\r\n typeof (obj.name) === \"string\";\r\n}\r\nexports.isSCToken = isSCToken;\r\nfunction isToken(obj) {\r\n return isBtcToken(obj) || isSCToken(obj);\r\n}\r\nexports.isToken = isToken;\r\nfunction fromDecimal(amount, decimalCount) {\r\n if (amount.includes(\".\")) {\r\n const [before, after] = amount.split(\".\");\r\n if (decimalCount < 0) {\r\n return BigInt(before.substring(0, before.length + decimalCount));\r\n }\r\n if (after.length > decimalCount) {\r\n //Cut the last digits\r\n return BigInt((before === \"0\" ? \"\" : before) + after.substring(0, decimalCount));\r\n }\r\n return BigInt((before === \"0\" ? \"\" : before) + after.padEnd(decimalCount, \"0\"));\r\n }\r\n else {\r\n if (decimalCount < 0) {\r\n return BigInt(amount.substring(0, amount.length + decimalCount));\r\n }\r\n else {\r\n return BigInt(amount + \"0\".repeat(decimalCount));\r\n }\r\n }\r\n}\r\nexports.fromDecimal = fromDecimal;\r\nfunction toDecimal(amount, decimalCount, cut, displayDecimals) {\r\n if (decimalCount <= 0) {\r\n return amount.toString(10) + \"0\".repeat(-decimalCount);\r\n }\r\n const amountStr = amount.toString(10).padStart(decimalCount + 1, \"0\");\r\n const splitPoint = amountStr.length - decimalCount;\r\n const decimalPart = amountStr.substring(splitPoint, amountStr.length);\r\n let cutTo = decimalPart.length;\r\n if (cut && cutTo > 0) {\r\n for (let i = decimalPart.length - 1; i--; i >= 0) {\r\n if (decimalPart.charAt(i) === \"0\") {\r\n cutTo = i;\r\n }\r\n else\r\n break;\r\n }\r\n if (cutTo === 0)\r\n cutTo = 1;\r\n }\r\n if (displayDecimals === 0)\r\n return amountStr.substring(0, splitPoint);\r\n if (displayDecimals != null && cutTo > displayDecimals)\r\n cutTo = displayDecimals;\r\n return amountStr.substring(0, splitPoint) + \".\" + decimalPart.substring(0, cutTo);\r\n}\r\nexports.toDecimal = toDecimal;\r\nfunction toTokenAmount(amount, token, prices) {\r\n let amountStr = toDecimal(amount, token.decimals, undefined, token.displayDecimals);\r\n return {\r\n rawAmount: amount,\r\n amount: amountStr,\r\n _amount: parseFloat(amountStr),\r\n token,\r\n usdValue: (abortSignal, preFetchedUsdPrice) => prices.getUsdValue(amount, token, abortSignal, preFetchedUsdPrice)\r\n };\r\n}\r\nexports.toTokenAmount = toTokenAmount;\r\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n// Cast array to view\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n// The byte swap operation for uint32\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const byteSwapIfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): void {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * Convert byte array to hex string.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * Convert JS string to byte array.\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('utf8ToBytes expected string, got ' + typeof str);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/** Accepted input of hash functions. Strings are converted to byte arrays. */\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n/** For runtime check if class implements interface */\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Hash function */\nexport type CHash = ReturnType;\n/** Hash function with output */\nexport type CHashO = ReturnType;\n/** XOF with output */\nexport type CHashXO = ReturnType;\n\n/** Wraps hash function, creating an interface on top of it */\nexport function wrapConstructor>(\n hashCons: () => Hash\n): {\n (msg: Input): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(): Hash;\n} {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts: T): Hash;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts: T): HashXOF;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IFromBTCWrapper = void 0;\r\nconst ISwapWrapper_1 = require(\"../ISwapWrapper\");\r\nconst randomBytes = require(\"randombytes\");\r\nconst IntermediaryError_1 = require(\"../../errors/IntermediaryError\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nclass IFromBTCWrapper extends ISwapWrapper_1.ISwapWrapper {\r\n /**\r\n * Returns a random sequence to be used for swaps\r\n *\r\n * @protected\r\n * @returns Random 64-bit sequence number\r\n */\r\n getRandomSequence() {\r\n return base_1.BigIntBufferUtils.fromBuffer(randomBytes(8));\r\n }\r\n /**\r\n * Pre-fetches feeRate for a given swap\r\n *\r\n * @param signer Address initiating the swap\r\n * @param amountData\r\n * @param claimHash optional claim hash of the swap or null\r\n * @param abortController\r\n * @protected\r\n * @returns Fee rate\r\n */\r\n preFetchFeeRate(signer, amountData, claimHash, abortController) {\r\n return (0, Utils_1.tryWithRetries)(() => this.contract.getInitFeeRate(null, signer, amountData.token, claimHash), null, null, abortController.signal).catch(e => {\r\n this.logger.error(\"preFetchFeeRate(): Error: \", e);\r\n abortController.abort(e);\r\n return null;\r\n });\r\n }\r\n /**\r\n * Pre-fetches intermediary's available SC on-chain liquidity\r\n * @param amountData\r\n * @param lp Intermediary\r\n * @param abortController\r\n * @protected\r\n * @returns Intermediary's liquidity balance\r\n */\r\n preFetchIntermediaryLiquidity(amountData, lp, abortController) {\r\n return lp.getLiquidity(this.chainIdentifier, this.contract, amountData.token.toString(), abortController.signal).catch(e => {\r\n this.logger.error(\"preFetchIntermediaryLiquidity(): Error: \", e);\r\n abortController.abort(e);\r\n return null;\r\n });\r\n }\r\n /**\r\n * Verifies whether the intermediary has enough available liquidity such that we can initiate the swap\r\n *\r\n * @param amount Swap amount that we should receive\r\n * @param liquidityPromise pre-fetched liquidity promise as obtained from preFetchIntermediaryLiquidity()\r\n * @protected\r\n * @throws {IntermediaryError} if intermediary's liquidity is lower than what's required for the swap\r\n */\r\n async verifyIntermediaryLiquidity(amount, liquidityPromise) {\r\n const liquidity = await liquidityPromise;\r\n if (liquidity < amount)\r\n throw new IntermediaryError_1.IntermediaryError(\"Intermediary doesn't have enough liquidity\");\r\n }\r\n}\r\nexports.IFromBTCWrapper = IFromBTCWrapper;\r\n","/**\n * Internal webcrypto alias.\n * We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n * See utils.ts for details.\n * @module\n */\ndeclare const globalThis: Record | undefined;\nexport const crypto: any =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","/**\n * Utility function that works like `Object.apply`, but copies getters and setters properly as well. Additionally gives\n * the option to exclude properties by name.\n */\nconst copyProps = (dest, src, exclude = []) => {\n const props = Object.getOwnPropertyDescriptors(src);\n for (let prop of exclude)\n delete props[prop];\n Object.defineProperties(dest, props);\n};\n/**\n * Returns the full chain of prototypes up until Object.prototype given a starting object. The order of prototypes will\n * be closest to farthest in the chain.\n */\nconst protoChain = (obj, currentChain = [obj]) => {\n const proto = Object.getPrototypeOf(obj);\n if (proto === null)\n return currentChain;\n return protoChain(proto, [...currentChain, proto]);\n};\n/**\n * Identifies the nearest ancestor common to all the given objects in their prototype chains. For most unrelated\n * objects, this function should return Object.prototype.\n */\nconst nearestCommonProto = (...objs) => {\n if (objs.length === 0)\n return undefined;\n let commonProto = undefined;\n const protoChains = objs.map(obj => protoChain(obj));\n while (protoChains.every(protoChain => protoChain.length > 0)) {\n const protos = protoChains.map(protoChain => protoChain.pop());\n const potentialCommonProto = protos[0];\n if (protos.every(proto => proto === potentialCommonProto))\n commonProto = potentialCommonProto;\n else\n break;\n }\n return commonProto;\n};\n/**\n * Creates a new prototype object that is a mixture of the given prototypes. The mixing is achieved by first\n * identifying the nearest common ancestor and using it as the prototype for a new object. Then all properties/methods\n * downstream of this prototype (ONLY downstream) are copied into the new object.\n *\n * The resulting prototype is more performant than softMixProtos(...), as well as ES5 compatible. However, it's not as\n * flexible as updates to the source prototypes aren't captured by the mixed result. See softMixProtos for why you may\n * want to use that instead.\n */\nconst hardMixProtos = (ingredients, constructor, exclude = []) => {\n var _a;\n const base = (_a = nearestCommonProto(...ingredients)) !== null && _a !== void 0 ? _a : Object.prototype;\n const mixedProto = Object.create(base);\n // Keeps track of prototypes we've already visited to avoid copying the same properties multiple times. We init the\n // list with the proto chain below the nearest common ancestor because we don't want any of those methods mixed in\n // when they will already be accessible via prototype access.\n const visitedProtos = protoChain(base);\n for (let prototype of ingredients) {\n let protos = protoChain(prototype);\n // Apply the prototype chain in reverse order so that old methods don't override newer ones.\n for (let i = protos.length - 1; i >= 0; i--) {\n let newProto = protos[i];\n if (visitedProtos.indexOf(newProto) === -1) {\n copyProps(mixedProto, newProto, ['constructor', ...exclude]);\n visitedProtos.push(newProto);\n }\n }\n }\n mixedProto.constructor = constructor;\n return mixedProto;\n};\nconst unique = (arr) => arr.filter((e, i) => arr.indexOf(e) == i);\n\n/**\n * Finds the ingredient with the given prop, searching in reverse order and breadth-first if searching ingredient\n * prototypes is required.\n */\nconst getIngredientWithProp = (prop, ingredients) => {\n const protoChains = ingredients.map(ingredient => protoChain(ingredient));\n // since we search breadth-first, we need to keep track of our depth in the prototype chains\n let protoDepth = 0;\n // not all prototype chains are the same depth, so this remains true as long as at least one of the ingredients'\n // prototype chains has an object at this depth\n let protosAreLeftToSearch = true;\n while (protosAreLeftToSearch) {\n // with the start of each horizontal slice, we assume this is the one that's deeper than any of the proto chains\n protosAreLeftToSearch = false;\n // scan through the ingredients right to left\n for (let i = ingredients.length - 1; i >= 0; i--) {\n const searchTarget = protoChains[i][protoDepth];\n if (searchTarget !== undefined && searchTarget !== null) {\n // if we find something, this is proof that this horizontal slice potentially more objects to search\n protosAreLeftToSearch = true;\n // eureka, we found it\n if (Object.getOwnPropertyDescriptor(searchTarget, prop) != undefined) {\n return protoChains[i][0];\n }\n }\n }\n protoDepth++;\n }\n return undefined;\n};\n/**\n * \"Mixes\" ingredients by wrapping them in a Proxy. The optional prototype argument allows the mixed object to sit\n * downstream of an existing prototype chain. Note that \"properties\" cannot be added, deleted, or modified.\n */\nconst proxyMix = (ingredients, prototype = Object.prototype) => new Proxy({}, {\n getPrototypeOf() {\n return prototype;\n },\n setPrototypeOf() {\n throw Error('Cannot set prototype of Proxies created by ts-mixer');\n },\n getOwnPropertyDescriptor(_, prop) {\n return Object.getOwnPropertyDescriptor(getIngredientWithProp(prop, ingredients) || {}, prop);\n },\n defineProperty() {\n throw new Error('Cannot define new properties on Proxies created by ts-mixer');\n },\n has(_, prop) {\n return getIngredientWithProp(prop, ingredients) !== undefined || prototype[prop] !== undefined;\n },\n get(_, prop) {\n return (getIngredientWithProp(prop, ingredients) || prototype)[prop];\n },\n set(_, prop, val) {\n const ingredientWithProp = getIngredientWithProp(prop, ingredients);\n if (ingredientWithProp === undefined)\n throw new Error('Cannot set new properties on Proxies created by ts-mixer');\n ingredientWithProp[prop] = val;\n return true;\n },\n deleteProperty() {\n throw new Error('Cannot delete properties on Proxies created by ts-mixer');\n },\n ownKeys() {\n return ingredients\n .map(Object.getOwnPropertyNames)\n .reduce((prev, curr) => curr.concat(prev.filter(key => curr.indexOf(key) < 0)));\n },\n});\n/**\n * Creates a new proxy-prototype object that is a \"soft\" mixture of the given prototypes. The mixing is achieved by\n * proxying all property access to the ingredients. This is not ES5 compatible and less performant. However, any\n * changes made to the source prototypes will be reflected in the proxy-prototype, which may be desirable.\n */\nconst softMixProtos = (ingredients, constructor) => proxyMix([...ingredients, { constructor }]);\n\nconst settings = {\n initFunction: null,\n staticsStrategy: 'copy',\n prototypeStrategy: 'copy',\n decoratorInheritance: 'deep',\n};\n\n// Keeps track of constituent classes for every mixin class created by ts-mixer.\nconst mixins = new WeakMap();\nconst getMixinsForClass = (clazz) => mixins.get(clazz);\nconst registerMixins = (mixedClass, constituents) => mixins.set(mixedClass, constituents);\nconst hasMixin = (instance, mixin) => {\n if (instance instanceof mixin)\n return true;\n const constructor = instance.constructor;\n const visited = new Set();\n let frontier = new Set();\n frontier.add(constructor);\n while (frontier.size > 0) {\n // check if the frontier has the mixin we're looking for. if not, we can say we visited every item in the frontier\n if (frontier.has(mixin))\n return true;\n frontier.forEach((item) => visited.add(item));\n // build a new frontier based on the associated mixin classes and prototype chains of each frontier item\n const newFrontier = new Set();\n frontier.forEach((item) => {\n var _a;\n const itemConstituents = (_a = mixins.get(item)) !== null && _a !== void 0 ? _a : protoChain(item.prototype)\n .map((proto) => proto.constructor)\n .filter((item) => item !== null);\n if (itemConstituents)\n itemConstituents.forEach((constituent) => {\n if (!visited.has(constituent) && !frontier.has(constituent))\n newFrontier.add(constituent);\n });\n });\n // we have a new frontier, now search again\n frontier = newFrontier;\n }\n // if we get here, we couldn't find the mixin anywhere in the prototype chain or associated mixin classes\n return false;\n};\n\nconst mergeObjectsOfDecorators = (o1, o2) => {\n var _a, _b;\n const allKeys = unique([...Object.getOwnPropertyNames(o1), ...Object.getOwnPropertyNames(o2)]);\n const mergedObject = {};\n for (let key of allKeys)\n mergedObject[key] = unique([...((_a = o1 === null || o1 === void 0 ? void 0 : o1[key]) !== null && _a !== void 0 ? _a : []), ...((_b = o2 === null || o2 === void 0 ? void 0 : o2[key]) !== null && _b !== void 0 ? _b : [])]);\n return mergedObject;\n};\nconst mergePropertyAndMethodDecorators = (d1, d2) => {\n var _a, _b, _c, _d;\n return ({\n property: mergeObjectsOfDecorators((_a = d1 === null || d1 === void 0 ? void 0 : d1.property) !== null && _a !== void 0 ? _a : {}, (_b = d2 === null || d2 === void 0 ? void 0 : d2.property) !== null && _b !== void 0 ? _b : {}),\n method: mergeObjectsOfDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.method) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.method) !== null && _d !== void 0 ? _d : {}),\n });\n};\nconst mergeDecorators = (d1, d2) => {\n var _a, _b, _c, _d, _e, _f;\n return ({\n class: unique([...(_a = d1 === null || d1 === void 0 ? void 0 : d1.class) !== null && _a !== void 0 ? _a : [], ...(_b = d2 === null || d2 === void 0 ? void 0 : d2.class) !== null && _b !== void 0 ? _b : []]),\n static: mergePropertyAndMethodDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.static) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.static) !== null && _d !== void 0 ? _d : {}),\n instance: mergePropertyAndMethodDecorators((_e = d1 === null || d1 === void 0 ? void 0 : d1.instance) !== null && _e !== void 0 ? _e : {}, (_f = d2 === null || d2 === void 0 ? void 0 : d2.instance) !== null && _f !== void 0 ? _f : {}),\n });\n};\nconst decorators = new Map();\nconst findAllConstituentClasses = (...classes) => {\n var _a;\n const allClasses = new Set();\n const frontier = new Set([...classes]);\n while (frontier.size > 0) {\n for (let clazz of frontier) {\n const protoChainClasses = protoChain(clazz.prototype).map(proto => proto.constructor);\n const mixinClasses = (_a = getMixinsForClass(clazz)) !== null && _a !== void 0 ? _a : [];\n const potentiallyNewClasses = [...protoChainClasses, ...mixinClasses];\n const newClasses = potentiallyNewClasses.filter(c => !allClasses.has(c));\n for (let newClass of newClasses)\n frontier.add(newClass);\n allClasses.add(clazz);\n frontier.delete(clazz);\n }\n }\n return [...allClasses];\n};\nconst deepDecoratorSearch = (...classes) => {\n const decoratorsForClassChain = findAllConstituentClasses(...classes)\n .map(clazz => decorators.get(clazz))\n .filter(decorators => !!decorators);\n if (decoratorsForClassChain.length == 0)\n return {};\n if (decoratorsForClassChain.length == 1)\n return decoratorsForClassChain[0];\n return decoratorsForClassChain.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst directDecoratorSearch = (...classes) => {\n const classDecorators = classes.map(clazz => getDecoratorsForClass(clazz));\n if (classDecorators.length === 0)\n return {};\n if (classDecorators.length === 1)\n return classDecorators[0];\n return classDecorators.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst getDecoratorsForClass = (clazz) => {\n let decoratorsForClass = decorators.get(clazz);\n if (!decoratorsForClass) {\n decoratorsForClass = {};\n decorators.set(clazz, decoratorsForClass);\n }\n return decoratorsForClass;\n};\nconst decorateClass = (decorator) => ((clazz) => {\n const decoratorsForClass = getDecoratorsForClass(clazz);\n let classDecorators = decoratorsForClass.class;\n if (!classDecorators) {\n classDecorators = [];\n decoratorsForClass.class = classDecorators;\n }\n classDecorators.push(decorator);\n return decorator(clazz);\n});\nconst decorateMember = (decorator) => ((object, key, ...otherArgs) => {\n var _a, _b, _c;\n const decoratorTargetType = typeof object === 'function' ? 'static' : 'instance';\n const decoratorType = typeof object[key] === 'function' ? 'method' : 'property';\n const clazz = decoratorTargetType === 'static' ? object : object.constructor;\n const decoratorsForClass = getDecoratorsForClass(clazz);\n const decoratorsForTargetType = (_a = decoratorsForClass === null || decoratorsForClass === void 0 ? void 0 : decoratorsForClass[decoratorTargetType]) !== null && _a !== void 0 ? _a : {};\n decoratorsForClass[decoratorTargetType] = decoratorsForTargetType;\n let decoratorsForType = (_b = decoratorsForTargetType === null || decoratorsForTargetType === void 0 ? void 0 : decoratorsForTargetType[decoratorType]) !== null && _b !== void 0 ? _b : {};\n decoratorsForTargetType[decoratorType] = decoratorsForType;\n let decoratorsForKey = (_c = decoratorsForType === null || decoratorsForType === void 0 ? void 0 : decoratorsForType[key]) !== null && _c !== void 0 ? _c : [];\n decoratorsForType[key] = decoratorsForKey;\n // @ts-ignore: array is type `A[] | B[]` and item is type `A | B`, so technically a type error, but it's fine\n decoratorsForKey.push(decorator);\n // @ts-ignore\n return decorator(object, key, ...otherArgs);\n});\nconst decorate = (decorator) => ((...args) => {\n if (args.length === 1)\n return decorateClass(decorator)(args[0]);\n return decorateMember(decorator)(...args);\n});\n\nfunction Mixin(...constructors) {\n var _a, _b, _c;\n const prototypes = constructors.map(constructor => constructor.prototype);\n // Here we gather up the init functions of the ingredient prototypes, combine them into one init function, and\n // attach it to the mixed class prototype. The reason we do this is because we want the init functions to mix\n // similarly to constructors -- not methods, which simply override each other.\n const initFunctionName = settings.initFunction;\n if (initFunctionName !== null) {\n const initFunctions = prototypes\n .map(proto => proto[initFunctionName])\n .filter(func => typeof func === 'function');\n const combinedInitFunction = function (...args) {\n for (let initFunction of initFunctions)\n initFunction.apply(this, args);\n };\n const extraProto = { [initFunctionName]: combinedInitFunction };\n prototypes.push(extraProto);\n }\n function MixedClass(...args) {\n for (const constructor of constructors)\n // @ts-ignore: potentially abstract class\n copyProps(this, new constructor(...args));\n if (initFunctionName !== null && typeof this[initFunctionName] === 'function')\n this[initFunctionName].apply(this, args);\n }\n MixedClass.prototype = settings.prototypeStrategy === 'copy'\n ? hardMixProtos(prototypes, MixedClass)\n : softMixProtos(prototypes, MixedClass);\n Object.setPrototypeOf(MixedClass, settings.staticsStrategy === 'copy'\n ? hardMixProtos(constructors, null, ['prototype'])\n : proxyMix(constructors, Function.prototype));\n let DecoratedMixedClass = MixedClass;\n if (settings.decoratorInheritance !== 'none') {\n const classDecorators = settings.decoratorInheritance === 'deep'\n ? deepDecoratorSearch(...constructors)\n : directDecoratorSearch(...constructors);\n for (let decorator of (_a = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.class) !== null && _a !== void 0 ? _a : []) {\n const result = decorator(DecoratedMixedClass);\n if (result) {\n DecoratedMixedClass = result;\n }\n }\n applyPropAndMethodDecorators((_b = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.static) !== null && _b !== void 0 ? _b : {}, DecoratedMixedClass);\n applyPropAndMethodDecorators((_c = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.instance) !== null && _c !== void 0 ? _c : {}, DecoratedMixedClass.prototype);\n }\n registerMixins(DecoratedMixedClass, constructors);\n return DecoratedMixedClass;\n}\nconst applyPropAndMethodDecorators = (propAndMethodDecorators, target) => {\n const propDecorators = propAndMethodDecorators.property;\n const methodDecorators = propAndMethodDecorators.method;\n if (propDecorators)\n for (let key in propDecorators)\n for (let decorator of propDecorators[key])\n decorator(target, key);\n if (methodDecorators)\n for (let key in methodDecorators)\n for (let decorator of methodDecorators[key])\n decorator(target, key, Object.getOwnPropertyDescriptor(target, key));\n};\n/**\n * A decorator version of the `Mixin` function. You'll want to use this instead of `Mixin` for mixing generic classes.\n */\nconst mix = (...ingredients) => decoratedClass => {\n // @ts-ignore\n const mixedClass = Mixin(...ingredients.concat([decoratedClass]));\n Object.defineProperty(mixedClass, 'name', {\n value: decoratedClass.name,\n writable: false,\n });\n return mixedClass;\n};\n\nexport { Mixin, decorate, hasMixin, mix, settings };\n","var lowerCase = require('lower-case')\n\nvar NON_WORD_REGEXP = require('./vendor/non-word-regexp')\nvar CAMEL_CASE_REGEXP = require('./vendor/camel-case-regexp')\nvar CAMEL_CASE_UPPER_REGEXP = require('./vendor/camel-case-upper-regexp')\n\n/**\n * Sentence case a string.\n *\n * @param {string} str\n * @param {string} locale\n * @param {string} replacement\n * @return {string}\n */\nmodule.exports = function (str, locale, replacement) {\n if (str == null) {\n return ''\n }\n\n replacement = typeof replacement !== 'string' ? ' ' : replacement\n\n function replace (match, index, value) {\n if (index === 0 || index === (value.length - match.length)) {\n return ''\n }\n\n return replacement\n }\n\n str = String(str)\n // Support camel case (\"camelCase\" -> \"camel Case\").\n .replace(CAMEL_CASE_REGEXP, '$1 $2')\n // Support odd camel case (\"CAMELCase\" -> \"CAMEL Case\").\n .replace(CAMEL_CASE_UPPER_REGEXP, '$1 $2')\n // Remove all non-word characters and replace with a single space.\n .replace(NON_WORD_REGEXP, replace)\n\n // Lower case the entire string.\n return lowerCase(str, locale)\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { Keypair, sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createInitializeMultisigInstruction } from '../instructions/initializeMultisig.js';\nimport { getMinimumBalanceForRentExemptMultisig, MULTISIG_SIZE } from '../state/multisig.js';\n\n/**\n * Create and initialize a new multisig\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param signers Full set of signers\n * @param m Number of required signatures\n * @param keypair Optional keypair, defaulting to a new random one\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Address of the new multisig\n */\nexport async function createMultisig(\n connection: Connection,\n payer: Signer,\n signers: PublicKey[],\n m: number,\n keypair = Keypair.generate(),\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const lamports = await getMinimumBalanceForRentExemptMultisig(connection);\n\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space: MULTISIG_SIZE,\n lamports,\n programId,\n }),\n createInitializeMultisigInstruction(keypair.publicKey, signers, m, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n\n return keypair.publicKey;\n}\n","/**\n * NIST secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).\n *\n * Seems to be rigid (not backdoored)\n * [as per discussion](https://bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975).\n *\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * [See explanation](https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066).\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { createCurve, type CurveFnWithCreate } from './_shortw_utils.js';\nimport { createHasher, type HTFMethod, isogenyMap } from './abstract/hash-to-curve.js';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport type { Hex, PrivKey } from './abstract/utils.js';\nimport {\n aInRange,\n bytesToNumberBE,\n concatBytes,\n ensureBytes,\n inRange,\n numberToBytesBE,\n} from './abstract/utils.js';\nimport { mapToCurveSimpleSWU, type ProjPointType as PointType } from './abstract/weierstrass.js';\n\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a: bigint, b: bigint) => (a + b / _2n) / b;\n\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y: bigint): bigint {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fpk1.eql(Fpk1.sqr(root), y)) throw new Error('Cannot find square root');\n return root;\n}\n\nconst Fpk1 = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\n\n/**\n * secp256k1 short weierstrass curve and ECDSA signatures over it.\n *\n * @example\n * import { secp256k1 } from '@noble/curves/secp256k1';\n *\n * const priv = secp256k1.utils.randomPrivateKey();\n * const pub = secp256k1.getPublicKey(priv);\n * const msg = new Uint8Array(32).fill(1); // message hash (not message) in ecdsa\n * const sig = secp256k1.sign(msg, priv); // `{prehash: true}` option is available\n * const isValid = secp256k1.verify(sig, msg, pub) === true;\n */\nexport const secp256k1: CurveFnWithCreate = createCurve(\n {\n a: BigInt(0), // equation params: a, b\n b: BigInt(7),\n Fp: Fpk1, // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n\n n: secp256k1N, // Curve order, total count of valid points in the field\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1), // Cofactor\n lowS: true, // Allow only low-S signatures by default in sign() and verify()\n endo: {\n // Endomorphism, see above\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k: bigint) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg) k1 = n - k1;\n if (k2neg) k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n },\n sha256\n);\n\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES: { [tag: string]: Uint8Array } = {};\nfunction taggedHash(tag: string, ...messages: Uint8Array[]): Uint8Array {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point: PointType) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n: bigint) => numberToBytesBE(n, 32);\nconst modP = (x: bigint) => mod(x, secp256k1P);\nconst modN = (x: bigint) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q: PointType, a: bigint, b: bigint) =>\n Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv: PrivKey) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x: bigint): PointType {\n aInRange('x', x, _1n, secp256k1P); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n) y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args: Uint8Array[]): bigint {\n return modN(num(taggedHash('BIP0340/challenge', ...args)));\n}\n\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey: Hex): Uint8Array {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(\n message: Hex,\n privateKey: PrivKey,\n auxRand: Hex = randomBytes(32)\n): Uint8Array {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(num(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n) throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px)) throw new Error('sign: Invalid signature produced');\n return sig;\n}\n\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature: Hex, message: Hex, publicKey: Hex): boolean {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!inRange(r, _1n, secp256k1P)) return false;\n const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!inRange(s, _1n, secp256k1N)) return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r) return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n } catch (error) {\n return false;\n }\n}\n\nexport type SecpSchnorr = {\n getPublicKey: typeof schnorrGetPublicKey;\n sign: typeof schnorrSign;\n verify: typeof schnorrVerify;\n utils: {\n randomPrivateKey: () => Uint8Array;\n lift_x: typeof lift_x;\n pointToBytes: (point: PointType) => Uint8Array;\n numberToBytesBE: typeof numberToBytesBE;\n bytesToNumberBE: typeof bytesToNumberBE;\n taggedHash: typeof taggedHash;\n mod: typeof mod;\n };\n};\n/**\n * Schnorr signatures over secp256k1.\n * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n * @example\n * import { schnorr } from '@noble/curves/secp256k1';\n * const priv = schnorr.utils.randomPrivateKey();\n * const pub = schnorr.getPublicKey(priv);\n * const msg = new TextEncoder().encode('hello');\n * const sig = schnorr.sign(msg, priv);\n * const isValid = schnorr.verify(sig, msg, pub);\n */\nexport const schnorr: SecpSchnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\n\nconst isoMap = /* @__PURE__ */ (() =>\n isogenyMap(\n Fpk1,\n [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n ].map((i) => i.map((j) => BigInt(j))) as [bigint[], bigint[], bigint[], bigint[]]\n ))();\nconst mapSWU = /* @__PURE__ */ (() =>\n mapToCurveSimpleSWU(Fpk1, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fpk1.create(BigInt('-11')),\n }))();\nconst htf = /* @__PURE__ */ (() =>\n createHasher(\n secp256k1.ProjectivePoint,\n (scalars: bigint[]) => {\n const { x, y } = mapSWU(Fpk1.create(scalars[0]));\n return isoMap(x, y);\n },\n {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fpk1.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n }\n ))();\n\n/** secp256k1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */\nexport const hashToCurve: HTFMethod = /* @__PURE__ */ (() => htf.hashToCurve)();\n\n/** secp256k1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */\nexport const encodeToCurve: HTFMethod = /* @__PURE__ */ (() => htf.encodeToCurve)();\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\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// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_south = void 0;\nvar ic_south = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M19,15l-1.41-1.41L13,18.17V2H11v16.17l-4.59-4.59L5,15l7,7L19,15z\"\n },\n \"children\": []\n }]\n};\nexports.ic_south = ic_south;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaSigner = void 0;\r\nclass SolanaSigner {\r\n constructor(wallet, keypair) {\r\n this.wallet = wallet;\r\n this.keypair = keypair;\r\n }\r\n getPublicKey() {\r\n return this.wallet.publicKey;\r\n }\r\n getAddress() {\r\n return this.wallet.publicKey.toString();\r\n }\r\n}\r\nexports.SolanaSigner = SolanaSigner;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","'use strict';\n\n\nconst zlib_deflate = require('./zlib/deflate');\nconst utils = require('./utils/common');\nconst strings = require('./utils/strings');\nconst msg = require('./zlib/messages');\nconst ZStream = require('./zlib/zstream');\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END,\n Z_DEFAULT_COMPRESSION,\n Z_DEFAULT_STRATEGY,\n Z_DEFLATED\n} = require('./zlib/constants');\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n let status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = zlib_deflate.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n this.result = utils.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n const deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nmodule.exports.Deflate = Deflate;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateRaw = deflateRaw;\nmodule.exports.gzip = gzip;\nmodule.exports.constants = require('./zlib/constants');\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","export * from './actions.js';\nexport * from './instructions.js';\nexport * from './state.js';\n","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { aexists, aoutput } from './_assert.js';\nimport { type Input, Hash, createView, toBytes } from './utils.js';\n\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(\n view: DataView,\n byteOffset: number,\n value: bigint,\n isLE: boolean\n): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\n/** Choice: a ? b : c */\nexport function Chi(a: number, b: number, c: number): number {\n return (a & b) ^ (~a & c);\n}\n\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a: number, b: number, c: number): number {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD> extends Hash {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(\n readonly blockLen: number,\n public outputLen: number,\n readonly padOffset: number,\n readonly isLE: boolean\n ) {\n super();\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n aexists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest(): Uint8Array {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createBurnInstruction } from '../instructions/burn.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Burn tokens from an account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to burn tokens from\n * @param mint Mint for the account\n * @param owner Account owner\n * @param amount Amount to burn\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function burn(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n mint: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createBurnInstruction(account, mint, ownerPublicKey, amount, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createFreezeAccountInstruction } from '../instructions/freezeAccount.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Freeze a token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to freeze\n * @param mint Mint for the account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function freezeAccount(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n mint: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createFreezeAccountInstruction(account, mint, authorityPublicKey, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","\"use strict\";\n// disabling this lint on this whole file because Store should be abstract\n// but we have implementations in the wild that may not implement all features\n/* eslint-disable @typescript-eslint/no-unused-vars */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Store = void 0;\n/**\n * Base class for {@link CookieJar} stores.\n *\n * The storage model for each {@link CookieJar} instance can be replaced with a custom implementation. The default is\n * {@link MemoryCookieStore}.\n *\n * @remarks\n * - Stores should inherit from the base Store class, which is available as a top-level export.\n *\n * - Stores are asynchronous by default, but if {@link Store.synchronous} is set to true, then the `*Sync` methods\n * of the containing {@link CookieJar} can be used.\n *\n * @public\n */\nclass Store {\n constructor() {\n this.synchronous = false;\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n findCookie(_domain, _path, _key, _callback) {\n throw new Error('findCookie is not implemented');\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n findCookies(_domain, _path, _allowSpecialUseDomain = false, _callback) {\n throw new Error('findCookies is not implemented');\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n putCookie(_cookie, _callback) {\n throw new Error('putCookie is not implemented');\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n updateCookie(_oldCookie, _newCookie, _callback) {\n // recommended default implementation:\n // return this.putCookie(newCookie, cb);\n throw new Error('updateCookie is not implemented');\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n removeCookie(_domain, _path, _key, _callback) {\n throw new Error('removeCookie is not implemented');\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n removeCookies(_domain, _path, _callback) {\n throw new Error('removeCookies is not implemented');\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n removeAllCookies(_callback) {\n throw new Error('removeAllCookies is not implemented');\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n getAllCookies(_callback) {\n throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)');\n }\n}\nexports.Store = Store;\n",null,"\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.SvgIcon = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _camelCase = _interopRequireDefault(require(\"camel-case\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction notNullOrUndef(val) {\n return val !== null && val !== undefined;\n}\n\nfunction expandStyle() {\n var style = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return style.split(';').reduce(function (partial, next) {\n // next h ere is key:val\n var _next$split = next.split(':'),\n _next$split2 = _slicedToArray(_next$split, 2),\n key = _next$split2[0],\n val = _next$split2[1];\n\n if (notNullOrUndef(key) && notNullOrUndef(val)) {\n partial[(0, _camelCase.default)(key)] = val;\n }\n\n return partial;\n }, {});\n}\n\nvar walkChildren = function walkChildren(children) {\n return children.map(function (child, idx) {\n var name = child.name,\n attribsMap = child.attribs,\n _child$children = child.children,\n gchildren = _child$children === void 0 ? null : _child$children; //fill, stroke\n\n var attribs = Object.keys(attribsMap).filter(function (key) {\n return key !== 'fill' && key !== 'stroke' && attribsMap[key] !== 'none';\n }).reduce(function (partial, key) {\n if (key === 'style') {\n partial.style = expandStyle(attribsMap[key]);\n } else {\n partial[(0, _camelCase.default)(key)] = attribsMap[key];\n }\n\n return partial;\n }, {}); //special case, it has fill and stroke at the same time\n\n var merge = {};\n\n if (attribsMap.fill === 'none' && attribsMap.stroke) {\n merge = {\n fill: 'none',\n stroke: 'currentColor'\n };\n } else if (attribsMap.fill === 'none') {\n merge = {\n fill: 'none'\n };\n }\n\n return (0, _react.createElement)(name, _objectSpread({\n key: idx\n }, attribs, merge), gchildren === null ? gchildren : walkChildren(gchildren));\n });\n};\n\nvar SvgIcon = function SvgIcon(props) {\n var size = props.size;\n var _props$icon = props.icon,\n children = _props$icon.children,\n viewBox = _props$icon.viewBox,\n _props$icon$attribs = _props$icon.attribs,\n svgAttribs = _props$icon$attribs === void 0 ? {} : _props$icon$attribs;\n var camelCasedAttribs = Object.keys(svgAttribs).reduce(function (partial, key) {\n partial[(0, _camelCase.default)(key)] = svgAttribs[key];\n return partial;\n }, {});\n return _react.default.createElement(\"svg\", _extends({\n fill: \"currentColor\",\n style: {\n display: 'inline-block',\n verticalAlign: 'middle'\n },\n height: size,\n width: size,\n viewBox: viewBox\n }, camelCasedAttribs), props.title ? _react.default.createElement(\"title\", null, props.title) : null, walkChildren(children));\n};\n\nexports.SvgIcon = SvgIcon;\nSvgIcon.defaultProps = {\n size: 16\n};\nSvgIcon.propTypes = {\n icon: _propTypes.default.object.isRequired,\n size: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n title: _propTypes.default.string\n};\nvar _default = SvgIcon;\nexports.default = _default;",null,"\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetModule = void 0;\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass StarknetModule {\r\n constructor(root) {\r\n this.logger = (0, Utils_1.getLogger)(this.constructor.name + \": \");\r\n this.provider = root.provider;\r\n this.retryPolicy = root.retryPolicy;\r\n this.root = root;\r\n }\r\n}\r\nexports.StarknetModule = StarknetModule;\r\n","/**\n * RIPEMD-160 legacy hash function.\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n * @module\n */\nimport { HashMD } from './_md.js';\nimport { rotl, wrapConstructor, type CHash } from './utils.js';\n\nconst Rho = /* @__PURE__ */ new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = /* @__PURE__ */ new Uint8Array(new Array(16).fill(0).map((_, i) => i));\nconst Pi = /* @__PURE__ */ Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++) for (let j of [idxL, idxR]) j.push(j[i].map((k) => Rho[k]));\n\nconst shifts = /* @__PURE__ */ [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = /* @__PURE__ */ new Uint32Array([\n 0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\nconst Kr = /* @__PURE__ */ new Uint32Array([\n 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// It's called f() in spec.\nfunction f(group: number, x: number, y: number, z: number): number {\n if (group === 0) return x ^ y ^ z;\n else if (group === 1) return (x & y) | (~x & z);\n else if (group === 2) return (x | ~y) ^ z;\n else if (group === 3) return (x & z) | (y & ~z);\n else return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst R_BUF = /* @__PURE__ */ new Uint32Array(16);\nexport class RIPEMD160 extends HashMD {\n private h0 = 0x67452301 | 0;\n private h1 = 0xefcdab89 | 0;\n private h2 = 0x98badcfe | 0;\n private h3 = 0x10325476 | 0;\n private h4 = 0xc3d2e1f0 | 0;\n\n constructor() {\n super(64, 20, 8, true);\n }\n protected get(): [number, number, number, number, number] {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n protected set(h0: number, h1: number, h2: number, h3: number, h4: number): void {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n protected process(view: DataView, offset: number): void {\n for (let i = 0; i < 16; i++, offset += 4) R_BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al,\n bl = this.h1 | 0, br = bl,\n cl = this.h2 | 0, cr = cl,\n dl = this.h3 | 0, dr = dl,\n el = this.h4 | 0, er = el;\n\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + R_BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + R_BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set(\n (this.h1 + cl + dr) | 0,\n (this.h2 + dl + er) | 0,\n (this.h3 + el + ar) | 0,\n (this.h4 + al + br) | 0,\n (this.h0 + bl + cr) | 0\n );\n }\n protected roundClean(): void {\n R_BUF.fill(0);\n }\n destroy(): void {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n\n/** RIPEMD-160 - a legacy hash function from 1990s. */\nexport const ripemd160: CHash = /* @__PURE__ */ wrapConstructor(() => new RIPEMD160());\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StatePredictorUtils = void 0;\r\nconst buffer_1 = require(\"buffer\");\r\nconst BigIntBufferUtils_1 = require(\"../../utils/BigIntBufferUtils\");\r\nclass StatePredictorUtils {\r\n static gtBuffer(a, b) {\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i] > b[i])\r\n return true;\r\n if (a[i] < b[i])\r\n return false;\r\n }\r\n return false;\r\n }\r\n static divInPlace(arr, divisor) {\r\n let remainder = 0;\r\n for (let i = 0; i < 32; i++) {\r\n const val = arr[i] + remainder;\r\n const result = Math.floor(val / divisor);\r\n remainder = (val % divisor) * 256;\r\n arr[i] = result;\r\n }\r\n }\r\n static addInPlace(arr, add) {\r\n let remainder = 0;\r\n for (let i = 0; i < 32; i++) {\r\n const pos = 31 - i;\r\n const val = arr[pos] + add[pos] + remainder;\r\n const byte = val & 0xFF;\r\n remainder = val >> 8;\r\n arr[pos] = byte;\r\n }\r\n }\r\n static nbitsToTarget(nbits) {\r\n const target = buffer_1.Buffer.alloc(32, 0);\r\n const nSize = (nbits >> 24) & 0xFF;\r\n const nWord = [\r\n ((nbits >> 16) & 0x7F),\r\n ((nbits >> 8) & 0xFF),\r\n ((nbits) & 0xFF)\r\n ];\r\n const start = 32 - nSize;\r\n for (let i = 0; i < 3; i++) {\r\n if (start + i < 32) {\r\n target[start + i] = nWord[i];\r\n }\r\n }\r\n return target;\r\n }\r\n static getDifficulty(nbits) {\r\n const target = StatePredictorUtils.nbitsToTarget(nbits);\r\n let start = 0;\r\n for (let i = 0; i < 32; i++) {\r\n if (target[i] > 0) {\r\n start = i;\r\n break;\r\n }\r\n }\r\n const shift = 32 - start - 3;\r\n let num = 0;\r\n for (let i = 0; i < 3; i++) {\r\n num |= target[start + i] << ((2 - i) * 8);\r\n }\r\n const arr = buffer_1.Buffer.from(\"00000000FFFF0000000000000000000000000000000000000000000000000000\", \"hex\");\r\n StatePredictorUtils.divInPlace(arr, num);\r\n const result = buffer_1.Buffer.alloc(32, 0);\r\n for (let i = 0; i < 32 - shift; i++) {\r\n result[i + shift] = arr[i];\r\n }\r\n return result;\r\n }\r\n static getChainwork(nbits) {\r\n const target = StatePredictorUtils.nbitsToTarget(nbits);\r\n const targetBN = BigIntBufferUtils_1.BigIntBufferUtils.fromBuffer(target);\r\n return BigIntBufferUtils_1.BigIntBufferUtils.toBuffer(((~targetBN & 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn) / (targetBN + 1n)) + 1n, \"be\", 32);\r\n }\r\n}\r\nexports.StatePredictorUtils = StatePredictorUtils;\r\nStatePredictorUtils.DIFF_ADJUSTMENT_PERIOD = 2016;\r\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetAddresses = void 0;\r\nconst StarknetModule_1 = require(\"../StarknetModule\");\r\nconst starknet_1 = require(\"starknet\");\r\nclass StarknetAddresses extends StarknetModule_1.StarknetModule {\r\n ///////////////////\r\n //// Address utils\r\n /**\r\n * Checks whether an address is a valid starknet address\r\n *\r\n * @param value\r\n */\r\n isValidAddress(value) {\r\n if (value.length !== 66)\r\n return false;\r\n try {\r\n (0, starknet_1.validateAndParseAddress)(value);\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n}\r\nexports.StarknetAddresses = StarknetAddresses;\r\n","\"use strict\";\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Cookie = void 0;\n/*!\n * Copyright (c) 2015-2020, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nconst getPublicSuffix_1 = require(\"../getPublicSuffix\");\nconst validators = __importStar(require(\"../validators\"));\nconst utils_1 = require(\"../utils\");\nconst formatDate_1 = require(\"./formatDate\");\nconst parseDate_1 = require(\"./parseDate\");\nconst canonicalDomain_1 = require(\"./canonicalDomain\");\n// From RFC6265 S4.1.1\n// note that it excludes \\x3B \";\"\nconst COOKIE_OCTETS = /^[\\x21\\x23-\\x2B\\x2D-\\x3A\\x3C-\\x5B\\x5D-\\x7E]+$/;\n// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or \";\"'\n// Note ';' is \\x3B\nconst PATH_VALUE = /[\\x20-\\x3A\\x3C-\\x7E]+/;\n// eslint-disable-next-line no-control-regex\nconst CONTROL_CHARS = /[\\x00-\\x1F]/;\n// From Chromium // '\\r', '\\n' and '\\0' should be treated as a terminator in\n// the \"relaxed\" mode, see:\n// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60\nconst TERMINATORS = ['\\n', '\\r', '\\0'];\nfunction trimTerminator(str) {\n if (validators.isEmptyString(str))\n return str;\n for (let t = 0; t < TERMINATORS.length; t++) {\n const terminator = TERMINATORS[t];\n const terminatorIdx = terminator ? str.indexOf(terminator) : -1;\n if (terminatorIdx !== -1) {\n str = str.slice(0, terminatorIdx);\n }\n }\n return str;\n}\nfunction parseCookiePair(cookiePair, looseMode) {\n cookiePair = trimTerminator(cookiePair);\n let firstEq = cookiePair.indexOf('=');\n if (looseMode) {\n if (firstEq === 0) {\n // '=' is immediately at start\n cookiePair = cookiePair.substring(1);\n firstEq = cookiePair.indexOf('='); // might still need to split on '='\n }\n }\n else {\n // non-loose mode\n if (firstEq <= 0) {\n // no '=' or is at start\n return undefined; // needs to have non-empty \"cookie-name\"\n }\n }\n let cookieName, cookieValue;\n if (firstEq <= 0) {\n cookieName = '';\n cookieValue = cookiePair.trim();\n }\n else {\n cookieName = cookiePair.slice(0, firstEq).trim();\n cookieValue = cookiePair.slice(firstEq + 1).trim();\n }\n if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {\n return undefined;\n }\n const c = new Cookie();\n c.key = cookieName;\n c.value = cookieValue;\n return c;\n}\nfunction parse(str, options) {\n if (validators.isEmptyString(str) || !validators.isString(str)) {\n return undefined;\n }\n str = str.trim();\n // We use a regex to parse the \"name-value-pair\" part of S5.2\n const firstSemi = str.indexOf(';'); // S5.2 step 1\n const cookiePair = firstSemi === -1 ? str : str.slice(0, firstSemi);\n const c = parseCookiePair(cookiePair, options?.loose ?? false);\n if (!c) {\n return undefined;\n }\n if (firstSemi === -1) {\n return c;\n }\n // S5.2.3 \"unparsed-attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\" plus later on in the same section\n // \"discard the first \";\" and trim\".\n const unparsed = str.slice(firstSemi + 1).trim();\n // \"If the unparsed-attributes string is empty, skip the rest of these\n // steps.\"\n if (unparsed.length === 0) {\n return c;\n }\n /*\n * S5.2 says that when looping over the items \"[p]rocess the attribute-name\n * and attribute-value according to the requirements in the following\n * subsections\" for every item. Plus, for many of the individual attributes\n * in S5.3 it says to use the \"attribute-value of the last attribute in the\n * cookie-attribute-list\". Therefore, in this implementation, we overwrite\n * the previous value.\n */\n const cookie_avs = unparsed.split(';');\n while (cookie_avs.length) {\n const av = (cookie_avs.shift() ?? '').trim();\n if (av.length === 0) {\n // happens if \";;\" appears\n continue;\n }\n const av_sep = av.indexOf('=');\n let av_key, av_value;\n if (av_sep === -1) {\n av_key = av;\n av_value = null;\n }\n else {\n av_key = av.slice(0, av_sep);\n av_value = av.slice(av_sep + 1);\n }\n av_key = av_key.trim().toLowerCase();\n if (av_value) {\n av_value = av_value.trim();\n }\n switch (av_key) {\n case 'expires': // S5.2.1\n if (av_value) {\n const exp = (0, parseDate_1.parseDate)(av_value);\n // \"If the attribute-value failed to parse as a cookie date, ignore the\n // cookie-av.\"\n if (exp) {\n // over and underflow not realistically a concern: V8's getTime() seems to\n // store something larger than a 32-bit time_t (even with 32-bit node)\n c.expires = exp;\n }\n }\n break;\n case 'max-age': // S5.2.2\n if (av_value) {\n // \"If the first character of the attribute-value is not a DIGIT or a \"-\"\n // character ...[or]... If the remainder of attribute-value contains a\n // non-DIGIT character, ignore the cookie-av.\"\n if (/^-?[0-9]+$/.test(av_value)) {\n const delta = parseInt(av_value, 10);\n // \"If delta-seconds is less than or equal to zero (0), let expiry-time\n // be the earliest representable date and time.\"\n c.setMaxAge(delta);\n }\n }\n break;\n case 'domain': // S5.2.3\n // \"If the attribute-value is empty, the behavior is undefined. However,\n // the user agent SHOULD ignore the cookie-av entirely.\"\n if (av_value) {\n // S5.2.3 \"Let cookie-domain be the attribute-value without the leading %x2E\n // (\".\") character.\"\n const domain = av_value.trim().replace(/^\\./, '');\n if (domain) {\n // \"Convert the cookie-domain to lower case.\"\n c.domain = domain.toLowerCase();\n }\n }\n break;\n case 'path': // S5.2.4\n /*\n * \"If the attribute-value is empty or if the first character of the\n * attribute-value is not %x2F (\"/\"):\n * Let cookie-path be the default-path.\n * Otherwise:\n * Let cookie-path be the attribute-value.\"\n *\n * We'll represent the default-path as null since it depends on the\n * context of the parsing.\n */\n c.path = av_value && av_value[0] === '/' ? av_value : null;\n break;\n case 'secure': // S5.2.5\n /*\n * \"If the attribute-name case-insensitively matches the string \"Secure\",\n * the user agent MUST append an attribute to the cookie-attribute-list\n * with an attribute-name of Secure and an empty attribute-value.\"\n */\n c.secure = true;\n break;\n case 'httponly': // S5.2.6 -- effectively the same as 'secure'\n c.httpOnly = true;\n break;\n case 'samesite': // RFC6265bis-02 S5.3.7\n switch (av_value ? av_value.toLowerCase() : '') {\n case 'strict':\n c.sameSite = 'strict';\n break;\n case 'lax':\n c.sameSite = 'lax';\n break;\n case 'none':\n c.sameSite = 'none';\n break;\n default:\n c.sameSite = undefined;\n break;\n }\n break;\n default:\n c.extensions = c.extensions || [];\n c.extensions.push(av);\n break;\n }\n }\n return c;\n}\nfunction fromJSON(str) {\n if (!str || validators.isEmptyString(str)) {\n return undefined;\n }\n let obj;\n if (typeof str === 'string') {\n try {\n obj = JSON.parse(str);\n }\n catch {\n return undefined;\n }\n }\n else {\n // assume it's an Object\n obj = str;\n }\n const c = new Cookie();\n Cookie.serializableProperties.forEach((prop) => {\n if (obj && typeof obj === 'object' && (0, utils_1.inOperator)(prop, obj)) {\n const val = obj[prop];\n if (val === undefined) {\n return;\n }\n if ((0, utils_1.inOperator)(prop, cookieDefaults) && val === cookieDefaults[prop]) {\n return;\n }\n switch (prop) {\n case 'key':\n case 'value':\n case 'sameSite':\n if (typeof val === 'string') {\n c[prop] = val;\n }\n break;\n case 'expires':\n case 'creation':\n case 'lastAccessed':\n if (typeof val === 'number' ||\n typeof val === 'string' ||\n val instanceof Date) {\n c[prop] = obj[prop] == 'Infinity' ? 'Infinity' : new Date(val);\n }\n else if (val === null) {\n c[prop] = null;\n }\n break;\n case 'maxAge':\n if (typeof val === 'number' ||\n val === 'Infinity' ||\n val === '-Infinity') {\n c[prop] = val;\n }\n break;\n case 'domain':\n case 'path':\n if (typeof val === 'string' || val === null) {\n c[prop] = val;\n }\n break;\n case 'secure':\n case 'httpOnly':\n if (typeof val === 'boolean') {\n c[prop] = val;\n }\n break;\n case 'extensions':\n if (Array.isArray(val) &&\n val.every((item) => typeof item === 'string')) {\n c[prop] = val;\n }\n break;\n case 'hostOnly':\n case 'pathIsDefault':\n if (typeof val === 'boolean' || val === null) {\n c[prop] = val;\n }\n break;\n }\n }\n });\n return c;\n}\nconst cookieDefaults = {\n // the order in which the RFC has them:\n key: '',\n value: '',\n expires: 'Infinity',\n maxAge: null,\n domain: null,\n path: null,\n secure: false,\n httpOnly: false,\n extensions: null,\n // set by the CookieJar:\n hostOnly: null,\n pathIsDefault: null,\n creation: null,\n lastAccessed: null,\n sameSite: undefined,\n};\n/**\n * An HTTP cookie (web cookie, browser cookie) is a small piece of data that a server sends to a user's web browser.\n * It is defined in {@link https://www.rfc-editor.org/rfc/rfc6265.html | RFC6265}.\n * @public\n */\nclass Cookie {\n /**\n * Create a new Cookie instance.\n * @public\n * @param options - The attributes to set on the cookie\n */\n constructor(options = {}) {\n this.key = options.key ?? cookieDefaults.key;\n this.value = options.value ?? cookieDefaults.value;\n this.expires = options.expires ?? cookieDefaults.expires;\n this.maxAge = options.maxAge ?? cookieDefaults.maxAge;\n this.domain = options.domain ?? cookieDefaults.domain;\n this.path = options.path ?? cookieDefaults.path;\n this.secure = options.secure ?? cookieDefaults.secure;\n this.httpOnly = options.httpOnly ?? cookieDefaults.httpOnly;\n this.extensions = options.extensions ?? cookieDefaults.extensions;\n this.creation = options.creation ?? cookieDefaults.creation;\n this.hostOnly = options.hostOnly ?? cookieDefaults.hostOnly;\n this.pathIsDefault = options.pathIsDefault ?? cookieDefaults.pathIsDefault;\n this.lastAccessed = options.lastAccessed ?? cookieDefaults.lastAccessed;\n this.sameSite = options.sameSite ?? cookieDefaults.sameSite;\n this.creation = options.creation ?? new Date();\n // used to break creation ties in cookieCompare():\n Object.defineProperty(this, 'creationIndex', {\n configurable: false,\n enumerable: false, // important for assert.deepEqual checks\n writable: true,\n value: ++Cookie.cookiesCreated,\n });\n // Duplicate operation, but it makes TypeScript happy...\n this.creationIndex = Cookie.cookiesCreated;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n const now = Date.now();\n const hostOnly = this.hostOnly != null ? this.hostOnly.toString() : '?';\n const createAge = this.creation && this.creation !== 'Infinity'\n ? `${String(now - this.creation.getTime())}ms`\n : '?';\n const accessAge = this.lastAccessed && this.lastAccessed !== 'Infinity'\n ? `${String(now - this.lastAccessed.getTime())}ms`\n : '?';\n return `Cookie=\"${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}\"`;\n }\n /**\n * For convenience in using `JSON.stringify(cookie)`. Returns a plain-old Object that can be JSON-serialized.\n *\n * @remarks\n * - Any `Date` properties (such as {@link Cookie.expires}, {@link Cookie.creation}, and {@link Cookie.lastAccessed}) are exported in ISO format (`Date.toISOString()`).\n *\n * - Custom Cookie properties are discarded. In tough-cookie 1.x, since there was no {@link Cookie.toJSON} method explicitly defined, all enumerable properties were captured.\n * If you want a property to be serialized, add the property name to {@link Cookie.serializableProperties}.\n */\n toJSON() {\n const obj = {};\n for (const prop of Cookie.serializableProperties) {\n const val = this[prop];\n if (val === cookieDefaults[prop]) {\n continue; // leave as prototype default\n }\n switch (prop) {\n case 'key':\n case 'value':\n case 'sameSite':\n if (typeof val === 'string') {\n obj[prop] = val;\n }\n break;\n case 'expires':\n case 'creation':\n case 'lastAccessed':\n if (typeof val === 'number' ||\n typeof val === 'string' ||\n val instanceof Date) {\n obj[prop] =\n val == 'Infinity' ? 'Infinity' : new Date(val).toISOString();\n }\n else if (val === null) {\n obj[prop] = null;\n }\n break;\n case 'maxAge':\n if (typeof val === 'number' ||\n val === 'Infinity' ||\n val === '-Infinity') {\n obj[prop] = val;\n }\n break;\n case 'domain':\n case 'path':\n if (typeof val === 'string' || val === null) {\n obj[prop] = val;\n }\n break;\n case 'secure':\n case 'httpOnly':\n if (typeof val === 'boolean') {\n obj[prop] = val;\n }\n break;\n case 'extensions':\n if (Array.isArray(val)) {\n obj[prop] = val;\n }\n break;\n case 'hostOnly':\n case 'pathIsDefault':\n if (typeof val === 'boolean' || val === null) {\n obj[prop] = val;\n }\n break;\n }\n }\n return obj;\n }\n /**\n * Does a deep clone of this cookie, implemented exactly as `Cookie.fromJSON(cookie.toJSON())`.\n * @public\n */\n clone() {\n return fromJSON(this.toJSON());\n }\n /**\n * Validates cookie attributes for semantic correctness. Useful for \"lint\" checking any `Set-Cookie` headers you generate.\n * For now, it returns a boolean, but eventually could return a reason string.\n *\n * @remarks\n * Works for a few things, but is by no means comprehensive.\n *\n * @beta\n */\n validate() {\n if (!this.value || !COOKIE_OCTETS.test(this.value)) {\n return false;\n }\n if (this.expires != 'Infinity' &&\n !(this.expires instanceof Date) &&\n !(0, parseDate_1.parseDate)(this.expires)) {\n return false;\n }\n if (this.maxAge != null &&\n this.maxAge !== 'Infinity' &&\n (this.maxAge === '-Infinity' || this.maxAge <= 0)) {\n return false; // \"Max-Age=\" non-zero-digit *DIGIT\n }\n if (this.path != null && !PATH_VALUE.test(this.path)) {\n return false;\n }\n const cdomain = this.cdomain();\n if (cdomain) {\n if (cdomain.match(/\\.$/)) {\n return false; // S4.1.2.3 suggests that this is bad. domainMatch() tests confirm this\n }\n const suffix = (0, getPublicSuffix_1.getPublicSuffix)(cdomain);\n if (suffix == null) {\n // it's a public suffix\n return false;\n }\n }\n return true;\n }\n /**\n * Sets the 'Expires' attribute on a cookie.\n *\n * @remarks\n * When given a `string` value it will be parsed with {@link parseDate}. If the value can't be parsed as a cookie date\n * then the 'Expires' attribute will be set to `\"Infinity\"`.\n *\n * @param exp - the new value for the 'Expires' attribute of the cookie.\n */\n setExpires(exp) {\n if (exp instanceof Date) {\n this.expires = exp;\n }\n else {\n this.expires = (0, parseDate_1.parseDate)(exp) || 'Infinity';\n }\n }\n /**\n * Sets the 'Max-Age' attribute (in seconds) on a cookie.\n *\n * @remarks\n * Coerces `-Infinity` to `\"-Infinity\"` and `Infinity` to `\"Infinity\"` so it can be serialized to JSON.\n *\n * @param age - the new value for the 'Max-Age' attribute (in seconds).\n */\n setMaxAge(age) {\n if (age === Infinity) {\n this.maxAge = 'Infinity';\n }\n else if (age === -Infinity) {\n this.maxAge = '-Infinity';\n }\n else {\n this.maxAge = age;\n }\n }\n /**\n * Encodes to a `Cookie` header value (specifically, the {@link Cookie.key} and {@link Cookie.value} properties joined with \"=\").\n * @public\n */\n cookieString() {\n const val = this.value || '';\n if (this.key) {\n return `${this.key}=${val}`;\n }\n return val;\n }\n /**\n * Encodes to a `Set-Cookie header` value.\n * @public\n */\n toString() {\n let str = this.cookieString();\n if (this.expires != 'Infinity') {\n if (this.expires instanceof Date) {\n str += `; Expires=${(0, formatDate_1.formatDate)(this.expires)}`;\n }\n }\n if (this.maxAge != null && this.maxAge != Infinity) {\n str += `; Max-Age=${String(this.maxAge)}`;\n }\n if (this.domain && !this.hostOnly) {\n str += `; Domain=${this.domain}`;\n }\n if (this.path) {\n str += `; Path=${this.path}`;\n }\n if (this.secure) {\n str += '; Secure';\n }\n if (this.httpOnly) {\n str += '; HttpOnly';\n }\n if (this.sameSite && this.sameSite !== 'none') {\n if (this.sameSite.toLowerCase() ===\n Cookie.sameSiteCanonical.lax.toLowerCase()) {\n str += `; SameSite=${Cookie.sameSiteCanonical.lax}`;\n }\n else if (this.sameSite.toLowerCase() ===\n Cookie.sameSiteCanonical.strict.toLowerCase()) {\n str += `; SameSite=${Cookie.sameSiteCanonical.strict}`;\n }\n else {\n str += `; SameSite=${this.sameSite}`;\n }\n }\n if (this.extensions) {\n this.extensions.forEach((ext) => {\n str += `; ${ext}`;\n });\n }\n return str;\n }\n /**\n * Computes the TTL relative to now (milliseconds).\n *\n * @remarks\n * - `Infinity` is returned for cookies without an explicit expiry\n *\n * - `0` is returned if the cookie is expired.\n *\n * - Otherwise a time-to-live in milliseconds is returned.\n *\n * @param now - passing an explicit value is mostly used for testing purposes since this defaults to the `Date.now()`\n * @public\n */\n TTL(now = Date.now()) {\n // TTL() partially replaces the \"expiry-time\" parts of S5.3 step 3 (setCookie()\n // elsewhere)\n // S5.3 says to give the \"latest representable date\" for which we use Infinity\n // For \"expired\" we use 0\n // -----\n // RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires\n // attribute, the Max-Age attribute has precedence and controls the\n // expiration date of the cookie.\n // (Concurs with S5.3 step 3)\n if (this.maxAge != null && typeof this.maxAge === 'number') {\n return this.maxAge <= 0 ? 0 : this.maxAge * 1000;\n }\n const expires = this.expires;\n if (expires === 'Infinity') {\n return Infinity;\n }\n return (expires?.getTime() ?? now) - (now || Date.now());\n }\n /**\n * Computes the absolute unix-epoch milliseconds that this cookie expires.\n *\n * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n *\n * If Expires ({@link Cookie.expires}) is set, that's returned.\n *\n * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n */\n expiryTime(now) {\n // expiryTime() replaces the \"expiry-time\" parts of S5.3 step 3 (setCookie() elsewhere)\n if (this.maxAge != null) {\n const relativeTo = now || this.lastAccessed || new Date();\n const maxAge = typeof this.maxAge === 'number' ? this.maxAge : -Infinity;\n const age = maxAge <= 0 ? -Infinity : maxAge * 1000;\n if (relativeTo === 'Infinity') {\n return Infinity;\n }\n return relativeTo.getTime() + age;\n }\n if (this.expires == 'Infinity') {\n return Infinity;\n }\n return this.expires ? this.expires.getTime() : undefined;\n }\n /**\n * Similar to {@link Cookie.expiryTime}, computes the absolute unix-epoch milliseconds that this cookie expires and returns it as a Date.\n *\n * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n *\n * If Expires ({@link Cookie.expires}) is set, that's returned.\n *\n * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n */\n expiryDate(now) {\n const millisec = this.expiryTime(now);\n if (millisec == Infinity) {\n // The 31-bit value of 2147483647000 was chosen to be the MAX_TIME representable\n // in tough-cookie though MDN states that the actual maximum value for a Date is 8.64e15.\n // I'm guessing this is due to the Y2038 problem that would affect systems that store\n // unix time as 32-bit integers.\n // See:\n // - https://github.com/salesforce/tough-cookie/commit/0616f70bf725e00c63d442544ad230c4f8b23357\n // - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#the_epoch_timestamps_and_invalid_date\n // - https://en.wikipedia.org/wiki/Year_2038_problem\n return new Date(2147483647000);\n }\n else if (millisec == -Infinity) {\n return new Date(0);\n }\n else {\n return millisec == undefined ? undefined : new Date(millisec);\n }\n }\n /**\n * Indicates if the cookie has been persisted to a store or not.\n * @public\n */\n isPersistent() {\n // This replaces the \"persistent-flag\" parts of S5.3 step 3\n return this.maxAge != null || this.expires != 'Infinity';\n }\n /**\n * Calls {@link canonicalDomain} with the {@link Cookie.domain} property.\n * @public\n */\n canonicalizedDomain() {\n // Mostly S5.1.2 and S5.2.3:\n return (0, canonicalDomain_1.canonicalDomain)(this.domain);\n }\n /**\n * Alias for {@link Cookie.canonicalizedDomain}\n * @public\n */\n cdomain() {\n return (0, canonicalDomain_1.canonicalDomain)(this.domain);\n }\n /**\n * Parses a string into a Cookie object.\n *\n * @remarks\n * Note: when parsing a `Cookie` header it must be split by ';' before each Cookie string can be parsed.\n *\n * @example\n * ```\n * // parse a `Set-Cookie` header\n * const setCookieHeader = 'a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT'\n * const cookie = Cookie.parse(setCookieHeader)\n * cookie.key === 'a'\n * cookie.value === 'bcd'\n * cookie.expires === new Date(Date.parse('Tue, 18 Oct 2011 07:05:03 GMT'))\n * ```\n *\n * @example\n * ```\n * // parse a `Cookie` header\n * const cookieHeader = 'name=value; name2=value2; name3=value3'\n * const cookies = cookieHeader.split(';').map(Cookie.parse)\n * cookies[0].name === 'name'\n * cookies[0].value === 'value'\n * cookies[1].name === 'name2'\n * cookies[1].value === 'value2'\n * cookies[2].name === 'name3'\n * cookies[2].value === 'value3'\n * ```\n *\n * @param str - The `Set-Cookie` header or a Cookie string to parse.\n * @param options - Configures `strict` or `loose` mode for cookie parsing\n */\n static parse(str, options) {\n return parse(str, options);\n }\n /**\n * Does the reverse of {@link Cookie.toJSON}.\n *\n * @remarks\n * Any Date properties (such as .expires, .creation, and .lastAccessed) are parsed via Date.parse, not tough-cookie's parseDate, since ISO timestamps are being handled at this layer.\n *\n * @example\n * ```\n * const json = JSON.stringify({\n * key: 'alpha',\n * value: 'beta',\n * domain: 'example.com',\n * path: '/foo',\n * expires: '2038-01-19T03:14:07.000Z',\n * })\n * const cookie = Cookie.fromJSON(json)\n * cookie.key === 'alpha'\n * cookie.value === 'beta'\n * cookie.domain === 'example.com'\n * cookie.path === '/foo'\n * cookie.expires === new Date(Date.parse('2038-01-19T03:14:07.000Z'))\n * ```\n *\n * @param str - An unparsed JSON string or a value that has already been parsed as JSON\n */\n static fromJSON(str) {\n return fromJSON(str);\n }\n}\nexports.Cookie = Cookie;\nCookie.cookiesCreated = 0;\n/**\n * @internal\n */\nCookie.sameSiteLevel = {\n strict: 3,\n lax: 2,\n none: 1,\n};\n/**\n * @internal\n */\nCookie.sameSiteCanonical = {\n strict: 'Strict',\n lax: 'Lax',\n};\n/**\n * Cookie properties that will be serialized when using {@link Cookie.fromJSON} and {@link Cookie.toJSON}.\n * @public\n */\nCookie.serializableProperties = [\n 'key',\n 'value',\n 'expires',\n 'maxAge',\n 'domain',\n 'path',\n 'secure',\n 'httpOnly',\n 'extensions',\n 'hostOnly',\n 'pathIsDefault',\n 'creation',\n 'lastAccessed',\n 'sameSite',\n];\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","import { u64 } from '@solana/buffer-layout-utils';\nimport type { Connection, PublicKey, Signer, TransactionError } from '@solana/web3.js';\nimport { Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createUiAmountToAmountInstruction } from '../instructions/uiAmountToAmount.js';\n\n/**\n * Amount as a string using mint-prescribed decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint for the account\n * @param amount Ui Amount of tokens to be converted to Amount\n * @param programId SPL Token program account\n *\n * @return Ui Amount generated\n */\nexport async function uiAmountToAmount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n amount: string,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createUiAmountToAmountInstruction(mint, amount, programId));\n const { returnData, err } = (await connection.simulateTransaction(transaction, [payer], false)).value;\n if (returnData) {\n const data = Buffer.from(returnData.data[0], returnData.data[1]);\n return u64().decode(data);\n }\n return err;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_pending_outline = void 0;\nvar ic_pending_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": []\n }]\n }]\n }, {\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12,2C6.48,2,2,6.48,2,12c0,5.52,4.48,10,10,10s10-4.48,10-10C22,6.48,17.52,2,12,2z M12,20c-4.42,0-8-3.58-8-8 c0-4.42,3.58-8,8-8s8,3.58,8,8C20,16.42,16.42,20,12,20z\"\n },\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12,2C6.48,2,2,6.48,2,12c0,5.52,4.48,10,10,10s10-4.48,10-10C22,6.48,17.52,2,12,2z M12,20c-4.42,0-8-3.58-8-8 c0-4.42,3.58-8,8-8s8,3.58,8,8C20,16.42,16.42,20,12,20z\"\n },\n \"children\": []\n }]\n }, {\n \"name\": \"circle\",\n \"attribs\": {\n \"cx\": \"7\",\n \"cy\": \"12\",\n \"r\": \"1.5\"\n },\n \"children\": [{\n \"name\": \"circle\",\n \"attribs\": {\n \"cx\": \"7\",\n \"cy\": \"12\",\n \"r\": \"1.5\"\n },\n \"children\": []\n }]\n }, {\n \"name\": \"circle\",\n \"attribs\": {\n \"cx\": \"12\",\n \"cy\": \"12\",\n \"r\": \"1.5\"\n },\n \"children\": [{\n \"name\": \"circle\",\n \"attribs\": {\n \"cx\": \"12\",\n \"cy\": \"12\",\n \"r\": \"1.5\"\n },\n \"children\": []\n }]\n }, {\n \"name\": \"circle\",\n \"attribs\": {\n \"cx\": \"17\",\n \"cy\": \"12\",\n \"r\": \"1.5\"\n },\n \"children\": [{\n \"name\": \"circle\",\n \"attribs\": {\n \"cx\": \"17\",\n \"cy\": \"12\",\n \"r\": \"1.5\"\n },\n \"children\": []\n }]\n }]\n }]\n }]\n }]\n};\nexports.ic_pending_outline = ic_pending_outline;","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","import type { Connection, PublicKey, Signer, TransactionError } from '@solana/web3.js';\nimport { Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createAmountToUiAmountInstruction } from '../instructions/amountToUiAmount.js';\n\n/**\n * Amount as a string using mint-prescribed decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint for the account\n * @param amount Amount of tokens to be converted to Ui Amount\n * @param programId SPL Token program account\n *\n * @return Ui Amount generated\n */\nexport async function amountToUiAmount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n amount: number | bigint,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createAmountToUiAmountInstruction(mint, amount, programId));\n const { returnData, err } = (await connection.simulateTransaction(transaction, [payer], false)).value;\n if (returnData?.data) {\n return Buffer.from(returnData.data[0], returnData.data[1]).toString('utf-8');\n }\n return err;\n}\n","import { blob, greedy, seq, struct, u32, u8 } from '@solana/buffer-layout';\nimport type { Mint } from '../../state/mint.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\nimport type { AccountInfo, AccountMeta, Connection } from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\nimport { bool, publicKey, u64 } from '@solana/buffer-layout-utils';\nimport type { Account } from '../../state/account.js';\nimport { TokenTransferHookAccountNotFound } from '../../errors.js';\nimport { unpackSeeds } from './seeds.js';\n\n/** TransferHook as stored by the program */\nexport interface TransferHook {\n /** The transfer hook update authrority */\n authority: PublicKey;\n /** The transfer hook program account */\n programId: PublicKey;\n}\n\n/** Buffer layout for de/serializing a transfer hook extension */\nexport const TransferHookLayout = struct([publicKey('authority'), publicKey('programId')]);\n\nexport const TRANSFER_HOOK_SIZE = TransferHookLayout.span;\n\nexport function getTransferHook(mint: Mint): TransferHook | null {\n const extensionData = getExtensionData(ExtensionType.TransferHook, mint.tlvData);\n if (extensionData !== null) {\n return TransferHookLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n\n/** TransferHookAccount as stored by the program */\nexport interface TransferHookAccount {\n /**\n * Whether or not this account is currently tranferring tokens\n * True during the transfer hook cpi, otherwise false\n */\n transferring: boolean;\n}\n\n/** Buffer layout for de/serializing a transfer hook account extension */\nexport const TransferHookAccountLayout = struct([bool('transferring')]);\n\nexport const TRANSFER_HOOK_ACCOUNT_SIZE = TransferHookAccountLayout.span;\n\nexport function getTransferHookAccount(account: Account): TransferHookAccount | null {\n const extensionData = getExtensionData(ExtensionType.TransferHookAccount, account.tlvData);\n if (extensionData !== null) {\n return TransferHookAccountLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n\nexport function getExtraAccountMetaAddress(mint: PublicKey, programId: PublicKey): PublicKey {\n const seeds = [Buffer.from('extra-account-metas'), mint.toBuffer()];\n return PublicKey.findProgramAddressSync(seeds, programId)[0];\n}\n\n/** ExtraAccountMeta as stored by the transfer hook program */\nexport interface ExtraAccountMeta {\n discriminator: number;\n addressConfig: Uint8Array;\n isSigner: boolean;\n isWritable: boolean;\n}\n\n/** Buffer layout for de/serializing an ExtraAccountMeta */\nexport const ExtraAccountMetaLayout = struct([\n u8('discriminator'),\n blob(32, 'addressConfig'),\n bool('isSigner'),\n bool('isWritable'),\n]);\n\nexport interface ExtraAccountMetaList {\n count: number;\n extraAccounts: ExtraAccountMeta[];\n}\n\n/** Buffer layout for de/serializing a list of ExtraAccountMeta prefixed by a u32 length */\nexport const ExtraAccountMetaListLayout = struct([\n u32('count'),\n seq(ExtraAccountMetaLayout, greedy(ExtraAccountMetaLayout.span), 'extraAccounts'),\n]);\n\n/** Buffer layout for de/serializing a list of ExtraAccountMetaAccountData prefixed by a u32 length */\nexport interface ExtraAccountMetaAccountData {\n instructionDiscriminator: bigint;\n length: number;\n extraAccountsList: ExtraAccountMetaList;\n}\n\n/** Buffer layout for de/serializing an ExtraAccountMetaAccountData */\nexport const ExtraAccountMetaAccountDataLayout = struct([\n u64('instructionDiscriminator'),\n u32('length'),\n ExtraAccountMetaListLayout.replicate('extraAccountsList'),\n]);\n\n/** Unpack an extra account metas account and parse the data into a list of ExtraAccountMetas */\nexport function getExtraAccountMetas(account: AccountInfo): ExtraAccountMeta[] {\n const extraAccountsList = ExtraAccountMetaAccountDataLayout.decode(account.data).extraAccountsList;\n return extraAccountsList.extraAccounts.slice(0, extraAccountsList.count);\n}\n\n/** Take an ExtraAccountMeta and construct that into an acutal AccountMeta */\nexport async function resolveExtraAccountMeta(\n connection: Connection,\n extraMeta: ExtraAccountMeta,\n previousMetas: AccountMeta[],\n instructionData: Buffer,\n transferHookProgramId: PublicKey\n): Promise {\n if (extraMeta.discriminator === 0) {\n return {\n pubkey: new PublicKey(extraMeta.addressConfig),\n isSigner: extraMeta.isSigner,\n isWritable: extraMeta.isWritable,\n };\n }\n\n let programId = PublicKey.default;\n\n if (extraMeta.discriminator === 1) {\n programId = transferHookProgramId;\n } else {\n const accountIndex = extraMeta.discriminator - (1 << 7);\n if (previousMetas.length <= accountIndex) {\n throw new TokenTransferHookAccountNotFound();\n }\n programId = previousMetas[accountIndex].pubkey;\n }\n\n const seeds = await unpackSeeds(extraMeta.addressConfig, previousMetas, instructionData, connection);\n const pubkey = PublicKey.findProgramAddressSync(seeds, programId)[0];\n\n return { pubkey, isSigner: extraMeta.isSigner, isWritable: extraMeta.isWritable };\n}\n","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n",null,"// Top level file is just a mixin of submodules & constants\n'use strict';\n\nconst { Deflate, deflate, deflateRaw, gzip } = require('./lib/deflate');\n\nconst { Inflate, inflate, inflateRaw, ungzip } = require('./lib/inflate');\n\nconst constants = require('./lib/zlib/constants');\n\nmodule.exports.Deflate = Deflate;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateRaw = deflateRaw;\nmodule.exports.gzip = gzip;\nmodule.exports.Inflate = Inflate;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateRaw = inflateRaw;\nmodule.exports.ungzip = ungzip;\nmodule.exports.constants = constants;\n",null,"/**\n * Get and/or set configuration options\n * @deprecated There is no config anymore\n */\nexport function config(_options) {\n // Backward compatibility warning for v1.x\n throw new Error('config is deprecated, support for circularRefs is removed from the library. ' + 'If you encounter circular references in your data structures, ' + 'please rethink your datastructures: ' + 'better prevent circular references in the first place.');\n}\n//# sourceMappingURL=config.js.map","/**\n * Test whether a string contains an integer number\n */\nexport function isInteger(value) {\n return INTEGER_REGEX.test(value);\n}\nconst INTEGER_REGEX = /^-?[0-9]+$/;\n\n/**\n * Test whether a string contains a number\n * http://stackoverflow.com/questions/13340717/json-numbers-regular-expression\n */\nexport function isNumber(value) {\n return NUMBER_REGEX.test(value);\n}\nconst NUMBER_REGEX = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$/;\n\n/**\n * Test whether a string can be safely represented with a number\n * without information loss.\n *\n * When approx is true, floating point numbers that lose a few digits but\n * are still approximately equal in value are considered safe too.\n * Integer numbers must still be exactly equal.\n */\nexport function isSafeNumber(value, config) {\n const num = Number.parseFloat(value);\n const str = String(num);\n const v = extractSignificantDigits(value);\n const s = extractSignificantDigits(str);\n if (v === s) {\n return true;\n }\n if (config?.approx === true) {\n // A value is approximately equal when:\n // 1. it is a floating point number, not an integer\n // 2. it has at least 14 digits\n // 3. the first 14 digits are equal\n const requiredDigits = 14;\n if (!isInteger(value) && s.length >= requiredDigits && v.startsWith(s.substring(0, requiredDigits))) {\n return true;\n }\n }\n return false;\n}\nexport let UnsafeNumberReason = /*#__PURE__*/function (UnsafeNumberReason) {\n UnsafeNumberReason[\"underflow\"] = \"underflow\";\n UnsafeNumberReason[\"overflow\"] = \"overflow\";\n UnsafeNumberReason[\"truncate_integer\"] = \"truncate_integer\";\n UnsafeNumberReason[\"truncate_float\"] = \"truncate_float\";\n return UnsafeNumberReason;\n}({});\n\n/**\n * When the provided value is an unsafe number, describe what the reason is:\n * overflow, underflow, truncate_integer, or truncate_float.\n * Returns undefined when the value is safe.\n */\nexport function getUnsafeNumberReason(value) {\n if (isSafeNumber(value, {\n approx: false\n })) {\n return undefined;\n }\n if (isInteger(value)) {\n return UnsafeNumberReason.truncate_integer;\n }\n const num = Number.parseFloat(value);\n if (!Number.isFinite(num)) {\n return UnsafeNumberReason.overflow;\n }\n if (num === 0) {\n return UnsafeNumberReason.underflow;\n }\n return UnsafeNumberReason.truncate_float;\n}\n\n/**\n * Convert a string into a number when it is safe to do so.\n * Throws an error otherwise, explaining the reason.\n */\nexport function toSafeNumberOrThrow(value, config) {\n const number = Number.parseFloat(value);\n const unsafeReason = getUnsafeNumberReason(value);\n if (config?.approx === true ? unsafeReason && unsafeReason !== UnsafeNumberReason.truncate_float : unsafeReason) {\n const unsafeReasonText = unsafeReason?.replace(/_\\w+$/, '');\n throw new Error(`Cannot safely convert to number: the value '${value}' would ${unsafeReasonText} and become ${number}`);\n }\n return number;\n}\n\n/**\n * Get the significant digits of a number.\n *\n * For example:\n * '2.34' returns '234'\n * '-77' returns '77'\n * '0.003400' returns '34'\n * '120.5e+30' returns '1205'\n **/\nexport function extractSignificantDigits(value) {\n return value\n // from \"-0.250e+30\" to \"-0.250\"\n .replace(EXPONENTIAL_PART_REGEX, '')\n\n // from \"-0.250\" to \"-0250\"\n .replace(DOT_REGEX, '')\n\n // from \"-0250\" to \"-025\"\n .replace(TRAILING_ZEROS_REGEX, '')\n\n // from \"-025\" to \"25\"\n .replace(LEADING_MINUS_AND_ZEROS_REGEX, '');\n}\nconst EXPONENTIAL_PART_REGEX = /[eE][+-]?\\d+$/;\nconst LEADING_MINUS_AND_ZEROS_REGEX = /^-?(0*)?/;\nconst DOT_REGEX = /\\./;\nconst TRAILING_ZEROS_REGEX = /0+$/;\n//# sourceMappingURL=utils.js.map","import { UnsafeNumberReason, extractSignificantDigits, getUnsafeNumberReason, isInteger, isNumber } from './utils.js';\n\n/**\n * A lossless number. Stores its numeric value as string\n */\nexport class LosslessNumber {\n // numeric value as string\n\n // type information\n isLosslessNumber = true;\n constructor(value) {\n if (!isNumber(value)) {\n throw new Error(`Invalid number (value: \"${value}\")`);\n }\n this.value = value;\n }\n\n /**\n * Get the value of the LosslessNumber as number or bigint.\n *\n * - a number is returned for safe numbers and decimal values that only lose some insignificant digits\n * - a bigint is returned for big integer numbers\n * - an Error is thrown for values that will overflow or underflow\n *\n * Note that you can implement your own strategy for conversion by just getting the value as string\n * via .toString(), and using util functions like isInteger, isSafeNumber, getUnsafeNumberReason,\n * and toSafeNumberOrThrow to convert it to a numeric value.\n */\n valueOf() {\n const unsafeReason = getUnsafeNumberReason(this.value);\n\n // safe or truncate_float\n if (unsafeReason === undefined || unsafeReason === UnsafeNumberReason.truncate_float) {\n return Number.parseFloat(this.value);\n }\n\n // truncate_integer\n if (isInteger(this.value)) {\n return BigInt(this.value);\n }\n\n // overflow or underflow\n throw new Error(`Cannot safely convert to number: the value '${this.value}' would ${unsafeReason} and become ${Number.parseFloat(this.value)}`);\n }\n\n /**\n * Get the value of the LosslessNumber as string.\n */\n toString() {\n return this.value;\n }\n\n // Note: we do NOT implement a .toJSON() method, and you should not implement\n // or use that, it cannot safely turn the numeric value in the string into\n // stringified JSON since it has to be parsed into a number first.\n}\n\n/**\n * Test whether a value is a LosslessNumber\n */\nexport function isLosslessNumber(value) {\n // @ts-ignore\n return value && typeof value === 'object' && value.isLosslessNumber === true || false;\n}\n\n/**\n * Convert a number into a LosslessNumber if this is possible in a safe way\n * If the value has too many digits, or is NaN or Infinity, an error will be thrown\n */\nexport function toLosslessNumber(value) {\n if (extractSignificantDigits(String(value)).length > 15) {\n throw new Error(`Invalid number: contains more than 15 digits and is most likely truncated and unsafe by itself (value: ${value})`);\n }\n if (Number.isNaN(value)) {\n throw new Error('Invalid number: NaN');\n }\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid number: ${value}`);\n }\n return new LosslessNumber(String(value));\n}\n//# sourceMappingURL=LosslessNumber.js.map","import { LosslessNumber } from './LosslessNumber.js';\nimport { isInteger } from './utils.js';\nexport function parseLosslessNumber(value) {\n return new LosslessNumber(value);\n}\nexport function parseNumberAndBigInt(value) {\n return isInteger(value) ? BigInt(value) : Number.parseFloat(value);\n}\n//# sourceMappingURL=numberParsers.js.map","import { isLosslessNumber } from './LosslessNumber.js';\n/**\n * Revive a json object.\n * Applies the reviver function recursively on all values in the JSON object.\n * @param json A JSON Object, Array, or value\n * @param reviver\n * A reviver function invoked with arguments `key` and `value`,\n * which must return a replacement value. The function context\n * (`this`) is the Object or Array that contains the currently\n * handled value.\n */\nexport function revive(json, reviver) {\n return reviveValue({\n '': json\n }, '', json, reviver);\n}\n\n/**\n * Revive a value\n */\nfunction reviveValue(context, key, value, reviver) {\n if (Array.isArray(value)) {\n return reviver.call(context, key, reviveArray(value, reviver));\n }\n if (value && typeof value === 'object' && !isLosslessNumber(value)) {\n // note the special case for LosslessNumber,\n // we don't want to iterate over the internals of a LosslessNumber\n return reviver.call(context, key, reviveObject(value, reviver));\n }\n return reviver.call(context, key, value);\n}\n\n/**\n * Revive the properties of an object\n */\nfunction reviveObject(object, reviver) {\n for (const key of Object.keys(object)) {\n const value = reviveValue(object, key, object[key], reviver);\n if (value !== undefined) {\n object[key] = value;\n } else {\n delete object[key];\n }\n }\n return object;\n}\n\n/**\n * Revive the properties of an Array\n */\nfunction reviveArray(array, reviver) {\n for (let i = 0; i < array.length; i++) {\n array[i] = reviveValue(array, String(i), array[i], reviver);\n }\n return array;\n}\n//# sourceMappingURL=revive.js.map","import { parseLosslessNumber } from './numberParsers.js';\nimport { revive } from './revive.js';\n/**\n * The LosslessJSON.parse() method parses a string as JSON, optionally transforming\n * the value produced by parsing.\n *\n * The parser is based on the parser of Tan Li Hou shared in\n * https://lihautan.com/json-parser-with-javascript/\n *\n * @param text\n * The string to parse as JSON. See the JSON object for a description of JSON syntax.\n *\n * @param [reviver]\n * If a function, prescribes how the value originally produced by parsing is\n * transformed, before being returned.\n *\n * @param [parseNumber=parseLosslessNumber]\n * Pass a custom number parser. Input is a string, and the output can be unknown\n * numeric value: number, bigint, LosslessNumber, or a custom BigNumber library.\n *\n * @returns Returns the Object corresponding to the given JSON text.\n *\n * @throws Throws a SyntaxError exception if the string to parse is not valid JSON.\n */\nexport function parse(text, reviver) {\n let parseNumber = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : parseLosslessNumber;\n let i = 0;\n const value = parseValue();\n expectValue(value);\n expectEndOfInput();\n return reviver ? revive(value, reviver) : value;\n function parseObject() {\n if (text.charCodeAt(i) === codeOpeningBrace) {\n i++;\n skipWhitespace();\n const object = {};\n let initial = true;\n while (i < text.length && text.charCodeAt(i) !== codeClosingBrace) {\n if (!initial) {\n eatComma();\n skipWhitespace();\n } else {\n initial = false;\n }\n const start = i;\n const key = parseString();\n if (key === undefined) {\n throwObjectKeyExpected();\n return; // To make TS happy\n }\n skipWhitespace();\n eatColon();\n const value = parseValue();\n if (value === undefined) {\n throwObjectValueExpected();\n return; // To make TS happy\n }\n\n // TODO: test deep equal instead of strict equal\n if (Object.prototype.hasOwnProperty.call(object, key) && !isDeepEqual(value, object[key])) {\n // Note that we could also test `if(key in object) {...}`\n // or `if (object[key] !== 'undefined') {...}`, but that is slower.\n throwDuplicateKey(key, start + 1);\n }\n object[key] = value;\n }\n if (text.charCodeAt(i) !== codeClosingBrace) {\n throwObjectKeyOrEndExpected();\n }\n i++;\n return object;\n }\n }\n function parseArray() {\n if (text.charCodeAt(i) === codeOpeningBracket) {\n i++;\n skipWhitespace();\n const array = [];\n let initial = true;\n while (i < text.length && text.charCodeAt(i) !== codeClosingBracket) {\n if (!initial) {\n eatComma();\n } else {\n initial = false;\n }\n const value = parseValue();\n expectArrayItem(value);\n array.push(value);\n }\n if (text.charCodeAt(i) !== codeClosingBracket) {\n throwArrayItemOrEndExpected();\n }\n i++;\n return array;\n }\n }\n function parseValue() {\n skipWhitespace();\n const value = parseString() ?? parseNumeric() ?? parseObject() ?? parseArray() ?? parseKeyword('true', true) ?? parseKeyword('false', false) ?? parseKeyword('null', null);\n skipWhitespace();\n return value;\n }\n function parseKeyword(name, value) {\n if (text.slice(i, i + name.length) === name) {\n i += name.length;\n return value;\n }\n }\n function skipWhitespace() {\n while (isWhitespace(text.charCodeAt(i))) {\n i++;\n }\n }\n function parseString() {\n if (text.charCodeAt(i) === codeDoubleQuote) {\n i++;\n let result = '';\n while (i < text.length && text.charCodeAt(i) !== codeDoubleQuote) {\n if (text.charCodeAt(i) === codeBackslash) {\n const char = text[i + 1];\n const escapeChar = escapeCharacters[char];\n if (escapeChar !== undefined) {\n result += escapeChar;\n i++;\n } else if (char === 'u') {\n if (isHex(text.charCodeAt(i + 2)) && isHex(text.charCodeAt(i + 3)) && isHex(text.charCodeAt(i + 4)) && isHex(text.charCodeAt(i + 5))) {\n result += String.fromCharCode(Number.parseInt(text.slice(i + 2, i + 6), 16));\n i += 5;\n } else {\n throwInvalidUnicodeCharacter(i);\n }\n } else {\n throwInvalidEscapeCharacter(i);\n }\n } else {\n if (isValidStringCharacter(text.charCodeAt(i))) {\n result += text[i];\n } else {\n throwInvalidCharacter(text[i]);\n }\n }\n i++;\n }\n expectEndOfString();\n i++;\n return result;\n }\n }\n function parseNumeric() {\n const start = i;\n if (text.charCodeAt(i) === codeMinus) {\n i++;\n expectDigit(start);\n }\n if (text.charCodeAt(i) === codeZero) {\n i++;\n } else if (isNonZeroDigit(text.charCodeAt(i))) {\n i++;\n while (isDigit(text.charCodeAt(i))) {\n i++;\n }\n }\n if (text.charCodeAt(i) === codeDot) {\n i++;\n expectDigit(start);\n while (isDigit(text.charCodeAt(i))) {\n i++;\n }\n }\n if (text.charCodeAt(i) === codeLowercaseE || text.charCodeAt(i) === codeUppercaseE) {\n i++;\n if (text.charCodeAt(i) === codeMinus || text.charCodeAt(i) === codePlus) {\n i++;\n }\n expectDigit(start);\n while (isDigit(text.charCodeAt(i))) {\n i++;\n }\n }\n if (i > start) {\n return parseNumber(text.slice(start, i));\n }\n }\n function eatComma() {\n if (text.charCodeAt(i) !== codeComma) {\n throw new SyntaxError(`Comma ',' expected after value ${gotAt()}`);\n }\n i++;\n }\n function eatColon() {\n if (text.charCodeAt(i) !== codeColon) {\n throw new SyntaxError(`Colon ':' expected after property name ${gotAt()}`);\n }\n i++;\n }\n function expectValue(value) {\n if (value === undefined) {\n throw new SyntaxError(`JSON value expected ${gotAt()}`);\n }\n }\n function expectArrayItem(value) {\n if (value === undefined) {\n throw new SyntaxError(`Array item expected ${gotAt()}`);\n }\n }\n function expectEndOfInput() {\n if (i < text.length) {\n throw new SyntaxError(`Expected end of input ${gotAt()}`);\n }\n }\n function expectDigit(start) {\n if (!isDigit(text.charCodeAt(i))) {\n const numSoFar = text.slice(start, i);\n throw new SyntaxError(`Invalid number '${numSoFar}', expecting a digit ${gotAt()}`);\n }\n }\n function expectEndOfString() {\n if (text.charCodeAt(i) !== codeDoubleQuote) {\n throw new SyntaxError(`End of string '\"' expected ${gotAt()}`);\n }\n }\n function throwObjectKeyExpected() {\n throw new SyntaxError(`Quoted object key expected ${gotAt()}`);\n }\n function throwDuplicateKey(key, pos) {\n throw new SyntaxError(`Duplicate key '${key}' encountered at position ${pos}`);\n }\n function throwObjectKeyOrEndExpected() {\n throw new SyntaxError(`Quoted object key or end of object '}' expected ${gotAt()}`);\n }\n function throwArrayItemOrEndExpected() {\n throw new SyntaxError(`Array item or end of array ']' expected ${gotAt()}`);\n }\n function throwInvalidCharacter(char) {\n throw new SyntaxError(`Invalid character '${char}' ${pos()}`);\n }\n function throwInvalidEscapeCharacter(start) {\n const chars = text.slice(start, start + 2);\n throw new SyntaxError(`Invalid escape character '${chars}' ${pos()}`);\n }\n function throwObjectValueExpected() {\n throw new SyntaxError(`Object value expected after ':' ${pos()}`);\n }\n function throwInvalidUnicodeCharacter(start) {\n const chars = text.slice(start, start + 6);\n throw new SyntaxError(`Invalid unicode character '${chars}' ${pos()}`);\n }\n\n // zero based character position\n function pos() {\n return `at position ${i}`;\n }\n function got() {\n return i < text.length ? `but got '${text[i]}'` : 'but reached end of input';\n }\n function gotAt() {\n return `${got()} ${pos()}`;\n }\n}\nfunction isWhitespace(code) {\n return code === codeSpace || code === codeNewline || code === codeTab || code === codeReturn;\n}\nfunction isHex(code) {\n return code >= codeZero && code <= codeNine || code >= codeUppercaseA && code <= codeUppercaseF || code >= codeLowercaseA && code <= codeLowercaseF;\n}\nfunction isDigit(code) {\n return code >= codeZero && code <= codeNine;\n}\nfunction isNonZeroDigit(code) {\n return code >= codeOne && code <= codeNine;\n}\nexport function isValidStringCharacter(code) {\n return code >= 0x20 && code <= 0x10ffff;\n}\nexport function isDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((item, index) => isDeepEqual(item, b[index]));\n }\n if (isObject(a) && isObject(b)) {\n const keys = [...new Set([...Object.keys(a), ...Object.keys(b)])];\n return keys.every(key => isDeepEqual(a[key], b[key]));\n }\n return false;\n}\nfunction isObject(value) {\n return typeof value === 'object' && value !== null;\n}\n\n// map with all escape characters\nconst escapeCharacters = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n // note that \\u is handled separately in parseString()\n};\nconst codeBackslash = 0x5c; // \"\\\"\nconst codeOpeningBrace = 0x7b; // \"{\"\nconst codeClosingBrace = 0x7d; // \"}\"\nconst codeOpeningBracket = 0x5b; // \"[\"\nconst codeClosingBracket = 0x5d; // \"]\"\nconst codeSpace = 0x20; // \" \"\nconst codeNewline = 0xa; // \"\\n\"\nconst codeTab = 0x9; // \"\\t\"\nconst codeReturn = 0xd; // \"\\r\"\nconst codeDoubleQuote = 0x0022; // \"\nconst codePlus = 0x2b; // \"+\"\nconst codeMinus = 0x2d; // \"-\"\nconst codeZero = 0x30;\nconst codeOne = 0x31;\nconst codeNine = 0x39;\nconst codeComma = 0x2c; // \",\"\nconst codeDot = 0x2e; // \".\" (dot, period)\nconst codeColon = 0x3a; // \":\"\nexport const codeUppercaseA = 0x41; // \"A\"\nexport const codeLowercaseA = 0x61; // \"a\"\nexport const codeUppercaseE = 0x45; // \"E\"\nexport const codeLowercaseE = 0x65; // \"e\"\nexport const codeUppercaseF = 0x46; // \"F\"\nexport const codeLowercaseF = 0x66; // \"f\"\n//# sourceMappingURL=parse.js.map","/**\n * Revive a string containing an ISO 8601 date string into a JavaScript `Date` object\n */\nexport function reviveDate(key, value) {\n return typeof value === 'string' && isoDateRegex.test(value) ? new Date(value) : value;\n}\n\n// Matches strings like \"2022-08-25T09:39:19.288Z\"\nconst isoDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\n//# sourceMappingURL=reviveDate.js.map","import { isNumber } from './utils.js';\n\n/**\n * The LosslessJSON.stringify() method converts a JavaScript value to a JSON string,\n * optionally replacing values if a replacer function is specified, or\n * optionally including only the specified properties if a replacer array is specified.\n *\n * @param value\n * The value to convert to a JSON string.\n *\n * @param [replacer]\n * A function that alters the behavior of the stringification process,\n * or an array of String and Number objects that serve as a whitelist for\n * selecting the properties of the value object to be included in the JSON string.\n * If this value is null or not provided, all properties of the object are\n * included in the resulting JSON string.\n *\n * @param [space]\n * A String or Number object that's used to insert white space into the output\n * JSON string for readability purposes. If this is a Number, it indicates the\n * number of space characters to use as white space; this number is capped at 10\n * if it's larger than that. Values less than 1 indicate that no space should be\n * used. If this is a String, the string (or the first 10 characters of the string,\n * if it's longer than that) is used as white space. If this parameter is not\n * provided (or is null), no white space is used.\n *\n * @param [numberStringifiers]\n * An optional list with additional number stringifiers, for example to serialize\n * a BigNumber. The output of the function must be valid stringified JSON.\n * When `undefined` is returned, the property will be deleted from the object.\n * The difference with using a `replacer` is that the output of a `replacer`\n * must be JSON and will be stringified afterwards, whereas the output of the\n * `numberStringifiers` is already stringified JSON.\n *\n * @returns Returns the string representation of the JSON object.\n */\nexport function stringify(value, replacer, space, numberStringifiers) {\n const resolvedSpace = resolveSpace(space);\n const replacedValue = typeof replacer === 'function' ? replacer.call({\n '': value\n }, '', value) : value;\n return stringifyValue(replacedValue, '');\n\n /**\n * Stringify a value\n */\n function stringifyValue(value, indent) {\n if (Array.isArray(numberStringifiers)) {\n const stringifier = numberStringifiers.find(item => item.test(value));\n if (stringifier) {\n const str = stringifier.stringify(value);\n if (typeof str !== 'string' || !isNumber(str)) {\n throw new Error(`Invalid JSON number: output of a number stringifier must be a string containing a JSON number (output: ${str})`);\n }\n return str;\n }\n }\n\n // boolean, null, number, string, or date\n if (typeof value === 'boolean' || typeof value === 'number' || typeof value === 'string' || value === null || value instanceof Date || value instanceof Boolean || value instanceof Number || value instanceof String) {\n return JSON.stringify(value);\n }\n\n // lossless number, the secret ingredient :)\n // @ts-ignore\n if (value?.isLosslessNumber) {\n return value.toString();\n }\n\n // BigInt\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n // Array\n if (Array.isArray(value)) {\n return stringifyArray(value, indent);\n }\n\n // Object (test lastly!)\n if (value && typeof value === 'object') {\n return stringifyObject(value, indent);\n }\n return undefined;\n }\n\n /**\n * Stringify an array\n */\n function stringifyArray(array, indent) {\n if (array.length === 0) {\n return '[]';\n }\n const childIndent = resolvedSpace ? indent + resolvedSpace : undefined;\n let str = resolvedSpace ? '[\\n' : '[';\n for (let i = 0; i < array.length; i++) {\n const item = typeof replacer === 'function' ? replacer.call(array, String(i), array[i]) : array[i];\n if (resolvedSpace) {\n str += childIndent;\n }\n if (typeof item !== 'undefined' && typeof item !== 'function') {\n str += stringifyValue(item, childIndent);\n } else {\n str += 'null';\n }\n if (i < array.length - 1) {\n str += resolvedSpace ? ',\\n' : ',';\n }\n }\n str += resolvedSpace ? `\\n${indent}]` : ']';\n return str;\n }\n\n /**\n * Stringify an object\n */\n function stringifyObject(object, indent) {\n if (typeof object.toJSON === 'function') {\n return stringify(object.toJSON(), replacer, space, undefined);\n }\n const keys = Array.isArray(replacer) ? replacer.map(String) : Object.keys(object);\n if (keys.length === 0) {\n return '{}';\n }\n const childIndent = resolvedSpace ? indent + resolvedSpace : undefined;\n let first = true;\n let str = resolvedSpace ? '{\\n' : '{';\n for (const key of keys) {\n const value = typeof replacer === 'function' ? replacer.call(object, key, object[key]) : object[key];\n if (includeProperty(key, value)) {\n if (first) {\n first = false;\n } else {\n str += resolvedSpace ? ',\\n' : ',';\n }\n const keyStr = JSON.stringify(key);\n str += resolvedSpace ? `${childIndent + keyStr}: ` : `${keyStr}:`;\n str += stringifyValue(value, childIndent);\n }\n }\n str += resolvedSpace ? `\\n${indent}}` : '}';\n return str;\n }\n\n /**\n * Test whether to include a property in a stringified object or not.\n */\n function includeProperty(_key, value) {\n return typeof value !== 'undefined' && typeof value !== 'function' && typeof value !== 'symbol';\n }\n}\n\n/**\n * Resolve a JSON stringify space:\n * replace a number with a string containing that number of spaces\n */\nfunction resolveSpace(space) {\n if (typeof space === 'number') {\n return ' '.repeat(space);\n }\n if (typeof space === 'string' && space !== '') {\n return space;\n }\n return undefined;\n}\n//# sourceMappingURL=stringify.js.map","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeAccountInstructionData {\n instruction: TokenInstruction.InitializeAccount;\n}\n\n/** TODO: docs */\nexport const initializeAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct an InitializeAccount instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner Owner of the new account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeAccountInstruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n\n const data = Buffer.alloc(initializeAccountInstructionData.span);\n initializeAccountInstructionData.encode({ instruction: TokenInstruction.InitializeAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeAccount instruction */\nexport interface DecodedInitializeAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n owner: AccountMeta;\n rent: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeAccount;\n };\n}\n\n/**\n * Decode an InitializeAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, owner, rent },\n data,\n } = decodeInitializeAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner || !rent) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n rent,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeAccount instruction */\nexport interface DecodedInitializeAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode an InitializeAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeAccountInstructionUnchecked({\n programId,\n keys: [account, mint, owner, rent],\n data,\n}: TransactionInstruction): DecodedInitializeAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n rent,\n },\n data: initializeAccountInstructionData.decode(data),\n };\n}\n","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","import type { AccountMeta, Signer } from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\n\n/** @internal */\nexport function addSigners(\n keys: AccountMeta[],\n ownerOrAuthority: PublicKey,\n multiSigners: (Signer | PublicKey)[]\n): AccountMeta[] {\n if (multiSigners.length) {\n keys.push({ pubkey: ownerOrAuthority, isSigner: false, isWritable: false });\n for (const signer of multiSigners) {\n keys.push({\n pubkey: signer instanceof PublicKey ? signer : signer.publicKey,\n isSigner: true,\n isWritable: false,\n });\n }\n } else {\n keys.push({ pubkey: ownerOrAuthority, isSigner: true, isWritable: false });\n }\n return keys;\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta } from '@solana/web3.js';\nimport { PublicKey, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeMintInstructionData {\n instruction: TokenInstruction.InitializeMint;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthorityOption: 1 | 0;\n freezeAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const initializeMintInstructionData = struct([\n u8('instruction'),\n u8('decimals'),\n publicKey('mintAuthority'),\n u8('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n\n/**\n * Construct an InitializeMint instruction\n *\n * @param mint Token mint account\n * @param decimals Number of decimals in token account amounts\n * @param mintAuthority Minting authority\n * @param freezeAuthority Optional authority that can freeze token accounts\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMintInstruction(\n mint: PublicKey,\n decimals: number,\n mintAuthority: PublicKey,\n freezeAuthority: PublicKey | null,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n\n const data = Buffer.alloc(initializeMintInstructionData.span);\n initializeMintInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMint,\n decimals,\n mintAuthority,\n freezeAuthorityOption: freezeAuthority ? 1 : 0,\n freezeAuthority: freezeAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMint instruction */\nexport interface DecodedInitializeMintInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n rent: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeMint;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMintInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeMintInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMintInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, rent },\n data,\n } = decodeInitializeMintInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMint) throw new TokenInvalidInstructionTypeError();\n if (!mint || !rent) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n mint,\n rent,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMint instruction */\nexport interface DecodedInitializeMintInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMintInstructionUnchecked({\n programId,\n keys: [mint, rent],\n data,\n}: TransactionInstruction): DecodedInitializeMintInstructionUnchecked {\n const { instruction, decimals, mintAuthority, freezeAuthorityOption, freezeAuthority } =\n initializeMintInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n rent,\n },\n data: {\n instruction,\n decimals,\n mintAuthority,\n freezeAuthority: freezeAuthorityOption ? freezeAuthority : null,\n },\n };\n}\n","import { struct } from '@solana/buffer-layout';\nimport type { Account } from '../state/account.js';\nimport type { Mint } from '../state/mint.js';\nimport { ExtensionType, getExtensionData } from './extensionType.js';\n\n/** Non-transferable mint state as stored by the program */\nexport interface NonTransferable {} // eslint-disable-line\n\n/** Non-transferable token account state as stored by the program */\nexport interface NonTransferableAccount {} // eslint-disable-line\n\n/** Buffer layout for de/serializing an account */\nexport const NonTransferableLayout = struct([]);\n\nexport const NON_TRANSFERABLE_SIZE = NonTransferableLayout.span;\nexport const NON_TRANSFERABLE_ACCOUNT_SIZE = NonTransferableLayout.span;\n\nexport function getNonTransferable(mint: Mint): NonTransferable | null {\n const extensionData = getExtensionData(ExtensionType.NonTransferable, mint.tlvData);\n if (extensionData !== null) {\n return NonTransferableLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n\nexport function getNonTransferableAccount(account: Account): NonTransferableAccount | null {\n const extensionData = getExtensionData(ExtensionType.NonTransferableAccount, account.tlvData);\n if (extensionData !== null) {\n return NonTransferableLayout.decode(extensionData);\n } else {\n return null;\n }\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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PaymentAuthError = void 0;\r\n/**\r\n * An error when the payment authorization returned by the intermediary is invalid\r\n */\r\nclass PaymentAuthError extends Error {\r\n constructor(msg, code, data) {\r\n super(msg);\r\n this.data = data;\r\n this.code = code;\r\n // Set the prototype explicitly.\r\n Object.setPrototypeOf(this, PaymentAuthError.prototype);\r\n }\r\n getCode() {\r\n return this.code;\r\n }\r\n getData() {\r\n return this.data;\r\n }\r\n}\r\nexports.PaymentAuthError = PaymentAuthError;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LocalStorageManager = void 0;\r\n/**\r\n * StorageManager using browser's local storage API\r\n */\r\nclass LocalStorageManager {\r\n constructor(storageKey) {\r\n this.rawData = null;\r\n this.data = {};\r\n this.storageKey = storageKey;\r\n }\r\n init() {\r\n const completedTxt = window.localStorage.getItem(this.storageKey);\r\n if (completedTxt != null) {\r\n this.rawData = JSON.parse(completedTxt);\r\n if (this.rawData == null)\r\n this.rawData = {};\r\n }\r\n else {\r\n this.rawData = {};\r\n }\r\n return Promise.resolve();\r\n }\r\n saveData(hash, object) {\r\n this.data[hash] = object;\r\n this.rawData[hash] = object.serialize();\r\n return this.save();\r\n }\r\n saveDataArr(arr) {\r\n arr.forEach(e => {\r\n this.data[e.id] = e.object;\r\n this.rawData[e.id] = e.object.serialize();\r\n });\r\n return this.save();\r\n }\r\n removeData(hash) {\r\n if (this.rawData[hash] != null) {\r\n if (this.data[hash] != null)\r\n delete this.data[hash];\r\n delete this.rawData[hash];\r\n return this.save();\r\n }\r\n return Promise.resolve();\r\n }\r\n removeDataArr(hashArr) {\r\n hashArr.forEach(hash => {\r\n if (this.rawData[hash] != null) {\r\n if (this.data[hash] != null)\r\n delete this.data[hash];\r\n delete this.rawData[hash];\r\n }\r\n });\r\n return this.save();\r\n }\r\n loadData(type) {\r\n return Promise.resolve(Object.keys(this.rawData).map(e => {\r\n const deserialized = new type(this.rawData[e]);\r\n this.data[e] = deserialized;\r\n return deserialized;\r\n }));\r\n }\r\n save() {\r\n window.localStorage.setItem(this.storageKey, JSON.stringify(this.rawData));\r\n return Promise.resolve();\r\n }\r\n}\r\nexports.LocalStorageManager = LocalStorageManager;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clipboard = void 0;\nvar clipboard = {\n \"viewBox\": \"0 0 1792 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M768 1664h896v-640h-416q-40 0-68-28t-28-68v-416h-384v1152zM1024 224v-64q0-13-9.5-22.5t-22.5-9.5h-704q-13 0-22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h704q13 0 22.5-9.5t9.5-22.5zM1280 896h299l-299-299v299zM1792 1024v672q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-160h-544q-40 0-68-28t-28-68v-1344q0-40 28-68t68-28h1088q40 0 68 28t28 68v328q21 13 36 28l408 408q28 28 48 76t20 88z\"\n }\n }]\n};\nexports.clipboard = clipboard;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapperWithChain = void 0;\r\nconst SwapperWithSigner_1 = require(\"./SwapperWithSigner\");\r\nconst SwapPriceWithChain_1 = require(\"../prices/SwapPriceWithChain\");\r\nclass SwapperWithChain {\r\n get intermediaryDiscovery() {\r\n return this.swapper.intermediaryDiscovery;\r\n }\r\n get mempoolApi() {\r\n return this.swapper.mempoolApi;\r\n }\r\n get bitcoinRpc() {\r\n return this.swapper.bitcoinRpc;\r\n }\r\n get bitcoinNetwork() {\r\n return this.swapper.bitcoinNetwork;\r\n }\r\n constructor(swapper, chainIdentifier) {\r\n this.swapper = swapper;\r\n this.chainIdentifier = chainIdentifier;\r\n this.prices = new SwapPriceWithChain_1.SwapPriceWithChain(swapper.prices, chainIdentifier);\r\n }\r\n /**\r\n * Returns true if string is a valid bitcoin address\r\n *\r\n * @param addr\r\n */\r\n isValidBitcoinAddress(addr) {\r\n return this.swapper.isValidBitcoinAddress(addr);\r\n }\r\n /**\r\n * Returns true if string is a valid BOLT11 bitcoin lightning invoice WITH AMOUNT\r\n *\r\n * @param lnpr\r\n */\r\n isValidLightningInvoice(lnpr) {\r\n return this.swapper.isValidLightningInvoice(lnpr);\r\n }\r\n /**\r\n * Returns true if string is a valid LNURL (no checking on type is performed)\r\n *\r\n * @param lnurl\r\n */\r\n isValidLNURL(lnurl) {\r\n return this.swapper.isValidLNURL(lnurl);\r\n }\r\n /**\r\n * Returns type and data about an LNURL\r\n *\r\n * @param lnurl\r\n * @param shouldRetry\r\n */\r\n getLNURLTypeAndData(lnurl, shouldRetry) {\r\n return this.swapper.getLNURLTypeAndData(lnurl, shouldRetry);\r\n }\r\n /**\r\n * Returns satoshi value of BOLT11 bitcoin lightning invoice WITH AMOUNT\r\n *\r\n * @param lnpr\r\n */\r\n getLightningInvoiceValue(lnpr) {\r\n return this.swapper.getLightningInvoiceValue(lnpr);\r\n }\r\n /**\r\n * Returns swap bounds (minimums & maximums) for different swap types & tokens\r\n */\r\n getSwapBounds() {\r\n return this.swapper.getSwapBounds(this.chainIdentifier);\r\n }\r\n /**\r\n * Returns maximum possible swap amount\r\n *\r\n * @param type Type of the swap\r\n * @param token Token of the swap\r\n */\r\n getMaximum(type, token) {\r\n return this.swapper.getMaximum(this.chainIdentifier, type, token);\r\n }\r\n /**\r\n * Returns minimum possible swap amount\r\n *\r\n * @param type Type of swap\r\n * @param token Token of the swap\r\n */\r\n getMinimum(type, token) {\r\n return this.swapper.getMinimum(this.chainIdentifier, type, token);\r\n }\r\n /**\r\n * Returns a set of supported tokens by all the intermediaries offering a specific swap service\r\n *\r\n * @param swapType Swap service type to check supported tokens for\r\n */\r\n getSupportedTokens(swapType) {\r\n const arr = [];\r\n this.getSupportedTokenAddresses(swapType).forEach(tokenAddress => {\r\n const token = this.swapper.tokens?.[this.chainIdentifier]?.[tokenAddress];\r\n if (token != null)\r\n arr.push(token);\r\n });\r\n return arr;\r\n }\r\n /**\r\n * Returns the set of supported tokens by all the intermediaries we know of offering a specific swapType service\r\n *\r\n * @param swapType Specific swap type for which to obtain supported tokens\r\n */\r\n getSupportedTokenAddresses(swapType) {\r\n return this.swapper.getSupportedTokenAddresses(this.chainIdentifier, swapType);\r\n }\r\n createToBTCSwap(signer, tokenAddress, address, amount, confirmationTarget, confirmations, exactIn, additionalParams) {\r\n return this.swapper.createToBTCSwap(this.chainIdentifier, signer, tokenAddress, address, amount, confirmationTarget, confirmations, exactIn, additionalParams);\r\n }\r\n createToBTCLNSwap(signer, tokenAddress, paymentRequest, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, additionalParams) {\r\n return this.swapper.createToBTCLNSwap(this.chainIdentifier, signer, tokenAddress, paymentRequest, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, additionalParams);\r\n }\r\n createToBTCLNSwapViaLNURL(signer, tokenAddress, lnurlPay, amount, comment, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, exactIn, additionalParams) {\r\n return this.swapper.createToBTCLNSwapViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurlPay, amount, comment, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, exactIn, additionalParams);\r\n }\r\n createFromBTCSwap(signer, tokenAddress, amount, exactOut, additionalParams) {\r\n return this.swapper.createFromBTCSwap(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams);\r\n }\r\n createFromBTCLNSwap(signer, tokenAddress, amount, exactOut, descriptionHash, additionalParams) {\r\n return this.swapper.createFromBTCLNSwap(this.chainIdentifier, signer, tokenAddress, amount, exactOut, descriptionHash, additionalParams);\r\n }\r\n createFromBTCLNSwapViaLNURL(signer, tokenAddress, lnurl, amount, exactOut, additionalParams) {\r\n return this.swapper.createFromBTCLNSwapViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurl, amount, exactOut, additionalParams);\r\n }\r\n createTrustedLNForGasSwap(signer, amount, trustedIntermediaryUrl) {\r\n return this.swapper.createTrustedLNForGasSwap(this.chainIdentifier, signer, amount, trustedIntermediaryUrl);\r\n }\r\n /**\r\n * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)\r\n * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and\r\n * invoice's pre-set amount is used instead.\r\n *\r\n * @param signer\r\n * @param srcToken Source token of the swap, user pays this token\r\n * @param dstToken Destination token of the swap, user receives this token\r\n * @param amount Amount of the swap\r\n * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)\r\n * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or\r\n * LNURL-withdrawal to withdraw money from\r\n */\r\n create(signer, srcToken, dstToken, amount, exactIn, addressLnurlLightningInvoice) {\r\n return this.swapper.create(signer, srcToken, dstToken, amount, exactIn, addressLnurlLightningInvoice);\r\n }\r\n /**\r\n * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address\r\n */\r\n getAllSwaps(signer) {\r\n return this.swapper.getAllSwaps(this.chainIdentifier, signer);\r\n }\r\n /**\r\n * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address\r\n */\r\n getActionableSwaps(signer) {\r\n return this.swapper.getActionableSwaps(this.chainIdentifier, signer);\r\n }\r\n /**\r\n * Returns swaps that are refundable for the specific chain, optionally also for a specific signer's address\r\n */\r\n getRefundableSwaps(signer) {\r\n return this.swapper.getRefundableSwaps(this.chainIdentifier, signer);\r\n }\r\n /**\r\n * Returns swap with a specific id (identifier) on a specific chain and optionally with a signer\r\n */\r\n getSwapById(id, signer) {\r\n return this.swapper.getSwapById(id, this.chainIdentifier, signer);\r\n }\r\n /**\r\n * Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes\r\n */\r\n async _syncSwaps(signer) {\r\n return this.swapper._syncSwaps(this.chainIdentifier, signer);\r\n }\r\n /**\r\n * Returns the token balance of the wallet\r\n */\r\n getBalance(signer, token) {\r\n let tokenAddress;\r\n if (typeof (token) === 'string') {\r\n tokenAddress = token;\r\n }\r\n else {\r\n if (this.chainIdentifier !== token.chainId)\r\n throw new Error(\"Invalid token, chainId mismatch!\");\r\n tokenAddress = token.address;\r\n }\r\n return this.swapper.getBalance(this.chainIdentifier, signer, tokenAddress);\r\n }\r\n /**\r\n * Returns the maximum spendable balance of the wallet, deducting the fee needed to initiate a swap for native balances\r\n */\r\n getSpendableBalance(signer, token, feeMultiplier) {\r\n let tokenAddress;\r\n if (typeof (token) === 'string') {\r\n tokenAddress = token;\r\n }\r\n else {\r\n if (this.chainIdentifier !== token.chainId)\r\n throw new Error(\"Invalid token, chainId mismatch!\");\r\n tokenAddress = token.address;\r\n }\r\n return this.swapper.getSpendableBalance(this.chainIdentifier, signer, tokenAddress, feeMultiplier);\r\n }\r\n /**\r\n * Returns the native token balance of the wallet\r\n */\r\n getNativeBalance(signer) {\r\n return this.swapper.getNativeBalance(this.chainIdentifier, signer);\r\n }\r\n /**\r\n * Returns the address of the native token of the chain\r\n */\r\n getNativeToken() {\r\n return this.swapper.getNativeToken(this.chainIdentifier);\r\n }\r\n /**\r\n * Returns the address of the native token's address of the chain\r\n */\r\n getNativeTokenAddress() {\r\n return this.swapper.getNativeTokenAddress(this.chainIdentifier);\r\n }\r\n withSigner(signer) {\r\n return new SwapperWithSigner_1.SwapperWithSigner(this, signer);\r\n }\r\n randomSigner() {\r\n return this.swapper.randomSigner(this.chainIdentifier);\r\n }\r\n}\r\nexports.SwapperWithChain = SwapperWithChain;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_error_outline_outline = void 0;\nvar ic_error_outline_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n },\n \"children\": []\n }]\n};\nexports.ic_error_outline_outline = ic_error_outline_outline;","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// Utilities\n/**\n * @__NO_SIDE_EFFECTS__\n */\nexport function assertNumber(n: number) {\n if (!Number.isSafeInteger(n)) throw new Error(`Wrong integer: ${n}`);\n}\nexport interface Coder {\n encode(from: F): T;\n decode(to: T): F;\n}\n\nexport interface BytesCoder extends Coder {\n encode: (data: Uint8Array) => string;\n decode: (str: string) => Uint8Array;\n}\n\nfunction isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\n// TODO: some recusive type inference so it would check correct order of input/output inside rest?\n// like , , \ntype Chain = [Coder, ...Coder[]];\n// Extract info from Coder type\ntype Input = F extends Coder ? T : never;\ntype Output = F extends Coder ? T : never;\n// Generic function for arrays\ntype First = T extends [infer U, ...any[]] ? U : never;\ntype Last = T extends [...any[], infer U] ? U : never;\ntype Tail = T extends [any, ...infer U] ? U : never;\n\ntype AsChain> = {\n // C[K] = Coder, Input>\n [K in keyof C]: Coder, Input>;\n};\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain>(...args: T): Coder>, Output>> {\n const id = (a: any) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a: any, b: any) => (c: any) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n\ntype Alphabet = string[] | string;\n\n/**\n * Encodes integer radix representation to array of strings using alphabet and back\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(alphabet: Alphabet): Coder {\n return {\n encode: (digits: number[]) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers');\n return digits.map((i) => {\n assertNumber(i);\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`);\n return alphabet[i]!;\n });\n },\n decode: (input: string[]) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings');\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`);\n const index = alphabet.indexOf(letter);\n if (index === -1) throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`);\n return index;\n });\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = ''): Coder {\n if (typeof separator !== 'string') throw new Error('join separator should be string');\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings');\n for (let i of from)\n if (typeof i !== 'string') throw new Error(`join.encode: non-string input=${i}`);\n return from.join(separator);\n },\n decode: (to) => {\n if (typeof to !== 'string') throw new Error('join.decode input should be string');\n return to.split(separator);\n },\n };\n}\n\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits: number, chr = '='): Coder {\n assertNumber(bits);\n if (typeof chr !== 'string') throw new Error('padding chr should be string');\n return {\n encode(data: string[]): string[] {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of data)\n if (typeof i !== 'string') throw new Error(`padding.encode: non-string input=${i}`);\n while ((data.length * bits) % 8) data.push(chr);\n return data;\n },\n decode(input: string[]): string[] {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings');\n for (let i of input)\n if (typeof i !== 'string') throw new Error(`padding.decode: non-string input=${i}`);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn: (val: T) => T): Coder {\n if (typeof fn !== 'function') throw new Error('normalize fn should be function');\n return { encode: (from: T) => from, decode: (to: T) => fn(to) };\n}\n\n/**\n * Slow: O(n^2) time complexity\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix(data: number[], from: number, to: number): number[] {\n // base 1 is impossible\n if (from < 2) throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`);\n if (to < 2) throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`);\n if (!Array.isArray(data)) throw new Error('convertRadix: data should be array');\n if (!data.length) return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data);\n digits.forEach((d) => {\n assertNumber(d);\n if (d < 0 || d >= from) throw new Error(`Wrong integer: ${d}`);\n });\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i]!;\n const digitBase = from * carry + digit;\n if (\n !Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry\n ) {\n throw new Error('convertRadix: carry overflow');\n }\n carry = digitBase % to;\n const rounded = Math.floor(digitBase / to);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done) continue;\n else if (!rounded) pos = i;\n else done = false;\n }\n res.push(carry);\n if (done) break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++) res.push(0);\n return res.reverse();\n}\n\nconst gcd = /* @__NO_SIDE_EFFECTS__ */ (a: number, b: number): number => (!b ? a : gcd(b, a % b));\nconst radix2carry = /*@__NO_SIDE_EFFECTS__ */ (from: number, to: number) =>\n from + (to - gcd(from, to));\n/**\n * Implemented with numbers, because BigInt is 5x slower\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix2(data: number[], from: number, to: number, padding: boolean): number[] {\n if (!Array.isArray(data)) throw new Error('convertRadix2: data should be array');\n if (from <= 0 || from > 32) throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32) throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(\n `convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`\n );\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const mask = 2 ** to - 1;\n const res: number[] = [];\n for (const n of data) {\n assertNumber(n);\n if (n >= 2 ** from) throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32) throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to) res.push(((carry >> (pos - to)) & mask) >>> 0);\n carry &= 2 ** pos - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from) throw new Error('Excess padding');\n if (!padding && carry) throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0) res.push(carry >>> 0);\n return res;\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num: number): Coder {\n assertNumber(num);\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), 2 ** 8, num);\n },\n decode: (digits: number[]) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of numbers');\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8));\n },\n };\n}\n\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits: number, revPadding = false): Coder {\n assertNumber(bits);\n if (bits <= 0 || bits > 32) throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits: number[]) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of numbers');\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\n\ntype ArgumentTypes = F extends (...args: infer A) => any ? A : never;\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction unsafeWrapper any>(fn: T) {\n if (typeof fn !== 'function') throw new Error('unsafeWrapper fn should be function');\n return function (...args: ArgumentTypes): ReturnType | void {\n try {\n return fn.apply(null, args);\n } catch (e) {}\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction checksum(\n len: number,\n fn: (data: Uint8Array) => Uint8Array\n): Coder {\n assertNumber(len);\n if (typeof fn !== 'function') throw new Error('checksum fn should be function');\n return {\n encode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.encode: input should be Uint8Array');\n const checksum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(checksum, data.length);\n return res;\n },\n decode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const newChecksum = fn(payload).slice(0, len);\n const oldChecksum = data.slice(-len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i]) throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n\n// RFC 4648 aka RFC 3548\n// ---------------------\nexport const base16: BytesCoder = /* @__PURE__ */ chain(\n radix2(4),\n alphabet('0123456789ABCDEF'),\n join('')\n);\nexport const base32: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n padding(5),\n join('')\n);\nexport const base32nopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n join('')\n);\nexport const base32hex: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n padding(5),\n join('')\n);\nexport const base32hexnopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n join('')\n);\nexport const base32crockford: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'),\n join(''),\n normalize((s: string) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1'))\n);\nexport const base64: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n padding(6),\n join('')\n);\nexport const base64nopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n join('')\n);\nexport const base64url: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n padding(6),\n join('')\n);\nexport const base64urlnopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n join('')\n);\n\n// base58 code\n// -----------\nconst genBase58 = (abc: string) => chain(radix(58), alphabet(abc), join(''));\n\nexport const base58: BytesCoder = /* @__PURE__ */ genBase58(\n '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n);\nexport const base58flickr: BytesCoder = /* @__PURE__ */ genBase58(\n '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n);\nexport const base58xrp: BytesCoder = /* @__PURE__ */ genBase58(\n 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'\n);\n\n// xmr ver is done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n// Block encoding significantly reduces quadratic complexity of base58.\n\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\nexport const base58xmr: BytesCoder = {\n encode(data: Uint8Array) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length]!, '1');\n }\n return res;\n },\n decode(str: string) {\n let res: number[] = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0) throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n\nexport const createBase58check = (sha256: (data: Uint8Array) => Uint8Array): BytesCoder =>\n chain(\n checksum(4, (data) => sha256(sha256(data))),\n base58\n );\n// legacy export, bad name\nexport const base58check = createBase58check;\n\n// Bech32 code\n// -----------\nexport interface Bech32Decoded {\n prefix: Prefix;\n words: number[];\n}\nexport interface Bech32DecodedWithArray {\n prefix: Prefix;\n words: number[];\n bytes: Uint8Array;\n}\n\nconst BECH_ALPHABET: Coder = /* @__PURE__ */ chain(\n alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'),\n join('')\n);\n\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bech32Polymod(pre: number): number {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1) chk ^= POLYMOD_GENERATORS[i]!;\n }\n return chk;\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bechChecksum(prefix: string, words: number[], encodingConst = 1): string {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126) throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++) chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words) chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++) chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false));\n}\n\nexport interface Bech32 {\n encode(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit?: number | false\n ): `${Lowercase}1${string}`;\n decode(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded;\n encodeFromBytes(prefix: string, bytes: Uint8Array): string;\n decodeToBytes(str: string): Bech32DecodedWithArray;\n decodeUnsafe(str: string, limit?: number | false): void | Bech32Decoded;\n fromWords(to: number[]): Uint8Array;\n fromWordsUnsafe(to: number[]): void | Uint8Array;\n toWords(from: Uint8Array): number[];\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding: 'bech32' | 'bech32m'): Bech32 {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n\n function encode(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit: number | false = 90\n ): `${Lowercase}1${string}` {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`);\n if (words instanceof Uint8Array) words = Array.from(words);\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`);\n if (prefix.length === 0) throw new TypeError(`Invalid prefix length ${prefix.length}`);\n const actualLength = prefix.length + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}` as `${Lowercase}1${string}`;\n }\n\n function decode(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded;\n function decode(str: string, limit?: number | false): Bech32Decoded;\n function decode(str: string, limit: number | false = 90): Bech32Decoded {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`);\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6) throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum)) throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n\n const decodeUnsafe = unsafeWrapper(decode);\n\n function decodeToBytes(str: string): Bech32DecodedWithArray {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n\n function encodeFromBytes(prefix: string, bytes: Uint8Array) {\n return encode(prefix, toWords(bytes));\n }\n\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n\nexport const bech32: Bech32 = /* @__PURE__ */ genBech32('bech32');\nexport const bech32m: Bech32 = /* @__PURE__ */ genBech32('bech32m');\n\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\nexport const utf8: BytesCoder = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n\nexport const hex: BytesCoder = /* @__PURE__ */ chain(\n radix2(4),\n alphabet('0123456789abcdef'),\n join(''),\n normalize((s: string) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n })\n);\n\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\ntype CoderType = keyof typeof CODERS;\nconst coderTypeError =\n 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n\nexport const bytesToString = (type: CoderType, bytes: Uint8Array): string => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (!isBytes(bytes)) throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexport const str = bytesToString; // as in python, but for bytes only\n\nexport const stringToBytes = (type: CoderType, str: string): Uint8Array => {\n if (!CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (typeof str !== 'string') throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexport const bytes = stringToBytes;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaLpVault = void 0;\r\nconst SolanaSwapModule_1 = require(\"../SolanaSwapModule\");\r\nconst SolanaAction_1 = require(\"../../base/SolanaAction\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst spl_token_1 = require(\"@solana/spl-token\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst SolanaTokens_1 = require(\"../../base/modules/SolanaTokens\");\r\nclass SolanaLpVault extends SolanaSwapModule_1.SolanaSwapModule {\r\n /**\r\n * Action for withdrawing funds from the LP vault\r\n *\r\n * @param signer\r\n * @param token\r\n * @param amount\r\n * @constructor\r\n * @private\r\n */\r\n async Withdraw(signer, token, amount) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(token, signer);\r\n return new SolanaAction_1.SolanaAction(signer, this.root, await this.program.methods\r\n .withdraw((0, Utils_1.toBN)(amount))\r\n .accounts({\r\n signer,\r\n signerAta: ata,\r\n userData: this.root.SwapUserVault(signer, token),\r\n vault: this.root.SwapVault(token),\r\n vaultAuthority: this.root.SwapVaultAuthority,\r\n mint: token,\r\n tokenProgram: spl_token_1.TOKEN_PROGRAM_ID\r\n })\r\n .instruction(), SolanaLpVault.CUCosts.WITHDRAW);\r\n }\r\n /**\r\n * Action for depositing funds to the LP vault\r\n *\r\n * @param signer\r\n * @param token\r\n * @param amount\r\n * @constructor\r\n * @private\r\n */\r\n async Deposit(signer, token, amount) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(token, signer);\r\n return new SolanaAction_1.SolanaAction(signer, this.root, await this.program.methods\r\n .deposit((0, Utils_1.toBN)(amount))\r\n .accounts({\r\n signer,\r\n signerAta: ata,\r\n userData: this.root.SwapUserVault(signer, token),\r\n vault: this.root.SwapVault(token),\r\n vaultAuthority: this.root.SwapVaultAuthority,\r\n mint: token,\r\n systemProgram: web3_js_1.SystemProgram.programId,\r\n tokenProgram: spl_token_1.TOKEN_PROGRAM_ID\r\n })\r\n .instruction(), SolanaLpVault.CUCosts.DEPOSIT);\r\n }\r\n /**\r\n * Returns intermediary's reputation & vault balance for a specific token\r\n *\r\n * @param address\r\n * @param token\r\n */\r\n async getIntermediaryData(address, token) {\r\n const data = await this.program.account.userAccount.fetchNullable(this.root.SwapUserVault(address, token));\r\n if (data == null)\r\n return null;\r\n const response = [];\r\n for (let i = 0; i < data.successVolume.length; i++) {\r\n response[i] = {\r\n successVolume: data.successVolume[i],\r\n successCount: data.successCount[i],\r\n failVolume: data.failVolume[i],\r\n failCount: data.failCount[i],\r\n coopCloseVolume: data.coopCloseVolume[i],\r\n coopCloseCount: data.coopCloseCount[i]\r\n };\r\n }\r\n return {\r\n balance: (0, Utils_1.toBigInt)(data.amount),\r\n reputation: response\r\n };\r\n }\r\n /**\r\n * Returns intermediary's reputation for a specific token\r\n *\r\n * @param address\r\n * @param token\r\n */\r\n async getIntermediaryReputation(address, token) {\r\n const intermediaryData = await this.getIntermediaryData(address, token);\r\n return intermediaryData?.reputation;\r\n }\r\n /**\r\n * Returns the balance of the token an intermediary has in his LP vault\r\n *\r\n * @param address\r\n * @param token\r\n */\r\n async getIntermediaryBalance(address, token) {\r\n const intermediaryData = await this.getIntermediaryData(address, token);\r\n const balance = intermediaryData?.balance;\r\n this.logger.debug(\"getIntermediaryBalance(): token LP balance fetched, token: \" + token.toString() +\r\n \" address: \" + address + \" amount: \" + (balance == null ? \"null\" : balance.toString()));\r\n return balance;\r\n }\r\n /**\r\n * Creates transactions for withdrawing funds from the LP vault, creates ATA if it doesn't exist and unwraps\r\n * WSOL to SOL if required\r\n *\r\n * @param signer\r\n * @param token\r\n * @param amount\r\n * @param feeRate\r\n */\r\n async txsWithdraw(signer, token, amount, feeRate) {\r\n const ata = await (0, spl_token_1.getAssociatedTokenAddress)(token, signer);\r\n feeRate = feeRate || await this.getFeeRate(signer, token);\r\n const action = new SolanaAction_1.SolanaAction(signer, this.root);\r\n if (!await this.root.Tokens.ataExists(ata)) {\r\n action.add(this.root.Tokens.InitAta(signer, signer, token));\r\n }\r\n action.add(await this.Withdraw(signer, token, amount));\r\n const shouldUnwrap = token.equals(SolanaTokens_1.SolanaTokens.WSOL_ADDRESS);\r\n if (shouldUnwrap)\r\n action.add(this.root.Tokens.Unwrap(signer));\r\n this.logger.debug(\"txsWithdraw(): withdraw TX created, token: \" + token.toString() +\r\n \" amount: \" + amount.toString(10) + \" unwrapping: \" + shouldUnwrap);\r\n return [await action.tx(feeRate)];\r\n }\r\n /**\r\n * Creates transaction for depositing funds into the LP vault, wraps SOL to WSOL if required\r\n *\r\n * @param signer\r\n * @param token\r\n * @param amount\r\n * @param feeRate\r\n */\r\n async txsDeposit(signer, token, amount, feeRate) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(token, signer);\r\n feeRate = feeRate || await this.getFeeRate(signer, token);\r\n const action = new SolanaAction_1.SolanaAction(signer, this.root);\r\n let wrapping = false;\r\n if (token.equals(SolanaTokens_1.SolanaTokens.WSOL_ADDRESS)) {\r\n const account = await (0, Utils_1.tryWithRetries)(() => this.root.Tokens.getATAOrNull(ata), this.retryPolicy);\r\n let balance = account == null ? 0n : account.amount;\r\n if (balance < amount) {\r\n action.add(this.root.Tokens.Wrap(signer, amount - balance, account == null));\r\n wrapping = true;\r\n }\r\n }\r\n action.addAction(await this.Deposit(signer, token, amount));\r\n this.logger.debug(\"txsDeposit(): deposit TX created, token: \" + token.toString() +\r\n \" amount: \" + amount.toString(10) + \" wrapping: \" + wrapping);\r\n return [await action.tx(feeRate)];\r\n }\r\n getFeeRate(signer, token) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(token, signer);\r\n return this.root.Fees.getFeeRate([\r\n signer,\r\n ata,\r\n this.root.SwapUserVault(signer, token),\r\n this.root.SwapVault(token)\r\n ]);\r\n }\r\n}\r\nexports.SolanaLpVault = SolanaLpVault;\r\nSolanaLpVault.CUCosts = {\r\n WITHDRAW: 50000,\r\n DEPOSIT: 50000\r\n};\r\n",null,"var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetSwapModule = void 0;\r\nconst StarknetModule_1 = require(\"../base/StarknetModule\");\r\nclass StarknetSwapModule extends StarknetModule_1.StarknetModule {\r\n constructor(root) {\r\n super(root);\r\n this.root = root;\r\n this.contract = root.contract;\r\n }\r\n}\r\nexports.StarknetSwapModule = StarknetSwapModule;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetBlocks = void 0;\r\nconst StarknetModule_1 = require(\"../StarknetModule\");\r\nclass StarknetBlocks extends StarknetModule_1.StarknetModule {\r\n constructor() {\r\n super(...arguments);\r\n this.BLOCK_CACHE_TIME = 5 * 1000;\r\n this.blockCache = {};\r\n }\r\n /**\r\n * Initiates fetch of a given block & saves it to cache\r\n *\r\n * @private\r\n * @param blockTag\r\n */\r\n fetchAndSaveBlockTime(blockTag) {\r\n const blockTimePromise = this.provider.getBlockWithTxHashes(blockTag).then(result => result.timestamp);\r\n const timestamp = Date.now();\r\n this.blockCache[blockTag] = {\r\n blockTime: blockTimePromise,\r\n timestamp\r\n };\r\n blockTimePromise.catch(e => {\r\n if (this.blockCache[blockTag] != null && this.blockCache[blockTag].blockTime === blockTimePromise)\r\n delete this.blockCache[blockTag];\r\n throw e;\r\n });\r\n return {\r\n blockTime: blockTimePromise,\r\n timestamp\r\n };\r\n }\r\n ///////////////////\r\n //// Slots\r\n /**\r\n * Gets the block for a given blocktag, with caching\r\n *\r\n * @param blockTag\r\n */\r\n getBlockTime(blockTag) {\r\n let cachedBlockData = this.blockCache[blockTag];\r\n if (cachedBlockData == null || Date.now() - cachedBlockData.timestamp > this.BLOCK_CACHE_TIME) {\r\n cachedBlockData = this.fetchAndSaveBlockTime(blockTag);\r\n }\r\n return cachedBlockData.blockTime;\r\n }\r\n}\r\nexports.StarknetBlocks = StarknetBlocks;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ICachedSwapPrice = void 0;\r\nconst ISwapPrice_1 = require(\"./ISwapPrice\");\r\nconst DEFAULT_CACHE_DURATION = 10000;\r\nclass ICachedSwapPrice extends ISwapPrice_1.ISwapPrice {\r\n constructor(maxAllowedFeeDiffPPM, cacheTimeout) {\r\n super(maxAllowedFeeDiffPPM);\r\n this.cache = {};\r\n this.cacheTimeout = cacheTimeout || DEFAULT_CACHE_DURATION;\r\n }\r\n getPrice(chainIdentifier, tokenAddress, abortSignal) {\r\n const token = tokenAddress.toString();\r\n const chainCache = this.cache[chainIdentifier];\r\n if (chainCache != null) {\r\n const cachedValue = chainCache[token];\r\n if (cachedValue != null && cachedValue.expiry > Date.now()) {\r\n //Cache still fresh\r\n return cachedValue.price.catch(e => this.fetchPrice(chainIdentifier, token, abortSignal));\r\n }\r\n }\r\n //Refresh cache\r\n const thisFetch = this.fetchPrice(chainIdentifier, token);\r\n this.cache[chainIdentifier] ??= {};\r\n this.cache[chainIdentifier][token] = {\r\n price: thisFetch,\r\n expiry: Date.now() + this.cacheTimeout\r\n };\r\n thisFetch.catch(e => {\r\n if (this.cache[chainIdentifier] != null &&\r\n this.cache[chainIdentifier][token] != null &&\r\n this.cache[chainIdentifier][token].price === thisFetch)\r\n delete this.cache[token];\r\n throw e;\r\n });\r\n return thisFetch;\r\n }\r\n /**\r\n * Returns BTC price in USD (sats/USD)\r\n *\r\n * @param abortSignal\r\n * @throws {Error} if token is not found\r\n */\r\n getUsdPrice(abortSignal) {\r\n if (this.usdCache != null && this.usdCache.expiry > Date.now()) {\r\n //Cache still fresh\r\n return this.usdCache.price.catch(e => this.fetchUsdPrice(abortSignal));\r\n }\r\n //Refresh cache\r\n const thisFetch = this.fetchUsdPrice();\r\n this.usdCache = {\r\n price: thisFetch,\r\n expiry: Date.now() + this.cacheTimeout\r\n };\r\n thisFetch.catch(e => {\r\n if (this.usdCache != null &&\r\n this.usdCache.price === thisFetch)\r\n delete this.usdCache;\r\n throw e;\r\n });\r\n return thisFetch;\r\n }\r\n}\r\nexports.ICachedSwapPrice = ICachedSwapPrice;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetBtcRelay = void 0;\r\nconst buffer_1 = require(\"buffer\");\r\nconst StarknetBtcHeader_1 = require(\"./headers/StarknetBtcHeader\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst StarknetContractBase_1 = require(\"../contract/StarknetContractBase\");\r\nconst StarknetBtcStoredHeader_1 = require(\"./headers/StarknetBtcStoredHeader\");\r\nconst BtcRelayAbi_1 = require(\"./BtcRelayAbi\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst StarknetFees_1 = require(\"../base/modules/StarknetFees\");\r\nconst StarknetAction_1 = require(\"../base/StarknetAction\");\r\nfunction serializeBlockHeader(e) {\r\n return new StarknetBtcHeader_1.StarknetBtcHeader({\r\n reversed_version: (0, Utils_1.u32ReverseEndianness)(e.getVersion()),\r\n previous_blockhash: (0, Utils_1.bufferToU32Array)(buffer_1.Buffer.from(e.getPrevBlockhash(), \"hex\").reverse()),\r\n merkle_root: (0, Utils_1.bufferToU32Array)(buffer_1.Buffer.from(e.getMerkleRoot(), \"hex\").reverse()),\r\n reversed_timestamp: (0, Utils_1.u32ReverseEndianness)(e.getTimestamp()),\r\n nbits: (0, Utils_1.u32ReverseEndianness)(e.getNbits()),\r\n nonce: (0, Utils_1.u32ReverseEndianness)(e.getNonce()),\r\n hash: buffer_1.Buffer.from(e.getHash(), \"hex\").reverse()\r\n });\r\n}\r\nconst GAS_PER_BLOCKHEADER = 750;\r\nconst GAS_PER_BLOCKHEADER_FORK = 750;\r\nconst btcRelayAddreses = {\r\n [starknet_1.constants.StarknetChainId.SN_SEPOLIA]: \"0x032afcea912ba13f6a1878fe38af23eaec3e6b4c7db31a3571550d3cf80d3e31\",\r\n [starknet_1.constants.StarknetChainId.SN_MAIN]: \"0x05cc69b09e8c53520f9e328f6eca72cf02fe46ce290b757d42414e2238001603\"\r\n};\r\nfunction serializeCalldata(headers, storedHeader, span) {\r\n span.push((0, Utils_1.toHex)(headers.length));\r\n headers.forEach(header => {\r\n span.push(...header.serialize());\r\n });\r\n span.push(...storedHeader.serialize());\r\n return span;\r\n}\r\nclass StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {\r\n SaveMainHeaders(signer, mainHeaders, storedHeader) {\r\n return new StarknetAction_1.StarknetAction(signer, this, {\r\n contractAddress: this.contract.address,\r\n entrypoint: \"submit_main_blockheaders\",\r\n calldata: serializeCalldata(mainHeaders, storedHeader, [])\r\n }, { l1: GAS_PER_BLOCKHEADER * mainHeaders.length, l2: 0 });\r\n }\r\n SaveShortForkHeaders(signer, forkHeaders, storedHeader) {\r\n return new StarknetAction_1.StarknetAction(signer, this, {\r\n contractAddress: this.contract.address,\r\n entrypoint: \"submit_short_fork_blockheaders\",\r\n calldata: serializeCalldata(forkHeaders, storedHeader, [])\r\n }, { l1: GAS_PER_BLOCKHEADER * forkHeaders.length, l2: 0 });\r\n }\r\n SaveLongForkHeaders(signer, forkId, forkHeaders, storedHeader, totalForkHeaders = 100) {\r\n return new StarknetAction_1.StarknetAction(signer, this, {\r\n contractAddress: this.contract.address,\r\n entrypoint: \"submit_fork_blockheaders\",\r\n calldata: serializeCalldata(forkHeaders, storedHeader, [(0, Utils_1.toHex)(forkId)])\r\n }, { l1: (GAS_PER_BLOCKHEADER * forkHeaders.length) + (GAS_PER_BLOCKHEADER_FORK * totalForkHeaders), l2: 0 });\r\n }\r\n constructor(chainId, provider, bitcoinRpc, contractAddress = btcRelayAddreses[chainId], retryPolicy, solanaFeeEstimator = new StarknetFees_1.StarknetFees(provider)) {\r\n super(chainId, provider, contractAddress, BtcRelayAbi_1.BtcRelayAbi, retryPolicy, solanaFeeEstimator);\r\n this.maxHeadersPerTx = 100;\r\n this.maxForkHeadersPerTx = 100;\r\n this.maxShortForkHeadersPerTx = 100;\r\n this.bitcoinRpc = bitcoinRpc;\r\n }\r\n /**\r\n * Computes subsequent commited headers as they will appear on the blockchain when transactions\r\n * are submitted & confirmed\r\n *\r\n * @param initialStoredHeader\r\n * @param syncedHeaders\r\n * @private\r\n */\r\n computeCommitedHeaders(initialStoredHeader, syncedHeaders) {\r\n const computedCommitedHeaders = [initialStoredHeader];\r\n for (let blockHeader of syncedHeaders) {\r\n computedCommitedHeaders.push(computedCommitedHeaders[computedCommitedHeaders.length - 1].computeNext(blockHeader));\r\n }\r\n return computedCommitedHeaders;\r\n }\r\n /**\r\n * A common logic for submitting blockheaders in a transaction\r\n *\r\n * @param signer\r\n * @param headers headers to sync to the btc relay\r\n * @param storedHeader current latest stored block header for a given fork\r\n * @param tipWork work of the current tip in a given fork\r\n * @param forkId forkId to submit to, forkId=0 means main chain, forkId=-1 means short fork\r\n * @param feeRate feeRate for the transaction\r\n * @private\r\n */\r\n async _saveHeaders(signer, headers, storedHeader, tipWork, forkId, feeRate) {\r\n const blockHeaderObj = headers.map(serializeBlockHeader);\r\n let starknetAction;\r\n switch (forkId) {\r\n case -1:\r\n starknetAction = this.SaveShortForkHeaders(signer, blockHeaderObj, storedHeader);\r\n break;\r\n case 0:\r\n starknetAction = this.SaveMainHeaders(signer, blockHeaderObj, storedHeader);\r\n break;\r\n default:\r\n starknetAction = this.SaveLongForkHeaders(signer, forkId, blockHeaderObj, storedHeader);\r\n break;\r\n }\r\n const tx = await starknetAction.tx(feeRate);\r\n const computedCommitedHeaders = this.computeCommitedHeaders(storedHeader, blockHeaderObj);\r\n const lastStoredHeader = computedCommitedHeaders[computedCommitedHeaders.length - 1];\r\n if (forkId !== 0 && base_1.StatePredictorUtils.gtBuffer(lastStoredHeader.getBlockHash(), tipWork)) {\r\n //Fork's work is higher than main chain's work, this fork will become a main chain\r\n forkId = 0;\r\n }\r\n return {\r\n forkId: forkId,\r\n lastStoredHeader,\r\n tx,\r\n computedCommitedHeaders\r\n };\r\n }\r\n getBlock(commitHash, blockHash) {\r\n const keys = [commitHash == null ? null : (0, Utils_1.toHex)(commitHash)];\r\n if (blockHash != null) {\r\n const starknetBlockHash = starknet_1.hash.computePoseidonHashOnElements((0, Utils_1.bufferToU32Array)(buffer_1.Buffer.from([...blockHash]).reverse()));\r\n keys.push(starknetBlockHash);\r\n }\r\n return this.Events.findInContractEvents([\"btc_relay::events::StoreHeader\", \"btc_relay::events::StoreForkHeader\"], keys, (event) => {\r\n return Promise.resolve([StarknetBtcStoredHeader_1.StarknetBtcStoredHeader.fromSerializedFeltArray(event.data), BigInt(event.params.commit_hash)]);\r\n });\r\n }\r\n async getBlockHeight() {\r\n return Number(await this.contract.get_blockheight());\r\n }\r\n /**\r\n * Returns data about current main chain tip stored in the btc relay\r\n */\r\n async getTipData() {\r\n const commitHash = await this.contract.get_tip_commit_hash();\r\n if (commitHash == null || BigInt(commitHash) === BigInt(0))\r\n return null;\r\n const result = await this.getBlock(commitHash);\r\n if (result == null)\r\n return null;\r\n const [storedBlockHeader] = result;\r\n return {\r\n blockheight: storedBlockHeader.getBlockheight(),\r\n commitHash: (0, Utils_1.bigNumberishToBuffer)(commitHash, 32).toString(\"hex\"),\r\n blockhash: storedBlockHeader.getBlockHash().toString(\"hex\"),\r\n chainWork: storedBlockHeader.getChainWork()\r\n };\r\n }\r\n /**\r\n * Retrieves blockheader with a specific blockhash, returns null if requiredBlockheight is provided and\r\n * btc relay contract is not synced up to the desired blockheight\r\n *\r\n * @param blockData\r\n * @param requiredBlockheight\r\n */\r\n async retrieveLogAndBlockheight(blockData, requiredBlockheight) {\r\n //TODO: we can fetch the blockheight and events in parallel\r\n const blockHeight = await this.getBlockHeight();\r\n if (requiredBlockheight != null && blockHeight < requiredBlockheight) {\r\n return null;\r\n }\r\n const result = await this.getBlock(null, buffer_1.Buffer.from(blockData.blockhash, \"hex\"));\r\n if (result == null)\r\n return null;\r\n const [storedBlockHeader, commitHash] = result;\r\n //Check if block is part of the main chain\r\n const chainCommitment = await this.contract.get_commit_hash(storedBlockHeader.block_height);\r\n if (BigInt(chainCommitment) !== BigInt(commitHash))\r\n return null;\r\n this.logger.debug(\"retrieveLogAndBlockheight(): block found,\" +\r\n \" commit hash: \" + (0, Utils_1.toHex)(commitHash) + \" blockhash: \" + blockData.blockhash + \" current btc relay height: \" + blockHeight);\r\n return { header: storedBlockHeader, height: blockHeight };\r\n }\r\n /**\r\n * Retrieves blockheader data by blockheader's commit hash,\r\n *\r\n * @param commitmentHashStr\r\n * @param blockData\r\n */\r\n async retrieveLogByCommitHash(commitmentHashStr, blockData) {\r\n const result = await this.getBlock(commitmentHashStr, buffer_1.Buffer.from(blockData.blockhash, \"hex\"));\r\n if (result == null)\r\n return null;\r\n const [storedBlockHeader, commitHash] = result;\r\n //Check if block is part of the main chain\r\n const chainCommitment = await this.contract.get_commit_hash(storedBlockHeader.block_height);\r\n if (BigInt(chainCommitment) !== BigInt(commitHash))\r\n return null;\r\n this.logger.debug(\"retrieveLogByCommitHash(): block found,\" +\r\n \" commit hash: \" + commitmentHashStr + \" blockhash: \" + blockData.blockhash + \" height: \" + storedBlockHeader.block_height);\r\n return storedBlockHeader;\r\n }\r\n /**\r\n * Retrieves latest known stored blockheader & blockheader from bitcoin RPC that is in the main chain\r\n */\r\n async retrieveLatestKnownBlockLog() {\r\n const data = await this.Events.findInContractEvents([\"btc_relay::events::StoreHeader\", \"btc_relay::events::StoreForkHeader\"], null, async (event) => {\r\n const storedHeader = StarknetBtcStoredHeader_1.StarknetBtcStoredHeader.fromSerializedFeltArray(event.data);\r\n const blockHashHex = storedHeader.getBlockHash().toString(\"hex\");\r\n const commitHash = event.params.commit_hash;\r\n const [isInBtcMainChain, btcRelayCommitHash] = await Promise.all([\r\n this.bitcoinRpc.isInMainChain(blockHashHex).catch(() => false),\r\n this.contract.get_commit_hash(storedHeader.block_height)\r\n ]);\r\n if (!isInBtcMainChain)\r\n return null;\r\n if (BigInt(commitHash) !== BigInt(btcRelayCommitHash))\r\n return null;\r\n return {\r\n resultStoredHeader: storedHeader,\r\n resultBitcoinHeader: await this.bitcoinRpc.getBlockHeader(blockHashHex),\r\n commitHash: commitHash\r\n };\r\n });\r\n if (data != null)\r\n this.logger.debug(\"retrieveLatestKnownBlockLog(): block found,\" +\r\n \" commit hash: \" + (0, Utils_1.toHex)(data.commitHash) + \" blockhash: \" + data.resultBitcoinHeader.getHash() +\r\n \" height: \" + data.resultStoredHeader.getBlockheight());\r\n return data;\r\n }\r\n /**\r\n * Saves blockheaders as a bitcoin main chain to the btc relay\r\n *\r\n * @param signer\r\n * @param mainHeaders\r\n * @param storedHeader\r\n * @param feeRate\r\n */\r\n saveMainHeaders(signer, mainHeaders, storedHeader, feeRate) {\r\n this.logger.debug(\"saveMainHeaders(): submitting main blockheaders, count: \" + mainHeaders.length);\r\n return this._saveHeaders(signer, mainHeaders, storedHeader, null, 0, feeRate);\r\n }\r\n /**\r\n * Creates a new long fork and submits the headers to it\r\n *\r\n * @param signer\r\n * @param forkHeaders\r\n * @param storedHeader\r\n * @param tipWork\r\n * @param feeRate\r\n */\r\n async saveNewForkHeaders(signer, forkHeaders, storedHeader, tipWork, feeRate) {\r\n let forkId = Math.floor(Math.random() * 0xFFFFFFFFFFFF);\r\n this.logger.debug(\"saveNewForkHeaders(): submitting new fork & blockheaders,\" +\r\n \" count: \" + forkHeaders.length + \" forkId: 0x\" + forkId.toString(16));\r\n return await this._saveHeaders(signer, forkHeaders, storedHeader, tipWork, forkId, feeRate);\r\n }\r\n /**\r\n * Continues submitting blockheaders to a given fork\r\n *\r\n * @param signer\r\n * @param forkHeaders\r\n * @param storedHeader\r\n * @param forkId\r\n * @param tipWork\r\n * @param feeRate\r\n */\r\n saveForkHeaders(signer, forkHeaders, storedHeader, forkId, tipWork, feeRate) {\r\n this.logger.debug(\"saveForkHeaders(): submitting blockheaders to existing fork,\" +\r\n \" count: \" + forkHeaders.length + \" forkId: 0x\" + forkId.toString(16));\r\n return this._saveHeaders(signer, forkHeaders, storedHeader, tipWork, forkId, feeRate);\r\n }\r\n /**\r\n * Submits short fork with given blockheaders\r\n *\r\n * @param signer\r\n * @param forkHeaders\r\n * @param storedHeader\r\n * @param tipWork\r\n * @param feeRate\r\n */\r\n saveShortForkHeaders(signer, forkHeaders, storedHeader, tipWork, feeRate) {\r\n this.logger.debug(\"saveShortForkHeaders(): submitting short fork blockheaders,\" +\r\n \" count: \" + forkHeaders.length);\r\n return this._saveHeaders(signer, forkHeaders, storedHeader, tipWork, -1, feeRate);\r\n }\r\n /**\r\n * Estimate required synchronization fee (worst case) to synchronize btc relay to the required blockheight\r\n *\r\n * @param requiredBlockheight\r\n * @param feeRate\r\n */\r\n async estimateSynchronizeFee(requiredBlockheight, feeRate) {\r\n const tipData = await this.getTipData();\r\n const currBlockheight = tipData.blockheight;\r\n const blockheightDelta = requiredBlockheight - currBlockheight;\r\n if (blockheightDelta <= 0)\r\n return 0n;\r\n const synchronizationFee = BigInt(blockheightDelta) * await this.getFeePerBlock(feeRate);\r\n this.logger.debug(\"estimateSynchronizeFee(): required blockheight: \" + requiredBlockheight +\r\n \" blockheight delta: \" + blockheightDelta + \" fee: \" + synchronizationFee.toString(10));\r\n return synchronizationFee;\r\n }\r\n /**\r\n * Returns fee required (in SOL) to synchronize a single block to btc relay\r\n *\r\n * @param feeRate\r\n */\r\n async getFeePerBlock(feeRate) {\r\n feeRate ?? (feeRate = await this.Fees.getFeeRate());\r\n return StarknetFees_1.StarknetFees.getGasFee(GAS_PER_BLOCKHEADER, feeRate);\r\n }\r\n /**\r\n * Gets fee rate required for submitting blockheaders to the main chain\r\n */\r\n getMainFeeRate(signer) {\r\n return this.Fees.getFeeRate();\r\n }\r\n /**\r\n * Gets fee rate required for submitting blockheaders to the specific fork\r\n */\r\n getForkFeeRate(signer, forkId) {\r\n return this.Fees.getFeeRate();\r\n }\r\n saveInitialHeader(signer, header, epochStart, pastBlocksTimestamps, feeRate) {\r\n throw new Error(\"Not supported, starknet contract is initialized with constructor!\");\r\n }\r\n}\r\nexports.StarknetBtcRelay = StarknetBtcRelay;\r\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MempoolApi = void 0;\r\nconst buffer_1 = require(\"buffer\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst RequestError_1 = require(\"../../errors/RequestError\");\r\nclass MempoolApi {\r\n /**\r\n * Returns api url that should be operational\r\n *\r\n * @private\r\n */\r\n getOperationalApi() {\r\n return this.backends.find(e => e.operational === true);\r\n }\r\n /**\r\n * Returns api urls that are maybe operational, in case none is considered operational returns all of the price\r\n * apis such that they can be tested again whether they are operational\r\n *\r\n * @private\r\n */\r\n getMaybeOperationalApis() {\r\n let operational = this.backends.filter(e => e.operational === true || e.operational === null);\r\n if (operational.length === 0) {\r\n this.backends.forEach(e => e.operational = null);\r\n operational = this.backends;\r\n }\r\n return operational;\r\n }\r\n /**\r\n * Sends a GET or POST request to the mempool api, handling the non-200 responses as errors & throwing\r\n *\r\n * @param url\r\n * @param path\r\n * @param responseType\r\n * @param type\r\n * @param body\r\n */\r\n async _request(url, path, responseType, type = \"GET\", body) {\r\n const response = await (0, Utils_1.fetchWithTimeout)(url + path, {\r\n method: type,\r\n timeout: this.timeout,\r\n body: typeof (body) === \"string\" ? body : JSON.stringify(body)\r\n });\r\n if (response.status !== 200) {\r\n let resp;\r\n try {\r\n resp = await response.text();\r\n }\r\n catch (e) {\r\n throw new RequestError_1.RequestError(response.statusText, response.status);\r\n }\r\n throw RequestError_1.RequestError.parse(resp, response.status);\r\n }\r\n if (responseType === \"str\")\r\n return await response.text();\r\n return await response.json();\r\n }\r\n /**\r\n * Sends request in parallel to multiple maybe operational api urls\r\n *\r\n * @param path\r\n * @param responseType\r\n * @param type\r\n * @param body\r\n * @private\r\n */\r\n async requestFromMaybeOperationalUrls(path, responseType, type = \"GET\", body) {\r\n try {\r\n return await (0, Utils_1.promiseAny)(this.getMaybeOperationalApis().map(obj => (async () => {\r\n try {\r\n const result = await this._request(obj.url, path, responseType, type, body);\r\n obj.operational = true;\r\n return result;\r\n }\r\n catch (e) {\r\n //Only mark as non operational on 5xx server errors!\r\n if (e instanceof RequestError_1.RequestError && Math.floor(e.httpCode / 100) !== 5) {\r\n obj.operational = true;\r\n throw e;\r\n }\r\n else {\r\n obj.operational = false;\r\n throw e;\r\n }\r\n }\r\n })()));\r\n }\r\n catch (e) {\r\n throw e.find(err => err instanceof RequestError_1.RequestError && Math.floor(err.httpCode / 100) !== 5) || e[0];\r\n }\r\n }\r\n /**\r\n * Sends a request to mempool API, first tries to use the operational API (if any) and if that fails it falls back\r\n * to using maybe operational price APIs\r\n *\r\n * @param path\r\n * @param responseType\r\n * @param type\r\n * @param body\r\n * @private\r\n */\r\n async request(path, responseType, type = \"GET\", body) {\r\n return (0, Utils_1.tryWithRetries)(() => {\r\n const operationalPriceApi = this.getOperationalApi();\r\n if (operationalPriceApi != null) {\r\n return this._request(operationalPriceApi.url, path, responseType, type, body).catch(err => {\r\n //Only retry on 5xx server errors!\r\n if (err instanceof RequestError_1.RequestError && Math.floor(err.httpCode / 100) !== 5)\r\n throw err;\r\n operationalPriceApi.operational = false;\r\n return this.requestFromMaybeOperationalUrls(path, responseType, type, body);\r\n });\r\n }\r\n return this.requestFromMaybeOperationalUrls(path, responseType, type, body);\r\n }, null, (err) => err instanceof RequestError_1.RequestError && Math.floor(err.httpCode / 100) !== 5);\r\n }\r\n constructor(url, timeout) {\r\n url = url ?? \"https://mempool.space/testnet/api/\";\r\n if (Array.isArray(url)) {\r\n this.backends = url.map(val => {\r\n return { url: val, operational: null };\r\n });\r\n }\r\n else {\r\n this.backends = [\r\n { url: url, operational: null }\r\n ];\r\n }\r\n this.timeout = timeout;\r\n }\r\n /**\r\n * Returns information about a specific lightning network node as identified by the public key (in hex encoding)\r\n *\r\n * @param pubkey\r\n */\r\n getLNNodeInfo(pubkey) {\r\n return this.request(\"v1/lightning/nodes/\" + pubkey, \"obj\").catch((e) => {\r\n if (e.message === \"This node does not exist, or our node is not seeing it yet\")\r\n return null;\r\n throw e;\r\n });\r\n }\r\n /**\r\n * Returns on-chain transaction as identified by its txId\r\n *\r\n * @param txId\r\n */\r\n getTransaction(txId) {\r\n return this.request(\"tx/\" + txId, \"obj\").catch((e) => {\r\n if (e.message === \"Transaction not found\")\r\n return null;\r\n throw e;\r\n });\r\n }\r\n /**\r\n * Returns raw binary encoded bitcoin transaction, also strips the witness data from the transaction\r\n *\r\n * @param txId\r\n */\r\n async getRawTransaction(txId) {\r\n const rawTransaction = await this.request(\"tx/\" + txId + \"/hex\", \"str\");\r\n return buffer_1.Buffer.from(rawTransaction, \"hex\");\r\n }\r\n /**\r\n * Returns confirmed & unconfirmed balance of the specific bitcoin address\r\n *\r\n * @param address\r\n */\r\n async getAddressBalances(address) {\r\n const jsonBody = await this.request(\"address/\" + address, \"obj\");\r\n const confirmedInput = BigInt(jsonBody.chain_stats.funded_txo_sum);\r\n const confirmedOutput = BigInt(jsonBody.chain_stats.spent_txo_sum);\r\n const unconfirmedInput = BigInt(jsonBody.mempool_stats.funded_txo_sum);\r\n const unconfirmedOutput = BigInt(jsonBody.mempool_stats.spent_txo_sum);\r\n return {\r\n confirmedBalance: confirmedInput - confirmedOutput,\r\n unconfirmedBalance: unconfirmedInput - unconfirmedOutput\r\n };\r\n }\r\n /**\r\n * Returns CPFP (children pays for parent) data for a given transaction\r\n *\r\n * @param txId\r\n */\r\n getCPFPData(txId) {\r\n return this.request(\"v1/cpfp/\" + txId, \"obj\");\r\n }\r\n /**\r\n * Returns UTXOs (unspent transaction outputs) for a given address\r\n *\r\n * @param address\r\n */\r\n async getAddressUTXOs(address) {\r\n let jsonBody = await this.request(\"address/\" + address + \"/utxo\", \"obj\");\r\n jsonBody.forEach(e => e.value = BigInt(e.value));\r\n return jsonBody;\r\n }\r\n /**\r\n * Returns current on-chain bitcoin fees\r\n */\r\n getFees() {\r\n return this.request(\"v1/fees/recommended\", \"obj\");\r\n }\r\n /**\r\n * Returns all transactions for a given address\r\n *\r\n * @param address\r\n */\r\n getAddressTransactions(address) {\r\n return this.request(\"address/\" + address + \"/txs\", \"obj\");\r\n }\r\n /**\r\n * Returns expected pending (mempool) blocks\r\n */\r\n getPendingBlocks() {\r\n return this.request(\"v1/fees/mempool-blocks\", \"obj\");\r\n }\r\n /**\r\n * Returns the blockheight of the current bitcoin blockchain's tip\r\n */\r\n async getTipBlockHeight() {\r\n const response = await this.request(\"blocks/tip/height\", \"str\");\r\n return parseInt(response);\r\n }\r\n /**\r\n * Returns the bitcoin blockheader as identified by its blockhash\r\n *\r\n * @param blockhash\r\n */\r\n getBlockHeader(blockhash) {\r\n return this.request(\"block/\" + blockhash, \"obj\");\r\n }\r\n /**\r\n * Returns the block status\r\n *\r\n * @param blockhash\r\n */\r\n getBlockStatus(blockhash) {\r\n return this.request(\"block/\" + blockhash + \"/status\", \"obj\");\r\n }\r\n /**\r\n * Returns the transaction's proof (merkle proof)\r\n *\r\n * @param txId\r\n */\r\n getTransactionProof(txId) {\r\n return this.request(\"tx/\" + txId + \"/merkle-proof\", \"obj\");\r\n }\r\n /**\r\n * Returns blockhash of a block at a specific blockheight\r\n *\r\n * @param height\r\n */\r\n getBlockHash(height) {\r\n return this.request(\"block-height/\" + height, \"str\");\r\n }\r\n /**\r\n * Returns past 15 blockheaders before (and including) the specified height\r\n *\r\n * @param endHeight\r\n */\r\n getPast15BlockHeaders(endHeight) {\r\n return this.request(\"v1/blocks/\" + endHeight, \"obj\");\r\n }\r\n /**\r\n * Sends raw hex encoded bitcoin transaction\r\n *\r\n * @param transactionHex\r\n */\r\n sendTransaction(transactionHex) {\r\n return this.request(\"tx\", \"str\", \"POST\", transactionHex);\r\n }\r\n}\r\nexports.MempoolApi = MempoolApi;\r\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { Signer } from '@solana/web3.js';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_2022_PROGRAM_ID, programSupportsExtensions } from '../../constants.js';\nimport { TokenUnsupportedInstructionError } from '../../errors.js';\nimport { TokenInstruction } from '../../instructions/types.js';\nimport { addSigners } from '../../instructions/internal.js';\n\nexport enum MetadataPointerInstruction {\n Initialize = 0,\n Update = 1,\n}\n\nexport const initializeMetadataPointerData = struct<{\n instruction: TokenInstruction.MetadataPointerExtension;\n metadataPointerInstruction: number;\n authority: PublicKey;\n metadataAddress: PublicKey;\n}>([\n // prettier-ignore\n u8('instruction'),\n u8('metadataPointerInstruction'),\n publicKey('authority'),\n publicKey('metadataAddress'),\n]);\n\n/**\n * Construct an Initialize MetadataPointer instruction\n *\n * @param mint Token mint account\n * @param authority Optional Authority that can set the metadata address\n * @param metadataAddress Optional Account address that holds the metadata\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMetadataPointerInstruction(\n mint: PublicKey,\n authority: PublicKey | null,\n metadataAddress: PublicKey | null,\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeMetadataPointerData.span);\n initializeMetadataPointerData.encode(\n {\n instruction: TokenInstruction.MetadataPointerExtension,\n metadataPointerInstruction: MetadataPointerInstruction.Initialize,\n authority: authority ?? PublicKey.default,\n metadataAddress: metadataAddress ?? PublicKey.default,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data: data });\n}\n\nexport const updateMetadataPointerData = struct<{\n instruction: TokenInstruction.MetadataPointerExtension;\n metadataPointerInstruction: number;\n metadataAddress: PublicKey;\n}>([\n // prettier-ignore\n u8('instruction'),\n u8('metadataPointerInstruction'),\n publicKey('metadataAddress'),\n]);\n\nexport function createUpdateMetadataPointerInstruction(\n mint: PublicKey,\n authority: PublicKey,\n metadataAddress: PublicKey | null,\n multiSigners: (Signer | PublicKey)[] = [],\n programId: PublicKey = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n\n const keys = addSigners([{ pubkey: mint, isSigner: false, isWritable: true }], authority, multiSigners);\n\n const data = Buffer.alloc(updateMetadataPointerData.span);\n updateMetadataPointerData.encode(\n {\n instruction: TokenInstruction.MetadataPointerExtension,\n metadataPointerInstruction: MetadataPointerInstruction.Update,\n metadataAddress: metadataAddress ?? PublicKey.default,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data: data });\n}\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n Hash,\n u32,\n Input,\n toBytes,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n HashXOF,\n} from './utils.js';\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA]: [number[], number[], bigint[]] = [[], [], []];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\nexport class Keccak extends Hash implements HashXOF {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish() {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array) {\n output(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\nexport interface InitializeAccount2InstructionData {\n instruction: TokenInstruction.InitializeAccount2;\n owner: PublicKey;\n}\n\nexport const initializeAccount2InstructionData = struct([\n u8('instruction'),\n publicKey('owner'),\n]);\n\n/**\n * Construct an InitializeAccount2 instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner New account's owner/multisignature\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeAccount2Instruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(initializeAccount2InstructionData.span);\n initializeAccount2InstructionData.encode({ instruction: TokenInstruction.InitializeAccount2, owner }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeAccount2 instruction */\nexport interface DecodedInitializeAccount2Instruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n rent: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeAccount2;\n owner: PublicKey;\n };\n}\n\n/**\n * Decode an InitializeAccount2 instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeAccount2Instruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeAccount2Instruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeAccount2InstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, rent },\n data,\n } = decodeInitializeAccount2InstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeAccount2) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !rent) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n rent,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeAccount2 instruction */\nexport interface DecodedInitializeAccount2InstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n owner: PublicKey;\n };\n}\n\n/**\n * Decode an InitializeAccount2 instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeAccount2InstructionUnchecked({\n programId,\n keys: [account, mint, rent],\n data,\n}: TransactionInstruction): DecodedInitializeAccount2InstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n rent,\n },\n data: initializeAccount2InstructionData.decode(data),\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_swap_horizontal_circle_outline = void 0;\nvar ic_swap_horizontal_circle_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3-13.5V9h-4v2h4v2.5l3.5-3.5zm-6 4L5.5 14 9 17.5V15h4v-2H9z\"\n },\n \"children\": []\n }]\n};\nexports.ic_swap_horizontal_circle_outline = ic_swap_horizontal_circle_outline;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BitcoinOutputClaimHandler = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst Utils_1 = require(\"../../../../../utils/Utils\");\r\nconst IBitcoinClaimHandler_1 = require(\"./IBitcoinClaimHandler\");\r\nconst btc_signer_1 = require(\"@scure/btc-signer\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst logger = (0, Utils_1.getLogger)(\"BitcoinOutputClaimHandler: \");\r\nclass BitcoinOutputClaimHandler extends IBitcoinClaimHandler_1.IBitcoinClaimHandler {\r\n serializeCommitment(data) {\r\n return [\r\n starknet_1.hash.computePoseidonHashOnElements([(0, Utils_1.toBigInt)(data.amount), (0, Utils_1.poseidonHashRange)(data.output)]),\r\n ...super.serializeCommitment(data)\r\n ];\r\n }\r\n async getWitness(signer, swapData, witnessData, feeRate) {\r\n if (!swapData.isClaimHandler(this.address))\r\n throw new Error(\"Invalid claim handler\");\r\n const parsedBtcTx = btc_signer_1.Transaction.fromRaw(buffer_1.Buffer.from(witnessData.tx.hex, \"hex\"));\r\n const out = parsedBtcTx.getOutput(witnessData.vout);\r\n const { initialTxns, witness } = await this._getWitness(signer, swapData, witnessData, {\r\n output: buffer_1.Buffer.from(out.script),\r\n amount: out.amount\r\n });\r\n witness.push(...(0, Utils_1.bufferToByteArray)(buffer_1.Buffer.from(witnessData.tx.hex, \"hex\")));\r\n witness.push(BigInt(witnessData.vout));\r\n return { initialTxns, witness };\r\n }\r\n getGas(data) {\r\n return BitcoinOutputClaimHandler.gas;\r\n }\r\n getType() {\r\n return BitcoinOutputClaimHandler.type;\r\n }\r\n}\r\nexports.BitcoinOutputClaimHandler = BitcoinOutputClaimHandler;\r\nBitcoinOutputClaimHandler.type = base_1.ChainSwapType.CHAIN;\r\nBitcoinOutputClaimHandler.gas = { l1: 20000 };\r\n","import { struct } from '@solana/buffer-layout';\nimport { bool } from '@solana/buffer-layout-utils';\nimport type { Account } from '../../state/account.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\n/** CpiGuard as stored by the program */\nexport interface CpiGuard {\n /** Lock certain token operations from taking place within CPI for this account */\n lockCpi: boolean;\n}\n\n/** Buffer layout for de/serializing a CPI Guard extension */\nexport const CpiGuardLayout = struct([bool('lockCpi')]);\n\nexport const CPI_GUARD_SIZE = CpiGuardLayout.span;\n\nexport function getCpiGuard(account: Account): CpiGuard | null {\n const extensionData = getExtensionData(ExtensionType.CpiGuard, account.tlvData);\n if (extensionData !== null) {\n return CpiGuardLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n Hash,\n u32,\n Input,\n toBytes,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n HashXOF,\n isLE,\n byteSwap32,\n} from './utils.js';\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n\n// Various per round constants calculations\nconst SHA3_PI: number[] = [];\nconst SHA3_ROTL: number[] = [];\nconst _SHA3_IOTA: bigint[] = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\nexport class Keccak extends Hash implements HashXOF {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak() {\n if (!isLE) byteSwap32(this.state32);\n keccakP(this.state32, this.rounds);\n if (!isLE) byteSwap32(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish() {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array) {\n output(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.canonicalDomain = canonicalDomain;\nconst constants_1 = require(\"./constants\");\n/**\n * Normalizes a domain to lowercase and punycode-encoded.\n * Runtime-agnostic equivalent to node's `domainToASCII`.\n * @see https://nodejs.org/docs/latest-v22.x/api/url.html#urldomaintoasciidomain\n */\nfunction domainToASCII(domain) {\n return new URL(`http://${domain}`).hostname;\n}\n/**\n * Transforms a domain name into a canonical domain name. The canonical domain name is a domain name\n * that has been trimmed, lowercased, stripped of leading dot, and optionally punycode-encoded\n * ({@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.1.2 | Section 5.1.2 of RFC 6265}). For\n * the most part, this function is idempotent (calling the function with the output from a previous call\n * returns the same output).\n *\n * @remarks\n * A canonicalized host name is the string generated by the following\n * algorithm:\n *\n * 1. Convert the host name to a sequence of individual domain name\n * labels.\n *\n * 2. Convert each label that is not a Non-Reserved LDH (NR-LDH) label,\n * to an A-label (see Section 2.3.2.1 of [RFC5890] for the former\n * and latter), or to a \"punycode label\" (a label resulting from the\n * \"ToASCII\" conversion in Section 4 of [RFC3490]), as appropriate\n * (see Section 6.3 of this specification).\n *\n * 3. Concatenate the resulting labels, separated by a %x2E (\".\")\n * character.\n *\n * @example\n * ```\n * canonicalDomain('.EXAMPLE.com') === 'example.com'\n * ```\n *\n * @param domainName - the domain name to generate the canonical domain from\n * @public\n */\nfunction canonicalDomain(domainName) {\n if (domainName == null) {\n return undefined;\n }\n let str = domainName.trim().replace(/^\\./, ''); // S4.1.2.3 & S5.2.3: ignore leading .\n if (constants_1.IP_V6_REGEX_OBJECT.test(str)) {\n if (!str.startsWith('[')) {\n str = '[' + str;\n }\n if (!str.endsWith(']')) {\n str = str + ']';\n }\n return domainToASCII(str).slice(1, -1); // remove [ and ]\n }\n // convert to IDN if any non-ASCII characters\n // eslint-disable-next-line no-control-regex\n if (/[^\\u0001-\\u007f]/.test(str)) {\n return domainToASCII(str);\n }\n // ASCII-only domain - not canonicalized with new URL() because it may be a malformed URL\n return str.toLowerCase();\n}\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaTokens = void 0;\r\nconst SolanaModule_1 = require(\"../SolanaModule\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst spl_token_1 = require(\"@solana/spl-token\");\r\nconst SolanaAction_1 = require(\"../SolanaAction\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nclass SolanaTokens extends SolanaModule_1.SolanaModule {\r\n /**\r\n * Creates an ATA for a specific public key & token, the ATA creation is paid for by the underlying provider's\r\n * public key\r\n *\r\n * @param signer\r\n * @param publicKey public key address of the user for which to initiate the ATA\r\n * @param token token identification for which the ATA should be initialized\r\n * @param requiredAta optional required ata address to use, if the address doesn't match it returns null\r\n * @constructor\r\n */\r\n InitAta(signer, publicKey, token, requiredAta) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(token, publicKey, true);\r\n if (requiredAta != null && !ata.equals(requiredAta))\r\n return null;\r\n return new SolanaAction_1.SolanaAction(signer, this.root, (0, spl_token_1.createAssociatedTokenAccountInstruction)(signer, ata, publicKey, token), SolanaTokens.CUCosts.ATA_INIT);\r\n }\r\n /**\r\n * Action for wrapping SOL to WSOL for a specific public key\r\n *\r\n * @param publicKey public key of the user for which to wrap the SOL\r\n * @param amount amount of SOL in lamports (smallest unit) to wrap\r\n * @param initAta whether we should also initialize the ATA before depositing SOL\r\n * @constructor\r\n */\r\n Wrap(publicKey, amount, initAta) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(SolanaTokens.WSOL_ADDRESS, publicKey, true);\r\n const action = new SolanaAction_1.SolanaAction(publicKey, this.root);\r\n if (initAta)\r\n action.addIx((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, ata, publicKey, SolanaTokens.WSOL_ADDRESS), SolanaTokens.CUCosts.ATA_INIT);\r\n action.addIx(web3_js_1.SystemProgram.transfer({\r\n fromPubkey: publicKey,\r\n toPubkey: ata,\r\n lamports: amount\r\n }), SolanaTokens.CUCosts.WRAP_SOL);\r\n action.addIx((0, spl_token_1.createSyncNativeInstruction)(ata));\r\n return action;\r\n }\r\n /**\r\n * Action for unwrapping WSOL to SOL for a specific public key\r\n *\r\n * @param publicKey public key of the user for which to unwrap the sol\r\n * @constructor\r\n */\r\n Unwrap(publicKey) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(SolanaTokens.WSOL_ADDRESS, publicKey, true);\r\n return new SolanaAction_1.SolanaAction(publicKey, this.root, (0, spl_token_1.createCloseAccountInstruction)(ata, publicKey, publicKey), SolanaTokens.CUCosts.ATA_CLOSE);\r\n }\r\n /**\r\n * Action for transferring the native SOL token, uses provider's public key as a sender\r\n *\r\n * @param signer\r\n * @param recipient\r\n * @param amount\r\n * @constructor\r\n * @private\r\n */\r\n SolTransfer(signer, recipient, amount) {\r\n return new SolanaAction_1.SolanaAction(signer, this.root, web3_js_1.SystemProgram.transfer({\r\n fromPubkey: signer,\r\n toPubkey: recipient,\r\n lamports: amount\r\n }), SolanaTokens.CUCosts.TRANSFER_SOL);\r\n }\r\n /**\r\n * Action for transferring the SPL token, uses provider's public key as a sender\r\n *\r\n * @param signer\r\n * @param recipient\r\n * @param token\r\n * @param amount\r\n * @constructor\r\n * @private\r\n */\r\n Transfer(signer, recipient, token, amount) {\r\n const srcAta = (0, spl_token_1.getAssociatedTokenAddressSync)(token, signer, true);\r\n const dstAta = (0, spl_token_1.getAssociatedTokenAddressSync)(token, recipient, true);\r\n return new SolanaAction_1.SolanaAction(signer, this.root, (0, spl_token_1.createTransferInstruction)(srcAta, dstAta, signer, amount), SolanaTokens.CUCosts.TRANSFER);\r\n }\r\n /**\r\n * Creates transactions for sending SOL (the native token)\r\n *\r\n * @param signer\r\n * @param amount amount of the SOL in lamports (smallest unit) to send\r\n * @param recipient recipient's address\r\n * @param feeRate fee rate to use for the transactions\r\n * @private\r\n */\r\n async txsTransferSol(signer, amount, recipient, feeRate) {\r\n const wsolAta = (0, spl_token_1.getAssociatedTokenAddressSync)(SolanaTokens.WSOL_ADDRESS, signer, true);\r\n const shouldUnwrap = await this.ataExists(wsolAta);\r\n const action = new SolanaAction_1.SolanaAction(signer, this.root);\r\n if (shouldUnwrap) {\r\n feeRate = feeRate || await this.root.Fees.getFeeRate([signer, recipient, wsolAta]);\r\n action.add(this.Unwrap(signer));\r\n }\r\n else {\r\n feeRate = feeRate || await this.root.Fees.getFeeRate([signer, recipient]);\r\n }\r\n action.add(this.SolTransfer(signer, recipient, amount));\r\n this.logger.debug(\"txsTransferSol(): transfer native solana TX created, recipient: \" + recipient.toString() +\r\n \" amount: \" + amount.toString(10) + \" unwrapping: \" + shouldUnwrap);\r\n return [await action.tx(feeRate)];\r\n }\r\n /**\r\n * Creates transactions for sending the over the tokens\r\n *\r\n * @param signer\r\n * @param token token to send\r\n * @param amount amount of the token to send\r\n * @param recipient recipient's address\r\n * @param feeRate fee rate to use for the transactions\r\n * @private\r\n */\r\n async txsTransferTokens(signer, token, amount, recipient, feeRate) {\r\n const srcAta = (0, spl_token_1.getAssociatedTokenAddressSync)(token, signer, true);\r\n const dstAta = (0, spl_token_1.getAssociatedTokenAddressSync)(token, recipient, true);\r\n feeRate = feeRate || await this.root.Fees.getFeeRate([signer, srcAta, dstAta]);\r\n const initAta = !await this.ataExists(dstAta);\r\n const action = new SolanaAction_1.SolanaAction(signer, this.root);\r\n if (initAta) {\r\n action.add(this.InitAta(signer, recipient, token));\r\n }\r\n action.add(this.Transfer(signer, recipient, token, amount));\r\n this.logger.debug(\"txsTransferTokens(): transfer TX created, recipient: \" + recipient.toString() +\r\n \" token: \" + token.toString() + \" amount: \" + amount.toString(10) + \" initAta: \" + initAta);\r\n return [await action.tx(feeRate)];\r\n }\r\n ///////////////////\r\n //// Tokens\r\n /**\r\n * Checks if the provided string is a valid solana token\r\n *\r\n * @param token\r\n */\r\n isValidToken(token) {\r\n try {\r\n new web3_js_1.PublicKey(token);\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Returns the specific ATA or null if it doesn't exist\r\n *\r\n * @param ata\r\n */\r\n getATAOrNull(ata) {\r\n return (0, spl_token_1.getAccount)(this.connection, ata).catch(e => {\r\n if (e instanceof spl_token_1.TokenAccountNotFoundError)\r\n return null;\r\n throw e;\r\n });\r\n }\r\n /**\r\n * Checks whether the specific ATA exists, uses tryWithRetries so retries on failure\r\n *\r\n * @param ata\r\n */\r\n async ataExists(ata) {\r\n const account = await (0, Utils_1.tryWithRetries)(() => this.getATAOrNull(ata), this.retryPolicy);\r\n return account != null;\r\n }\r\n /**\r\n * Returns the rent exempt deposit required to initiate the ATA\r\n */\r\n getATARentExemptLamports() {\r\n return Promise.resolve(BigInt(SolanaTokens.SPL_ATA_RENT_EXEMPT));\r\n }\r\n /**\r\n * Returns the token balance of the public key\r\n *\r\n * @param publicKey\r\n * @param token\r\n */\r\n async getTokenBalance(publicKey, token) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(token, publicKey, true);\r\n const [ataAccount, balance] = await Promise.all([\r\n this.getATAOrNull(ata),\r\n (token != null && token.equals(SolanaTokens.WSOL_ADDRESS)) ? this.connection.getBalance(publicKey) : Promise.resolve(null)\r\n ]);\r\n let ataExists = ataAccount != null;\r\n let sum = 0n;\r\n if (ataExists) {\r\n sum += ataAccount.amount;\r\n }\r\n if (balance != null) {\r\n let balanceLamports = BigInt(balance);\r\n if (!ataExists)\r\n balanceLamports = balanceLamports - await this.getATARentExemptLamports();\r\n if (balanceLamports >= 0n)\r\n sum += balanceLamports;\r\n }\r\n this.logger.debug(\"getTokenBalance(): token balance fetched, token: \" + token.toString() +\r\n \" address: \" + publicKey.toString() + \" amount: \" + sum.toString());\r\n return { balance: sum, ataExists };\r\n }\r\n /**\r\n * Returns the native currency address, we use WSOL address as placeholder for SOL\r\n */\r\n getNativeCurrencyAddress() {\r\n return SolanaTokens.WSOL_ADDRESS;\r\n }\r\n /**\r\n * Parses string base58 representation of the token address to a PublicKey object\r\n * @param address\r\n */\r\n toTokenAddress(address) {\r\n return new web3_js_1.PublicKey(address);\r\n }\r\n ///////////////////\r\n //// Transfers\r\n /**\r\n * Create transactions for sending a specific token to a destination address\r\n *\r\n * @param signer\r\n * @param token token to use for the transfer\r\n * @param amount amount of token in base units to transfer\r\n * @param dstAddress destination address of the recipient\r\n * @param feeRate fee rate to use for the transaction\r\n */\r\n txsTransfer(signer, token, amount, dstAddress, feeRate) {\r\n if (SolanaTokens.WSOL_ADDRESS.equals(token)) {\r\n return this.txsTransferSol(signer, amount, dstAddress, feeRate);\r\n }\r\n return this.txsTransferTokens(signer, token, amount, dstAddress, feeRate);\r\n }\r\n}\r\nexports.SolanaTokens = SolanaTokens;\r\nSolanaTokens.CUCosts = {\r\n WRAP_SOL: 10000,\r\n ATA_CLOSE: 10000,\r\n ATA_INIT: 40000,\r\n TRANSFER: 50000,\r\n TRANSFER_SOL: 5000\r\n};\r\nSolanaTokens.WSOL_ADDRESS = new web3_js_1.PublicKey(\"So11111111111111111111111111111111111111112\");\r\nSolanaTokens.SPL_ATA_RENT_EXEMPT = 2039280;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_not_interested = void 0;\nvar ic_not_interested = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z\"\n },\n \"children\": []\n }]\n};\nexports.ic_not_interested = ic_not_interested;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_download_outline = void 0;\nvar ic_download_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M19 9h-4V3H9v6H5l7 7 7-7zm-8 2V5h2v6h1.17L12 13.17 9.83 11H11zm-6 7h14v2H5z\"\n },\n \"children\": []\n }]\n};\nexports.ic_download_outline = ic_download_outline;","import { struct, u8 } from '@solana/buffer-layout';\nimport type { PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { TokenUnsupportedInstructionError } from '../../errors.js';\nimport { addSigners } from '../../instructions/internal.js';\nimport { TokenInstruction } from '../../instructions/types.js';\n\nexport enum MemoTransferInstruction {\n Enable = 0,\n Disable = 1,\n}\n\n/** TODO: docs */\nexport interface MemoTransferInstructionData {\n instruction: TokenInstruction.MemoTransferExtension;\n memoTransferInstruction: MemoTransferInstruction;\n}\n\n/** TODO: docs */\nexport const memoTransferInstructionData = struct([\n u8('instruction'),\n u8('memoTransferInstruction'),\n]);\n\n/**\n * Construct an EnableRequiredMemoTransfers instruction\n *\n * @param account Token account to update\n * @param authority The account's owner/delegate\n * @param signers The signer account(s)\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createEnableRequiredMemoTransfersInstruction(\n account: PublicKey,\n authority: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n return createMemoTransferInstruction(MemoTransferInstruction.Enable, account, authority, multiSigners, programId);\n}\n\n/**\n * Construct a DisableMemoTransfer instruction\n *\n * @param account Token account to update\n * @param authority The account's owner/delegate\n * @param signers The signer account(s)\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createDisableRequiredMemoTransfersInstruction(\n account: PublicKey,\n authority: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n return createMemoTransferInstruction(MemoTransferInstruction.Disable, account, authority, multiSigners, programId);\n}\n\nfunction createMemoTransferInstruction(\n memoTransferInstruction: MemoTransferInstruction,\n account: PublicKey,\n authority: PublicKey,\n multiSigners: (Signer | PublicKey)[],\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], authority, multiSigners);\n const data = Buffer.alloc(memoTransferInstructionData.span);\n memoTransferInstructionData.encode(\n {\n instruction: TokenInstruction.MemoTransferExtension,\n memoTransferInstruction,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChainSwapType = void 0;\r\nvar ChainSwapType;\r\n(function (ChainSwapType) {\r\n ChainSwapType[ChainSwapType[\"HTLC\"] = 0] = \"HTLC\";\r\n ChainSwapType[ChainSwapType[\"CHAIN\"] = 1] = \"CHAIN\";\r\n ChainSwapType[ChainSwapType[\"CHAIN_NONCED\"] = 2] = \"CHAIN_NONCED\";\r\n ChainSwapType[ChainSwapType[\"CHAIN_TXID\"] = 3] = \"CHAIN_TXID\";\r\n})(ChainSwapType = exports.ChainSwapType || (exports.ChainSwapType = {}));\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.utils = exports.DUST_THRESHOLDS = void 0;\r\n// baseline estimates, used to improve performance\r\nconst TX_EMPTY_SIZE = 4 + 1 + 1 + 4;\r\nconst TX_INPUT_BASE = 32 + 4 + 1 + 4;\r\nconst WITNESS_OVERHEAD = 2 / 4;\r\nconst P2WPKH_WITNESS = (1 + 1 + 72 + 1 + 33) / 4;\r\nconst P2TR_WITNESS = (1 + 1 + 65) / 4;\r\nconst TX_INPUT_PUBKEYHASH = 107;\r\nconst TX_INPUT_P2SH_P2WPKH = 23 + P2WPKH_WITNESS + 1;\r\nconst TX_INPUT_P2WPKH = 0 + P2WPKH_WITNESS;\r\nconst TX_INPUT_P2WSH = 0 + (1 + 1 + 64) / 4;\r\nconst TX_INPUT_P2TR = 0 + P2TR_WITNESS;\r\nconst TX_OUTPUT_BASE = 8 + 1;\r\nconst TX_OUTPUT_PUBKEYHASH = 25;\r\nconst TX_OUTPUT_P2SH_P2WPKH = 23;\r\nconst TX_OUTPUT_P2WPKH = 22;\r\nconst TX_OUTPUT_P2WSH = 34;\r\nconst TX_OUTPUT_P2TR = 34;\r\nconst INPUT_BYTES = {\r\n \"p2sh-p2wpkh\": TX_INPUT_P2SH_P2WPKH,\r\n \"p2wpkh\": TX_INPUT_P2WPKH,\r\n \"p2tr\": TX_INPUT_P2TR,\r\n \"p2pkh\": TX_INPUT_PUBKEYHASH,\r\n \"p2wsh\": TX_INPUT_P2WSH\r\n};\r\nfunction inputBytes(input) {\r\n return TX_INPUT_BASE + (input.script ? input.script.length : INPUT_BYTES[input.type]);\r\n}\r\nconst OUTPUT_BYTES = {\r\n \"p2sh-p2wpkh\": TX_OUTPUT_P2SH_P2WPKH,\r\n \"p2wpkh\": TX_OUTPUT_P2WPKH,\r\n \"p2tr\": TX_OUTPUT_P2TR,\r\n \"p2pkh\": TX_OUTPUT_PUBKEYHASH,\r\n \"p2wsh\": TX_OUTPUT_P2WSH\r\n};\r\nfunction outputBytes(output) {\r\n return TX_OUTPUT_BASE + (output.script ? output.script.length : OUTPUT_BYTES[output.type]);\r\n}\r\nexports.DUST_THRESHOLDS = {\r\n \"p2sh-p2wpkh\": 540,\r\n \"p2wpkh\": 294,\r\n \"p2tr\": 330,\r\n \"p2pkh\": 546,\r\n \"p2wsh\": 330\r\n};\r\nfunction dustThreshold(output) {\r\n return exports.DUST_THRESHOLDS[output.type];\r\n}\r\nfunction transactionBytes(inputs, outputs, changeType) {\r\n let size = TX_EMPTY_SIZE;\r\n let isSegwit = false;\r\n if (changeType !== \"p2pkh\") {\r\n size += WITNESS_OVERHEAD;\r\n let isSegwit = true;\r\n }\r\n for (let input of inputs) {\r\n if (!isSegwit && (input.type !== \"p2pkh\")) {\r\n isSegwit = true;\r\n size += WITNESS_OVERHEAD;\r\n }\r\n size += inputBytes(input);\r\n }\r\n for (let output of outputs) {\r\n size += outputBytes(output);\r\n }\r\n return Math.ceil(size);\r\n}\r\nfunction uintOrNaN(v) {\r\n if (typeof v !== 'number')\r\n return NaN;\r\n if (!isFinite(v))\r\n return NaN;\r\n if (Math.floor(v) !== v)\r\n return NaN;\r\n if (v < 0)\r\n return NaN;\r\n return v;\r\n}\r\nfunction sumForgiving(range) {\r\n return range.reduce((a, x) => a + (isFinite(x.value) ? x.value : 0), 0);\r\n}\r\nfunction sumOrNaN(range) {\r\n return range.reduce((a, x) => a + uintOrNaN(x.value), 0);\r\n}\r\nfunction finalize(inputs, outputs, feeRate, changeType, cpfpAddFee = 0) {\r\n const bytesAccum = transactionBytes(inputs, outputs, changeType);\r\n const feeAfterExtraOutput = (feeRate * (bytesAccum + outputBytes({ type: changeType }))) + cpfpAddFee;\r\n const remainderAfterExtraOutput = sumOrNaN(inputs) - (sumOrNaN(outputs) + feeAfterExtraOutput);\r\n // is it worth a change output?\r\n if (remainderAfterExtraOutput >= dustThreshold({ type: changeType })) {\r\n outputs = outputs.concat({ value: remainderAfterExtraOutput, type: changeType });\r\n }\r\n const fee = sumOrNaN(inputs) - sumOrNaN(outputs);\r\n if (!isFinite(fee))\r\n return { fee: (feeRate * bytesAccum) + cpfpAddFee };\r\n return {\r\n inputs: inputs,\r\n outputs: outputs,\r\n fee: fee\r\n };\r\n}\r\nexports.utils = {\r\n dustThreshold: dustThreshold,\r\n finalize: finalize,\r\n inputBytes: inputBytes,\r\n outputBytes: outputBytes,\r\n sumOrNaN: sumOrNaN,\r\n sumForgiving: sumForgiving,\r\n transactionBytes: transactionBytes,\r\n uintOrNaN: uintOrNaN\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.findLastIndex = exports.parseInitFunctionCalldata = exports.poseidonHashRange = exports.bufferToByteArray = exports.bufferToBytes31Span = exports.bytes31SpanToBuffer = exports.toBigInt = exports.bigNumberishToBuffer = exports.u32ReverseEndianness = exports.bufferToU32Array = exports.u32ArrayToBuffer = exports.calculateHash = exports.toHex = exports.tryWithRetries = exports.getLogger = exports.onceAsync = exports.timeoutPromise = exports.isUint256 = void 0;\r\nconst starknet_types_07_1 = require(\"starknet-types-07\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst StarknetSwapData_1 = require(\"../starknet/swaps/StarknetSwapData\");\r\nfunction isUint256(val) {\r\n return val.low != null && val.high != null;\r\n}\r\nexports.isUint256 = isUint256;\r\nfunction timeoutPromise(timeoutMillis, abortSignal) {\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(resolve, timeoutMillis);\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => {\r\n clearTimeout(timeout);\r\n reject(new Error(\"Aborted\"));\r\n });\r\n });\r\n}\r\nexports.timeoutPromise = timeoutPromise;\r\nfunction onceAsync(executor) {\r\n let promise;\r\n return () => {\r\n if (promise == null) {\r\n promise = executor();\r\n return promise;\r\n }\r\n else {\r\n return promise.catch(() => promise = executor());\r\n }\r\n };\r\n}\r\nexports.onceAsync = onceAsync;\r\nfunction getLogger(prefix) {\r\n return {\r\n debug: (msg, ...args) => console.debug(prefix + msg, ...args),\r\n info: (msg, ...args) => console.info(prefix + msg, ...args),\r\n warn: (msg, ...args) => console.warn(prefix + msg, ...args),\r\n error: (msg, ...args) => console.error(prefix + msg, ...args)\r\n };\r\n}\r\nexports.getLogger = getLogger;\r\nconst logger = getLogger(\"Utils: \");\r\nasync function tryWithRetries(func, retryPolicy, errorAllowed, abortSignal) {\r\n retryPolicy = retryPolicy || {};\r\n retryPolicy.maxRetries = retryPolicy.maxRetries || 5;\r\n retryPolicy.delay = retryPolicy.delay || 500;\r\n retryPolicy.exponential = retryPolicy.exponential == null ? true : retryPolicy.exponential;\r\n let err = null;\r\n for (let i = 0; i < retryPolicy.maxRetries; i++) {\r\n try {\r\n const resp = await func();\r\n return resp;\r\n }\r\n catch (e) {\r\n if (errorAllowed != null && errorAllowed(e))\r\n throw e;\r\n err = e;\r\n logger.error(\"tryWithRetries(): error on try number: \" + i, e);\r\n }\r\n if (abortSignal != null && abortSignal.aborted)\r\n throw new Error(\"Aborted\");\r\n if (i !== retryPolicy.maxRetries - 1) {\r\n await timeoutPromise(retryPolicy.exponential ? retryPolicy.delay * Math.pow(2, i) : retryPolicy.delay, abortSignal);\r\n }\r\n }\r\n throw err;\r\n}\r\nexports.tryWithRetries = tryWithRetries;\r\nfunction toHex(value, length = 64) {\r\n if (value == null)\r\n return null;\r\n switch (typeof (value)) {\r\n case \"string\":\r\n if (value.startsWith(\"0x\")) {\r\n return \"0x\" + value.slice(2).padStart(length, \"0\");\r\n }\r\n else {\r\n return \"0x\" + BigInt(value).toString(16).padStart(length, \"0\");\r\n }\r\n case \"number\":\r\n case \"bigint\":\r\n return \"0x\" + value.toString(16).padStart(length, \"0\");\r\n }\r\n return \"0x\" + value.toString(\"hex\").padStart(length, \"0\");\r\n}\r\nexports.toHex = toHex;\r\nfunction calculateHash(tx) {\r\n const commonData = {\r\n version: tx.details.version,\r\n maxFee: tx.details.maxFee,\r\n chainId: tx.details.chainId,\r\n nonce: tx.details.nonce,\r\n accountDeploymentData: tx.details.version === \"0x3\" ? tx.details.accountDeploymentData : null,\r\n nonceDataAvailabilityMode: tx.details.version === \"0x3\" ? starknet_types_07_1.EDAMode[tx.details.nonceDataAvailabilityMode] : null,\r\n feeDataAvailabilityMode: tx.details.version === \"0x3\" ? starknet_types_07_1.EDAMode[tx.details.feeDataAvailabilityMode] : null,\r\n resourceBounds: tx.details.version === \"0x3\" ? tx.details.resourceBounds : null,\r\n tip: tx.details.version === \"0x3\" ? tx.details.tip : null,\r\n paymasterData: tx.details.version === \"0x3\" ? tx.details.paymasterData : null\r\n };\r\n switch (tx.type) {\r\n case \"INVOKE\":\r\n const invokeData = starknet_1.CallData.compile(tx.signed.calldata);\r\n return tx.txId = starknet_1.hash.calculateInvokeTransactionHash({\r\n senderAddress: tx.details.walletAddress,\r\n compiledCalldata: invokeData,\r\n ...commonData\r\n });\r\n case \"DEPLOY_ACCOUNT\":\r\n const deployAccountData = starknet_1.CallData.compile(tx.signed.constructorCalldata);\r\n return tx.txId = starknet_1.hash.calculateDeployAccountTransactionHash({\r\n contractAddress: tx.tx.contractAddress,\r\n classHash: tx.signed.classHash,\r\n constructorCalldata: deployAccountData,\r\n compiledConstructorCalldata: deployAccountData,\r\n salt: tx.signed.addressSalt,\r\n ...commonData\r\n });\r\n default:\r\n throw new Error(\"Unsupported tx type!\");\r\n }\r\n}\r\nexports.calculateHash = calculateHash;\r\nfunction u32ArrayToBuffer(arr) {\r\n const buffer = buffer_1.Buffer.alloc(4 * arr.length);\r\n for (let i = 0; i < arr.length; i++) {\r\n buffer.writeUInt32BE(Number(arr[i]), i * 4);\r\n }\r\n return buffer;\r\n}\r\nexports.u32ArrayToBuffer = u32ArrayToBuffer;\r\nfunction bufferToU32Array(buffer) {\r\n const result = [];\r\n for (let i = 0; i < buffer.length; i += 4) {\r\n result.push(buffer.readUInt32BE(i));\r\n }\r\n return result;\r\n}\r\nexports.bufferToU32Array = bufferToU32Array;\r\nfunction u32ReverseEndianness(value) {\r\n const valueBN = BigInt(value);\r\n return Number(((valueBN & 0xffn) << 24n) |\r\n ((valueBN & 0xff00n) << 8n) |\r\n ((valueBN >> 8n) & 0xff00n) |\r\n ((valueBN >> 24n) & 0xffn));\r\n}\r\nexports.u32ReverseEndianness = u32ReverseEndianness;\r\nfunction bigNumberishToBuffer(value, length) {\r\n if (isUint256(value)) {\r\n return buffer_1.Buffer.concat([bigNumberishToBuffer(value.high, 16), bigNumberishToBuffer(value.low, 16)]);\r\n }\r\n if (typeof (value) === \"string\") {\r\n if (value.startsWith(\"0x\")) {\r\n value = value.slice(2);\r\n }\r\n else {\r\n value = BigInt(value).toString(16);\r\n }\r\n }\r\n else {\r\n value = value.toString(16);\r\n }\r\n const buff = buffer_1.Buffer.from(value.padStart(length * 2, \"0\"), \"hex\");\r\n if (buff.length > length)\r\n return buff.subarray(buff.length - length);\r\n return buff;\r\n}\r\nexports.bigNumberishToBuffer = bigNumberishToBuffer;\r\nfunction toBigInt(value) {\r\n if (value == null)\r\n return null;\r\n if (isUint256(value)) {\r\n return (toBigInt(value.high) << 128n) | toBigInt(value.low);\r\n }\r\n if (typeof (value) === \"string\") {\r\n if (!value.startsWith(\"0x\"))\r\n value = \"0x\" + value;\r\n return BigInt(value);\r\n }\r\n if (typeof (value) === \"bigint\") {\r\n return value;\r\n }\r\n return BigInt(value);\r\n}\r\nexports.toBigInt = toBigInt;\r\nfunction bytes31SpanToBuffer(span, length) {\r\n const buffers = [];\r\n const numFullBytes31 = Math.floor(length / 31);\r\n const additionalBytes = length - (numFullBytes31 * 31);\r\n const requiredSpanLength = numFullBytes31 + (additionalBytes === 0 ? 0 : 1);\r\n if (span.length < requiredSpanLength)\r\n throw new Error(\"Not enough bytes in the felt array!\");\r\n let i = 0;\r\n for (; i < numFullBytes31; i++) {\r\n buffers.push(bigNumberishToBuffer(span[i], 31));\r\n }\r\n if (additionalBytes !== 0)\r\n buffers.push(bigNumberishToBuffer(span[i], additionalBytes));\r\n return buffer_1.Buffer.concat(buffers);\r\n}\r\nexports.bytes31SpanToBuffer = bytes31SpanToBuffer;\r\nfunction bufferToBytes31Span(buffer, startIndex = 0, endIndex = buffer.length) {\r\n const values = [];\r\n for (let i = startIndex + 31; i < endIndex; i += 31) {\r\n values.push(BigInt(\"0x\" + buffer.subarray(i - 31, i).toString(\"hex\")));\r\n }\r\n if (endIndex > startIndex + (values.length * 31))\r\n values.push(BigInt(\"0x\" + buffer.subarray(startIndex + (values.length * 31), endIndex).toString(\"hex\")));\r\n return values;\r\n}\r\nexports.bufferToBytes31Span = bufferToBytes31Span;\r\nfunction bufferToByteArray(buffer, startIndex = 0, endIndex = buffer.length) {\r\n const values = [];\r\n for (let i = startIndex + 31; i < endIndex; i += 31) {\r\n values.push(BigInt(\"0x\" + buffer.subarray(i - 31, i).toString(\"hex\")));\r\n }\r\n let pendingWord = BigInt(0);\r\n let pendingWordLen = BigInt(endIndex - (startIndex + (values.length * 31)));\r\n if (pendingWordLen !== BigInt(0)) {\r\n pendingWord = BigInt(\"0x\" + buffer.subarray(startIndex + (values.length * 31), endIndex).toString(\"hex\"));\r\n }\r\n return [\r\n BigInt(values.length),\r\n ...values,\r\n pendingWord,\r\n pendingWordLen\r\n ];\r\n}\r\nexports.bufferToByteArray = bufferToByteArray;\r\nfunction poseidonHashRange(buffer, startIndex = 0, endIndex = buffer.length) {\r\n return starknet_1.hash.computePoseidonHashOnElements(bufferToBytes31Span(buffer, startIndex, endIndex));\r\n}\r\nexports.poseidonHashRange = poseidonHashRange;\r\nfunction parseInitFunctionCalldata(calldata, claimHandler) {\r\n const escrow = StarknetSwapData_1.StarknetSwapData.fromSerializedFeltArray(calldata, claimHandler);\r\n const signatureLen = Number(toBigInt(calldata.shift()));\r\n const signature = calldata.splice(0, signatureLen);\r\n const timeout = toBigInt(calldata.shift());\r\n const extraDataLen = Number(toBigInt(calldata.shift()));\r\n const extraData = calldata.splice(0, extraDataLen);\r\n if (calldata.length !== 0)\r\n throw new Error(\"Calldata not read fully!\");\r\n return { escrow, signature, timeout, extraData };\r\n}\r\nexports.parseInitFunctionCalldata = parseInitFunctionCalldata;\r\nfunction findLastIndex(array, callback) {\r\n for (let i = array.length - 1; i >= 0; i--) {\r\n if (callback(array[i], i))\r\n return i;\r\n }\r\n return -1;\r\n}\r\nexports.findLastIndex = findLastIndex;\r\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createSyncNativeInstruction } from '../instructions/syncNative.js';\n\n/**\n * Sync the balance of a native SPL token account to the underlying system account's lamports\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Native account to sync\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function syncNative(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createSyncNativeInstruction(account, programId));\n\n return await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaChainEventsBrowser = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst SolanaSwapData_1 = require(\"../swaps/SolanaSwapData\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst BN = require(\"bn.js\");\r\nconst SwapTypeEnum_1 = require(\"../swaps/SwapTypeEnum\");\r\nconst buffer_1 = require(\"buffer\");\r\n/**\r\n * Solana on-chain event handler for front-end systems without access to fs, uses pure WS to subscribe, might lose\r\n * out on some events if the network is unreliable, front-end systems should take this into consideration and not\r\n * rely purely on events\r\n */\r\nclass SolanaChainEventsBrowser {\r\n constructor(connection, solanaSwapContract) {\r\n this.listeners = [];\r\n this.eventListeners = [];\r\n this.logger = (0, Utils_1.getLogger)(\"SolanaChainEventsBrowser: \");\r\n this.connection = connection;\r\n this.solanaSwapProgram = solanaSwapContract;\r\n }\r\n /**\r\n * Fetches and parses transaction instructions\r\n *\r\n * @private\r\n * @returns {Promise[]>} array of parsed instructions\r\n */\r\n async getTransactionInstructions(signature) {\r\n const transaction = await (0, Utils_1.tryWithRetries)(async () => {\r\n const res = await this.connection.getParsedTransaction(signature, {\r\n commitment: \"confirmed\",\r\n maxSupportedTransactionVersion: 0\r\n });\r\n if (res == null)\r\n throw new Error(\"Transaction not found!\");\r\n return res;\r\n });\r\n if (transaction == null)\r\n return null;\r\n if (transaction.meta.err != null)\r\n return null;\r\n return this.solanaSwapProgram.Events.decodeInstructions(transaction.transaction.message);\r\n }\r\n /**\r\n * Converts initialize instruction data into {SolanaSwapData}\r\n *\r\n * @param initIx\r\n * @param txoHash\r\n * @private\r\n * @returns {SolanaSwapData} converted and parsed swap data\r\n */\r\n instructionToSwapData(initIx, txoHash) {\r\n const paymentHash = buffer_1.Buffer.from(initIx.data.swapData.hash);\r\n let securityDeposit = new BN(0);\r\n let claimerBounty = new BN(0);\r\n let payIn = true;\r\n if (initIx.name === \"offererInitialize\") {\r\n payIn = false;\r\n securityDeposit = initIx.data.securityDeposit;\r\n claimerBounty = initIx.data.claimerBounty;\r\n }\r\n return new SolanaSwapData_1.SolanaSwapData(initIx.accounts.offerer, initIx.accounts.claimer, initIx.accounts.mint, initIx.data.swapData.amount, paymentHash.toString(\"hex\"), initIx.data.swapData.sequence, initIx.data.swapData.expiry, initIx.data.swapData.nonce, initIx.data.swapData.confirmations, initIx.data.swapData.payOut, SwapTypeEnum_1.SwapTypeEnum.toNumber(initIx.data.swapData.kind), payIn, initIx.name === \"offererInitializePayIn\" ? initIx.accounts.offererAta : web3_js_1.PublicKey.default, initIx.data.swapData.payOut ? initIx.accounts.claimerAta : web3_js_1.PublicKey.default, securityDeposit, claimerBounty, txoHash);\r\n }\r\n /**\r\n * Returns async getter for fetching on-demand initialize event swap data\r\n *\r\n * @param eventObject\r\n * @param txoHash\r\n * @private\r\n * @returns {() => Promise} getter to be passed to InitializeEvent constructor\r\n */\r\n getSwapDataGetter(eventObject, txoHash) {\r\n return async () => {\r\n if (eventObject.instructions == null)\r\n eventObject.instructions = await this.getTransactionInstructions(eventObject.signature);\r\n if (eventObject.instructions == null)\r\n return null;\r\n const initIx = eventObject.instructions.find(ix => ix != null && (ix.name === \"offererInitializePayIn\" || ix.name === \"offererInitialize\"));\r\n if (initIx == null)\r\n return null;\r\n return this.instructionToSwapData(initIx, txoHash);\r\n };\r\n }\r\n parseInitializeEvent(data, eventObject) {\r\n const paymentHash = buffer_1.Buffer.from(data.hash).toString(\"hex\");\r\n const txoHash = buffer_1.Buffer.from(data.txoHash).toString(\"hex\");\r\n const escrowHash = (0, Utils_1.toEscrowHash)(paymentHash, data.sequence);\r\n this.logger.debug(\"InitializeEvent paymentHash: \" + paymentHash + \" sequence: \" + data.sequence.toString(10) +\r\n \" txoHash: \" + txoHash + \" escrowHash: \" + escrowHash);\r\n return new base_1.InitializeEvent(escrowHash, SwapTypeEnum_1.SwapTypeEnum.toChainSwapType(data.kind), (0, Utils_1.onceAsync)(this.getSwapDataGetter(eventObject, txoHash)));\r\n }\r\n parseRefundEvent(data) {\r\n const paymentHash = buffer_1.Buffer.from(data.hash).toString(\"hex\");\r\n const escrowHash = (0, Utils_1.toEscrowHash)(paymentHash, data.sequence);\r\n this.logger.debug(\"RefundEvent paymentHash: \" + paymentHash + \" sequence: \" + data.sequence.toString(10) +\r\n \" escrowHash: \" + escrowHash);\r\n return new base_1.RefundEvent(escrowHash);\r\n }\r\n parseClaimEvent(data) {\r\n const secret = buffer_1.Buffer.from(data.secret).toString(\"hex\");\r\n const paymentHash = buffer_1.Buffer.from(data.hash).toString(\"hex\");\r\n const escrowHash = (0, Utils_1.toEscrowHash)(paymentHash, data.sequence);\r\n this.logger.debug(\"ClaimEvent paymentHash: \" + paymentHash + \" sequence: \" + data.sequence.toString(10) +\r\n \" secret: \" + secret + \" escrowHash: \" + escrowHash);\r\n return new base_1.ClaimEvent(escrowHash, secret);\r\n }\r\n /**\r\n * Processes event as received from the chain, parses it & calls event listeners\r\n *\r\n * @param eventObject\r\n * @protected\r\n */\r\n async processEvent(eventObject) {\r\n let parsedEvents = eventObject.events.map(event => {\r\n let parsedEvent;\r\n switch (event.name) {\r\n case \"ClaimEvent\":\r\n parsedEvent = this.parseClaimEvent(event.data);\r\n break;\r\n case \"RefundEvent\":\r\n parsedEvent = this.parseRefundEvent(event.data);\r\n break;\r\n case \"InitializeEvent\":\r\n parsedEvent = this.parseInitializeEvent(event.data, eventObject);\r\n break;\r\n }\r\n parsedEvent.meta = {\r\n timestamp: eventObject.blockTime,\r\n txId: eventObject.signature\r\n };\r\n return parsedEvent;\r\n }).filter(parsedEvent => parsedEvent != null);\r\n for (let listener of this.listeners) {\r\n await listener(parsedEvents);\r\n }\r\n }\r\n /**\r\n * Returns websocket event handler for specific event type\r\n *\r\n * @param name\r\n * @protected\r\n * @returns event handler to be passed to program's addEventListener function\r\n */\r\n getWsEventHandler(name) {\r\n return (data, slotNumber, signature) => {\r\n this.logger.debug(\"wsEventHandler: Process signature: \", signature);\r\n this.processEvent({\r\n events: [{ name, data: data }],\r\n instructions: null,\r\n blockTime: Math.floor(Date.now() / 1000),\r\n signature\r\n }).then(() => true).catch(e => {\r\n console.error(e);\r\n return false;\r\n });\r\n };\r\n }\r\n /**\r\n * Sets up event handlers listening for swap events over websocket\r\n *\r\n * @protected\r\n */\r\n setupWebsocket() {\r\n const program = this.solanaSwapProgram.program;\r\n this.eventListeners.push(program.addEventListener(\"InitializeEvent\", this.getWsEventHandler(\"InitializeEvent\")));\r\n this.eventListeners.push(program.addEventListener(\"ClaimEvent\", this.getWsEventHandler(\"ClaimEvent\")));\r\n this.eventListeners.push(program.addEventListener(\"RefundEvent\", this.getWsEventHandler(\"RefundEvent\")));\r\n }\r\n init() {\r\n this.setupWebsocket();\r\n return Promise.resolve();\r\n }\r\n async stop() {\r\n for (let num of this.eventListeners) {\r\n await this.solanaSwapProgram.program.removeEventListener(num);\r\n }\r\n this.eventListeners = [];\r\n }\r\n registerListener(cbk) {\r\n this.listeners.push(cbk);\r\n }\r\n unregisterListener(cbk) {\r\n const index = this.listeners.indexOf(cbk);\r\n if (index >= 0) {\r\n this.listeners.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nexports.SolanaChainEventsBrowser = SolanaChainEventsBrowser;\r\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\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UnifiedSwapStorage = void 0;\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nconst logger = (0, Utils_1.getLogger)(\"UnifiedSwapStorage: \");\r\nclass UnifiedSwapStorage {\r\n constructor(storage) {\r\n this.weakRefCache = new Map();\r\n this.storage = storage;\r\n }\r\n init() {\r\n return this.storage.init();\r\n }\r\n /**\r\n * Params are specified in the following way:\r\n * - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met\r\n * - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met\r\n * - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met\r\n * @param params\r\n * @param reviver\r\n */\r\n async query(params, reviver) {\r\n const rawSwaps = await this.storage.query(params);\r\n return rawSwaps.map(rawObj => {\r\n const savedRef = this.weakRefCache.get(rawObj.id)?.deref();\r\n if (savedRef != null) {\r\n return savedRef;\r\n }\r\n logger.debug(\"query(): Reviving new swap instance: \" + rawObj.id);\r\n const value = reviver(rawObj);\r\n this.weakRefCache.set(rawObj.id, new WeakRef(value));\r\n return value;\r\n });\r\n }\r\n save(value) {\r\n this.weakRefCache.set(value.getIdentifierHashString(), new WeakRef(value));\r\n return this.storage.save(value.serialize());\r\n }\r\n saveAll(values) {\r\n values.forEach(value => this.weakRefCache.set(value.getIdentifierHashString(), new WeakRef(value)));\r\n return this.storage.saveAll(values.map(obj => obj.serialize()));\r\n }\r\n remove(value) {\r\n this.weakRefCache.delete(value.getIdentifierHashString());\r\n return this.storage.remove(value.serialize());\r\n }\r\n removeAll(values) {\r\n values.forEach(value => this.weakRefCache.delete(value.getIdentifierHashString()));\r\n return this.storage.removeAll(values.map(obj => obj.serialize()));\r\n }\r\n}\r\nexports.UnifiedSwapStorage = UnifiedSwapStorage;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.withBaseIcon = exports.Icon = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _SvgIcon = _interopRequireDefault(require(\"./SvgIcon\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar Icon = function Icon(props) {\n var style = props.style,\n className = props.className,\n icon = props.icon,\n size = props.size,\n tag = props.tag,\n others = _objectWithoutProperties(props, [\"style\", \"className\", \"icon\", \"size\", \"tag\"]); //eslint-disable-line\n\n\n var Tag = tag;\n return _react.default.createElement(Tag, _extends({}, others, {\n style: _objectSpread({\n display: 'inline-block'\n }, style),\n className: className\n }), _react.default.createElement(_SvgIcon.default, {\n size: props.size,\n icon: props.icon,\n title: props.title\n }));\n};\n\nexports.Icon = Icon;\n\nvar withBaseIcon = function withBaseIcon(defaultProps) {\n return function (props) {\n var propsToUse = _objectSpread({}, defaultProps);\n\n return _react.default.createElement(Icon, _extends({}, propsToUse, props));\n };\n};\n\nexports.withBaseIcon = withBaseIcon;\nIcon.defaultProps = {\n size: 16,\n fill: 'currentColor',\n tag: 'i'\n};\nIcon.propTypes = {\n icon: _propTypes.default.object.isRequired,\n size: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n style: _propTypes.default.object,\n tag: _propTypes.default.oneOf(['i', 'span', 'div']),\n className: _propTypes.default.string\n};\nvar _default = Icon;\nexports.default = _default;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetContractEvents = void 0;\r\nconst StarknetEvents_1 = require(\"../../base/modules/StarknetEvents\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nclass StarknetContractEvents extends StarknetEvents_1.StarknetEvents {\r\n constructor(root, abi) {\r\n super(root);\r\n this.abi = abi;\r\n }\r\n toStarknetAbiEvents(blockEvents) {\r\n const abiEvents = starknet_1.events.getAbiEvents(this.abi);\r\n const abiStructs = starknet_1.CallData.getAbiStruct(this.abi);\r\n const abiEnums = starknet_1.CallData.getAbiEnum(this.abi);\r\n const result = starknet_1.events.parseEvents(blockEvents, abiEvents, abiStructs, abiEnums);\r\n if (result.length !== blockEvents.length)\r\n throw new Error(\"Invalid event detected, please check provided ABI\");\r\n return result.map((value, index) => {\r\n const starknetEvent = blockEvents[index];\r\n const name = Object.keys(value)[0];\r\n return {\r\n name: name,\r\n txHash: starknetEvent.transaction_hash,\r\n params: value[name],\r\n blockNumber: starknetEvent.block_number,\r\n blockHash: starknetEvent.block_hash,\r\n data: starknetEvent.data,\r\n keys: starknetEvent.keys\r\n };\r\n });\r\n }\r\n toFilter(events, keys) {\r\n const filterArray = [];\r\n filterArray.push(events.map(name => {\r\n const arr = name.split(\":\");\r\n const eventName = arr[arr.length - 1];\r\n return (0, Utils_1.toHex)(starknet_1.hash.starknetKeccak(eventName));\r\n }));\r\n if (keys != null)\r\n keys.forEach(key => filterArray.push(key == null ? [] : [key]));\r\n return filterArray;\r\n }\r\n /**\r\n * Returns the events occuring in a range of starknet block as identified by the contract and keys,\r\n * returns pending events if no startHeight & endHeight is passed\r\n *\r\n * @param events\r\n * @param keys\r\n * @param startBlockHeight\r\n * @param endBlockHeight\r\n */\r\n async getContractBlockEvents(events, keys, startBlockHeight, endBlockHeight = startBlockHeight) {\r\n const blockEvents = await super.getBlockEvents(this.root.contract.address, this.toFilter(events, keys), startBlockHeight, endBlockHeight);\r\n return this.toStarknetAbiEvents(blockEvents);\r\n }\r\n /**\r\n * Runs a search forawrds in time, processing the events for a specific topic public key\r\n *\r\n * @param events\r\n * @param keys\r\n * @param processor called for every event, should return a value if the correct event was found, or null\r\n * if the search should continue\r\n * @param abortSignal\r\n */\r\n async findInContractEvents(events, keys, processor, abortSignal) {\r\n return this.findInEvents(this.root.contract.address, this.toFilter(events, keys), async (events) => {\r\n const parsedEvents = this.toStarknetAbiEvents(events);\r\n for (let event of parsedEvents) {\r\n const result = await processor(event);\r\n if (result != null)\r\n return result;\r\n }\r\n }, abortSignal);\r\n }\r\n}\r\nexports.StarknetContractEvents = StarknetContractEvents;\r\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.question = void 0;\nvar question = {\n \"viewBox\": \"0 0 1024 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M704 1256v240q0 16-12 28t-28 12h-240q-16 0-28-12t-12-28v-240q0-16 12-28t28-12h240q16 0 28 12t12 28zM1020 656q0 54-15.5 101t-35 76.5-55 59.5-57.5 43.5-61 35.5q-41 23-68.5 65t-27.5 67q0 17-12 32.5t-28 15.5h-240q-15 0-25.5-18.5t-10.5-37.5v-45q0-83 65-156.5t143-108.5q59-27 84-56t25-76q0-42-46.5-74t-107.5-32q-65 0-108 29-35 25-107 115-13 16-31 16-12 0-25-8l-164-125q-13-10-15.5-25t5.5-28q160-266 464-266 80 0 161 31t146 83 106 127.5 41 158.5z\"\n }\n }]\n};\nexports.question = question;","function noop() {\n}\nfunction run(t) {\n return t();\n}\nfunction blank_object() {\n return /* @__PURE__ */ Object.create(null);\n}\nfunction run_all(t) {\n t.forEach(run);\n}\nfunction is_function(t) {\n return typeof t == \"function\";\n}\nfunction safe_not_equal(t, e) {\n return t != t ? e == e : t !== e || t && typeof t == \"object\" || typeof t == \"function\";\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(t, e) {\n return src_url_equal_anchor || (src_url_equal_anchor = document.createElement(\"a\")), src_url_equal_anchor.href = e, t === src_url_equal_anchor.href;\n}\nfunction is_empty(t) {\n return Object.keys(t).length === 0;\n}\nfunction null_to_empty(t) {\n return t == null ? \"\" : t;\n}\nfunction append(t, e) {\n t.appendChild(e);\n}\nfunction append_styles(t, e, r) {\n const n = get_root_for_style(t);\n if (!n.getElementById(e)) {\n const o = element(\"style\");\n o.id = e, o.textContent = r, append_stylesheet(n, o);\n }\n}\nfunction get_root_for_style(t) {\n if (!t)\n return document;\n const e = t.getRootNode ? t.getRootNode() : t.ownerDocument;\n return e && e.host ? e : t.ownerDocument;\n}\nfunction append_stylesheet(t, e) {\n append(t.head || t, e);\n}\nfunction insert(t, e, r) {\n t.insertBefore(e, r || null);\n}\nfunction detach(t) {\n t.parentNode.removeChild(t);\n}\nfunction destroy_each(t, e) {\n for (let r = 0; r < t.length; r += 1)\n t[r] && t[r].d(e);\n}\nfunction element(t) {\n return document.createElement(t);\n}\nfunction text(t) {\n return document.createTextNode(t);\n}\nfunction space() {\n return text(\" \");\n}\nfunction listen(t, e, r, n) {\n return t.addEventListener(e, r, n), () => t.removeEventListener(e, r, n);\n}\nfunction attr(t, e, r) {\n r == null ? t.removeAttribute(e) : t.getAttribute(e) !== r && t.setAttribute(e, r);\n}\nfunction children(t) {\n return Array.from(t.childNodes);\n}\nfunction set_data(t, e) {\n e = \"\" + e, t.wholeText !== e && (t.data = e);\n}\nlet current_component;\nfunction set_current_component(t) {\n current_component = t;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(\"Function called outside component initialization\");\n return current_component;\n}\nfunction onMount(t) {\n get_current_component().$$.on_mount.push(t);\n}\nconst dirty_components = [], binding_callbacks = [], render_callbacks = [], flush_callbacks = [], resolved_promise = Promise.resolve();\nlet update_scheduled = !1;\nfunction schedule_update() {\n update_scheduled || (update_scheduled = !0, resolved_promise.then(flush));\n}\nfunction add_render_callback(t) {\n render_callbacks.push(t);\n}\nconst seen_callbacks = /* @__PURE__ */ new Set();\nlet flushidx = 0;\nfunction flush() {\n const t = current_component;\n do {\n for (; flushidx < dirty_components.length; ) {\n const e = dirty_components[flushidx];\n flushidx++, set_current_component(e), update(e.$$);\n }\n for (set_current_component(null), dirty_components.length = 0, flushidx = 0; binding_callbacks.length; )\n binding_callbacks.pop()();\n for (let e = 0; e < render_callbacks.length; e += 1) {\n const r = render_callbacks[e];\n seen_callbacks.has(r) || (seen_callbacks.add(r), r());\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n for (; flush_callbacks.length; )\n flush_callbacks.pop()();\n update_scheduled = !1, seen_callbacks.clear(), set_current_component(t);\n}\nfunction update(t) {\n if (t.fragment !== null) {\n t.update(), run_all(t.before_update);\n const e = t.dirty;\n t.dirty = [-1], t.fragment && t.fragment.p(t.ctx, e), t.after_update.forEach(add_render_callback);\n }\n}\nconst outroing = /* @__PURE__ */ new Set();\nfunction transition_in(t, e) {\n t && t.i && (outroing.delete(t), t.i(e));\n}\nfunction mount_component(t, e, r, n) {\n const { fragment: o, on_mount: s, on_destroy: i, after_update: a } = t.$$;\n o && o.m(e, r), n || add_render_callback(() => {\n const c = s.map(run).filter(is_function);\n i ? i.push(...c) : run_all(c), t.$$.on_mount = [];\n }), a.forEach(add_render_callback);\n}\nfunction destroy_component(t, e) {\n const r = t.$$;\n r.fragment !== null && (run_all(r.on_destroy), r.fragment && r.fragment.d(e), r.on_destroy = r.fragment = null, r.ctx = []);\n}\nfunction make_dirty(t, e) {\n t.$$.dirty[0] === -1 && (dirty_components.push(t), schedule_update(), t.$$.dirty.fill(0)), t.$$.dirty[e / 31 | 0] |= 1 << e % 31;\n}\nfunction init$1(t, e, r, n, o, s, i, a = [-1]) {\n const c = current_component;\n set_current_component(t);\n const l = t.$$ = {\n fragment: null,\n ctx: null,\n props: s,\n update: noop,\n not_equal: o,\n bound: blank_object(),\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(e.context || (c ? c.$$.context : [])),\n callbacks: blank_object(),\n dirty: a,\n skip_bound: !1,\n root: e.target || c.$$.root\n };\n i && i(l.root);\n let u = !1;\n if (l.ctx = r ? r(t, e.props || {}, (d, m, ...g) => {\n const h = g.length ? g[0] : m;\n return l.ctx && o(l.ctx[d], l.ctx[d] = h) && (!l.skip_bound && l.bound[d] && l.bound[d](h), u && make_dirty(t, d)), m;\n }) : [], l.update(), u = !0, run_all(l.before_update), l.fragment = n ? n(l.ctx) : !1, e.target) {\n if (e.hydrate) {\n const d = children(e.target);\n l.fragment && l.fragment.l(d), d.forEach(detach);\n } else\n l.fragment && l.fragment.c();\n e.intro && transition_in(t.$$.fragment), mount_component(t, e.target, e.anchor, e.customElement), flush();\n }\n set_current_component(c);\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1), this.$destroy = noop;\n }\n $on(e, r) {\n const n = this.$$.callbacks[e] || (this.$$.callbacks[e] = []);\n return n.push(r), () => {\n const o = n.indexOf(r);\n o !== -1 && n.splice(o, 1);\n };\n }\n $set(e) {\n this.$$set && !is_empty(e) && (this.$$.skip_bound = !0, this.$$set(e), this.$$.skip_bound = !1);\n }\n}\nfunction add_css(t) {\n append_styles(t, \"svelte-1mtuslq\", `.sr-only.svelte-1mtuslq.svelte-1mtuslq{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.fixed.svelte-1mtuslq.svelte-1mtuslq{position:fixed}.inset-0.svelte-1mtuslq.svelte-1mtuslq{top:0px;right:0px;bottom:0px;left:0px}.z-40.svelte-1mtuslq.svelte-1mtuslq{z-index:40}.z-50.svelte-1mtuslq.svelte-1mtuslq{z-index:50}.mx-6.svelte-1mtuslq.svelte-1mtuslq{margin-left:1.5rem;margin-right:1.5rem}.mb-4.svelte-1mtuslq.svelte-1mtuslq{margin-bottom:1rem}.flex.svelte-1mtuslq.svelte-1mtuslq{display:flex}.h-8.svelte-1mtuslq.svelte-1mtuslq{height:2rem}.w-full.svelte-1mtuslq.svelte-1mtuslq{width:100%}.w-8.svelte-1mtuslq.svelte-1mtuslq{width:2rem}.max-w-\\\\[500px\\\\].svelte-1mtuslq.svelte-1mtuslq{max-width:500px}@keyframes svelte-1mtuslq-spin{to{transform:rotate(360deg)}}.animate-spin.svelte-1mtuslq.svelte-1mtuslq{animation:svelte-1mtuslq-spin 1s linear infinite}.cursor-pointer.svelte-1mtuslq.svelte-1mtuslq{cursor:pointer}.flex-col.svelte-1mtuslq.svelte-1mtuslq{flex-direction:column}.items-center.svelte-1mtuslq.svelte-1mtuslq{align-items:center}.justify-center.svelte-1mtuslq.svelte-1mtuslq{justify-content:center}.justify-between.svelte-1mtuslq.svelte-1mtuslq{justify-content:space-between}.gap-3.svelte-1mtuslq.svelte-1mtuslq{gap:0.75rem}.rounded-md.svelte-1mtuslq.svelte-1mtuslq{border-radius:0.375rem}.rounded-full.svelte-1mtuslq.svelte-1mtuslq{border-radius:9999px}.bg-black\\\\/25.svelte-1mtuslq.svelte-1mtuslq{background-color:rgb(0 0 0 / 0.25)}.bg-slate-50.svelte-1mtuslq.svelte-1mtuslq{--tw-bg-opacity:1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.bg-slate-100.svelte-1mtuslq.svelte-1mtuslq{--tw-bg-opacity:1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.fill-neutral-600.svelte-1mtuslq.svelte-1mtuslq{fill:#525252}.p-4.svelte-1mtuslq.svelte-1mtuslq{padding:1rem}.p-3.svelte-1mtuslq.svelte-1mtuslq{padding:0.75rem}.text-center.svelte-1mtuslq.svelte-1mtuslq{text-align:center}.text-xl.svelte-1mtuslq.svelte-1mtuslq{font-size:1.25rem;line-height:1.75rem}.text-neutral-300.svelte-1mtuslq.svelte-1mtuslq{--tw-text-opacity:1;color:rgb(212 212 212 / var(--tw-text-opacity))}.antialiased.svelte-1mtuslq.svelte-1mtuslq{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow.svelte-1mtuslq.svelte-1mtuslq{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-sm.svelte-1mtuslq.svelte-1mtuslq{--tw-shadow:0 1px 2px 0 rgb(0 0 0 / 0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.filter.svelte-1mtuslq.svelte-1mtuslq{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm.svelte-1mtuslq.svelte-1mtuslq{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-colors.svelte-1mtuslq.svelte-1mtuslq{transition-property:color, background-color, border-color, fill, stroke, -webkit-text-decoration-color;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, -webkit-text-decoration-color;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.svelte-1mtuslq.svelte-1mtuslq,.svelte-1mtuslq.svelte-1mtuslq::before,.svelte-1mtuslq.svelte-1mtuslq::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}.svelte-1mtuslq.svelte-1mtuslq::before,.svelte-1mtuslq.svelte-1mtuslq::after{--tw-content:''}h1.svelte-1mtuslq.svelte-1mtuslq{font-size:inherit;font-weight:inherit}a.svelte-1mtuslq.svelte-1mtuslq{color:inherit;text-decoration:inherit}.svelte-1mtuslq.svelte-1mtuslq:-moz-focusring{outline:auto}.svelte-1mtuslq.svelte-1mtuslq:-moz-ui-invalid{box-shadow:none}.svelte-1mtuslq.svelte-1mtuslq::-webkit-inner-spin-button,.svelte-1mtuslq.svelte-1mtuslq::-webkit-outer-spin-button{height:auto}.svelte-1mtuslq.svelte-1mtuslq::-webkit-search-decoration{-webkit-appearance:none}.svelte-1mtuslq.svelte-1mtuslq::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}h1.svelte-1mtuslq.svelte-1mtuslq{margin:0}ul.svelte-1mtuslq.svelte-1mtuslq{list-style:none;margin:0;padding:0}[role=\"button\"].svelte-1mtuslq.svelte-1mtuslq{cursor:pointer}.svelte-1mtuslq.svelte-1mtuslq:disabled{cursor:default}img.svelte-1mtuslq.svelte-1mtuslq,svg.svelte-1mtuslq.svelte-1mtuslq{display:block;vertical-align:middle}img.svelte-1mtuslq.svelte-1mtuslq{max-width:100%;height:auto}.svelte-1mtuslq.svelte-1mtuslq,.svelte-1mtuslq.svelte-1mtuslq::before,.svelte-1mtuslq.svelte-1mtuslq::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.svelte-1mtuslq.svelte-1mtuslq::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.svelte-1mtuslq.svelte-1mtuslq{font-family:Nunito, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto,\n Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue,\n sans-serif;-webkit-font-smoothing:antialiased}.hover\\\\:bg-slate-200.svelte-1mtuslq.svelte-1mtuslq:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.dark.svelte-1mtuslq .dark\\\\:border-neutral-600.svelte-1mtuslq{--tw-border-opacity:1;border-color:rgb(82 82 82 / var(--tw-border-opacity))}.dark.svelte-1mtuslq .dark\\\\:bg-neutral-900.svelte-1mtuslq{--tw-bg-opacity:1;background-color:rgb(23 23 23 / var(--tw-bg-opacity))}.dark.svelte-1mtuslq .dark\\\\:bg-neutral-800.svelte-1mtuslq{--tw-bg-opacity:1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.dark.svelte-1mtuslq .dark\\\\:fill-neutral-300.svelte-1mtuslq{fill:#d4d4d4}.dark.svelte-1mtuslq .dark\\\\:text-white.svelte-1mtuslq{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark.svelte-1mtuslq .dark\\\\:text-neutral-600.svelte-1mtuslq{--tw-text-opacity:1;color:rgb(82 82 82 / var(--tw-text-opacity))}.dark.svelte-1mtuslq .dark\\\\:hover\\\\:bg-neutral-700.svelte-1mtuslq:hover{--tw-bg-opacity:1;background-color:rgb(64 64 64 / var(--tw-bg-opacity))}`);\n}\nfunction get_each_context(t, e, r) {\n const n = t.slice();\n return n[20] = e[r], n;\n}\nfunction get_each_context_1(t, e, r) {\n const n = t.slice();\n return n[23] = e[r], n;\n}\nfunction create_else_block(t) {\n let e, r;\n return {\n c() {\n e = element(\"img\"), attr(e, \"alt\", t[23].name), src_url_equal(e.src, r = t[23].icon) || attr(e, \"src\", r), attr(e, \"class\", \"w-8 h-8 rounded-full svelte-1mtuslq\");\n },\n m(n, o) {\n insert(n, e, o);\n },\n p: noop,\n d(n) {\n n && detach(e);\n }\n };\n}\nfunction create_if_block(t) {\n let e;\n return {\n c() {\n e = element(\"div\"), e.innerHTML = ` \n Loading...`, attr(e, \"role\", \"status\"), attr(e, \"class\", \"svelte-1mtuslq\");\n },\n m(r, n) {\n insert(r, e, n);\n },\n p: noop,\n d(r) {\n r && detach(e);\n }\n };\n}\nfunction create_each_block_1(t) {\n let e, r = t[23].name + \"\", n, o, s, i;\n function a(m, g) {\n return m[1] === m[23].id ? create_if_block : create_else_block;\n }\n let c = a(t), l = c(t);\n function u() {\n return t[12](t[23]);\n }\n function d(...m) {\n return t[13](t[23], ...m);\n }\n return {\n c() {\n e = element(\"li\"), n = text(r), o = space(), l.c(), attr(e, \"class\", \"flex justify-between items-center p-3 bg-slate-100 rounded-md cursor-pointer shadow-sm hover:bg-slate-200 transition-colors dark:bg-neutral-800 dark:hover:bg-neutral-700 dark:border-neutral-600 dark:text-white svelte-1mtuslq\");\n },\n m(m, g) {\n insert(m, e, g), append(e, n), append(e, o), l.m(e, null), s || (i = [\n listen(e, \"click\", u),\n listen(e, \"keyup\", d)\n ], s = !0);\n },\n p(m, g) {\n t = m, c === (c = a(t)) && l ? l.p(t, g) : (l.d(1), l = c(t), l && (l.c(), l.m(e, null)));\n },\n d(m) {\n m && detach(e), l.d(), s = !1, run_all(i);\n }\n };\n}\nfunction create_each_block(t) {\n let e, r, n = t[20].name + \"\", o, s, i, a, c, l, u, d, m, g;\n return {\n c() {\n e = element(\"a\"), r = element(\"li\"), o = text(n), s = space(), i = element(\"img\"), l = space(), attr(i, \"alt\", a = t[20].name), src_url_equal(i.src, c = t[20].icon) || attr(i, \"src\", c), attr(i, \"class\", \"w-8 h-8 rounded-full svelte-1mtuslq\"), attr(r, \"class\", \"flex justify-between items-center p-3 bg-slate-100 rounded-md shadow-sm cursor-pointer hover:bg-slate-200 transition-colors dark:bg-neutral-800 dark:hover:bg-neutral-700 dark:border-neutral-600 dark:text-white svelte-1mtuslq\"), attr(e, \"alt\", u = t[20].name + \" download link\"), attr(e, \"href\", d = t[20].download), attr(e, \"target\", \"_blank\"), attr(e, \"rel\", \"noopener noreferrer\"), attr(e, \"class\", \"svelte-1mtuslq\");\n },\n m(h, y) {\n insert(h, e, y), append(e, r), append(r, o), append(r, s), append(r, i), append(e, l), m || (g = [\n listen(r, \"click\", t[14]),\n listen(r, \"keyup\", t[15])\n ], m = !0);\n },\n p(h, y) {\n y & 1 && n !== (n = h[20].name + \"\") && set_data(o, n), y & 1 && a !== (a = h[20].name) && attr(i, \"alt\", a), y & 1 && !src_url_equal(i.src, c = h[20].icon) && attr(i, \"src\", c), y & 1 && u !== (u = h[20].name + \" download link\") && attr(e, \"alt\", u), y & 1 && d !== (d = h[20].download) && attr(e, \"href\", d);\n },\n d(h) {\n h && detach(e), m = !1, run_all(g);\n }\n };\n}\nfunction create_fragment(t) {\n let e, r, n, o, s, i, a, c, l, u, d, m, g = t[4], h = [];\n for (let p = 0; p < g.length; p += 1)\n h[p] = create_each_block_1(get_each_context_1(t, g, p));\n let y = t[0], w = [];\n for (let p = 0; p < y.length; p += 1)\n w[p] = create_each_block(get_each_context(t, y, p));\n return {\n c() {\n e = element(\"div\"), r = element(\"main\"), n = element(\"header\"), o = element(\"h1\"), o.textContent = \"Connect a wallet\", s = space(), i = element(\"span\"), i.innerHTML = '', a = space(), c = element(\"ul\");\n for (let p = 0; p < h.length; p += 1)\n h[p].c();\n l = space();\n for (let p = 0; p < w.length; p += 1)\n w[p].c();\n attr(o, \"class\", \"text-xl svelte-1mtuslq\"), attr(i, \"role\", \"button\"), attr(i, \"alt\", \"Close\"), attr(i, \"class\", \"cursor-pointer svelte-1mtuslq\"), attr(n, \"class\", \"flex items-center justify-between mb-4 svelte-1mtuslq\"), attr(c, \"class\", \"flex flex-col gap-3 svelte-1mtuslq\"), attr(r, \"role\", \"dialog\"), attr(r, \"class\", null_to_empty(\"bg-slate-50 rounded-md shadow w-full max-w-[500px] mx-6 p-4 text-center z-50 dark:bg-neutral-900 dark:text-white\") + \" svelte-1mtuslq\"), attr(e, \"class\", u = null_to_empty(\"backdrop-blur-sm fixed inset-0 flex items-center justify-center bg-black/25 z-40 \" + t[2]) + \" svelte-1mtuslq\");\n },\n m(p, I) {\n insert(p, e, I), append(e, r), append(r, n), append(n, o), append(n, s), append(n, i), append(r, a), append(r, c);\n for (let M = 0; M < h.length; M += 1)\n h[M].m(c, null);\n append(c, l);\n for (let M = 0; M < w.length; M += 1)\n w[M].m(c, null);\n d || (m = [\n listen(i, \"click\", t[10]),\n listen(i, \"keyup\", t[11]),\n listen(r, \"click\", click_handler_3),\n listen(r, \"keyup\", keyup_handler_3),\n listen(e, \"click\", t[16]),\n listen(e, \"keyup\", t[17])\n ], d = !0);\n },\n p(p, [I]) {\n if (I & 26) {\n g = p[4];\n let M;\n for (M = 0; M < g.length; M += 1) {\n const D = get_each_context_1(p, g, M);\n h[M] ? h[M].p(D, I) : (h[M] = create_each_block_1(D), h[M].c(), h[M].m(c, l));\n }\n for (; M < h.length; M += 1)\n h[M].d(1);\n h.length = g.length;\n }\n if (I & 9) {\n y = p[0];\n let M;\n for (M = 0; M < y.length; M += 1) {\n const D = get_each_context(p, y, M);\n w[M] ? w[M].p(D, I) : (w[M] = create_each_block(D), w[M].c(), w[M].m(c, null));\n }\n for (; M < w.length; M += 1)\n w[M].d(1);\n w.length = y.length;\n }\n I & 4 && u !== (u = null_to_empty(\"backdrop-blur-sm fixed inset-0 flex items-center justify-center bg-black/25 z-40 \" + p[2]) + \" svelte-1mtuslq\") && attr(e, \"class\", u);\n },\n i: noop,\n o: noop,\n d(p) {\n p && detach(e), destroy_each(h, p), destroy_each(w, p), d = !1, run_all(m);\n }\n };\n}\nconst click_handler_3 = (t) => t.stopPropagation(), keyup_handler_3 = (t) => t.stopPropagation();\nfunction instance(t, e, r) {\n const n = typeof window < \"u\" ? window : null;\n let { lastWallet: o = null } = e, { installedWallets: s = [] } = e, { authorizedWallets: i = [] } = e, { discoveryWallets: a = [] } = e, { callback: c = async () => {\n } } = e, { theme: l = null } = e, u = !1, d = async (b) => {\n var A;\n r(1, u = (A = b == null ? void 0 : b.id) != null ? A : !1), await c(b).catch(() => {\n }), r(1, u = !1);\n }, m = \"\";\n l === \"dark\" || l === null && (n == null ? void 0 : n.matchMedia(\"(prefers-color-scheme: dark)\").matches) ? m = \"dark\" : m = \"\";\n const g = (b) => {\n r(2, m = b.matches ? \"dark\" : \"\");\n };\n onMount(() => {\n if (l === null)\n return n == null || n.matchMedia(\"(prefers-color-scheme: dark)\").addEventListener(\"change\", g), () => {\n n == null || n.matchMedia(\"(prefers-color-scheme: dark)\").removeEventListener(\"change\", g);\n };\n });\n const h = [o, ...i, ...s].filter(Boolean), y = () => d(null), w = (b) => {\n b.key === \"Enter\" && d(null);\n }, p = (b) => d(b), I = (b, A) => {\n A.key === \"Enter\" && d(b);\n }, M = () => d(null), D = (b) => {\n b.key === \"Enter\" && d(null);\n }, x = () => d(null), O = (b) => {\n b.key === \"Escape\" && d(null);\n };\n return t.$$set = (b) => {\n \"lastWallet\" in b && r(5, o = b.lastWallet), \"installedWallets\" in b && r(6, s = b.installedWallets), \"authorizedWallets\" in b && r(7, i = b.authorizedWallets), \"discoveryWallets\" in b && r(0, a = b.discoveryWallets), \"callback\" in b && r(8, c = b.callback), \"theme\" in b && r(9, l = b.theme);\n }, [\n a,\n u,\n m,\n d,\n h,\n o,\n s,\n i,\n c,\n l,\n y,\n w,\n p,\n I,\n M,\n D,\n x,\n O\n ];\n}\nclass Modal extends SvelteComponent {\n constructor(e) {\n super(), init$1(\n this,\n e,\n instance,\n create_fragment,\n safe_not_equal,\n {\n lastWallet: 5,\n installedWallets: 6,\n authorizedWallets: 7,\n discoveryWallets: 0,\n callback: 8,\n theme: 9\n },\n add_css\n );\n }\n}\nfunction excludeWallets(t, e) {\n return t.filter((r) => !e.some((n) => n.id === r.id));\n}\nasync function show({\n discoveryWallets: t,\n installedWallets: e,\n lastWallet: r,\n authorizedWallets: n,\n enable: o,\n modalOptions: s\n}) {\n return new Promise((i) => {\n var l;\n const a = [r].filter(Boolean);\n n = excludeWallets(n, a), e = excludeWallets(e, [\n ...a,\n ...n\n ]), t = excludeWallets(t, [\n ...a,\n ...e,\n ...n\n ]);\n const c = new Modal({\n target: document.body,\n props: {\n callback: async (u) => {\n var m;\n const d = (m = await (o == null ? void 0 : o(u))) != null ? m : u;\n c.$destroy(), i(d);\n },\n lastWallet: r,\n installedWallets: e,\n authorizedWallets: n,\n discoveryWallets: t,\n theme: (s == null ? void 0 : s.theme) === \"system\" ? null : (l = s == null ? void 0 : s.theme) != null ? l : null\n }\n });\n });\n}\nvar te = Object.defineProperty, ne = (t, e, r) => e in t ? te(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r, _ = (t, e, r) => (ne(t, typeof e != \"symbol\" ? e + \"\" : e, r), r), K = (t, e, r) => {\n if (!e.has(t))\n throw TypeError(\"Cannot \" + r);\n}, N = (t, e, r) => (K(t, e, \"read from private field\"), r ? r.call(t) : e.get(t)), T = (t, e, r) => {\n if (e.has(t))\n throw TypeError(\"Cannot add the same private member more than once\");\n e instanceof WeakSet ? e.add(t) : e.set(t, r);\n}, B = (t, e, r, n) => (K(t, e, \"write to private field\"), n ? n.call(t, r) : e.set(t, r), r), E = (t, e, r) => (K(t, e, \"access private method\"), r);\nconst generateUID = () => `${Date.now()}-${Math.floor(Math.random() * 8999999999999) + 1e12}`, shuffle = (t) => {\n for (let e = t.length - 1; e > 0; e--) {\n const r = Math.floor(Math.random() * (e + 1));\n [t[e], t[r]] = [t[r], t[e]];\n }\n return t;\n}, pipe$1 = (...t) => (e) => t.reduce((r, n) => r.then(n), Promise.resolve(e));\nfunction ensureKeysArray(t) {\n return Object.keys(t);\n}\nconst ssrSafeWindow$1 = typeof window < \"u\" ? window : null;\nfunction getBuilderId() {\n return typeof FEDERATION_BUILD_IDENTIFIER < \"u\" ? FEDERATION_BUILD_IDENTIFIER : \"\";\n}\nfunction isDebugMode$1() {\n return Boolean(\"\");\n}\nfunction isBrowserEnv$1() {\n return typeof window < \"u\";\n}\nconst LOG_CATEGORY$1 = \"[ Federation Runtime ]\";\nfunction assert(t, e) {\n t || error(e);\n}\nfunction error(t) {\n throw t instanceof Error ? (t.message = `${LOG_CATEGORY$1}: ${t.message}`, t) : new Error(`${LOG_CATEGORY$1}: ${t}`);\n}\nfunction warn$1(t) {\n t instanceof Error ? (t.message = `${LOG_CATEGORY$1}: ${t.message}`, console.warn(t)) : console.warn(`${LOG_CATEGORY$1}: ${t}`);\n}\nfunction addUniqueItem(t, e) {\n return t.findIndex((r) => r === e) === -1 && t.push(e), t;\n}\nfunction getFMId(t) {\n return \"version\" in t && t.version ? `${t.name}:${t.version}` : \"entry\" in t && t.entry ? `${t.name}:${t.entry}` : `${t.name}`;\n}\nfunction isRemoteInfoWithEntry(t) {\n return typeof t.entry < \"u\";\n}\nfunction isPureRemoteEntry(t) {\n return !t.entry.includes(\".json\") && t.entry.includes(\".js\");\n}\nfunction safeToString$1(t) {\n try {\n return JSON.stringify(t, null, 2);\n } catch {\n return \"\";\n }\n}\nfunction isObject(t) {\n return t && typeof t == \"object\";\n}\nconst objectToString = Object.prototype.toString;\nfunction isPlainObject(t) {\n return objectToString.call(t) === \"[object Object]\";\n}\nfunction _extends$1$1() {\n return _extends$1$1 = Object.assign || function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r)\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n return t;\n }, _extends$1$1.apply(this, arguments);\n}\nfunction _object_without_properties_loose$1(t, e) {\n if (t == null)\n return {};\n var r = {}, n = Object.keys(t), o, s;\n for (s = 0; s < n.length; s++)\n o = n[s], !(e.indexOf(o) >= 0) && (r[o] = t[o]);\n return r;\n}\nconst nativeGlobal = (() => {\n try {\n return new Function(\"return this\")();\n } catch {\n return globalThis;\n }\n})(), Global = nativeGlobal;\nfunction definePropertyGlobalVal(t, e, r) {\n Object.defineProperty(t, e, {\n value: r,\n configurable: !1,\n writable: !0\n });\n}\nfunction includeOwnProperty(t, e) {\n return Object.hasOwnProperty.call(t, e);\n}\nincludeOwnProperty(globalThis, \"__GLOBAL_LOADING_REMOTE_ENTRY__\") || definePropertyGlobalVal(globalThis, \"__GLOBAL_LOADING_REMOTE_ENTRY__\", {});\nconst globalLoading = globalThis.__GLOBAL_LOADING_REMOTE_ENTRY__;\nfunction setGlobalDefaultVal(t) {\n var e, r, n, o, s, i;\n includeOwnProperty(t, \"__VMOK__\") && !includeOwnProperty(t, \"__FEDERATION__\") && definePropertyGlobalVal(t, \"__FEDERATION__\", t.__VMOK__), includeOwnProperty(t, \"__FEDERATION__\") || (definePropertyGlobalVal(t, \"__FEDERATION__\", {\n __GLOBAL_PLUGIN__: [],\n __INSTANCES__: [],\n moduleInfo: {},\n __SHARE__: {},\n __MANIFEST_LOADING__: {},\n __PRELOADED_MAP__: /* @__PURE__ */ new Map()\n }), definePropertyGlobalVal(t, \"__VMOK__\", t.__FEDERATION__)), (e = t.__FEDERATION__).__GLOBAL_PLUGIN__ != null || (e.__GLOBAL_PLUGIN__ = []), (r = t.__FEDERATION__).__INSTANCES__ != null || (r.__INSTANCES__ = []), (n = t.__FEDERATION__).moduleInfo != null || (n.moduleInfo = {}), (o = t.__FEDERATION__).__SHARE__ != null || (o.__SHARE__ = {}), (s = t.__FEDERATION__).__MANIFEST_LOADING__ != null || (s.__MANIFEST_LOADING__ = {}), (i = t.__FEDERATION__).__PRELOADED_MAP__ != null || (i.__PRELOADED_MAP__ = /* @__PURE__ */ new Map());\n}\nsetGlobalDefaultVal(globalThis);\nsetGlobalDefaultVal(nativeGlobal);\nfunction getGlobalFederationInstance(t, e) {\n const r = getBuilderId();\n return globalThis.__FEDERATION__.__INSTANCES__.find((n) => !!(r && n.options.id === getBuilderId() || n.options.name === t && !n.options.version && !e || n.options.name === t && e && n.options.version === e));\n}\nfunction setGlobalFederationInstance(t) {\n globalThis.__FEDERATION__.__INSTANCES__.push(t);\n}\nfunction getGlobalFederationConstructor() {\n return globalThis.__FEDERATION__.__DEBUG_CONSTRUCTOR__;\n}\nfunction setGlobalFederationConstructor(t, e = isDebugMode$1()) {\n e && (globalThis.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = t, globalThis.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = \"0.1.2\");\n}\nfunction getInfoWithoutType(t, e) {\n if (typeof e == \"string\") {\n if (t[e])\n return {\n value: t[e],\n key: e\n };\n {\n const r = Object.keys(t);\n for (const n of r) {\n const [o, s] = n.split(\":\"), i = `${o}:${e}`, a = t[i];\n if (a)\n return {\n value: a,\n key: i\n };\n }\n return {\n value: void 0,\n key: e\n };\n }\n } else\n throw new Error(\"key must be string\");\n}\nconst getGlobalSnapshot = () => nativeGlobal.__FEDERATION__.moduleInfo, getTargetSnapshotInfoByModuleInfo = (t, e) => {\n const r = getFMId(t), n = getInfoWithoutType(e, r).value;\n if (n && !n.version && \"version\" in t && t.version && (n.version = t.version), n)\n return n;\n if (\"version\" in t && t.version) {\n const { version: o } = t, s = _object_without_properties_loose$1(t, [\n \"version\"\n ]), i = getFMId(s), a = getInfoWithoutType(nativeGlobal.__FEDERATION__.moduleInfo, i).value;\n if ((a == null ? void 0 : a.version) === o)\n return a;\n }\n}, getGlobalSnapshotInfoByModuleInfo = (t) => getTargetSnapshotInfoByModuleInfo(t, nativeGlobal.__FEDERATION__.moduleInfo), setGlobalSnapshotInfoByModuleInfo = (t, e) => {\n const r = getFMId(t);\n return nativeGlobal.__FEDERATION__.moduleInfo[r] = e, nativeGlobal.__FEDERATION__.moduleInfo;\n}, addGlobalSnapshot = (t) => (nativeGlobal.__FEDERATION__.moduleInfo = _extends$1$1({}, nativeGlobal.__FEDERATION__.moduleInfo, t), () => {\n const e = Object.keys(t);\n for (const r of e)\n delete nativeGlobal.__FEDERATION__.moduleInfo[r];\n}), getRemoteEntryExports = (t, e) => {\n const r = e || `__FEDERATION_${t}:custom__`, n = globalThis[r];\n return {\n remoteEntryKey: r,\n entryExports: n\n };\n}, getGlobalHostPlugins = () => nativeGlobal.__FEDERATION__.__GLOBAL_PLUGIN__, getPreloaded = (t) => globalThis.__FEDERATION__.__PRELOADED_MAP__.get(t), setPreloaded = (t) => globalThis.__FEDERATION__.__PRELOADED_MAP__.set(t, !0), DEFAULT_SCOPE = \"default\", DEFAULT_REMOTE_TYPE = \"global\", buildIdentifier = \"[0-9A-Za-z-]+\", build = `(?:\\\\+(${buildIdentifier}(?:\\\\.${buildIdentifier})*))`, numericIdentifier = \"0|[1-9]\\\\d*\", numericIdentifierLoose = \"[0-9]+\", nonNumericIdentifier = \"\\\\d*[a-zA-Z-][a-zA-Z0-9-]*\", preReleaseIdentifierLoose = `(?:${numericIdentifierLoose}|${nonNumericIdentifier})`, preReleaseLoose = `(?:-?(${preReleaseIdentifierLoose}(?:\\\\.${preReleaseIdentifierLoose})*))`, preReleaseIdentifier = `(?:${numericIdentifier}|${nonNumericIdentifier})`, preRelease = `(?:-(${preReleaseIdentifier}(?:\\\\.${preReleaseIdentifier})*))`, xRangeIdentifier = `${numericIdentifier}|x|X|\\\\*`, xRangePlain = `[v=\\\\s]*(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:${preRelease})?${build}?)?)?`, hyphenRange = `^\\\\s*(${xRangePlain})\\\\s+-\\\\s+(${xRangePlain})\\\\s*$`, mainVersionLoose = `(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})`, loosePlain = `[v=\\\\s]*${mainVersionLoose}${preReleaseLoose}?${build}?`, gtlt = \"((?:<|>)?=?)\", comparatorTrim = `(\\\\s*)${gtlt}\\\\s*(${loosePlain}|${xRangePlain})`, loneTilde = \"(?:~>?)\", tildeTrim = `(\\\\s*)${loneTilde}\\\\s+`, loneCaret = \"(?:\\\\^)\", caretTrim = `(\\\\s*)${loneCaret}\\\\s+`, star = \"(<|>)?=?\\\\s*\\\\*\", caret = `^${loneCaret}${xRangePlain}$`, mainVersion = `(${numericIdentifier})\\\\.(${numericIdentifier})\\\\.(${numericIdentifier})`, fullPlain = `v?${mainVersion}${preRelease}?${build}?`, tilde = `^${loneTilde}${xRangePlain}$`, xRange = `^${gtlt}\\\\s*${xRangePlain}$`, comparator = `^${gtlt}\\\\s*(${fullPlain})$|^$`, gte0 = \"^\\\\s*>=\\\\s*0.0.0\\\\s*$\";\nfunction parseRegex(t) {\n return new RegExp(t);\n}\nfunction isXVersion(t) {\n return !t || t.toLowerCase() === \"x\" || t === \"*\";\n}\nfunction pipe(...t) {\n return (e) => t.reduce((r, n) => n(r), e);\n}\nfunction extractComparator(t) {\n return t.match(parseRegex(comparator));\n}\nfunction combineVersion(t, e, r, n) {\n const o = `${t}.${e}.${r}`;\n return n ? `${o}-${n}` : o;\n}\nfunction parseHyphen(t) {\n return t.replace(parseRegex(hyphenRange), (e, r, n, o, s, i, a, c, l, u, d, m) => (isXVersion(n) ? r = \"\" : isXVersion(o) ? r = `>=${n}.0.0` : isXVersion(s) ? r = `>=${n}.${o}.0` : r = `>=${r}`, isXVersion(l) ? c = \"\" : isXVersion(u) ? c = `<${Number(l) + 1}.0.0-0` : isXVersion(d) ? c = `<${l}.${Number(u) + 1}.0-0` : m ? c = `<=${l}.${u}.${d}-${m}` : c = `<=${c}`, `${r} ${c}`.trim()));\n}\nfunction parseComparatorTrim(t) {\n return t.replace(parseRegex(comparatorTrim), \"$1$2$3\");\n}\nfunction parseTildeTrim(t) {\n return t.replace(parseRegex(tildeTrim), \"$1~\");\n}\nfunction parseCaretTrim(t) {\n return t.replace(parseRegex(caretTrim), \"$1^\");\n}\nfunction parseCarets(t) {\n return t.trim().split(/\\s+/).map((e) => e.replace(parseRegex(caret), (r, n, o, s, i) => isXVersion(n) ? \"\" : isXVersion(o) ? `>=${n}.0.0 <${Number(n) + 1}.0.0-0` : isXVersion(s) ? n === \"0\" ? `>=${n}.${o}.0 <${n}.${Number(o) + 1}.0-0` : `>=${n}.${o}.0 <${Number(n) + 1}.0.0-0` : i ? n === \"0\" ? o === \"0\" ? `>=${n}.${o}.${s}-${i} <${n}.${o}.${Number(s) + 1}-0` : `>=${n}.${o}.${s}-${i} <${n}.${Number(o) + 1}.0-0` : `>=${n}.${o}.${s}-${i} <${Number(n) + 1}.0.0-0` : n === \"0\" ? o === \"0\" ? `>=${n}.${o}.${s} <${n}.${o}.${Number(s) + 1}-0` : `>=${n}.${o}.${s} <${n}.${Number(o) + 1}.0-0` : `>=${n}.${o}.${s} <${Number(n) + 1}.0.0-0`)).join(\" \");\n}\nfunction parseTildes(t) {\n return t.trim().split(/\\s+/).map((e) => e.replace(parseRegex(tilde), (r, n, o, s, i) => isXVersion(n) ? \"\" : isXVersion(o) ? `>=${n}.0.0 <${Number(n) + 1}.0.0-0` : isXVersion(s) ? `>=${n}.${o}.0 <${n}.${Number(o) + 1}.0-0` : i ? `>=${n}.${o}.${s}-${i} <${n}.${Number(o) + 1}.0-0` : `>=${n}.${o}.${s} <${n}.${Number(o) + 1}.0-0`)).join(\" \");\n}\nfunction parseXRanges(t) {\n return t.split(/\\s+/).map((e) => e.trim().replace(parseRegex(xRange), (r, n, o, s, i, a) => {\n const c = isXVersion(o), l = c || isXVersion(s), u = l || isXVersion(i);\n return n === \"=\" && u && (n = \"\"), a = \"\", c ? n === \">\" || n === \"<\" ? \"<0.0.0-0\" : \"*\" : n && u ? (l && (s = 0), i = 0, n === \">\" ? (n = \">=\", l ? (o = Number(o) + 1, s = 0, i = 0) : (s = Number(s) + 1, i = 0)) : n === \"<=\" && (n = \"<\", l ? o = Number(o) + 1 : s = Number(s) + 1), n === \"<\" && (a = \"-0\"), `${n + o}.${s}.${i}${a}`) : l ? `>=${o}.0.0${a} <${Number(o) + 1}.0.0-0` : u ? `>=${o}.${s}.0${a} <${o}.${Number(s) + 1}.0-0` : r;\n })).join(\" \");\n}\nfunction parseStar(t) {\n return t.trim().replace(parseRegex(star), \"\");\n}\nfunction parseGTE0(t) {\n return t.trim().replace(parseRegex(gte0), \"\");\n}\nfunction compareAtom(t, e) {\n return t = Number(t) || t, e = Number(e) || e, t > e ? 1 : t === e ? 0 : -1;\n}\nfunction comparePreRelease(t, e) {\n const { preRelease: r } = t, { preRelease: n } = e;\n if (r === void 0 && Boolean(n))\n return 1;\n if (Boolean(r) && n === void 0)\n return -1;\n if (r === void 0 && n === void 0)\n return 0;\n for (let o = 0, s = r.length; o <= s; o++) {\n const i = r[o], a = n[o];\n if (i !== a)\n return i === void 0 && a === void 0 ? 0 : i ? a ? compareAtom(i, a) : -1 : 1;\n }\n return 0;\n}\nfunction compareVersion(t, e) {\n return compareAtom(t.major, e.major) || compareAtom(t.minor, e.minor) || compareAtom(t.patch, e.patch) || comparePreRelease(t, e);\n}\nfunction eq(t, e) {\n return t.version === e.version;\n}\nfunction compare(t, e) {\n switch (t.operator) {\n case \"\":\n case \"=\":\n return eq(t, e);\n case \">\":\n return compareVersion(t, e) < 0;\n case \">=\":\n return eq(t, e) || compareVersion(t, e) < 0;\n case \"<\":\n return compareVersion(t, e) > 0;\n case \"<=\":\n return eq(t, e) || compareVersion(t, e) > 0;\n case void 0:\n return !0;\n default:\n return !1;\n }\n}\nfunction parseComparatorString(t) {\n return pipe(\n parseCarets,\n parseTildes,\n parseXRanges,\n parseStar\n )(t);\n}\nfunction parseRange(t) {\n return pipe(\n parseHyphen,\n parseComparatorTrim,\n parseTildeTrim,\n parseCaretTrim\n )(t.trim()).split(/\\s+/).join(\" \");\n}\nfunction satisfy(t, e) {\n if (!t)\n return !1;\n const r = parseRange(e).split(\" \").map((u) => parseComparatorString(u)).join(\" \").split(/\\s+/).map((u) => parseGTE0(u)), n = extractComparator(t);\n if (!n)\n return !1;\n const [, o, , s, i, a, c] = n, l = {\n operator: o,\n version: combineVersion(s, i, a, c),\n major: s,\n minor: i,\n patch: a,\n preRelease: c == null ? void 0 : c.split(\".\")\n };\n for (const u of r) {\n const d = extractComparator(u);\n if (!d)\n return !1;\n const [, m, , g, h, y, w] = d, p = {\n operator: m,\n version: combineVersion(g, h, y, w),\n major: g,\n minor: h,\n patch: y,\n preRelease: w == null ? void 0 : w.split(\".\")\n };\n if (!compare(p, l))\n return !1;\n }\n return !0;\n}\nfunction _extends$6() {\n return _extends$6 = Object.assign || function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r)\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n return t;\n }, _extends$6.apply(this, arguments);\n}\nfunction formatShare(t, e) {\n let r;\n return \"get\" in t ? r = t.get : r = () => Promise.resolve(t.lib), _extends$6({\n deps: [],\n useIn: [],\n from: e,\n loading: null\n }, t, {\n shareConfig: _extends$6({\n requiredVersion: `^${t.version}`,\n singleton: !1,\n eager: !1,\n strictVersion: !1\n }, t.shareConfig),\n get: r,\n loaded: \"lib\" in t ? !0 : void 0,\n scope: Array.isArray(t.scope) ? t.scope : [\n \"default\"\n ],\n strategy: t.strategy || \"version-first\"\n });\n}\nfunction formatShareConfigs(t, e) {\n return t ? Object.keys(t).reduce((r, n) => (r[n] = formatShare(t[n], e), r), {}) : {};\n}\nfunction versionLt(t, e) {\n const r = (n) => {\n if (!Number.isNaN(Number(n))) {\n const o = n.split(\".\");\n let s = n;\n for (let i = 0; i < 3 - o.length; i++)\n s += \".0\";\n return s;\n }\n return n;\n };\n return !!satisfy(r(t), `<=${r(e)}`);\n}\nconst findVersion = (t, e, r, n) => {\n const o = t[e][r], s = n || function(i, a) {\n return versionLt(i, a);\n };\n return Object.keys(o).reduce((i, a) => !i || s(i, a) || i === \"0\" ? a : i, 0);\n}, isLoaded = (t) => Boolean(t.loaded) || typeof t.lib == \"function\";\nfunction findSingletonVersionOrderByVersion(t, e, r) {\n const n = t[e][r];\n return findVersion(t, e, r, function(o, s) {\n return !isLoaded(n[o]) && versionLt(o, s);\n });\n}\nfunction findSingletonVersionOrderByLoaded(t, e, r) {\n const n = t[e][r];\n return findVersion(t, e, r, function(o, s) {\n return isLoaded(n[s]) ? isLoaded(n[o]) ? Boolean(versionLt(o, s)) : !0 : isLoaded(n[o]) ? !1 : versionLt(o, s);\n });\n}\nfunction getFindShareFunction(t) {\n return t === \"loaded-first\" ? findSingletonVersionOrderByLoaded : findSingletonVersionOrderByVersion;\n}\nfunction getRegisteredShare(t, e, r, n) {\n if (!t)\n return;\n const { shareConfig: o, scope: s = DEFAULT_SCOPE, strategy: i } = r, a = Array.isArray(s) ? s : [\n s\n ];\n for (const c of a)\n if (o && t[c] && t[c][e]) {\n const { requiredVersion: l } = o, u = getFindShareFunction(i)(t, c, e), d = () => {\n if (o.singleton) {\n if (typeof l == \"string\" && !satisfy(u, l)) {\n const g = `Version ${u} from ${u && t[c][e][u].from} of shared singleton module ${e} does not satisfy the requirement of ${r.from} which needs ${l})`;\n o.strictVersion ? error(g) : warn$1(g);\n }\n return t[c][e][u];\n } else {\n if (l === !1 || l === \"*\" || satisfy(u, l))\n return t[c][e][u];\n for (const [g, h] of Object.entries(t[c][e]))\n if (satisfy(g, l))\n return h;\n }\n }, m = {\n shareScopeMap: t,\n scope: c,\n pkgName: e,\n version: u,\n GlobalFederation: Global.__FEDERATION__,\n resolver: d\n };\n return (n.emit(m) || m).resolver();\n }\n}\nfunction getGlobalShareScope() {\n return Global.__FEDERATION__.__SHARE__;\n}\nfunction _define_property$3(t, e, r) {\n return e in t ? Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = r, t;\n}\nvar MANIFEST_EXT = \".json\", BROWSER_LOG_KEY = \"FEDERATION_DEBUG\", BROWSER_LOG_VALUE = \"1\", NameTransformSymbol = {\n AT: \"@\",\n HYPHEN: \"-\",\n SLASH: \"/\"\n}, _obj, NameTransformMap = (_obj = {}, _define_property$3(_obj, NameTransformSymbol.AT, \"scope_\"), _define_property$3(_obj, NameTransformSymbol.HYPHEN, \"_\"), _define_property$3(_obj, NameTransformSymbol.SLASH, \"__\"), _obj), _obj1;\n_obj1 = {}, _define_property$3(_obj1, NameTransformMap[NameTransformSymbol.AT], NameTransformSymbol.AT), _define_property$3(_obj1, NameTransformMap[NameTransformSymbol.HYPHEN], NameTransformSymbol.HYPHEN), _define_property$3(_obj1, NameTransformMap[NameTransformSymbol.SLASH], NameTransformSymbol.SLASH);\nvar SEPARATOR = \":\";\nfunction isBrowserEnv() {\n return typeof window < \"u\";\n}\nfunction isDebugMode() {\n return typeof process < \"u\" && process.env && process.env.FEDERATION_DEBUG ? Boolean(process.env.FEDERATION_DEBUG) : typeof FEDERATION_DEBUG < \"u\" && Boolean(FEDERATION_DEBUG);\n}\nfunction _array_like_to_array$2(t, e) {\n (e == null || e > t.length) && (e = t.length);\n for (var r = 0, n = new Array(e); r < e; r++)\n n[r] = t[r];\n return n;\n}\nfunction _array_without_holes(t) {\n if (Array.isArray(t))\n return _array_like_to_array$2(t);\n}\nfunction _class_call_check(t, e) {\n if (!(t instanceof e))\n throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(t, e) {\n for (var r = 0; r < e.length; r++) {\n var n = e[r];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n}\nfunction _create_class(t, e, r) {\n return e && _defineProperties(t.prototype, e), r && _defineProperties(t, r), t;\n}\nfunction _define_property$2(t, e, r) {\n return e in t ? Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = r, t;\n}\nfunction _iterable_to_array$1(t) {\n if (typeof Symbol < \"u\" && t[Symbol.iterator] != null || t[\"@@iterator\"] != null)\n return Array.from(t);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _to_consumable_array(t) {\n return _array_without_holes(t) || _iterable_to_array$1(t) || _unsupported_iterable_to_array$2(t) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array$2(t, e) {\n if (t) {\n if (typeof t == \"string\")\n return _array_like_to_array$2(t, e);\n var r = Object.prototype.toString.call(t).slice(8, -1);\n if (r === \"Object\" && t.constructor && (r = t.constructor.name), r === \"Map\" || r === \"Set\")\n return Array.from(r);\n if (r === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))\n return _array_like_to_array$2(t, e);\n }\n}\nfunction safeToString(t) {\n try {\n return JSON.stringify(t, null, 2);\n } catch {\n return \"\";\n }\n}\nvar DEBUG_LOG = \"[ FEDERATION DEBUG ]\";\nfunction safeGetLocalStorageItem() {\n try {\n if (typeof window < \"u\" && window.localStorage)\n return localStorage.getItem(BROWSER_LOG_KEY) === BROWSER_LOG_VALUE;\n } catch {\n return typeof document < \"u\";\n }\n return !1;\n}\nvar Logger = /* @__PURE__ */ function() {\n function t(e) {\n _class_call_check(this, t), _define_property$2(this, \"enable\", !1), _define_property$2(this, \"identifier\", void 0), this.identifier = e || DEBUG_LOG, isBrowserEnv() && safeGetLocalStorageItem() ? this.enable = !0 : isDebugMode() && (this.enable = !0);\n }\n return _create_class(t, [\n {\n key: \"info\",\n value: function(e, r) {\n if (this.enable) {\n var n = safeToString(r) || \"\";\n isBrowserEnv() ? console.info(\"%c \".concat(this.identifier, \": \").concat(e, \" \").concat(n), \"color:#3300CC\") : console.info(\"\\x1B[34m%s\", \"\".concat(this.identifier, \": \").concat(e, \" \").concat(n ? `\n`.concat(n) : \"\"));\n }\n }\n },\n {\n key: \"logOriginalInfo\",\n value: function() {\n for (var e = arguments.length, r = new Array(e), n = 0; n < e; n++)\n r[n] = arguments[n];\n if (this.enable)\n if (isBrowserEnv()) {\n var o;\n console.info(\"%c \".concat(this.identifier, \": OriginalInfo\"), \"color:#3300CC\"), (o = console).log.apply(o, _to_consumable_array(r));\n } else {\n var s;\n console.info(\"%c \".concat(this.identifier, \": OriginalInfo\"), \"color:#3300CC\"), (s = console).log.apply(s, _to_consumable_array(r));\n }\n }\n }\n ]), t;\n}(), LOG_CATEGORY = \"[ Federation Runtime ]\";\nnew Logger();\nvar composeKeyWithSeparator = function() {\n for (var t = arguments.length, e = new Array(t), r = 0; r < t; r++)\n e[r] = arguments[r];\n return e.length ? e.reduce(function(n, o) {\n return o ? n ? \"\".concat(n).concat(SEPARATOR).concat(o) : o : n;\n }, \"\") : \"\";\n}, getResourceUrl = function(t, e) {\n if (\"getPublicPath\" in t) {\n var r = new Function(t.getPublicPath)();\n return \"\".concat(r).concat(e);\n } else\n return \"publicPath\" in t ? \"\".concat(t.publicPath).concat(e) : (console.warn(\"Can not get resource url, if in debug mode, please ignore\", t, e), \"\");\n}, warn = function(t) {\n console.warn(\"\".concat(LOG_CATEGORY, \": \").concat(t));\n};\nfunction _define_property$1(t, e, r) {\n return e in t ? Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = r, t;\n}\nfunction _object_spread$1(t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e] != null ? arguments[e] : {}, n = Object.keys(r);\n typeof Object.getOwnPropertySymbols == \"function\" && (n = n.concat(Object.getOwnPropertySymbols(r).filter(function(o) {\n return Object.getOwnPropertyDescriptor(r, o).enumerable;\n }))), n.forEach(function(o) {\n _define_property$1(t, o, r[o]);\n });\n }\n return t;\n}\nfunction ownKeys(t, e) {\n var r = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(t);\n e && (n = n.filter(function(o) {\n return Object.getOwnPropertyDescriptor(t, o).enumerable;\n })), r.push.apply(r, n);\n }\n return r;\n}\nfunction _object_spread_props(t, e) {\n return e = e != null ? e : {}, Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(e)) : ownKeys(Object(e)).forEach(function(r) {\n Object.defineProperty(t, r, Object.getOwnPropertyDescriptor(e, r));\n }), t;\n}\nvar simpleJoinRemoteEntry = function(t, e) {\n if (!t)\n return e;\n var r = function(o) {\n if (o === \".\")\n return \"\";\n if (o.startsWith(\"./\"))\n return o.replace(\"./\", \"\");\n if (o.startsWith(\"/\")) {\n var s = o.slice(1);\n return s.endsWith(\"/\") ? s.slice(0, -1) : s;\n }\n return o;\n }, n = r(t);\n return n ? n.endsWith(\"/\") ? \"\".concat(n).concat(e) : \"\".concat(n, \"/\").concat(e) : e;\n};\nfunction generateSnapshotFromManifest(t) {\n var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, r, n, o = e.remotes, s = o === void 0 ? {} : o, i = e.overrides, a = i === void 0 ? {} : i, c = e.version, l, u = function() {\n return \"publicPath\" in t.metaData ? t.metaData.publicPath : t.metaData.getPublicPath;\n }, d = Object.keys(a), m = {};\n if (!Object.keys(s).length) {\n var g;\n m = ((g = t.remotes) === null || g === void 0 ? void 0 : g.reduce(function(S, U) {\n var R, W = U.federationContainerName;\n return d.includes(W) ? R = a[W] : \"version\" in U ? R = U.version : R = U.entry, S[W] = {\n matchedVersion: R\n }, S;\n }, {})) || {};\n }\n Object.keys(s).forEach(function(S) {\n return m[S] = {\n matchedVersion: d.includes(S) ? a[S] : s[S]\n };\n });\n var h = t.metaData, y = h.remoteEntry, w = y.path, p = y.name, I = y.type, M = h.types, D = h.buildInfo.buildVersion, x = h.globalName, O = t.exposes, b = {\n version: c || \"\",\n buildVersion: D,\n globalName: x,\n remoteEntry: simpleJoinRemoteEntry(w, p),\n remoteEntryType: I,\n remoteTypes: simpleJoinRemoteEntry(M.path, M.name),\n remoteTypesZip: M.zip || \"\",\n remoteTypesAPI: M.api || \"\",\n remotesInfo: m,\n shared: t == null ? void 0 : t.shared.map(function(S) {\n return {\n assets: S.assets,\n sharedName: S.name\n };\n }),\n modules: O == null ? void 0 : O.map(function(S) {\n return {\n moduleName: S.name,\n modulePath: S.path,\n assets: S.assets\n };\n })\n };\n if (!((r = t.metaData) === null || r === void 0) && r.prefetchInterface) {\n var A = t.metaData.prefetchInterface;\n b = _object_spread_props(_object_spread$1({}, b), {\n prefetchInterface: A\n });\n }\n if (!((n = t.metaData) === null || n === void 0) && n.prefetchEntry) {\n var v = t.metaData.prefetchEntry, L = v.path, H = v.name, $ = v.type;\n b = _object_spread_props(_object_spread$1({}, b), {\n prefetchEntry: simpleJoinRemoteEntry(L, H),\n prefetchEntryType: $\n });\n }\n return \"publicPath\" in t.metaData ? l = _object_spread_props(_object_spread$1({}, b), {\n publicPath: u()\n }) : l = _object_spread_props(_object_spread$1({}, b), {\n getPublicPath: u()\n }), l;\n}\nfunction isManifestProvider(t) {\n return !!(\"remoteEntry\" in t && t.remoteEntry.includes(MANIFEST_EXT));\n}\nfunction asyncGeneratorStep$1(t, e, r, n, o, s, i) {\n try {\n var a = t[s](i), c = a.value;\n } catch (l) {\n r(l);\n return;\n }\n a.done ? e(c) : Promise.resolve(c).then(n, o);\n}\nfunction _async_to_generator$1(t) {\n return function() {\n var e = this, r = arguments;\n return new Promise(function(n, o) {\n var s = t.apply(e, r);\n function i(c) {\n asyncGeneratorStep$1(s, n, o, i, a, \"next\", c);\n }\n function a(c) {\n asyncGeneratorStep$1(s, n, o, i, a, \"throw\", c);\n }\n i(void 0);\n });\n };\n}\nfunction _instanceof(t, e) {\n return e != null && typeof Symbol < \"u\" && e[Symbol.hasInstance] ? !!e[Symbol.hasInstance](t) : t instanceof e;\n}\nfunction _ts_generator$1(t, e) {\n var r, n, o, s, i = {\n label: 0,\n sent: function() {\n if (o[0] & 1)\n throw o[1];\n return o[1];\n },\n trys: [],\n ops: []\n };\n return s = {\n next: a(0),\n throw: a(1),\n return: a(2)\n }, typeof Symbol == \"function\" && (s[Symbol.iterator] = function() {\n return this;\n }), s;\n function a(l) {\n return function(u) {\n return c([\n l,\n u\n ]);\n };\n }\n function c(l) {\n if (r)\n throw new TypeError(\"Generator is already executing.\");\n for (; i; )\n try {\n if (r = 1, n && (o = l[0] & 2 ? n.return : l[0] ? n.throw || ((o = n.return) && o.call(n), 0) : n.next) && !(o = o.call(n, l[1])).done)\n return o;\n switch (n = 0, o && (l = [\n l[0] & 2,\n o.value\n ]), l[0]) {\n case 0:\n case 1:\n o = l;\n break;\n case 4:\n return i.label++, {\n value: l[1],\n done: !1\n };\n case 5:\n i.label++, n = l[1], l = [\n 0\n ];\n continue;\n case 7:\n l = i.ops.pop(), i.trys.pop();\n continue;\n default:\n if (o = i.trys, !(o = o.length > 0 && o[o.length - 1]) && (l[0] === 6 || l[0] === 2)) {\n i = 0;\n continue;\n }\n if (l[0] === 3 && (!o || l[1] > o[0] && l[1] < o[3])) {\n i.label = l[1];\n break;\n }\n if (l[0] === 6 && i.label < o[1]) {\n i.label = o[1], o = l;\n break;\n }\n if (o && i.label < o[2]) {\n i.label = o[2], i.ops.push(l);\n break;\n }\n o[2] && i.ops.pop(), i.trys.pop();\n continue;\n }\n l = e.call(t, i);\n } catch (u) {\n l = [\n 6,\n u\n ], n = 0;\n } finally {\n r = o = 0;\n }\n if (l[0] & 5)\n throw l[1];\n return {\n value: l[0] ? l[1] : void 0,\n done: !0\n };\n }\n}\nfunction safeWrapper(t, e) {\n return _safeWrapper.apply(this, arguments);\n}\nfunction _safeWrapper() {\n return _safeWrapper = _async_to_generator$1(function(t, e) {\n var r, n;\n return _ts_generator$1(this, function(o) {\n switch (o.label) {\n case 0:\n return o.trys.push([\n 0,\n 2,\n ,\n 3\n ]), [\n 4,\n t()\n ];\n case 1:\n return r = o.sent(), [\n 2,\n r\n ];\n case 2:\n return n = o.sent(), !e && warn(n), [\n 2\n ];\n case 3:\n return [\n 2\n ];\n }\n });\n }), _safeWrapper.apply(this, arguments);\n}\nfunction isStaticResourcesEqual(t, e) {\n var r = /^(https?:)?\\/\\//i, n = t.replace(r, \"\").replace(/\\/$/, \"\"), o = e.replace(r, \"\").replace(/\\/$/, \"\");\n return n === o;\n}\nfunction createScript(t, e, r, n) {\n for (var o = null, s = !0, i = document.getElementsByTagName(\"script\"), a = 0; a < i.length; a++) {\n var c = i[a], l = c.getAttribute(\"src\");\n if (l && isStaticResourcesEqual(l, t)) {\n o = c, s = !1;\n break;\n }\n }\n if (!o && (o = document.createElement(\"script\"), o.type = \"text/javascript\", o.src = t, n)) {\n var u = n(t);\n _instanceof(u, HTMLScriptElement) && (o = u);\n }\n r && Object.keys(r).forEach(function(m) {\n o && (m === \"async\" || m === \"defer\" ? o[m] = r[m] : o.setAttribute(m, r[m]));\n });\n var d = function(m, g) {\n if (o && (o.onerror = null, o.onload = null, safeWrapper(function() {\n o != null && o.parentNode && o.parentNode.removeChild(o);\n }), m)) {\n var h = m(g);\n return e(), h;\n }\n e();\n };\n return o.onerror = d.bind(null, o.onerror), o.onload = d.bind(null, o.onload), {\n script: o,\n needAttach: s\n };\n}\nfunction createLink(t, e) {\n for (var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, n = arguments.length > 3 ? arguments[3] : void 0, o = null, s = !0, i = document.getElementsByTagName(\"link\"), a = 0; a < i.length; a++) {\n var c = i[a], l = c.getAttribute(\"href\"), u = c.getAttribute(\"ref\");\n if (l && isStaticResourcesEqual(l, t) && u === r.ref) {\n o = c, s = !1;\n break;\n }\n }\n if (!o && (o = document.createElement(\"link\"), o.setAttribute(\"href\", t), n)) {\n var d = n(t);\n _instanceof(d, HTMLLinkElement) && (o = d);\n }\n r && Object.keys(r).forEach(function(g) {\n o && o.setAttribute(g, r[g]);\n });\n var m = function(g, h) {\n if (o && (o.onerror = null, o.onload = null, safeWrapper(function() {\n o != null && o.parentNode && o.parentNode.removeChild(o);\n }), g)) {\n var y = g(h);\n return e(), y;\n }\n e();\n };\n return o.onerror = m.bind(null, o.onerror), o.onload = m.bind(null, o.onload), {\n link: o,\n needAttach: s\n };\n}\nfunction loadScript(t, e) {\n var r = e.attrs, n = e.createScriptHook;\n return new Promise(function(o, s) {\n var i = createScript(t, o, r, n), a = i.script, c = i.needAttach;\n c && document.getElementsByTagName(\"head\")[0].appendChild(a);\n });\n}\nfunction _array_like_to_array(t, e) {\n (e == null || e > t.length) && (e = t.length);\n for (var r = 0, n = new Array(e); r < e; r++)\n n[r] = t[r];\n return n;\n}\nfunction _array_with_holes(t) {\n if (Array.isArray(t))\n return t;\n}\nfunction asyncGeneratorStep(t, e, r, n, o, s, i) {\n try {\n var a = t[s](i), c = a.value;\n } catch (l) {\n r(l);\n return;\n }\n a.done ? e(c) : Promise.resolve(c).then(n, o);\n}\nfunction _async_to_generator(t) {\n return function() {\n var e = this, r = arguments;\n return new Promise(function(n, o) {\n var s = t.apply(e, r);\n function i(c) {\n asyncGeneratorStep(s, n, o, i, a, \"next\", c);\n }\n function a(c) {\n asyncGeneratorStep(s, n, o, i, a, \"throw\", c);\n }\n i(void 0);\n });\n };\n}\nfunction _iterable_to_array_limit(t, e) {\n var r = t == null ? null : typeof Symbol < \"u\" && t[Symbol.iterator] || t[\"@@iterator\"];\n if (r != null) {\n var n = [], o = !0, s = !1, i, a;\n try {\n for (r = r.call(t); !(o = (i = r.next()).done) && (n.push(i.value), !(e && n.length === e)); o = !0)\n ;\n } catch (c) {\n s = !0, a = c;\n } finally {\n try {\n !o && r.return != null && r.return();\n } finally {\n if (s)\n throw a;\n }\n }\n return n;\n }\n}\nfunction _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _sliced_to_array(t, e) {\n return _array_with_holes(t) || _iterable_to_array_limit(t, e) || _unsupported_iterable_to_array(t, e) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(t, e) {\n if (t) {\n if (typeof t == \"string\")\n return _array_like_to_array(t, e);\n var r = Object.prototype.toString.call(t).slice(8, -1);\n if (r === \"Object\" && t.constructor && (r = t.constructor.name), r === \"Map\" || r === \"Set\")\n return Array.from(r);\n if (r === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))\n return _array_like_to_array(t, e);\n }\n}\nfunction _ts_generator(t, e) {\n var r, n, o, s, i = {\n label: 0,\n sent: function() {\n if (o[0] & 1)\n throw o[1];\n return o[1];\n },\n trys: [],\n ops: []\n };\n return s = {\n next: a(0),\n throw: a(1),\n return: a(2)\n }, typeof Symbol == \"function\" && (s[Symbol.iterator] = function() {\n return this;\n }), s;\n function a(l) {\n return function(u) {\n return c([\n l,\n u\n ]);\n };\n }\n function c(l) {\n if (r)\n throw new TypeError(\"Generator is already executing.\");\n for (; i; )\n try {\n if (r = 1, n && (o = l[0] & 2 ? n.return : l[0] ? n.throw || ((o = n.return) && o.call(n), 0) : n.next) && !(o = o.call(n, l[1])).done)\n return o;\n switch (n = 0, o && (l = [\n l[0] & 2,\n o.value\n ]), l[0]) {\n case 0:\n case 1:\n o = l;\n break;\n case 4:\n return i.label++, {\n value: l[1],\n done: !1\n };\n case 5:\n i.label++, n = l[1], l = [\n 0\n ];\n continue;\n case 7:\n l = i.ops.pop(), i.trys.pop();\n continue;\n default:\n if (o = i.trys, !(o = o.length > 0 && o[o.length - 1]) && (l[0] === 6 || l[0] === 2)) {\n i = 0;\n continue;\n }\n if (l[0] === 3 && (!o || l[1] > o[0] && l[1] < o[3])) {\n i.label = l[1];\n break;\n }\n if (l[0] === 6 && i.label < o[1]) {\n i.label = o[1], o = l;\n break;\n }\n if (o && i.label < o[2]) {\n i.label = o[2], i.ops.push(l);\n break;\n }\n o[2] && i.ops.pop(), i.trys.pop();\n continue;\n }\n l = e.call(t, i);\n } catch (u) {\n l = [\n 6,\n u\n ], n = 0;\n } finally {\n r = o = 0;\n }\n if (l[0] & 5)\n throw l[1];\n return {\n value: l[0] ? l[1] : void 0,\n done: !0\n };\n }\n}\nfunction importNodeModule(t) {\n if (!t)\n throw new Error(\"import specifier is required\");\n var e = new Function(\"name\", \"return import(name)\");\n return e(t).then(function(r) {\n return r.default;\n }).catch(function(r) {\n throw console.error(\"Error importing module \".concat(t, \":\"), r), r;\n });\n}\nfunction createScriptNode(url, cb, attrs, createScriptHook) {\n if (createScriptHook) {\n var hookResult = createScriptHook(url);\n hookResult && typeof hookResult == \"object\" && \"url\" in hookResult && (url = hookResult.url);\n }\n var urlObj;\n try {\n urlObj = new URL(url);\n } catch (t) {\n console.error(\"Error constructing URL:\", t), cb(new Error(\"Invalid URL: \".concat(t)));\n return;\n }\n var getFetch = function() {\n var t = _async_to_generator(function() {\n var e;\n return _ts_generator(this, function(r) {\n switch (r.label) {\n case 0:\n return typeof fetch > \"u\" ? [\n 4,\n importNodeModule(\"node-fetch\")\n ] : [\n 3,\n 2\n ];\n case 1:\n return e = r.sent(), [\n 2,\n (e == null ? void 0 : e.default) || e\n ];\n case 2:\n return [\n 2,\n fetch\n ];\n case 3:\n return [\n 2\n ];\n }\n });\n });\n return function() {\n return t.apply(this, arguments);\n };\n }();\n console.log(\"fetching\", urlObj.href), getFetch().then(function(f) {\n f(urlObj.href).then(function(t) {\n return t.text();\n }).then(function() {\n var _ref = _async_to_generator(function(data) {\n var _ref, path, vm, scriptContext, urlDirname, filename, script, exportedInterface, container;\n return _ts_generator(this, function(_state) {\n switch (_state.label) {\n case 0:\n return [\n 4,\n Promise.all([\n importNodeModule(\"path\"),\n importNodeModule(\"vm\")\n ])\n ];\n case 1:\n _ref = _sliced_to_array.apply(void 0, [\n _state.sent(),\n 2\n ]), path = _ref[0], vm = _ref[1], scriptContext = {\n exports: {},\n module: {\n exports: {}\n }\n }, urlDirname = urlObj.pathname.split(\"/\").slice(0, -1).join(\"/\"), filename = path.basename(urlObj.pathname);\n try {\n if (script = new vm.Script(\"(function(exports, module, require, __dirname, __filename) {\".concat(data, `\n})`), filename), script.runInThisContext()(scriptContext.exports, scriptContext.module, eval(\"require\"), urlDirname, filename), exportedInterface = scriptContext.module.exports || scriptContext.exports, attrs && exportedInterface && attrs.globalName)\n return container = exportedInterface[attrs.globalName] || exportedInterface, cb(void 0, container), [\n 2\n ];\n cb(void 0, exportedInterface);\n } catch (t) {\n cb(new Error(\"Script execution error: \".concat(t)));\n }\n return [\n 2\n ];\n }\n });\n });\n return function(t) {\n return _ref.apply(this, arguments);\n };\n }()).catch(function(t) {\n cb(t);\n });\n });\n}\nfunction loadScriptNode(t, e) {\n return new Promise(function(r, n) {\n createScriptNode(t, function(o, s) {\n if (o)\n n(o);\n else {\n var i, a, c = (e == null || (i = e.attrs) === null || i === void 0 ? void 0 : i.globalName) || \"__FEDERATION_\".concat(e == null || (a = e.attrs) === null || a === void 0 ? void 0 : a.name, \":custom__\"), l = globalThis[c] = s;\n r(l);\n }\n }, e.attrs, e.createScriptHook);\n });\n}\nfunction matchRemoteWithNameAndExpose(t, e) {\n for (const r of t) {\n const n = e.startsWith(r.name);\n let o = e.replace(r.name, \"\");\n if (n) {\n if (o.startsWith(\"/\")) {\n const a = r.name;\n return o = `.${o}`, {\n pkgNameOrAlias: a,\n expose: o,\n remote: r\n };\n } else if (o === \"\")\n return {\n pkgNameOrAlias: r.name,\n expose: \".\",\n remote: r\n };\n }\n const s = r.alias && e.startsWith(r.alias);\n let i = r.alias && e.replace(r.alias, \"\");\n if (r.alias && s) {\n if (i && i.startsWith(\"/\")) {\n const a = r.alias;\n return i = `.${i}`, {\n pkgNameOrAlias: a,\n expose: i,\n remote: r\n };\n } else if (i === \"\")\n return {\n pkgNameOrAlias: r.alias,\n expose: \".\",\n remote: r\n };\n }\n }\n}\nfunction matchRemote(t, e) {\n for (const r of t)\n if (e === r.name || r.alias && e === r.alias)\n return r;\n}\nfunction registerPlugins(t, e) {\n const r = getGlobalHostPlugins();\n r.length > 0 && r.forEach((n) => {\n t != null && t.find((o) => o.name !== n.name) && t.push(n);\n }), t && t.length > 0 && t.forEach((n) => {\n e.forEach((o) => {\n o.applyPlugin(n);\n });\n });\n}\nfunction _extends$5() {\n return _extends$5 = Object.assign || function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r)\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n return t;\n }, _extends$5.apply(this, arguments);\n}\nasync function loadEsmEntry({ entry: t, remoteEntryExports: e }) {\n return new Promise((r, n) => {\n try {\n e ? r(e) : new Function(\"callbacks\", `import(\"${t}\").then(callbacks[0]).catch(callbacks[1])`)([\n r,\n n\n ]);\n } catch (o) {\n n(o);\n }\n });\n}\nasync function loadEntryScript({ name: t, globalName: e, entry: r, createScriptHook: n }) {\n const { entryExports: o } = getRemoteEntryExports(t, e);\n return o || (typeof document > \"u\" ? loadScriptNode(r, {\n attrs: {\n name: t,\n globalName: e\n },\n createScriptHook: n\n }).then(() => {\n const { remoteEntryKey: s, entryExports: i } = getRemoteEntryExports(t, e);\n return assert(i, `\n Unable to use the ${t}'s '${r}' URL with ${s}'s globalName to get remoteEntry exports.\n Possible reasons could be:\n\n 1. '${r}' is not the correct URL, or the remoteEntry resource or name is incorrect.\n\n 2. ${s} cannot be used to get remoteEntry exports in the window object.\n `), i;\n }).catch((s) => s) : loadScript(r, {\n attrs: {},\n createScriptHook: n\n }).then(() => {\n const { remoteEntryKey: s, entryExports: i } = getRemoteEntryExports(t, e);\n return assert(i, `\n Unable to use the ${t}'s '${r}' URL with ${s}'s globalName to get remoteEntry exports.\n Possible reasons could be:\n\n 1. '${r}' is not the correct URL, or the remoteEntry resource or name is incorrect.\n\n 2. ${s} cannot be used to get remoteEntry exports in the window object.\n `), i;\n }).catch((s) => s));\n}\nfunction getRemoteEntryUniqueKey(t) {\n const { entry: e, name: r } = t;\n return composeKeyWithSeparator(r, e);\n}\nasync function getRemoteEntry({ remoteEntryExports: t, remoteInfo: e, createScriptHook: r }) {\n const { entry: n, name: o, type: s, entryGlobalName: i } = e, a = getRemoteEntryUniqueKey(e);\n return t || (globalLoading[a] || (s === \"esm\" ? globalLoading[a] = loadEsmEntry({\n entry: n,\n remoteEntryExports: t\n }) : globalLoading[a] = loadEntryScript({\n name: o,\n globalName: i,\n entry: n,\n createScriptHook: r\n })), globalLoading[a]);\n}\nfunction getRemoteInfo(t) {\n return _extends$5({}, t, {\n entry: \"entry\" in t ? t.entry : \"\",\n type: t.type || DEFAULT_REMOTE_TYPE,\n entryGlobalName: t.entryGlobalName || t.name,\n shareScope: t.shareScope || DEFAULT_SCOPE\n });\n}\nfunction _extends$4() {\n return _extends$4 = Object.assign || function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r)\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n return t;\n }, _extends$4.apply(this, arguments);\n}\nlet Module = class {\n async getEntry() {\n if (this.remoteEntryExports)\n return this.remoteEntryExports;\n const t = await getRemoteEntry({\n remoteInfo: this.remoteInfo,\n remoteEntryExports: this.remoteEntryExports,\n createScriptHook: (e) => {\n const r = this.host.loaderHook.lifecycle.createScript.emit({\n url: e\n });\n if (typeof document > \"u\" || r instanceof HTMLScriptElement)\n return r;\n }\n });\n return assert(t, `remoteEntryExports is undefined \n ${safeToString$1(this.remoteInfo)}`), this.remoteEntryExports = t, this.remoteEntryExports;\n }\n async get(t, e) {\n const { loadFactory: r = !0 } = e || {\n loadFactory: !0\n }, n = await this.getEntry();\n if (!this.inited) {\n const s = this.host.shareScopeMap, i = this.remoteInfo.shareScope || \"default\";\n s[i] || (s[i] = {});\n const a = s[i], c = [], l = {\n version: this.remoteInfo.version || \"\"\n };\n Object.defineProperty(l, \"hostId\", {\n value: this.host.options.id || this.host.name,\n enumerable: !1\n });\n const u = await this.host.hooks.lifecycle.beforeInitContainer.emit({\n shareScope: a,\n remoteEntryInitOptions: l,\n initScope: c,\n remoteInfo: this.remoteInfo,\n origin: this.host\n });\n await n.init(u.shareScope, u.initScope, u.remoteEntryInitOptions), await this.host.hooks.lifecycle.initContainer.emit(_extends$4({}, u, {\n remoteEntryExports: n\n }));\n }\n this.lib = n, this.inited = !0;\n const o = await n.get(t);\n return assert(o, `${getFMId(this.remoteInfo)} remote don't export ${t}.`), r ? await o() : o;\n }\n constructor({ remoteInfo: t, host: e }) {\n this.inited = !1, this.lib = void 0, this.remoteInfo = t, this.host = e;\n }\n};\nclass SyncHook {\n on(e) {\n typeof e == \"function\" && this.listeners.add(e);\n }\n once(e) {\n const r = this;\n this.on(function n(...o) {\n return r.remove(n), e.apply(null, o);\n });\n }\n emit(...e) {\n let r;\n return this.listeners.size > 0 && this.listeners.forEach((n) => {\n r = n(...e);\n }), r;\n }\n remove(e) {\n this.listeners.delete(e);\n }\n removeAll() {\n this.listeners.clear();\n }\n constructor(e) {\n this.type = \"\", this.listeners = /* @__PURE__ */ new Set(), e && (this.type = e);\n }\n}\nclass AsyncHook extends SyncHook {\n emit(...e) {\n let r;\n const n = Array.from(this.listeners);\n if (n.length > 0) {\n let o = 0;\n const s = (i) => i === !1 ? !1 : o < n.length ? Promise.resolve(n[o++].apply(null, e)).then(s) : i;\n r = s();\n }\n return Promise.resolve(r);\n }\n}\nfunction checkReturnData(t, e) {\n if (!isObject(e))\n return !1;\n if (t !== e) {\n for (const r in t)\n if (!(r in e))\n return !1;\n }\n return !0;\n}\nclass SyncWaterfallHook extends SyncHook {\n emit(e) {\n isObject(e) || error(`The data for the \"${this.type}\" hook should be an object.`);\n for (const r of this.listeners)\n try {\n const n = r(e);\n if (checkReturnData(e, n))\n e = n;\n else {\n this.onerror(`A plugin returned an unacceptable value for the \"${this.type}\" type.`);\n break;\n }\n } catch (n) {\n warn$1(n), this.onerror(n);\n }\n return e;\n }\n constructor(e) {\n super(), this.onerror = error, this.type = e;\n }\n}\nclass AsyncWaterfallHook extends SyncHook {\n emit(e) {\n isObject(e) || error(`The response data for the \"${this.type}\" hook must be an object.`);\n const r = Array.from(this.listeners);\n if (r.length > 0) {\n let n = 0;\n const o = (i) => (warn$1(i), this.onerror(i), e), s = (i) => {\n if (checkReturnData(e, i)) {\n if (e = i, n < r.length)\n try {\n return Promise.resolve(r[n++](e)).then(s, o);\n } catch (a) {\n return o(a);\n }\n } else\n this.onerror(`A plugin returned an incorrect value for the \"${this.type}\" type.`);\n return e;\n };\n return Promise.resolve(s(e));\n }\n return Promise.resolve(e);\n }\n constructor(e) {\n super(), this.onerror = error, this.type = e;\n }\n}\nclass PluginSystem {\n applyPlugin(e) {\n assert(isPlainObject(e), \"Plugin configuration is invalid.\");\n const r = e.name;\n assert(r, \"A name must be provided by the plugin.\"), this.registerPlugins[r] || (this.registerPlugins[r] = e, Object.keys(this.lifecycle).forEach((n) => {\n const o = e[n];\n o && this.lifecycle[n].on(o);\n }));\n }\n removePlugin(e) {\n assert(e, \"A name is required.\");\n const r = this.registerPlugins[e];\n assert(r, `The plugin \"${e}\" is not registered.`), Object.keys(r).forEach((n) => {\n n !== \"name\" && this.lifecycle[n].remove(r[n]);\n });\n }\n inherit({ lifecycle: e, registerPlugins: r }) {\n Object.keys(e).forEach((n) => {\n assert(!this.lifecycle[n], `The hook \"${n}\" has a conflict and cannot be inherited.`), this.lifecycle[n] = e[n];\n }), Object.keys(r).forEach((n) => {\n assert(!this.registerPlugins[n], `The plugin \"${n}\" has a conflict and cannot be inherited.`), this.applyPlugin(r[n]);\n });\n }\n constructor(e) {\n this.registerPlugins = {}, this.lifecycle = e, this.lifecycleKeys = Object.keys(e);\n }\n}\nfunction _extends$3() {\n return _extends$3 = Object.assign || function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r)\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n return t;\n }, _extends$3.apply(this, arguments);\n}\nfunction defaultPreloadArgs(t) {\n return _extends$3({\n resourceCategory: \"sync\",\n share: !0,\n depsRemote: !0,\n prefetchInterface: !1\n }, t);\n}\nfunction formatPreloadArgs(t, e) {\n return e.map((r) => {\n const n = matchRemote(t, r.nameOrAlias);\n return assert(n, `Unable to preload ${r.nameOrAlias} as it is not included in ${!n && safeToString$1({\n remoteInfo: n,\n remotes: t\n })}`), {\n remote: n,\n preloadConfig: defaultPreloadArgs(r)\n };\n });\n}\nfunction normalizePreloadExposes(t) {\n return t ? t.map((e) => e === \".\" ? e : e.startsWith(\"./\") ? e.replace(\"./\", \"\") : e) : [];\n}\nfunction preloadAssets(t, e, r) {\n const { cssAssets: n, jsAssetsWithoutEntry: o, entryAssets: s } = r;\n if (e.options.inBrowser) {\n s.forEach((a) => {\n const { moduleInfo: c } = a, l = e.moduleCache.get(t.name);\n getRemoteEntry(l ? {\n remoteInfo: c,\n remoteEntryExports: l.remoteEntryExports,\n createScriptHook: (u) => {\n const d = e.loaderHook.lifecycle.createScript.emit({\n url: u\n });\n if (d instanceof HTMLScriptElement)\n return d;\n }\n } : {\n remoteInfo: c,\n remoteEntryExports: void 0,\n createScriptHook: (u) => {\n const d = e.loaderHook.lifecycle.createScript.emit({\n url: u\n });\n if (d instanceof HTMLScriptElement)\n return d;\n }\n });\n });\n const i = document.createDocumentFragment();\n n.forEach((a) => {\n const { link: c, needAttach: l } = createLink(a, () => {\n }, {\n rel: \"preload\",\n as: \"style\"\n }, (u) => {\n const d = e.loaderHook.lifecycle.createLink.emit({\n url: u\n });\n if (d instanceof HTMLLinkElement)\n return d;\n });\n l && i.appendChild(c);\n }), o.forEach((a) => {\n const { link: c, needAttach: l } = createLink(a, () => {\n }, {\n rel: \"preload\",\n as: \"script\"\n }, (u) => {\n const d = e.loaderHook.lifecycle.createLink.emit({\n url: u\n });\n if (d instanceof HTMLLinkElement)\n return d;\n });\n l && document.head.appendChild(c);\n }), document.head.appendChild(i);\n }\n}\nfunction _extends$2() {\n return _extends$2 = Object.assign || function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r)\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n return t;\n }, _extends$2.apply(this, arguments);\n}\nfunction assignRemoteInfo(t, e) {\n (!(\"remoteEntry\" in e) || !e.remoteEntry) && error(`The attribute remoteEntry of ${name} must not be undefined.`);\n const { remoteEntry: r } = e, n = getResourceUrl(e, r);\n t.type = e.remoteEntryType, t.entryGlobalName = e.globalName, t.entry = n, t.version = e.version, t.buildVersion = e.buildVersion;\n}\nfunction snapshotPlugin() {\n return {\n name: \"snapshot-plugin\",\n async afterResolve(t) {\n const { remote: e, pkgNameOrAlias: r, expose: n, origin: o, remoteInfo: s } = t;\n if (!isRemoteInfoWithEntry(e) || !isPureRemoteEntry(e)) {\n const { remoteSnapshot: i, globalSnapshot: a } = await o.snapshotHandler.loadRemoteSnapshotInfo(e);\n assignRemoteInfo(s, i);\n const c = {\n remote: e,\n preloadConfig: {\n nameOrAlias: r,\n exposes: [\n n\n ],\n resourceCategory: \"sync\",\n share: !1,\n depsRemote: !1\n }\n }, l = await o.hooks.lifecycle.generatePreloadAssets.emit({\n origin: o,\n preloadOptions: c,\n remoteInfo: s,\n remote: e,\n remoteSnapshot: i,\n globalSnapshot: a\n });\n return l && preloadAssets(s, o, l), _extends$2({}, t, {\n remoteSnapshot: i\n });\n }\n return t;\n }\n };\n}\nfunction splitId(t) {\n const e = t.split(\":\");\n return e.length === 1 ? {\n name: e[0],\n version: void 0\n } : e.length === 2 ? {\n name: e[0],\n version: e[1]\n } : {\n name: e[1],\n version: e[2]\n };\n}\nfunction traverseModuleInfo(t, e, r, n, o = {}, s) {\n const i = getFMId(e), { value: a } = getInfoWithoutType(t, i), c = s || a;\n if (c && !isManifestProvider(c) && (r(c, e, n), c.remotesInfo)) {\n const l = Object.keys(c.remotesInfo);\n for (const u of l) {\n if (o[u])\n continue;\n o[u] = !0;\n const d = splitId(u), m = c.remotesInfo[u];\n traverseModuleInfo(t, {\n name: d.name,\n version: m.matchedVersion\n }, r, !1, o, void 0);\n }\n }\n}\nfunction generatePreloadAssets(t, e, r, n, o) {\n const s = [], i = [], a = [], c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set(), { options: u } = t, { preloadConfig: d } = e, { depsRemote: m } = d;\n traverseModuleInfo(n, r, (h, y, w) => {\n let p;\n if (w)\n p = d;\n else if (Array.isArray(m)) {\n const b = m.find((A) => A.nameOrAlias === y.name || A.nameOrAlias === y.alias);\n if (!b)\n return;\n p = defaultPreloadArgs(b);\n } else if (m === !0)\n p = d;\n else\n return;\n const I = getResourceUrl(h, \"remoteEntry\" in h ? h.remoteEntry : \"\");\n I && a.push({\n name: y.name,\n moduleInfo: {\n name: y.name,\n entry: I,\n type: \"remoteEntryType\" in h ? h.remoteEntryType : \"global\",\n entryGlobalName: \"globalName\" in h ? h.globalName : y.name,\n shareScope: \"\",\n version: \"version\" in h ? h.version : void 0\n },\n url: I\n });\n let M = \"modules\" in h ? h.modules : [];\n const D = normalizePreloadExposes(p.exposes);\n if (D.length && \"modules\" in h) {\n var x;\n M = h == null || (x = h.modules) == null ? void 0 : x.reduce((b, A) => ((D == null ? void 0 : D.indexOf(A.moduleName)) !== -1 && b.push(A), b), []);\n }\n function O(b) {\n const A = b.map((v) => getResourceUrl(h, v));\n return p.filter ? A.filter(p.filter) : A;\n }\n if (M) {\n const b = M.length;\n for (let A = 0; A < b; A++) {\n const v = M[A], L = `${y.name}/${v.moduleName}`;\n t.hooks.lifecycle.handlePreloadModule.emit({\n id: v.moduleName === \".\" ? y.name : L,\n name: y.name,\n remoteSnapshot: h,\n preloadConfig: p,\n remote: y,\n origin: t\n }), !getPreloaded(L) && (p.resourceCategory === \"all\" ? (s.push(...O(v.assets.css.async)), s.push(...O(v.assets.css.sync)), i.push(...O(v.assets.js.async)), i.push(...O(v.assets.js.sync))) : (p.resourceCategory = \"sync\") && (s.push(...O(v.assets.css.sync)), i.push(...O(v.assets.js.sync))), setPreloaded(L));\n }\n }\n }, !0, {}, o), o.shared && o.shared.forEach((h) => {\n var y;\n const w = (y = u.shared) == null ? void 0 : y[h.sharedName];\n if (!w)\n return;\n const p = getRegisteredShare(t.shareScopeMap, h.sharedName, w, t.hooks.lifecycle.resolveShare);\n p && typeof p.lib == \"function\" && (h.assets.js.sync.forEach((I) => {\n c.add(I);\n }), h.assets.css.sync.forEach((I) => {\n l.add(I);\n }));\n });\n const g = i.filter((h) => !c.has(h));\n return {\n cssAssets: s.filter((h) => !l.has(h)),\n jsAssetsWithoutEntry: g,\n entryAssets: a\n };\n}\nconst generatePreloadAssetsPlugin = function() {\n return {\n name: \"generate-preload-assets-plugin\",\n async generatePreloadAssets(t) {\n const { origin: e, preloadOptions: r, remoteInfo: n, remote: o, globalSnapshot: s, remoteSnapshot: i } = t;\n return isRemoteInfoWithEntry(o) && isPureRemoteEntry(o) ? {\n cssAssets: [],\n jsAssetsWithoutEntry: [],\n entryAssets: [\n {\n name: o.name,\n url: o.entry,\n moduleInfo: {\n name: n.name,\n entry: o.entry,\n type: \"global\",\n entryGlobalName: \"\",\n shareScope: \"\"\n }\n }\n ]\n } : (assignRemoteInfo(n, i), generatePreloadAssets(e, r, n, s, i));\n }\n };\n};\nfunction _extends$1() {\n return _extends$1 = Object.assign || function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r)\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n return t;\n }, _extends$1.apply(this, arguments);\n}\nclass SnapshotHandler {\n async loadSnapshot(e) {\n const { options: r } = this.HostInstance, { hostGlobalSnapshot: n, remoteSnapshot: o, globalSnapshot: s } = this.getGlobalRemoteInfo(e), { remoteSnapshot: i, globalSnapshot: a } = await this.hooks.lifecycle.loadSnapshot.emit({\n options: r,\n moduleInfo: e,\n hostGlobalSnapshot: n,\n remoteSnapshot: o,\n globalSnapshot: s\n });\n return {\n remoteSnapshot: i,\n globalSnapshot: a\n };\n }\n async loadRemoteSnapshotInfo(e) {\n const { options: r } = this.HostInstance;\n await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({\n options: r,\n moduleInfo: e\n });\n let n = getGlobalSnapshotInfoByModuleInfo({\n name: this.HostInstance.options.name,\n version: this.HostInstance.options.version\n });\n n || (n = {\n version: this.HostInstance.options.version || \"\",\n remoteEntry: \"\",\n remotesInfo: {}\n }, addGlobalSnapshot({\n [this.HostInstance.options.name]: n\n })), n && \"remotesInfo\" in n && !getInfoWithoutType(n.remotesInfo, e.name).value && (\"version\" in e || \"entry\" in e) && (n.remotesInfo = _extends$1({}, n == null ? void 0 : n.remotesInfo, {\n [e.name]: {\n matchedVersion: \"version\" in e ? e.version : e.entry\n }\n }));\n const { hostGlobalSnapshot: o, remoteSnapshot: s, globalSnapshot: i } = this.getGlobalRemoteInfo(e), { remoteSnapshot: a, globalSnapshot: c } = await this.hooks.lifecycle.loadSnapshot.emit({\n options: r,\n moduleInfo: e,\n hostGlobalSnapshot: o,\n remoteSnapshot: s,\n globalSnapshot: i\n });\n if (a)\n if (isManifestProvider(a)) {\n const l = await this.getManifestJson(a.remoteEntry, e, {}), u = setGlobalSnapshotInfoByModuleInfo(_extends$1({}, e, {\n entry: a.remoteEntry\n }), l);\n return {\n remoteSnapshot: l,\n globalSnapshot: u\n };\n } else {\n const { remoteSnapshot: l } = await this.hooks.lifecycle.loadRemoteSnapshot.emit({\n options: this.HostInstance.options,\n moduleInfo: e,\n remoteSnapshot: a,\n from: \"global\"\n });\n return {\n remoteSnapshot: l,\n globalSnapshot: c\n };\n }\n else if (isRemoteInfoWithEntry(e)) {\n const l = await this.getManifestJson(e.entry, e, {}), u = setGlobalSnapshotInfoByModuleInfo(e, l), { remoteSnapshot: d } = await this.hooks.lifecycle.loadRemoteSnapshot.emit({\n options: this.HostInstance.options,\n moduleInfo: e,\n remoteSnapshot: l,\n from: \"global\"\n });\n return {\n remoteSnapshot: d,\n globalSnapshot: u\n };\n } else\n error(`\n Cannot get remoteSnapshot with the name: '${e.name}', version: '${e.version}' from __FEDERATION__.moduleInfo. The following reasons may be causing the problem:\n\n 1. The Deploy platform did not deliver the correct data. You can use __FEDERATION__.moduleInfo to check the remoteInfo.\n\n 2. The remote '${e.name}' version '${e.version}' is not released.\n\n The transformed module info: ${JSON.stringify(c)}\n `);\n }\n getGlobalRemoteInfo(e) {\n const r = getGlobalSnapshotInfoByModuleInfo({\n name: this.HostInstance.options.name,\n version: this.HostInstance.options.version\n }), n = r && \"remotesInfo\" in r && r.remotesInfo && getInfoWithoutType(r.remotesInfo, e.name).value;\n return n && n.matchedVersion ? {\n hostGlobalSnapshot: r,\n globalSnapshot: getGlobalSnapshot(),\n remoteSnapshot: getGlobalSnapshotInfoByModuleInfo({\n name: e.name,\n version: n.matchedVersion\n })\n } : {\n hostGlobalSnapshot: void 0,\n globalSnapshot: getGlobalSnapshot(),\n remoteSnapshot: getGlobalSnapshotInfoByModuleInfo({\n name: e.name,\n version: \"version\" in e ? e.version : void 0\n })\n };\n }\n async getManifestJson(e, r, n) {\n const o = async () => {\n let i = this.manifestCache.get(e);\n if (i)\n return i;\n try {\n let a = await this.loaderHook.lifecycle.fetch.emit(e, {});\n return (!a || !(a instanceof Response)) && (a = await fetch(e, {})), i = await a.json(), assert(i.metaData && i.exposes && i.shared, `${e} is not a federation manifest`), this.manifestCache.set(e, i), i;\n } catch (a) {\n error(`Failed to get manifestJson for ${r.name}. The manifest URL is ${e}. Please ensure that the manifestUrl is accessible.\n \n Error message:\n \n ${a}`);\n }\n }, s = async () => {\n const i = await o(), a = generateSnapshotFromManifest(i, {\n version: e\n }), { remoteSnapshot: c } = await this.hooks.lifecycle.loadRemoteSnapshot.emit({\n options: this.HostInstance.options,\n moduleInfo: r,\n manifestJson: i,\n remoteSnapshot: a,\n manifestUrl: e,\n from: \"manifest\"\n });\n return c;\n };\n return this.manifestLoading[e] || (this.manifestLoading[e] = s().then((i) => i)), this.manifestLoading[e];\n }\n constructor(e) {\n this.loadingHostSnapshot = null, this.manifestCache = /* @__PURE__ */ new Map(), this.hooks = new PluginSystem({\n beforeLoadRemoteSnapshot: new AsyncHook(\"beforeLoadRemoteSnapshot\"),\n loadSnapshot: new AsyncWaterfallHook(\"loadGlobalSnapshot\"),\n loadRemoteSnapshot: new AsyncWaterfallHook(\"loadRemoteSnapshot\")\n }), this.manifestLoading = Global.__FEDERATION__.__MANIFEST_LOADING__, this.HostInstance = e, this.loaderHook = e.loaderHook;\n }\n}\nfunction _extends() {\n return _extends = Object.assign || function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var r = arguments[e];\n for (var n in r)\n Object.prototype.hasOwnProperty.call(r, n) && (t[n] = r[n]);\n }\n return t;\n }, _extends.apply(this, arguments);\n}\nfunction _object_without_properties_loose(t, e) {\n if (t == null)\n return {};\n var r = {}, n = Object.keys(t), o, s;\n for (s = 0; s < n.length; s++)\n o = n[s], !(e.indexOf(o) >= 0) && (r[o] = t[o]);\n return r;\n}\nclass FederationHost {\n _setGlobalShareScopeMap() {\n const e = getGlobalShareScope(), r = this.options.id || this.options.name;\n r && !e[r] && (e[r] = this.shareScopeMap);\n }\n initOptions(e) {\n this.registerPlugins(e.plugins);\n const r = this.formatOptions(this.options, e);\n return this.options = r, r;\n }\n async loadShare(e, r) {\n var n;\n const o = Object.assign({}, (n = this.options.shared) == null ? void 0 : n[e], r);\n o != null && o.scope && await Promise.all(o.scope.map(async (l) => {\n await Promise.all(this.initializeSharing(l, o.strategy));\n }));\n const s = await this.hooks.lifecycle.beforeLoadShare.emit({\n pkgName: e,\n shareInfo: o,\n shared: this.options.shared,\n origin: this\n }), { shareInfo: i } = s;\n assert(i, `Cannot find ${e} Share in the ${this.options.name}. Please ensure that the ${e} Share parameters have been injected`);\n const a = getRegisteredShare(this.shareScopeMap, e, i, this.hooks.lifecycle.resolveShare), c = (l) => {\n l.useIn || (l.useIn = []), addUniqueItem(l.useIn, this.options.name);\n };\n if (a && a.lib)\n return c(a), a.lib;\n if (a && a.loading && !a.loaded) {\n const l = await a.loading;\n return a.loaded = !0, a.lib || (a.lib = l), c(a), l;\n } else if (a) {\n const l = (async () => {\n const u = await a.get();\n i.lib = u, i.loaded = !0, c(i);\n const d = getRegisteredShare(this.shareScopeMap, e, i, this.hooks.lifecycle.resolveShare);\n return d && (d.lib = u, d.loaded = !0), u;\n })();\n return this.setShared({\n pkgName: e,\n loaded: !1,\n shared: a,\n from: this.options.name,\n lib: null,\n loading: l\n }), l;\n } else {\n if (r)\n return !1;\n const l = (async () => {\n const u = await i.get();\n i.lib = u, i.loaded = !0, c(i);\n const d = getRegisteredShare(this.shareScopeMap, e, i, this.hooks.lifecycle.resolveShare);\n return d && (d.lib = u, d.loaded = !0), u;\n })();\n return this.setShared({\n pkgName: e,\n loaded: !1,\n shared: i,\n from: this.options.name,\n lib: null,\n loading: l\n }), l;\n }\n }\n loadShareSync(e, r) {\n var n;\n const o = Object.assign({}, (n = this.options.shared) == null ? void 0 : n[e], r);\n o != null && o.scope && o.scope.forEach((a) => {\n this.initializeSharing(a, o.strategy);\n });\n const s = getRegisteredShare(this.shareScopeMap, e, o, this.hooks.lifecycle.resolveShare), i = (a) => {\n a.useIn || (a.useIn = []), addUniqueItem(a.useIn, this.options.name);\n };\n if (s) {\n if (typeof s.lib == \"function\")\n return i(s), s.loaded || (s.loaded = !0, s.from === this.options.name && (o.loaded = !0)), s.lib;\n if (typeof s.get == \"function\") {\n const a = s.get();\n if (!(a instanceof Promise))\n return i(s), this.setShared({\n pkgName: e,\n loaded: !0,\n from: this.options.name,\n lib: a,\n shared: s\n }), a;\n }\n }\n if (o.lib)\n return o.loaded || (o.loaded = !0), o.lib;\n if (o.get) {\n const a = o.get();\n if (a instanceof Promise)\n throw new Error(`\n The loadShareSync function was unable to load ${e}. The ${e} could not be found in ${this.options.name}.\n Possible reasons for failure: \n\n 1. The ${e} share was registered with the 'get' attribute, but loadShare was not used beforehand.\n\n 2. The ${e} share was not registered with the 'lib' attribute.\n\n `);\n return o.lib = a, this.setShared({\n pkgName: e,\n loaded: !0,\n from: this.options.name,\n lib: o.lib,\n shared: o\n }), o.lib;\n }\n throw new Error(`\n The loadShareSync function was unable to load ${e}. The ${e} could not be found in ${this.options.name}.\n Possible reasons for failure: \n\n 1. The ${e} share was registered with the 'get' attribute, but loadShare was not used beforehand.\n\n 2. The ${e} share was not registered with the 'lib' attribute.\n\n `);\n }\n initRawContainer(e, r, n) {\n const o = getRemoteInfo({\n name: e,\n entry: r\n }), s = new Module({\n host: this,\n remoteInfo: o\n });\n return s.remoteEntryExports = n, this.moduleCache.set(e, s), s;\n }\n async _getRemoteModuleAndOptions(e) {\n const r = await this.hooks.lifecycle.beforeRequest.emit({\n id: e,\n options: this.options,\n origin: this\n }), { id: n } = r, o = matchRemoteWithNameAndExpose(this.options.remotes, n);\n assert(o, `\n Unable to locate ${n} in ${this.options.name}. Potential reasons for failure include:\n\n 1. ${n} was not included in the 'remotes' parameter of ${this.options.name || \"the host\"}.\n\n 2. ${n} could not be found in the 'remotes' of ${this.options.name} with either 'name' or 'alias' attributes.\n 3. ${n} is not online, injected, or loaded.\n 4. ${n} cannot be accessed on the expected.\n 5. The 'beforeRequest' hook was provided but did not return the correct 'remoteInfo' when attempting to load ${n}.\n `);\n const { remote: s } = o, i = getRemoteInfo(s), a = await this.hooks.lifecycle.afterResolve.emit(_extends({\n id: n\n }, o, {\n options: this.options,\n origin: this,\n remoteInfo: i\n })), { remote: c, expose: l } = a;\n assert(c && l, `The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${n}.`);\n let u = this.moduleCache.get(c.name);\n const d = {\n host: this,\n remoteInfo: i\n };\n return u || (u = new Module(d), this.moduleCache.set(c.name, u)), {\n module: u,\n moduleOptions: d,\n remoteMatchInfo: a\n };\n }\n async loadRemote(e, r) {\n try {\n const { loadFactory: n = !0 } = r || {\n loadFactory: !0\n }, { module: o, moduleOptions: s, remoteMatchInfo: i } = await this._getRemoteModuleAndOptions(e), { pkgNameOrAlias: a, remote: c, expose: l, id: u } = i, d = await o.get(l, r), m = await this.hooks.lifecycle.onLoad.emit({\n id: u,\n pkgNameOrAlias: a,\n expose: l,\n exposeModule: n ? d : void 0,\n exposeModuleFactory: n ? void 0 : d,\n remote: c,\n options: s,\n moduleInstance: o,\n origin: this\n });\n return typeof m == \"function\" ? m : d;\n } catch (n) {\n const { from: o = \"runtime\" } = r || {\n from: \"runtime\"\n }, s = await this.hooks.lifecycle.errorLoadRemote.emit({\n id: e,\n error: n,\n from: o,\n origin: this\n });\n if (!s)\n throw n;\n return s;\n }\n }\n async preloadRemote(e) {\n await this.hooks.lifecycle.beforePreloadRemote.emit({\n preloadOptions: e,\n options: this.options,\n origin: this\n });\n const r = formatPreloadArgs(this.options.remotes, e);\n await Promise.all(r.map(async (n) => {\n const { remote: o } = n, s = getRemoteInfo(o), { globalSnapshot: i, remoteSnapshot: a } = await this.snapshotHandler.loadRemoteSnapshotInfo(o), c = await this.hooks.lifecycle.generatePreloadAssets.emit({\n origin: this,\n preloadOptions: n,\n remote: o,\n remoteInfo: s,\n globalSnapshot: i,\n remoteSnapshot: a\n });\n !c || preloadAssets(s, this, c);\n }));\n }\n initializeSharing(e = DEFAULT_SCOPE, r) {\n const n = this.shareScopeMap, o = this.options.name;\n n[e] || (n[e] = {});\n const s = n[e], i = (u, d) => {\n var m;\n const { version: g, eager: h } = d;\n s[u] = s[u] || {};\n const y = s[u], w = y[g], p = Boolean(w && (w.eager || ((m = w.shareConfig) == null ? void 0 : m.eager)));\n (!w || w.strategy !== \"loaded-first\" && !w.loaded && (Boolean(!h) !== !p ? h : o > w.from)) && (y[g] = d);\n }, a = [], c = (u) => u && u.init && u.init(n[e]), l = async (u) => {\n const { module: d } = await this._getRemoteModuleAndOptions(u);\n if (d.getEntry) {\n const m = await d.getEntry();\n d.inited || (c(m), d.inited = !0);\n }\n };\n return Object.keys(this.options.shared).forEach((u) => {\n const d = this.options.shared[u];\n d.scope.includes(e) && i(u, d);\n }), r === \"version-first\" && this.options.remotes.forEach((u) => {\n u.shareScope === e && a.push(l(u.name));\n }), a;\n }\n initShareScopeMap(e, r) {\n this.shareScopeMap[e] = r, this.hooks.lifecycle.initContainerShareScopeMap.emit({\n shareScope: r,\n options: this.options,\n origin: this\n });\n }\n formatOptions(e, r) {\n const n = formatShareConfigs(r.shared || {}, r.name), o = _extends({}, e.shared, n), { userOptions: s, options: i } = this.hooks.lifecycle.beforeInit.emit({\n origin: this,\n userOptions: r,\n options: e,\n shareInfo: o\n }), a = (s.remotes || []).reduce((u, d) => (this.registerRemote(d, u, {\n force: !1\n }), u), i.remotes);\n Object.keys(n).forEach((u) => {\n const d = n[u];\n !getRegisteredShare(this.shareScopeMap, u, d, this.hooks.lifecycle.resolveShare) && d && d.lib && this.setShared({\n pkgName: u,\n lib: d.lib,\n get: d.get,\n loaded: !0,\n shared: d,\n from: r.name\n });\n });\n const c = [\n ...i.plugins\n ];\n s.plugins && s.plugins.forEach((u) => {\n c.includes(u) || c.push(u);\n });\n const l = _extends({}, e, r, {\n plugins: c,\n remotes: a,\n shared: o\n });\n return this.hooks.lifecycle.init.emit({\n origin: this,\n options: l\n }), l;\n }\n registerPlugins(e) {\n registerPlugins(e, [\n this.hooks,\n this.snapshotHandler.hooks,\n this.loaderHook\n ]);\n }\n setShared({ pkgName: e, shared: r, from: n, lib: o, loading: s, loaded: i, get: a }) {\n const { version: c, scope: l = \"default\" } = r, u = _object_without_properties_loose(r, [\n \"version\",\n \"scope\"\n ]);\n (Array.isArray(l) ? l : [\n l\n ]).forEach((d) => {\n this.shareScopeMap[d] || (this.shareScopeMap[d] = {}), this.shareScopeMap[d][e] || (this.shareScopeMap[d][e] = {}), !this.shareScopeMap[d][e][c] && (this.shareScopeMap[d][e][c] = _extends({\n version: c,\n scope: [\n \"default\"\n ]\n }, u, {\n lib: o,\n loaded: i,\n loading: s\n }), a && (this.shareScopeMap[d][e][c].get = a));\n });\n }\n removeRemote(e) {\n const { name: r } = e, n = this.options.remotes.findIndex((s) => s.name === r);\n n !== -1 && this.options.remotes.splice(n, 1);\n const o = this.moduleCache.get(e.name);\n if (o) {\n const s = o.remoteInfo.entryGlobalName;\n globalThis[s] && delete globalThis[s];\n const i = getRemoteEntryUniqueKey(o.remoteInfo);\n globalLoading[i] && delete globalLoading[i], this.moduleCache.delete(e.name);\n }\n }\n registerRemote(e, r, n) {\n const o = () => {\n if (e.alias) {\n const i = r.find((a) => {\n var c;\n return e.alias && (a.name.startsWith(e.alias) || ((c = a.alias) == null ? void 0 : c.startsWith(e.alias)));\n });\n assert(!i, `The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i && i.name} name or alias`);\n }\n \"entry\" in e && isBrowserEnv$1() && !e.entry.startsWith(\"http\") && (e.entry = new URL(e.entry, window.location.origin).href), e.shareScope || (e.shareScope = DEFAULT_SCOPE), e.type || (e.type = DEFAULT_REMOTE_TYPE);\n }, s = r.find((i) => i.name === e.name);\n if (!s)\n o(), r.push(e);\n else {\n const i = [\n `The remote \"${e.name}\" is already registered.`,\n n != null && n.force ? \"Hope you have known that OVERRIDE it may have some unexpected errors\" : 'If you want to merge the remote, you can set \"force: true\".'\n ];\n n != null && n.force && (this.removeRemote(s), o(), r.push(e)), warn$1(i.join(\" \"));\n }\n }\n registerRemotes(e, r) {\n e.forEach((n) => {\n this.registerRemote(n, this.options.remotes, {\n force: r == null ? void 0 : r.force\n });\n });\n }\n constructor(e) {\n this.hooks = new PluginSystem({\n beforeInit: new SyncWaterfallHook(\"beforeInit\"),\n init: new SyncHook(),\n beforeRequest: new AsyncWaterfallHook(\"beforeRequest\"),\n afterResolve: new AsyncWaterfallHook(\"afterResolve\"),\n beforeInitContainer: new AsyncWaterfallHook(\"beforeInitContainer\"),\n initContainerShareScopeMap: new AsyncWaterfallHook(\"initContainer\"),\n initContainer: new AsyncWaterfallHook(\"initContainer\"),\n onLoad: new AsyncHook(\"onLoad\"),\n handlePreloadModule: new SyncHook(\"handlePreloadModule\"),\n errorLoadRemote: new AsyncHook(\"errorLoadRemote\"),\n beforeLoadShare: new AsyncWaterfallHook(\"beforeLoadShare\"),\n loadShare: new AsyncHook(),\n resolveShare: new SyncWaterfallHook(\"resolveShare\"),\n beforePreloadRemote: new AsyncHook(),\n generatePreloadAssets: new AsyncHook(\"generatePreloadAssets\"),\n afterPreloadRemote: new AsyncHook()\n }), this.version = \"0.1.2\", this.moduleCache = /* @__PURE__ */ new Map(), this.loaderHook = new PluginSystem({\n getModuleInfo: new SyncHook(),\n createScript: new SyncHook(),\n createLink: new SyncHook(),\n fetch: new AsyncHook(\"fetch\")\n });\n const r = {\n id: getBuilderId(),\n name: e.name,\n plugins: [\n snapshotPlugin(),\n generatePreloadAssetsPlugin()\n ],\n remotes: [],\n shared: {},\n inBrowser: isBrowserEnv$1()\n };\n this.name = e.name, this.options = r, this.shareScopeMap = {}, this._setGlobalShareScopeMap(), this.snapshotHandler = new SnapshotHandler(this), this.registerPlugins([\n ...r.plugins,\n ...e.plugins || []\n ]), this.options = this.formatOptions(r, e);\n }\n}\nlet FederationInstance = null;\nfunction init(t) {\n const e = getGlobalFederationInstance(t.name, t.version);\n if (e)\n return e.initOptions(t), FederationInstance || (FederationInstance = e), e;\n {\n const r = getGlobalFederationConstructor() || FederationHost;\n return FederationInstance = new r(t), setGlobalFederationInstance(FederationInstance), FederationInstance;\n }\n}\nfunction loadRemote(...t) {\n return assert(FederationInstance, \"Please call init first\"), FederationInstance.loadRemote.apply(FederationInstance, t);\n}\nsetGlobalFederationConstructor(FederationHost);\nfunction __awaiter(t, e, r, n) {\n function o(s) {\n return s instanceof r ? s : new r(function(i) {\n i(s);\n });\n }\n return new (r || (r = Promise))(function(s, i) {\n function a(u) {\n try {\n l(n.next(u));\n } catch (d) {\n i(d);\n }\n }\n function c(u) {\n try {\n l(n.throw(u));\n } catch (d) {\n i(d);\n }\n }\n function l(u) {\n u.done ? s(u.value) : o(u.value).then(a, c);\n }\n l((n = n.apply(t, e || [])).next());\n });\n}\nfunction __generator(t, e) {\n var r = { label: 0, sent: function() {\n if (s[0] & 1)\n throw s[1];\n return s[1];\n }, trys: [], ops: [] }, n, o, s, i;\n return i = { next: a(0), throw: a(1), return: a(2) }, typeof Symbol == \"function\" && (i[Symbol.iterator] = function() {\n return this;\n }), i;\n function a(l) {\n return function(u) {\n return c([l, u]);\n };\n }\n function c(l) {\n if (n)\n throw new TypeError(\"Generator is already executing.\");\n for (; r; )\n try {\n if (n = 1, o && (s = l[0] & 2 ? o.return : l[0] ? o.throw || ((s = o.return) && s.call(o), 0) : o.next) && !(s = s.call(o, l[1])).done)\n return s;\n switch (o = 0, s && (l = [l[0] & 2, s.value]), l[0]) {\n case 0:\n case 1:\n s = l;\n break;\n case 4:\n return r.label++, { value: l[1], done: !1 };\n case 5:\n r.label++, o = l[1], l = [0];\n continue;\n case 7:\n l = r.ops.pop(), r.trys.pop();\n continue;\n default:\n if (s = r.trys, !(s = s.length > 0 && s[s.length - 1]) && (l[0] === 6 || l[0] === 2)) {\n r = 0;\n continue;\n }\n if (l[0] === 3 && (!s || l[1] > s[0] && l[1] < s[3])) {\n r.label = l[1];\n break;\n }\n if (l[0] === 6 && r.label < s[1]) {\n r.label = s[1], s = l;\n break;\n }\n if (s && r.label < s[2]) {\n r.label = s[2], r.ops.push(l);\n break;\n }\n s[2] && r.ops.pop(), r.trys.pop();\n continue;\n }\n l = e.call(t, r);\n } catch (u) {\n l = [6, u], o = 0;\n } finally {\n n = s = 0;\n }\n if (l[0] & 5)\n throw l[1];\n return { value: l[0] ? l[1] : void 0, done: !0 };\n }\n}\nvar E_CANCELED = new Error(\"request for lock canceled\"), Semaphore = function() {\n function t(e, r) {\n r === void 0 && (r = E_CANCELED), this._value = e, this._cancelError = r, this._queue = [], this._weightedWaiters = [];\n }\n return t.prototype.acquire = function(e, r) {\n var n = this;\n if (e === void 0 && (e = 1), r === void 0 && (r = 0), e <= 0)\n throw new Error(\"invalid weight \".concat(e, \": must be positive\"));\n return new Promise(function(o, s) {\n var i = { resolve: o, reject: s, weight: e, priority: r }, a = findIndexFromEnd(n._queue, function(c) {\n return r <= c.priority;\n });\n a === -1 && e <= n._value ? n._dispatchItem(i) : n._queue.splice(a + 1, 0, i);\n });\n }, t.prototype.runExclusive = function(e) {\n return __awaiter(this, arguments, void 0, function(r, n, o) {\n var s, i, a;\n return n === void 0 && (n = 1), o === void 0 && (o = 0), __generator(this, function(c) {\n switch (c.label) {\n case 0:\n return [4, this.acquire(n, o)];\n case 1:\n s = c.sent(), i = s[0], a = s[1], c.label = 2;\n case 2:\n return c.trys.push([2, , 4, 5]), [4, r(i)];\n case 3:\n return [2, c.sent()];\n case 4:\n return a(), [7];\n case 5:\n return [2];\n }\n });\n });\n }, t.prototype.waitForUnlock = function(e, r) {\n var n = this;\n if (e === void 0 && (e = 1), r === void 0 && (r = 0), e <= 0)\n throw new Error(\"invalid weight \".concat(e, \": must be positive\"));\n return this._couldLockImmediately(e, r) ? Promise.resolve() : new Promise(function(o) {\n n._weightedWaiters[e - 1] || (n._weightedWaiters[e - 1] = []), insertSorted(n._weightedWaiters[e - 1], { resolve: o, priority: r });\n });\n }, t.prototype.isLocked = function() {\n return this._value <= 0;\n }, t.prototype.getValue = function() {\n return this._value;\n }, t.prototype.setValue = function(e) {\n this._value = e, this._dispatchQueue();\n }, t.prototype.release = function(e) {\n if (e === void 0 && (e = 1), e <= 0)\n throw new Error(\"invalid weight \".concat(e, \": must be positive\"));\n this._value += e, this._dispatchQueue();\n }, t.prototype.cancel = function() {\n var e = this;\n this._queue.forEach(function(r) {\n return r.reject(e._cancelError);\n }), this._queue = [];\n }, t.prototype._dispatchQueue = function() {\n for (this._drainUnlockWaiters(); this._queue.length > 0 && this._queue[0].weight <= this._value; )\n this._dispatchItem(this._queue.shift()), this._drainUnlockWaiters();\n }, t.prototype._dispatchItem = function(e) {\n var r = this._value;\n this._value -= e.weight, e.resolve([r, this._newReleaser(e.weight)]);\n }, t.prototype._newReleaser = function(e) {\n var r = this, n = !1;\n return function() {\n n || (n = !0, r.release(e));\n };\n }, t.prototype._drainUnlockWaiters = function() {\n if (this._queue.length === 0)\n for (var e = this._value; e > 0; e--) {\n var r = this._weightedWaiters[e - 1];\n !r || (r.forEach(function(s) {\n return s.resolve();\n }), this._weightedWaiters[e - 1] = []);\n }\n else\n for (var n = this._queue[0].priority, e = this._value; e > 0; e--) {\n var r = this._weightedWaiters[e - 1];\n if (r) {\n var o = r.findIndex(function(a) {\n return a.priority <= n;\n });\n (o === -1 ? r : r.splice(0, o)).forEach(function(a) {\n return a.resolve();\n });\n }\n }\n }, t.prototype._couldLockImmediately = function(e, r) {\n return (this._queue.length === 0 || this._queue[0].priority < r) && e <= this._value;\n }, t;\n}();\nfunction insertSorted(t, e) {\n var r = findIndexFromEnd(t, function(n) {\n return e.priority <= n.priority;\n });\n t.splice(r + 1, 0, e);\n}\nfunction findIndexFromEnd(t, e) {\n for (var r = t.length - 1; r >= 0; r--)\n if (e(t[r]))\n return r;\n return -1;\n}\nvar Mutex = function() {\n function t(e) {\n this._semaphore = new Semaphore(1, e);\n }\n return t.prototype.acquire = function() {\n return __awaiter(this, arguments, void 0, function(e) {\n var r, n;\n return e === void 0 && (e = 0), __generator(this, function(o) {\n switch (o.label) {\n case 0:\n return [4, this._semaphore.acquire(1, e)];\n case 1:\n return r = o.sent(), n = r[1], [2, n];\n }\n });\n });\n }, t.prototype.runExclusive = function(e, r) {\n return r === void 0 && (r = 0), this._semaphore.runExclusive(function() {\n return e();\n }, 1, r);\n }, t.prototype.isLocked = function() {\n return this._semaphore.isLocked();\n }, t.prototype.waitForUnlock = function(e) {\n return e === void 0 && (e = 0), this._semaphore.waitForUnlock(1, e);\n }, t.prototype.release = function() {\n this._semaphore.isLocked() && this._semaphore.release();\n }, t.prototype.cancel = function() {\n return this._semaphore.cancel();\n }, t;\n}();\nfunction isMetaMaskProvider(t) {\n return t !== null && typeof t == \"object\" && t.hasOwnProperty(\"isMetaMask\") && t.hasOwnProperty(\"request\");\n}\nfunction detectMetaMaskProvider(t, { timeout: e = 3e3 } = {}) {\n let r = !1;\n return new Promise((n) => {\n const o = (s) => {\n const { info: i, provider: a } = s.detail;\n (i.rdns === \"io.metamask\" || i.rdns === \"io.metamask.flask\") && isMetaMaskProvider(a) && (n(a), r = !0);\n };\n typeof t.addEventListener == \"function\" && t.addEventListener(\n \"eip6963:announceProvider\",\n o\n ), setTimeout(() => {\n r || n(null);\n }, e), typeof t.dispatchEvent == \"function\" && t.dispatchEvent(new Event(\"eip6963:requestProvider\"));\n });\n}\nasync function waitForMetaMaskProvider(t, e = {}) {\n const { timeout: r = 3e3, retries: n = 0 } = e;\n let o = null;\n try {\n o = await detectMetaMaskProvider(t, { timeout: r });\n } catch {\n }\n return o || (n === 0 ? null : (o = await waitForMetaMaskProvider({ timeout: r, retries: n - 1 }), o));\n}\nasync function detectMetamaskSupport(t) {\n return await waitForMetaMaskProvider(t, { retries: 3 });\n}\nvar Q, q, C, G, Y, J;\nclass MetaMaskVirtualWallet {\n constructor() {\n T(this, Q), T(this, C), T(this, Y), _(this, \"id\", \"metamask\"), _(this, \"name\", \"MetaMask\"), _(this, \"icon\", \"data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTIiIGhlaWdodD0iMTg5IiB2aWV3Qm94PSIwIDAgMjEyIDE4OSI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cG9seWdvbiBmaWxsPSIjQ0RCREIyIiBwb2ludHM9IjYwLjc1IDE3My4yNSA4OC4zMTMgMTgwLjU2MyA4OC4zMTMgMTcxIDkwLjU2MyAxNjguNzUgMTA2LjMxMyAxNjguNzUgMTA2LjMxMyAxODAgMTA2LjMxMyAxODcuODc1IDg5LjQzOCAxODcuODc1IDY4LjYyNSAxNzguODc1Ii8+PHBvbHlnb24gZmlsbD0iI0NEQkRCMiIgcG9pbnRzPSIxMDUuNzUgMTczLjI1IDEzMi43NSAxODAuNTYzIDEzMi43NSAxNzEgMTM1IDE2OC43NSAxNTAuNzUgMTY4Ljc1IDE1MC43NSAxODAgMTUwLjc1IDE4Ny44NzUgMTMzLjg3NSAxODcuODc1IDExMy4wNjMgMTc4Ljg3NSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjU2LjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzEgOTEuMTI1IDE2OC43NSAxMjAuMzc1IDE2OC43NSAxMjMuNzUgMTcxIDEyMS41IDE1Mi40MzggMTE3IDE0OS42MjUgOTQuNSAxNTAuMTg4Ii8+PHBvbHlnb24gZmlsbD0iI0Y4OUMzNSIgcG9pbnRzPSI3NS4zNzUgMjcgODguODc1IDU4LjUgOTUuMDYzIDE1MC4xODggMTE3IDE1MC4xODggMTIzLjc1IDU4LjUgMTM2LjEyNSAyNyIvPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MC41NjMgMTUyLjQzOCIvPjxwb2x5Z29uIGZpbGw9IiNFQThFM0EiIHBvaW50cz0iOTIuMjUgMTAyLjM3NSA5NS4wNjMgMTUwLjE4OCA4Ni42MjUgMTI1LjcxOSIvPjxwb2x5Z29uIGZpbGw9IiNEODdDMzAiIHBvaW50cz0iMzkuMzc1IDEzOC45MzggNjUuMjUgMTM4LjM3NSA2MC43NSAxNzMuMjUiLz48cG9seWdvbiBmaWxsPSIjRUI4RjM1IiBwb2ludHM9IjEyLjkzOCAxODguNDM4IDYwLjc1IDE3My4yNSAzOS4zNzUgMTM4LjkzOCAuNTYzIDE0MS43NSIvPjxwb2x5Z29uIGZpbGw9IiNFODgyMUUiIHBvaW50cz0iODguODc1IDU4LjUgNjQuNjg4IDc4Ljc1IDQ2LjEyNSAxMDEuMjUgOTIuMjUgMTAyLjkzOCIvPjxwb2x5Z29uIGZpbGw9IiNERkNFQzMiIHBvaW50cz0iNjAuNzUgMTczLjI1IDkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzAuNDM4IDg4LjMxMyAxODAuNTYzIDY4LjA2MyAxNzYuNjI1Ii8+PHBvbHlnb24gZmlsbD0iI0RGQ0VDMyIgcG9pbnRzPSIxMjEuNSAxNzMuMjUgMTUwLjc1IDE1Mi40MzggMTQ4LjUgMTcwLjQzOCAxNDguNSAxODAuNTYzIDEyOC4yNSAxNzYuNjI1IiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAyNzIuMjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PGcgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjExLjUgMCkiPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MCAxNTMiLz48cG9seWdvbiBmaWxsPSIjRUE4RTNBIiBwb2ludHM9IjkyLjI1IDEwMi4zNzUgOTUuMDYzIDE1MC4xODggODYuNjI1IDEyNS43MTkiLz48cG9seWdvbiBmaWxsPSIjRDg3QzMwIiBwb2ludHM9IjM5LjM3NSAxMzguOTM4IDY1LjI1IDEzOC4zNzUgNjAuNzUgMTczLjI1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSIxMi45MzggMTg4LjQzOCA2MC43NSAxNzMuMjUgMzkuMzc1IDEzOC45MzggLjU2MyAxNDEuNzUiLz48cG9seWdvbiBmaWxsPSIjRTg4MjFFIiBwb2ludHM9Ijg4Ljg3NSA1OC41IDY0LjY4OCA3OC43NSA0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi45MzgiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PC9nPjwvZz48L3N2Zz4=\"), _(this, \"windowKey\", \"starknet_metamask\"), _(this, \"provider\", null), _(this, \"swo\", null), _(this, \"lock\"), _(this, \"version\", \"v2.0.0\"), this.lock = new Mutex();\n }\n async loadWallet(e) {\n return await E(this, C, G).call(this, e), this;\n }\n async hasSupport(e) {\n return this.provider = await detectMetamaskSupport(e), this.provider !== null;\n }\n async request(e) {\n return E(this, C, G).call(this).then((r) => r.request(\n e\n ));\n }\n on(e, r) {\n E(this, C, G).call(this).then(\n (n) => n.on(e, r)\n );\n }\n off(e, r) {\n E(this, C, G).call(this).then(\n (n) => n.off(e, r)\n );\n }\n}\nQ = /* @__PURE__ */ new WeakSet(), q = async function(t) {\n this.provider || (this.provider = await detectMetamaskSupport(t)), await init({\n name: \"MetaMaskStarknetSnapWallet\",\n remotes: [\n {\n name: \"MetaMaskStarknetSnapWallet\",\n alias: \"MetaMaskStarknetSnapWallet\",\n entry: `https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js?ts=${Date.now()}`\n }\n ]\n });\n const e = await loadRemote(\"MetaMaskStarknetSnapWallet/index\");\n if (!e)\n throw new Error(\"Failed to load MetaMask Wallet\");\n return new e.MetaMaskSnapWallet(\n this.provider,\n \"*\"\n );\n}, C = /* @__PURE__ */ new WeakSet(), G = async function(t = window) {\n return this.lock.runExclusive(async () => (this.swo || (this.swo = await E(this, Q, q).call(this, t), E(this, Y, J).call(this)), this.swo));\n}, Y = /* @__PURE__ */ new WeakSet(), J = function() {\n this.swo && (this.version = this.swo.version, this.name = this.swo.name, this.id = this.swo.id, this.icon = this.swo.icon);\n};\nconst metaMaskVirtualWallet = new MetaMaskVirtualWallet();\nvar X, Z;\nconst wallets = [\n {\n id: \"argentX\",\n name: \"Argent X\",\n icon: \"data:image/svg+xml;base64,Cjxzdmcgd2lkdGg9IjQwIiBoZWlnaHQ9IjM2IiB2aWV3Qm94PSIwIDAgNDAgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yNC43NTgyIC0zLjk3MzY0ZS0wN0gxNC42MjM4QzE0LjI4NTEgLTMuOTczNjRlLTA3IDE0LjAxMzggMC4yODExNzggMTQuMDA2NCAwLjYzMDY4M0MxMy44MDE3IDEwLjQ1NDkgOC44MjIzNCAxOS43NzkyIDAuMjUxODkzIDI2LjM4MzdDLTAuMDIwMjA0NiAyNi41OTMzIC0wLjA4MjE5NDYgMjYuOTg3MiAwLjExNjczNCAyNy4yNzA5TDYuMDQ2MjMgMzUuNzM0QzYuMjQ3OTYgMzYuMDIyIDYuNjQwOTkgMzYuMDg3IDYuOTE3NjYgMzUuODc1NEMxMi4yNzY1IDMxLjc3MjggMTYuNTg2OSAyNi44MjM2IDE5LjY5MSAyMS4zMzhDMjIuNzk1MSAyNi44MjM2IDI3LjEwNTcgMzEuNzcyOCAzMi40NjQ2IDM1Ljg3NTRDMzIuNzQxIDM2LjA4NyAzMy4xMzQxIDM2LjAyMiAzMy4zMzYxIDM1LjczNEwzOS4yNjU2IDI3LjI3MDlDMzkuNDY0MiAyNi45ODcyIDM5LjQwMjIgMjYuNTkzMyAzOS4xMzA0IDI2LjM4MzdDMzAuNTU5NyAxOS43NzkyIDI1LjU4MDQgMTAuNDU0OSAyNS4zNzU5IDAuNjMwNjgzQzI1LjM2ODUgMC4yODExNzggMjUuMDk2OSAtMy45NzM2NGUtMDcgMjQuNzU4MiAtMy45NzM2NGUtMDdaIiBmaWxsPSIjRkY4NzVCIi8+Cjwvc3ZnPgo=\",\n downloads: {\n chrome: \"https://chrome.google.com/webstore/detail/argent-x-starknet-wallet/dlcobpjiigpikoobohmabehhmhfoodbb\",\n firefox: \"https://addons.mozilla.org/en-US/firefox/addon/argent-x\",\n edge: \"https://microsoftedge.microsoft.com/addons/detail/argent-x/ajcicjlkibolbeaaagejfhnofogocgcj\"\n }\n },\n {\n id: \"braavos\",\n name: \"Braavos\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aAogICAgICAgIGQ9Ik02Mi43MDUgMTMuOTExNkM2Mi44MzU5IDE0LjEzMzMgNjIuNjYyMSAxNC40MDcgNjIuNDAzOSAxNC40MDdDNTcuMTgwNyAxNC40MDcgNTIuOTM0OCAxOC41NDI3IDUyLjgzNTEgMjMuNjgxN0M1MS4wNDY1IDIzLjM0NzcgNDkuMTkzMyAyMy4zMjI2IDQ3LjM2MjYgMjMuNjMxMUM0Ny4yMzYxIDE4LjUxNTYgNDMuMDAwOSAxNC40MDcgMzcuNzk0OCAxNC40MDdDMzcuNTM2NSAxNC40MDcgMzcuMzYyNSAxNC4xMzMxIDM3LjQ5MzUgMTMuOTExMkM0MC4wMjE3IDkuNjI4MDkgNDQuNzIwNCA2Ljc1IDUwLjA5OTEgNi43NUM1NS40NzgxIDYuNzUgNjAuMTc2OSA5LjYyODI2IDYyLjcwNSAxMy45MTE2WiIKICAgICAgICBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzcyXzQwMjU5KSIgLz4KICAgIDxwYXRoCiAgICAgICAgZD0iTTc4Ljc2MDYgNDUuODcxOEM4MC4yNzI1IDQ2LjMyOTcgODEuNzAyNSA0NS4wMDU1IDgxLjE3MTQgNDMuNTIyMkM3Ni40MTM3IDMwLjIzMzQgNjEuMzkxMSAyNC44MDM5IDUwLjAyNzcgMjQuODAzOUMzOC42NDQyIDI0LjgwMzkgMjMuMjg2OCAzMC40MDcgMTguODc1NCA0My41OTEyQzE4LjM4MjQgNDUuMDY0NSAxOS44MDgzIDQ2LjM0NDYgMjEuMjk3OCA0NS44ODgxTDQ4Ljg3MiAzNy40MzgxQzQ5LjUzMzEgMzcuMjM1NSA1MC4yMzk5IDM3LjIzNDQgNTAuOTAxNyAzNy40MzQ4TDc4Ljc2MDYgNDUuODcxOFoiCiAgICAgICAgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM3Ml80MDI1OSkiIC8+CiAgICA8cGF0aAogICAgICAgIGQ9Ik0xOC44MTMyIDQ4LjE3MDdMNDguODkzNSAzOS4wNDcyQzQ5LjU1MDYgMzguODQ3OCA1MC4yNTI0IDM4Ljg0NzMgNTAuOTA5OCAzOS4wNDU2TDgxLjE3ODEgNDguMTc1MkM4My42OTEyIDQ4LjkzMzIgODUuNDExIDUxLjI0ODMgODUuNDExIDUzLjg3MzVWODEuMjIzM0M4NS4yOTQ0IDg3Ljg5OTEgNzkuMjk3NyA5My4yNSA3Mi42MjQ1IDkzLjI1SDYxLjU0MDZDNjAuNDQ0OSA5My4yNSA1OS41NTc3IDkyLjM2MzcgNTkuNTU3NyA5MS4yNjhWODEuNjc4OUM1OS41NTc3IDc3LjkwMzEgNjEuNzkyMSA3NC40ODU1IDY1LjI0OTggNzIuOTcyOUM2OS44ODQ5IDcwLjk0NTQgNzUuMzY4MSA2OC4yMDI4IDc2LjM5OTQgNjIuNjk5MkM3Ni43MzIzIDYwLjkyMjkgNzUuNTc0MSA1OS4yMDk0IDczLjgwMjQgNTguODU3M0M2OS4zMjI2IDU3Ljk2NjcgNjQuMzU2MiA1OC4zMTA3IDYwLjE1NjQgNjAuMTg5M0M1NS4zODg3IDYyLjMyMTkgNTQuMTQxNSA2NS44Njk0IDUzLjY3OTcgNzAuNjMzN0w1My4xMjAxIDc1Ljc2NjJDNTIuOTQ5MSA3Ny4zMzQ5IDUxLjQ3ODUgNzguNTM2NiA0OS45MDE0IDc4LjUzNjZDNDguMjY5OSA3OC41MzY2IDQ3LjA0NjUgNzcuMjk0IDQ2Ljg2OTYgNzUuNjcxMkw0Ni4zMjA0IDcwLjYzMzdDNDUuOTI0OSA2Ni41NTI5IDQ1LjIwNzkgNjIuNTg4NyA0MC45ODk1IDYwLjcwMThDMzYuMTc3NiA1OC41NDk0IDMxLjM0MTkgNTcuODM0NyAyNi4xOTc2IDU4Ljg1NzNDMjQuNDI2IDU5LjIwOTQgMjMuMjY3OCA2MC45MjI5IDIzLjYwMDcgNjIuNjk5MkMyNC42NDEgNjguMjUwNyAzMC4wODEyIDcwLjkzMDUgMzQuNzUwMyA3Mi45NzI5QzM4LjIwOCA3NC40ODU1IDQwLjQ0MjQgNzcuOTAzMSA0MC40NDI0IDgxLjY3ODlWOTEuMjY2M0M0MC40NDI0IDkyLjM2MiAzOS41NTU1IDkzLjI1IDM4LjQ1OTkgOTMuMjVIMjcuMzc1NkMyMC43MDI0IDkzLjI1IDE0LjcwNTcgODcuODk5MSAxNC41ODkxIDgxLjIyMzNWNTMuODY2M0MxNC41ODkxIDUxLjI0NDYgMTYuMzA0NSA0OC45MzE2IDE4LjgxMzIgNDguMTcwN1oiCiAgICAgICAgZmlsbD0idXJsKCNwYWludDJfbGluZWFyXzM3Ml80MDI1OSkiIC8+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMzcyXzQwMjU5IiB4MT0iNDkuMzA1NyIgeTE9IjIuMDc5IiB4Mj0iODAuMzYyNyIgeTI9IjkzLjY1OTciCiAgICAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0Y1RDQ1RSIgLz4KICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY5NjAwIiAvPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDFfbGluZWFyXzM3Ml80MDI1OSIgeDE9IjQ5LjMwNTciIHkxPSIyLjA3OSIgeDI9IjgwLjM2MjciIHkyPSI5My42NTk3IgogICAgICAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGNUQ0NUUiIC8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTYwMCIgLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQyX2xpbmVhcl8zNzJfNDAyNTkiIHgxPSI0OS4zMDU3IiB5MT0iMi4wNzkiIHgyPSI4MC4zNjI3IiB5Mj0iOTMuNjU5NyIKICAgICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRjVENDVFIiAvPgogICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjk2MDAiIC8+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KPC9zdmc+\",\n downloads: {\n chrome: \"https://chrome.google.com/webstore/detail/braavos-wallet/jnlgamecbpmbajjfhmmmlhejkemejdma\",\n firefox: \"https://addons.mozilla.org/en-US/firefox/addon/braavos-wallet\",\n edge: \"https://microsoftedge.microsoft.com/addons/detail/braavos-wallet/hkkpjehhcnhgefhbdcgfkeegglpjchdc\",\n ios: `https://link.braavos.app/dapp/${(X = ssrSafeWindow$1 == null ? void 0 : ssrSafeWindow$1.location) == null ? void 0 : X.host}`,\n android: `https://link.braavos.app/dapp/${(Z = ssrSafeWindow$1 == null ? void 0 : ssrSafeWindow$1.location) == null ? void 0 : Z.host}`\n }\n },\n {\n id: metaMaskVirtualWallet.id,\n name: metaMaskVirtualWallet.name,\n icon: metaMaskVirtualWallet.icon,\n downloads: {\n chrome: \"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn\",\n firefox: \"https://addons.mozilla.org/en-US/firefox/addon/ether-metamask/\",\n edge: \"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US\"\n }\n },\n {\n id: \"okxwallet\",\n name: \"OKX Wallet\",\n icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJDSURBVHgB7Zq9jtpAEMfHlhEgQLiioXEkoAGECwoKxMcTRHmC5E3IoyRPkPAEkI7unJYmTgEFTYwA8a3NTKScLnCHN6c9r1e3P2llWQy7M/s1Gv1twCP0ej37dDq9x+Zut1t3t9vZjDEHIiSRSPg4ZpDL5fxkMvn1cDh8m0wmfugfO53OoFQq/crn8wxfY9EymQyrVCqMfHvScZx1p9ls3pFxXBy/bKlUipGPrVbLuQqAfsCliq3zl0H84zwtjQrOw4Mt1W63P5LvBm2d+Xz+YzqdgkqUy+WgWCy+Mc/nc282m4FqLBYL+3g8fjDxenq72WxANZbLJeA13zDX67UDioL5ybXwafMYu64Ltn3bdDweQ5R97fd7GyhBQMipx4POeEDHIu2LfDdBIGGz+hJ9CQ1ABjoA2egAZPM6AgiCAEQhsi/C4jHyPA/6/f5NG3Ks2+3CYDC4aTccDrn6ojG54MnEvG00GoVmWLIRNZ7wTCwDHYBsdACy0QHIhiuRETxlICWpMMhGZHmqS8qH6JLyGegAZKMDkI0uKf8X4SWlaZo+Pp1bRrwlJU8ZKLIvUjKh0WiQ3sRUbNVq9c5Ebew7KEo2m/1p4jJ4qAmDaqDQBzj5XyiAT4VCQezJigAU+IDU+z8vJFnGWeC+bKQV/5VZ71FV6L7PA3gg3tXrdQ+DgLhC+75Wq3no69P3MC0NFQpx2lL04Ql9gHK1bRDjsSBIvScBnDTk1WrlGIZBorIDEYJj+rhdgnQ67VmWRe0zlplXl81vcyEt0rSoYDUAAAAASUVORK5CYII=\",\n downloads: {\n chrome: \"https://chrome.google.com/webstore/detail/mcohilncbfahbmgdjkbpemcciiolgcge\",\n firefox: \"https://addons.mozilla.org/en-US/firefox/addon/okexwallet\",\n edge: \"https://microsoftedge.microsoft.com/addons/detail/%E6%AC%A7%E6%98%93-web3-%E9%92%B1%E5%8C%85/pbpjkcldjiffchgbbndmhojiacbgflha\",\n safari: \"https://apps.apple.com/us/app/okx-wallet/id6463797825\"\n }\n },\n {\n id: \"keplr\",\n name: \"Keplr\",\n icon: \"data:image/png;base64,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\",\n downloads: {\n chrome: \"https://chrome.google.com/webstore/detail/keplr/dmkamcknogkgcdfhhbddcghachkejeap\",\n firefox: \"https://addons.mozilla.org/en-US/firefox/addon/keplr\",\n edge: \"https://microsoftedge.microsoft.com/addons/detail/keplr/ocodgmmffbkkeecmadcijjhkmeohinei\"\n }\n },\n {\n id: \"fordefi\",\n name: \"Fordefi\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzNDk0XzY2MjU0KSI+CjxwYXRoIGQ9Ik0xMC44NzY5IDE1LjYzNzhIMS41VjE4LjM5OUMxLjUgMTkuODAxMyAyLjYzNDQ3IDIwLjkzOCA0LjAzMzkyIDIwLjkzOEg4LjI0OTkyTDEwLjg3NjkgMTUuNjM3OFoiIGZpbGw9IiM3OTk0RkYiLz4KPHBhdGggZD0iTTEuNSA5Ljc3NTUxSDE5LjA1MTZMMTcuMDEzOSAxMy44NzExSDEuNVY5Ljc3NTUxWiIgZmlsbD0iIzQ4NkRGRiIvPgo8cGF0aCBkPSJNNy42NTk5NiAzSDEuNTI0NDFWOC4wMDcwNEgyMi40NjEyVjNIMTYuMzI1NlY2LjczOTQ0SDE1LjA2MDZWM0g4LjkyNTAyVjYuNzM5NDRINy42NTk5NlYzWiIgZmlsbD0iIzVDRDFGQSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzNDk0XzY2MjU0Ij4KPHJlY3Qgd2lkdGg9IjIxIiBoZWlnaHQ9IjE4IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS41IDMpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\",\n downloads: {\n chrome: \"https://chrome.google.com/webstore/detail/fordefi/hcmehenccjdmfbojapcbcofkgdpbnlle\"\n }\n }\n];\nvar z, j, P, V, ee, k, F;\nclass LocalStorageWrapper {\n constructor(e) {\n T(this, V), T(this, k), T(this, z, !1), T(this, j, void 0), T(this, P, void 0), _(this, \"value\"), B(this, P, e), E(this, k, F).call(this);\n }\n set(e) {\n return !N(this, z) && !E(this, k, F).call(this) ? !1 : (this.delete(), this.value = e, e && (B(this, j, `${N(this, P)}-${generateUID()}`), localStorage.setItem(N(this, j), e)), !0);\n }\n get() {\n return E(this, V, ee).call(this), this.value;\n }\n delete() {\n return !N(this, z) && !E(this, k, F).call(this) ? !1 : (this.value = null, N(this, j) && localStorage.removeItem(N(this, j)), !0);\n }\n}\nz = /* @__PURE__ */ new WeakMap(), j = /* @__PURE__ */ new WeakMap(), P = /* @__PURE__ */ new WeakMap(), V = /* @__PURE__ */ new WeakSet(), ee = function() {\n this.value && this.set(this.value);\n}, k = /* @__PURE__ */ new WeakSet(), F = function() {\n try {\n !N(this, z) && typeof window < \"u\" && (B(this, j, Object.keys(localStorage).find(\n (t) => t.startsWith(N(this, P))\n )), B(this, z, !0), N(this, j) && this.set(localStorage.getItem(N(this, j))));\n } catch (t) {\n console.warn(t);\n }\n return N(this, z);\n};\nconst Permission = {\n ACCOUNTS: \"accounts\"\n};\nfunction filterBy(t, e) {\n var r, n;\n if ((r = e == null ? void 0 : e.include) != null && r.length) {\n const o = new Set(e.include);\n return t.filter((s) => o.has(s.id));\n }\n if ((n = e == null ? void 0 : e.exclude) != null && n.length) {\n const o = new Set(e.exclude);\n return t.filter((s) => !o.has(s.id));\n }\n return t;\n}\nconst filterByAuthorized = async (t) => {\n const e = await Promise.all(\n t.map(async (r) => {\n try {\n return (await r.request({\n type: \"wallet_getPermissions\"\n })).includes(Permission.ACCOUNTS);\n } catch {\n return !1;\n }\n })\n );\n return t.filter((r, n) => e[n]);\n}, virtualWalletKeys = ensureKeysArray({\n id: !0,\n name: !0,\n icon: !0,\n windowKey: !0,\n loadWallet: !0,\n hasSupport: !0\n}), fullWalletKeys = ensureKeysArray({\n id: !0,\n name: !0,\n version: !0,\n icon: !0,\n request: !0,\n on: !0,\n off: !0\n});\nfunction createWalletGuard(t) {\n return function(e) {\n return e !== null && typeof e == \"object\" && t.every((r) => r in e);\n };\n}\nconst isFullWallet = createWalletGuard(fullWalletKeys), isVirtualWallet = createWalletGuard(virtualWalletKeys);\nfunction isWalletObject(t) {\n try {\n return isFullWallet(t) || isVirtualWallet(t);\n } catch {\n }\n return !1;\n}\nfunction scanObjectForWallets(t, e) {\n return Object.values(\n Object.getOwnPropertyNames(t).reduce((r, n) => {\n if (n.startsWith(\"starknet\")) {\n const o = t[n];\n e(o) && !r[o.id] && (r[o.id] = o);\n }\n return r;\n }, {})\n );\n}\nconst sortBy = (t, e) => {\n if (e && Array.isArray(e)) {\n t.sort((n, o) => e.indexOf(n.id) - e.indexOf(o.id));\n const r = t.length - e.length;\n return [\n ...t.slice(r),\n ...shuffle(t.slice(0, r))\n ];\n } else\n return shuffle(t);\n}, virtualWallets = [metaMaskVirtualWallet];\nfunction initiateVirtualWallets(t) {\n virtualWallets.forEach(async (e) => {\n e.windowKey in t || await e.hasSupport(t) && (t[e.windowKey] = e);\n });\n}\nconst virtualWalletsMap = {};\nasync function resolveVirtualWallet(t, e) {\n let r = virtualWalletsMap[e.id];\n return r || (r = await e.loadWallet(t), virtualWalletsMap[e.id] = r), r;\n}\nconst defaultOptions = {\n windowObject: ssrSafeWindow$1 != null ? ssrSafeWindow$1 : {},\n isWalletObject,\n storageFactoryImplementation: (t) => new LocalStorageWrapper(t)\n};\nfunction getStarknet(t = {}) {\n const { storageFactoryImplementation: e, windowObject: r, isWalletObject: n } = {\n ...defaultOptions,\n ...t\n }, o = e(\"gsw-last\");\n return initiateVirtualWallets(r), {\n getAvailableWallets: async (s = {}) => {\n const i = scanObjectForWallets(\n r,\n n\n );\n return pipe$1(\n (a) => filterBy(a, s),\n (a) => sortBy(a, s.sort)\n )(i);\n },\n getAuthorizedWallets: async (s = {}) => {\n const i = scanObjectForWallets(\n r,\n n\n );\n return pipe$1(\n (a) => filterByAuthorized(a),\n (a) => filterBy(a, s),\n (a) => sortBy(a, s.sort)\n )(i);\n },\n getDiscoveryWallets: async (s = {}) => pipe$1(\n (i) => filterBy(i, s),\n (i) => sortBy(i, s.sort)\n )(wallets),\n getLastConnectedWallet: async () => {\n const s = o.get(), i = scanObjectForWallets(r, n).find(\n (c) => c.id === s\n ), [a] = await filterByAuthorized(\n i ? [i] : []\n );\n return a || (o.delete(), null);\n },\n discoverVirtualWallets: async (s = []) => {\n const i = new Set(s), a = i.size > 0 ? virtualWallets.filter(\n (c) => i.has(c.name) || i.has(c.id)\n ) : virtualWallets;\n await Promise.all(\n a.map(async (c) => {\n await c.hasSupport(r) && (r[c.windowKey] = c);\n })\n );\n },\n enable: async (s, i) => {\n let a;\n if (isVirtualWallet(s))\n a = await resolveVirtualWallet(r, s);\n else if (isFullWallet(s))\n a = s;\n else\n throw new Error(\"Invalid wallet object\");\n await a.request({\n type: \"wallet_requestAccounts\",\n params: {\n silent_mode: i == null ? void 0 : i.silent_mode\n }\n });\n const c = await a.request({\n type: \"wallet_getPermissions\"\n });\n if (!(c != null && c.includes(Permission.ACCOUNTS)))\n throw new Error(\"Failed to connect to wallet\");\n return o.set(a.id), a;\n },\n disconnect: async ({ clearLastWallet: s } = {}) => {\n s && o.delete();\n }\n };\n}\nconst main = getStarknet(), BROWSER_ALIASES_MAP = {\n \"Amazon Silk\": \"amazon_silk\",\n \"Android Browser\": \"android\",\n Bada: \"bada\",\n BlackBerry: \"blackberry\",\n Chrome: \"chrome\",\n Chromium: \"chromium\",\n Electron: \"electron\",\n Epiphany: \"epiphany\",\n Firefox: \"firefox\",\n Focus: \"focus\",\n Generic: \"generic\",\n \"Google Search\": \"google_search\",\n Googlebot: \"googlebot\",\n \"Internet Explorer\": \"ie\",\n \"K-Meleon\": \"k_meleon\",\n Maxthon: \"maxthon\",\n \"Microsoft Edge\": \"edge\",\n \"MZ Browser\": \"mz\",\n \"NAVER Whale Browser\": \"naver\",\n Opera: \"opera\",\n \"Opera Coast\": \"opera_coast\",\n PhantomJS: \"phantomjs\",\n Puffin: \"puffin\",\n QupZilla: \"qupzilla\",\n QQ: \"qq\",\n QQLite: \"qqlite\",\n Safari: \"safari\",\n Sailfish: \"sailfish\",\n \"Samsung Internet for Android\": \"samsung_internet\",\n SeaMonkey: \"seamonkey\",\n Sleipnir: \"sleipnir\",\n Swing: \"swing\",\n Tizen: \"tizen\",\n \"UC Browser\": \"uc\",\n Vivaldi: \"vivaldi\",\n \"WebOS Browser\": \"webos\",\n WeChat: \"wechat\",\n \"Yandex Browser\": \"yandex\",\n Roku: \"roku\"\n}, BROWSER_MAP = {\n amazon_silk: \"Amazon Silk\",\n android: \"Android Browser\",\n bada: \"Bada\",\n blackberry: \"BlackBerry\",\n chrome: \"Chrome\",\n chromium: \"Chromium\",\n electron: \"Electron\",\n epiphany: \"Epiphany\",\n firefox: \"Firefox\",\n focus: \"Focus\",\n generic: \"Generic\",\n googlebot: \"Googlebot\",\n google_search: \"Google Search\",\n ie: \"Internet Explorer\",\n k_meleon: \"K-Meleon\",\n maxthon: \"Maxthon\",\n edge: \"Microsoft Edge\",\n mz: \"MZ Browser\",\n naver: \"NAVER Whale Browser\",\n opera: \"Opera\",\n opera_coast: \"Opera Coast\",\n phantomjs: \"PhantomJS\",\n puffin: \"Puffin\",\n qupzilla: \"QupZilla\",\n qq: \"QQ Browser\",\n qqlite: \"QQ Browser Lite\",\n safari: \"Safari\",\n sailfish: \"Sailfish\",\n samsung_internet: \"Samsung Internet for Android\",\n seamonkey: \"SeaMonkey\",\n sleipnir: \"Sleipnir\",\n swing: \"Swing\",\n tizen: \"Tizen\",\n uc: \"UC Browser\",\n vivaldi: \"Vivaldi\",\n webos: \"WebOS Browser\",\n wechat: \"WeChat\",\n yandex: \"Yandex Browser\"\n}, PLATFORMS_MAP = {\n tablet: \"tablet\",\n mobile: \"mobile\",\n desktop: \"desktop\",\n tv: \"tv\"\n}, OS_MAP = {\n WindowsPhone: \"Windows Phone\",\n Windows: \"Windows\",\n MacOS: \"macOS\",\n iOS: \"iOS\",\n Android: \"Android\",\n WebOS: \"WebOS\",\n BlackBerry: \"BlackBerry\",\n Bada: \"Bada\",\n Tizen: \"Tizen\",\n Linux: \"Linux\",\n ChromeOS: \"Chrome OS\",\n PlayStation4: \"PlayStation 4\",\n Roku: \"Roku\"\n}, ENGINE_MAP = {\n EdgeHTML: \"EdgeHTML\",\n Blink: \"Blink\",\n Trident: \"Trident\",\n Presto: \"Presto\",\n Gecko: \"Gecko\",\n WebKit: \"WebKit\"\n};\nclass Utils {\n static getFirstMatch(e, r) {\n const n = r.match(e);\n return n && n.length > 0 && n[1] || \"\";\n }\n static getSecondMatch(e, r) {\n const n = r.match(e);\n return n && n.length > 1 && n[2] || \"\";\n }\n static matchAndReturnConst(e, r, n) {\n if (e.test(r))\n return n;\n }\n static getWindowsVersionName(e) {\n switch (e) {\n case \"NT\":\n return \"NT\";\n case \"XP\":\n return \"XP\";\n case \"NT 5.0\":\n return \"2000\";\n case \"NT 5.1\":\n return \"XP\";\n case \"NT 5.2\":\n return \"2003\";\n case \"NT 6.0\":\n return \"Vista\";\n case \"NT 6.1\":\n return \"7\";\n case \"NT 6.2\":\n return \"8\";\n case \"NT 6.3\":\n return \"8.1\";\n case \"NT 10.0\":\n return \"10\";\n default:\n return;\n }\n }\n static getMacOSVersionName(e) {\n const r = e.split(\".\").splice(0, 2).map((n) => parseInt(n, 10) || 0);\n if (r.push(0), r[0] === 10)\n switch (r[1]) {\n case 5:\n return \"Leopard\";\n case 6:\n return \"Snow Leopard\";\n case 7:\n return \"Lion\";\n case 8:\n return \"Mountain Lion\";\n case 9:\n return \"Mavericks\";\n case 10:\n return \"Yosemite\";\n case 11:\n return \"El Capitan\";\n case 12:\n return \"Sierra\";\n case 13:\n return \"High Sierra\";\n case 14:\n return \"Mojave\";\n case 15:\n return \"Catalina\";\n default:\n return;\n }\n }\n static getAndroidVersionName(e) {\n const r = e.split(\".\").splice(0, 2).map((n) => parseInt(n, 10) || 0);\n if (r.push(0), !(r[0] === 1 && r[1] < 5)) {\n if (r[0] === 1 && r[1] < 6)\n return \"Cupcake\";\n if (r[0] === 1 && r[1] >= 6)\n return \"Donut\";\n if (r[0] === 2 && r[1] < 2)\n return \"Eclair\";\n if (r[0] === 2 && r[1] === 2)\n return \"Froyo\";\n if (r[0] === 2 && r[1] > 2)\n return \"Gingerbread\";\n if (r[0] === 3)\n return \"Honeycomb\";\n if (r[0] === 4 && r[1] < 1)\n return \"Ice Cream Sandwich\";\n if (r[0] === 4 && r[1] < 4)\n return \"Jelly Bean\";\n if (r[0] === 4 && r[1] >= 4)\n return \"KitKat\";\n if (r[0] === 5)\n return \"Lollipop\";\n if (r[0] === 6)\n return \"Marshmallow\";\n if (r[0] === 7)\n return \"Nougat\";\n if (r[0] === 8)\n return \"Oreo\";\n if (r[0] === 9)\n return \"Pie\";\n }\n }\n static getVersionPrecision(e) {\n return e.split(\".\").length;\n }\n static compareVersions(e, r, n = !1) {\n const o = Utils.getVersionPrecision(e), s = Utils.getVersionPrecision(r);\n let i = Math.max(o, s), a = 0;\n const c = Utils.map([e, r], (l) => {\n const u = i - Utils.getVersionPrecision(l), d = l + new Array(u + 1).join(\".0\");\n return Utils.map(d.split(\".\"), (m) => new Array(20 - m.length).join(\"0\") + m).reverse();\n });\n for (n && (a = i - Math.min(o, s)), i -= 1; i >= a; ) {\n if (c[0][i] > c[1][i])\n return 1;\n if (c[0][i] === c[1][i]) {\n if (i === a)\n return 0;\n i -= 1;\n } else if (c[0][i] < c[1][i])\n return -1;\n }\n }\n static map(e, r) {\n const n = [];\n let o;\n if (Array.prototype.map)\n return Array.prototype.map.call(e, r);\n for (o = 0; o < e.length; o += 1)\n n.push(r(e[o]));\n return n;\n }\n static find(e, r) {\n let n, o;\n if (Array.prototype.find)\n return Array.prototype.find.call(e, r);\n for (n = 0, o = e.length; n < o; n += 1) {\n const s = e[n];\n if (r(s, n))\n return s;\n }\n }\n static assign(e, ...r) {\n const n = e;\n let o, s;\n if (Object.assign)\n return Object.assign(e, ...r);\n for (o = 0, s = r.length; o < s; o += 1) {\n const i = r[o];\n typeof i == \"object\" && i !== null && Object.keys(i).forEach((c) => {\n n[c] = i[c];\n });\n }\n return e;\n }\n static getBrowserAlias(e) {\n return BROWSER_ALIASES_MAP[e];\n }\n static getBrowserTypeByAlias(e) {\n return BROWSER_MAP[e] || \"\";\n }\n}\nconst commonVersionIdentifier = /version\\/(\\d+(\\.?_?\\d+)+)/i, browsersList = [\n {\n test: [/googlebot/i],\n describe(t) {\n const e = {\n name: \"Googlebot\"\n }, r = Utils.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/opera/i],\n describe(t) {\n const e = {\n name: \"Opera\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/opr\\/|opios/i],\n describe(t) {\n const e = {\n name: \"Opera\"\n }, r = Utils.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/SamsungBrowser/i],\n describe(t) {\n const e = {\n name: \"Samsung Internet for Android\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/Whale/i],\n describe(t) {\n const e = {\n name: \"NAVER Whale Browser\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/MZBrowser/i],\n describe(t) {\n const e = {\n name: \"MZ Browser\"\n }, r = Utils.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/focus/i],\n describe(t) {\n const e = {\n name: \"Focus\"\n }, r = Utils.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/swing/i],\n describe(t) {\n const e = {\n name: \"Swing\"\n }, r = Utils.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/coast/i],\n describe(t) {\n const e = {\n name: \"Opera Coast\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/opt\\/\\d+(?:.?_?\\d+)+/i],\n describe(t) {\n const e = {\n name: \"Opera Touch\"\n }, r = Utils.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/yabrowser/i],\n describe(t) {\n const e = {\n name: \"Yandex Browser\"\n }, r = Utils.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/ucbrowser/i],\n describe(t) {\n const e = {\n name: \"UC Browser\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/Maxthon|mxios/i],\n describe(t) {\n const e = {\n name: \"Maxthon\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/epiphany/i],\n describe(t) {\n const e = {\n name: \"Epiphany\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/puffin/i],\n describe(t) {\n const e = {\n name: \"Puffin\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/sleipnir/i],\n describe(t) {\n const e = {\n name: \"Sleipnir\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/k-meleon/i],\n describe(t) {\n const e = {\n name: \"K-Meleon\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/micromessenger/i],\n describe(t) {\n const e = {\n name: \"WeChat\"\n }, r = Utils.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/qqbrowser/i],\n describe(t) {\n const e = {\n name: /qqbrowserlite/i.test(t) ? \"QQ Browser Lite\" : \"QQ Browser\"\n }, r = Utils.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/msie|trident/i],\n describe(t) {\n const e = {\n name: \"Internet Explorer\"\n }, r = Utils.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/\\sedg\\//i],\n describe(t) {\n const e = {\n name: \"Microsoft Edge\"\n }, r = Utils.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/edg([ea]|ios)/i],\n describe(t) {\n const e = {\n name: \"Microsoft Edge\"\n }, r = Utils.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/vivaldi/i],\n describe(t) {\n const e = {\n name: \"Vivaldi\"\n }, r = Utils.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/seamonkey/i],\n describe(t) {\n const e = {\n name: \"SeaMonkey\"\n }, r = Utils.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/sailfish/i],\n describe(t) {\n const e = {\n name: \"Sailfish\"\n }, r = Utils.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/silk/i],\n describe(t) {\n const e = {\n name: \"Amazon Silk\"\n }, r = Utils.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/phantom/i],\n describe(t) {\n const e = {\n name: \"PhantomJS\"\n }, r = Utils.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/slimerjs/i],\n describe(t) {\n const e = {\n name: \"SlimerJS\"\n }, r = Utils.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/blackberry|\\bbb\\d+/i, /rim\\stablet/i],\n describe(t) {\n const e = {\n name: \"BlackBerry\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/(web|hpw)[o0]s/i],\n describe(t) {\n const e = {\n name: \"WebOS Browser\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t) || Utils.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/bada/i],\n describe(t) {\n const e = {\n name: \"Bada\"\n }, r = Utils.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/tizen/i],\n describe(t) {\n const e = {\n name: \"Tizen\"\n }, r = Utils.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/qupzilla/i],\n describe(t) {\n const e = {\n name: \"QupZilla\"\n }, r = Utils.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/firefox|iceweasel|fxios/i],\n describe(t) {\n const e = {\n name: \"Firefox\"\n }, r = Utils.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/electron/i],\n describe(t) {\n const e = {\n name: \"Electron\"\n }, r = Utils.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/MiuiBrowser/i],\n describe(t) {\n const e = {\n name: \"Miui\"\n }, r = Utils.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/chromium/i],\n describe(t) {\n const e = {\n name: \"Chromium\"\n }, r = Utils.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i, t) || Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/chrome|crios|crmo/i],\n describe(t) {\n const e = {\n name: \"Chrome\"\n }, r = Utils.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/GSA/i],\n describe(t) {\n const e = {\n name: \"Google Search\"\n }, r = Utils.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test(t) {\n const e = !t.test(/like android/i), r = t.test(/android/i);\n return e && r;\n },\n describe(t) {\n const e = {\n name: \"Android Browser\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/playstation 4/i],\n describe(t) {\n const e = {\n name: \"PlayStation 4\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/safari|applewebkit/i],\n describe(t) {\n const e = {\n name: \"Safari\"\n }, r = Utils.getFirstMatch(commonVersionIdentifier, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/.*/i],\n describe(t) {\n const e = /^(.*)\\/(.*) /, r = /^(.*)\\/(.*)[ \\t]\\((.*)/, o = t.search(\"\\\\(\") !== -1 ? r : e;\n return {\n name: Utils.getFirstMatch(o, t),\n version: Utils.getSecondMatch(o, t)\n };\n }\n }\n], osParsersList = [\n {\n test: [/Roku\\/DVP/],\n describe(t) {\n const e = Utils.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i, t);\n return {\n name: OS_MAP.Roku,\n version: e\n };\n }\n },\n {\n test: [/windows phone/i],\n describe(t) {\n const e = Utils.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i, t);\n return {\n name: OS_MAP.WindowsPhone,\n version: e\n };\n }\n },\n {\n test: [/windows /i],\n describe(t) {\n const e = Utils.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i, t), r = Utils.getWindowsVersionName(e);\n return {\n name: OS_MAP.Windows,\n version: e,\n versionName: r\n };\n }\n },\n {\n test: [/Macintosh(.*?) FxiOS(.*?)\\//],\n describe(t) {\n const e = {\n name: OS_MAP.iOS\n }, r = Utils.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/macintosh/i],\n describe(t) {\n const e = Utils.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i, t).replace(/[_\\s]/g, \".\"), r = Utils.getMacOSVersionName(e), n = {\n name: OS_MAP.MacOS,\n version: e\n };\n return r && (n.versionName = r), n;\n }\n },\n {\n test: [/(ipod|iphone|ipad)/i],\n describe(t) {\n const e = Utils.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i, t).replace(/[_\\s]/g, \".\");\n return {\n name: OS_MAP.iOS,\n version: e\n };\n }\n },\n {\n test(t) {\n const e = !t.test(/like android/i), r = t.test(/android/i);\n return e && r;\n },\n describe(t) {\n const e = Utils.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i, t), r = Utils.getAndroidVersionName(e), n = {\n name: OS_MAP.Android,\n version: e\n };\n return r && (n.versionName = r), n;\n }\n },\n {\n test: [/(web|hpw)[o0]s/i],\n describe(t) {\n const e = Utils.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i, t), r = {\n name: OS_MAP.WebOS\n };\n return e && e.length && (r.version = e), r;\n }\n },\n {\n test: [/blackberry|\\bbb\\d+/i, /rim\\stablet/i],\n describe(t) {\n const e = Utils.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i, t) || Utils.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i, t) || Utils.getFirstMatch(/\\bbb(\\d+)/i, t);\n return {\n name: OS_MAP.BlackBerry,\n version: e\n };\n }\n },\n {\n test: [/bada/i],\n describe(t) {\n const e = Utils.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i, t);\n return {\n name: OS_MAP.Bada,\n version: e\n };\n }\n },\n {\n test: [/tizen/i],\n describe(t) {\n const e = Utils.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i, t);\n return {\n name: OS_MAP.Tizen,\n version: e\n };\n }\n },\n {\n test: [/linux/i],\n describe() {\n return {\n name: OS_MAP.Linux\n };\n }\n },\n {\n test: [/CrOS/],\n describe() {\n return {\n name: OS_MAP.ChromeOS\n };\n }\n },\n {\n test: [/PlayStation 4/],\n describe(t) {\n const e = Utils.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i, t);\n return {\n name: OS_MAP.PlayStation4,\n version: e\n };\n }\n }\n], platformParsersList = [\n {\n test: [/googlebot/i],\n describe() {\n return {\n type: \"bot\",\n vendor: \"Google\"\n };\n }\n },\n {\n test: [/huawei/i],\n describe(t) {\n const e = Utils.getFirstMatch(/(can-l01)/i, t) && \"Nova\", r = {\n type: PLATFORMS_MAP.mobile,\n vendor: \"Huawei\"\n };\n return e && (r.model = e), r;\n }\n },\n {\n test: [/nexus\\s*(?:7|8|9|10).*/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: \"Nexus\"\n };\n }\n },\n {\n test: [/ipad/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: \"Apple\",\n model: \"iPad\"\n };\n }\n },\n {\n test: [/Macintosh(.*?) FxiOS(.*?)\\//],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: \"Apple\",\n model: \"iPad\"\n };\n }\n },\n {\n test: [/kftt build/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: \"Amazon\",\n model: \"Kindle Fire HD 7\"\n };\n }\n },\n {\n test: [/silk/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: \"Amazon\"\n };\n }\n },\n {\n test: [/tablet(?! pc)/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet\n };\n }\n },\n {\n test(t) {\n const e = t.test(/ipod|iphone/i), r = t.test(/like (ipod|iphone)/i);\n return e && !r;\n },\n describe(t) {\n const e = Utils.getFirstMatch(/(ipod|iphone)/i, t);\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: \"Apple\",\n model: e\n };\n }\n },\n {\n test: [/nexus\\s*[0-6].*/i, /galaxy nexus/i],\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: \"Nexus\"\n };\n }\n },\n {\n test: [/[^-]mobi/i],\n describe() {\n return {\n type: PLATFORMS_MAP.mobile\n };\n }\n },\n {\n test(t) {\n return t.getBrowserName(!0) === \"blackberry\";\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: \"BlackBerry\"\n };\n }\n },\n {\n test(t) {\n return t.getBrowserName(!0) === \"bada\";\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile\n };\n }\n },\n {\n test(t) {\n return t.getBrowserName() === \"windows phone\";\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: \"Microsoft\"\n };\n }\n },\n {\n test(t) {\n const e = Number(String(t.getOSVersion()).split(\".\")[0]);\n return t.getOSName(!0) === \"android\" && e >= 3;\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tablet\n };\n }\n },\n {\n test(t) {\n return t.getOSName(!0) === \"android\";\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile\n };\n }\n },\n {\n test(t) {\n return t.getOSName(!0) === \"macos\";\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n vendor: \"Apple\"\n };\n }\n },\n {\n test(t) {\n return t.getOSName(!0) === \"windows\";\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop\n };\n }\n },\n {\n test(t) {\n return t.getOSName(!0) === \"linux\";\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop\n };\n }\n },\n {\n test(t) {\n return t.getOSName(!0) === \"playstation 4\";\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tv\n };\n }\n },\n {\n test(t) {\n return t.getOSName(!0) === \"roku\";\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tv\n };\n }\n }\n], enginesParsersList = [\n {\n test(t) {\n return t.getBrowserName(!0) === \"microsoft edge\";\n },\n describe(t) {\n if (/\\sedg\\//i.test(t))\n return {\n name: ENGINE_MAP.Blink\n };\n const r = Utils.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return {\n name: ENGINE_MAP.EdgeHTML,\n version: r\n };\n }\n },\n {\n test: [/trident/i],\n describe(t) {\n const e = {\n name: ENGINE_MAP.Trident\n }, r = Utils.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test(t) {\n return t.test(/presto/i);\n },\n describe(t) {\n const e = {\n name: ENGINE_MAP.Presto\n }, r = Utils.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test(t) {\n const e = t.test(/gecko/i), r = t.test(/like gecko/i);\n return e && !r;\n },\n describe(t) {\n const e = {\n name: ENGINE_MAP.Gecko\n }, r = Utils.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n },\n {\n test: [/(apple)?webkit\\/537\\.36/i],\n describe() {\n return {\n name: ENGINE_MAP.Blink\n };\n }\n },\n {\n test: [/(apple)?webkit/i],\n describe(t) {\n const e = {\n name: ENGINE_MAP.WebKit\n }, r = Utils.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i, t);\n return r && (e.version = r), e;\n }\n }\n];\nclass Parser {\n constructor(e, r = !1) {\n if (e == null || e === \"\")\n throw new Error(\"UserAgent parameter can't be empty\");\n this._ua = e, this.parsedResult = {}, r !== !0 && this.parse();\n }\n getUA() {\n return this._ua;\n }\n test(e) {\n return e.test(this._ua);\n }\n parseBrowser() {\n this.parsedResult.browser = {};\n const e = Utils.find(browsersList, (r) => {\n if (typeof r.test == \"function\")\n return r.test(this);\n if (r.test instanceof Array)\n return r.test.some((n) => this.test(n));\n throw new Error(\"Browser's test function is not valid\");\n });\n return e && (this.parsedResult.browser = e.describe(this.getUA())), this.parsedResult.browser;\n }\n getBrowser() {\n return this.parsedResult.browser ? this.parsedResult.browser : this.parseBrowser();\n }\n getBrowserName(e) {\n return e ? String(this.getBrowser().name).toLowerCase() || \"\" : this.getBrowser().name || \"\";\n }\n getBrowserVersion() {\n return this.getBrowser().version;\n }\n getOS() {\n return this.parsedResult.os ? this.parsedResult.os : this.parseOS();\n }\n parseOS() {\n this.parsedResult.os = {};\n const e = Utils.find(osParsersList, (r) => {\n if (typeof r.test == \"function\")\n return r.test(this);\n if (r.test instanceof Array)\n return r.test.some((n) => this.test(n));\n throw new Error(\"Browser's test function is not valid\");\n });\n return e && (this.parsedResult.os = e.describe(this.getUA())), this.parsedResult.os;\n }\n getOSName(e) {\n const { name: r } = this.getOS();\n return e ? String(r).toLowerCase() || \"\" : r || \"\";\n }\n getOSVersion() {\n return this.getOS().version;\n }\n getPlatform() {\n return this.parsedResult.platform ? this.parsedResult.platform : this.parsePlatform();\n }\n getPlatformType(e = !1) {\n const { type: r } = this.getPlatform();\n return e ? String(r).toLowerCase() || \"\" : r || \"\";\n }\n parsePlatform() {\n this.parsedResult.platform = {};\n const e = Utils.find(platformParsersList, (r) => {\n if (typeof r.test == \"function\")\n return r.test(this);\n if (r.test instanceof Array)\n return r.test.some((n) => this.test(n));\n throw new Error(\"Browser's test function is not valid\");\n });\n return e && (this.parsedResult.platform = e.describe(this.getUA())), this.parsedResult.platform;\n }\n getEngine() {\n return this.parsedResult.engine ? this.parsedResult.engine : this.parseEngine();\n }\n getEngineName(e) {\n return e ? String(this.getEngine().name).toLowerCase() || \"\" : this.getEngine().name || \"\";\n }\n parseEngine() {\n this.parsedResult.engine = {};\n const e = Utils.find(enginesParsersList, (r) => {\n if (typeof r.test == \"function\")\n return r.test(this);\n if (r.test instanceof Array)\n return r.test.some((n) => this.test(n));\n throw new Error(\"Browser's test function is not valid\");\n });\n return e && (this.parsedResult.engine = e.describe(this.getUA())), this.parsedResult.engine;\n }\n parse() {\n return this.parseBrowser(), this.parseOS(), this.parsePlatform(), this.parseEngine(), this;\n }\n getResult() {\n return Utils.assign({}, this.parsedResult);\n }\n satisfies(e) {\n const r = {};\n let n = 0;\n const o = {};\n let s = 0;\n if (Object.keys(e).forEach((a) => {\n const c = e[a];\n typeof c == \"string\" ? (o[a] = c, s += 1) : typeof c == \"object\" && (r[a] = c, n += 1);\n }), n > 0) {\n const a = Object.keys(r), c = Utils.find(a, (u) => this.isOS(u));\n if (c) {\n const u = this.satisfies(r[c]);\n if (u !== void 0)\n return u;\n }\n const l = Utils.find(\n a,\n (u) => this.isPlatform(u)\n );\n if (l) {\n const u = this.satisfies(r[l]);\n if (u !== void 0)\n return u;\n }\n }\n if (s > 0) {\n const a = Object.keys(o), c = Utils.find(a, (l) => this.isBrowser(l, !0));\n if (c !== void 0)\n return this.compareVersion(o[c]);\n }\n }\n isBrowser(e, r = !1) {\n const n = this.getBrowserName().toLowerCase();\n let o = e.toLowerCase();\n const s = Utils.getBrowserTypeByAlias(o);\n return r && s && (o = s.toLowerCase()), o === n;\n }\n compareVersion(e) {\n let r = [0], n = e, o = !1;\n const s = this.getBrowserVersion();\n if (typeof s == \"string\")\n return e[0] === \">\" || e[0] === \"<\" ? (n = e.substr(1), e[1] === \"=\" ? (o = !0, n = e.substr(2)) : r = [], e[0] === \">\" ? r.push(1) : r.push(-1)) : e[0] === \"=\" ? n = e.substr(1) : e[0] === \"~\" && (o = !0, n = e.substr(1)), r.indexOf(\n Utils.compareVersions(s, n, o)\n ) > -1;\n }\n isOS(e) {\n return this.getOSName(!0) === String(e).toLowerCase();\n }\n isPlatform(e) {\n return this.getPlatformType(!0) === String(e).toLowerCase();\n }\n isEngine(e) {\n return this.getEngineName(!0) === String(e).toLowerCase();\n }\n is(e, r = !1) {\n return this.isBrowser(e, r) || this.isOS(e) || this.isPlatform(e);\n }\n some(e = []) {\n return e.some((r) => this.is(r));\n }\n}\n/*!\n * Bowser - a browser detector\n * https://github.com/lancedikson/bowser\n * MIT License | (c) Dustin Diaz 2012-2015\n * MIT License | (c) Denis Demchenko 2015-2019\n */\nclass Bowser {\n static getParser(e, r = !1) {\n if (typeof e != \"string\")\n throw new Error(\"UserAgent should be a string\");\n return new Parser(e, r);\n }\n static parse(e) {\n return new Parser(e).getResult();\n }\n static get BROWSER_MAP() {\n return BROWSER_MAP;\n }\n static get ENGINE_MAP() {\n return ENGINE_MAP;\n }\n static get OS_MAP() {\n return OS_MAP;\n }\n static get PLATFORMS_MAP() {\n return PLATFORMS_MAP;\n }\n}\nconst ssrSafeWindow = typeof window < \"u\" ? window : null;\nfunction getBrowserStoreVersionFromBrowser() {\n var e;\n switch ((e = Bowser.getParser(ssrSafeWindow == null ? void 0 : ssrSafeWindow.navigator.userAgent).getBrowserName()) == null ? void 0 : e.toLowerCase()) {\n case \"firefox\":\n return \"firefox\";\n case \"microsoft edge\":\n return \"edge\";\n case \"android browser\":\n case \"chrome\":\n case \"chromium\":\n case \"electron\":\n case \"opera\":\n case \"vivaldi\":\n return \"chrome\";\n case \"safari\":\n return \"safari\";\n default:\n return null;\n }\n}\nfunction getOperatingSystemStoreVersionFromBrowser() {\n var e, r, n;\n const t = (n = (r = (e = Bowser.getParser(ssrSafeWindow == null ? void 0 : ssrSafeWindow.navigator.userAgent).getOS()) == null ? void 0 : e.name) == null ? void 0 : r.toLowerCase()) != null ? n : null;\n switch (t) {\n case \"ios\":\n case \"android\":\n return t;\n default:\n return null;\n }\n}\nconst enableWithVersion = async (t, e) => t ? main.enable(t, e).catch(() => null) : null, connect = async ({\n modalMode: t = \"canAsk\",\n storeVersion: e = getBrowserStoreVersionFromBrowser(),\n osVersion: r = getOperatingSystemStoreVersionFromBrowser(),\n modalTheme: n,\n ...o\n} = {}) => {\n var u, d;\n const s = await main.getAuthorizedWallets({\n ...o\n }), i = await main.getLastConnectedWallet();\n if (t === \"neverAsk\") {\n const m = (u = s.find((g) => g.id === (i == null ? void 0 : i.id))) != null ? u : s[0];\n return enableWithVersion(m, { silent_mode: !0 });\n }\n const a = await main.getAvailableWallets(o);\n if (t === \"canAsk\" && i) {\n const m = (d = s.find((g) => g.id === (i == null ? void 0 : i.id))) != null ? d : a.length === 1 ? a[0] : void 0;\n if (m)\n return enableWithVersion(m);\n }\n const l = (await main.getDiscoveryWallets(o)).reduce((m, g) => {\n const h = g.downloads[r] || g.downloads[e];\n if (h) {\n const y = Object.keys(g.downloads).find(\n (I) => g.downloads[I] === h\n ), p = y === \"android\" || y === \"ios\" ? `${g.name} Mobile` : `Install ${g.name}`;\n m.push({ ...g, name: p, download: h });\n }\n return m;\n }, []);\n return show({\n lastWallet: i,\n authorizedWallets: s,\n installedWallets: a,\n discoveryWallets: l,\n enable: enableWithVersion,\n modalOptions: {\n theme: n\n }\n });\n};\nfunction disconnect(t = {}) {\n return main.disconnect(t);\n}\nexport {\n connect,\n disconnect\n};\n","import { blob, struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface UiAmountToAmountInstructionData {\n instruction: TokenInstruction.UiAmountToAmount;\n amount: Uint8Array;\n}\n\n/** TODO: docs */\n\n/**\n * Construct a UiAmountToAmount instruction\n *\n * @param mint Public key of the mint\n * @param amount UiAmount of tokens to be converted to Amount\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createUiAmountToAmountInstruction(\n mint: PublicKey,\n amount: string,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [{ pubkey: mint, isSigner: false, isWritable: false }];\n const buf = Buffer.from(amount, 'utf8');\n const uiAmountToAmountInstructionData = struct([\n u8('instruction'),\n blob(buf.length, 'amount'),\n ]);\n\n const data = Buffer.alloc(uiAmountToAmountInstructionData.span);\n uiAmountToAmountInstructionData.encode(\n {\n instruction: TokenInstruction.UiAmountToAmount,\n amount: buf,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid UiAmountToAmount instruction */\nexport interface DecodedUiAmountToAmountInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.UiAmountToAmount;\n amount: Uint8Array;\n };\n}\n\n/**\n * Decode a UiAmountToAmount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeUiAmountToAmountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedUiAmountToAmountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n const uiAmountToAmountInstructionData = struct([\n u8('instruction'),\n blob(instruction.data.length - 1, 'amount'),\n ]);\n if (instruction.data.length !== uiAmountToAmountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeUiAmountToAmountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.UiAmountToAmount) throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated UiAmountToAmount instruction */\nexport interface DecodedUiAmountToAmountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n amount: Uint8Array;\n };\n}\n\n/**\n * Decode a UiAmountToAmount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeUiAmountToAmountInstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedUiAmountToAmountInstructionUnchecked {\n const uiAmountToAmountInstructionData = struct([\n u8('instruction'),\n blob(data.length - 1, 'amount'),\n ]);\n return {\n programId,\n keys: {\n mint,\n },\n data: uiAmountToAmountInstructionData.decode(data),\n };\n}\n","\"use strict\";\n/**\n * Everything needed to implement your own provider.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { CHash, Hex, PrivKey, ensureBytes } from './utils.js';\nimport { Group, GroupConstructor, wNAF, BasicCurve, validateBasic, AffinePoint } from './curve.js';\n\nexport type { AffinePoint };\ntype HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;\ntype EndomorphismOpts = {\n beta: bigint;\n splitScalar: (k: bigint) => { k1neg: boolean; k1: bigint; k2neg: boolean; k2: bigint };\n};\nexport type BasicWCurve = BasicCurve & {\n // Params: a, b\n a: T;\n b: T;\n\n // Optional params\n allowedPrivateKeyLengths?: readonly number[]; // for P521\n wrapPrivateKey?: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n\n endo?: EndomorphismOpts; // Endomorphism options for Koblitz curves\n // When a cofactor != 1, there can be an effective methods to:\n // 1. Determine whether a point is torsion-free\n isTorsionFree?: (c: ProjConstructor, point: ProjPointType) => boolean;\n // 2. Clear torsion component\n clearCofactor?: (c: ProjConstructor, point: ProjPointType) => ProjPointType;\n};\n\ntype Entropy = Hex | true;\nexport type SignOpts = { lowS?: boolean; extraEntropy?: Entropy; prehash?: boolean };\nexport type VerOpts = { lowS?: boolean; prehash?: boolean };\n\n/**\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance of nominative types in TypeScript and interfaces only check for shape, so it's hard to create unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * TODO: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n */\n\n// Instance for 3d XYZ points\nexport interface ProjPointType extends Group> {\n readonly px: T;\n readonly py: T;\n readonly pz: T;\n get x(): T;\n get y(): T;\n multiply(scalar: bigint): ProjPointType;\n toAffine(iz?: T): AffinePoint;\n isTorsionFree(): boolean;\n clearCofactor(): ProjPointType;\n assertValidity(): void;\n hasEvenY(): boolean;\n toRawBytes(isCompressed?: boolean): Uint8Array;\n toHex(isCompressed?: boolean): string;\n\n multiplyUnsafe(scalar: bigint): ProjPointType;\n multiplyAndAddUnsafe(Q: ProjPointType, a: bigint, b: bigint): ProjPointType | undefined;\n _setWindowSize(windowSize: number): void;\n}\n// Static methods for 3d XYZ points\nexport interface ProjConstructor extends GroupConstructor> {\n new (x: T, y: T, z: T): ProjPointType;\n fromAffine(p: AffinePoint): ProjPointType;\n fromHex(hex: Hex): ProjPointType;\n fromPrivateKey(privateKey: PrivKey): ProjPointType;\n normalizeZ(points: ProjPointType[]): ProjPointType[];\n}\n\nexport type CurvePointsType = BasicWCurve & {\n // Bytes\n fromBytes?: (bytes: Uint8Array) => AffinePoint;\n toBytes?: (c: ProjConstructor, point: ProjPointType, isCompressed: boolean) => Uint8Array;\n};\n\nfunction validatePointOpts(curve: CurvePointsType) {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n a: 'field',\n b: 'field',\n },\n {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n }\n );\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (\n typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function'\n ) {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts } as const);\n}\n\nexport type CurvePointsRes = {\n CURVE: ReturnType>;\n ProjectivePoint: ProjConstructor;\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n weierstrassEquation: (x: T) => T;\n isWithinCurveOrder: (num: bigint) => boolean;\n};\n\n// ASN.1 DER encoding utilities\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n _parseInt(data: Uint8Array): { d: bigint; l: Uint8Array } {\n const { Err: E } = DER;\n if (data.length < 2 || data[0] !== 0x02) throw new E('Invalid signature integer tag');\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) throw new E('Invalid signature integer: wrong length');\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n if (res[0] & 0b10000000) throw new E('Invalid signature integer: negative');\n if (res[0] === 0x00 && !(res[1] & 0b10000000))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return { d: b2n(res), l: data.subarray(len + 2) }; // d is data, l is left\n },\n toSig(hex: string | Uint8Array): { r: bigint; s: bigint } {\n // parse DER signature\n const { Err: E } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n if (!ut.isBytes(data)) throw new Error('ui8a expected');\n let l = data.length;\n if (l < 2 || data[0] != 0x30) throw new E('Invalid signature tag');\n if (data[1] !== l - 2) throw new E('Invalid signature: incorrect length');\n const { d: r, l: sBytes } = DER._parseInt(data.subarray(2));\n const { d: s, l: rBytesLeft } = DER._parseInt(sBytes);\n if (rBytesLeft.length) throw new E('Invalid signature: left bytes after parsing');\n return { r, s };\n },\n hexFromSig(sig: { r: bigint; s: bigint }): string {\n // Add leading zero if first byte has negative bit enabled. More details in '_parseInt'\n const slice = (s: string): string => (Number.parseInt(s[0], 16) & 0b1000 ? '00' + s : s);\n const h = (num: number | bigint) => {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n };\n const s = slice(h(sig.s));\n const r = slice(h(sig.r));\n const shl = s.length / 2;\n const rhl = r.length / 2;\n const sl = h(shl);\n const rl = h(rhl);\n return `30${h(rhl + shl + 4)}02${rl}${r}02${sl}${s}`;\n },\n};\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\n\nexport function weierstrassPoints(opts: CurvePointsType): CurvePointsRes {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n\n const toBytes =\n CURVE.toBytes ||\n ((_c: ProjConstructor, point: ProjPointType, _isCompressed: boolean) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes =\n CURVE.fromBytes ||\n ((bytes: Uint8Array) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x: T): T {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num: bigint): boolean {\n return typeof num === 'bigint' && _0n < num && num < CURVE.n;\n }\n function assertGE(num: bigint) {\n if (!isWithinCurveOrder(num)) throw new Error('Expected valid bigint: 0 < bigint < curve.n');\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key: PrivKey): bigint {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (ut.isBytes(key)) key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length)) throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num: bigint;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n } catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey) num = mod.mod(num, n); // disabled by default, enabled for BLS\n assertGE(num); // num in range [1..N-1]\n return num;\n }\n\n const pointPrecomputes = new Map();\n function assertPrjPoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('ProjectivePoint expected');\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point implements ProjPointType {\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n static readonly ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n\n constructor(\n readonly px: T,\n readonly py: T,\n readonly pz: T\n ) {\n if (px == null || !Fp.isValid(px)) throw new Error('x required');\n if (py == null || !Fp.isValid(py)) throw new Error('y required');\n if (pz == null || !Fp.isValid(pz)) throw new Error('z required');\n }\n\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p: AffinePoint): Point {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y)) throw new Error('invalid affine point');\n if (p instanceof Point) throw new Error('projective point not allowed');\n const is0 = (i: T) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y)) return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n\n get x(): T {\n return this.toAffine().x;\n }\n get y(): T {\n return this.toAffine().y;\n }\n\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points: Point[]): Point[] {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex: Hex): Point {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey: PrivKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n _WINDOW_SIZE?: number;\n\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize: number) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n\n // A point on curve is valid if it conforms to equation.\n assertValidity(): void {\n if (this.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is wrong representation of ZERO and is always invalid.\n if (CURVE.allowInfinityPoint && !Fp.is0(this.py)) return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = this.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y)) throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right)) throw new Error('bad point: equation left != right');\n if (!this.isTorsionFree()) throw new Error('bad point: not in prime-order subgroup');\n }\n hasEvenY(): boolean {\n const { y } = this.toAffine();\n if (Fp.isOdd) return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n\n /**\n * Compare one point to another.\n */\n equals(other: Point): boolean {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate(): Point {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other: Point): Point {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n\n subtract(other: Point) {\n return this.add(other.negate());\n }\n\n private is0() {\n return this.equals(Point.ZERO);\n }\n private wNAF(n: bigint): { p: Point; f: Point } {\n return wnaf.wNAFCached(this, pointPrecomputes, n, (comp: Point[]) => {\n const toInv = Fp.invertBatch(comp.map((p) => p.pz));\n return comp.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n });\n }\n\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(n: bigint): Point {\n const I = Point.ZERO;\n if (n === _0n) return I;\n assertGE(n); // Will throw on 0\n if (n === _1n) return this;\n const { endo } = CURVE;\n if (!endo) return wnaf.unsafeLadder(this, n);\n\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = I;\n let k2p = I;\n let d: Point = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n) k1p = k1p.add(d);\n if (k2 & _1n) k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg) k1p = k1p.negate();\n if (k2neg) k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar: bigint): Point {\n assertGE(scalar);\n let n = scalar;\n let point: Point, fake: Point; // Fake point is used to const-time mult\n const { endo } = CURVE;\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n } else {\n const { p, f } = this.wNAF(n);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q: Point, a: bigint, b: bigint): Point | undefined {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (\n P: Point,\n a: bigint // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz?: T): AffinePoint {\n const { px: x, py: y, pz: z } = this;\n const is0 = this.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null) iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0) return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE)) throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n isTorsionFree(): boolean {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n) return true; // No subgroups, always torsion-free\n if (isTorsionFree) return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor(): Point {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n) return this; // Fast-path\n if (clearCofactor) return clearCofactor(Point, this) as Point;\n return this.multiplyUnsafe(CURVE.h);\n }\n\n toRawBytes(isCompressed = true): Uint8Array {\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n\n toHex(isCompressed = true): string {\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point as ProjConstructor,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\n\n// Instance\nexport interface SignatureType {\n readonly r: bigint;\n readonly s: bigint;\n readonly recovery?: number;\n assertValidity(): void;\n addRecoveryBit(recovery: number): RecoveredSignatureType;\n hasHighS(): boolean;\n normalizeS(): SignatureType;\n recoverPublicKey(msgHash: Hex): ProjPointType;\n toCompactRawBytes(): Uint8Array;\n toCompactHex(): string;\n // DER-encoded\n toDERRawBytes(isCompressed?: boolean): Uint8Array;\n toDERHex(isCompressed?: boolean): string;\n}\nexport type RecoveredSignatureType = SignatureType & {\n readonly recovery: number;\n};\n// Static methods\nexport type SignatureConstructor = {\n new (r: bigint, s: bigint): SignatureType;\n fromCompact(hex: Hex): SignatureType;\n fromDER(hex: Hex): SignatureType;\n};\ntype SignatureLike = { r: bigint; s: bigint };\n\nexport type PubKey = Hex | ProjPointType;\n\nexport type CurveType = BasicWCurve & {\n hash: CHash; // CHash not FHash because we need outputLen for DRBG\n hmac: HmacFnSync;\n randomBytes: (bytesLength?: number) => Uint8Array;\n lowS?: boolean;\n bits2int?: (bytes: Uint8Array) => bigint;\n bits2int_modN?: (bytes: Uint8Array) => bigint;\n};\n\nfunction validateOpts(curve: CurveType) {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n },\n {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n }\n );\n return Object.freeze({ lowS: true, ...opts } as const);\n}\n\nexport type CurveFn = {\n CURVE: ReturnType;\n getPublicKey: (privateKey: PrivKey, isCompressed?: boolean) => Uint8Array;\n getSharedSecret: (privateA: PrivKey, publicB: Hex, isCompressed?: boolean) => Uint8Array;\n sign: (msgHash: Hex, privKey: PrivKey, opts?: SignOpts) => RecoveredSignatureType;\n verify: (signature: Hex | SignatureLike, msgHash: Hex, publicKey: Hex, opts?: VerOpts) => boolean;\n ProjectivePoint: ProjConstructor;\n Signature: SignatureConstructor;\n utils: {\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n isValidPrivateKey(privateKey: PrivKey): boolean;\n randomPrivateKey: () => Uint8Array;\n precompute: (windowSize?: number, point?: ProjPointType) => ProjPointType;\n };\n};\n\nexport function weierstrass(curveDef: CurveType): CurveFn {\n const CURVE = validateOpts(curveDef) as ReturnType;\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n\n function isValidFieldElement(num: bigint): boolean {\n return _0n < num && num < Fp.ORDER; // 0 is banned since it's not invertible FE\n }\n function modN(a: bigint) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a: bigint) {\n return mod.invert(a, CURVE_ORDER);\n }\n\n const {\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed: boolean): Uint8Array {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n } else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes: Uint8Array) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!isValidFieldElement(x)) throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd) y = Fp.neg(y);\n return { x, y };\n } else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n } else {\n throw new Error(\n `Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`\n );\n }\n },\n });\n const numToNByteStr = (num: bigint): string =>\n ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n\n function isBiggerThanHalfOrder(number: bigint) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n\n function normalizeS(s: bigint) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b: Uint8Array, from: number, to: number) => ut.bytesToNumberBE(b.slice(from, to));\n\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature implements SignatureType {\n constructor(\n readonly r: bigint,\n readonly s: bigint,\n readonly recovery?: number\n ) {\n this.assertValidity();\n }\n\n // pair (bytes of r, bytes of s)\n static fromCompact(hex: Hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex: Hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n\n assertValidity(): void {\n // can use assertGE here\n if (!isWithinCurveOrder(this.r)) throw new Error('r must be 0 < r < CURVE.n');\n if (!isWithinCurveOrder(this.s)) throw new Error('s must be 0 < s < CURVE.n');\n }\n\n addRecoveryBit(recovery: number): RecoveredSignature {\n return new Signature(this.r, this.s, recovery) as RecoveredSignature;\n }\n\n recoverPublicKey(msgHash: Hex): typeof Point.BASE {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec)) throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER) throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q) throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n\n // Signatures should be low-s, to prevent malleability.\n hasHighS(): boolean {\n return isBiggerThanHalfOrder(this.s);\n }\n\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n type RecoveredSignature = Signature & { recovery: number };\n\n const utils = {\n isValidPrivateKey(privateKey: PrivKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n } catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: (): Uint8Array => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE): typeof Point.BASE {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey: PrivKey, isCompressed = true): Uint8Array {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item: PrivKey | PubKey): boolean {\n const arr = ut.isBytes(item);\n const str = typeof item === 'string';\n const len = (arr || str) && (item as Hex).length;\n if (arr) return len === compressedLen || len === uncompressedLen;\n if (str) return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point) return true;\n return false;\n }\n\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA: PrivKey, publicB: Hex, isCompressed = true): Uint8Array {\n if (isProbPub(privateA)) throw new Error('first arg must be private key');\n if (!isProbPub(publicB)) throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int =\n CURVE.bits2int ||\n function (bytes: Uint8Array): bigint {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN =\n CURVE.bits2int_modN ||\n function (bytes: Uint8Array): bigint {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num: bigint): Uint8Array {\n if (typeof num !== 'bigint') throw new Error('bigint expected');\n if (!(_0n <= num && num < ORDER_MASK))\n throw new Error(`bigint expected < 2^${CURVE.nBitLength}`);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash: Hex, privateKey: PrivKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null) lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n if (prehash) msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes: Uint8Array): RecoveredSignature | undefined {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k)) return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n) return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n) return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery) as RecoveredSignature; // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts: SignOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts: VerOpts = { lowS: CURVE.lowS, prehash: false };\n\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash: Hex, privKey: PrivKey, opts = defaultSigOpts): RecoveredSignature {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(\n signature: Hex | SignatureLike,\n msgHash: Hex,\n publicKey: Hex,\n opts = defaultVerOpts\n ): boolean {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts) throw new Error('options.strict was renamed to lowS');\n const { lowS, prehash } = opts;\n\n let _sig: Signature | undefined = undefined;\n let P: ProjPointType;\n try {\n if (typeof sg === 'string' || ut.isBytes(sg)) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n } catch (derError) {\n if (!(derError instanceof DER.Err)) throw derError;\n _sig = Signature.fromCompact(sg);\n }\n } else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n } else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n } catch (error) {\n if ((error as Error).message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS()) return false;\n if (prehash) msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R) return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp: mod.IField, Z: T) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n) l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u: T, v: T): { isValid: boolean; value: T } => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u: T, v: T) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(\n Fp: mod.IField,\n opts: {\n A: T;\n B: T;\n Z: T;\n }\n) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd) throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u: T): { x: T; y: T } => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd!(u) === Fp.isOdd!(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapPriceWithChain = void 0;\r\nclass SwapPriceWithChain {\r\n constructor(swapPrice, chainIdentifier) {\r\n this.swapPrice = swapPrice;\r\n this.chainIdentifier = chainIdentifier;\r\n }\r\n /**\r\n * Checks whether the swap amounts are valid given the current market rate for a given pair\r\n *\r\n * @param amountSats Amount of sats (BTC) to be received from the swap\r\n * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary\r\n * @param feePPM PPM fee rate as reported by the intermediary\r\n * @param paidToken Amount of token to be paid to the swap\r\n * @param token\r\n * @param abortSignal\r\n * @param preFetchedPrice Already pre-fetched price\r\n */\r\n async isValidAmountSend(amountSats, satsBaseFee, feePPM, paidToken, token, abortSignal, preFetchedPrice) {\r\n return this.swapPrice.isValidAmountSend(this.chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, token, abortSignal, preFetchedPrice);\r\n }\r\n /**\r\n * Checks whether the swap amounts are valid given the current market rate for a given pair\r\n *\r\n * @param amountSats Amount of sats (BTC) to be paid to the swap\r\n * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary\r\n * @param feePPM PPM fee rate as reported by the intermediary\r\n * @param receiveToken Amount of token to be received from the swap\r\n * @param token\r\n * @param abortSignal\r\n * @param preFetchedPrice Already pre-fetched price\r\n */\r\n async isValidAmountReceive(amountSats, satsBaseFee, feePPM, receiveToken, token, abortSignal, preFetchedPrice) {\r\n return this.swapPrice.isValidAmountReceive(this.chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, token, abortSignal, preFetchedPrice);\r\n }\r\n preFetchPrice(token, abortSignal) {\r\n return this.swapPrice.preFetchPrice(this.chainIdentifier, token, abortSignal);\r\n }\r\n preFetchUsdPrice(abortSignal) {\r\n return this.swapPrice.preFetchUsdPrice(abortSignal);\r\n }\r\n /**\r\n * Returns amount of {toToken} that are equivalent to {fromAmount} satoshis\r\n *\r\n * @param fromAmount Amount of satoshis\r\n * @param toToken Token\r\n * @param abortSignal\r\n * @param preFetchedPrice\r\n * @throws {Error} when token is not found\r\n */\r\n async getFromBtcSwapAmount(fromAmount, toToken, abortSignal, preFetchedPrice) {\r\n return this.swapPrice.getFromBtcSwapAmount(this.chainIdentifier, fromAmount, toToken, abortSignal, preFetchedPrice);\r\n }\r\n /**\r\n * Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}\r\n *\r\n * @param fromAmount Amount of the token\r\n * @param fromToken Token\r\n * @param abortSignal\r\n * @param preFetchedPrice Pre-fetched swap price if available\r\n * @throws {Error} when token is not found\r\n */\r\n async getToBtcSwapAmount(fromAmount, fromToken, abortSignal, preFetchedPrice) {\r\n return this.swapPrice.getToBtcSwapAmount(this.chainIdentifier, fromAmount, fromToken, abortSignal, preFetchedPrice);\r\n }\r\n /**\r\n * Returns whether the token should be ignored and pricing for it not calculated\r\n *\r\n * @param tokenAddress\r\n * @throws {Error} if token is not found\r\n */\r\n shouldIgnore(tokenAddress) {\r\n return this.swapPrice.shouldIgnore(this.chainIdentifier, tokenAddress);\r\n }\r\n async getBtcUsdValue(btcSats, abortSignal, preFetchedPrice) {\r\n return this.swapPrice.getBtcUsdValue(btcSats, abortSignal, preFetchedPrice);\r\n }\r\n async getTokenUsdValue(tokenAmount, token, abortSignal, preFetchedPrice) {\r\n return this.swapPrice.getTokenUsdValue(this.chainIdentifier, tokenAmount, token, abortSignal, preFetchedPrice);\r\n }\r\n getUsdValue(amount, token, abortSignal, preFetchedUsdPrice) {\r\n return this.swapPrice.getUsdValue(amount, token, abortSignal, preFetchedUsdPrice);\r\n }\r\n}\r\nexports.SwapPriceWithChain = SwapPriceWithChain;\r\n","// String encode/decode helpers\n'use strict';\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nmodule.exports.string2buf = (str) => {\n if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n return new TextEncoder().encode(str);\n }\n\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nmodule.exports.buf2string = (buf, max) => {\n const len = max || buf.length;\n\n if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n return new TextDecoder().decode(buf.subarray(0, max));\n }\n\n let i, out;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nmodule.exports.utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","import { hex } from '@scure/base';\nimport * as P from 'micro-packed';\nimport {\n CompactSize,\n CompactSizeLen,\n RawOldTx,\n RawOutput,\n RawTx,\n RawWitness,\n VarBytes,\n} from './script.js';\nimport { Transaction } from './transaction.js'; // circular\nimport { type Bytes, compareBytes, equalBytes, PubT, validatePubkey } from './utils.js';\n\n// PSBT BIP174, BIP370, BIP371\n\n// Can be 33 or 64 bytes\nconst PubKeyECDSA: P.CoderType = P.validate(P.bytes(null), (pub) =>\n validatePubkey(pub, PubT.ecdsa)\n);\nconst PubKeySchnorr: P.CoderType = P.validate(P.bytes(32), (pub) =>\n validatePubkey(pub, PubT.schnorr)\n);\nconst SignatureSchnorr: P.CoderType = P.validate(P.bytes(null), (sig) => {\n if (sig.length !== 64 && sig.length !== 65)\n throw new Error('Schnorr signature should be 64 or 65 bytes long');\n return sig;\n});\n\nconst BIP32Der = P.struct({\n fingerprint: P.U32BE,\n path: P.array(null, P.U32LE),\n});\nconst TaprootBIP32Der = P.struct({\n hashes: P.array(CompactSizeLen, P.bytes(32)),\n der: BIP32Der,\n});\n// The 78 byte serialized extended public key as defined by BIP 32.\nconst GlobalXPUB = P.bytes(78);\nconst tapScriptSigKey = P.struct({ pubKey: PubKeySchnorr, leafHash: P.bytes(32) });\n\n// Complex structure for PSBT fields\n// \nconst _TaprootControlBlock = P.struct({\n version: P.U8, // With parity :(\n internalKey: P.bytes(32),\n merklePath: P.array(null, P.bytes(32)),\n});\nexport const TaprootControlBlock = P.validate(_TaprootControlBlock, (cb) => {\n if (cb.merklePath.length > 128)\n throw new Error('TaprootControlBlock: merklePath should be of length 0..128 (inclusive)');\n return cb;\n});\n\n// {<8-bit uint depth> <8-bit uint leaf version> }*\nconst tapTree = P.array(\n null,\n P.struct({\n depth: P.U8,\n version: P.U8,\n script: VarBytes,\n })\n);\n\nconst BytesInf: P.CoderType = P.bytes(null); // Bytes will conflict with Bytes type\nconst Bytes20: P.CoderType = P.bytes(20);\nconst Bytes32: P.CoderType = P.bytes(32);\n// versionsRequiringExclusing = !versionsAllowsInclusion (as set)\n// {name: [tag, keyCoder, valueCoder, versionsRequiringInclusion, versionsRequiringExclusing, versionsAllowsInclusion, silentIgnore]}\n// SilentIgnore: we use some v2 fields for v1 representation too, so we just clean them before serialize\n\n// Tables from BIP-0174 (https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki)\n// prettier-ignore\nexport const PSBTGlobal = {\n unsignedTx: [0x00, false, RawOldTx, [0], [0], false],\n xpub: [0x01, GlobalXPUB, BIP32Der, [], [0, 2], false],\n txVersion: [0x02, false, P.U32LE, [2], [2], false],\n fallbackLocktime: [0x03, false, P.U32LE, [], [2], false],\n inputCount: [0x04, false, CompactSizeLen, [2], [2], false],\n outputCount: [0x05, false, CompactSizeLen, [2], [2], false],\n txModifiable: [0x06, false, P.U8, [], [2], false], // TODO: bitfield\n version: [0xfb, false, P.U32LE, [], [0, 2], false],\n proprietary: [0xfc, BytesInf, BytesInf, [], [0, 2], false],\n} as const;\n// prettier-ignore\nexport const PSBTInput = {\n nonWitnessUtxo: [0x00, false, RawTx, [], [0, 2], false],\n witnessUtxo: [0x01, false, RawOutput, [], [0, 2], false],\n partialSig: [0x02, PubKeyECDSA, BytesInf, [], [0, 2], false],\n sighashType: [0x03, false, P.U32LE, [], [0, 2], false],\n redeemScript: [0x04, false, BytesInf, [], [0, 2], false],\n witnessScript: [0x05, false, BytesInf, [], [0, 2], false],\n bip32Derivation: [0x06, PubKeyECDSA, BIP32Der, [], [0, 2], false],\n finalScriptSig: [0x07, false, BytesInf, [], [0, 2], false],\n finalScriptWitness: [0x08, false, RawWitness, [], [0, 2], false],\n porCommitment: [0x09, false, BytesInf, [], [0, 2], false],\n ripemd160: [0x0a, Bytes20, BytesInf, [], [0, 2], false],\n sha256: [0x0b, Bytes32, BytesInf, [], [0, 2], false],\n hash160: [0x0c, Bytes20, BytesInf, [], [0, 2], false],\n hash256: [0x0d, Bytes32, BytesInf, [], [0, 2], false],\n txid: [0x0e, false, Bytes32, [2], [2], true],\n index: [0x0f, false, P.U32LE, [2], [2], true],\n sequence: [0x10, false, P.U32LE, [], [2], true],\n requiredTimeLocktime: [0x11, false, P.U32LE, [], [2], false],\n requiredHeightLocktime: [0x12, false, P.U32LE, [], [2], false],\n tapKeySig: [0x13, false, SignatureSchnorr, [], [0, 2], false],\n tapScriptSig: [0x14, tapScriptSigKey, SignatureSchnorr, [], [0, 2], false],\n tapLeafScript: [0x15, TaprootControlBlock, BytesInf, [], [0, 2], false],\n tapBip32Derivation: [0x16, Bytes32, TaprootBIP32Der, [], [0, 2], false],\n tapInternalKey: [0x17, false, PubKeySchnorr, [], [0, 2], false],\n tapMerkleRoot: [0x18, false, Bytes32, [], [0, 2], false],\n proprietary: [0xfc, BytesInf, BytesInf, [], [0, 2], false],\n} as const;\n// All other keys removed when finalizing\nexport const PSBTInputFinalKeys: (keyof TransactionInput)[] = [\n 'txid',\n 'sequence',\n 'index',\n 'witnessUtxo',\n 'nonWitnessUtxo',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'unknown',\n];\n\n// Can be modified even on signed input\nexport const PSBTInputUnsignedKeys: (keyof TransactionInput)[] = [\n 'partialSig',\n 'finalScriptSig',\n 'finalScriptWitness',\n 'tapKeySig',\n 'tapScriptSig',\n];\n\n// prettier-ignore\nexport const PSBTOutput = {\n redeemScript: [0x00, false, BytesInf, [], [0, 2], false],\n witnessScript: [0x01, false, BytesInf, [], [0, 2], false],\n bip32Derivation: [0x02, PubKeyECDSA, BIP32Der, [], [0, 2], false],\n amount: [0x03, false, P.I64LE, [2], [2], true],\n script: [0x04, false, BytesInf, [2], [2], true],\n tapInternalKey: [0x05, false, PubKeySchnorr, [], [0, 2], false],\n tapTree: [0x06, false, tapTree, [], [0, 2], false],\n tapBip32Derivation: [0x07, PubKeySchnorr, TaprootBIP32Der, [], [0, 2], false],\n proprietary: [0xfc, BytesInf, BytesInf, [], [0, 2], false],\n} as const;\n\n// Can be modified even on signed input\nexport const PSBTOutputUnsignedKeys: (keyof typeof PSBTOutput)[] = [];\n\nconst PSBTKeyPair = P.array(\n P.NULL,\n P.struct({\n // := WHERE keylen = len(keytype)+len(keydata)\n key: P.prefix(CompactSizeLen, P.struct({ type: CompactSizeLen, key: P.bytes(null) })),\n // := \n value: P.bytes(CompactSizeLen),\n })\n);\n\ntype PSBTKeyCoder = P.CoderType | false;\n\ntype PSBTKeyMapInfo = Readonly<\n [\n number,\n PSBTKeyCoder,\n any,\n readonly number[], // versionsRequiringInclusion\n readonly number[], // versionsAllowsInclusion\n boolean, // silentIgnore\n ]\n>;\n\nfunction PSBTKeyInfo(info: PSBTKeyMapInfo) {\n const [type, kc, vc, reqInc, allowInc, silentIgnore] = info;\n return { type, kc, vc, reqInc, allowInc, silentIgnore };\n}\n\ntype PSBTKeyMap = Record;\n\nconst PSBTUnknownKey: P.CoderType<\n P.StructInput<{\n type: number;\n key: Uint8Array;\n }>\n> = P.struct({ type: CompactSizeLen, key: P.bytes(null) });\ntype PSBTUnknownFields = { unknown?: [P.UnwrapCoder, Bytes][] };\nexport type PSBTKeyMapKeys = {\n -readonly [K in keyof T]?: T[K][1] extends false\n ? P.UnwrapCoder\n : [P.UnwrapCoder, P.UnwrapCoder][];\n} & PSBTUnknownFields;\n// Key cannot be 'unknown', value coder cannot be array for elements with empty key\nfunction PSBTKeyMap(psbtEnum: T): P.CoderType> {\n // -> Record\n const byType: Record]> = {};\n for (const k in psbtEnum) {\n const [num, kc, vc] = psbtEnum[k];\n byType[num] = [k, kc, vc];\n }\n return P.wrap({\n encodeStream: (w: P.Writer, value: PSBTKeyMapKeys) => {\n let out: P.UnwrapCoder = [];\n // Because we use order of psbtEnum, keymap is sorted here\n for (const name in psbtEnum) {\n const val = value[name];\n if (val === undefined) continue;\n const [type, kc, vc] = psbtEnum[name];\n if (!kc) {\n out.push({ key: { type, key: P.EMPTY }, value: vc.encode(val) });\n } else {\n // Low level interface, returns keys as is (with duplicates). Useful for debug\n const kv: [Bytes, Bytes][] = val!.map(\n ([k, v]: [P.UnwrapCoder, P.UnwrapCoder]) => [\n kc.encode(k),\n vc.encode(v),\n ]\n );\n // sort by keys\n kv.sort((a, b) => compareBytes(a[0], b[0]));\n for (const [key, value] of kv) out.push({ key: { key, type }, value });\n }\n }\n if (value.unknown) {\n value.unknown.sort((a, b) => compareBytes(a[0].key, b[0].key));\n for (const [k, v] of value.unknown) out.push({ key: k, value: v });\n }\n PSBTKeyPair.encodeStream(w, out);\n },\n decodeStream: (r: P.Reader): PSBTKeyMapKeys => {\n const raw = PSBTKeyPair.decodeStream(r);\n const out: any = {};\n const noKey: Record = {};\n for (const elm of raw) {\n let name = 'unknown';\n let key: any = elm.key.key;\n let value = elm.value;\n if (byType[elm.key.type]) {\n const [_name, kc, vc] = byType[elm.key.type];\n name = _name;\n if (!kc && key.length) {\n throw new Error(\n `PSBT: Non-empty key for ${name} (key=${hex.encode(key)} value=${hex.encode(value)}`\n );\n }\n key = kc ? kc.decode(key) : undefined;\n value = vc.decode(value);\n if (!kc) {\n if (out[name]) throw new Error(`PSBT: Same keys: ${name} (key=${key} value=${value})`);\n out[name] = value;\n noKey[name] = true;\n continue;\n }\n } else {\n // For unknown: add key type inside key\n key = { type: elm.key.type, key: elm.key.key };\n }\n // Only keyed elements at this point\n if (noKey[name])\n throw new Error(`PSBT: Key type with empty key and no key=${name} val=${value}`);\n if (!out[name]) out[name] = [];\n out[name].push([key, value]);\n }\n return out;\n },\n });\n}\n\nexport const PSBTInputCoder = P.validate(PSBTKeyMap(PSBTInput), (i) => {\n if (i.finalScriptWitness && !i.finalScriptWitness.length)\n throw new Error('validateInput: empty finalScriptWitness');\n //if (i.finalScriptSig && !i.finalScriptSig.length) throw new Error('validateInput: empty finalScriptSig');\n if (i.partialSig && !i.partialSig.length) throw new Error('Empty partialSig');\n if (i.partialSig) for (const [k] of i.partialSig) validatePubkey(k, PubT.ecdsa);\n if (i.bip32Derivation) for (const [k] of i.bip32Derivation) validatePubkey(k, PubT.ecdsa);\n // Locktime = unsigned little endian integer greater than or equal to 500000000 representing\n if (i.requiredTimeLocktime !== undefined && i.requiredTimeLocktime < 500000000)\n throw new Error(`validateInput: wrong timeLocktime=${i.requiredTimeLocktime}`);\n // unsigned little endian integer greater than 0 and less than 500000000\n if (\n i.requiredHeightLocktime !== undefined &&\n (i.requiredHeightLocktime <= 0 || i.requiredHeightLocktime >= 500000000)\n )\n throw new Error(`validateInput: wrong heighLocktime=${i.requiredHeightLocktime}`);\n\n if (i.nonWitnessUtxo && i.index !== undefined) {\n const last = i.nonWitnessUtxo.outputs.length - 1;\n if (i.index > last) throw new Error(`validateInput: index(${i.index}) not in nonWitnessUtxo`);\n const prevOut = i.nonWitnessUtxo.outputs[i.index];\n if (\n i.witnessUtxo &&\n (!equalBytes(i.witnessUtxo.script, prevOut.script) || i.witnessUtxo.amount !== prevOut.amount)\n )\n throw new Error('validateInput: witnessUtxo different from nonWitnessUtxo');\n }\n if (i.tapLeafScript) {\n // tap leaf version appears here twice: in control block and at the end of script\n for (const [k, v] of i.tapLeafScript) {\n if ((k.version & 0b1111_1110) !== v[v.length - 1])\n throw new Error('validateInput: tapLeafScript version mimatch');\n if (v[v.length - 1] & 1)\n throw new Error('validateInput: tapLeafScript version has parity bit!');\n }\n }\n // Validate txid for nonWitnessUtxo is correct\n if (i.nonWitnessUtxo && i.index !== undefined && i.txid) {\n const outputs = i.nonWitnessUtxo.outputs;\n if (outputs.length - 1 < i.index) throw new Error('nonWitnessUtxo: incorect output index');\n // At this point, we are using previous tx output to create new input.\n // Script safety checks are unnecessary:\n // - User has no control over previous tx. If somebody send money in same tx\n // as unspendable output, we still want user able to spend money\n // - We still want some checks to notify user about possible errors early\n // in case user wants to use wrong input by mistake\n // - Worst case: tx will be rejected by nodes. Still better than disallowing user\n // to spend real input, no matter how broken it looks\n const tx = Transaction.fromRaw(RawTx.encode(i.nonWitnessUtxo), {\n allowUnknownOutputs: true,\n disableScriptCheck: true,\n allowUnknownInputs: true,\n });\n const txid = hex.encode(i.txid);\n // PSBTv2 vectors have non-final tx in inputs\n if (tx.isFinal && tx.id !== txid)\n throw new Error(`nonWitnessUtxo: wrong txid, exp=${txid} got=${tx.id}`);\n }\n return i;\n});\n\nexport type ExtendType = {\n [K in keyof T]: K extends keyof E ? E[K] | T[K] : T[K];\n};\nexport type RequireType = T & {\n [P in K]-?: T[P];\n};\n\nexport type TransactionInput = P.UnwrapCoder;\nexport type TransactionInputUpdate = ExtendType<\n TransactionInput,\n {\n nonWitnessUtxo?: string | Bytes;\n txid?: string;\n }\n>;\n\nexport const PSBTOutputCoder = P.validate(PSBTKeyMap(PSBTOutput), (o) => {\n if (o.bip32Derivation) for (const [k] of o.bip32Derivation) validatePubkey(k, PubT.ecdsa);\n return o;\n});\n\nexport type TransactionOutput = P.UnwrapCoder;\nexport type TransactionOutputUpdate = ExtendType;\nexport type TransactionOutputRequired = {\n script: Bytes;\n amount: bigint;\n};\n\nconst PSBTGlobalCoder = P.validate(PSBTKeyMap(PSBTGlobal), (g) => {\n const version = g.version || 0;\n if (version === 0) {\n if (!g.unsignedTx) throw new Error('PSBTv0: missing unsignedTx');\n for (const inp of g.unsignedTx.inputs)\n if (inp.finalScriptSig && inp.finalScriptSig.length)\n throw new Error('PSBTv0: input scriptSig found in unsignedTx');\n }\n return g;\n});\n\nexport const _RawPSBTV0 = P.struct({\n magic: P.magic(P.string(new Uint8Array([0xff])), 'psbt'),\n global: PSBTGlobalCoder,\n inputs: P.array('global/unsignedTx/inputs/length', PSBTInputCoder),\n outputs: P.array(null, PSBTOutputCoder),\n});\n\nexport const _RawPSBTV2 = P.struct({\n magic: P.magic(P.string(new Uint8Array([0xff])), 'psbt'),\n global: PSBTGlobalCoder,\n inputs: P.array('global/inputCount', PSBTInputCoder),\n outputs: P.array('global/outputCount', PSBTOutputCoder),\n});\n\nexport type PSBTRaw = typeof _RawPSBTV0 | typeof _RawPSBTV2;\n\nexport const _DebugPSBT = P.struct({\n magic: P.magic(P.string(new Uint8Array([0xff])), 'psbt'),\n items: P.array(\n null,\n P.apply(\n P.array(P.NULL, P.tuple([P.hex(CompactSizeLen), P.bytes(CompactSize)])),\n P.coders.dict()\n )\n ),\n});\n\nfunction validatePSBTFields(\n version: number,\n info: T,\n lst: PSBTKeyMapKeys\n) {\n for (const k in lst) {\n if (k === 'unknown') continue;\n if (!info[k]) continue;\n const { allowInc } = PSBTKeyInfo(info[k]);\n if (!allowInc.includes(version)) throw new Error(`PSBTv${version}: field ${k} is not allowed`);\n }\n for (const k in info) {\n const { reqInc } = PSBTKeyInfo(info[k]);\n if (reqInc.includes(version) && lst[k] === undefined)\n throw new Error(`PSBTv${version}: missing required field ${k}`);\n }\n}\n\nexport function cleanPSBTFields(\n version: number,\n info: T,\n lst: PSBTKeyMapKeys\n): PSBTKeyMapKeys {\n const out: PSBTKeyMapKeys = {};\n for (const _k in lst) {\n const k = _k as string & keyof PSBTKeyMapKeys;\n if (k !== 'unknown') {\n if (!info[k]) continue;\n const { allowInc, silentIgnore } = PSBTKeyInfo(info[k]);\n if (!allowInc.includes(version)) {\n if (silentIgnore) continue;\n throw new Error(\n `Failed to serialize in PSBTv${version}: ${k} but versions allows inclusion=${allowInc}`\n );\n }\n }\n out[k] = lst[k];\n }\n return out;\n}\n\nfunction validatePSBT(tx: P.UnwrapCoder) {\n const version = (tx && tx.global && tx.global.version) || 0;\n validatePSBTFields(version, PSBTGlobal, tx.global);\n for (const i of tx.inputs) validatePSBTFields(version, PSBTInput, i);\n for (const o of tx.outputs) validatePSBTFields(version, PSBTOutput, o);\n // We allow only one empty element at the end of map (compat with bitcoinjs-lib bug)\n const inputCount = !version ? tx.global.unsignedTx!.inputs.length : tx.global.inputCount!;\n if (tx.inputs.length < inputCount) throw new Error('Not enough inputs');\n const inputsLeft = tx.inputs.slice(inputCount);\n if (inputsLeft.length > 1 || (inputsLeft.length && Object.keys(inputsLeft[0]).length))\n throw new Error(`Unexpected inputs left in tx=${inputsLeft}`);\n // Same for inputs\n const outputCount = !version ? tx.global.unsignedTx!.outputs.length : tx.global.outputCount!;\n if (tx.outputs.length < outputCount) throw new Error('Not outputs inputs');\n const outputsLeft = tx.outputs.slice(outputCount);\n if (outputsLeft.length > 1 || (outputsLeft.length && Object.keys(outputsLeft[0]).length))\n throw new Error(`Unexpected outputs left in tx=${outputsLeft}`);\n return tx;\n}\n\nexport function mergeKeyMap(\n psbtEnum: T,\n val: PSBTKeyMapKeys,\n cur?: PSBTKeyMapKeys,\n allowedFields?: (keyof PSBTKeyMapKeys)[]\n): PSBTKeyMapKeys {\n const res: PSBTKeyMapKeys = { ...cur, ...val };\n // All arguments can be provided as hex\n for (const k in psbtEnum) {\n const key = k as keyof typeof psbtEnum;\n const [_, kC, vC] = psbtEnum[key];\n type _KV = [P.UnwrapCoder, P.UnwrapCoder];\n const cannotChange = allowedFields && !allowedFields.includes(k);\n if (val[k] === undefined && k in val) {\n if (cannotChange) throw new Error(`Cannot remove signed field=${k}`);\n delete res[k];\n } else if (kC) {\n const oldKV = (cur && cur[k] ? cur[k] : []) as _KV[];\n let newKV = val[key] as _KV[];\n if (newKV) {\n if (!Array.isArray(newKV)) throw new Error(`keyMap(${k}): KV pairs should be [k, v][]`);\n // Decode hex in k-v\n newKV = newKV.map((val: _KV): _KV => {\n if (val.length !== 2) throw new Error(`keyMap(${k}): KV pairs should be [k, v][]`);\n return [\n typeof val[0] === 'string' ? kC.decode(hex.decode(val[0])) : val[0],\n typeof val[1] === 'string' ? vC.decode(hex.decode(val[1])) : val[1],\n ];\n });\n const map: Record = {};\n const add = (kStr: string, k: _KV[0], v: _KV[1]) => {\n if (map[kStr] === undefined) {\n map[kStr] = [k, v];\n return;\n }\n const oldVal = hex.encode(vC.encode(map[kStr][1]));\n const newVal = hex.encode(vC.encode(v));\n if (oldVal !== newVal)\n throw new Error(\n `keyMap(${key as string}): same key=${kStr} oldVal=${oldVal} newVal=${newVal}`\n );\n };\n for (const [k, v] of oldKV) {\n const kStr = hex.encode(kC.encode(k));\n add(kStr, k, v);\n }\n for (const [k, v] of newKV) {\n const kStr = hex.encode(kC.encode(k));\n // undefined removes previous value\n if (v === undefined) {\n if (cannotChange) throw new Error(`Cannot remove signed field=${key as string}/${k}`);\n delete map[kStr];\n } else add(kStr, k, v);\n }\n (res as any)[key] = Object.values(map) as _KV[];\n }\n } else if (typeof res[k] === 'string') {\n res[k] = vC.decode(hex.decode(res[k] as string));\n } else if (cannotChange && k in val && cur && cur[k] !== undefined) {\n if (!equalBytes(vC.encode(val[k]), vC.encode(cur[k])))\n throw new Error(`Cannot change signed field=${k}`);\n }\n }\n // Remove unknown keys\n for (const k in res) if (!psbtEnum[k]) delete res[k];\n return res;\n}\n\nexport const RawPSBTV0 = P.validate(_RawPSBTV0, validatePSBT);\nexport const RawPSBTV2 = P.validate(_RawPSBTV2, validatePSBT);\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.horizontalCenter = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar horizontalCenter = function horizontalCenter(Component) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$rAlign = _ref.rAlign,\n rAlign = _ref$rAlign === void 0 ? false : _ref$rAlign,\n _ref$space = _ref.space,\n space = _ref$space === void 0 ? 4 : _ref$space;\n\n return function (props) {\n return _react.default.createElement(Component, props, _react.default.createElement(\"div\", {\n style: {\n display: 'inline-flex',\n justifyContent: 'center',\n 'alignItems': 'center'\n }\n }, _react.Children.toArray(props.children).map(function (child, idx) {\n var spacerField = rAlign ? 'paddingLeft' : 'paddingRight';\n return _react.default.createElement(\"div\", {\n key: idx,\n style: _defineProperty({\n display: 'inline-block'\n }, spacerField, space)\n }, child);\n })));\n };\n};\n\nexports.horizontalCenter = horizontalCenter;\nvar _default = horizontalCenter;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_power_off_outline = void 0;\nvar ic_power_off_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M10 3H8v1.88l2 2zm6 6v3.88l1.8 1.8.2-.2V9c0-1.1-.9-2-2-2V3h-2v4h-3.88l2 2H16zM4.12 3.84L2.71 5.25 6 8.54v5.96L9.5 18v3h5v-3l.48-.48 4.47 4.47 1.41-1.41L4.12 3.84zm8.38 13.33V19h-1v-1.83L8 13.65v-3.11l5.57 5.57-1.07 1.06z\"\n },\n \"children\": []\n }]\n};\nexports.ic_power_off_outline = ic_power_off_outline;","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createCloseAccountInstruction } from '../instructions/closeAccount.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Close a token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to close\n * @param destination Account to receive the remaining balance of the closed account\n * @param authority Authority which is allowed to close the account\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function closeAccount(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createCloseAccountInstruction(account, destination, authorityPublicKey, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","import { struct, u16, u8 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, Signer } from '@solana/web3.js';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n TokenUnsupportedInstructionError,\n} from '../../errors.js';\nimport { addSigners } from '../../instructions/internal.js';\nimport { TokenInstruction } from '../../instructions/types.js';\n\nexport enum TransferFeeInstruction {\n InitializeTransferFeeConfig = 0,\n TransferCheckedWithFee = 1,\n WithdrawWithheldTokensFromMint = 2,\n WithdrawWithheldTokensFromAccounts = 3,\n HarvestWithheldTokensToMint = 4,\n SetTransferFee = 5,\n}\n\n// InitializeTransferFeeConfig\n\n/** TODO: docs */\nexport interface InitializeTransferFeeConfigInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.InitializeTransferFeeConfig;\n transferFeeConfigAuthorityOption: 1 | 0;\n transferFeeConfigAuthority: PublicKey;\n withdrawWithheldAuthorityOption: 1 | 0;\n withdrawWithheldAuthority: PublicKey;\n transferFeeBasisPoints: number;\n maximumFee: bigint;\n}\n\n/** TODO: docs */\nexport const initializeTransferFeeConfigInstructionData = struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n u8('transferFeeConfigAuthorityOption'),\n publicKey('transferFeeConfigAuthority'),\n u8('withdrawWithheldAuthorityOption'),\n publicKey('withdrawWithheldAuthority'),\n u16('transferFeeBasisPoints'),\n u64('maximumFee'),\n]);\n\n/**\n * Construct an InitializeTransferFeeConfig instruction\n *\n * @param mint Token mint account\n * @param transferFeeConfigAuthority Optional authority that can update the fees\n * @param withdrawWithheldAuthority Optional authority that can withdraw fees\n * @param transferFeeBasisPoints Amount of transfer collected as fees, expressed as basis points of the transfer amount\n * @param maximumFee Maximum fee assessed on transfers\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeTransferFeeConfigInstruction(\n mint: PublicKey,\n transferFeeConfigAuthority: PublicKey | null,\n withdrawWithheldAuthority: PublicKey | null,\n transferFeeBasisPoints: number,\n maximumFee: bigint,\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeTransferFeeConfigInstructionData.span);\n initializeTransferFeeConfigInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.InitializeTransferFeeConfig,\n transferFeeConfigAuthorityOption: transferFeeConfigAuthority ? 1 : 0,\n transferFeeConfigAuthority: transferFeeConfigAuthority || new PublicKey(0),\n withdrawWithheldAuthorityOption: withdrawWithheldAuthority ? 1 : 0,\n withdrawWithheldAuthority: withdrawWithheldAuthority || new PublicKey(0),\n transferFeeBasisPoints: transferFeeBasisPoints,\n maximumFee: maximumFee,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeTransferFeeConfig instruction */\nexport interface DecodedInitializeTransferFeeConfigInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.InitializeTransferFeeConfig;\n transferFeeConfigAuthority: PublicKey | null;\n withdrawWithheldAuthority: PublicKey | null;\n transferFeeBasisPoints: number;\n maximumFee: bigint;\n };\n}\n\n/**\n * Decode an InitializeTransferFeeConfig instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeTransferFeeConfigInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedInitializeTransferFeeConfigInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeTransferFeeConfigInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeInitializeTransferFeeConfigInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.InitializeTransferFeeConfig\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeTransferFeeConfig instruction */\nexport interface DecodedInitializeTransferFeeConfigInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.InitializeTransferFeeConfig;\n transferFeeConfigAuthority: PublicKey | null;\n withdrawWithheldAuthority: PublicKey | null;\n transferFeeBasisPoints: number;\n maximumFee: bigint;\n };\n}\n\n/**\n * Decode an InitializeTransferFeeConfig instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeTransferFeeConfigInstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedInitializeTransferFeeConfigInstructionUnchecked {\n const {\n instruction,\n transferFeeInstruction,\n transferFeeConfigAuthorityOption,\n transferFeeConfigAuthority,\n withdrawWithheldAuthorityOption,\n withdrawWithheldAuthority,\n transferFeeBasisPoints,\n maximumFee,\n } = initializeTransferFeeConfigInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n },\n data: {\n instruction,\n transferFeeInstruction,\n transferFeeConfigAuthority: transferFeeConfigAuthorityOption ? transferFeeConfigAuthority : null,\n withdrawWithheldAuthority: withdrawWithheldAuthorityOption ? withdrawWithheldAuthority : null,\n transferFeeBasisPoints,\n maximumFee,\n },\n };\n}\n\n// TransferCheckedWithFee\nexport interface TransferCheckedWithFeeInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.TransferCheckedWithFee;\n amount: bigint;\n decimals: number;\n fee: bigint;\n}\n\nexport const transferCheckedWithFeeInstructionData = struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n u64('amount'),\n u8('decimals'),\n u64('fee'),\n]);\n\n/**\n * Construct an TransferCheckedWithFee instruction\n *\n * @param source The source account\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The source account's owner/delegate\n * @param signers The signer account(s)\n * @param amount The amount of tokens to transfer\n * @param decimals The expected number of base 10 digits to the right of the decimal place\n * @param fee The expected fee assesed on this transfer, calculated off-chain based on the transferFeeBasisPoints and maximumFee of the mint.\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferCheckedWithFeeInstruction(\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: bigint,\n decimals: number,\n fee: bigint,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const data = Buffer.alloc(transferCheckedWithFeeInstructionData.span);\n transferCheckedWithFeeInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.TransferCheckedWithFee,\n amount,\n decimals,\n fee,\n },\n data\n );\n const keys = addSigners(\n [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid TransferCheckedWithFee instruction */\nexport interface DecodedTransferCheckedWithFeeInstruction {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.TransferCheckedWithFee;\n amount: bigint;\n decimals: number;\n fee: bigint;\n };\n}\n\n/**\n * Decode a TransferCheckedWithFee instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferCheckedWithFeeInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedTransferCheckedWithFeeInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferCheckedWithFeeInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { source, mint, destination, authority, signers },\n data,\n } = decodeTransferCheckedWithFeeInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.TransferCheckedWithFee\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n authority,\n signers: signers ? signers : null,\n },\n data,\n };\n}\n\n/** A decoded, non-validated TransferCheckedWithFees instruction */\nexport interface DecodedTransferCheckedWithFeeInstructionUnchecked {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | undefined;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.TransferCheckedWithFee;\n amount: bigint;\n decimals: number;\n fee: bigint;\n };\n}\n\n/**\n * Decode a TransferCheckedWithFees instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferCheckedWithFeeInstructionUnchecked({\n programId,\n keys: [source, mint, destination, authority, ...signers],\n data,\n}: TransactionInstruction): DecodedTransferCheckedWithFeeInstructionUnchecked {\n const { instruction, transferFeeInstruction, amount, decimals, fee } =\n transferCheckedWithFeeInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n authority,\n signers,\n },\n data: {\n instruction,\n transferFeeInstruction,\n amount,\n decimals,\n fee,\n },\n };\n}\n\n// WithdrawWithheldTokensFromMint\nexport interface WithdrawWithheldTokensFromMintInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromMint;\n}\n\nexport const withdrawWithheldTokensFromMintInstructionData = struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n]);\n\n/**\n * Construct a WithdrawWithheldTokensFromMint instruction\n *\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The source account's owner/delegate\n * @param signers The signer account(s)\n * @param programID SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createWithdrawWithheldTokensFromMintInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n signers: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const data = Buffer.alloc(withdrawWithheldTokensFromMintInstructionData.span);\n withdrawWithheldTokensFromMintInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromMint,\n },\n data\n );\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n signers\n );\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid WithdrawWithheldTokensFromMint instruction */\nexport interface DecodedWithdrawWithheldTokensFromMintInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromMint;\n };\n}\n\n/**\n * Decode a WithdrawWithheldTokensFromMint instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeWithdrawWithheldTokensFromMintInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedWithdrawWithheldTokensFromMintInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== withdrawWithheldTokensFromMintInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, signers },\n data,\n } = decodeWithdrawWithheldTokensFromMintInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.WithdrawWithheldTokensFromMint\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n signers: signers ? signers : null,\n },\n data,\n };\n}\n\n/** A decoded, valid WithdrawWithheldTokensFromMint instruction */\nexport interface DecodedWithdrawWithheldTokensFromMintInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromMint;\n };\n}\n\n/**\n * Decode a WithdrawWithheldTokensFromMint instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeWithdrawWithheldTokensFromMintInstructionUnchecked({\n programId,\n keys: [mint, destination, authority, ...signers],\n data,\n}: TransactionInstruction): DecodedWithdrawWithheldTokensFromMintInstructionUnchecked {\n const { instruction, transferFeeInstruction } = withdrawWithheldTokensFromMintInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n signers,\n },\n data: {\n instruction,\n transferFeeInstruction,\n },\n };\n}\n\n// WithdrawWithheldTokensFromAccounts\nexport interface WithdrawWithheldTokensFromAccountsInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromAccounts;\n numTokenAccounts: number;\n}\n\nexport const withdrawWithheldTokensFromAccountsInstructionData =\n struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n u8('numTokenAccounts'),\n ]);\n\n/**\n * Construct a WithdrawWithheldTokensFromAccounts instruction\n *\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The source account's owner/delegate\n * @param signers The signer account(s)\n * @param sources The source accounts to withdraw from\n * @param programID SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createWithdrawWithheldTokensFromAccountsInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n signers: (Signer | PublicKey)[],\n sources: PublicKey[],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const data = Buffer.alloc(withdrawWithheldTokensFromAccountsInstructionData.span);\n withdrawWithheldTokensFromAccountsInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromAccounts,\n numTokenAccounts: sources.length,\n },\n data\n );\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n signers\n );\n for (const source of sources) {\n keys.push({ pubkey: source, isSigner: false, isWritable: true });\n }\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid WithdrawWithheldTokensFromAccounts instruction */\nexport interface DecodedWithdrawWithheldTokensFromAccountsInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n sources: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromAccounts;\n numTokenAccounts: number;\n };\n}\n\n/**\n * Decode a WithdrawWithheldTokensFromAccounts instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeWithdrawWithheldTokensFromAccountsInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedWithdrawWithheldTokensFromAccountsInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== withdrawWithheldTokensFromAccountsInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, signers, sources },\n data,\n } = decodeWithdrawWithheldTokensFromAccountsInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.WithdrawWithheldTokensFromAccounts\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n signers: signers ? signers : null,\n sources: sources ? sources : null,\n },\n data,\n };\n}\n\n/** A decoded, valid WithdrawWithheldTokensFromAccounts instruction */\nexport interface DecodedWithdrawWithheldTokensFromAccountsInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n sources: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromAccounts;\n numTokenAccounts: number;\n };\n}\n\n/**\n * Decode a WithdrawWithheldTokensFromAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeWithdrawWithheldTokensFromAccountsInstructionUnchecked({\n programId,\n keys,\n data,\n}: TransactionInstruction): DecodedWithdrawWithheldTokensFromAccountsInstructionUnchecked {\n const { instruction, transferFeeInstruction, numTokenAccounts } =\n withdrawWithheldTokensFromAccountsInstructionData.decode(data);\n const [mint, destination, authority, signers, sources] = [\n keys[0],\n keys[1],\n keys[2],\n keys.slice(3, 3 + numTokenAccounts),\n keys.slice(-1 * numTokenAccounts),\n ];\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n signers,\n sources,\n },\n data: {\n instruction,\n transferFeeInstruction,\n numTokenAccounts,\n },\n };\n}\n\n// HarvestWithheldTokensToMint\n\nexport interface HarvestWithheldTokensToMintInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.HarvestWithheldTokensToMint;\n}\n\nexport const harvestWithheldTokensToMintInstructionData = struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n]);\n\n/**\n * Construct a HarvestWithheldTokensToMint instruction\n *\n * @param mint The token mint\n * @param sources The source accounts to withdraw from\n * @param programID SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createHarvestWithheldTokensToMintInstruction(\n mint: PublicKey,\n sources: PublicKey[],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const data = Buffer.alloc(harvestWithheldTokensToMintInstructionData.span);\n harvestWithheldTokensToMintInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.HarvestWithheldTokensToMint,\n },\n data\n );\n const keys: AccountMeta[] = [];\n keys.push({ pubkey: mint, isSigner: false, isWritable: true });\n for (const source of sources) {\n keys.push({ pubkey: source, isSigner: false, isWritable: true });\n }\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid HarvestWithheldTokensToMint instruction */\nexport interface DecodedHarvestWithheldTokensToMintInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n sources: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.HarvestWithheldTokensToMint;\n };\n}\n\n/**\n * Decode a HarvestWithheldTokensToMint instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeHarvestWithheldTokensToMintInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedHarvestWithheldTokensToMintInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== harvestWithheldTokensToMintInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, sources },\n data,\n } = decodeHarvestWithheldTokensToMintInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.HarvestWithheldTokensToMint\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n sources,\n },\n data,\n };\n}\n\n/** A decoded, valid HarvestWithheldTokensToMint instruction */\nexport interface DecodedHarvestWithheldTokensToMintInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n sources: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.HarvestWithheldTokensToMint;\n };\n}\n\n/**\n * Decode a HarvestWithheldTokensToMint instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeHarvestWithheldTokensToMintInstructionUnchecked({\n programId,\n keys: [mint, ...sources],\n data,\n}: TransactionInstruction): DecodedHarvestWithheldTokensToMintInstructionUnchecked {\n const { instruction, transferFeeInstruction } = harvestWithheldTokensToMintInstructionData.decode(data);\n return {\n programId,\n keys: {\n mint,\n sources,\n },\n data: {\n instruction,\n transferFeeInstruction,\n },\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ISwapPrice = exports.isPriceInfoType = void 0;\r\nfunction isPriceInfoType(obj) {\r\n return obj != null &&\r\n typeof (obj.isValid) === \"boolean\" &&\r\n typeof (obj.differencePPM) === \"bigint\" &&\r\n typeof (obj.satsBaseFee) === \"bigint\" &&\r\n typeof (obj.feePPM) === \"bigint\" &&\r\n typeof (obj.realPriceUSatPerToken) === \"bigint\" &&\r\n typeof (obj.swapPriceUSatPerToken) === \"bigint\";\r\n}\r\nexports.isPriceInfoType = isPriceInfoType;\r\nclass ISwapPrice {\r\n constructor(maxAllowedFeeDifferencePPM) {\r\n this.maxAllowedFeeDifferencePPM = maxAllowedFeeDifferencePPM;\r\n }\r\n /**\r\n * Recomputes pricing info without fetching the current price\r\n *\r\n * @param chainIdentifier\r\n * @param amountSats\r\n * @param satsBaseFee\r\n * @param feePPM\r\n * @param paidToken\r\n * @param token\r\n */\r\n recomputePriceInfoSend(chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, token) {\r\n const totalSats = (amountSats * (1000000n + feePPM) / 1000000n)\r\n + satsBaseFee;\r\n const totalUSats = totalSats * 1000000n;\r\n const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimals(chainIdentifier, token))) / paidToken;\r\n return {\r\n isValid: true,\r\n differencePPM: 0n,\r\n satsBaseFee,\r\n feePPM,\r\n realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, token) ? null : swapPriceUSatPerToken,\r\n swapPriceUSatPerToken\r\n };\r\n }\r\n /**\r\n * Checks whether the swap amounts are valid given the current market rate for a given pair\r\n *\r\n * @param chainIdentifier\r\n * @param amountSats Amount of sats (BTC) to be received from the swap\r\n * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary\r\n * @param feePPM PPM fee rate as reported by the intermediary\r\n * @param paidToken Amount of token to be paid to the swap\r\n * @param token\r\n * @param abortSignal\r\n * @param preFetchedPrice Already pre-fetched price\r\n */\r\n async isValidAmountSend(chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, token, abortSignal, preFetchedPrice) {\r\n const totalSats = (amountSats * (1000000n + feePPM) / 1000000n)\r\n + satsBaseFee;\r\n const totalUSats = totalSats * 1000000n;\r\n const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimals(chainIdentifier, token))) / paidToken;\r\n if (this.shouldIgnore(chainIdentifier, token))\r\n return {\r\n isValid: true,\r\n differencePPM: 0n,\r\n satsBaseFee,\r\n feePPM,\r\n realPriceUSatPerToken: null,\r\n swapPriceUSatPerToken\r\n };\r\n const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, token, abortSignal, preFetchedPrice);\r\n const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimals(chainIdentifier, token))) / calculatedAmtInToken;\r\n const difference = paidToken - calculatedAmtInToken; //Will be >0 if we need to pay more than we should've\r\n const differencePPM = difference * 1000000n / calculatedAmtInToken;\r\n return {\r\n isValid: differencePPM <= this.maxAllowedFeeDifferencePPM,\r\n differencePPM,\r\n satsBaseFee,\r\n feePPM,\r\n realPriceUSatPerToken,\r\n swapPriceUSatPerToken\r\n };\r\n }\r\n /**\r\n * Recomputes pricing info without fetching the current price\r\n *\r\n * @param chainIdentifier\r\n * @param amountSats\r\n * @param satsBaseFee\r\n * @param feePPM\r\n * @param receiveToken\r\n * @param token\r\n */\r\n recomputePriceInfoReceive(chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, token) {\r\n const totalSats = (amountSats * (1000000n - feePPM) / 1000000n)\r\n - satsBaseFee;\r\n const totalUSats = totalSats * 1000000n;\r\n const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimals(chainIdentifier, token))) / receiveToken;\r\n return {\r\n isValid: true,\r\n differencePPM: 0n,\r\n satsBaseFee,\r\n feePPM,\r\n realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, token) ? null : swapPriceUSatPerToken,\r\n swapPriceUSatPerToken\r\n };\r\n }\r\n /**\r\n * Checks whether the swap amounts are valid given the current market rate for a given pair\r\n *\r\n * @param chainIdentifier\r\n * @param amountSats Amount of sats (BTC) to be paid to the swap\r\n * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary\r\n * @param feePPM PPM fee rate as reported by the intermediary\r\n * @param receiveToken Amount of token to be received from the swap\r\n * @param token\r\n * @param abortSignal\r\n * @param preFetchedPrice Already pre-fetched price\r\n */\r\n async isValidAmountReceive(chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, token, abortSignal, preFetchedPrice) {\r\n const totalSats = (amountSats * (1000000n - feePPM) / 1000000n)\r\n - satsBaseFee;\r\n const totalUSats = totalSats * 1000000n;\r\n const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimals(chainIdentifier, token))) / receiveToken;\r\n if (this.shouldIgnore(chainIdentifier, token))\r\n return {\r\n isValid: true,\r\n differencePPM: 0n,\r\n satsBaseFee,\r\n feePPM,\r\n realPriceUSatPerToken: null,\r\n swapPriceUSatPerToken\r\n };\r\n const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, token, abortSignal, preFetchedPrice);\r\n const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimals(chainIdentifier, token))) / calculatedAmtInToken;\r\n const difference = calculatedAmtInToken - receiveToken; //Will be >0 if we receive less than we should've\r\n const differencePPM = difference * 100000n / calculatedAmtInToken;\r\n return {\r\n isValid: differencePPM <= this.maxAllowedFeeDifferencePPM,\r\n differencePPM,\r\n satsBaseFee,\r\n feePPM,\r\n realPriceUSatPerToken,\r\n swapPriceUSatPerToken\r\n };\r\n }\r\n preFetchPrice(chainIdentifier, token, abortSignal) {\r\n return this.getPrice(chainIdentifier, token, abortSignal);\r\n }\r\n preFetchUsdPrice(abortSignal) {\r\n return this.getUsdPrice(abortSignal);\r\n }\r\n /**\r\n * Returns amount of {toToken} that are equivalent to {fromAmount} satoshis\r\n *\r\n * @param chainIdentifier\r\n * @param fromAmount Amount of satoshis\r\n * @param toToken Token\r\n * @param abortSignal\r\n * @param preFetchedPrice\r\n * @throws {Error} when token is not found\r\n */\r\n async getFromBtcSwapAmount(chainIdentifier, fromAmount, toToken, abortSignal, preFetchedPrice) {\r\n if (this.getDecimals(chainIdentifier, toToken.toString()) == null)\r\n throw new Error(\"Token not found!\");\r\n const price = preFetchedPrice || await this.getPrice(chainIdentifier, toToken, abortSignal);\r\n return fromAmount\r\n * (10n ** BigInt(this.getDecimals(chainIdentifier, toToken.toString())))\r\n * (1000000n) //To usat\r\n / (price);\r\n }\r\n /**\r\n * Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}\r\n *\r\n * @param chainIdentifier\r\n * @param fromAmount Amount of the token\r\n * @param fromToken Token\r\n * @param abortSignal\r\n * @param preFetchedPrice Pre-fetched swap price if available\r\n * @throws {Error} when token is not found\r\n */\r\n async getToBtcSwapAmount(chainIdentifier, fromAmount, fromToken, abortSignal, preFetchedPrice) {\r\n if (this.getDecimals(chainIdentifier, fromToken.toString()) == null)\r\n throw new Error(\"Token not found\");\r\n const price = preFetchedPrice || await this.getPrice(chainIdentifier, fromToken, abortSignal);\r\n return fromAmount\r\n * price\r\n / 1000000n\r\n / (10n ** BigInt(this.getDecimals(chainIdentifier, fromToken.toString())));\r\n }\r\n /**\r\n * Returns whether the token should be ignored and pricing for it not calculated\r\n * @param chainIdentifier\r\n * @param tokenAddress\r\n * @throws {Error} if token is not found\r\n */\r\n shouldIgnore(chainIdentifier, tokenAddress) {\r\n const coin = this.getDecimals(chainIdentifier, tokenAddress.toString());\r\n if (coin == null)\r\n throw new Error(\"Token not found\");\r\n return coin === -1;\r\n }\r\n async getBtcUsdValue(btcSats, abortSignal, preFetchedPrice) {\r\n return Number(btcSats) * (preFetchedPrice || await this.getUsdPrice(abortSignal));\r\n }\r\n async getTokenUsdValue(chainId, tokenAmount, token, abortSignal, preFetchedPrice) {\r\n const [btcAmount, usdPrice] = await Promise.all([\r\n this.getToBtcSwapAmount(chainId, tokenAmount, token, abortSignal),\r\n preFetchedPrice == null ? this.preFetchUsdPrice(abortSignal) : Promise.resolve(preFetchedPrice)\r\n ]);\r\n return Number(btcAmount) * usdPrice;\r\n }\r\n getUsdValue(amount, token, abortSignal, preFetchedUsdPrice) {\r\n if (token.chain === \"BTC\") {\r\n return this.getBtcUsdValue(amount, abortSignal, preFetchedUsdPrice);\r\n }\r\n else {\r\n return this.getTokenUsdValue(token.chainId, amount, token.address, abortSignal, preFetchedUsdPrice);\r\n }\r\n }\r\n}\r\nexports.ISwapPrice = ISwapPrice;\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPublicSuffix = getPublicSuffix;\nconst tldts_1 = require(\"tldts\");\n// RFC 6761\nconst SPECIAL_USE_DOMAINS = ['local', 'example', 'invalid', 'localhost', 'test'];\nconst SPECIAL_TREATMENT_DOMAINS = ['localhost', 'invalid'];\nconst defaultGetPublicSuffixOptions = {\n allowSpecialUseDomain: false,\n ignoreError: false,\n};\n/**\n * Returns the public suffix of this hostname. The public suffix is the shortest domain\n * name upon which a cookie can be set.\n *\n * @remarks\n * A \"public suffix\" is a domain that is controlled by a\n * public registry, such as \"com\", \"co.uk\", and \"pvt.k12.wy.us\".\n * This step is essential for preventing attacker.com from\n * disrupting the integrity of example.com by setting a cookie\n * with a Domain attribute of \"com\". Unfortunately, the set of\n * public suffixes (also known as \"registry controlled domains\")\n * changes over time. If feasible, user agents SHOULD use an\n * up-to-date public suffix list, such as the one maintained by\n * the Mozilla project at http://publicsuffix.org/.\n * (See {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.3 | RFC6265 - Section 5.3})\n *\n * @example\n * ```\n * getPublicSuffix('www.example.com') === 'example.com'\n * getPublicSuffix('www.subdomain.example.com') === 'example.com'\n * ```\n *\n * @param domain - the domain attribute of a cookie\n * @param options - optional configuration for controlling how the public suffix is determined\n * @public\n */\nfunction getPublicSuffix(domain, options = {}) {\n options = { ...defaultGetPublicSuffixOptions, ...options };\n const domainParts = domain.split('.');\n const topLevelDomain = domainParts[domainParts.length - 1];\n const allowSpecialUseDomain = !!options.allowSpecialUseDomain;\n const ignoreError = !!options.ignoreError;\n if (allowSpecialUseDomain &&\n topLevelDomain !== undefined &&\n SPECIAL_USE_DOMAINS.includes(topLevelDomain)) {\n if (domainParts.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const secondLevelDomain = domainParts[domainParts.length - 2];\n // In aforementioned example, the eTLD/pubSuf will be apple.localhost\n return `${secondLevelDomain}.${topLevelDomain}`;\n }\n else if (SPECIAL_TREATMENT_DOMAINS.includes(topLevelDomain)) {\n // For a single word special use domain, e.g. 'localhost' or 'invalid', per RFC 6761,\n // \"Application software MAY recognize {localhost/invalid} names as special, or\n // MAY pass them to name resolution APIs as they would for other domain names.\"\n return topLevelDomain;\n }\n }\n if (!ignoreError &&\n topLevelDomain !== undefined &&\n SPECIAL_USE_DOMAINS.includes(topLevelDomain)) {\n throw new Error(`Cookie has domain set to the public suffix \"${topLevelDomain}\" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain: true, rejectPublicSuffixes: false}.`);\n }\n const publicSuffix = (0, tldts_1.getDomain)(domain, {\n allowIcannDomains: true,\n allowPrivateDomains: true,\n });\n if (publicSuffix)\n return publicSuffix;\n}\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\nfunction isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\n// Other libraries would silently corrupt the data instead of throwing an error,\n// when they don't support it.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n if (!isBytes(bytes)) throw new Error('Uint8Array expected');\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n if (!isBytes(data)) throw new Error(`expected Uint8Array, got ${typeof data}`);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n if (!isBytes(a)) throw new Error('Uint8Array expected');\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType;\n\nexport function wrapConstructor>(hashCons: () => Hash) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => Hash\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","export enum AccountType {\n Uninitialized,\n Mint,\n Account,\n}\nexport const ACCOUNT_TYPE_SIZE = 1;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_qr_code_scanner = void 0;\nvar ic_qr_code_scanner = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M9.5,6.5v3h-3v-3H9.5 M11,5H5v6h6V5L11,5z M9.5,14.5v3h-3v-3H9.5 M11,13H5v6h6V13L11,13z M17.5,6.5v3h-3v-3H17.5 M19,5h-6v6 h6V5L19,5z M13,13h1.5v1.5H13V13z M14.5,14.5H16V16h-1.5V14.5z M16,13h1.5v1.5H16V13z M13,16h1.5v1.5H13V16z M14.5,17.5H16V19h-1.5 V17.5z M16,16h1.5v1.5H16V16z M17.5,14.5H19V16h-1.5V14.5z M17.5,17.5H19V19h-1.5V17.5z M22,7h-2V4h-3V2h5V7z M22,22v-5h-2v3h-3v2 H22z M2,22h5v-2H4v-3H2V22z M2,2v5h2V4h3V2H2z\"\n },\n \"children\": []\n }]\n};\nexports.ic_qr_code_scanner = ic_qr_code_scanner;","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Poseidon Hash: https://eprint.iacr.org/2019/458.pdf, https://www.poseidon-hash.info\nimport { FpPow, IField, validateField } from './modular.js';\n// We don't provide any constants, since different implementations use different constants.\n// For reference constants see './test/poseidon.test.js'.\nexport type PoseidonOpts = {\n Fp: IField;\n t: number;\n roundsFull: number;\n roundsPartial: number;\n sboxPower?: number;\n reversePartialPowIdx?: boolean; // Hack for stark\n mds: bigint[][];\n roundConstants: bigint[][];\n};\n\nexport function validateOpts(opts: PoseidonOpts) {\n const { Fp, mds, reversePartialPowIdx: rev, roundConstants: rc } = opts;\n const { roundsFull, roundsPartial, sboxPower, t } = opts;\n\n validateField(Fp);\n for (const i of ['t', 'roundsFull', 'roundsPartial'] as const) {\n if (typeof opts[i] !== 'number' || !Number.isSafeInteger(opts[i]))\n throw new Error(`Poseidon: invalid param ${i}=${opts[i]} (${typeof opts[i]})`);\n }\n\n // MDS is TxT matrix\n if (!Array.isArray(mds) || mds.length !== t) throw new Error('Poseidon: wrong MDS matrix');\n const _mds = mds.map((mdsRow) => {\n if (!Array.isArray(mdsRow) || mdsRow.length !== t)\n throw new Error(`Poseidon MDS matrix row: ${mdsRow}`);\n return mdsRow.map((i) => {\n if (typeof i !== 'bigint') throw new Error(`Poseidon MDS matrix value=${i}`);\n return Fp.create(i);\n });\n });\n\n if (rev !== undefined && typeof rev !== 'boolean')\n throw new Error(`Poseidon: invalid param reversePartialPowIdx=${rev}`);\n\n if (roundsFull % 2 !== 0) throw new Error(`Poseidon roundsFull is not even: ${roundsFull}`);\n const rounds = roundsFull + roundsPartial;\n\n if (!Array.isArray(rc) || rc.length !== rounds)\n throw new Error('Poseidon: wrong round constants');\n const roundConstants = rc.map((rc) => {\n if (!Array.isArray(rc) || rc.length !== t)\n throw new Error(`Poseidon wrong round constants: ${rc}`);\n return rc.map((i) => {\n if (typeof i !== 'bigint' || !Fp.isValid(i))\n throw new Error(`Poseidon wrong round constant=${i}`);\n return Fp.create(i);\n });\n });\n\n if (!sboxPower || ![3, 5, 7].includes(sboxPower))\n throw new Error(`Poseidon wrong sboxPower=${sboxPower}`);\n const _sboxPower = BigInt(sboxPower);\n let sboxFn = (n: bigint) => FpPow(Fp, n, _sboxPower);\n // Unwrapped sbox power for common cases (195->142μs)\n if (sboxPower === 3) sboxFn = (n: bigint) => Fp.mul(Fp.sqrN(n), n);\n else if (sboxPower === 5) sboxFn = (n: bigint) => Fp.mul(Fp.sqrN(Fp.sqrN(n)), n);\n\n return Object.freeze({ ...opts, rounds, sboxFn, roundConstants, mds: _mds });\n}\n\nexport function splitConstants(rc: bigint[], t: number) {\n if (typeof t !== 'number') throw new Error('poseidonSplitConstants: wrong t');\n if (!Array.isArray(rc) || rc.length % t) throw new Error('poseidonSplitConstants: wrong rc');\n const res = [];\n let tmp = [];\n for (let i = 0; i < rc.length; i++) {\n tmp.push(rc[i]);\n if (tmp.length === t) {\n res.push(tmp);\n tmp = [];\n }\n }\n return res;\n}\n\nexport function poseidon(opts: PoseidonOpts) {\n const _opts = validateOpts(opts);\n const { Fp, mds, roundConstants, rounds, roundsPartial, sboxFn, t } = _opts;\n const halfRoundsFull = _opts.roundsFull / 2;\n const partialIdx = _opts.reversePartialPowIdx ? t - 1 : 0;\n const poseidonRound = (values: bigint[], isFull: boolean, idx: number) => {\n values = values.map((i, j) => Fp.add(i, roundConstants[idx][j]));\n\n if (isFull) values = values.map((i) => sboxFn(i));\n else values[partialIdx] = sboxFn(values[partialIdx]);\n // Matrix multiplication\n values = mds.map((i) => i.reduce((acc, i, j) => Fp.add(acc, Fp.mulN(i, values[j])), Fp.ZERO));\n return values;\n };\n const poseidonHash = function poseidonHash(values: bigint[]) {\n if (!Array.isArray(values) || values.length !== t)\n throw new Error(`Poseidon: wrong values (expected array of bigints with length ${t})`);\n values = values.map((i) => {\n if (typeof i !== 'bigint') throw new Error(`Poseidon: wrong value=${i} (${typeof i})`);\n return Fp.create(i);\n });\n let round = 0;\n // Apply r_f/2 full rounds.\n for (let i = 0; i < halfRoundsFull; i++) values = poseidonRound(values, true, round++);\n // Apply r_p partial rounds.\n for (let i = 0; i < roundsPartial; i++) values = poseidonRound(values, false, round++);\n // Apply r_f/2 full rounds.\n for (let i = 0; i < halfRoundsFull; i++) values = poseidonRound(values, true, round++);\n\n if (round !== rounds)\n throw new Error(`Poseidon: wrong number of rounds: last round=${round}, total=${rounds}`);\n return values;\n };\n // For verification in tests\n poseidonHash.roundConstants = roundConstants;\n return poseidonHash;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SingleSwapPrice = void 0;\r\nconst ICachedSwapPrice_1 = require(\"./abstract/ICachedSwapPrice\");\r\n/**\r\n * Swap price API using single price source\r\n */\r\nclass SingleSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {\r\n constructor(maxAllowedFeeDiffPPM, priceProvider, cacheTimeout) {\r\n super(maxAllowedFeeDiffPPM, cacheTimeout);\r\n this.priceProvider = priceProvider;\r\n }\r\n /**\r\n * Fetch price in uSats (micro sats) for a given token against BTC\r\n *\r\n * @param chainIdentifier\r\n * @param token\r\n * @param abortSignal\r\n * @protected\r\n * @returns token price in uSats (micro sats)\r\n */\r\n fetchPrice(chainIdentifier, token, abortSignal) {\r\n return this.priceProvider.getPrice(chainIdentifier, token, abortSignal);\r\n }\r\n /**\r\n * Returns the decimal places of the specified token, or -1 if token should be ignored, returns null if\r\n * token is not found\r\n *\r\n * @param chainIdentifier\r\n * @param token\r\n * @protected\r\n */\r\n getDecimals(chainIdentifier, token) {\r\n return this.priceProvider.getDecimals(chainIdentifier, token.toString());\r\n }\r\n fetchUsdPrice(abortSignal) {\r\n return this.priceProvider.getUsdPrice(abortSignal);\r\n }\r\n}\r\nexports.SingleSwapPrice = SingleSwapPrice;\r\n","import type { WalletAccount } from '@wallet-standard/base';\n\n/** Name of the feature. */\nexport const SolanaSignMessage = 'solana:signMessage';\n\n/** TODO: docs */\nexport type SolanaSignMessageFeature = {\n /** Name of the feature. */\n readonly [SolanaSignMessage]: {\n /** Version of the feature API. */\n readonly version: SolanaSignMessageVersion;\n\n /** Sign messages (arbitrary bytes) using the account's secret key. */\n readonly signMessage: SolanaSignMessageMethod;\n };\n};\n\n/** Version of the feature. */\nexport type SolanaSignMessageVersion = '1.1.0' | '1.0.0';\n\n/** TODO: docs */\nexport type SolanaSignMessageMethod = (\n ...inputs: readonly SolanaSignMessageInput[]\n) => Promise;\n\n/** Input for signing a message. */\nexport interface SolanaSignMessageInput {\n /** Account to use. */\n readonly account: WalletAccount;\n\n /** Message to sign, as raw bytes. */\n readonly message: Uint8Array;\n}\n\n/** Output of signing a message. */\nexport interface SolanaSignMessageOutput {\n /**\n * Message bytes that were signed.\n * The wallet may prefix or otherwise modify the message before signing it.\n */\n readonly signedMessage: Uint8Array;\n\n /**\n * Message signature produced.\n * If the signature type is provided, the signature must be Ed25519.\n */\n readonly signature: Uint8Array;\n\n /**\n * Optional type of the message signature produced.\n * If not provided, the signature must be Ed25519.\n */\n readonly signatureType?: 'ed25519';\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaFees = void 0;\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst MAX_FEE_AGE = 5000;\r\nclass SolanaFees {\r\n constructor(connection, maxFeeMicroLamports = 250000, numSamples = 8, period = 150, useHeliusApi = \"auto\", heliusFeeLevel = \"veryHigh\", getStaticFee, bribeData) {\r\n this.heliusApiSupported = true;\r\n this.logger = (0, Utils_1.getLogger)(\"SolanaFees: \");\r\n this.blockFeeCache = null;\r\n this.connection = connection;\r\n this.maxFeeMicroLamports = BigInt(maxFeeMicroLamports);\r\n this.numSamples = numSamples;\r\n this.period = period;\r\n this.useHeliusApi = useHeliusApi;\r\n this.heliusFeeLevel = heliusFeeLevel;\r\n this.bribeData = bribeData;\r\n this.getStaticFee = getStaticFee;\r\n }\r\n /**\r\n * Returns solana block with transactionDetails=\"signatures\"\r\n *\r\n * @param slot\r\n * @private\r\n */\r\n async getBlockWithSignature(slot) {\r\n const response = await this.connection._rpcRequest(\"getBlock\", [\r\n slot,\r\n {\r\n encoding: \"json\",\r\n transactionDetails: \"signatures\",\r\n commitment: \"confirmed\",\r\n rewards: true\r\n }\r\n ]);\r\n if (response.error != null) {\r\n if (response.error.code === -32004 || response.error.code === -32007 || response.error.code === -32009 || response.error.code === -32014) {\r\n return null;\r\n }\r\n throw new Error(response.error.message);\r\n }\r\n return response.result;\r\n }\r\n /**\r\n * Returns fee estimate from Helius API - only works with Helius RPC, return null for all other RPC providers\r\n *\r\n * @param mutableAccounts\r\n * @private\r\n */\r\n async getPriorityFeeEstimate(mutableAccounts) {\r\n //Try to use getPriorityFeeEstimate api of Helius\r\n const response = await this.connection._rpcRequest(\"getPriorityFeeEstimate\", [\r\n {\r\n \"accountKeys\": mutableAccounts.map(e => e.toBase58()),\r\n \"options\": {\r\n \"includeAllPriorityFeeLevels\": true\r\n }\r\n }\r\n ]).catch(e => {\r\n //Catching not supported errors\r\n if (e.message != null && (e.message.includes(\"-32601\") || e.message.includes(\"-32600\"))) {\r\n return {\r\n error: {\r\n code: -32601,\r\n message: e.message\r\n }\r\n };\r\n }\r\n throw e;\r\n });\r\n if (response.error != null) {\r\n //Catching not supported errors\r\n if (response.error.code !== -32601 && response.error.code !== -32600)\r\n throw new Error(response.error.message);\r\n return null;\r\n }\r\n return response.result.priorityFeeLevels;\r\n }\r\n /**\r\n * Sends the transaction over Jito\r\n *\r\n * @param tx\r\n * @param options\r\n * @private\r\n * @returns {Promise} transaction signature\r\n */\r\n async sendJitoTx(tx, options) {\r\n if (this.bribeData?.endpoint == null)\r\n throw new Error(\"Jito endpoint not specified!\");\r\n if (options == null)\r\n options = {};\r\n const request = await fetch(this.bribeData.endpoint, {\r\n method: \"POST\",\r\n body: JSON.stringify({\r\n jsonrpc: \"2.0\",\r\n id: 1,\r\n method: \"sendTransaction\",\r\n params: [tx.toString(\"base64\"), {\r\n ...options,\r\n encoding: \"base64\"\r\n }],\r\n }),\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n });\r\n if (request.ok) {\r\n const parsedResponse = await request.json();\r\n // console.log(parsedResponse);\r\n return parsedResponse.result;\r\n }\r\n throw new Error(await request.text());\r\n }\r\n /**\r\n * Checks whether the transaction should be sent over Jito, returns the fee paid to Jito in case the transaction\r\n * should be sent over Jito, returns null if the transaction shouldn't be sent over Jito\r\n *\r\n * @param parsedTx\r\n * @private\r\n */\r\n getJitoTxFee(parsedTx) {\r\n const lastIx = parsedTx.instructions[parsedTx.instructions.length - 1];\r\n if (!lastIx.programId.equals(web3_js_1.SystemProgram.programId))\r\n return null;\r\n if (web3_js_1.SystemInstruction.decodeInstructionType(lastIx) !== \"Transfer\")\r\n return null;\r\n const decodedIxData = web3_js_1.SystemInstruction.decodeTransfer(lastIx);\r\n if (decodedIxData.toPubkey.toBase58() !== this.bribeData?.address)\r\n return null;\r\n return decodedIxData.lamports;\r\n }\r\n /**\r\n * Gets the mean microLamports/CU fee rate for the block at a specific slot\r\n *\r\n * @param slot\r\n * @private\r\n */\r\n async getBlockMeanFeeRate(slot) {\r\n const block = await this.getBlockWithSignature(slot);\r\n if (block == null)\r\n return null;\r\n const blockComission = block.rewards.find(e => e.rewardType === \"Fee\");\r\n const totalBlockFees = BigInt(blockComission.lamports) * 2n;\r\n //Subtract per-signature fees to get pure compute fees\r\n const totalTransactionBaseFees = BigInt(block.signatures.length) * 5000n;\r\n const computeFees = totalBlockFees - totalTransactionBaseFees;\r\n //Total compute fees in micro lamports\r\n const computeFeesMicroLamports = computeFees * 1000000n;\r\n //micro lamports per CU considering block was full (48M compute units)\r\n const perCUMicroLamports = computeFeesMicroLamports / 48000000n;\r\n this.logger.debug(\"getBlockMeanFeeRate(): slot: \" + slot + \" total reward: \" + totalBlockFees.toString(10) +\r\n \" total transactions: \" + block.signatures.length + \" computed fee: \" + perCUMicroLamports);\r\n return perCUMicroLamports;\r\n }\r\n /**\r\n * Manually gets global fee rate by sampling random blocks over the last period\r\n *\r\n * @private\r\n * @returns {Promise} sampled mean microLamports/CU fee over the last period\r\n */\r\n async _getGlobalFeeRate() {\r\n let slot = await this.connection.getSlot();\r\n const slots = [];\r\n for (let i = 0; i < this.period; i++) {\r\n slots.push(slot - i);\r\n }\r\n const promises = [];\r\n for (let i = 0; i < this.numSamples; i++) {\r\n promises.push((async () => {\r\n let feeRate = null;\r\n while (feeRate == null) {\r\n if (slots.length === 0)\r\n throw new Error(\"Ran out of slots to check!\");\r\n const index = Math.floor(Math.random() * slots.length);\r\n const slotNumber = slots[index];\r\n slots.splice(index, 1);\r\n feeRate = await this.getBlockMeanFeeRate(slotNumber);\r\n }\r\n return feeRate;\r\n })());\r\n }\r\n const meanFees = await Promise.all(promises);\r\n let min = null;\r\n meanFees.forEach(e => min == null || min > e ? min = e : 0);\r\n if (min != null)\r\n this.logger.debug(\"_getGlobalFeeRate(): slot: \" + slot + \" global fee minimum: \" + min.toString(10));\r\n return min;\r\n }\r\n /**\r\n * Gets the combined microLamports/CU fee rate (from localized & global fee market)\r\n *\r\n * @param mutableAccounts\r\n * @private\r\n */\r\n async _getFeeRate(mutableAccounts) {\r\n if (this.useHeliusApi === \"yes\" || (this.useHeliusApi === \"auto\" && this.heliusApiSupported)) {\r\n //Try to use getPriorityFeeEstimate api of Helius\r\n const fees = await this.getPriorityFeeEstimate(mutableAccounts);\r\n if (fees != null) {\r\n let calculatedFee = BigInt(fees[this.heliusFeeLevel]);\r\n if (calculatedFee < 8000n)\r\n calculatedFee = 8000n;\r\n if (calculatedFee > this.maxFeeMicroLamports)\r\n calculatedFee = this.maxFeeMicroLamports;\r\n return calculatedFee;\r\n }\r\n this.logger.warn(\"_getFeeRate(): tried fetching fees from Helius API, not supported,\" +\r\n \" falling back to client-side fee estimation\");\r\n this.heliusApiSupported = false;\r\n }\r\n const [globalFeeRate, localFeeRate] = await Promise.all([\r\n this.getGlobalFeeRate(),\r\n this.connection.getRecentPrioritizationFees({\r\n lockedWritableAccounts: mutableAccounts\r\n }).then(resp => {\r\n let lamports = 0;\r\n for (let i = 20; i >= 0; i--) {\r\n const data = resp[resp.length - i - 1];\r\n if (data != null)\r\n lamports = Math.min(lamports, data.prioritizationFee);\r\n }\r\n return BigInt(lamports);\r\n })\r\n ]);\r\n let fee = globalFeeRate;\r\n if (fee < localFeeRate)\r\n fee = localFeeRate;\r\n if (fee < 8000n)\r\n fee = 8000n;\r\n if (fee > this.maxFeeMicroLamports)\r\n fee = this.maxFeeMicroLamports;\r\n return fee;\r\n }\r\n /**\r\n * Gets global fee rate, with caching\r\n *\r\n * @returns {Promise} global fee rate microLamports/CU\r\n */\r\n getGlobalFeeRate() {\r\n if (this.blockFeeCache == null || Date.now() - this.blockFeeCache.timestamp > MAX_FEE_AGE) {\r\n let obj = {\r\n timestamp: Date.now(),\r\n feeRate: null\r\n };\r\n obj.feeRate = this._getGlobalFeeRate().catch(e => {\r\n if (this.blockFeeCache === obj)\r\n this.blockFeeCache = null;\r\n throw e;\r\n });\r\n this.blockFeeCache = obj;\r\n }\r\n return this.blockFeeCache.feeRate;\r\n }\r\n /**\r\n * Gets the combined microLamports/CU fee rate (from localized & global fee market), cached & adjusted as for\r\n * when bribe and/or static fee should be included, format: ;[;]\r\n *\r\n * @param mutableAccounts\r\n * @private\r\n */\r\n async getFeeRate(mutableAccounts) {\r\n let feeMicroLamportPerCU = await this._getFeeRate(mutableAccounts);\r\n if (this.bribeData?.getBribeFee != null)\r\n feeMicroLamportPerCU = this.bribeData.getBribeFee(feeMicroLamportPerCU);\r\n let fee = feeMicroLamportPerCU.toString(10);\r\n if (this.getStaticFee != null) {\r\n fee += \";\" + this.getStaticFee(feeMicroLamportPerCU);\r\n }\r\n else {\r\n fee += \";0\";\r\n }\r\n if (this.bribeData?.address) {\r\n fee += \";\" + this.bribeData.address;\r\n }\r\n this.logger.debug(\"getFeeRate(): calculated fee: \" + fee);\r\n return fee;\r\n }\r\n /**\r\n * Calculates the total priority fee paid for a given compute budget at a given fee rate\r\n *\r\n * @param computeUnits\r\n * @param feeRate\r\n * @param includeStaticFee whether the include the static/base part of the fee rate\r\n */\r\n getPriorityFee(computeUnits, feeRate, includeStaticFee = true) {\r\n if (feeRate == null)\r\n return 0n;\r\n const hashArr = feeRate.split(\"#\");\r\n if (hashArr.length > 1) {\r\n feeRate = hashArr[0];\r\n }\r\n const arr = feeRate.split(\";\");\r\n const cuPrice = BigInt(arr[0]);\r\n const staticFee = includeStaticFee ? BigInt(arr[1]) : 0n;\r\n return staticFee + (cuPrice * BigInt(computeUnits) / 1000000n);\r\n }\r\n /**\r\n * Applies fee rate to a transaction at the beginning of the transaction (has to be called after\r\n * feePayer is set for the tx), specifically adds the setComputeUnitLimit & setComputeUnitPrice instruction\r\n *\r\n * @param tx\r\n * @param computeBudget\r\n * @param feeRate\r\n */\r\n applyFeeRateBegin(tx, computeBudget, feeRate) {\r\n if (feeRate == null)\r\n return false;\r\n const hashArr = feeRate.split(\"#\");\r\n if (hashArr.length > 1) {\r\n feeRate = hashArr[0];\r\n }\r\n if (computeBudget != null && computeBudget > 0)\r\n tx.add(web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({\r\n units: computeBudget,\r\n }));\r\n //Check if bribe is included\r\n const arr = feeRate.split(\";\");\r\n if (arr.length > 2) {\r\n }\r\n else {\r\n let fee = BigInt(arr[0]);\r\n if (arr.length > 1) {\r\n const staticFee = BigInt(arr[1]);\r\n const cuBigInt = BigInt(computeBudget || (200000 * Utils_1.SolanaTxUtils.getNonComputeBudgetIxs(tx)));\r\n const staticFeePerCU = staticFee * BigInt(1000000) / cuBigInt;\r\n fee += staticFeePerCU;\r\n }\r\n tx.add(web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({\r\n microLamports: fee\r\n }));\r\n }\r\n }\r\n /**\r\n * Applies fee rate to the end of the transaction (has to be called after feePayer is set for the tx),\r\n * specifically adds the bribe SystemProgram.transfer instruction\r\n *\r\n * @param tx\r\n * @param computeBudget\r\n * @param feeRate\r\n */\r\n applyFeeRateEnd(tx, computeBudget, feeRate) {\r\n if (feeRate == null)\r\n return false;\r\n const hashArr = feeRate.split(\"#\");\r\n if (hashArr.length > 1) {\r\n feeRate = hashArr[0];\r\n }\r\n //Check if bribe is included\r\n const arr = feeRate.split(\";\");\r\n if (arr.length > 2) {\r\n const cuBigInt = BigInt(computeBudget || (200000 * (Utils_1.SolanaTxUtils.getNonComputeBudgetIxs(tx) + 1)));\r\n const cuPrice = BigInt(arr[0]);\r\n const staticFee = BigInt(arr[1]);\r\n const bribeAddress = new web3_js_1.PublicKey(arr[2]);\r\n tx.add(web3_js_1.SystemProgram.transfer({\r\n fromPubkey: tx.feePayer,\r\n toPubkey: bribeAddress,\r\n lamports: staticFee + (cuBigInt * cuPrice / BigInt(1000000))\r\n }));\r\n return;\r\n }\r\n }\r\n /**\r\n * Checks if the transaction should be submitted over Jito and if yes submits it\r\n *\r\n * @param tx\r\n * @param options\r\n * @returns {Promise} null if the transaction was not sent over Jito, tx signature when tx was sent over Jito\r\n */\r\n submitTx(tx, options) {\r\n const parsedTx = web3_js_1.Transaction.from(tx);\r\n const jitoFee = this.getJitoTxFee(parsedTx);\r\n if (jitoFee == null)\r\n return null;\r\n this.logger.info(\"submitTx(): sending tx over Jito, signature: \" + parsedTx.signature + \" fee: \" + jitoFee.toString(10));\r\n return this.sendJitoTx(tx, options);\r\n }\r\n}\r\nexports.SolanaFees = SolanaFees;\r\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CoinPaprikaPriceProvider = void 0;\r\nconst HttpPriceProvider_1 = require(\"./abstract/HttpPriceProvider\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass CoinPaprikaPriceProvider extends HttpPriceProvider_1.HttpPriceProvider {\r\n constructor(coinsMap, url = \"https://api.coinpaprika.com/v1\", httpRequestTimeout) {\r\n super(coinsMap, url, httpRequestTimeout);\r\n }\r\n async fetchPrice(token, abortSignal) {\r\n const response = await (0, Utils_1.httpGet)(this.url + \"/tickers/\" + token.coinId + \"?quotes=BTC\", this.httpRequestTimeout, abortSignal);\r\n return BigInt(Math.floor(response.quotes.BTC.price * 100000000000000));\r\n }\r\n async fetchUsdPrice(abortSignal) {\r\n const response = await (0, Utils_1.httpGet)(this.url + \"/tickers/btc-bitcoin?quotes=USD\", this.httpRequestTimeout, abortSignal);\r\n return response.quotes.USD.price / 100000000;\r\n }\r\n}\r\nexports.CoinPaprikaPriceProvider = CoinPaprikaPriceProvider;\r\n","import type { Layout } from '@solana/buffer-layout';\nimport { struct, u16 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport type { PublicKey } from '@solana/web3.js';\nimport type { Account } from '../../state/account.js';\nimport type { Mint } from '../../state/mint.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\nexport const MAX_FEE_BASIS_POINTS = 10000;\nexport const ONE_IN_BASIS_POINTS = BigInt(MAX_FEE_BASIS_POINTS);\n\n/** TransferFeeConfig as stored by the program */\nexport interface TransferFee {\n /** First epoch where the transfer fee takes effect */\n epoch: bigint;\n /** Maximum fee assessed on transfers, expressed as an amount of tokens */\n maximumFee: bigint;\n /**\n * Amount of transfer collected as fees, expressed as basis points of the\n * transfer amount, ie. increments of 0.01%\n */\n transferFeeBasisPoints: number;\n}\n\n/** Transfer fee extension data for mints. */\nexport interface TransferFeeConfig {\n /** Optional authority to set the fee */\n transferFeeConfigAuthority: PublicKey;\n /** Withdraw from mint instructions must be signed by this key */\n withdrawWithheldAuthority: PublicKey;\n /** Withheld transfer fee tokens that have been moved to the mint for withdrawal */\n withheldAmount: bigint;\n /** Older transfer fee, used if the current epoch < newerTransferFee.epoch */\n olderTransferFee: TransferFee;\n /** Newer transfer fee, used if the current epoch >= newerTransferFee.epoch */\n newerTransferFee: TransferFee;\n}\n\n/** Buffer layout for de/serializing a transfer fee */\nexport function transferFeeLayout(property?: string): Layout {\n return struct([u64('epoch'), u64('maximumFee'), u16('transferFeeBasisPoints')], property);\n}\n\n/** Calculate the transfer fee */\nexport function calculateFee(transferFee: TransferFee, preFeeAmount: bigint): bigint {\n const transferFeeBasisPoints = transferFee.transferFeeBasisPoints;\n if (transferFeeBasisPoints === 0 || preFeeAmount === BigInt(0)) {\n return BigInt(0);\n } else {\n const numerator = preFeeAmount * BigInt(transferFeeBasisPoints);\n const rawFee = (numerator + ONE_IN_BASIS_POINTS - BigInt(1)) / ONE_IN_BASIS_POINTS;\n const fee = rawFee > transferFee.maximumFee ? transferFee.maximumFee : rawFee;\n return BigInt(fee);\n }\n}\n\n/** Buffer layout for de/serializing a transfer fee config extension */\nexport const TransferFeeConfigLayout = struct([\n publicKey('transferFeeConfigAuthority'),\n publicKey('withdrawWithheldAuthority'),\n u64('withheldAmount'),\n transferFeeLayout('olderTransferFee'),\n transferFeeLayout('newerTransferFee'),\n]);\n\nexport const TRANSFER_FEE_CONFIG_SIZE = TransferFeeConfigLayout.span;\n\n/** Get the fee for given epoch */\nexport function getEpochFee(transferFeeConfig: TransferFeeConfig, epoch: bigint): TransferFee {\n if (epoch >= transferFeeConfig.newerTransferFee.epoch) {\n return transferFeeConfig.newerTransferFee;\n } else {\n return transferFeeConfig.olderTransferFee;\n }\n}\n\n/** Calculate the fee for the given epoch and input amount */\nexport function calculateEpochFee(transferFeeConfig: TransferFeeConfig, epoch: bigint, preFeeAmount: bigint): bigint {\n const transferFee = getEpochFee(transferFeeConfig, epoch);\n return calculateFee(transferFee, preFeeAmount);\n}\n\n/** Transfer fee amount data for accounts. */\nexport interface TransferFeeAmount {\n /** Withheld transfer fee tokens that can be claimed by the fee authority */\n withheldAmount: bigint;\n}\n/** Buffer layout for de/serializing */\nexport const TransferFeeAmountLayout = struct([u64('withheldAmount')]);\nexport const TRANSFER_FEE_AMOUNT_SIZE = TransferFeeAmountLayout.span;\n\nexport function getTransferFeeConfig(mint: Mint): TransferFeeConfig | null {\n const extensionData = getExtensionData(ExtensionType.TransferFeeConfig, mint.tlvData);\n if (extensionData !== null) {\n return TransferFeeConfigLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n\nexport function getTransferFeeAmount(account: Account): TransferFeeAmount | null {\n const extensionData = getExtensionData(ExtensionType.TransferFeeAmount, account.tlvData);\n if (extensionData !== null) {\n return TransferFeeAmountLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n",null,"\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetSwapRefund = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst StarknetSwapModule_1 = require(\"../StarknetSwapModule\");\r\nconst StarknetAction_1 = require(\"../../base/StarknetAction\");\r\nconst StarknetFees_1 = require(\"../../base/modules/StarknetFees\");\r\nconst Refund = [\r\n { name: 'Swap hash', type: 'felt' },\r\n { name: 'Timeout', type: 'timestamp' }\r\n];\r\nclass StarknetSwapRefund extends StarknetSwapModule_1.StarknetSwapModule {\r\n /**\r\n * Action for generic Refund instruction\r\n *\r\n * @param signer\r\n * @param swapData\r\n * @param witness\r\n * @param handlerGas\r\n * @constructor\r\n * @private\r\n */\r\n Refund(signer, swapData, witness, handlerGas) {\r\n return new StarknetAction_1.StarknetAction(signer, this.root, this.contract.populateTransaction.refund(swapData.toEscrowStruct(), witness), (0, StarknetAction_1.sumStarknetGas)(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND, handlerGas));\r\n }\r\n /**\r\n * Action for cooperative refunding with signature\r\n *\r\n * @param sender\r\n * @param swapData\r\n * @param timeout\r\n * @param signature\r\n * @constructor\r\n * @private\r\n */\r\n RefundWithSignature(sender, swapData, timeout, signature) {\r\n return new StarknetAction_1.StarknetAction(sender, this.root, this.contract.populateTransaction.cooperative_refund(swapData.toEscrowStruct(), signature, BigInt(timeout)), swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT : StarknetSwapRefund.GasCosts.REFUND);\r\n }\r\n constructor(root) {\r\n super(root);\r\n }\r\n async signSwapRefund(signer, swapData, authorizationTimeout) {\r\n const authPrefix = \"refund\";\r\n const authTimeout = Math.floor(Date.now() / 1000) + authorizationTimeout;\r\n const signature = await this.root.Signatures.signTypedMessage(signer, Refund, \"Refund\", {\r\n \"Swap hash\": \"0x\" + swapData.getEscrowHash(),\r\n \"Timeout\": (0, Utils_1.toHex)(authTimeout)\r\n });\r\n return {\r\n prefix: authPrefix,\r\n timeout: authTimeout.toString(10),\r\n signature: signature\r\n };\r\n }\r\n async isSignatureValid(swapData, timeout, prefix, signature) {\r\n if (prefix !== \"refund\")\r\n throw new base_1.SignatureVerificationError(\"Invalid prefix\");\r\n const expiryTimestamp = BigInt(timeout);\r\n const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n const isExpired = (expiryTimestamp - currentTimestamp) < BigInt(this.root.authGracePeriod);\r\n if (isExpired)\r\n throw new base_1.SignatureVerificationError(\"Authorization expired!\");\r\n const valid = await this.root.Signatures.isValidSignature(signature, swapData.claimer, Refund, \"Refund\", {\r\n \"Swap hash\": \"0x\" + swapData.getEscrowHash(),\r\n \"Timeout\": (0, Utils_1.toHex)(expiryTimestamp)\r\n });\r\n if (!valid) {\r\n throw new base_1.SignatureVerificationError(\"Invalid signature!\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Creates transactions required for refunding timed out swap\r\n *\r\n * @param signer\r\n * @param swapData swap data to refund\r\n * @param check whether to check if swap is already expired and refundable\r\n * @param feeRate fee rate to be used for the transactions\r\n * @param witnessData\r\n */\r\n async txsRefund(signer, swapData, check, feeRate, witnessData) {\r\n const refundHandler = this.root.refundHandlersByAddress[swapData.refundHandler.toLowerCase()];\r\n if (refundHandler == null)\r\n throw new Error(\"Invalid refund handler\");\r\n if (check && !await (0, Utils_1.tryWithRetries)(() => this.root.isRequestRefundable(swapData.offerer.toString(), swapData), this.retryPolicy)) {\r\n throw new base_1.SwapDataVerificationError(\"Not refundable yet!\");\r\n }\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n const { initialTxns, witness } = await refundHandler.getWitness(signer, swapData, witnessData, feeRate);\r\n const action = this.Refund(signer, swapData, witness, refundHandler.getGas(swapData));\r\n await action.addToTxs(initialTxns, feeRate);\r\n this.logger.debug(\"txsRefund(): creating refund transaction, swap: \" + swapData.getClaimHash());\r\n return initialTxns;\r\n }\r\n /**\r\n * Creates transactions required for refunding the swap with authorization signature, also unwraps WSOL to SOL\r\n *\r\n * @param signer\r\n * @param swapData swap data to refund\r\n * @param timeout signature timeout\r\n * @param prefix signature prefix of the counterparty\r\n * @param signature signature of the counterparty\r\n * @param check whether to check if swap is committed before attempting refund\r\n * @param feeRate fee rate to be used for the transactions\r\n */\r\n async txsRefundWithAuthorization(signer, swapData, timeout, prefix, signature, check, feeRate) {\r\n if (check && !await (0, Utils_1.tryWithRetries)(() => this.root.isCommited(swapData), this.retryPolicy)) {\r\n throw new base_1.SwapDataVerificationError(\"Not correctly committed\");\r\n }\r\n await (0, Utils_1.tryWithRetries)(() => this.isSignatureValid(swapData, timeout, prefix, signature), this.retryPolicy, (e) => e instanceof base_1.SignatureVerificationError);\r\n const action = this.RefundWithSignature(signer, swapData, timeout, JSON.parse(signature));\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n this.logger.debug(\"txsRefundWithAuthorization(): creating refund transaction, swap: \" + swapData.getClaimHash() +\r\n \" auth expiry: \" + timeout + \" signature: \" + signature);\r\n return [await action.tx(feeRate)];\r\n }\r\n /**\r\n * Get the estimated solana transaction fee of the refund transaction, in the worst case scenario in case where the\r\n * ATA needs to be initialized again (i.e. adding the ATA rent exempt lamports to the fee)\r\n */\r\n async getRefundFee(swapData, feeRate) {\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n return StarknetFees_1.StarknetFees.getGasFee(swapData.payIn ? StarknetSwapRefund.GasCosts.REFUND_PAY_OUT.l1 : StarknetSwapRefund.GasCosts.REFUND.l1, feeRate);\r\n }\r\n}\r\nexports.StarknetSwapRefund = StarknetSwapRefund;\r\nStarknetSwapRefund.GasCosts = {\r\n REFUND: { l1: 750, l2: 0 },\r\n REFUND_PAY_OUT: { l1: 1250, l2: 0 }\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaBtcStoredHeader = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst buffer_1 = require(\"buffer\");\r\nclass SolanaBtcStoredHeader {\r\n constructor(obj) {\r\n this.chainWork = obj.chainWork;\r\n this.header = obj.header;\r\n this.lastDiffAdjustment = obj.lastDiffAdjustment;\r\n this.blockheight = obj.blockheight;\r\n this.prevBlockTimestamps = obj.prevBlockTimestamps;\r\n }\r\n getBlockheight() {\r\n return this.blockheight;\r\n }\r\n getChainWork() {\r\n return buffer_1.Buffer.from(this.chainWork);\r\n }\r\n getHeader() {\r\n return this.header;\r\n }\r\n getLastDiffAdjustment() {\r\n return this.lastDiffAdjustment;\r\n }\r\n getPrevBlockTimestamps() {\r\n return this.prevBlockTimestamps;\r\n }\r\n /**\r\n * Computes prevBlockTimestamps for a next block, shifting the old block timestamps to the left & appending\r\n * this block's timestamp to the end\r\n *\r\n * @private\r\n */\r\n computeNextBlockTimestamps() {\r\n const prevBlockTimestamps = [...this.prevBlockTimestamps];\r\n for (let i = 1; i < 10; i++) {\r\n prevBlockTimestamps[i - 1] = prevBlockTimestamps[i];\r\n }\r\n prevBlockTimestamps[9] = this.header.timestamp;\r\n return prevBlockTimestamps;\r\n }\r\n /**\r\n * Computes total chain work after a new header with \"nbits\" is added to the chain\r\n *\r\n * @param nbits\r\n * @private\r\n */\r\n computeNextChainWork(nbits) {\r\n const chainWork = [...this.chainWork];\r\n base_1.StatePredictorUtils.addInPlace(chainWork, [...base_1.StatePredictorUtils.getDifficulty(nbits)]);\r\n return chainWork;\r\n }\r\n /**\r\n * Computes lastDiffAdjustment, this changes only once every DIFF_ADJUSTMENT_PERIOD blocks\r\n *\r\n * @param headerTimestamp\r\n * @private\r\n */\r\n computeNextLastDiffAdjustment(headerTimestamp) {\r\n const blockheight = this.blockheight + 1;\r\n let lastDiffAdjustment = this.lastDiffAdjustment;\r\n if (blockheight % base_1.StatePredictorUtils.DIFF_ADJUSTMENT_PERIOD === 0) {\r\n lastDiffAdjustment = headerTimestamp;\r\n }\r\n return lastDiffAdjustment;\r\n }\r\n computeNext(header) {\r\n return new SolanaBtcStoredHeader({\r\n chainWork: this.computeNextChainWork(header.nbits),\r\n prevBlockTimestamps: this.computeNextBlockTimestamps(),\r\n blockheight: this.blockheight + 1,\r\n lastDiffAdjustment: this.computeNextLastDiffAdjustment(header.timestamp),\r\n header\r\n });\r\n }\r\n}\r\nexports.SolanaBtcStoredHeader = SolanaBtcStoredHeader;\r\n","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nexport type Hex = Uint8Array | string; // hex strings are accepted for simplicity\nexport type PrivKey = Hex | bigint; // bigints are accepted to ease learning curve\nexport type CHash = {\n (message: Uint8Array | string): Uint8Array;\n blockLen: number;\n outputLen: number;\n create(opts?: { dkLen?: number }): any; // For shake\n};\nexport type FHash = (message: Uint8Array | string) => Uint8Array;\n\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\nexport function abytes(item: unknown): void {\n if (!isBytes(item)) throw new Error('Uint8Array expected');\n}\n\nexport function abool(title: string, value: boolean): void {\n if (typeof value !== 'boolean') throw new Error(title + ' boolean expected, got ' + value);\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\nexport function numberToHexUnpadded(num: number | bigint): string {\n const hex = num.toString(16);\n return hex.length & 1 ? '0' + hex : hex;\n}\n\nexport function hexToNumber(hex: string): bigint {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes: Uint8Array): bigint {\n abytes(bytes);\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\n\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n: number | bigint, len: number): Uint8Array {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n: number | bigint): Uint8Array {\n return hexToBytes(numberToHexUnpadded(n));\n}\n\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title: string, hex: Hex, expectedLength?: number): Uint8Array {\n let res: Uint8Array;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n } catch (e) {\n throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n }\n } else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n } else {\n throw new Error(title + ' must be hex string or Uint8Array');\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n return res;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n return diff === 0;\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n// Is positive bigint\nconst isPosBig = (n: bigint) => typeof n === 'bigint' && _0n <= n;\n\nexport function inRange(n: bigint, min: bigint, max: bigint): boolean {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title: string, n: bigint, min: bigint, max: bigint): void {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n\n// Bit operations\n\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n: bigint): number {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1);\n return len;\n}\n\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n: bigint, pos: number): bigint {\n return (n >> BigInt(pos)) & _1n;\n}\n\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n: bigint, pos: number, value: boolean): bigint {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n: number): bigint => (_2n << BigInt(n - 1)) - _1n;\n\n// DRBG\n\nconst u8n = (data?: any) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr: any) => Uint8Array.from(arr); // another shortcut\ntype Pred = (v: Uint8Array) => T | undefined;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(\n hashLen: number,\n qByteLen: number,\n hmacFn: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array\n): (seed: Uint8Array, predicate: Pred) => T {\n if (typeof hashLen !== 'number' || hashLen < 2) throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2) throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function') throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b: Uint8Array[]) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0) return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000) throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out: Uint8Array[] = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed: Uint8Array, pred: Pred): T => {\n reset();\n reseed(seed); // Steps D-G\n let res: T | undefined = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen()))) reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n\n// Validating curves and fields\n\nconst validatorFns = {\n bigint: (val: any): boolean => typeof val === 'bigint',\n function: (val: any): boolean => typeof val === 'function',\n boolean: (val: any): boolean => typeof val === 'boolean',\n string: (val: any): boolean => typeof val === 'string',\n stringOrUint8Array: (val: any): boolean => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val: any): boolean => Number.isSafeInteger(val),\n array: (val: any): boolean => Array.isArray(val),\n field: (val: any, object: any): any => (object as any).Fp.isValid(val),\n hash: (val: any): boolean => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n} as const;\ntype Validator = keyof typeof validatorFns;\ntype ValMap> = { [K in keyof T]?: Validator };\n// type Record = { [P in K]: T; }\n\nexport function validateObject>(\n object: T,\n validators: ValMap,\n optValidators: ValMap = {}\n): T {\n const checkField = (fieldName: keyof T, type: Validator, isOptional: boolean) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function') throw new Error('invalid validator function');\n\n const val = object[fieldName as keyof typeof object];\n if (isOptional && val === undefined) return;\n if (!checkVal(val, object)) {\n throw new Error(\n 'param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val\n );\n }\n };\n for (const [fieldName, type] of Object.entries(validators)) checkField(fieldName, type!, false);\n for (const [fieldName, type] of Object.entries(optValidators)) checkField(fieldName, type!, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n\n/**\n * throws not implemented error\n */\nexport const notImplemented = (): never => {\n throw new Error('not implemented');\n};\n\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(\n fn: (arg: T, ...args: O) => R\n): (arg: T, ...args: O) => R {\n const map = new WeakMap();\n return (arg: T, ...args: O): R => {\n const val = map.get(arg);\n if (val !== undefined) return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n",null,"import type { ConfirmOptions, Connection, Signer, TransactionSignature } from '@solana/web3.js';\nimport type { PublicKey } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../../constants.js';\nimport {\n createInitializeTransferHookInstruction,\n createTransferCheckedWithFeeAndTransferHookInstruction,\n createTransferCheckedWithTransferHookInstruction,\n createUpdateTransferHookInstruction,\n} from './instructions.js';\n\n/**\n * Initialize a transfer hook on a mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint to initialize with extension\n * @param authority Transfer hook authority account\n * @param transferHookProgramId The transfer hook program account\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function initializeTransferHook(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n authority: PublicKey,\n transferHookProgramId: PublicKey,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(\n createInitializeTransferHookInstruction(mint, authority, transferHookProgramId, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n}\n\n/**\n * Update the transfer hook program on a mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint to modify\n * @param transferHookProgramId New transfer hook program account\n * @param authority Transfer hook update authority\n * @param multiSigners Signing accounts if `freezeAuthority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function updateTransferHook(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n transferHookProgramId: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createUpdateTransferHookInstruction(mint, authorityPublicKey, transferHookProgramId, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Transfer tokens from one account to another, asserting the token mint, and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param source Source account\n * @param mint Mint for the account\n * @param destination Destination account\n * @param authority Authority of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function transferCheckedWithTransferHook(\n connection: Connection,\n payer: Signer,\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n amount: bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n await createTransferCheckedWithTransferHookInstruction(\n connection,\n source,\n mint,\n destination,\n authorityPublicKey,\n amount,\n decimals,\n signers,\n confirmOptions?.commitment,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Transfer tokens from one account to another, asserting the transfer fee, token mint, and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param source Source account\n * @param mint Mint for the account\n * @param destination Destination account\n * @param authority Authority of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param fee The calculated fee for the transfer fee extension\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function transferCheckedWithFeeAndTransferHook(\n connection: Connection,\n payer: Signer,\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n amount: bigint,\n decimals: number,\n fee: bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n await createTransferCheckedWithFeeAndTransferHookInstruction(\n connection,\n source,\n mint,\n destination,\n authorityPublicKey,\n amount,\n decimals,\n fee,\n signers,\n confirmOptions?.commitment,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions } from '../constants.js';\nimport { TokenUnsupportedInstructionError } from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** Deserialized instruction for the initiation of an immutable owner account */\nexport interface InitializeNonTransferableMintInstructionData {\n instruction: TokenInstruction.InitializeNonTransferableMint;\n}\n\n/** The struct that represents the instruction data as it is read by the program */\nexport const initializeNonTransferableMintInstructionData = struct([\n u8('instruction'),\n]);\n\n/**\n * Construct an InitializeNonTransferableMint instruction\n *\n * @param mint Mint Account to make non-transferable\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeNonTransferableMintInstruction(\n mint: PublicKey,\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeNonTransferableMintInstructionData.span);\n initializeNonTransferableMintInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeNonTransferableMint,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.gift = void 0;\nvar gift = {\n \"viewBox\": \"0 0 1536 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M928 1356v-56-468-192h-320v192 468 56q0 25 18 38.5t46 13.5h192q28 0 46-13.5t18-38.5zM472 512h195l-126-161q-26-31-69-31-40 0-68 28t-28 68 28 68 68 28zM1160 416q0-40-28-68t-68-28q-43 0-69 31l-125 161h194q40 0 68-28t28-68zM1536 672v320q0 14-9 23t-23 9h-96v416q0 40-28 68t-68 28h-1088q-40 0-68-28t-28-68v-416h-96q-14 0-23-9t-9-23v-320q0-14 9-23t23-9h440q-93 0-158.5-65.5t-65.5-158.5 65.5-158.5 158.5-65.5q107 0 168 77l128 165 128-165q61-77 168-77 93 0 158.5 65.5t65.5 158.5-65.5 158.5-158.5 65.5h440q14 0 23 9t9 23z\"\n }\n }]\n};\nexports.gift = gift;","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface RevokeInstructionData {\n instruction: TokenInstruction.Revoke;\n}\n\n/** TODO: docs */\nexport const revokeInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a Revoke instruction\n *\n * @param account Address of the token account\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createRevokeInstruction(\n account: PublicKey,\n owner: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], owner, multiSigners);\n\n const data = Buffer.alloc(revokeInstructionData.span);\n revokeInstructionData.encode({ instruction: TokenInstruction.Revoke }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Revoke instruction */\nexport interface DecodedRevokeInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Revoke;\n };\n}\n\n/**\n * Decode a Revoke instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeRevokeInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedRevokeInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== revokeInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, owner, multiSigners },\n data,\n } = decodeRevokeInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Revoke) throw new TokenInvalidInstructionTypeError();\n if (!account || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Revoke instruction */\nexport interface DecodedRevokeInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a Revoke instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeRevokeInstructionUnchecked({\n programId,\n keys: [account, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedRevokeInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n owner,\n multiSigners,\n },\n data: revokeInstructionData.decode(data),\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.exclamationTriangle = void 0;\nvar exclamationTriangle = {\n \"viewBox\": \"0 0 1792 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M1024 1375v-190q0-14-9.5-23.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 23.5v190q0 14 9.5 23.5t22.5 9.5h192q13 0 22.5-9.5t9.5-23.5zM1022 1001l18-459q0-12-10-19-13-11-24-11h-220q-11 0-24 11-10 7-10 21l17 457q0 10 10 16.5t24 6.5h185q14 0 23.5-6.5t10.5-16.5zM1008 67l768 1408q35 63-2 126-17 29-46.5 46t-63.5 17h-1536q-34 0-63.5-17t-46.5-46q-37-63-2-126l768-1408q17-31 47-49t65-18 65 18 47 49z\"\n }\n }]\n};\nexports.exclamationTriangle = exclamationTriangle;","export * from './instructions.js';\nexport * from './state.js';\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.accumulative = void 0;\r\nconst utils_1 = require(\"./utils\");\r\n// add inputs until we reach or surpass the target value (or deplete)\r\n// worst-case: O(n)\r\nfunction accumulative(utxos, outputs, feeRate, type) {\r\n if (!isFinite(utils_1.utils.uintOrNaN(feeRate)))\r\n return null;\r\n let bytesAccum = utils_1.utils.transactionBytes([], outputs, type);\r\n let fee = feeRate * bytesAccum;\r\n let cpfpAddFee = 0;\r\n let inAccum = 0;\r\n const inputs = [];\r\n const outAccum = utils_1.utils.sumOrNaN(outputs);\r\n console.log(\"CoinSelect: accumulative(): total output: \", outAccum);\r\n for (let i = 0; i < utxos.length; ++i) {\r\n const utxo = utxos[i];\r\n const utxoBytes = utils_1.utils.inputBytes(utxo);\r\n const utxoFee = feeRate * utxoBytes;\r\n const utxoValue = utils_1.utils.uintOrNaN(utxo.value);\r\n let cpfpFee = 0;\r\n if (utxo.cpfp != null && utxo.cpfp.txEffectiveFeeRate < feeRate)\r\n cpfpFee = utxo.cpfp.txVsize * (feeRate - utxo.cpfp.txEffectiveFeeRate);\r\n // skip detrimental input\r\n if (utxoFee + cpfpFee > utxo.value) {\r\n console.log(\"CoinSelect: accumulative(\" + i + \"): Skipping detrimental output, cpfpFee: \" + cpfpFee + \" utxoFee: \" + utxoFee + \" value: \" + utxo.value);\r\n if (i === utxos.length - 1)\r\n return { fee: (feeRate * (bytesAccum + utxoBytes)) + cpfpAddFee + cpfpFee };\r\n continue;\r\n }\r\n bytesAccum += utxoBytes;\r\n inAccum += utxoValue;\r\n cpfpAddFee += cpfpFee;\r\n inputs.push(utxo);\r\n fee = (feeRate * bytesAccum) + cpfpAddFee;\r\n console.log(\"CoinSelect: accumulative(\" + i + \"): total fee: \", fee);\r\n console.log(\"CoinSelect: accumulative(\" + i + \"): input value: \", inAccum);\r\n console.log(\"CoinSelect: accumulative(\" + i + \"): cpfpAddFee: \", cpfpAddFee);\r\n // go again?\r\n if (inAccum < outAccum + fee)\r\n continue;\r\n return utils_1.utils.finalize(inputs, outputs, feeRate, type, cpfpAddFee);\r\n }\r\n return { fee };\r\n}\r\nexports.accumulative = accumulative;\r\n","\"use strict\";\n\nvar defaultParseOptions = {\n decodeValues: true,\n map: false,\n silent: false,\n};\n\nfunction isNonEmptyString(str) {\n return typeof str === \"string\" && !!str.trim();\n}\n\nfunction parseString(setCookieValue, options) {\n var parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\n var nameValuePairStr = parts.shift();\n var parsed = parseNameValuePair(nameValuePairStr);\n var name = parsed.name;\n var value = parsed.value;\n\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n try {\n value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value\n } catch (e) {\n console.error(\n \"set-cookie-parser encountered an error while decoding a cookie with value '\" +\n value +\n \"'. Set options.decodeValues to false to disable this feature.\",\n e\n );\n }\n\n var cookie = {\n name: name,\n value: value,\n };\n\n parts.forEach(function (part) {\n var sides = part.split(\"=\");\n var key = sides.shift().trimLeft().toLowerCase();\n var value = sides.join(\"=\");\n if (key === \"expires\") {\n cookie.expires = new Date(value);\n } else if (key === \"max-age\") {\n cookie.maxAge = parseInt(value, 10);\n } else if (key === \"secure\") {\n cookie.secure = true;\n } else if (key === \"httponly\") {\n cookie.httpOnly = true;\n } else if (key === \"samesite\") {\n cookie.sameSite = value;\n } else if (key === \"partitioned\") {\n cookie.partitioned = true;\n } else {\n cookie[key] = value;\n }\n });\n\n return cookie;\n}\n\nfunction parseNameValuePair(nameValuePairStr) {\n // Parses name-value-pair according to rfc6265bis draft\n\n var name = \"\";\n var value = \"\";\n var nameValueArr = nameValuePairStr.split(\"=\");\n if (nameValueArr.length > 1) {\n name = nameValueArr.shift();\n value = nameValueArr.join(\"=\"); // everything after the first =, joined by a \"=\" if there was more than one part\n } else {\n value = nameValuePairStr;\n }\n\n return { name: name, value: value };\n}\n\nfunction parse(input, options) {\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n if (!input) {\n if (!options.map) {\n return [];\n } else {\n return {};\n }\n }\n\n if (input.headers) {\n if (typeof input.headers.getSetCookie === \"function\") {\n // for fetch responses - they combine headers of the same type in the headers array,\n // but getSetCookie returns an uncombined array\n input = input.headers.getSetCookie();\n } else if (input.headers[\"set-cookie\"]) {\n // fast-path for node.js (which automatically normalizes header names to lower-case\n input = input.headers[\"set-cookie\"];\n } else {\n // slow-path for other environments - see #25\n var sch =\n input.headers[\n Object.keys(input.headers).find(function (key) {\n return key.toLowerCase() === \"set-cookie\";\n })\n ];\n // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36\n if (!sch && input.headers.cookie && !options.silent) {\n console.warn(\n \"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\"\n );\n }\n input = sch;\n }\n }\n if (!Array.isArray(input)) {\n input = [input];\n }\n\n if (!options.map) {\n return input.filter(isNonEmptyString).map(function (str) {\n return parseString(str, options);\n });\n } else {\n var cookies = {};\n return input.filter(isNonEmptyString).reduce(function (cookies, str) {\n var cookie = parseString(str, options);\n cookies[cookie.name] = cookie;\n return cookies;\n }, cookies);\n }\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n\n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nfunction splitCookiesString(cookiesString) {\n if (Array.isArray(cookiesString)) {\n return cookiesString;\n }\n if (typeof cookiesString !== \"string\") {\n return [];\n }\n\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n\n skipWhitespace();\n nextStart = pos;\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n\n return cookiesStrings;\n}\n\nmodule.exports = parse;\nmodule.exports.parse = parse;\nmodule.exports.parseString = parseString;\nmodule.exports.splitCookiesString = splitCookiesString;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n// let shoextra; /* extra bits table to use */\n let match; /* use base and extra for symbol >= match */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n match = 20;\n\n } else if (type === LENS) {\n base = lbase;\n extra = lext;\n match = 257;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n match = 0;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] + 1 < match) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] >= match) {\n here_op = extra[work[sym] - match];\n here_val = base[work[sym] - match];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nmodule.exports = inflate_table;\n","import { hex } from '@scure/base';\nimport * as P from 'micro-packed';\nimport { Address, type CustomScript, OutScript, checkScript, tapLeafHash } from './payment.js';\nimport * as psbt from './psbt.js';\nimport { CompactSizeLen, RawOutput, RawTx, RawWitness, Script, VarBytes } from './script.js';\nimport {\n DEFAULT_SEQUENCE,\n SignatureHash,\n Transaction,\n type TxOpts,\n inputBeforeSign,\n} from './transaction.js'; // circular\nimport {\n type Bytes,\n NETWORK,\n PubT,\n TAPROOT_UNSPENDABLE_KEY,\n compareBytes,\n equalBytes,\n isBytes,\n sha256,\n validatePubkey,\n} from './utils.js';\n\nexport type PSBTInputs = psbt.PSBTKeyMapKeys;\n\n// Normalizes input\nexport function getPrevOut(input: psbt.TransactionInput): P.UnwrapCoder {\n if (input.nonWitnessUtxo) {\n if (input.index === undefined) throw new Error('Unknown input index');\n return input.nonWitnessUtxo.outputs[input.index];\n } else if (input.witnessUtxo) return input.witnessUtxo;\n else throw new Error('Cannot find previous output info');\n}\n\nexport function normalizeInput(\n i: psbt.TransactionInputUpdate,\n cur?: psbt.TransactionInput,\n allowedFields?: (keyof psbt.TransactionInput)[],\n disableScriptCheck = false\n): psbt.TransactionInput {\n let { nonWitnessUtxo, txid } = i;\n // String support for common fields. We usually prefer Uint8Array to avoid errors\n // like hex looking string accidentally passed, however, in case of nonWitnessUtxo\n // it is better to expect string, since constructing this complex object will be\n // difficult for user\n if (typeof nonWitnessUtxo === 'string') nonWitnessUtxo = hex.decode(nonWitnessUtxo);\n if (isBytes(nonWitnessUtxo)) nonWitnessUtxo = RawTx.decode(nonWitnessUtxo);\n if (!('nonWitnessUtxo' in i) && nonWitnessUtxo === undefined)\n nonWitnessUtxo = cur?.nonWitnessUtxo;\n if (typeof txid === 'string') txid = hex.decode(txid);\n // TODO: if we have nonWitnessUtxo, we can extract txId from here\n if (txid === undefined) txid = cur?.txid;\n let res: PSBTInputs = { ...cur, ...i, nonWitnessUtxo, txid };\n if (!('nonWitnessUtxo' in i) && res.nonWitnessUtxo === undefined) delete res.nonWitnessUtxo;\n if (res.sequence === undefined) res.sequence = DEFAULT_SEQUENCE;\n if (res.tapMerkleRoot === null) delete res.tapMerkleRoot;\n res = psbt.mergeKeyMap(psbt.PSBTInput, res, cur, allowedFields);\n psbt.PSBTInputCoder.encode(res); // Validates that everything is correct at this point\n\n let prevOut;\n if (res.nonWitnessUtxo && res.index !== undefined)\n prevOut = res.nonWitnessUtxo.outputs[res.index];\n else if (res.witnessUtxo) prevOut = res.witnessUtxo;\n if (prevOut && !disableScriptCheck)\n checkScript(prevOut && prevOut.script, res.redeemScript, res.witnessScript);\n return res;\n}\n\nexport function getInputType(input: psbt.TransactionInput, allowLegacyWitnessUtxo = false) {\n let txType = 'legacy';\n let defaultSighash = SignatureHash.ALL;\n const prevOut = getPrevOut(input);\n const first = OutScript.decode(prevOut.script);\n let type = first.type;\n let cur = first;\n const stack = [first];\n if (first.type === 'tr') {\n defaultSighash = SignatureHash.DEFAULT;\n return {\n txType: 'taproot',\n type: 'tr',\n last: first,\n lastScript: prevOut.script,\n defaultSighash,\n sighash: input.sighashType || defaultSighash,\n };\n } else {\n if (first.type === 'wpkh' || first.type === 'wsh') txType = 'segwit';\n if (first.type === 'sh') {\n if (!input.redeemScript) throw new Error('inputType: sh without redeemScript');\n let child = OutScript.decode(input.redeemScript);\n if (child.type === 'wpkh' || child.type === 'wsh') txType = 'segwit';\n stack.push(child);\n cur = child;\n type += `-${child.type}`;\n }\n // wsh can be inside sh\n if (cur.type === 'wsh') {\n if (!input.witnessScript) throw new Error('inputType: wsh without witnessScript');\n let child = OutScript.decode(input.witnessScript);\n if (child.type === 'wsh') txType = 'segwit';\n stack.push(child);\n cur = child;\n type += `-${child.type}`;\n }\n const last = stack[stack.length - 1];\n if (last.type === 'sh' || last.type === 'wsh')\n throw new Error('inputType: sh/wsh cannot be terminal type');\n const lastScript = OutScript.encode(last);\n const res = {\n type,\n txType,\n last,\n lastScript,\n defaultSighash,\n sighash: input.sighashType || defaultSighash,\n };\n if (txType === 'legacy' && !allowLegacyWitnessUtxo && !input.nonWitnessUtxo) {\n throw new Error(\n `Transaction/sign: legacy input without nonWitnessUtxo, can result in attack that forces paying higher fees. Pass allowLegacyWitnessUtxo=true, if you sure`\n );\n }\n return res;\n }\n}\n\nexport const toVsize = (weight: number): number => Math.ceil(weight / 4);\n// UTXO Select\nexport type Output = { address: string; amount: bigint } | { script: Uint8Array; amount: bigint };\nexport type Accumulated =\n | {\n indices: number[];\n fee: bigint | undefined;\n weight: number;\n total: bigint;\n }\n | undefined;\ntype TapLeafScript = psbt.TransactionInput['tapLeafScript'];\ntype TB = Parameters[0];\nconst encodeTapBlock = (item: TB) => psbt.TaprootControlBlock.encode(item);\n\nfunction iterLeafs(tapLeafScript: TapLeafScript, sigSize: number, customScripts?: CustomScript[]) {\n if (!tapLeafScript || !tapLeafScript.length) throw new Error('no leafs');\n const empty = () => new Uint8Array(sigSize);\n // If user want to select specific leaf, which can signed,\n // it is possible to remove all other leafs manually.\n // Sort leafs by control block length.\n const leafs = tapLeafScript.sort(\n (a, b) => encodeTapBlock(a[0]).length - encodeTapBlock(b[0]).length\n );\n for (const [cb, _script] of leafs) {\n // Last byte is version\n const script = _script.slice(0, -1);\n const ver = _script[_script.length - 1];\n const outs = OutScript.decode(script);\n\n let signatures: Bytes[] = [];\n if (outs.type === 'tr_ms') {\n const m = outs.m;\n const n = outs.pubkeys.length - m;\n for (let i = 0; i < m; i++) signatures.push(empty());\n for (let i = 0; i < n; i++) signatures.push(P.EMPTY);\n } else if (outs.type === 'tr_ns') {\n for (const _pub of outs.pubkeys) signatures.push(empty());\n } else {\n if (!customScripts) throw new Error('Finalize: Unknown tapLeafScript');\n const leafHash = tapLeafHash(script, ver);\n for (const c of customScripts) {\n if (!c.finalizeTaproot) continue;\n const scriptDecoded = Script.decode(script);\n const csEncoded = c.encode(scriptDecoded);\n if (csEncoded === undefined) continue;\n const pubKeys = scriptDecoded.filter((i) => {\n if (!isBytes(i)) return false;\n try {\n validatePubkey(i, PubT.schnorr);\n return true;\n } catch (e) {\n return false;\n }\n }) as Bytes[];\n const finalized = c.finalizeTaproot(\n script,\n csEncoded,\n pubKeys.map((pubKey) => [{ pubKey, leafHash }, empty()])\n );\n if (!finalized) continue;\n return finalized.concat(encodeTapBlock(cb));\n }\n }\n // Witness is stack, so last element will be used first\n return signatures.reverse().concat([script, encodeTapBlock(cb)]);\n }\n throw new Error('there was no witness');\n}\n\nfunction estimateInput(\n inputType: ReturnType,\n input: psbt.TransactionInput,\n opts: TxOpts\n) {\n let script: Bytes = P.EMPTY;\n let witness: Bytes[] | undefined;\n\n // schnorr sig is always 64 bytes. except for cases when sighash is not default!\n if (inputType.txType === 'taproot') {\n const SCHNORR_SIG_SIZE = inputType.sighash !== SignatureHash.DEFAULT ? 65 : 64;\n if (input.tapInternalKey && !equalBytes(input.tapInternalKey, TAPROOT_UNSPENDABLE_KEY)) {\n witness = [new Uint8Array(SCHNORR_SIG_SIZE)];\n } else if (input.tapLeafScript) {\n witness = iterLeafs(input.tapLeafScript, SCHNORR_SIG_SIZE, opts.customScripts);\n } else throw new Error('estimateInput/taproot: unknown input');\n } else {\n // It is possible to grind signatures until it has minimal size (but changing fee value +N satoshi),\n // which will make estimations exact. But will be very hard for multi sig (need to make sure all signatures has small size).\n const empty = () => new Uint8Array(72); // max size of sigs\n const emptyPub = () => new Uint8Array(33); // size of pubkey\n let inputScript = P.EMPTY;\n let inputWitness: Uint8Array[] = [];\n const ltype = inputType.last.type;\n if (ltype === 'ms') {\n const m = inputType.last.m;\n const sig: (number | Uint8Array)[] = [0];\n for (let i = 0; i < m; i++) sig.push(empty());\n inputScript = Script.encode(sig);\n } else if (ltype === 'pk') {\n // 71 sig + 1 sighash\n inputScript = Script.encode([empty()]);\n } else if (ltype === 'pkh') {\n inputScript = Script.encode([empty(), emptyPub()]);\n } else if (ltype === 'wpkh') {\n inputScript = P.EMPTY;\n inputWitness = [empty(), emptyPub()];\n } else if (ltype === 'unknown' && !opts.allowUnknownInputs)\n throw new Error('Unknown inputs are not allowed');\n if (inputType.type.includes('wsh-')) {\n // P2WSH\n if (inputScript.length && inputType.lastScript.length) {\n inputWitness = Script.decode(inputScript).map((i) => {\n if (i === 0) return P.EMPTY;\n if (isBytes(i)) return i;\n throw new Error(`Wrong witness op=${i}`);\n });\n }\n inputWitness = inputWitness.concat(inputType.lastScript);\n }\n if (inputType.txType === 'segwit') witness = inputWitness;\n if (inputType.type.startsWith('sh-wsh-')) {\n script = Script.encode([Script.encode([0, new Uint8Array(sha256.outputLen)])]);\n } else if (inputType.type.startsWith('sh-')) {\n script = Script.encode([...Script.decode(inputScript), inputType.lastScript]);\n } else if (inputType.type.startsWith('wsh-')) {\n } else if (inputType.txType !== 'segwit') script = inputScript;\n }\n let weight = 160 + 4 * VarBytes.encode(script).length;\n let hasWitnesses = false;\n if (witness) {\n weight += RawWitness.encode(witness).length;\n hasWitnesses = true;\n }\n return { weight, hasWitnesses };\n}\n\n// Exported for tests, internal method\nexport const _cmpBig = (a: bigint, b: bigint): 0 | 1 | -1 => {\n const n = a - b;\n if (n < 0n) return -1;\n else if (n > 0n) return 1;\n return 0;\n};\n\nexport type EstimatorOpts = TxOpts & {\n // NOTE: fees less than 1 satoshi per vbyte is not supported. Please create issue if you have valid use case for that.\n feePerByte: bigint; // satoshi per vbyte\n changeAddress: string; // address where change will be sent\n // Optional\n alwaysChange?: boolean; // always create change, even if less than dust threshold\n bip69?: boolean; // https://github.com/bitcoin/bips/blob/master/bip-0069.mediawiki\n network?: typeof NETWORK;\n dust?: number; // how much vbytes considered dust?\n dustRelayFeeRate?: bigint; // fee per dust byte (DUST_RELAY_TX_FEE)\n createTx?: boolean; // Create tx inside selection\n requiredInputs?: psbt.TransactionInputUpdate[]; // these inputs always will be used\n allowSameUtxo?: boolean; // allow using UTXO multiple times (for test purposes)\n};\n\nfunction getScript(o: Output, opts: TxOpts = {}, network = NETWORK) {\n let script;\n if ('script' in o && isBytes(o.script)) {\n script = o.script;\n }\n if ('address' in o) {\n if (typeof o.address !== 'string')\n throw new Error(`Estimator: wrong output address=${o.address}`);\n script = OutScript.encode(Address(network).decode(o.address));\n }\n if (!script) throw new Error('Estimator: wrong output script');\n if (typeof o.amount !== 'bigint')\n throw new Error(\n `Estimator: wrong output amount=${\n o.amount\n }, should be of type bigint but got ${typeof o.amount}.`\n );\n if (script && !opts.allowUnknownOutputs && OutScript.decode(script).type === 'unknown') {\n throw new Error(\n 'Estimator: unknown output script type, there is a chance that input is unspendable. Pass allowUnknownOutputs=true, if you sure'\n );\n }\n if (!opts.disableScriptCheck) checkScript(script);\n return script;\n}\n\n// exact is meaningless without additional accum (will often fail if not possible to find right utxo)\n// -> we support only exact+accum or accum\ntype SortStrategy = 'Newest' | 'Oldest' | 'Smallest' | 'Biggest';\ntype ExactStrategy = `exact${SortStrategy}`;\ntype AccumStrategy = `accum${SortStrategy}`;\n\nexport type SelectionStrategy =\n | 'all'\n | 'default'\n | AccumStrategy\n | `${ExactStrategy}/${AccumStrategy}`;\n\n// class, because we need to re-use normalized inputs, instead of parsing each time\n// internal stuff, exported for tests only\nexport class _Estimator {\n private baseWeight: number;\n private changeWeight: number;\n private amount: bigint;\n private requiredIndices: number[] = [];\n private normalizedInputs: {\n inputType: ReturnType;\n normalized: ReturnType;\n amount: bigint;\n value: bigint;\n estimate: { weight: number; hasWitnesses: boolean };\n }[];\n // Dust used in accumExact + change address algo\n // - change address: can be smaller for segwit\n // - accumExact: ???\n private dust: bigint; // total dust limit (3||opts.dustRelayFeeRate * 182||opts.dust). Default: 546\n constructor(\n inputs: psbt.TransactionInputUpdate[],\n private outputs: Output[],\n private opts: EstimatorOpts\n ) {\n if (typeof opts.feePerByte !== 'bigint')\n throw new Error(\n `Estimator: wrong feePerByte=${\n opts.feePerByte\n }, should be of type bigint but got ${typeof opts.feePerByte}.`\n );\n // Dust stuff\n // TODO: think about this more:\n // - current dust filters tx which cannot be relayed by core\n // - but actual dust meaning is 'can be this amount spent?'\n // - dust contains full tx size. but we can use other inputs to pay for outputDust (and parially inputsDust)?\n // - not sure if we can spent anything with feePerByte: 3. It will be relayed, but will it be mined?\n // - for now it works exactly as bitcoin-core. But will create change/outputs which cannot be spent (reasonable).\n // Number of bytes needed to create and spend a UTXO.\n // https://github.com/bitcoin/bitcoin/blob/27a770b34b8f1dbb84760f442edb3e23a0c2420b/src/policy/policy.cpp#L28-L41\n const inputsDust = 32 + 4 + 1 + 107 + 4; // NOTE: can be smaller for segwit tx?\n const outputDust = 34; // NOTE: 'nSize = GetSerializeSize(txout)'\n const dustBytes = opts.dust === undefined ? BigInt(inputsDust + outputDust) : opts.dust;\n if (typeof dustBytes !== 'bigint') {\n throw new Error(\n `Estimator: wrong dust=${opts.dust}, should be of type bigint but got ${typeof opts.dust}.`\n );\n }\n // 3 sat/vb is the default minimum fee rate used to calculate dust thresholds by bitcoin core.\n // 3000 sat/kvb -> 3 sat/vb.\n // https://github.com/bitcoin/bitcoin/blob/27a770b34b8f1dbb84760f442edb3e23a0c2420b/src/policy/policy.h#L55\n const dustFee = opts.dustRelayFeeRate === undefined ? 3n : opts.dustRelayFeeRate;\n if (typeof dustFee !== 'bigint') {\n throw new Error(\n `Estimator: wrong dustRelayFeeRate=${opts.dustRelayFeeRate}, should be of type bigint but got ${typeof opts.dustRelayFeeRate}.`\n );\n }\n // Dust uses feePerbyte by default, but we allow separate dust fee if needed\n this.dust = dustBytes * dustFee;\n if (opts.requiredInputs !== undefined && !Array.isArray(opts.requiredInputs))\n throw new Error(`Estimator: wrong required inputs=${opts.requiredInputs}`);\n const network = opts.network || NETWORK;\n let amount = 0n;\n // Base weight: tx with outputs, no inputs\n let baseWeight = 32;\n for (const o of outputs) {\n const script = getScript(o, opts, opts.network);\n baseWeight += 32 + 4 * VarBytes.encode(script).length;\n amount += o.amount;\n }\n if (typeof opts.changeAddress !== 'string')\n throw new Error(`Estimator: wrong change address=${opts.changeAddress}`);\n let changeWeight =\n baseWeight +\n 32 +\n 4 * VarBytes.encode(OutScript.encode(Address(network).decode(opts.changeAddress))).length;\n baseWeight += 4 * CompactSizeLen.encode(outputs.length).length;\n // If there a lot of outputs change can change fee\n changeWeight += 4 * CompactSizeLen.encode(outputs.length + 1).length;\n this.baseWeight = baseWeight;\n this.changeWeight = changeWeight;\n this.amount = amount;\n const allInputs = Array.from(inputs);\n if (opts.requiredInputs) {\n for (let i = 0; i < opts.requiredInputs.length; i++)\n this.requiredIndices.push(allInputs.push(opts.requiredInputs[i]) - 1);\n }\n const inputKeys = new Set();\n this.normalizedInputs = allInputs.map((i) => {\n const normalized = normalizeInput(i, undefined, undefined, opts.disableScriptCheck);\n inputBeforeSign(normalized); // check fields\n const key = `${hex.encode(normalized.txid!)}:${normalized.index}`;\n if (!opts.allowSameUtxo && inputKeys.has(key))\n throw new Error(`Estimator: same input passed multiple times: ${key}`);\n inputKeys.add(key);\n const inputType = getInputType(normalized, opts.allowLegacyWitnessUtxo);\n const prev = getPrevOut(normalized);\n const estimate = estimateInput(inputType, normalized, this.opts);\n const value = prev.amount - opts.feePerByte * BigInt(toVsize(estimate.weight)); // value = amount-fee\n return { inputType, normalized, amount: prev.amount, value, estimate };\n });\n }\n private checkInputIdx(idx: number) {\n if (!Number.isSafeInteger(idx) || 0 > idx || idx >= this.normalizedInputs.length)\n throw new Error(`Wrong input index=${idx}`);\n return idx;\n }\n private sortIndices(indices: number[]) {\n return indices.slice().sort((a, b) => {\n const ai = this.normalizedInputs[this.checkInputIdx(a)];\n const bi = this.normalizedInputs[this.checkInputIdx(b)];\n const out = compareBytes(ai.normalized.txid!, bi.normalized.txid!);\n if (out !== 0) return out;\n return ai.normalized.index! - bi.normalized.index!;\n });\n }\n private sortOutputs(outputs: Output[]) {\n const scripts = outputs.map((o) => getScript(o, this.opts, this.opts.network));\n const indices = outputs.map((_, j) => j);\n return indices.sort((a, b) => {\n const aa = outputs[a].amount;\n const ba = outputs[b].amount;\n const out = _cmpBig(aa, ba);\n if (out !== 0) return out;\n return compareBytes(scripts[a], scripts[b]);\n });\n }\n private getSatoshi(weigth: number) {\n return this.opts.feePerByte * BigInt(toVsize(weigth));\n }\n\n // Sort by value instead of amount\n get biggest(): number[] {\n return this.normalizedInputs\n .map((_i, j) => j)\n .sort((a, b) => _cmpBig(this.normalizedInputs[b].value, this.normalizedInputs[a].value));\n }\n get smallest(): number[] {\n return this.biggest.reverse();\n }\n // These assume that UTXO array has historical order.\n // Otherwise, we have no way to know which tx is oldest\n // Explorers usually give UTXO in this order.\n get oldest(): number[] {\n return this.normalizedInputs.map((_i, j) => j);\n }\n get newest(): number[] {\n return this.oldest.reverse();\n }\n // exact - like blackjack from coinselect.\n // exact(biggest) will select one big utxo which is closer to targetValue+dust, if possible.\n // If not, it will accumulate largest utxo until value is close to targetValue+dust.\n accumulate(indices: number[], exact = false, skipNegative = true, all = false): Accumulated {\n // TODO: how to handle change addresses?\n // - cost of input\n // - cost of change output (if input requires change)\n // - cost of output spending\n // Dust threshold should be significantly bigger, no point in\n // creating an output, which cannot be spent.\n // coinselect doesn't consider cost of output address for dust.\n // Changing that can actually reduce privacy\n let weight = this.opts.alwaysChange ? this.changeWeight : this.baseWeight;\n let hasWitnesses = false;\n let num = 0;\n let inputsAmount = 0n;\n const targetAmount = this.amount;\n const res = [];\n let fee;\n for (const idx of this.requiredIndices) {\n this.checkInputIdx(idx);\n const { estimate, amount } = this.normalizedInputs[idx];\n let newWeight = weight + estimate.weight;\n if (!hasWitnesses && estimate.hasWitnesses) newWeight += 2; // enable witness if needed\n const totalWeight = newWeight + 4 * CompactSizeLen.encode(num).length; // number of outputs can change weight\n fee = this.getSatoshi(totalWeight);\n weight = newWeight;\n if (estimate.hasWitnesses) hasWitnesses = true;\n num++;\n inputsAmount += amount;\n res.push(idx);\n // inputsAmount is enough to cover cost of tx\n if (!all && targetAmount + fee <= inputsAmount)\n return { indices: res, fee, weight: totalWeight, total: inputsAmount };\n }\n for (const idx of indices) {\n this.checkInputIdx(idx);\n const { estimate, amount, value } = this.normalizedInputs[idx];\n let newWeight = weight + estimate.weight;\n if (!hasWitnesses && estimate.hasWitnesses) newWeight += 2; // enable witness if needed\n const totalWeight = newWeight + 4 * CompactSizeLen.encode(num).length; // number of outputs can change weight\n fee = this.getSatoshi(totalWeight);\n // Best case scenario exact(biggest) -> we find biggest output, less than target+threshold\n if (exact && amount + inputsAmount > targetAmount + fee + this.dust) continue; // skip if added value is bigger than dust\n // Negative: cost of using input is more than value provided (negative)\n // By default 'blackjack' mode in coinselect doesn't use that, which means\n // it will use negative output if sorted by 'smallest'\n if (skipNegative && value <= 0n) continue;\n weight = newWeight;\n if (estimate.hasWitnesses) hasWitnesses = true;\n num++;\n inputsAmount += amount;\n res.push(idx);\n // inputsAmount is enough to cover cost of tx\n if (!all && targetAmount + fee <= inputsAmount)\n return { indices: res, fee, weight: totalWeight, total: inputsAmount };\n }\n if (all) {\n const newWeight = weight + 4 * CompactSizeLen.encode(num).length;\n return { indices: res, fee, weight: newWeight, total: inputsAmount };\n }\n return undefined;\n }\n\n // Works like coinselect default method\n default(): Accumulated {\n const { biggest } = this;\n const exact = this.accumulate(biggest, true, false);\n if (exact) return exact;\n return this.accumulate(biggest);\n }\n\n private select(strategy: SelectionStrategy) {\n if (strategy === 'all') {\n return this.accumulate(\n this.normalizedInputs.map((_, j) => j),\n false,\n true,\n true\n );\n }\n if (strategy === 'default') return this.default();\n const data: Record number[]> = {\n Oldest: () => this.oldest,\n Newest: () => this.newest,\n Smallest: () => this.smallest,\n Biggest: () => this.biggest,\n };\n if (strategy.startsWith('exact')) {\n const [exactData, left] = strategy.slice(5).split('/') as [SortStrategy, SelectionStrategy];\n if (!data[exactData]) throw new Error(`Estimator.select: wrong strategy=${strategy}`);\n strategy = left;\n const exact = this.accumulate(data[exactData](), true, true);\n if (exact) return exact;\n }\n if (strategy.startsWith('accum')) {\n const accumData = strategy.slice(5) as SortStrategy;\n if (!data[accumData]) throw new Error(`Estimator.select: wrong strategy=${strategy}`);\n return this.accumulate(data[accumData]());\n }\n throw new Error(`Estimator.select: wrong strategy=${strategy}`);\n }\n\n result(strategy: SelectionStrategy) {\n const s = this.select(strategy);\n if (!s) return;\n const { indices, weight, total } = s;\n let needChange = this.opts.alwaysChange;\n const changeWeight = this.opts.alwaysChange\n ? weight\n : weight + (this.changeWeight - this.baseWeight);\n\n const changeFee = this.getSatoshi(changeWeight);\n let fee = s.fee;\n const change = total - this.amount - changeFee;\n if (change > this.dust) needChange = true;\n let inputs = indices;\n let outputs = Array.from(this.outputs);\n if (needChange) {\n fee = changeFee;\n // this shouldn't happen!\n if (change < 0n) throw new Error(`Estimator.result: negative change=${change}`);\n outputs.push({ address: this.opts.changeAddress, amount: change });\n }\n if (this.opts.bip69) {\n inputs = this.sortIndices(inputs);\n outputs = this.sortOutputs(outputs).map((i) => outputs[i]);\n }\n const res = {\n inputs: inputs.map((i) => this.normalizedInputs[i].normalized),\n outputs,\n fee,\n weight: this.opts.alwaysChange ? s.weight : changeWeight,\n change: !!needChange,\n };\n let tx;\n if (this.opts.createTx) {\n const { inputs, outputs } = res;\n tx = new Transaction(this.opts);\n for (const i of inputs) tx.addInput(i);\n for (const o of outputs)\n tx.addOutput({ ...o, script: getScript(o, this.opts, this.opts.network) });\n }\n return Object.assign(res, { tx });\n // return { ...res, tx: tx };\n }\n}\n\nexport function selectUTXO(\n inputs: psbt.TransactionInputUpdate[],\n outputs: Output[],\n strategy: SelectionStrategy,\n opts: EstimatorOpts\n) {\n // Defaults: do we want bip69 by default?\n const _opts = { createTx: true, bip69: true, ...opts };\n const est = new _Estimator(inputs, outputs, _opts);\n return est.result(strategy);\n}\n","export * from './actions.js';\nexport * from './instructions.js';\nexport * from './state.js';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cookieCompare = cookieCompare;\n/**\n * The maximum timestamp a cookie, in milliseconds. The value is (2^31 - 1) seconds since the Unix\n * epoch, corresponding to 2038-01-19.\n */\nconst MAX_TIME = 2147483647000;\n/**\n * A comparison function that can be used with {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort | Array.sort()},\n * which orders a list of cookies into the recommended order given in Step 2 of {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.4 | RFC6265 - Section 5.4}.\n *\n * The sort algorithm is, in order of precedence:\n *\n * - Longest {@link Cookie.path}\n *\n * - Oldest {@link Cookie.creation} (which has a 1-ms precision, same as Date)\n *\n * - Lowest {@link Cookie.creationIndex} (to get beyond the 1-ms precision)\n *\n * @remarks\n * ### RFC6265 - Section 5.4 - Step 2\n *\n * The user agent SHOULD sort the cookie-list in the following order:\n *\n * - Cookies with longer paths are listed before cookies with shorter paths.\n *\n * - Among cookies that have equal-length path fields, cookies with\n * earlier creation-times are listed before cookies with later\n * creation-times.\n *\n * NOTE: Not all user agents sort the cookie-list in this order, but\n * this order reflects common practice when this document was\n * written, and, historically, there have been servers that\n * (erroneously) depended on this order.\n *\n * ### Custom Store Implementors\n *\n * Since the JavaScript Date is limited to a 1-ms precision, cookies within the same millisecond are entirely possible.\n * This is especially true when using the `now` option to `CookieJar.setCookie(...)`. The {@link Cookie.creationIndex}\n * property is a per-process global counter, assigned during construction with `new Cookie()`, which preserves the spirit\n * of the RFC sorting: older cookies go first. This works great for {@link MemoryCookieStore} since `Set-Cookie` headers\n * are parsed in order, but is not so great for distributed systems.\n *\n * Sophisticated Stores may wish to set this to some other\n * logical clock so that if cookies `A` and `B` are created in the same millisecond, but cookie `A` is created before\n * cookie `B`, then `A.creationIndex < B.creationIndex`.\n *\n * @example\n * ```\n * const cookies = [\n * new Cookie({ key: 'a', value: '' }),\n * new Cookie({ key: 'b', value: '' }),\n * new Cookie({ key: 'c', value: '', path: '/path' }),\n * new Cookie({ key: 'd', value: '', path: '/path' }),\n * ]\n * cookies.sort(cookieCompare)\n * // cookie sort order would be ['c', 'd', 'a', 'b']\n * ```\n *\n * @param a - the first Cookie for comparison\n * @param b - the second Cookie for comparison\n * @public\n */\nfunction cookieCompare(a, b) {\n let cmp;\n // descending for length: b CMP a\n const aPathLen = a.path ? a.path.length : 0;\n const bPathLen = b.path ? b.path.length : 0;\n cmp = bPathLen - aPathLen;\n if (cmp !== 0) {\n return cmp;\n }\n // ascending for time: a CMP b\n const aTime = a.creation && a.creation instanceof Date ? a.creation.getTime() : MAX_TIME;\n const bTime = b.creation && b.creation instanceof Date ? b.creation.getTime() : MAX_TIME;\n cmp = aTime - bTime;\n if (cmp !== 0) {\n return cmp;\n }\n // break ties for the same millisecond (precision of JavaScript's clock)\n cmp = (a.creationIndex || 0) - (b.creationIndex || 0);\n return cmp;\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountState } from '../../state/account.js';\nimport type { Mint } from '../../state/mint.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\n/** DefaultAccountState as stored by the program */\nexport interface DefaultAccountState {\n /** Default AccountState in which new accounts are initialized */\n state: AccountState;\n}\n\n/** Buffer layout for de/serializing a transfer fee config extension */\nexport const DefaultAccountStateLayout = struct([u8('state')]);\n\nexport const DEFAULT_ACCOUNT_STATE_SIZE = DefaultAccountStateLayout.span;\n\nexport function getDefaultAccountState(mint: Mint): DefaultAccountState | null {\n const extensionData = getExtensionData(ExtensionType.DefaultAccountState, mint.tlvData);\n if (extensionData !== null) {\n return DefaultAccountStateLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.domainMatch = domainMatch;\nconst canonicalDomain_1 = require(\"./canonicalDomain\");\n// Dumped from ip-regex@4.0.0, with the following changes:\n// * all capturing groups converted to non-capturing -- \"(?:)\"\n// * support for IPv6 Scoped Literal (\"%eth1\") removed\n// * lowercase hexadecimal only\nconst IP_REGEX_LOWERCASE = /(?:^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$)|(?:^(?:(?:[a-f\\d]{1,4}:){7}(?:[a-f\\d]{1,4}|:)|(?:[a-f\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-f\\d]{1,4}|:)|(?:[a-f\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,2}|:)|(?:[a-f\\d]{1,4}:){4}(?:(?::[a-f\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,3}|:)|(?:[a-f\\d]{1,4}:){3}(?:(?::[a-f\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,4}|:)|(?:[a-f\\d]{1,4}:){2}(?:(?::[a-f\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,5}|:)|(?:[a-f\\d]{1,4}:){1}(?:(?::[a-f\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,7}|:)))$)/;\n/**\n * Answers \"does this real domain match the domain in a cookie?\". The `domain` is the \"current\" domain name and the\n * `cookieDomain` is the \"cookie\" domain name. Matches according to {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.1.3 | RFC6265 - Section 5.1.3},\n * but it helps to think of it as a \"suffix match\".\n *\n * @remarks\n * ### 5.1.3. Domain Matching\n *\n * A string domain-matches a given domain string if at least one of the\n * following conditions hold:\n *\n * - The domain string and the string are identical. (Note that both\n * the domain string and the string will have been canonicalized to\n * lower case at this point.)\n *\n * - All of the following conditions hold:\n *\n * - The domain string is a suffix of the string.\n *\n * - The last character of the string that is not included in the\n * domain string is a %x2E (\".\") character.\n *\n * - The string is a host name (i.e., not an IP address).\n *\n * @example\n * ```\n * domainMatch('example.com', 'example.com') === true\n * domainMatch('eXaMpLe.cOm', 'ExAmPlE.CoM') === true\n * domainMatch('no.ca', 'yes.ca') === false\n * ```\n *\n * @param domain - The domain string to test\n * @param cookieDomain - The cookie domain string to match against\n * @param canonicalize - The canonicalize parameter toggles whether the domain parameters get normalized with canonicalDomain or not\n * @public\n */\nfunction domainMatch(domain, cookieDomain, canonicalize) {\n if (domain == null || cookieDomain == null) {\n return undefined;\n }\n let _str;\n let _domStr;\n if (canonicalize !== false) {\n _str = (0, canonicalDomain_1.canonicalDomain)(domain);\n _domStr = (0, canonicalDomain_1.canonicalDomain)(cookieDomain);\n }\n else {\n _str = domain;\n _domStr = cookieDomain;\n }\n if (_str == null || _domStr == null) {\n return undefined;\n }\n /*\n * S5.1.3:\n * \"A string domain-matches a given domain string if at least one of the\n * following conditions hold:\"\n *\n * \" o The domain string and the string are identical. (Note that both the\n * domain string and the string will have been canonicalized to lower case at\n * this point)\"\n */\n if (_str == _domStr) {\n return true;\n }\n /* \" o All of the following [three] conditions hold:\" */\n /* \"* The domain string is a suffix of the string\" */\n const idx = _str.lastIndexOf(_domStr);\n if (idx <= 0) {\n return false; // it's a non-match (-1) or prefix (0)\n }\n // next, check it's a proper suffix\n // e.g., \"a.b.c\".indexOf(\"b.c\") === 2\n // 5 === 3+2\n if (_str.length !== _domStr.length + idx) {\n return false; // it's not a suffix\n }\n /* \" * The last character of the string that is not included in the\n * domain string is a %x2E (\".\") character.\" */\n if (_str.substring(idx - 1, idx) !== '.') {\n return false; // doesn't align on \".\"\n }\n /* \" * The string is a host name (i.e., not an IP address).\" */\n return !IP_REGEX_LOWERCASE.test(_str);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IPriceProvider = void 0;\r\nclass IPriceProvider {\r\n constructor(coins) {\r\n this.coinsMap = {};\r\n for (let coinData of coins) {\r\n if (coinData.coinId == null)\r\n continue;\r\n for (let chainId in coinData.chains) {\r\n const { address, decimals } = coinData.chains[chainId];\r\n this.coinsMap[chainId] ??= {};\r\n this.coinsMap[chainId][address.toString()] = {\r\n coinId: coinData.coinId,\r\n decimals\r\n };\r\n }\r\n }\r\n }\r\n /**\r\n * Returns coin price in uSat (microSat)\r\n *\r\n * @param chainIdentifier\r\n * @param token\r\n * @param abortSignal\r\n * @throws {Error} if token is not found\r\n */\r\n getPrice(chainIdentifier, token, abortSignal) {\r\n let tokenAddress = token.toString();\r\n const chainTokens = this.coinsMap[chainIdentifier];\r\n if (chainTokens == null)\r\n throw new Error(\"Chain not found\");\r\n const coin = chainTokens[tokenAddress];\r\n if (coin == null)\r\n throw new Error(\"Token not found\");\r\n if (coin.coinId.startsWith(\"$fixed-\")) {\r\n const amt = parseFloat(coin.coinId.substring(7));\r\n return Promise.resolve(BigInt(Math.floor(amt * 1000000).toString(10)));\r\n }\r\n return this.fetchPrice(coin, abortSignal);\r\n }\r\n /**\r\n * Returns coin price in uSat (microSat)\r\n *\r\n * @param abortSignal\r\n * @throws {Error} if token is not found\r\n */\r\n getUsdPrice(abortSignal) {\r\n return this.fetchUsdPrice(abortSignal);\r\n }\r\n /**\r\n * Returns the decimal places of the specified token, or -1 if token should be ignored, returns null if\r\n * token is not found\r\n *\r\n * @param chainIdentifier\r\n * @param token\r\n * @protected\r\n * @throws {Error} If token is not found\r\n */\r\n getDecimals(chainIdentifier, token) {\r\n const chainTokens = this.coinsMap[chainIdentifier];\r\n if (chainTokens == null)\r\n throw new Error(\"Chain not found\");\r\n const coin = chainTokens[token.toString()];\r\n if (coin == null)\r\n throw new Error(\"Token not found\");\r\n return coin.coinId === \"$ignore\" ? -1 : coin.decimals;\r\n }\r\n}\r\nexports.IPriceProvider = IPriceProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToBTCLNWrapper = void 0;\r\nconst bolt11_1 = require(\"@atomiqlabs/bolt11\");\r\nconst ToBTCLNSwap_1 = require(\"./ToBTCLNSwap\");\r\nconst IToBTCWrapper_1 = require(\"../IToBTCWrapper\");\r\nconst UserError_1 = require(\"../../../errors/UserError\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst IntermediaryError_1 = require(\"../../../errors/IntermediaryError\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst IntermediaryAPI_1 = require(\"../../../intermediaries/IntermediaryAPI\");\r\nconst RequestError_1 = require(\"../../../errors/RequestError\");\r\nconst LNURL_1 = require(\"../../../utils/LNURL\");\r\nconst IToBTCSwap_1 = require(\"../IToBTCSwap\");\r\nclass ToBTCLNWrapper extends IToBTCWrapper_1.IToBTCWrapper {\r\n constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, options, events) {\r\n if (options == null)\r\n options = {};\r\n options.paymentTimeoutSeconds ??= 4 * 24 * 60 * 60;\r\n options.lightningBaseFee ??= 10;\r\n options.lightningFeePPM ??= 2000;\r\n super(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, options, events);\r\n this.TYPE = SwapType_1.SwapType.TO_BTCLN;\r\n this.swapDeserializer = ToBTCLNSwap_1.ToBTCLNSwap;\r\n }\r\n async checkPaymentHashWasPaid(paymentHash) {\r\n const swaps = await this.unifiedStorage.query([[{ key: \"type\", value: this.TYPE }, { key: \"paymentHash\", value: paymentHash }]], (obj) => new this.swapDeserializer(this, obj));\r\n for (let value of swaps) {\r\n if (value.state === IToBTCSwap_1.ToBTCSwapState.CLAIMED || value.state === IToBTCSwap_1.ToBTCSwapState.SOFT_CLAIMED)\r\n throw new UserError_1.UserError(\"Lightning invoice was already paid!\");\r\n }\r\n }\r\n /**\r\n * Calculates maximum lightning network routing fee based on amount\r\n *\r\n * @param amount BTC amount of the swap in satoshis\r\n * @param overrideBaseFee Override wrapper's default base fee\r\n * @param overrideFeePPM Override wrapper's default PPM\r\n * @private\r\n * @returns Maximum lightning routing fee in sats\r\n */\r\n calculateFeeForAmount(amount, overrideBaseFee, overrideFeePPM) {\r\n return BigInt(overrideBaseFee ?? this.options.lightningBaseFee)\r\n + (amount * BigInt(overrideFeePPM ?? this.options.lightningFeePPM) / 1000000n);\r\n }\r\n /**\r\n * Verifies returned LP data\r\n *\r\n * @param resp Response as returned by the LP\r\n * @param parsedPr Parsed bolt11 lightning invoice\r\n * @param token Smart chain token to be used in the swap\r\n * @param lp\r\n * @param options Swap options as passed to the swap create function\r\n * @param data Parsed swap data returned by the LP\r\n * @param requiredTotal Required total to be paid on the input (for exactIn swaps)\r\n * @private\r\n * @throws {IntermediaryError} In case the response is not valid\r\n */\r\n async verifyReturnedData(resp, parsedPr, token, lp, options, data, requiredTotal) {\r\n if (resp.routingFeeSats > await options.maxFee)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid max fee sats returned\");\r\n if (requiredTotal != null && resp.total !== requiredTotal)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid data returned - total amount\");\r\n const claimHash = this.contract.getHashForHtlc(Buffer.from(parsedPr.tagsObject.payment_hash, \"hex\"));\r\n if (data.getAmount() !== resp.total ||\r\n !Buffer.from(data.getClaimHash(), \"hex\").equals(claimHash) ||\r\n data.getExpiry() !== options.expiryTimestamp ||\r\n data.getType() !== base_1.ChainSwapType.HTLC ||\r\n !data.isPayIn() ||\r\n !data.isToken(token) ||\r\n data.getClaimer() !== lp.getAddress(this.chainIdentifier)) {\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid data returned\");\r\n }\r\n }\r\n /**\r\n * Returns the quote/swap from a given intermediary\r\n *\r\n * @param signer Smartchain signer initiating the swap\r\n * @param amountData\r\n * @param lp Intermediary\r\n * @param pr bolt11 lightning network invoice\r\n * @param parsedPr Parsed bolt11 lightning network invoice\r\n * @param options Options as passed to the swap create function\r\n * @param preFetches\r\n * @param abort Abort signal or controller, if AbortController is passed it is used as-is, when AbortSignal is passed\r\n * it is extended with extendAbortController and then used\r\n * @param additionalParams Additional params that should be sent to the LP\r\n * @private\r\n */\r\n async getIntermediaryQuote(signer, amountData, lp, pr, parsedPr, options, preFetches, abort, additionalParams) {\r\n const abortController = abort instanceof AbortController ? abort : (0, Utils_1.extendAbortController)(abort);\r\n preFetches.reputationPromise ??= this.preFetchIntermediaryReputation(amountData, lp, abortController);\r\n try {\r\n const { signDataPromise, resp } = await (0, Utils_1.tryWithRetries)(async (retryCount) => {\r\n const { signDataPrefetch, response } = IntermediaryAPI_1.IntermediaryAPI.initToBTCLN(this.chainIdentifier, lp.url, {\r\n offerer: signer,\r\n pr,\r\n maxFee: await options.maxFee,\r\n expiryTimestamp: options.expiryTimestamp,\r\n token: amountData.token,\r\n feeRate: preFetches.feeRatePromise,\r\n additionalParams\r\n }, this.options.postRequestTimeout, abortController.signal, retryCount > 0 ? false : null);\r\n return {\r\n signDataPromise: this.preFetchSignData(signDataPrefetch),\r\n resp: await response\r\n };\r\n }, null, e => e instanceof RequestError_1.RequestError, abortController.signal);\r\n const amountOut = (BigInt(parsedPr.millisatoshis) + 999n) / 1000n;\r\n const totalFee = resp.swapFee + resp.maxFee;\r\n const data = new this.swapDataDeserializer(resp.data);\r\n data.setOfferer(signer);\r\n await this.verifyReturnedData(resp, parsedPr, amountData.token, lp, options, data);\r\n const [pricingInfo, signatureExpiry, reputation] = await Promise.all([\r\n this.verifyReturnedPrice(lp.services[SwapType_1.SwapType.TO_BTCLN], true, amountOut, data.getAmount(), amountData.token, { swapFee: resp.swapFee, networkFee: resp.maxFee, totalFee }, preFetches.pricePreFetchPromise, abortController.signal),\r\n this.verifyReturnedSignature(data, resp, preFetches.feeRatePromise, signDataPromise, abortController.signal),\r\n preFetches.reputationPromise\r\n ]);\r\n abortController.signal.throwIfAborted();\r\n lp.reputation[amountData.token.toString()] = reputation;\r\n const quote = new ToBTCLNSwap_1.ToBTCLNSwap(this, {\r\n pricingInfo,\r\n url: lp.url,\r\n expiry: signatureExpiry,\r\n swapFee: resp.swapFee,\r\n feeRate: await preFetches.feeRatePromise,\r\n signatureData: resp,\r\n data,\r\n networkFee: resp.maxFee,\r\n networkFeeBtc: resp.routingFeeSats,\r\n confidence: resp.confidence,\r\n pr,\r\n exactIn: false\r\n });\r\n await quote._save();\r\n return quote;\r\n }\r\n catch (e) {\r\n abortController.abort(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Returns a newly created swap, paying for 'bolt11PayRequest' - a bitcoin LN invoice\r\n *\r\n * @param signer Smartchain signer's address initiating the swap\r\n * @param bolt11PayRequest BOLT11 payment request (bitcoin lightning invoice) you wish to pay\r\n * @param amountData Amount of token & amount to swap\r\n * @param lps LPs (liquidity providers) to get the quotes from\r\n * @param options Quote options\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n * @param abortSignal Abort signal for aborting the process\r\n * @param preFetches Existing pre-fetches for the swap (only used internally for LNURL swaps)\r\n */\r\n async create(signer, bolt11PayRequest, amountData, lps, options, additionalParams, abortSignal, preFetches) {\r\n options ??= {};\r\n options.expirySeconds ??= this.options.paymentTimeoutSeconds;\r\n options.expiryTimestamp ??= BigInt(Math.floor(Date.now() / 1000) + options.expirySeconds);\r\n const parsedPr = (0, bolt11_1.decode)(bolt11PayRequest);\r\n if (parsedPr.millisatoshis == null)\r\n throw new UserError_1.UserError(\"Must be an invoice with amount\");\r\n const amountOut = (BigInt(parsedPr.millisatoshis) + 999n) / 1000n;\r\n options.maxFee ??= this.calculateFeeForAmount(amountOut, options.maxRoutingBaseFee, options.maxRoutingPPM);\r\n await this.checkPaymentHashWasPaid(parsedPr.tagsObject.payment_hash);\r\n const claimHash = this.contract.getHashForHtlc(Buffer.from(parsedPr.tagsObject.payment_hash, \"hex\"));\r\n const _abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n if (preFetches == null)\r\n preFetches = {\r\n pricePreFetchPromise: this.preFetchPrice(amountData, _abortController.signal),\r\n feeRatePromise: this.preFetchFeeRate(signer, amountData, claimHash.toString(\"hex\"), _abortController)\r\n };\r\n return lps.map(lp => {\r\n return {\r\n intermediary: lp,\r\n quote: this.getIntermediaryQuote(signer, amountData, lp, bolt11PayRequest, parsedPr, options, preFetches, _abortController.signal, additionalParams)\r\n };\r\n });\r\n }\r\n /**\r\n * Parses and fetches lnurl pay params from the specified lnurl\r\n *\r\n * @param lnurl LNURL to be parsed and fetched\r\n * @param abortSignal\r\n * @private\r\n * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-pay\r\n */\r\n async getLNURLPay(lnurl, abortSignal) {\r\n if (typeof (lnurl) !== \"string\")\r\n return lnurl;\r\n const res = await LNURL_1.LNURL.getLNURL(lnurl, true, this.options.getRequestTimeout, abortSignal);\r\n if (res == null)\r\n throw new UserError_1.UserError(\"Invalid LNURL\");\r\n if (res.tag !== \"payRequest\")\r\n throw new UserError_1.UserError(\"Not a LNURL-pay\");\r\n return res;\r\n }\r\n /**\r\n * Returns the quote/swap from the given LP\r\n *\r\n * @param signer Smartchain signer's address initiating the swap\r\n * @param amountData\r\n * @param payRequest Parsed LNURL-pay params\r\n * @param lp Intermediary\r\n * @param dummyPr Dummy minimum value bolt11 lightning invoice returned from the LNURL-pay\r\n * @param options Options as passed to the swap create function\r\n * @param preFetches\r\n * @param abortSignal\r\n * @param additionalParams Additional params to be sent to the intermediary\r\n * @private\r\n */\r\n async getIntermediaryQuoteExactIn(signer, amountData, payRequest, lp, dummyPr, options, preFetches, abortSignal, additionalParams) {\r\n const abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n const reputationPromise = this.preFetchIntermediaryReputation(amountData, lp, abortController);\r\n try {\r\n const { signDataPromise, prepareResp } = await (0, Utils_1.tryWithRetries)(async (retryCount) => {\r\n const { signDataPrefetch, response } = IntermediaryAPI_1.IntermediaryAPI.prepareToBTCLNExactIn(this.chainIdentifier, lp.url, {\r\n token: amountData.token,\r\n offerer: signer,\r\n pr: dummyPr,\r\n amount: amountData.amount,\r\n maxFee: await options.maxFee,\r\n expiryTimestamp: options.expiryTimestamp,\r\n additionalParams\r\n }, this.options.postRequestTimeout, abortController.signal, retryCount > 0 ? false : null);\r\n return {\r\n signDataPromise: this.preFetchSignData(signDataPrefetch),\r\n prepareResp: await response\r\n };\r\n }, null, e => e instanceof RequestError_1.RequestError, abortController.signal);\r\n if (prepareResp.amount <= 0n)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid amount returned (zero or negative)\");\r\n const min = BigInt(payRequest.minSendable) / 1000n;\r\n const max = BigInt(payRequest.maxSendable) / 1000n;\r\n if (prepareResp.amount < min)\r\n throw new UserError_1.UserError(\"Amount less than minimum\");\r\n if (prepareResp.amount > max)\r\n throw new UserError_1.UserError(\"Amount more than maximum\");\r\n const { invoice, parsedInvoice, successAction } = await LNURL_1.LNURL.useLNURLPay(payRequest, prepareResp.amount, options.comment, this.options.getRequestTimeout, abortController.signal);\r\n const resp = await (0, Utils_1.tryWithRetries)((retryCount) => IntermediaryAPI_1.IntermediaryAPI.initToBTCLNExactIn(lp.url, {\r\n pr: invoice,\r\n reqId: prepareResp.reqId,\r\n feeRate: preFetches.feeRatePromise,\r\n additionalParams\r\n }, this.options.postRequestTimeout, abortController.signal, retryCount > 0 ? false : null), null, RequestError_1.RequestError, abortController.signal);\r\n const totalFee = resp.swapFee + resp.maxFee;\r\n const data = new this.swapDataDeserializer(resp.data);\r\n data.setOfferer(signer);\r\n await this.verifyReturnedData(resp, parsedInvoice, amountData.token, lp, options, data, amountData.amount);\r\n const [pricingInfo, signatureExpiry, reputation] = await Promise.all([\r\n this.verifyReturnedPrice(lp.services[SwapType_1.SwapType.TO_BTCLN], true, prepareResp.amount, data.getAmount(), amountData.token, { swapFee: resp.swapFee, networkFee: resp.maxFee, totalFee }, preFetches.pricePreFetchPromise, abortSignal),\r\n this.verifyReturnedSignature(data, resp, preFetches.feeRatePromise, signDataPromise, abortController.signal),\r\n reputationPromise\r\n ]);\r\n abortController.signal.throwIfAborted();\r\n lp.reputation[amountData.token.toString()] = reputation;\r\n const quote = new ToBTCLNSwap_1.ToBTCLNSwap(this, {\r\n pricingInfo,\r\n url: lp.url,\r\n expiry: signatureExpiry,\r\n swapFee: resp.swapFee,\r\n feeRate: await preFetches.feeRatePromise,\r\n signatureData: resp,\r\n data,\r\n networkFee: resp.maxFee,\r\n networkFeeBtc: resp.routingFeeSats,\r\n confidence: resp.confidence,\r\n pr: invoice,\r\n lnurl: payRequest.url,\r\n successAction,\r\n exactIn: true\r\n });\r\n await quote._save();\r\n return quote;\r\n }\r\n catch (e) {\r\n abortController.abort(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Returns a newly created swap, paying for 'lnurl' - a lightning LNURL-pay\r\n *\r\n * @param signer Smartchain signer's address initiating the swap\r\n * @param lnurl LMURL-pay you wish to pay\r\n * @param amountData Amount of token & amount to swap\r\n * @param lps LPs (liquidity providers/intermediaries) to get the quotes from\r\n * @param options Quote options\r\n * @param additionalParams Additional parameters sent to the intermediary when creating the swap\r\n * @param abortSignal Abort signal for aborting the process\r\n */\r\n async createViaLNURL(signer, lnurl, amountData, lps, options, additionalParams, abortSignal) {\r\n if (!this.isInitialized)\r\n throw new Error(\"Not initialized, call init() first!\");\r\n options ??= {};\r\n options.expirySeconds ??= this.options.paymentTimeoutSeconds;\r\n options.expiryTimestamp ??= BigInt(Math.floor(Date.now() / 1000) + options.expirySeconds);\r\n const _abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n const pricePreFetchPromise = this.preFetchPrice(amountData, _abortController.signal);\r\n const feeRatePromise = this.preFetchFeeRate(signer, amountData, null, _abortController);\r\n options.maxRoutingPPM ??= BigInt(this.options.lightningFeePPM);\r\n options.maxRoutingBaseFee ??= BigInt(this.options.lightningBaseFee);\r\n if (amountData.exactIn) {\r\n options.maxFee ??= pricePreFetchPromise\r\n .then(val => this.prices.getFromBtcSwapAmount(this.chainIdentifier, options.maxRoutingBaseFee, amountData.token, abortSignal, val))\r\n .then(_maxBaseFee => this.calculateFeeForAmount(amountData.amount, _maxBaseFee, options.maxRoutingPPM));\r\n }\r\n else {\r\n options.maxFee = this.calculateFeeForAmount(amountData.amount, options.maxRoutingBaseFee, options.maxRoutingPPM);\r\n }\r\n try {\r\n let payRequest = await this.getLNURLPay(lnurl, _abortController.signal);\r\n if (options.comment != null &&\r\n (payRequest.commentAllowed == null || options.comment.length > payRequest.commentAllowed))\r\n throw new UserError_1.UserError(\"Comment not allowed or too long\");\r\n if (amountData.exactIn) {\r\n const { invoice: dummyInvoice } = await LNURL_1.LNURL.useLNURLPay(payRequest, BigInt(payRequest.minSendable) / 1000n, null, this.options.getRequestTimeout, _abortController.signal);\r\n return lps.map(lp => {\r\n return {\r\n quote: this.getIntermediaryQuoteExactIn(signer, amountData, payRequest, lp, dummyInvoice, options, {\r\n pricePreFetchPromise,\r\n feeRatePromise\r\n }, _abortController.signal, additionalParams),\r\n intermediary: lp\r\n };\r\n });\r\n }\r\n else {\r\n const min = BigInt(payRequest.minSendable) / 1000n;\r\n const max = BigInt(payRequest.maxSendable) / 1000n;\r\n if (amountData.amount < min)\r\n throw new UserError_1.UserError(\"Amount less than minimum\");\r\n if (amountData.amount > max)\r\n throw new UserError_1.UserError(\"Amount more than maximum\");\r\n const { invoice, parsedInvoice, successAction } = await LNURL_1.LNURL.useLNURLPay(payRequest, amountData.amount, options.comment, this.options.getRequestTimeout, _abortController.signal);\r\n return (await this.create(signer, invoice, amountData, lps, options, additionalParams, _abortController.signal, {\r\n feeRatePromise,\r\n pricePreFetchPromise\r\n })).map(data => {\r\n return {\r\n quote: data.quote.then(quote => {\r\n quote.lnurl = payRequest.url;\r\n quote.successAction = successAction;\r\n return quote;\r\n }),\r\n intermediary: data.intermediary\r\n };\r\n });\r\n }\r\n }\r\n catch (e) {\r\n _abortController.abort(e);\r\n throw e;\r\n }\r\n }\r\n}\r\nexports.ToBTCLNWrapper = ToBTCLNWrapper;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.angleDoubleLeft = void 0;\nvar angleDoubleLeft = {\n \"viewBox\": \"0 0 1024 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M627 1376q0 13-10 23l-50 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l50 50q10 10 10 23t-10 23l-393 393 393 393q10 10 10 23zM1011 1376q0 13-10 23l-50 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l50 50q10 10 10 23t-10 23l-393 393 393 393q10 10 10 23z\"\n }\n }]\n};\nexports.angleDoubleLeft = angleDoubleLeft;","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.permutePath = exports.parseDate = exports.formatDate = exports.domainMatch = exports.defaultPath = exports.CookieJar = exports.cookieCompare = exports.Cookie = exports.PrefixSecurityEnum = exports.canonicalDomain = exports.version = exports.ParameterError = exports.Store = exports.getPublicSuffix = exports.permuteDomain = exports.pathMatch = exports.MemoryCookieStore = void 0;\nexports.parse = parse;\nexports.fromJSON = fromJSON;\nvar memstore_1 = require(\"../memstore\");\nObject.defineProperty(exports, \"MemoryCookieStore\", { enumerable: true, get: function () { return memstore_1.MemoryCookieStore; } });\nvar pathMatch_1 = require(\"../pathMatch\");\nObject.defineProperty(exports, \"pathMatch\", { enumerable: true, get: function () { return pathMatch_1.pathMatch; } });\nvar permuteDomain_1 = require(\"../permuteDomain\");\nObject.defineProperty(exports, \"permuteDomain\", { enumerable: true, get: function () { return permuteDomain_1.permuteDomain; } });\nvar getPublicSuffix_1 = require(\"../getPublicSuffix\");\nObject.defineProperty(exports, \"getPublicSuffix\", { enumerable: true, get: function () { return getPublicSuffix_1.getPublicSuffix; } });\nvar store_1 = require(\"../store\");\nObject.defineProperty(exports, \"Store\", { enumerable: true, get: function () { return store_1.Store; } });\nvar validators_1 = require(\"../validators\");\nObject.defineProperty(exports, \"ParameterError\", { enumerable: true, get: function () { return validators_1.ParameterError; } });\nvar version_1 = require(\"../version\");\nObject.defineProperty(exports, \"version\", { enumerable: true, get: function () { return version_1.version; } });\nvar canonicalDomain_1 = require(\"./canonicalDomain\");\nObject.defineProperty(exports, \"canonicalDomain\", { enumerable: true, get: function () { return canonicalDomain_1.canonicalDomain; } });\nvar constants_1 = require(\"./constants\");\nObject.defineProperty(exports, \"PrefixSecurityEnum\", { enumerable: true, get: function () { return constants_1.PrefixSecurityEnum; } });\nvar cookie_1 = require(\"./cookie\");\nObject.defineProperty(exports, \"Cookie\", { enumerable: true, get: function () { return cookie_1.Cookie; } });\nvar cookieCompare_1 = require(\"./cookieCompare\");\nObject.defineProperty(exports, \"cookieCompare\", { enumerable: true, get: function () { return cookieCompare_1.cookieCompare; } });\nvar cookieJar_1 = require(\"./cookieJar\");\nObject.defineProperty(exports, \"CookieJar\", { enumerable: true, get: function () { return cookieJar_1.CookieJar; } });\nvar defaultPath_1 = require(\"./defaultPath\");\nObject.defineProperty(exports, \"defaultPath\", { enumerable: true, get: function () { return defaultPath_1.defaultPath; } });\nvar domainMatch_1 = require(\"./domainMatch\");\nObject.defineProperty(exports, \"domainMatch\", { enumerable: true, get: function () { return domainMatch_1.domainMatch; } });\nvar formatDate_1 = require(\"./formatDate\");\nObject.defineProperty(exports, \"formatDate\", { enumerable: true, get: function () { return formatDate_1.formatDate; } });\nvar parseDate_1 = require(\"./parseDate\");\nObject.defineProperty(exports, \"parseDate\", { enumerable: true, get: function () { return parseDate_1.parseDate; } });\nvar permutePath_1 = require(\"./permutePath\");\nObject.defineProperty(exports, \"permutePath\", { enumerable: true, get: function () { return permutePath_1.permutePath; } });\nconst cookie_2 = require(\"./cookie\");\n/**\n * {@inheritDoc Cookie.parse}\n * @public\n */\nfunction parse(str, options) {\n return cookie_2.Cookie.parse(str, options);\n}\n/**\n * {@inheritDoc Cookie.fromJSON}\n * @public\n */\nfunction fromJSON(str) {\n return cookie_2.Cookie.fromJSON(str);\n}\n","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, CHash, Input, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC> extends Hash> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, _key: Input) {\n super();\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf: Input) {\n assertExists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array) {\n assertExists(this);\n assertBytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: HMAC): HMAC {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash: CHash, key: Input, message: Input): Uint8Array =>\n new HMAC(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Input) => new HMAC(hash, key);\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface ThawAccountInstructionData {\n instruction: TokenInstruction.ThawAccount;\n}\n\n/** TODO: docs */\nexport const thawAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a ThawAccount instruction\n *\n * @param account Account to thaw\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createThawAccountInstruction(\n account: PublicKey,\n mint: PublicKey,\n authority: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(thawAccountInstructionData.span);\n thawAccountInstructionData.encode({ instruction: TokenInstruction.ThawAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid ThawAccount instruction */\nexport interface DecodedThawAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.ThawAccount;\n };\n}\n\n/**\n * Decode a ThawAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeThawAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedThawAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== thawAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, authority, multiSigners },\n data,\n } = decodeThawAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.ThawAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated ThawAccount instruction */\nexport interface DecodedThawAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a ThawAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeThawAccountInstructionUnchecked({\n programId,\n keys: [account, mint, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedThawAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data: thawAccountInstructionData.decode(data),\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LnForGasSwap = exports.isLnForGasSwapInit = exports.LnForGasSwapState = void 0;\r\nconst bolt11_1 = require(\"@atomiqlabs/bolt11\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst PaymentAuthError_1 = require(\"../../../errors/PaymentAuthError\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst ISwap_1 = require(\"../../ISwap\");\r\nconst TrustedIntermediaryAPI_1 = require(\"../../../intermediaries/TrustedIntermediaryAPI\");\r\nconst Tokens_1 = require(\"../../Tokens\");\r\nvar LnForGasSwapState;\r\n(function (LnForGasSwapState) {\r\n LnForGasSwapState[LnForGasSwapState[\"EXPIRED\"] = -2] = \"EXPIRED\";\r\n LnForGasSwapState[LnForGasSwapState[\"FAILED\"] = -1] = \"FAILED\";\r\n LnForGasSwapState[LnForGasSwapState[\"PR_CREATED\"] = 0] = \"PR_CREATED\";\r\n LnForGasSwapState[LnForGasSwapState[\"PR_PAID\"] = 1] = \"PR_PAID\";\r\n LnForGasSwapState[LnForGasSwapState[\"FINISHED\"] = 2] = \"FINISHED\";\r\n})(LnForGasSwapState = exports.LnForGasSwapState || (exports.LnForGasSwapState = {}));\r\nfunction isLnForGasSwapInit(obj) {\r\n return typeof (obj.pr) === \"string\" &&\r\n typeof (obj.outputAmount) === \"bigint\" &&\r\n typeof (obj.recipient) === \"string\" &&\r\n typeof (obj.token) === \"string\" &&\r\n (0, ISwap_1.isISwapInit)(obj);\r\n}\r\nexports.isLnForGasSwapInit = isLnForGasSwapInit;\r\nclass LnForGasSwap extends ISwap_1.ISwap {\r\n constructor(wrapper, initOrObj) {\r\n if (isLnForGasSwapInit(initOrObj))\r\n initOrObj.url += \"/lnforgas\";\r\n super(wrapper, initOrObj);\r\n this.getSmartChainNetworkFee = null;\r\n this.currentVersion = 2;\r\n this.TYPE = SwapType_1.SwapType.TRUSTED_FROM_BTCLN;\r\n if (isLnForGasSwapInit(initOrObj)) {\r\n this.state = LnForGasSwapState.PR_CREATED;\r\n }\r\n else {\r\n this.pr = initOrObj.pr;\r\n this.outputAmount = initOrObj.outputAmount == null ? null : BigInt(initOrObj.outputAmount);\r\n this.recipient = initOrObj.recipient;\r\n this.token = initOrObj.token;\r\n this.scTxId = initOrObj.scTxId;\r\n }\r\n this.tryCalculateSwapFee();\r\n this.logger = (0, Utils_1.getLogger)(\"LnForGas(\" + this.getIdentifierHashString() + \"): \");\r\n if (this.pricingInfo.swapPriceUSatPerToken == null) {\r\n this.pricingInfo = this.wrapper.prices.recomputePriceInfoReceive(this.chainIdentifier, this.getInput().rawAmount, this.pricingInfo.satsBaseFee ?? 10n, this.pricingInfo.feePPM ?? 10000n, this.outputAmount, this.token ?? this.wrapper.getNativeToken().address);\r\n }\r\n }\r\n upgradeVersion() {\r\n if (this.version == 1) {\r\n if (this.state === 1)\r\n this.state = LnForGasSwapState.FINISHED;\r\n this.version = 2;\r\n }\r\n if (this.version == null) {\r\n //Noop\r\n this.version = 1;\r\n }\r\n }\r\n /**\r\n * In case swapFee in BTC is not supplied it recalculates it based on swap price\r\n * @protected\r\n */\r\n tryCalculateSwapFee() {\r\n if (this.swapFeeBtc == null) {\r\n this.swapFeeBtc = this.swapFee * this.getInput().rawAmount / this.getOutAmountWithoutFee();\r\n }\r\n }\r\n //////////////////////////////\r\n //// Pricing\r\n async refreshPriceData() {\r\n if (this.pricingInfo == null)\r\n return null;\r\n const priceData = await this.wrapper.prices.isValidAmountReceive(this.chainIdentifier, this.getInput().rawAmount, this.pricingInfo.satsBaseFee ?? 10n, this.pricingInfo.feePPM ?? 10000n, this.outputAmount, this.token ?? this.wrapper.getNativeToken().address);\r\n this.pricingInfo = priceData;\r\n return priceData;\r\n }\r\n getSwapPrice() {\r\n return Number(this.pricingInfo.swapPriceUSatPerToken) / 100000000000000;\r\n }\r\n getMarketPrice() {\r\n return Number(this.pricingInfo.realPriceUSatPerToken) / 100000000000000;\r\n }\r\n //////////////////////////////\r\n //// Getters & utils\r\n getInputAddress() {\r\n return this.pr;\r\n }\r\n getOutputAddress() {\r\n return this.recipient;\r\n }\r\n getInputTxId() {\r\n return this.getPaymentHash().toString(\"hex\");\r\n }\r\n getOutputTxId() {\r\n return this.scTxId;\r\n }\r\n getRecipient() {\r\n return this.recipient;\r\n }\r\n getIdentifierHash() {\r\n return this.getPaymentHash();\r\n }\r\n getPaymentHash() {\r\n if (this.pr == null)\r\n return null;\r\n const decodedPR = (0, bolt11_1.decode)(this.pr);\r\n return buffer_1.Buffer.from(decodedPR.tagsObject.payment_hash, \"hex\");\r\n }\r\n /**\r\n * Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap\r\n */\r\n getLightningInvoice() {\r\n return this.pr;\r\n }\r\n /**\r\n * Returns a string that can be displayed as QR code representation of the lightning invoice (with lightning: prefix)\r\n */\r\n getQrData() {\r\n return \"lightning:\" + this.pr.toUpperCase();\r\n }\r\n getTimeoutTime() {\r\n if (this.pr == null)\r\n return null;\r\n const decoded = (0, bolt11_1.decode)(this.pr);\r\n return (decoded.timeExpireDate * 1000);\r\n }\r\n isFinished() {\r\n return this.state === LnForGasSwapState.FINISHED || this.state === LnForGasSwapState.FAILED || this.state === LnForGasSwapState.EXPIRED;\r\n }\r\n isQuoteExpired() {\r\n return this.state === LnForGasSwapState.EXPIRED;\r\n }\r\n isQuoteSoftExpired() {\r\n return this.getTimeoutTime() < Date.now();\r\n }\r\n isFailed() {\r\n return this.state === LnForGasSwapState.FAILED;\r\n }\r\n isSuccessful() {\r\n return this.state === LnForGasSwapState.FINISHED;\r\n }\r\n isQuoteValid() {\r\n return Promise.resolve(this.getTimeoutTime() > Date.now());\r\n }\r\n isActionable() {\r\n return false;\r\n }\r\n //////////////////////////////\r\n //// Amounts & fees\r\n getOutAmountWithoutFee() {\r\n return this.outputAmount + this.swapFee;\r\n }\r\n getOutput() {\r\n return (0, Tokens_1.toTokenAmount)(this.outputAmount, this.wrapper.tokens[this.wrapper.contract.getNativeCurrencyAddress()], this.wrapper.prices);\r\n }\r\n getInputWithoutFee() {\r\n const parsed = (0, bolt11_1.decode)(this.pr);\r\n const amount = (BigInt(parsed.millisatoshis) + 999n) / 1000n;\r\n return (0, Tokens_1.toTokenAmount)(amount - this.swapFeeBtc, Tokens_1.BitcoinTokens.BTCLN, this.wrapper.prices);\r\n }\r\n getInput() {\r\n const parsed = (0, bolt11_1.decode)(this.pr);\r\n const amount = (BigInt(parsed.millisatoshis) + 999n) / 1000n;\r\n return (0, Tokens_1.toTokenAmount)(amount, Tokens_1.BitcoinTokens.BTCLN, this.wrapper.prices);\r\n }\r\n getSwapFee() {\r\n return {\r\n amountInSrcToken: (0, Tokens_1.toTokenAmount)(this.swapFeeBtc, Tokens_1.BitcoinTokens.BTCLN, this.wrapper.prices),\r\n amountInDstToken: (0, Tokens_1.toTokenAmount)(this.swapFee, this.wrapper.tokens[this.wrapper.contract.getNativeCurrencyAddress()], this.wrapper.prices),\r\n usdValue: (abortSignal, preFetchedUsdPrice) => this.wrapper.prices.getBtcUsdValue(this.swapFeeBtc, abortSignal, preFetchedUsdPrice)\r\n };\r\n }\r\n getRealSwapFeePercentagePPM() {\r\n const feeWithoutBaseFee = this.swapFeeBtc - this.pricingInfo.satsBaseFee;\r\n return feeWithoutBaseFee * 1000000n / this.getInputWithoutFee().rawAmount;\r\n }\r\n //////////////////////////////\r\n //// Payment\r\n async checkInvoicePaid(save = true) {\r\n if (this.state === LnForGasSwapState.FAILED || this.state === LnForGasSwapState.EXPIRED)\r\n return false;\r\n if (this.state === LnForGasSwapState.FINISHED)\r\n return true;\r\n const decodedPR = (0, bolt11_1.decode)(this.pr);\r\n const paymentHash = decodedPR.tagsObject.payment_hash;\r\n const response = await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.getInvoiceStatus(this.url, paymentHash, this.wrapper.options.getRequestTimeout);\r\n this.logger.debug(\"checkInvoicePaid(): LP response: \", response);\r\n switch (response.code) {\r\n case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.PAID:\r\n this.scTxId = response.data.txId;\r\n const txStatus = await this.wrapper.contract.getTxIdStatus(this.scTxId);\r\n if (txStatus === \"success\") {\r\n this.state = LnForGasSwapState.FINISHED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n return null;\r\n case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.EXPIRED:\r\n if (this.state === LnForGasSwapState.PR_CREATED) {\r\n this.state = LnForGasSwapState.EXPIRED;\r\n }\r\n else {\r\n this.state = LnForGasSwapState.FAILED;\r\n }\r\n if (save)\r\n await this._saveAndEmit();\r\n return false;\r\n case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.TX_SENT:\r\n this.scTxId = response.data.txId;\r\n if (this.state === LnForGasSwapState.PR_CREATED) {\r\n this.state = LnForGasSwapState.PR_PAID;\r\n if (save)\r\n await this._saveAndEmit();\r\n }\r\n return null;\r\n case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.PENDING:\r\n if (this.state === LnForGasSwapState.PR_CREATED) {\r\n this.state = LnForGasSwapState.PR_PAID;\r\n if (save)\r\n await this._saveAndEmit();\r\n }\r\n return null;\r\n case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.AWAIT_PAYMENT:\r\n return null;\r\n default:\r\n this.state = LnForGasSwapState.FAILED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return false;\r\n }\r\n }\r\n /**\r\n * A blocking promise resolving when payment was received by the intermediary and client can continue\r\n * rejecting in case of failure\r\n *\r\n * @param abortSignal Abort signal\r\n * @param checkIntervalSeconds How often to poll the intermediary for answer\r\n * @throws {PaymentAuthError} If swap expired or failed\r\n * @throws {Error} When in invalid state (not PR_CREATED)\r\n */\r\n async waitForPayment(abortSignal, checkIntervalSeconds = 5) {\r\n if (this.state !== LnForGasSwapState.PR_CREATED)\r\n throw new Error(\"Must be in PR_CREATED state!\");\r\n if (!this.initiated) {\r\n this.initiated = true;\r\n await this._saveAndEmit();\r\n }\r\n while (!abortSignal.aborted && (this.state === LnForGasSwapState.PR_CREATED || this.state === LnForGasSwapState.PR_PAID)) {\r\n await this.checkInvoicePaid(true);\r\n if (this.state === LnForGasSwapState.PR_CREATED || this.state === LnForGasSwapState.PR_PAID)\r\n await (0, Utils_1.timeoutPromise)(checkIntervalSeconds * 1000, abortSignal);\r\n }\r\n if (this.isFailed())\r\n throw new PaymentAuthError_1.PaymentAuthError(\"Swap failed\");\r\n if (this.isQuoteExpired())\r\n throw new PaymentAuthError_1.PaymentAuthError(\"Swap expired\");\r\n }\r\n //////////////////////////////\r\n //// Storage\r\n serialize() {\r\n return {\r\n ...super.serialize(),\r\n pr: this.pr,\r\n outputAmount: this.outputAmount == null ? null : this.outputAmount.toString(10),\r\n recipient: this.recipient,\r\n token: this.token,\r\n scTxId: this.scTxId\r\n };\r\n }\r\n getInitiator() {\r\n return this.recipient;\r\n }\r\n hasEnoughForTxFees() {\r\n return Promise.resolve({\r\n balance: (0, Tokens_1.toTokenAmount)(0n, this.wrapper.getNativeToken(), this.wrapper.prices),\r\n enoughBalance: true,\r\n required: (0, Tokens_1.toTokenAmount)(0n, this.wrapper.getNativeToken(), this.wrapper.prices)\r\n });\r\n }\r\n //////////////////////////////\r\n //// Swap ticks & sync\r\n async _sync(save) {\r\n if (this.state === LnForGasSwapState.PR_CREATED) {\r\n //Check if it's maybe already paid\r\n const res = await this.checkInvoicePaid(false);\r\n if (res !== null) {\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _tick(save) {\r\n return Promise.resolve(false);\r\n }\r\n}\r\nexports.LnForGasSwap = LnForGasSwap;\r\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n\n// Choice: a ? b : c\nconst Chi = (a: number, b: number, c: number) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a: number, b: number, c: number) => (a & b) ^ (a & c) ^ (b & c);\n\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = /* @__PURE__ */new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends SHA2 {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n A = IV[0] | 0;\n B = IV[1] | 0;\n C = IV[2] | 0;\n D = IV[3] | 0;\n E = IV[4] | 0;\n F = IV[5] | 0;\n G = IV[6] | 0;\n H = IV[7] | 0;\n\n constructor() {\n super(64, 32, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n A = 0xc1059ed8 | 0;\n B = 0x367cd507 | 0;\n C = 0x3070dd17 | 0;\n D = 0xf70e5939 | 0;\n E = 0xffc00b31 | 0;\n F = 0x68581511 | 0;\n G = 0x64f98fa7 | 0;\n H = 0xbefa4fa4 | 0;\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_watch_later_outline = void 0;\nvar ic_watch_later_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\",\n \"x\": \"0\"\n },\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\",\n \"x\": \"0\"\n },\n \"children\": []\n }]\n }]\n }, {\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10s10-4.5,10-10S17.5,2,12,2z M12,20c-4.41,0-8-3.59-8-8s3.59-8,8-8s8,3.59,8,8 S16.41,20,12,20z M12.5,7H11v6l5.2,3.2l0.8-1.3l-4.5-2.7V7z\"\n },\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10s10-4.5,10-10S17.5,2,12,2z M12,20c-4.41,0-8-3.59-8-8s3.59-8,8-8s8,3.59,8,8 S16.41,20,12,20z M12.5,7H11v6l5.2,3.2l0.8-1.3l-4.5-2.7V7z\"\n },\n \"children\": []\n }]\n }]\n }]\n }]\n }]\n};\nexports.ic_watch_later_outline = ic_watch_later_outline;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CannotInitializeATAError = void 0;\r\nclass CannotInitializeATAError extends Error {\r\n constructor(msg) {\r\n super(msg);\r\n // Set the prototype explicitly.\r\n Object.setPrototypeOf(this, CannotInitializeATAError.prototype);\r\n }\r\n}\r\nexports.CannotInitializeATAError = CannotInitializeATAError;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ResponseParamDecoder = void 0;\r\nconst ParamDecoder_1 = require(\"../ParamDecoder\");\r\nconst buffer_1 = require(\"buffer\");\r\nclass ResponseParamDecoder extends ParamDecoder_1.ParamDecoder {\r\n constructor(resp, abortSignal) {\r\n super();\r\n this.abortSignal = abortSignal;\r\n try {\r\n //Read from stream\r\n this.reader = resp.body.getReader();\r\n this.readResponse();\r\n }\r\n catch (e) {\r\n //Read in one piece\r\n resp.arrayBuffer().then(respBuffer => {\r\n super.onData(buffer_1.Buffer.from(respBuffer));\r\n super.onEnd();\r\n }).catch(e => {\r\n super.onError(e);\r\n });\r\n }\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => {\r\n super.onError(abortSignal.reason);\r\n if (!this.reader.closed)\r\n this.reader.cancel(abortSignal.reason);\r\n });\r\n }\r\n /**\r\n * Keeps reading the response until the reader closes\r\n * @private\r\n */\r\n async readResponse() {\r\n while (true) {\r\n const readResp = await this.reader.read().catch(e => {\r\n console.error(e);\r\n return null;\r\n });\r\n if (this.abortSignal != null && this.abortSignal.aborted)\r\n return;\r\n if (readResp == null || readResp.done) {\r\n super.onEnd();\r\n return;\r\n }\r\n super.onData(buffer_1.Buffer.from(readResp.value));\r\n }\r\n }\r\n}\r\nexports.ResponseParamDecoder = ResponseParamDecoder;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Icon\", {\n enumerable: true,\n get: function get() {\n return _Icon.Icon;\n }\n});\nObject.defineProperty(exports, \"withBaseIcon\", {\n enumerable: true,\n get: function get() {\n return _Icon.withBaseIcon;\n }\n});\nObject.defineProperty(exports, \"horizontalCenter\", {\n enumerable: true,\n get: function get() {\n return _horizontalCenter.horizontalCenter;\n }\n});\nexports.default = void 0;\n\nvar _Icon = require(\"./Icon\");\n\nvar _horizontalCenter = require(\"./horizontalCenter\");\n\nvar _default = _Icon.Icon;\nexports.default = _default;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FromBTCLNWrapper = void 0;\r\nconst FromBTCLNSwap_1 = require(\"./FromBTCLNSwap\");\r\nconst IFromBTCWrapper_1 = require(\"../IFromBTCWrapper\");\r\nconst bolt11_1 = require(\"@atomiqlabs/bolt11\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst UserError_1 = require(\"../../../errors/UserError\");\r\nconst randomBytes = require(\"randombytes\");\r\nconst createHash = require(\"create-hash\");\r\nconst IntermediaryError_1 = require(\"../../../errors/IntermediaryError\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst IntermediaryAPI_1 = require(\"../../../intermediaries/IntermediaryAPI\");\r\nconst RequestError_1 = require(\"../../../errors/RequestError\");\r\nconst LNURL_1 = require(\"../../../utils/LNURL\");\r\nclass FromBTCLNWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {\r\n /**\r\n * @param chainIdentifier\r\n * @param unifiedStorage Storage interface for the current environment\r\n * @param unifiedChainEvents On-chain event listener\r\n * @param contract Underlying contract handling the swaps\r\n * @param prices Swap pricing handler\r\n * @param tokens\r\n * @param swapDataDeserializer Deserializer for SwapData\r\n * @param lnApi\r\n * @param options\r\n * @param events Instance to use for emitting events\r\n */\r\n constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, lnApi, options, events) {\r\n super(chainIdentifier, unifiedStorage, unifiedChainEvents, contract, prices, tokens, swapDataDeserializer, options, events);\r\n this.TYPE = SwapType_1.SwapType.FROM_BTCLN;\r\n this.swapDeserializer = FromBTCLNSwap_1.FromBTCLNSwap;\r\n this.pendingSwapStates = [\r\n FromBTCLNSwap_1.FromBTCLNSwapState.PR_CREATED,\r\n FromBTCLNSwap_1.FromBTCLNSwapState.QUOTE_SOFT_EXPIRED,\r\n FromBTCLNSwap_1.FromBTCLNSwapState.PR_PAID,\r\n FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_COMMITED,\r\n FromBTCLNSwap_1.FromBTCLNSwapState.EXPIRED\r\n ];\r\n this.tickSwapState = [\r\n FromBTCLNSwap_1.FromBTCLNSwapState.PR_CREATED,\r\n FromBTCLNSwap_1.FromBTCLNSwapState.PR_PAID,\r\n FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_COMMITED\r\n ];\r\n this.lnApi = lnApi;\r\n }\r\n async processEventInitialize(swap, event) {\r\n if (swap.state === FromBTCLNSwap_1.FromBTCLNSwapState.PR_PAID || swap.state === FromBTCLNSwap_1.FromBTCLNSwapState.QUOTE_SOFT_EXPIRED) {\r\n if (swap.state === FromBTCLNSwap_1.FromBTCLNSwapState.PR_PAID || swap.state === FromBTCLNSwap_1.FromBTCLNSwapState.QUOTE_SOFT_EXPIRED)\r\n swap.state = FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_COMMITED;\r\n return true;\r\n }\r\n }\r\n processEventClaim(swap, event) {\r\n if (swap.state !== FromBTCLNSwap_1.FromBTCLNSwapState.FAILED) {\r\n swap.state = FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_CLAIMED;\r\n return Promise.resolve(true);\r\n }\r\n return Promise.resolve(false);\r\n }\r\n processEventRefund(swap, event) {\r\n if (swap.state !== FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_CLAIMED) {\r\n swap.state = FromBTCLNSwap_1.FromBTCLNSwapState.FAILED;\r\n return Promise.resolve(true);\r\n }\r\n return Promise.resolve(false);\r\n }\r\n /**\r\n * Returns the swap expiry, leaving enough time for the user to claim the HTLC\r\n *\r\n * @param data Parsed swap data\r\n */\r\n getHtlcTimeout(data) {\r\n return data.getExpiry() - 600n;\r\n }\r\n /**\r\n * Generates a new 32-byte secret to be used as pre-image for lightning network invoice & HTLC swap\\\r\n *\r\n * @private\r\n * @returns Hash pre-image & payment hash\r\n */\r\n getSecretAndHash() {\r\n const secret = randomBytes(32);\r\n const paymentHash = createHash(\"sha256\").update(secret).digest();\r\n return { secret, paymentHash };\r\n }\r\n /**\r\n * Pre-fetches intermediary's LN node capacity, doesn't throw, instead returns null\r\n *\r\n * @param pubkeyPromise Promise that resolves when we receive \"lnPublicKey\" param from the intermediary thorugh\r\n * streaming\r\n * @private\r\n * @returns LN Node liquidity\r\n */\r\n preFetchLnCapacity(pubkeyPromise) {\r\n return pubkeyPromise.then(pubkey => {\r\n if (pubkey == null)\r\n return null;\r\n return this.lnApi.getLNNodeLiquidity(pubkey);\r\n }).catch(e => {\r\n this.logger.error(\"preFetchLnCapacity(): Error: \", e);\r\n return null;\r\n });\r\n }\r\n /**\r\n * Verifies response returned from intermediary\r\n *\r\n * @param resp Response as returned by the intermediary\r\n * @param amountData\r\n * @param lp Intermediary\r\n * @param options Options as passed to the swap creation function\r\n * @param decodedPr Decoded bolt11 lightning network invoice\r\n * @param amountIn Amount in sats that will be paid for the swap\r\n * @private\r\n * @throws {IntermediaryError} in case the response is invalid\r\n */\r\n verifyReturnedData(resp, amountData, lp, options, decodedPr, amountIn) {\r\n if (lp.getAddress(this.chainIdentifier) !== resp.intermediaryKey)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid intermediary address/pubkey\");\r\n if (options.descriptionHash != null && decodedPr.tagsObject.purpose_commit_hash !== options.descriptionHash.toString(\"hex\"))\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid pr returned - description hash\");\r\n if (!amountData.exactIn) {\r\n if (resp.total != amountData.amount)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid amount returned\");\r\n }\r\n else {\r\n if (amountIn !== amountData.amount)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid payment request returned, amount mismatch\");\r\n }\r\n }\r\n /**\r\n * Verifies whether the intermediary's lightning node has enough inbound capacity to receive the LN payment\r\n *\r\n * @param lp Intermediary\r\n * @param decodedPr Decoded bolt11 lightning network invoice\r\n * @param amountIn Amount to be paid for the swap in sats\r\n * @param lnCapacityPrefetchPromise Pre-fetch for LN node capacity, preFetchLnCapacity()\r\n * @param abortSignal\r\n * @private\r\n * @throws {IntermediaryError} if the lightning network node doesn't have enough inbound liquidity\r\n * @throws {Error} if the lightning network node's inbound liquidity might be enough, but the swap would\r\n * deplete more than half of the liquidity\r\n */\r\n async verifyLnNodeCapacity(lp, decodedPr, amountIn, lnCapacityPrefetchPromise, abortSignal) {\r\n let result = await lnCapacityPrefetchPromise;\r\n if (result == null)\r\n result = await this.lnApi.getLNNodeLiquidity(decodedPr.payeeNodeKey);\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n if (result === null)\r\n throw new IntermediaryError_1.IntermediaryError(\"LP's lightning node not found in the lightning network graph!\");\r\n lp.lnData = result;\r\n if (decodedPr.payeeNodeKey !== result.publicKey)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid pr returned - payee pubkey\");\r\n if (result.capacity < amountIn)\r\n throw new IntermediaryError_1.IntermediaryError(\"LP's lightning node doesn't have enough inbound capacity for the swap!\");\r\n if ((result.capacity / 2n) < amountIn)\r\n throw new Error(\"LP's lightning node probably doesn't have enough inbound capacity for the swap!\");\r\n }\r\n /**\r\n * Returns a newly created swap, receiving 'amount' on lightning network\r\n *\r\n * @param signer Smart chain signer's address intiating the swap\r\n * @param amountData Amount of token & amount to swap\r\n * @param lps LPs (liquidity providers) to get the quotes from\r\n * @param options Quote options\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n * @param abortSignal Abort signal for aborting the process\r\n * @param preFetches\r\n */\r\n create(signer, amountData, lps, options, additionalParams, abortSignal, preFetches) {\r\n if (options == null)\r\n options = {};\r\n if (preFetches == null)\r\n preFetches = {};\r\n if (options.descriptionHash != null && options.descriptionHash.length !== 32)\r\n throw new UserError_1.UserError(\"Invalid description hash length\");\r\n const { secret, paymentHash } = this.getSecretAndHash();\r\n const claimHash = this.contract.getHashForHtlc(paymentHash);\r\n const _abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n preFetches.pricePrefetchPromise ??= this.preFetchPrice(amountData, _abortController.signal);\r\n const nativeTokenAddress = this.contract.getNativeCurrencyAddress();\r\n preFetches.feeRatePromise ??= this.preFetchFeeRate(signer, amountData, claimHash.toString(\"hex\"), _abortController);\r\n return lps.map(lp => {\r\n return {\r\n intermediary: lp,\r\n quote: (async () => {\r\n const abortController = (0, Utils_1.extendAbortController)(_abortController.signal);\r\n const liquidityPromise = this.preFetchIntermediaryLiquidity(amountData, lp, abortController);\r\n const { lnCapacityPromise, resp } = await (0, Utils_1.tryWithRetries)(async (retryCount) => {\r\n const { lnPublicKey, response } = IntermediaryAPI_1.IntermediaryAPI.initFromBTCLN(this.chainIdentifier, lp.url, nativeTokenAddress, {\r\n paymentHash,\r\n amount: amountData.amount,\r\n claimer: signer,\r\n token: amountData.token.toString(),\r\n descriptionHash: options.descriptionHash,\r\n exactOut: !amountData.exactIn,\r\n feeRate: preFetches.feeRatePromise,\r\n additionalParams\r\n }, this.options.postRequestTimeout, abortController.signal, retryCount > 0 ? false : null);\r\n return {\r\n lnCapacityPromise: this.preFetchLnCapacity(lnPublicKey),\r\n resp: await response\r\n };\r\n }, null, RequestError_1.RequestError, abortController.signal);\r\n const decodedPr = (0, bolt11_1.decode)(resp.pr);\r\n const amountIn = (BigInt(decodedPr.millisatoshis) + 999n) / 1000n;\r\n try {\r\n this.verifyReturnedData(resp, amountData, lp, options, decodedPr, amountIn);\r\n const [pricingInfo] = await Promise.all([\r\n this.verifyReturnedPrice(lp.services[SwapType_1.SwapType.FROM_BTCLN], false, amountIn, resp.total, amountData.token, resp, preFetches.pricePrefetchPromise, abortController.signal),\r\n this.verifyIntermediaryLiquidity(resp.total, liquidityPromise),\r\n this.verifyLnNodeCapacity(lp, decodedPr, amountIn, lnCapacityPromise, abortController.signal)\r\n ]);\r\n const quote = new FromBTCLNSwap_1.FromBTCLNSwap(this, {\r\n pricingInfo,\r\n url: lp.url,\r\n expiry: decodedPr.timeExpireDate * 1000,\r\n swapFee: resp.swapFee,\r\n feeRate: await preFetches.feeRatePromise,\r\n initialSwapData: await this.contract.createSwapData(base_1.ChainSwapType.HTLC, lp.getAddress(this.chainIdentifier), signer, amountData.token, resp.total, claimHash.toString(\"hex\"), this.getRandomSequence(), BigInt(Math.floor(Date.now() / 1000)), false, true, resp.securityDeposit, 0n, nativeTokenAddress),\r\n pr: resp.pr,\r\n secret: secret.toString(\"hex\"),\r\n exactIn: amountData.exactIn ?? true\r\n });\r\n await quote._save();\r\n return quote;\r\n }\r\n catch (e) {\r\n abortController.abort(e);\r\n throw e;\r\n }\r\n })()\r\n };\r\n });\r\n }\r\n /**\r\n * Parses and fetches lnurl withdraw params from the specified lnurl\r\n *\r\n * @param lnurl LNURL to be parsed and fetched\r\n * @param abortSignal\r\n * @private\r\n * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-withdraw\r\n */\r\n async getLNURLWithdraw(lnurl, abortSignal) {\r\n if (typeof (lnurl) !== \"string\")\r\n return lnurl;\r\n const res = await LNURL_1.LNURL.getLNURL(lnurl, true, this.options.getRequestTimeout, abortSignal);\r\n if (res == null)\r\n throw new UserError_1.UserError(\"Invalid LNURL\");\r\n if (res.tag !== \"withdrawRequest\")\r\n throw new UserError_1.UserError(\"Not a LNURL-withdrawal\");\r\n return res;\r\n }\r\n /**\r\n * Returns a newly created swap, receiving 'amount' from the lnurl-withdraw\r\n *\r\n * @param signer Smart chains signer's address intiating the swap\r\n * @param lnurl LNURL-withdraw to withdraw funds from\r\n * @param amountData Amount of token & amount to swap\r\n * @param lps LPs (liquidity providers) to get the quotes from\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n * @param abortSignal Abort signal for aborting the process\r\n */\r\n async createViaLNURL(signer, lnurl, amountData, lps, additionalParams, abortSignal) {\r\n if (!this.isInitialized)\r\n throw new Error(\"Not initialized, call init() first!\");\r\n const abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n const preFetches = {\r\n pricePrefetchPromise: this.preFetchPrice(amountData, abortController.signal),\r\n feeRatePromise: this.preFetchFeeRate(signer, amountData, null, abortController)\r\n };\r\n try {\r\n const exactOutAmountPromise = !amountData.exactIn ? preFetches.pricePrefetchPromise.then(price => this.prices.getToBtcSwapAmount(this.chainIdentifier, amountData.amount, amountData.token, abortController.signal, price)).catch(e => {\r\n abortController.abort(e);\r\n return null;\r\n }) : null;\r\n const withdrawRequest = await this.getLNURLWithdraw(lnurl, abortController.signal);\r\n const min = BigInt(withdrawRequest.minWithdrawable) / 1000n;\r\n const max = BigInt(withdrawRequest.maxWithdrawable) / 1000n;\r\n if (amountData.exactIn) {\r\n if (amountData.amount < min)\r\n throw new UserError_1.UserError(\"Amount less than LNURL-withdraw minimum\");\r\n if (amountData.amount > max)\r\n throw new UserError_1.UserError(\"Amount more than LNURL-withdraw maximum\");\r\n }\r\n else {\r\n const amount = await exactOutAmountPromise;\r\n abortController.signal.throwIfAborted();\r\n if ((amount * 95n / 100n) < min)\r\n throw new UserError_1.UserError(\"Amount less than LNURL-withdraw minimum\");\r\n if ((amount * 105n / 100n) > max)\r\n throw new UserError_1.UserError(\"Amount more than LNURL-withdraw maximum\");\r\n }\r\n return this.create(signer, amountData, lps, null, additionalParams, abortSignal, preFetches).map(data => {\r\n return {\r\n quote: data.quote.then(quote => {\r\n quote.lnurl = withdrawRequest.url;\r\n quote.lnurlK1 = withdrawRequest.k1;\r\n quote.lnurlCallback = withdrawRequest.callback;\r\n const amountIn = quote.getInput().rawAmount;\r\n if (amountIn < min)\r\n throw new UserError_1.UserError(\"Amount less than LNURL-withdraw minimum\");\r\n if (amountIn > max)\r\n throw new UserError_1.UserError(\"Amount more than LNURL-withdraw maximum\");\r\n return quote;\r\n }),\r\n intermediary: data.intermediary\r\n };\r\n });\r\n }\r\n catch (e) {\r\n abortController.abort(e);\r\n throw e;\r\n }\r\n }\r\n}\r\nexports.FromBTCLNWrapper = FromBTCLNWrapper;\r\n","import { exists, output } from './_assert.js';\nimport { Hash, createView, Input, toBytes } from './utils.js';\n\n// Polyfill for Safari 14\nfunction setBigUint64(view: DataView, byteOffset: number, value: bigint, isLE: boolean): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\n// Base SHA2 class (RFC 6234)\nexport abstract class SHA2> extends Hash {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(\n readonly blockLen: number,\n public outputLen: number,\n readonly padOffset: number,\n readonly isLE: boolean\n ) {\n super();\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n}\n","(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RedundantSwapPrice = void 0;\r\nconst BinancePriceProvider_1 = require(\"./providers/BinancePriceProvider\");\r\nconst OKXPriceProvider_1 = require(\"./providers/OKXPriceProvider\");\r\nconst CoinGeckoPriceProvider_1 = require(\"./providers/CoinGeckoPriceProvider\");\r\nconst CoinPaprikaPriceProvider_1 = require(\"./providers/CoinPaprikaPriceProvider\");\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nconst ICachedSwapPrice_1 = require(\"./abstract/ICachedSwapPrice\");\r\nconst RequestError_1 = require(\"../errors/RequestError\");\r\nconst KrakenPriceProvider_1 = require(\"./providers/KrakenPriceProvider\");\r\nconst logger = (0, Utils_1.getLogger)(\"RedundantSwapPrice: \");\r\n/**\r\n * Swap price API using multiple price sources, handles errors on the APIs and automatically switches between them, such\r\n * that there always is a functional API\r\n */\r\nclass RedundantSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {\r\n static createFromTokenMap(maxAllowedFeeDiffPPM, assets, cacheTimeout) {\r\n const priceApis = [\r\n new BinancePriceProvider_1.BinancePriceProvider(assets.map(coinData => {\r\n return {\r\n coinId: coinData.binancePair,\r\n chains: coinData.chains\r\n };\r\n })),\r\n new OKXPriceProvider_1.OKXPriceProvider(assets.map(coinData => {\r\n return {\r\n coinId: coinData.okxPair,\r\n chains: coinData.chains\r\n };\r\n })),\r\n new CoinGeckoPriceProvider_1.CoinGeckoPriceProvider(assets.map(coinData => {\r\n return {\r\n coinId: coinData.coinGeckoCoinId,\r\n chains: coinData.chains\r\n };\r\n })),\r\n new CoinPaprikaPriceProvider_1.CoinPaprikaPriceProvider(assets.map(coinData => {\r\n return {\r\n coinId: coinData.coinPaprikaCoinId,\r\n chains: coinData.chains\r\n };\r\n })),\r\n new KrakenPriceProvider_1.KrakenPriceProvider(assets.map(coinData => {\r\n return {\r\n coinId: coinData.krakenPair,\r\n chains: coinData.chains\r\n };\r\n }))\r\n ];\r\n return new RedundantSwapPrice(maxAllowedFeeDiffPPM, assets, priceApis, cacheTimeout);\r\n }\r\n constructor(maxAllowedFeeDiffPPM, coinsDecimals, priceApis, cacheTimeout) {\r\n super(maxAllowedFeeDiffPPM, cacheTimeout);\r\n this.coinsDecimals = {};\r\n for (let coinData of coinsDecimals) {\r\n for (let chainId in coinData.chains) {\r\n const { address, decimals } = coinData.chains[chainId];\r\n this.coinsDecimals[chainId] ??= {};\r\n this.coinsDecimals[chainId][address.toString()] = decimals;\r\n }\r\n }\r\n this.priceApis = priceApis.map(api => {\r\n return {\r\n priceApi: api,\r\n operational: null\r\n };\r\n });\r\n }\r\n /**\r\n * Returns price api that should be operational\r\n *\r\n * @private\r\n */\r\n getOperationalPriceApi() {\r\n return this.priceApis.find(e => e.operational === true);\r\n }\r\n /**\r\n * Returns price apis that are maybe operational, in case none is considered operational returns all of the price\r\n * apis such that they can be tested again whether they are operational\r\n *\r\n * @private\r\n */\r\n getMaybeOperationalPriceApis() {\r\n let operational = this.priceApis.filter(e => e.operational === true || e.operational === null);\r\n if (operational.length === 0) {\r\n this.priceApis.forEach(e => e.operational = null);\r\n operational = this.priceApis;\r\n }\r\n return operational;\r\n }\r\n /**\r\n * Fetches price in parallel from multiple maybe operational price APIs\r\n *\r\n * @param chainIdentifier\r\n * @param token\r\n * @param abortSignal\r\n * @private\r\n */\r\n async fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal) {\r\n try {\r\n return await (0, Utils_1.promiseAny)(this.getMaybeOperationalPriceApis().map(obj => (async () => {\r\n try {\r\n const price = await obj.priceApi.getPrice(chainIdentifier, token, abortSignal);\r\n logger.debug(\"fetchPrice(): Price from \" + obj.priceApi.constructor.name + \": \", price.toString(10));\r\n obj.operational = true;\r\n return price;\r\n }\r\n catch (e) {\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n obj.operational = false;\r\n throw e;\r\n }\r\n })()));\r\n }\r\n catch (e) {\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n throw e.find(err => !(err instanceof RequestError_1.RequestError)) || e[0];\r\n }\r\n }\r\n /**\r\n * Fetches the prices, first tries to use the operational price API (if any) and if that fails it falls back\r\n * to using maybe operational price APIs\r\n *\r\n * @param chainIdentifier\r\n * @param token\r\n * @param abortSignal\r\n * @private\r\n */\r\n fetchPrice(chainIdentifier, token, abortSignal) {\r\n return (0, Utils_1.tryWithRetries)(() => {\r\n const operationalPriceApi = this.getOperationalPriceApi();\r\n if (operationalPriceApi != null) {\r\n return operationalPriceApi.priceApi.getPrice(chainIdentifier, token, abortSignal).catch(err => {\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n operationalPriceApi.operational = false;\r\n return this.fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal);\r\n });\r\n }\r\n return this.fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal);\r\n }, null, RequestError_1.RequestError, abortSignal);\r\n }\r\n getDecimals(chainIdentifier, token) {\r\n if (this.coinsDecimals[chainIdentifier] == null)\r\n return null;\r\n return this.coinsDecimals[chainIdentifier][token.toString()];\r\n }\r\n /**\r\n * Fetches BTC price in USD in parallel from multiple maybe operational price APIs\r\n *\r\n * @param abortSignal\r\n * @private\r\n */\r\n async fetchUsdPriceFromMaybeOperationalPriceApis(abortSignal) {\r\n try {\r\n return await (0, Utils_1.promiseAny)(this.getMaybeOperationalPriceApis().map(obj => (async () => {\r\n try {\r\n const price = await obj.priceApi.getUsdPrice(abortSignal);\r\n logger.debug(\"fetchPrice(): USD price from \" + obj.priceApi.constructor.name + \": \", price.toString(10));\r\n obj.operational = true;\r\n return price;\r\n }\r\n catch (e) {\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n obj.operational = false;\r\n throw e;\r\n }\r\n })()));\r\n }\r\n catch (e) {\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n throw e.find(err => !(err instanceof RequestError_1.RequestError)) || e[0];\r\n }\r\n }\r\n fetchUsdPrice(abortSignal) {\r\n return (0, Utils_1.tryWithRetries)(() => {\r\n const operationalPriceApi = this.getOperationalPriceApi();\r\n if (operationalPriceApi != null) {\r\n return operationalPriceApi.priceApi.getUsdPrice(abortSignal).catch(err => {\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n operationalPriceApi.operational = false;\r\n return this.fetchUsdPriceFromMaybeOperationalPriceApis(abortSignal);\r\n });\r\n }\r\n return this.fetchUsdPriceFromMaybeOperationalPriceApis(abortSignal);\r\n }, null, RequestError_1.RequestError, abortSignal);\r\n }\r\n}\r\nexports.RedundantSwapPrice = RedundantSwapPrice;\r\n","'use strict'\n\nconst nobleSha256 = require('@noble/hashes/sha256').sha256\nconst bech32 = require('bech32')\nconst Buffer = require('safe-buffer').Buffer\nconst bitcoin = require('@scure/btc-signer/payment')\nconst nobleSecp256k1 = require('@noble/curves/secp256k1').secp256k1\nconst cloneDeep = require('lodash.clonedeep')\n\n// defaults for encode; default timestamp is current time at call\nconst DEFAULTNETWORK = {\n // default network is bitcoin\n bech32: 'bc',\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n validWitnessVersions: [0, 1],\n wif: 0x80\n}\nconst TESTNETWORK = {\n bech32: 'tb',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0, 1],\n wif: 0xef\n}\nconst REGTESTNETWORK = {\n bech32: 'bcrt',\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n validWitnessVersions: [0, 1],\n wif: 0xef\n}\nconst SIMNETWORK = {\n bech32: 'sb',\n pubKeyHash: 0x3f,\n scriptHash: 0x7b,\n validWitnessVersions: [0, 1],\n wif: 0xef\n}\nconst DEFAULTEXPIRETIME = 3600\nconst DEFAULTCLTVEXPIRY = 9\nconst DEFAULTDESCRIPTION = ''\nconst DEFAULTFEATUREBITS = {\n word_length: 4, // last bit set default is 15\n var_onion_optin: {\n required: false,\n supported: true\n },\n payment_secret: {\n required: false,\n supported: true\n }\n}\n\nconst FEATUREBIT_ORDER = [\n 'option_data_loss_protect',\n 'initial_routing_sync',\n 'option_upfront_shutdown_script',\n 'gossip_queries',\n 'var_onion_optin',\n 'gossip_queries_ex',\n 'option_static_remotekey',\n 'payment_secret',\n 'basic_mpp',\n 'option_support_large_channel'\n]\n\nconst DIVISORS = {\n m: 1000n,\n u: 1000000n,\n n: 1000000000n,\n p: 1000000000000n\n}\n\nconst MAX_MILLISATS = 2100000000000000000n\n\nconst MILLISATS_PER_BTC = 100000000000n\nconst MILLISATS_PER_MILLIBTC = 100000000n\nconst MILLISATS_PER_MICROBTC = 100000n\nconst MILLISATS_PER_NANOBTC = 100n\nconst PICOBTC_PER_MILLISATS = 10n\n\nconst TAGCODES = {\n payment_hash: 1,\n payment_secret: 16,\n description: 13,\n payee_node_key: 19,\n purpose_commit_hash: 23, // commit to longer descriptions (like a website)\n expire_time: 6, // default: 3600 (1 hour)\n min_final_cltv_expiry: 24, // default: 9\n fallback_address: 9,\n routing_info: 3, // for extra routing info (private etc.)\n feature_bits: 5,\n blinded_payinfo: 20\n}\n\n// reverse the keys and values of TAGCODES and insert into TAGNAMES\nconst TAGNAMES = {}\nfor (let i = 0, keys = Object.keys(TAGCODES); i < keys.length; i++) {\n const currentName = keys[i]\n const currentCode = TAGCODES[keys[i]].toString()\n TAGNAMES[currentCode] = currentName\n}\n\nconst TAGENCODERS = {\n payment_hash: hexToWord, // 256 bits\n payment_secret: hexToWord, // 256 bits\n description: textToWord, // string variable length\n payee_node_key: hexToWord, // 264 bits\n purpose_commit_hash: purposeCommitEncoder, // 256 bits\n expire_time: intBEToWords, // default: 3600 (1 hour)\n min_final_cltv_expiry: intBEToWords, // default: 9\n fallback_address: fallbackAddressEncoder,\n routing_info: routingInfoEncoder, // for extra routing info (private etc.)\n feature_bits: featureBitsEncoder\n // TODO: Add tag encoder for blinded paths\n}\n\nconst TAGPARSERS = {\n 1: (words) => wordsToBuffer(words, true).toString('hex'), // 256 bits\n 16: (words) => wordsToBuffer(words, true).toString('hex'), // 256 bits\n 13: (words) => wordsToBuffer(words, true).toString('utf8'), // string variable length\n 19: (words) => wordsToBuffer(words, true).toString('hex'), // 264 bits\n 23: (words) => wordsToBuffer(words, true).toString('hex'), // 256 bits\n 6: wordsToIntBE, // default: 3600 (1 hour)\n 24: wordsToIntBE, // default: 9\n 9: fallbackAddressParser,\n 3: routingInfoParser, // for extra routing info (private etc.)\n 5: featureBitsParser, // keep feature bits as array of 5 bit words\n 20: blindedPathsParser\n}\n\nconst unknownTagName = 'unknownTag'\n\nfunction unknownEncoder (data) {\n data.words = bech32.decode(data.words, Number.MAX_SAFE_INTEGER).words\n return data\n}\n\nfunction getUnknownParser (tagCode) {\n return (words) => ({\n tagCode: parseInt(tagCode),\n words: bech32.encode('unknown', words, Number.MAX_SAFE_INTEGER)\n })\n}\n\nfunction wordsToIntBE (words) {\n return words.reverse().reduce((total, item, index) => {\n return total + item * Math.pow(32, index)\n }, 0)\n}\n\nfunction intBEToWords (intBE, bits) {\n const words = []\n if (bits === undefined) bits = 5\n intBE = Math.floor(intBE)\n if (intBE === 0) return [0]\n while (intBE > 0) {\n words.push(intBE & (Math.pow(2, bits) - 1))\n intBE = Math.floor(intBE / Math.pow(2, bits))\n }\n return words.reverse()\n}\n\nfunction sha256 (data) {\n return Buffer.from(nobleSha256(data))\n}\n\nfunction convert (data, inBits, outBits) {\n let value = 0\n let bits = 0\n const maxV = (1 << outBits) - 1\n\n const result = []\n for (let i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n\n return result\n}\n\nfunction wordsToBuffer (words, trim) {\n let buffer = Buffer.from(convert(words, 5, 8, true))\n if (trim && words.length * 5 % 8 !== 0) {\n buffer = buffer.slice(0, -1)\n }\n return buffer\n}\n\nfunction hexToBuffer (hex) {\n if (hex !== undefined &&\n (typeof hex === 'string' || hex instanceof String) &&\n hex.match(/^([a-zA-Z0-9]{2})*$/)) {\n return Buffer.from(hex, 'hex')\n }\n return hex\n}\n\nfunction textToBuffer (text) {\n return Buffer.from(text, 'utf8')\n}\n\nfunction hexToWord (hex) {\n const buffer = hexToBuffer(hex)\n return bech32.toWords(buffer)\n}\n\nfunction textToWord (text) {\n const buffer = textToBuffer(text)\n const words = bech32.toWords(buffer)\n return words\n}\n\n// see encoder for details\nfunction fallbackAddressParser (words, network) {\n const version = words[0]\n words = words.slice(1)\n\n const addressHash = wordsToBuffer(words, true)\n\n let address = null\n\n switch (version) {\n case 17:\n address = bitcoin.Address(network).encode({ type: 'pkh', hash: addressHash })\n break\n case 18:\n address = bitcoin.Address(network).encode({ type: 'sh', hash: addressHash })\n break\n case 0:\n if (addressHash.length === 20) {\n address = bitcoin.Address(network).encode({ type: 'wpkh', hash: addressHash })\n } else {\n address = bitcoin.Address(network).encode({ type: 'wsh', hash: addressHash })\n }\n break\n case 1:\n address = bitcoin.Address(network).encode({ type: 'tr', pubkey: addressHash })\n break\n }\n\n return {\n code: version,\n address,\n addressHash: addressHash.toString('hex')\n }\n}\n\n// the code is the witness version OR 17 for P2PKH OR 18 for P2SH\n// anything besides code 17 or 18 should be bech32 or bech32m encoded address.\n// 1 word for the code, and right pad with 0 if necessary for the addressHash\n// (address parsing for encode is done in the encode function)\nfunction fallbackAddressEncoder (data, network) {\n return [data.code].concat(hexToWord(data.addressHash))\n}\n\n// first convert from words to buffer, trimming padding where necessary\n// parse in 51 byte chunks. See encoder for details.\nfunction routingInfoParser (words) {\n const routes = []\n let pubkey, shortChannelId, feeBaseMSats, feeProportionalMillionths, cltvExpiryDelta\n let routesBuffer = wordsToBuffer(words, true)\n while (routesBuffer.length > 0) {\n pubkey = routesBuffer.slice(0, 33).toString('hex') // 33 bytes\n shortChannelId = routesBuffer.slice(33, 41).toString('hex') // 8 bytes\n feeBaseMSats = parseInt(routesBuffer.slice(41, 45).toString('hex'), 16) // 4 bytes\n feeProportionalMillionths = parseInt(routesBuffer.slice(45, 49).toString('hex'), 16) // 4 bytes\n cltvExpiryDelta = parseInt(routesBuffer.slice(49, 51).toString('hex'), 16) // 2 bytes\n\n routesBuffer = routesBuffer.slice(51)\n\n routes.push({\n pubkey,\n short_channel_id: shortChannelId,\n fee_base_msat: feeBaseMSats,\n fee_proportional_millionths: feeProportionalMillionths,\n cltv_expiry_delta: cltvExpiryDelta\n })\n }\n return routes\n}\n\nfunction decodeBigSize (data, pointer) {\n const firstByte = data.readUInt8(pointer)\n pointer++\n switch (firstByte) {\n case 0xfd:\n return [data.readUInt16BE(pointer), pointer + 2]\n case 0xfe:\n return [data.readUInt32BE(pointer), pointer + 4]\n case 0xff:\n return [parseInt(data.slice(pointer, pointer + 8).toString('hex'), 16), pointer + 8]\n default:\n return [firstByte, pointer]\n }\n}\n\nfunction decodeBlindedHop (data, pointer) {\n const blindedNodePubkey = data.slice(pointer, pointer + 33)\n pointer += 33\n const [cipherTextLength, _pointer] = decodeBigSize(data, pointer)\n pointer = _pointer\n const cipherText = data.slice(pointer, pointer + cipherTextLength)\n pointer += cipherTextLength\n return [{\n blinded_node_pubkey: blindedNodePubkey.toString('hex'),\n cipher_text: cipherText.toString('hex')\n }, pointer]\n}\n\nfunction blindedPathsParser (words) {\n const data = wordsToBuffer(words, true)\n const feeBaseMsat = data.readUInt32BE(0)\n const feeProportionalMillionths = data.readUInt32BE(4)\n const cltvExpiryDelta = data.readUInt16BE(8)\n const htlcMinimumMsat = BigInt('0x' + data.slice(10, 18).toString('hex'))\n const htlcMaximumMsat = BigInt('0x' + data.slice(18, 26).toString('hex'))\n const flen = data.readUInt16BE(26)\n let pointer = 28\n const features = [...data.slice(pointer, pointer + flen)]\n pointer += flen\n const firstEphemeralBlindingPoint = data.slice(pointer, pointer + 33).toString('hex')\n pointer += 33\n const numHops = data.readUInt8(pointer)\n pointer++\n const blindedHops = []\n for (let hop = 0; hop < numHops; hop++) {\n const [blindedHop, _pointer] = decodeBlindedHop(data, pointer)\n pointer = _pointer\n blindedHops.push(blindedHop)\n }\n return {\n fee_base_msat: feeBaseMsat,\n fee_proportional_millionths: feeProportionalMillionths,\n cltv_expiry_delta: cltvExpiryDelta,\n htlc_minimum_msat: htlcMinimumMsat,\n htlc_maximum_msat: htlcMaximumMsat,\n features,\n first_ephemeral_blinding_point: firstEphemeralBlindingPoint,\n blinded_hops: blindedHops,\n introduction_node: blindedHops[0].blinded_node_pubkey\n }\n}\n\nfunction featureBitsParser (words) {\n const bools = words.slice().reverse().map(word =>\n [\n !!(word & 0b1),\n !!(word & 0b10),\n !!(word & 0b100),\n !!(word & 0b1000),\n !!(word & 0b10000)\n ]\n ).reduce((finalArr, itemArr) => finalArr.concat(itemArr), [])\n while (bools.length < FEATUREBIT_ORDER.length * 2) {\n bools.push(false)\n }\n const featureBits = {\n word_length: words.length\n }\n FEATUREBIT_ORDER.forEach((featureName, index) => {\n featureBits[featureName] = {\n required: bools[index * 2],\n supported: bools[index * 2 + 1]\n }\n })\n if (bools.length > FEATUREBIT_ORDER.length * 2) {\n const extraBits = bools.slice(FEATUREBIT_ORDER.length * 2)\n featureBits.extra_bits = {\n start_bit: FEATUREBIT_ORDER.length * 2,\n bits: extraBits,\n has_required: extraBits.reduce(\n (result, bit, index) =>\n index % 2 !== 0\n ? result || false\n : result || bit,\n false\n )\n }\n } else {\n featureBits.extra_bits = {\n start_bit: FEATUREBIT_ORDER.length * 2,\n bits: [],\n has_required: false\n }\n }\n return featureBits\n}\n\nfunction featureBitsEncoder (featureBits) {\n let wordsLength = featureBits.word_length\n let bools = []\n FEATUREBIT_ORDER.forEach(featureName => {\n bools.push(!!(featureBits[featureName] || {}).required)\n bools.push(!!(featureBits[featureName] || {}).supported)\n })\n // Make sure that only minimal number of bits is encoded\n while (bools[bools.length - 1] === false) {\n bools.pop()\n }\n while (bools.length % 5 !== 0) {\n bools.push(false)\n }\n if (\n featureBits.extra_bits &&\n Array.isArray(featureBits.extra_bits.bits) &&\n featureBits.extra_bits.bits.length > 0\n ) {\n while (bools.length < featureBits.extra_bits.start_bit) {\n bools.push(false)\n }\n bools = bools.concat(featureBits.extra_bits.bits)\n }\n if (wordsLength !== undefined && bools.length / 5 > wordsLength) {\n throw new Error('word_length is too small to contain all featureBits')\n } else if (wordsLength === undefined) {\n wordsLength = Math.ceil(bools.length / 5)\n }\n return new Array(wordsLength).fill(0).map((_, index) =>\n bools[index * 5 + 4] << 4 |\n bools[index * 5 + 3] << 3 |\n bools[index * 5 + 2] << 2 |\n bools[index * 5 + 1] << 1 |\n bools[index * 5] << 0\n ).reverse()\n}\n\n// routing info is encoded first as a large buffer\n// 51 bytes for each channel\n// 33 byte pubkey, 8 byte short_channel_id, 4 byte millisatoshi base fee (left padded)\n// 4 byte fee proportional millionths and a 2 byte left padded CLTV expiry delta.\n// after encoding these 51 byte chunks and concatenating them\n// convert to words right padding 0 bits.\nfunction routingInfoEncoder (datas) {\n let buffer = Buffer.from([])\n datas.forEach(data => {\n buffer = Buffer.concat([buffer, hexToBuffer(data.pubkey)])\n buffer = Buffer.concat([buffer, hexToBuffer(data.short_channel_id)])\n buffer = Buffer.concat([buffer, Buffer.from([0, 0, 0].concat(intBEToWords(data.fee_base_msat, 8)).slice(-4))])\n buffer = Buffer.concat([buffer, Buffer.from([0, 0, 0].concat(intBEToWords(data.fee_proportional_millionths, 8)).slice(-4))])\n buffer = Buffer.concat([buffer, Buffer.from([0].concat(intBEToWords(data.cltv_expiry_delta, 8)).slice(-2))])\n })\n return hexToWord(buffer)\n}\n\n// if text, return the sha256 hash of the text as words.\n// if hex, return the words representation of that data.\nfunction purposeCommitEncoder (data) {\n let buffer\n if (data !== undefined && (typeof data === 'string' || data instanceof String)) {\n if (data.match(/^([a-zA-Z0-9]{2})*$/)) {\n buffer = Buffer.from(data, 'hex')\n } else {\n buffer = sha256(Buffer.from(data, 'utf8'))\n }\n } else {\n throw new Error('purpose or purpose commit must be a string or hex string')\n }\n return bech32.toWords(buffer)\n}\n\nfunction tagsItems (tags, tagName) {\n const tag = tags.filter(item => item.tagName === tagName)\n const data = tag.length > 0 ? tag[0].data : null\n return data\n}\n\nfunction tagsContainItem (tags, tagName) {\n return tagsItems(tags, tagName) !== null\n}\n\nfunction orderKeys (unorderedObj, forDecode) {\n const orderedObj = {}\n Object.keys(unorderedObj).sort().forEach((key) => {\n orderedObj[key] = unorderedObj[key]\n })\n if (forDecode === true) {\n const cacheName = '__tagsObject_cache'\n Object.defineProperty(orderedObj, 'tagsObject', {\n get () {\n if (!this[cacheName]) {\n Object.defineProperty(this, cacheName, {\n value: getTagsObject(this.tags)\n })\n }\n return this[cacheName]\n }\n })\n }\n return orderedObj\n}\n\nfunction satToHrp (satoshis) {\n if (!satoshis.toString().match(/^\\d+$/)) {\n throw new Error('satoshis must be an integer')\n }\n const millisatoshisBN = BigInt(satoshis)\n return millisatToHrp(millisatoshisBN * 1000n)\n}\n\nfunction millisatToHrp (millisatoshis) {\n if (!millisatoshis.toString().match(/^\\d+$/)) {\n throw new Error('millisatoshis must be an integer')\n }\n const millisatoshisBN = BigInt(millisatoshis)\n const millisatoshisString = millisatoshisBN.toString(10)\n const millisatoshisLength = millisatoshisString.length\n let divisorString, valueString\n if (millisatoshisLength > 11 && /0{11}$/.test(millisatoshisString)) {\n divisorString = ''\n valueString = (millisatoshisBN / MILLISATS_PER_BTC).toString(10)\n } else if (millisatoshisLength > 8 && /0{8}$/.test(millisatoshisString)) {\n divisorString = 'm'\n valueString = (millisatoshisBN / MILLISATS_PER_MILLIBTC).toString(10)\n } else if (millisatoshisLength > 5 && /0{5}$/.test(millisatoshisString)) {\n divisorString = 'u'\n valueString = (millisatoshisBN / MILLISATS_PER_MICROBTC).toString(10)\n } else if (millisatoshisLength > 2 && /0{2}$/.test(millisatoshisString)) {\n divisorString = 'n'\n valueString = (millisatoshisBN / MILLISATS_PER_NANOBTC).toString(10)\n } else {\n divisorString = 'p'\n valueString = (millisatoshisBN * PICOBTC_PER_MILLISATS).toString(10)\n }\n return valueString + divisorString\n}\n\nfunction hrpToSat (hrpString, outputString) {\n const millisatoshisBN = hrpToMillisat(hrpString, false)\n if ((millisatoshisBN % 1000n) !== 0n) {\n throw new Error('Amount is outside of valid range')\n }\n const result = millisatoshisBN / 1000n\n return outputString ? result.toString(10) : result\n}\n\nfunction hrpToMillisat (hrpString, outputString) {\n let divisor, value\n if (hrpString.slice(-1).match(/^[munp]$/)) {\n divisor = hrpString.slice(-1)\n value = hrpString.slice(0, -1)\n } else if (hrpString.slice(-1).match(/^[^munp0-9]$/)) {\n throw new Error('Not a valid multiplier for the amount')\n } else {\n value = hrpString\n }\n\n if (!value.match(/^\\d+$/)) throw new Error('Not a valid human readable amount')\n\n const valueBN = BigInt(value)\n\n const millisatoshisBN = divisor\n ? (valueBN * MILLISATS_PER_BTC / DIVISORS[divisor])\n : (valueBN * MILLISATS_PER_BTC)\n\n if (((divisor === 'p' && (valueBN % 10n) !== 0n) ||\n millisatoshisBN > MAX_MILLISATS)) {\n throw new Error('Amount is outside of valid range')\n }\n\n return outputString ? millisatoshisBN.toString(10) : millisatoshisBN\n}\n\nfunction sign (inputPayReqObj, inputPrivateKey) {\n const payReqObj = cloneDeep(inputPayReqObj)\n const privateKey = hexToBuffer(inputPrivateKey)\n if (payReqObj.complete && payReqObj.paymentRequest) return payReqObj\n\n if (privateKey === undefined || privateKey.length !== 32 ||\n !nobleSecp256k1.utils.isValidPrivateKey(privateKey)) {\n throw new Error('privateKey must be a 32 byte Buffer and valid private key')\n }\n\n let nodePublicKey, tagNodePublicKey\n // If there is a payee_node_key tag convert to buffer\n if (tagsContainItem(payReqObj.tags, TAGNAMES['19'])) {\n tagNodePublicKey = hexToBuffer(tagsItems(payReqObj.tags, TAGNAMES['19']))\n }\n // If there is payeeNodeKey attribute, convert to buffer\n if (payReqObj.payeeNodeKey) {\n nodePublicKey = hexToBuffer(payReqObj.payeeNodeKey)\n }\n // If they are not equal throw an error\n if (nodePublicKey && tagNodePublicKey && !tagNodePublicKey.equals(nodePublicKey)) {\n throw new Error('payee node key tag and payeeNodeKey attribute must match')\n }\n\n // make sure if either exist they are in nodePublicKey\n nodePublicKey = tagNodePublicKey || nodePublicKey\n\n const publicKey = Buffer.from(nobleSecp256k1.getPublicKey(privateKey, true))\n\n // Check if pubkey matches for private key\n if (nodePublicKey && !publicKey.equals(nodePublicKey)) {\n throw new Error('The private key given is not the private key of the node public key given')\n }\n\n const words = bech32.decode(payReqObj.wordsTemp, Number.MAX_SAFE_INTEGER).words\n\n // the preimage for the signing data is the buffer of the prefix concatenated\n // with the buffer conversion of the data words excluding the signature\n // (right padded with 0 bits)\n const toSign = Buffer.concat([Buffer.from(payReqObj.prefix, 'utf8'), wordsToBuffer(words)])\n // single SHA256 hash for the signature\n const payReqHash = sha256(toSign)\n\n // signature is 64 bytes (32 byte r value and 32 byte s value concatenated)\n // PLUS one extra byte appended to the right with the recoveryID in [0,1,2,3]\n // Then convert to 5 bit words with right padding 0 bits.\n const sigObj = nobleSecp256k1.sign(payReqHash, privateKey, { lowS: true })\n payReqObj.signature = Buffer.from(sigObj.toCompactRawBytes()).toString('hex')\n const sigWords = hexToWord(payReqObj.signature + '0' + sigObj.recovery)\n\n // append signature words to the words, mark as complete, and add the payreq\n payReqObj.payeeNodeKey = publicKey.toString('hex')\n payReqObj.recoveryFlag = sigObj.recovery\n payReqObj.wordsTemp = bech32.encode('temp', words.concat(sigWords), Number.MAX_SAFE_INTEGER)\n payReqObj.complete = true\n payReqObj.paymentRequest = bech32.encode(payReqObj.prefix, words.concat(sigWords), Number.MAX_SAFE_INTEGER)\n\n return orderKeys(payReqObj)\n}\n\nfunction encode (inputData, addDefaults) {\n // we don't want to affect the data being passed in, so we copy the object\n const data = cloneDeep(inputData)\n\n // by default we will add default values to description, expire time, and min cltv\n if (addDefaults === undefined) addDefaults = true\n\n const canReconstruct = !(data.signature === undefined || data.recoveryFlag === undefined)\n\n // if no cointype is defined, set to testnet\n let coinTypeObj\n if (data.network === undefined && !canReconstruct) {\n data.network = DEFAULTNETWORK\n coinTypeObj = DEFAULTNETWORK\n } else if (data.network === undefined && canReconstruct) {\n throw new Error('Need network for proper payment request reconstruction')\n } else {\n // if the coinType is not a valid name of a network in @scure/btc-signer, fail\n if (\n !data.network.bech32 ||\n data.network.pubKeyHash === undefined ||\n data.network.scriptHash === undefined ||\n !Array.isArray(data.network.validWitnessVersions) ||\n data.network.wif === undefined\n ) throw new Error('Invalid network')\n coinTypeObj = data.network\n }\n\n // use current time as default timestamp (seconds)\n if (data.timestamp === undefined && !canReconstruct) {\n data.timestamp = Math.floor(new Date().getTime() / 1000)\n } else if (data.timestamp === undefined && canReconstruct) {\n throw new Error('Need timestamp for proper payment request reconstruction')\n }\n\n if (data.tags === undefined) throw new Error('Payment Requests need tags array')\n\n // If no payment hash, fail\n if (!tagsContainItem(data.tags, TAGNAMES['1'])) {\n throw new Error('Lightning Payment Request needs a payment hash')\n }\n // If no feature bits when payment secret is found, fail\n if (tagsContainItem(data.tags, TAGNAMES['16'])) {\n if (!tagsContainItem(data.tags, TAGNAMES['5'])) {\n if (addDefaults) {\n data.tags.push({\n tagName: TAGNAMES['5'],\n data: DEFAULTFEATUREBITS\n })\n } else {\n throw new Error('Payment request requires feature bits with at least payment secret support flagged if payment secret is included')\n }\n } else {\n const fB = tagsItems(data.tags, TAGNAMES['5'])\n if (!fB.payment_secret || (!fB.payment_secret.supported && !fB.payment_secret.required)) {\n throw new Error('Payment request requires feature bits with at least payment secret support flagged if payment secret is included')\n }\n }\n }\n // If no description or purpose commit hash/message, fail\n if (!tagsContainItem(data.tags, TAGNAMES['13']) && !tagsContainItem(data.tags, TAGNAMES['23'])) {\n if (addDefaults) {\n data.tags.push({\n tagName: TAGNAMES['13'],\n data: DEFAULTDESCRIPTION\n })\n } else {\n throw new Error('Payment request requires description or purpose commit hash')\n }\n }\n\n // If a description exists, check to make sure the buffer isn't greater than\n // 639 bytes long, since 639 * 8 / 5 = 1023 words (5 bit) when padded\n if (tagsContainItem(data.tags, TAGNAMES['13']) &&\n Buffer.from(tagsItems(data.tags, TAGNAMES['13']), 'utf8').length > 639) {\n throw new Error('Description is too long: Max length 639 bytes')\n }\n\n // if there's no expire time, and it is not reconstructing (must have private key)\n // default to adding a 3600 second expire time (1 hour)\n if (!tagsContainItem(data.tags, TAGNAMES['6']) && !canReconstruct && addDefaults) {\n data.tags.push({\n tagName: TAGNAMES['6'],\n data: DEFAULTEXPIRETIME\n })\n }\n\n // if there's no minimum cltv time, and it is not reconstructing (must have private key)\n // default to adding a 9 block minimum cltv time (90 minutes for bitcoin)\n if (!tagsContainItem(data.tags, TAGNAMES['24']) && !canReconstruct && addDefaults) {\n data.tags.push({\n tagName: TAGNAMES['24'],\n data: DEFAULTCLTVEXPIRY\n })\n }\n\n let nodePublicKey, tagNodePublicKey\n // If there is a payee_node_key tag convert to buffer\n if (tagsContainItem(data.tags, TAGNAMES['19'])) tagNodePublicKey = hexToBuffer(tagsItems(data.tags, TAGNAMES['19']))\n // If there is payeeNodeKey attribute, convert to buffer\n if (data.payeeNodeKey) nodePublicKey = hexToBuffer(data.payeeNodeKey)\n if (nodePublicKey && tagNodePublicKey && !tagNodePublicKey.equals(nodePublicKey)) {\n throw new Error('payeeNodeKey and tag payee node key do not match')\n }\n // in case we have one or the other, make sure it's in nodePublicKey\n nodePublicKey = nodePublicKey || tagNodePublicKey\n if (nodePublicKey) data.payeeNodeKey = nodePublicKey.toString('hex')\n\n let code, addressHash, address\n // If there is a fallback address tag we must check it is valid\n if (tagsContainItem(data.tags, TAGNAMES['9'])) {\n const addrData = tagsItems(data.tags, TAGNAMES['9'])\n // Most people will just provide address so Hash and code will be undefined here\n address = addrData.address\n addressHash = addrData.addressHash\n code = addrData.code\n\n if (addressHash === undefined || code === undefined) {\n let res\n try {\n res = bitcoin.Address(coinTypeObj).decode(address)\n } catch (e) {\n throw new Error('Fallback address invalid format')\n }\n switch (res.type) {\n case 'pkh':\n addressHash = res.hash\n code = 17\n break\n case 'sh':\n addressHash = res.hash\n code = 18\n break\n case 'wsh':\n addressHash = res.hash\n code = 0\n break\n case 'wpkh':\n addressHash = res.hash\n code = 0\n break\n case 'tr':\n addressHash = res.pubkey\n code = 1\n break\n default:\n throw new Error('Fallback address format is unknown')\n }\n\n // FIXME: If addressHash or code is missing, add them to the original Object\n // after parsing the address value... this changes the actual attributes of the data object.\n // Not very clean.\n // Without this, a person can not specify a fallback address tag with only the address key.\n addrData.addressHash = Buffer.from(addressHash).toString('hex')\n addrData.code = code\n }\n }\n\n // If there is route info tag, check that each route has all 4 necessary info\n if (tagsContainItem(data.tags, TAGNAMES['3'])) {\n const routingInfo = tagsItems(data.tags, TAGNAMES['3'])\n routingInfo.forEach(route => {\n if (route.pubkey === undefined ||\n route.short_channel_id === undefined ||\n route.fee_base_msat === undefined ||\n route.fee_proportional_millionths === undefined ||\n route.cltv_expiry_delta === undefined) {\n throw new Error('Routing info is incomplete')\n }\n try {\n nobleSecp256k1.ProjectivePoint.fromHex(hexToBuffer(route.pubkey))\n } catch (e) {\n throw new Error('Routing info pubkey is not a valid pubkey')\n }\n const shortId = hexToBuffer(route.short_channel_id)\n if (!(shortId instanceof Buffer) || shortId.length !== 8) {\n throw new Error('Routing info short channel id must be 8 bytes')\n }\n if (typeof route.fee_base_msat !== 'number' ||\n Math.floor(route.fee_base_msat) !== route.fee_base_msat) {\n throw new Error('Routing info fee base msat is not an integer')\n }\n if (typeof route.fee_proportional_millionths !== 'number' ||\n Math.floor(route.fee_proportional_millionths) !== route.fee_proportional_millionths) {\n throw new Error('Routing info fee proportional millionths is not an integer')\n }\n if (typeof route.cltv_expiry_delta !== 'number' ||\n Math.floor(route.cltv_expiry_delta) !== route.cltv_expiry_delta) {\n throw new Error('Routing info cltv expiry delta is not an integer')\n }\n })\n }\n\n let prefix = 'ln'\n prefix += coinTypeObj.bech32\n\n let hrpString\n // calculate the smallest possible integer (removing zeroes) and add the best\n // divisor (m = milli, u = micro, n = nano, p = pico)\n if (data.millisatoshis && data.satoshis) {\n hrpString = millisatToHrp(BigInt(data.millisatoshis))\n const hrpStringSat = satToHrp(BigInt(data.satoshis))\n if (hrpStringSat !== hrpString) {\n throw new Error('satoshis and millisatoshis do not match')\n }\n } else if (data.millisatoshis) {\n hrpString = millisatToHrp(BigInt(data.millisatoshis))\n } else if (data.satoshis) {\n hrpString = satToHrp(BigInt(data.satoshis))\n } else {\n hrpString = ''\n }\n\n // bech32 human readable part is lnbc2500m (ln + coinbech32 + satoshis (optional))\n // lnbc or lntb would be valid as well. (no value specified)\n prefix += hrpString\n\n // timestamp converted to 5 bit number array (left padded with 0 bits, NOT right padded)\n const timestampWords = intBEToWords(data.timestamp)\n while (timestampWords.length < 7) {\n timestampWords.unshift(0)\n }\n\n const tags = data.tags\n let tagWords = []\n tags.forEach(tag => {\n const possibleTagNames = Object.keys(TAGENCODERS)\n if (canReconstruct) possibleTagNames.push(unknownTagName)\n // check if the tagName exists in the encoders object, if not throw Error.\n if (possibleTagNames.indexOf(tag.tagName) === -1) {\n throw new Error('Unknown tag key: ' + tag.tagName)\n }\n\n let words\n if (tag.tagName !== unknownTagName) {\n // each tag starts with 1 word code for the tag\n tagWords.push(TAGCODES[tag.tagName])\n\n const encoder = TAGENCODERS[tag.tagName]\n words = encoder(tag.data)\n } else {\n const result = unknownEncoder(tag.data)\n tagWords.push(result.tagCode)\n words = result.words\n }\n // after the tag code, 2 words are used to store the length (in 5 bit words) of the tag data\n // (also left padded, most integers are left padded while buffers are right padded)\n tagWords = tagWords.concat([0].concat(intBEToWords(words.length)).slice(-2))\n // then append the tag data words\n tagWords = tagWords.concat(words)\n })\n\n // the data part of the bech32 is TIMESTAMP || TAGS || SIGNATURE\n // currently dataWords = TIMESTAMP || TAGS\n let dataWords = timestampWords.concat(tagWords)\n\n // the preimage for the signing data is the buffer of the prefix concatenated\n // with the buffer conversion of the data words excluding the signature\n // (right padded with 0 bits)\n const toSign = Buffer.concat([Buffer.from(prefix, 'utf8'), Buffer.from(convert(dataWords, 5, 8))])\n // single SHA256 hash for the signature\n const payReqHash = sha256(toSign)\n\n // signature is 64 bytes (32 byte r value and 32 byte s value concatenated)\n // PLUS one extra byte appended to the right with the recoveryID in [0,1,2,3]\n // Then convert to 5 bit words with right padding 0 bits.\n let sigWords\n if (canReconstruct) {\n /* Since BOLT11 does not require a payee_node_key tag in the specs,\n most parsers will have to recover the pubkey from the signature\n To ensure the tag data has been provided in the right order etc.\n we should check that the data we got and the node key given match when\n reconstructing a payment request from given signature and recoveryID.\n However, if a privatekey is given, the caller is the privkey owner.\n Earlier we check if the private key matches the payee node key IF they\n gave one. */\n if (nodePublicKey) {\n const signature = nobleSecp256k1.Signature.fromCompact(Buffer.from(data.signature, 'hex')).addRecoveryBit(data.recoveryFlag)\n const recoveredPubkey = Buffer.from(signature.recoverPublicKey(payReqHash).toRawBytes(true))\n if (nodePublicKey && !nodePublicKey.equals(recoveredPubkey)) {\n throw new Error('Signature, message, and recoveryID did not produce the same pubkey as payeeNodeKey')\n }\n sigWords = hexToWord(data.signature + '0' + data.recoveryFlag)\n } else {\n throw new Error('Reconstruction with signature and recoveryID requires payeeNodeKey to verify correctness of input data.')\n }\n }\n\n if (sigWords) dataWords = dataWords.concat(sigWords)\n\n if (tagsContainItem(data.tags, TAGNAMES['6'])) {\n data.timeExpireDate = data.timestamp + tagsItems(data.tags, TAGNAMES['6'])\n data.timeExpireDateString = new Date(data.timeExpireDate * 1000).toISOString()\n }\n data.timestampString = new Date(data.timestamp * 1000).toISOString()\n data.complete = !!sigWords\n data.paymentRequest = data.complete ? bech32.encode(prefix, dataWords, Number.MAX_SAFE_INTEGER) : ''\n data.prefix = prefix\n data.wordsTemp = bech32.encode('temp', dataWords, Number.MAX_SAFE_INTEGER)\n\n // payment requests get pretty long. Nothing in the spec says anything about length.\n // Even though bech32 loses error correction power over 1023 characters.\n return orderKeys(data)\n}\n\n// decode will only have extra comments that aren't covered in encode comments.\n// also if anything is hard to read I'll comment.\nfunction decode (paymentRequest, network) {\n if (typeof paymentRequest !== 'string') throw new Error('Lightning Payment Request must be string')\n if (paymentRequest.slice(0, 2).toLowerCase() !== 'ln') throw new Error('Not a proper lightning payment request')\n const decoded = bech32.decode(paymentRequest, Number.MAX_SAFE_INTEGER)\n paymentRequest = paymentRequest.toLowerCase()\n const prefix = decoded.prefix\n let words = decoded.words\n\n // signature is always 104 words on the end\n // cutting off at the beginning helps since there's no way to tell\n // ahead of time how many tags there are.\n const sigWords = words.slice(-104)\n // grabbing a copy of the words for later, words will be sliced as we parse.\n const wordsNoSig = words.slice(0, -104)\n words = words.slice(0, -104)\n\n let sigBuffer = wordsToBuffer(sigWords, true)\n const recoveryFlag = sigBuffer.slice(-1)[0]\n sigBuffer = sigBuffer.slice(0, -1)\n\n if (!(recoveryFlag in [0, 1, 2, 3]) || sigBuffer.length !== 64) {\n throw new Error('Signature is missing or incorrect')\n }\n\n // Without reverse lookups, can't say that the multipier at the end must\n // have a number before it, so instead we parse, and if the second group\n // doesn't have anything, there's a good chance the last letter of the\n // coin type got captured by the third group, so just re-regex without\n // the number.\n let prefixMatches = prefix.match(/^ln(\\S+?)(\\d*)([a-zA-Z]?)$/)\n if (prefixMatches && !prefixMatches[2]) prefixMatches = prefix.match(/^ln(\\S+)$/)\n if (!prefixMatches) {\n throw new Error('Not a proper lightning payment request')\n }\n\n const bech32Prefix = prefixMatches[1]\n let coinNetwork\n if (!network) {\n switch (bech32Prefix) {\n case DEFAULTNETWORK.bech32:\n coinNetwork = DEFAULTNETWORK\n break\n case TESTNETWORK.bech32:\n coinNetwork = TESTNETWORK\n break\n case REGTESTNETWORK.bech32:\n coinNetwork = REGTESTNETWORK\n break\n case SIMNETWORK.bech32:\n coinNetwork = SIMNETWORK\n break\n }\n } else {\n if (\n network.bech32 === undefined ||\n network.pubKeyHash === undefined ||\n network.scriptHash === undefined ||\n !Array.isArray(network.validWitnessVersions) ||\n network.wif === undefined\n ) throw new Error('Invalid network')\n coinNetwork = network\n }\n if (!coinNetwork || coinNetwork.bech32 !== bech32Prefix) {\n throw new Error('Unknown coin bech32 prefix')\n }\n\n const value = prefixMatches[2]\n let satoshis, millisatoshis, removeSatoshis\n if (value) {\n const divisor = prefixMatches[3]\n try {\n satoshis = parseInt(hrpToSat(value + divisor, true))\n } catch (e) {\n satoshis = null\n removeSatoshis = true\n }\n millisatoshis = hrpToMillisat(value + divisor, true)\n } else {\n satoshis = null\n millisatoshis = null\n }\n\n // reminder: left padded 0 bits\n const timestamp = wordsToIntBE(words.slice(0, 7))\n const timestampString = new Date(timestamp * 1000).toISOString()\n words = words.slice(7) // trim off the left 7 words\n\n const tags = []\n let tagName, parser, tagLength, tagWords\n // we have no tag count to go on, so just keep hacking off words\n // until we have none.\n while (words.length > 0) {\n const tagCode = words[0].toString()\n tagName = TAGNAMES[tagCode] || unknownTagName\n parser = TAGPARSERS[tagCode] || getUnknownParser(tagCode)\n words = words.slice(1)\n\n tagLength = wordsToIntBE(words.slice(0, 2))\n words = words.slice(2)\n\n tagWords = words.slice(0, tagLength)\n words = words.slice(tagLength)\n\n // See: parsers for more comments\n tags.push({\n tagName,\n data: parser(tagWords, coinNetwork) // only fallback address needs coinNetwork\n })\n }\n\n let timeExpireDate, timeExpireDateString\n // be kind and provide an absolute expiration date.\n // good for logs\n if (tagsContainItem(tags, TAGNAMES['6'])) {\n timeExpireDate = timestamp + tagsItems(tags, TAGNAMES['6'])\n timeExpireDateString = new Date(timeExpireDate * 1000).toISOString()\n }\n\n const toSign = Buffer.concat([Buffer.from(prefix, 'utf8'), Buffer.from(convert(wordsNoSig, 5, 8))])\n const payReqHash = sha256(toSign)\n\n const signature = nobleSecp256k1.Signature.fromCompact(sigBuffer).addRecoveryBit(recoveryFlag)\n const sigPubkey = Buffer.from(signature.recoverPublicKey(payReqHash).toRawBytes(true))\n\n if (tagsContainItem(tags, TAGNAMES['19']) && tagsItems(tags, TAGNAMES['19']) !== sigPubkey.toString('hex')) {\n throw new Error('Lightning Payment Request signature pubkey does not match payee pubkey')\n }\n\n let finalResult = {\n paymentRequest,\n complete: true,\n prefix,\n wordsTemp: bech32.encode('temp', wordsNoSig.concat(sigWords), Number.MAX_SAFE_INTEGER),\n network: coinNetwork,\n satoshis,\n millisatoshis,\n timestamp,\n timestampString,\n payeeNodeKey: sigPubkey.toString('hex'),\n signature: sigBuffer.toString('hex'),\n recoveryFlag,\n tags\n }\n\n if (removeSatoshis) {\n delete finalResult.satoshis\n }\n\n if (timeExpireDate) {\n finalResult = Object.assign(finalResult, { timeExpireDate, timeExpireDateString })\n }\n\n return orderKeys(finalResult, true)\n}\n\nfunction getTagsObject (tags) {\n const result = {}\n tags.forEach(tag => {\n if (tag.tagName === unknownTagName) {\n if (!result.unknownTags) {\n result.unknownTags = []\n }\n result.unknownTags.push(tag.data)\n } else {\n if (tag.tagName === 'blinded_payinfo') {\n if (result[tag.tagName] == null) result[tag.tagName] = []\n result[tag.tagName].push(tag.data)\n } else {\n result[tag.tagName] = tag.data\n }\n }\n })\n\n return result\n}\n\nmodule.exports = {\n encode,\n decode,\n sign,\n satToHrp,\n millisatToHrp,\n hrpToSat,\n hrpToMillisat\n}\n","import { ACCOUNT_SIZE } from '../state/account.js';\nimport type { Mint } from '../state/mint.js';\nimport { MINT_SIZE } from '../state/mint.js';\nimport { MULTISIG_SIZE } from '../state/multisig.js';\nimport { ACCOUNT_TYPE_SIZE } from './accountType.js';\nimport { CPI_GUARD_SIZE } from './cpiGuard/index.js';\nimport { DEFAULT_ACCOUNT_STATE_SIZE } from './defaultAccountState/index.js';\nimport { IMMUTABLE_OWNER_SIZE } from './immutableOwner.js';\nimport { INTEREST_BEARING_MINT_CONFIG_STATE_SIZE } from './interestBearingMint/state.js';\nimport { MEMO_TRANSFER_SIZE } from './memoTransfer/index.js';\nimport { METADATA_POINTER_SIZE } from './metadataPointer/state.js';\nimport { MINT_CLOSE_AUTHORITY_SIZE } from './mintCloseAuthority.js';\nimport { NON_TRANSFERABLE_SIZE, NON_TRANSFERABLE_ACCOUNT_SIZE } from './nonTransferable.js';\nimport { PERMANENT_DELEGATE_SIZE } from './permanentDelegate.js';\nimport { TRANSFER_FEE_AMOUNT_SIZE, TRANSFER_FEE_CONFIG_SIZE } from './transferFee/index.js';\nimport { TRANSFER_HOOK_ACCOUNT_SIZE, TRANSFER_HOOK_SIZE } from './transferHook/index.js';\n\n// Sequence from https://github.com/solana-labs/solana-program-library/blob/master/token/program-2022/src/extension/mod.rs#L903\nexport enum ExtensionType {\n Uninitialized,\n TransferFeeConfig,\n TransferFeeAmount,\n MintCloseAuthority,\n ConfidentialTransferMint,\n ConfidentialTransferAccount,\n DefaultAccountState,\n ImmutableOwner,\n MemoTransfer,\n NonTransferable,\n InterestBearingConfig,\n CpiGuard,\n PermanentDelegate,\n NonTransferableAccount,\n TransferHook,\n TransferHookAccount,\n // ConfidentialTransferFee, // Not implemented yet\n // ConfidentialTransferFeeAmount, // Not implemented yet\n MetadataPointer = 18, // Remove number once above extensions implemented\n}\n\nexport const TYPE_SIZE = 2;\nexport const LENGTH_SIZE = 2;\n\n// NOTE: All of these should eventually use their type's Span instead of these\n// constants. This is provided for at least creation to work.\nexport function getTypeLen(e: ExtensionType): number {\n switch (e) {\n case ExtensionType.Uninitialized:\n return 0;\n case ExtensionType.TransferFeeConfig:\n return TRANSFER_FEE_CONFIG_SIZE;\n case ExtensionType.TransferFeeAmount:\n return TRANSFER_FEE_AMOUNT_SIZE;\n case ExtensionType.MintCloseAuthority:\n return MINT_CLOSE_AUTHORITY_SIZE;\n case ExtensionType.ConfidentialTransferMint:\n return 97;\n case ExtensionType.ConfidentialTransferAccount:\n return 286;\n case ExtensionType.CpiGuard:\n return CPI_GUARD_SIZE;\n case ExtensionType.DefaultAccountState:\n return DEFAULT_ACCOUNT_STATE_SIZE;\n case ExtensionType.ImmutableOwner:\n return IMMUTABLE_OWNER_SIZE;\n case ExtensionType.MemoTransfer:\n return MEMO_TRANSFER_SIZE;\n case ExtensionType.MetadataPointer:\n return METADATA_POINTER_SIZE;\n case ExtensionType.NonTransferable:\n return NON_TRANSFERABLE_SIZE;\n case ExtensionType.InterestBearingConfig:\n return INTEREST_BEARING_MINT_CONFIG_STATE_SIZE;\n case ExtensionType.PermanentDelegate:\n return PERMANENT_DELEGATE_SIZE;\n case ExtensionType.NonTransferableAccount:\n return NON_TRANSFERABLE_ACCOUNT_SIZE;\n case ExtensionType.TransferHook:\n return TRANSFER_HOOK_SIZE;\n case ExtensionType.TransferHookAccount:\n return TRANSFER_HOOK_ACCOUNT_SIZE;\n default:\n throw Error(`Unknown extension type: ${e}`);\n }\n}\n\nexport function isMintExtension(e: ExtensionType): boolean {\n switch (e) {\n case ExtensionType.TransferFeeConfig:\n case ExtensionType.MintCloseAuthority:\n case ExtensionType.ConfidentialTransferMint:\n case ExtensionType.DefaultAccountState:\n case ExtensionType.NonTransferable:\n case ExtensionType.InterestBearingConfig:\n case ExtensionType.PermanentDelegate:\n case ExtensionType.TransferHook:\n case ExtensionType.MetadataPointer:\n return true;\n case ExtensionType.Uninitialized:\n case ExtensionType.TransferFeeAmount:\n case ExtensionType.ConfidentialTransferAccount:\n case ExtensionType.ImmutableOwner:\n case ExtensionType.MemoTransfer:\n case ExtensionType.CpiGuard:\n case ExtensionType.NonTransferableAccount:\n case ExtensionType.TransferHookAccount:\n return false;\n default:\n throw Error(`Unknown extension type: ${e}`);\n }\n}\n\nexport function isAccountExtension(e: ExtensionType): boolean {\n switch (e) {\n case ExtensionType.TransferFeeAmount:\n case ExtensionType.ConfidentialTransferAccount:\n case ExtensionType.ImmutableOwner:\n case ExtensionType.MemoTransfer:\n case ExtensionType.CpiGuard:\n case ExtensionType.NonTransferableAccount:\n case ExtensionType.TransferHookAccount:\n return true;\n case ExtensionType.Uninitialized:\n case ExtensionType.TransferFeeConfig:\n case ExtensionType.MintCloseAuthority:\n case ExtensionType.ConfidentialTransferMint:\n case ExtensionType.DefaultAccountState:\n case ExtensionType.NonTransferable:\n case ExtensionType.InterestBearingConfig:\n case ExtensionType.PermanentDelegate:\n case ExtensionType.TransferHook:\n case ExtensionType.MetadataPointer:\n return false;\n default:\n throw Error(`Unknown extension type: ${e}`);\n }\n}\n\nexport function getAccountTypeOfMintType(e: ExtensionType): ExtensionType {\n switch (e) {\n case ExtensionType.TransferFeeConfig:\n return ExtensionType.TransferFeeAmount;\n case ExtensionType.ConfidentialTransferMint:\n return ExtensionType.ConfidentialTransferAccount;\n case ExtensionType.NonTransferable:\n return ExtensionType.NonTransferableAccount;\n case ExtensionType.TransferHook:\n return ExtensionType.TransferHookAccount;\n case ExtensionType.TransferFeeAmount:\n case ExtensionType.ConfidentialTransferAccount:\n case ExtensionType.CpiGuard:\n case ExtensionType.DefaultAccountState:\n case ExtensionType.ImmutableOwner:\n case ExtensionType.MemoTransfer:\n case ExtensionType.MintCloseAuthority:\n case ExtensionType.MetadataPointer:\n case ExtensionType.Uninitialized:\n case ExtensionType.InterestBearingConfig:\n case ExtensionType.PermanentDelegate:\n case ExtensionType.NonTransferableAccount:\n case ExtensionType.TransferHookAccount:\n return ExtensionType.Uninitialized;\n }\n}\n\nfunction getLen(extensionTypes: ExtensionType[], baseSize: number): number {\n if (extensionTypes.length === 0) {\n return baseSize;\n } else {\n const accountLength =\n ACCOUNT_SIZE +\n ACCOUNT_TYPE_SIZE +\n extensionTypes\n .filter((element, i) => i === extensionTypes.indexOf(element))\n .map((element) => getTypeLen(element) + TYPE_SIZE + LENGTH_SIZE)\n .reduce((a, b) => a + b);\n if (accountLength === MULTISIG_SIZE) {\n return accountLength + TYPE_SIZE;\n } else {\n return accountLength;\n }\n }\n}\n\nexport function getMintLen(extensionTypes: ExtensionType[]): number {\n return getLen(extensionTypes, MINT_SIZE);\n}\n\nexport function getAccountLen(extensionTypes: ExtensionType[]): number {\n return getLen(extensionTypes, ACCOUNT_SIZE);\n}\n\nexport function getExtensionData(extension: ExtensionType, tlvData: Buffer): Buffer | null {\n let extensionTypeIndex = 0;\n while (extensionTypeIndex + TYPE_SIZE + LENGTH_SIZE <= tlvData.length) {\n const entryType = tlvData.readUInt16LE(extensionTypeIndex);\n const entryLength = tlvData.readUInt16LE(extensionTypeIndex + TYPE_SIZE);\n const typeIndex = extensionTypeIndex + TYPE_SIZE + LENGTH_SIZE;\n if (entryType == extension) {\n return tlvData.slice(typeIndex, typeIndex + entryLength);\n }\n extensionTypeIndex = typeIndex + entryLength;\n }\n return null;\n}\n\nexport function getExtensionTypes(tlvData: Buffer): ExtensionType[] {\n const extensionTypes = [];\n let extensionTypeIndex = 0;\n while (extensionTypeIndex < tlvData.length) {\n const entryType = tlvData.readUInt16LE(extensionTypeIndex);\n extensionTypes.push(entryType);\n const entryLength = tlvData.readUInt16LE(extensionTypeIndex + TYPE_SIZE);\n extensionTypeIndex += TYPE_SIZE + LENGTH_SIZE + entryLength;\n }\n return extensionTypes;\n}\n\nexport function getAccountLenForMint(mint: Mint): number {\n const extensionTypes = getExtensionTypes(mint.tlvData);\n const accountExtensions = extensionTypes.map(getAccountTypeOfMintType);\n return getAccountLen(accountExtensions);\n}\n","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\n// copied from utils\nfunction isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!isBytes(b)) throw new Error('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","const Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n if (typeof (data) === 'string') {\n this.data = new TextEncoder().encode(data)\n } else {\n this.data = new Uint8Array(data)\n }\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar inherits = require('inherits')\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nvar useUint8Array = typeof Uint8Array !== 'undefined'\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n ArrayBuffer.isView &&\n (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT)\n\nfunction toBuffer (data, encoding) {\n // No need to do anything for exact instance\n // This is only valid when safe-buffer.Buffer === buffer.Buffer, i.e. when Buffer.from/Buffer.alloc existed\n if (data instanceof Buffer) return data\n\n // Convert strings to Buffer\n if (typeof data === 'string') return Buffer.from(data, encoding)\n\n /*\n * Wrap any TypedArray instances and DataViews\n * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n */\n if (useArrayBuffer && ArrayBuffer.isView(data)) {\n if (data.byteLength === 0) return Buffer.alloc(0) // Bug in Node.js <6.3.1, which treats this as out-of-bounds\n var res = Buffer.from(data.buffer, data.byteOffset, data.byteLength)\n // Recheck result size, as offset/length doesn't work on Node.js <5.10\n // We just go to Uint8Array case if this fails\n if (res.byteLength === data.byteLength) return res\n }\n\n /*\n * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n * Doesn't make sense with other TypedArray instances\n */\n if (useUint8Array && data instanceof Uint8Array) return Buffer.from(data)\n\n /*\n * Old Buffer polyfill on an engine that doesn't have TypedArray support\n * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n * Convert to our current Buffer implementation\n */\n if (\n Buffer.isBuffer(data) &&\n data.constructor &&\n typeof data.constructor.isBuffer === 'function' &&\n data.constructor.isBuffer(data)\n ) {\n return Buffer.from(data)\n }\n\n throw new TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView.')\n}\n\nHashBase.prototype.update = function (data, encoding) {\n if (this._finalized) throw new Error('Digest already called')\n\n data = toBuffer(data, encoding) // asserts correct input type\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetSwapInit = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst StarknetAction_1 = require(\"../../base/StarknetAction\");\r\nconst StarknetSwapModule_1 = require(\"../StarknetSwapModule\");\r\nconst StarknetFees_1 = require(\"../../base/modules/StarknetFees\");\r\nconst Initialize = [\r\n { name: 'Swap hash', type: 'felt' },\r\n { name: 'Timeout', type: 'timestamp' }\r\n];\r\nclass StarknetSwapInit extends StarknetSwapModule_1.StarknetSwapModule {\r\n /**\r\n * bare Init action based on the data passed in swapData\r\n *\r\n * @param swapData\r\n * @param timeout\r\n * @param signature\r\n * @private\r\n */\r\n Init(swapData, timeout, signature) {\r\n return new StarknetAction_1.StarknetAction(swapData.payIn ? swapData.offerer : swapData.claimer, this.root, this.contract.populateTransaction.initialize(swapData.toEscrowStruct(), signature, timeout, swapData.extraData == null || swapData.extraData === \"\" ? [] : (0, Utils_1.bufferToBytes31Span)(buffer_1.Buffer.from(swapData.extraData, \"hex\")).map(Utils_1.toHex)), swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN : StarknetSwapInit.GasCosts.INIT);\r\n }\r\n /**\r\n * Returns auth prefix to be used with a specific swap, payIn=true & payIn=false use different prefixes (these\r\n * actually have no meaning for the smart contract/solana program in the Solana case)\r\n *\r\n * @param swapData\r\n * @private\r\n */\r\n getAuthPrefix(swapData) {\r\n return swapData.isPayIn() ? \"claim_initialize\" : \"initialize\";\r\n }\r\n async preFetchForInitSignatureVerification() {\r\n return {\r\n pendingBlockTime: await this.root.Blocks.getBlockTime(\"pending\")\r\n };\r\n }\r\n /**\r\n * Signs swap initialization authorization, using data from preFetchedBlockData if provided & still valid (subject\r\n * to SIGNATURE_PREFETCH_DATA_VALIDITY)\r\n *\r\n * @param signer\r\n * @param swapData\r\n * @param authorizationTimeout\r\n * @public\r\n */\r\n async signSwapInitialization(signer, swapData, authorizationTimeout) {\r\n const authTimeout = Math.floor(Date.now() / 1000) + authorizationTimeout;\r\n const signature = await this.root.Signatures.signTypedMessage(signer, Initialize, \"Initialize\", {\r\n \"Swap hash\": \"0x\" + swapData.getEscrowHash(),\r\n \"Timeout\": (0, Utils_1.toHex)(authTimeout)\r\n });\r\n return {\r\n prefix: this.getAuthPrefix(swapData),\r\n timeout: authTimeout.toString(10),\r\n signature\r\n };\r\n }\r\n /**\r\n * Checks whether the provided signature data is valid, using preFetchedData if provided and still valid\r\n *\r\n * @param swapData\r\n * @param timeout\r\n * @param prefix\r\n * @param signature\r\n * @param preFetchData\r\n * @public\r\n */\r\n async isSignatureValid(swapData, timeout, prefix, signature, preFetchData) {\r\n const sender = swapData.isPayIn() ? swapData.offerer : swapData.claimer;\r\n const signer = swapData.isPayIn() ? swapData.claimer : swapData.offerer;\r\n if (!swapData.isPayIn() && await this.root.isExpired(sender.toString(), swapData)) {\r\n throw new base_1.SignatureVerificationError(\"Swap will expire too soon!\");\r\n }\r\n if (prefix !== this.getAuthPrefix(swapData))\r\n throw new base_1.SignatureVerificationError(\"Invalid prefix\");\r\n const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n const timeoutBN = BigInt(timeout);\r\n const isExpired = (timeoutBN - currentTimestamp) < BigInt(this.root.authGracePeriod);\r\n if (isExpired)\r\n throw new base_1.SignatureVerificationError(\"Authorization expired!\");\r\n if (await this.isSignatureExpired(timeout, preFetchData))\r\n throw new base_1.SignatureVerificationError(\"Authorization expired!\");\r\n const valid = await this.root.Signatures.isValidSignature(signature, signer, Initialize, \"Initialize\", {\r\n \"Swap hash\": \"0x\" + swapData.getEscrowHash(),\r\n \"Timeout\": (0, Utils_1.toHex)(timeoutBN)\r\n });\r\n if (!valid)\r\n throw new base_1.SignatureVerificationError(\"Invalid signature!\");\r\n return null;\r\n }\r\n /**\r\n * Gets expiry of the provided signature data, this is a minimum of slot expiry & swap signature expiry\r\n *\r\n * @param timeout\r\n * @public\r\n */\r\n async getSignatureExpiry(timeout) {\r\n const now = Date.now();\r\n const timeoutExpiryTime = (parseInt(timeout) - this.root.authGracePeriod) * 1000;\r\n if (timeoutExpiryTime < now)\r\n return 0;\r\n return timeoutExpiryTime;\r\n }\r\n /**\r\n * Checks whether signature is expired for good, compares the timestamp to the current \"pending\" block timestamp\r\n *\r\n * @param timeout\r\n * @param preFetchData\r\n * @public\r\n */\r\n async isSignatureExpired(timeout, preFetchData) {\r\n if (preFetchData == null || preFetchData.pendingBlockTime == null) {\r\n preFetchData = await this.preFetchForInitSignatureVerification();\r\n }\r\n return preFetchData.pendingBlockTime > parseInt(timeout);\r\n }\r\n /**\r\n * Creates init transaction with a valid signature from an LP\r\n *\r\n * @param swapData swap to initialize\r\n * @param timeout init signature timeout\r\n * @param prefix init signature prefix\r\n * @param signature init signature\r\n * @param skipChecks whether to skip signature validity checks\r\n * @param feeRate fee rate to use for the transaction\r\n */\r\n async txsInit(swapData, timeout, prefix, signature, skipChecks, feeRate) {\r\n const sender = swapData.isPayIn() ? swapData.offerer : swapData.claimer;\r\n if (!skipChecks) {\r\n const [_, payStatus] = await Promise.all([\r\n (0, Utils_1.tryWithRetries)(() => this.isSignatureValid(swapData, timeout, prefix, signature), this.retryPolicy, (e) => e instanceof base_1.SignatureVerificationError),\r\n (0, Utils_1.tryWithRetries)(() => this.root.getCommitStatus(sender, swapData), this.retryPolicy)\r\n ]);\r\n if (payStatus !== base_1.SwapCommitStatus.NOT_COMMITED)\r\n throw new base_1.SwapDataVerificationError(\"Invoice already being paid for or paid\");\r\n }\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n const initAction = this.Init(swapData, BigInt(timeout), JSON.parse(signature));\r\n if (swapData.payIn)\r\n initAction.addAction(this.root.Tokens.Approve(sender, this.contract.address, swapData.token, swapData.amount), 0); //Add erc20 approve\r\n if (swapData.getTotalDeposit() !== 0n)\r\n initAction.addAction(this.root.Tokens.Approve(sender, this.contract.address, swapData.feeToken, swapData.getTotalDeposit()), 0); //Add deposit erc20 approve\r\n this.logger.debug(\"txsInitPayIn(): create swap init TX, swap: \" + swapData.getClaimHash() +\r\n \" feerate: \" + feeRate);\r\n return [await initAction.tx(feeRate)];\r\n }\r\n /**\r\n * Get the estimated solana fee of the init transaction, this includes the required deposit for creating swap PDA\r\n * and also deposit for ATAs\r\n */\r\n async getInitFee(swapData, feeRate) {\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n return StarknetFees_1.StarknetFees.getGasFee(swapData.payIn ? StarknetSwapInit.GasCosts.INIT_PAY_IN.l1 : StarknetSwapInit.GasCosts.INIT.l1, feeRate);\r\n }\r\n}\r\nexports.StarknetSwapInit = StarknetSwapInit;\r\nStarknetSwapInit.GasCosts = {\r\n INIT: { l1: 500, l2: 0 },\r\n INIT_PAY_IN: { l1: 1000, l2: 0 },\r\n};\r\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { TokenUnsupportedInstructionError } from '../../errors.js';\nimport { addSigners } from '../../instructions/internal.js';\nimport { TokenInstruction } from '../../instructions/types.js';\n\nexport enum CpiGuardInstruction {\n Enable = 0,\n Disable = 1,\n}\n\n/** TODO: docs */\nexport interface CpiGuardInstructionData {\n instruction: TokenInstruction.CpiGuardExtension;\n cpiGuardInstruction: CpiGuardInstruction;\n}\n\n/** TODO: docs */\nexport const cpiGuardInstructionData = struct([u8('instruction'), u8('cpiGuardInstruction')]);\n\n/**\n * Construct an EnableCpiGuard instruction\n *\n * @param account Token account to update\n * @param authority The account's owner/delegate\n * @param signers The signer account(s)\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createEnableCpiGuardInstruction(\n account: PublicKey,\n authority: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n return createCpiGuardInstruction(CpiGuardInstruction.Enable, account, authority, multiSigners, programId);\n}\n\n/**\n * Construct a DisableCpiGuard instruction\n *\n * @param account Token account to update\n * @param authority The account's owner/delegate\n * @param signers The signer account(s)\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createDisableCpiGuardInstruction(\n account: PublicKey,\n authority: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n return createCpiGuardInstruction(CpiGuardInstruction.Disable, account, authority, multiSigners, programId);\n}\n\nfunction createCpiGuardInstruction(\n cpiGuardInstruction: CpiGuardInstruction,\n account: PublicKey,\n authority: PublicKey,\n multiSigners: (Signer | PublicKey)[],\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], authority, multiSigners);\n\n const data = Buffer.alloc(cpiGuardInstructionData.span);\n cpiGuardInstructionData.encode(\n {\n instruction: TokenInstruction.CpiGuardExtension,\n cpiGuardInstruction,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_hourglass_disabled_outline = void 0;\nvar ic_hourglass_disabled_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": []\n }]\n }]\n }, {\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"polygon\",\n \"attribs\": {\n \"points\": \"8,4 16,4 16,7.5 13.16,10.34 14.41,11.59 18,8.01 17.99,8 18,8 18,2 6,2 6,3.17 8,5.17\"\n },\n \"children\": [{\n \"name\": \"polygon\",\n \"attribs\": {\n \"points\": \"8,4 16,4 16,7.5 13.16,10.34 14.41,11.59 18,8.01 17.99,8 18,8 18,2 6,2 6,3.17 8,5.17\"\n },\n \"children\": []\n }]\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M2.1,2.1L0.69,3.51l8.9,8.9L6,16l0.01,0.01H6V22h12v-1.17l2.49,2.49l1.41-1.41L2.1,2.1z M16,20H8v-3.5l2.84-2.84L16,18.83 V20z\"\n },\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M2.1,2.1L0.69,3.51l8.9,8.9L6,16l0.01,0.01H6V22h12v-1.17l2.49,2.49l1.41-1.41L2.1,2.1z M16,20H8v-3.5l2.84-2.84L16,18.83 V20z\"\n },\n \"children\": []\n }]\n }]\n }]\n }]\n }]\n};\nexports.ic_hourglass_disabled_outline = ic_hourglass_disabled_outline;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FromBTCSwap = exports.isFromBTCSwapInit = exports.FromBTCSwapState = void 0;\r\nconst IFromBTCSwap_1 = require(\"../IFromBTCSwap\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst ISwap_1 = require(\"../../ISwap\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst Tokens_1 = require(\"../../Tokens\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nvar FromBTCSwapState;\r\n(function (FromBTCSwapState) {\r\n FromBTCSwapState[FromBTCSwapState[\"FAILED\"] = -4] = \"FAILED\";\r\n FromBTCSwapState[FromBTCSwapState[\"EXPIRED\"] = -3] = \"EXPIRED\";\r\n FromBTCSwapState[FromBTCSwapState[\"QUOTE_EXPIRED\"] = -2] = \"QUOTE_EXPIRED\";\r\n FromBTCSwapState[FromBTCSwapState[\"QUOTE_SOFT_EXPIRED\"] = -1] = \"QUOTE_SOFT_EXPIRED\";\r\n FromBTCSwapState[FromBTCSwapState[\"PR_CREATED\"] = 0] = \"PR_CREATED\";\r\n FromBTCSwapState[FromBTCSwapState[\"CLAIM_COMMITED\"] = 1] = \"CLAIM_COMMITED\";\r\n FromBTCSwapState[FromBTCSwapState[\"BTC_TX_CONFIRMED\"] = 2] = \"BTC_TX_CONFIRMED\";\r\n FromBTCSwapState[FromBTCSwapState[\"CLAIM_CLAIMED\"] = 3] = \"CLAIM_CLAIMED\";\r\n})(FromBTCSwapState = exports.FromBTCSwapState || (exports.FromBTCSwapState = {}));\r\nfunction isFromBTCSwapInit(obj) {\r\n return typeof (obj.address) === \"string\" &&\r\n typeof (obj.amount) === \"bigint\" &&\r\n (0, ISwap_1.isISwapInit)(obj);\r\n}\r\nexports.isFromBTCSwapInit = isFromBTCSwapInit;\r\nclass FromBTCSwap extends IFromBTCSwap_1.IFromBTCSwap {\r\n constructor(wrapper, initOrObject) {\r\n if (isFromBTCSwapInit(initOrObject))\r\n initOrObject.url += \"/frombtc\";\r\n super(wrapper, initOrObject);\r\n this.inputToken = Tokens_1.BitcoinTokens.BTC;\r\n this.TYPE = SwapType_1.SwapType.FROM_BTC;\r\n if (isFromBTCSwapInit(initOrObject)) {\r\n this.state = FromBTCSwapState.PR_CREATED;\r\n }\r\n else {\r\n this.address = initOrObject.address;\r\n this.amount = BigInt(initOrObject.amount);\r\n this.txId = initOrObject.txId;\r\n this.vout = initOrObject.vout;\r\n this.requiredConfirmations = initOrObject.requiredConfirmations ?? this.data.getConfirmationsHint();\r\n }\r\n this.tryCalculateSwapFee();\r\n this.logger = (0, Utils_1.getLogger)(\"FromBTC(\" + this.getIdentifierHashString() + \"): \");\r\n }\r\n upgradeVersion() {\r\n if (this.version == null) {\r\n switch (this.state) {\r\n case -2:\r\n this.state = FromBTCSwapState.FAILED;\r\n break;\r\n case -1:\r\n this.state = FromBTCSwapState.QUOTE_EXPIRED;\r\n break;\r\n case 0:\r\n this.state = FromBTCSwapState.PR_CREATED;\r\n break;\r\n case 1:\r\n this.state = FromBTCSwapState.CLAIM_COMMITED;\r\n break;\r\n case 2:\r\n this.state = FromBTCSwapState.BTC_TX_CONFIRMED;\r\n break;\r\n case 3:\r\n this.state = FromBTCSwapState.CLAIM_CLAIMED;\r\n break;\r\n }\r\n this.version = 1;\r\n }\r\n }\r\n //////////////////////////////\r\n //// Getters & utils\r\n getInputTxId() {\r\n return this.txId;\r\n }\r\n getAddress() {\r\n return this.address;\r\n }\r\n /**\r\n * Returns bitcoin address where the on-chain BTC should be sent to\r\n */\r\n getBitcoinAddress() {\r\n if (this.state === FromBTCSwapState.PR_CREATED)\r\n return null;\r\n return this.address;\r\n }\r\n getQrData() {\r\n if (this.state === FromBTCSwapState.PR_CREATED)\r\n return null;\r\n return \"bitcoin:\" + this.address + \"?amount=\" + encodeURIComponent((Number(this.amount) / 100000000).toString(10));\r\n }\r\n /**\r\n * Returns timeout time (in UNIX milliseconds) when the on-chain address will expire and no funds should be sent\r\n * to that address anymore\r\n */\r\n getTimeoutTime() {\r\n return Number(this.wrapper.getOnchainSendTimeout(this.data, this.requiredConfirmations)) * 1000;\r\n }\r\n isFinished() {\r\n return this.state === FromBTCSwapState.CLAIM_CLAIMED || this.state === FromBTCSwapState.QUOTE_EXPIRED || this.state === FromBTCSwapState.FAILED;\r\n }\r\n isClaimable() {\r\n return this.state === FromBTCSwapState.BTC_TX_CONFIRMED;\r\n }\r\n isActionable() {\r\n return this.isClaimable() || (this.state === FromBTCSwapState.CLAIM_COMMITED && this.getTimeoutTime() > Date.now());\r\n }\r\n isSuccessful() {\r\n return this.state === FromBTCSwapState.CLAIM_CLAIMED;\r\n }\r\n isFailed() {\r\n return this.state === FromBTCSwapState.FAILED || (this.state === FromBTCSwapState.EXPIRED && this.txId != null);\r\n }\r\n isQuoteExpired() {\r\n return this.state === FromBTCSwapState.QUOTE_EXPIRED;\r\n }\r\n isQuoteSoftExpired() {\r\n return this.state === FromBTCSwapState.QUOTE_EXPIRED || this.state === FromBTCSwapState.QUOTE_SOFT_EXPIRED;\r\n }\r\n canCommit() {\r\n if (this.state !== FromBTCSwapState.PR_CREATED)\r\n return false;\r\n const expiry = this.wrapper.getOnchainSendTimeout(this.data, this.requiredConfirmations);\r\n const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n return (expiry - currentTimestamp) >= this.wrapper.options.minSendWindow;\r\n }\r\n canClaim() {\r\n return this.state === FromBTCSwapState.BTC_TX_CONFIRMED;\r\n }\r\n //////////////////////////////\r\n //// Amounts & fees\r\n getInput() {\r\n return (0, Tokens_1.toTokenAmount)(this.amount, this.inputToken, this.wrapper.prices);\r\n }\r\n /**\r\n * Returns claimer bounty, acting as a reward for watchtowers to claim the swap automatically\r\n */\r\n getClaimerBounty() {\r\n return (0, Tokens_1.toTokenAmount)(this.data.getClaimerBounty(), this.wrapper.tokens[this.data.getDepositToken()], this.wrapper.prices);\r\n }\r\n //////////////////////////////\r\n //// Bitcoin tx\r\n /**\r\n * Waits till the bitcoin transaction confirms and swap becomes claimable\r\n *\r\n * @param abortSignal Abort signal\r\n * @param checkIntervalSeconds How often to check the bitcoin transaction\r\n * @param updateCallback Callback called when txId is found, and also called with subsequent confirmations\r\n * @throws {Error} if in invalid state (must be CLAIM_COMMITED)\r\n */\r\n async waitForBitcoinTransaction(abortSignal, checkIntervalSeconds, updateCallback) {\r\n if (this.state !== FromBTCSwapState.CLAIM_COMMITED && this.state !== FromBTCSwapState.EXPIRED)\r\n throw new Error(\"Must be in COMMITED state!\");\r\n const result = await this.wrapper.btcRpc.waitForAddressTxo(this.address, buffer_1.Buffer.from(this.data.getTxoHashHint(), \"hex\"), this.requiredConfirmations, (confirmations, txId, vout, txEtaMs) => {\r\n if (updateCallback != null)\r\n updateCallback(txId, confirmations, this.requiredConfirmations, txEtaMs);\r\n }, abortSignal, checkIntervalSeconds);\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n this.txId = result.tx.txid;\r\n this.vout = result.vout;\r\n if (this.state !== FromBTCSwapState.CLAIM_CLAIMED &&\r\n this.state !== FromBTCSwapState.FAILED) {\r\n this.state = FromBTCSwapState.BTC_TX_CONFIRMED;\r\n }\r\n await this._saveAndEmit();\r\n }\r\n /**\r\n * Checks whether a bitcoin payment was already made, returns the payment or null when no payment has been made.\r\n */\r\n async getBitcoinPayment() {\r\n const result = await this.wrapper.btcRpc.checkAddressTxos(this.address, buffer_1.Buffer.from(this.data.getTxoHashHint(), \"hex\"));\r\n if (result == null)\r\n return null;\r\n return {\r\n txId: result.tx.txid,\r\n vout: result.vout,\r\n confirmations: result.tx.confirmations,\r\n targetConfirmations: this.requiredConfirmations\r\n };\r\n }\r\n //////////////////////////////\r\n //// Commit\r\n /**\r\n * Commits the swap on-chain, locking the tokens from the intermediary in a PTLC\r\n *\r\n * @param signer Signer to sign the transactions with, must be the same as used in the initialization\r\n * @param abortSignal Abort signal to stop waiting for the transaction confirmation and abort\r\n * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet\r\n * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)\r\n * @throws {Error} If invalid signer is provided that doesn't match the swap data\r\n */\r\n async commit(signer, abortSignal, skipChecks) {\r\n this.checkSigner(signer);\r\n const result = await this.wrapper.contract.sendAndConfirm(signer, await this.txsCommit(skipChecks), true, abortSignal);\r\n this.commitTxId = result[0];\r\n if (this.state === FromBTCSwapState.PR_CREATED || this.state === FromBTCSwapState.QUOTE_SOFT_EXPIRED) {\r\n await this._saveAndEmit(FromBTCSwapState.CLAIM_COMMITED);\r\n }\r\n return result[0];\r\n }\r\n async waitTillCommited(abortSignal) {\r\n if (this.state === FromBTCSwapState.CLAIM_COMMITED || this.state === FromBTCSwapState.CLAIM_CLAIMED)\r\n return Promise.resolve();\r\n if (this.state !== FromBTCSwapState.PR_CREATED && this.state !== FromBTCSwapState.QUOTE_SOFT_EXPIRED)\r\n throw new Error(\"Invalid state\");\r\n const abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n const result = await Promise.race([\r\n this.watchdogWaitTillCommited(abortController.signal),\r\n this.waitTillState(FromBTCSwapState.CLAIM_COMMITED, \"gte\", abortController.signal).then(() => 0)\r\n ]);\r\n abortController.abort();\r\n if (result === 0)\r\n this.logger.debug(\"waitTillCommited(): Resolved from state changed\");\r\n if (result === true)\r\n this.logger.debug(\"waitTillCommited(): Resolved from watchdog - commited\");\r\n if (result === false) {\r\n this.logger.debug(\"waitTillCommited(): Resolved from watchdog - signature expired\");\r\n if (this.state === FromBTCSwapState.PR_CREATED || this.state === FromBTCSwapState.QUOTE_SOFT_EXPIRED) {\r\n await this._saveAndEmit(FromBTCSwapState.QUOTE_EXPIRED);\r\n }\r\n return;\r\n }\r\n if (this.state === FromBTCSwapState.PR_CREATED || this.state === FromBTCSwapState.QUOTE_SOFT_EXPIRED) {\r\n await this._saveAndEmit(FromBTCSwapState.CLAIM_COMMITED);\r\n }\r\n }\r\n //////////////////////////////\r\n //// Claim\r\n /**\r\n * Returns transactions required to claim the swap on-chain (and possibly also sync the bitcoin light client)\r\n * after a bitcoin transaction was sent and confirmed\r\n *\r\n * @throws {Error} If the swap is in invalid state (must be BTC_TX_CONFIRMED)\r\n */\r\n async txsClaim(signer) {\r\n if (!this.canClaim())\r\n throw new Error(\"Must be in BTC_TX_CONFIRMED state!\");\r\n const tx = await this.wrapper.btcRpc.getTransaction(this.txId);\r\n return await this.wrapper.contract.txsClaimWithTxData(signer ?? this.getInitiator(), this.data, {\r\n blockhash: tx.blockhash,\r\n confirmations: tx.confirmations,\r\n txid: tx.txid,\r\n hex: tx.hex,\r\n height: tx.blockheight\r\n }, this.requiredConfirmations, this.vout, null, this.wrapper.synchronizer, true);\r\n }\r\n /**\r\n * Claims and finishes the swap\r\n *\r\n * @param signer Signer to sign the transactions with, can also be different to the initializer\r\n * @param abortSignal Abort signal to stop waiting for transaction confirmation\r\n */\r\n async claim(signer, abortSignal) {\r\n let txIds;\r\n try {\r\n txIds = await this.wrapper.contract.sendAndConfirm(signer, await this.txsClaim(signer), true, abortSignal);\r\n }\r\n catch (e) {\r\n this.logger.info(\"claim(): Failed to claim ourselves, checking swap claim state...\");\r\n if (this.state === FromBTCSwapState.CLAIM_CLAIMED) {\r\n this.logger.info(\"claim(): Transaction state is CLAIM_CLAIMED, swap was successfully claimed by the watchtower\");\r\n return this.claimTxId;\r\n }\r\n if ((await this.wrapper.contract.getCommitStatus(this.getInitiator(), this.data)) === base_1.SwapCommitStatus.PAID) {\r\n this.logger.info(\"claim(): Transaction commit status is PAID, swap was successfully claimed by the watchtower\");\r\n await this._saveAndEmit(FromBTCSwapState.CLAIM_CLAIMED);\r\n return null;\r\n }\r\n throw e;\r\n }\r\n this.claimTxId = txIds[0];\r\n if (this.state === FromBTCSwapState.CLAIM_COMMITED || this.state === FromBTCSwapState.BTC_TX_CONFIRMED ||\r\n this.state === FromBTCSwapState.EXPIRED || this.state === FromBTCSwapState.FAILED) {\r\n await this._saveAndEmit(FromBTCSwapState.CLAIM_CLAIMED);\r\n }\r\n return txIds[0];\r\n }\r\n /**\r\n * Waits till the swap is successfully claimed\r\n *\r\n * @param abortSignal AbortSignal\r\n * @throws {Error} If swap is in invalid state (must be BTC_TX_CONFIRMED)\r\n * @throws {Error} If the LP refunded sooner than we were able to claim\r\n */\r\n async waitTillClaimed(abortSignal) {\r\n if (this.state === FromBTCSwapState.CLAIM_CLAIMED)\r\n return Promise.resolve();\r\n if (this.state !== FromBTCSwapState.BTC_TX_CONFIRMED)\r\n throw new Error(\"Invalid state (not BTC_TX_CONFIRMED)\");\r\n const abortController = new AbortController();\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => abortController.abort(abortSignal.reason));\r\n const res = await Promise.race([\r\n this.watchdogWaitTillResult(abortController.signal),\r\n this.waitTillState(FromBTCSwapState.CLAIM_CLAIMED, \"eq\", abortController.signal).then(() => 0),\r\n this.waitTillState(FromBTCSwapState.FAILED, \"eq\", abortController.signal).then(() => 1),\r\n ]);\r\n abortController.abort();\r\n if (res === 0) {\r\n this.logger.debug(\"waitTillClaimed(): Resolved from state change (CLAIM_CLAIMED)\");\r\n return;\r\n }\r\n if (res === 1) {\r\n this.logger.debug(\"waitTillClaimed(): Resolved from state change (FAILED)\");\r\n throw new Error(\"Offerer refunded during claiming\");\r\n }\r\n this.logger.debug(\"waitTillClaimed(): Resolved from watchdog\");\r\n if (res === base_1.SwapCommitStatus.PAID) {\r\n if (this.state !== FromBTCSwapState.CLAIM_CLAIMED)\r\n await this._saveAndEmit(FromBTCSwapState.CLAIM_CLAIMED);\r\n }\r\n if (res === base_1.SwapCommitStatus.NOT_COMMITED || res === base_1.SwapCommitStatus.EXPIRED) {\r\n if (this.state !== FromBTCSwapState.CLAIM_CLAIMED &&\r\n this.state !== FromBTCSwapState.FAILED)\r\n await this._saveAndEmit(FromBTCSwapState.FAILED);\r\n }\r\n }\r\n //////////////////////////////\r\n //// Storage\r\n serialize() {\r\n return {\r\n ...super.serialize(),\r\n address: this.address,\r\n amount: this.amount.toString(10),\r\n requiredConfirmations: this.requiredConfirmations,\r\n txId: this.txId,\r\n vout: this.vout\r\n };\r\n }\r\n //////////////////////////////\r\n //// Swap ticks & sync\r\n /**\r\n * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain\r\n * data\r\n *\r\n * @private\r\n */\r\n async syncStateFromChain() {\r\n if (this.state === FromBTCSwapState.PR_CREATED || this.state === FromBTCSwapState.QUOTE_SOFT_EXPIRED) {\r\n const status = await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.getCommitStatus(this.getInitiator(), this.data));\r\n switch (status) {\r\n case base_1.SwapCommitStatus.COMMITED:\r\n this.state = FromBTCSwapState.CLAIM_COMMITED;\r\n return true;\r\n case base_1.SwapCommitStatus.EXPIRED:\r\n this.state = FromBTCSwapState.QUOTE_EXPIRED;\r\n return true;\r\n case base_1.SwapCommitStatus.PAID:\r\n this.state = FromBTCSwapState.CLAIM_CLAIMED;\r\n return true;\r\n }\r\n if (!await this.isQuoteValid()) {\r\n this.state = FromBTCSwapState.QUOTE_EXPIRED;\r\n return true;\r\n }\r\n return false;\r\n }\r\n if (this.state === FromBTCSwapState.CLAIM_COMMITED || this.state === FromBTCSwapState.BTC_TX_CONFIRMED || this.state === FromBTCSwapState.EXPIRED) {\r\n const status = await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.getCommitStatus(this.getInitiator(), this.data));\r\n switch (status) {\r\n case base_1.SwapCommitStatus.PAID:\r\n this.state = FromBTCSwapState.CLAIM_CLAIMED;\r\n return true;\r\n case base_1.SwapCommitStatus.NOT_COMMITED:\r\n case base_1.SwapCommitStatus.EXPIRED:\r\n this.state = FromBTCSwapState.FAILED;\r\n return true;\r\n case base_1.SwapCommitStatus.COMMITED:\r\n const res = await this.getBitcoinPayment();\r\n if (res != null && res.confirmations >= this.requiredConfirmations) {\r\n this.txId = res.txId;\r\n this.vout = res.vout;\r\n this.state = FromBTCSwapState.BTC_TX_CONFIRMED;\r\n return true;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n async _sync(save) {\r\n const changed = await this.syncStateFromChain();\r\n if (changed && save)\r\n await this._saveAndEmit();\r\n return changed;\r\n }\r\n async _tick(save) {\r\n switch (this.state) {\r\n case FromBTCSwapState.PR_CREATED:\r\n if (this.expiry < Date.now()) {\r\n this.state = FromBTCSwapState.QUOTE_SOFT_EXPIRED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n break;\r\n case FromBTCSwapState.CLAIM_COMMITED:\r\n if (this.getTimeoutTime() < Date.now()) {\r\n this.state = FromBTCSwapState.EXPIRED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n case FromBTCSwapState.EXPIRED:\r\n //Check if bitcoin payment was received every 2 minutes\r\n if (Math.floor(Date.now() / 1000) % 120 === 0) {\r\n try {\r\n const res = await this.getBitcoinPayment();\r\n if (res != null && res.confirmations >= this.requiredConfirmations) {\r\n this.txId = res.txId;\r\n this.vout = res.vout;\r\n this.state = FromBTCSwapState.BTC_TX_CONFIRMED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n this.logger.error(\"tickSwap(\" + this.getIdentifierHashString() + \"): \", e);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n}\r\nexports.FromBTCSwap = FromBTCSwap;\r\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createBurnCheckedInstruction } from '../instructions/burnChecked.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Burn tokens from an account, asserting the token mint and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to burn tokens from\n * @param mint Mint for the account\n * @param owner Account owner\n * @param amount Amount to burn\n * @param decimals Number of decimals in amount to burn\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function burnChecked(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n mint: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createBurnCheckedInstruction(account, mint, ownerPublicKey, amount, decimals, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\"use strict\";\n/* ************************************************************************************\nExtracted from check-types.js\nhttps://gitlab.com/philbooth/check-types.js\n\nMIT License\n\nCopyright (c) 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Phil Booth\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n************************************************************************************ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParameterError = void 0;\nexports.isNonEmptyString = isNonEmptyString;\nexports.isDate = isDate;\nexports.isEmptyString = isEmptyString;\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isInteger = isInteger;\nexports.validate = validate;\nconst utils_1 = require(\"./utils\");\n/* Validation functions copied from check-types package - https://www.npmjs.com/package/check-types */\n/** Determines whether the argument is a non-empty string. */\nfunction isNonEmptyString(data) {\n return isString(data) && data !== '';\n}\n/** Determines whether the argument is a *valid* Date. */\nfunction isDate(data) {\n return data instanceof Date && isInteger(data.getTime());\n}\n/** Determines whether the argument is the empty string. */\nfunction isEmptyString(data) {\n return data === '' || (data instanceof String && data.toString() === '');\n}\n/** Determines whether the argument is a string. */\nfunction isString(data) {\n return typeof data === 'string' || data instanceof String;\n}\n/** Determines whether the string representation of the argument is \"[object Object]\". */\nfunction isObject(data) {\n return (0, utils_1.objectToString)(data) === '[object Object]';\n}\n/** Determines whether the argument is an integer. */\nfunction isInteger(data) {\n return typeof data === 'number' && data % 1 === 0;\n}\n/* -- End validation functions -- */\n/**\n * When the first argument is false, an error is created with the given message. If a callback is\n * provided, the error is passed to the callback, otherwise the error is thrown.\n */\nfunction validate(bool, cbOrMessage, message) {\n if (bool)\n return; // Validation passes\n const cb = typeof cbOrMessage === 'function' ? cbOrMessage : undefined;\n let options = typeof cbOrMessage === 'function' ? message : cbOrMessage;\n // The default message prior to v5 was '[object Object]' due to a bug, and the message is kept\n // for backwards compatibility.\n if (!isObject(options))\n options = '[object Object]';\n const err = new ParameterError((0, utils_1.safeToString)(options));\n if (cb)\n cb(err);\n else\n throw err;\n}\n/**\n * Represents a validation error.\n * @public\n */\nclass ParameterError extends Error {\n}\nexports.ParameterError = ParameterError;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BtcRelayAbi = void 0;\r\nexports.BtcRelayAbi = [\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"BtcRelayImpl\",\r\n \"interface_name\": \"btc_relay::IBtcRelay\"\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"btc_relay::structs::blockheader::BlockHeader\",\r\n \"members\": [\r\n {\r\n \"name\": \"reversed_version\",\r\n \"type\": \"core::integer::u32\"\r\n },\r\n {\r\n \"name\": \"previous_blockhash\",\r\n \"type\": \"[core::integer::u32; 8]\"\r\n },\r\n {\r\n \"name\": \"merkle_root\",\r\n \"type\": \"[core::integer::u32; 8]\"\r\n },\r\n {\r\n \"name\": \"reversed_timestamp\",\r\n \"type\": \"core::integer::u32\"\r\n },\r\n {\r\n \"name\": \"nbits\",\r\n \"type\": \"core::integer::u32\"\r\n },\r\n {\r\n \"name\": \"nonce\",\r\n \"type\": \"core::integer::u32\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::array::Span::\",\r\n \"members\": [\r\n {\r\n \"name\": \"snapshot\",\r\n \"type\": \"@core::array::Array::\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"core::integer::u256\",\r\n \"members\": [\r\n {\r\n \"name\": \"low\",\r\n \"type\": \"core::integer::u128\"\r\n },\r\n {\r\n \"name\": \"high\",\r\n \"type\": \"core::integer::u128\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"struct\",\r\n \"name\": \"btc_relay::structs::stored_blockheader::StoredBlockHeader\",\r\n \"members\": [\r\n {\r\n \"name\": \"blockheader\",\r\n \"type\": \"btc_relay::structs::blockheader::BlockHeader\"\r\n },\r\n {\r\n \"name\": \"block_hash\",\r\n \"type\": \"[core::integer::u32; 8]\"\r\n },\r\n {\r\n \"name\": \"chain_work\",\r\n \"type\": \"core::integer::u256\"\r\n },\r\n {\r\n \"name\": \"block_height\",\r\n \"type\": \"core::integer::u32\"\r\n },\r\n {\r\n \"name\": \"last_diff_adjustment\",\r\n \"type\": \"core::integer::u32\"\r\n },\r\n {\r\n \"name\": \"prev_block_timestamps\",\r\n \"type\": \"[core::integer::u32; 10]\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"btc_relay::IBtcRelay\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"submit_main_blockheaders\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"block_headers\",\r\n \"type\": \"core::array::Span::\"\r\n },\r\n {\r\n \"name\": \"stored_header\",\r\n \"type\": \"btc_relay::structs::stored_blockheader::StoredBlockHeader\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"submit_short_fork_blockheaders\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"block_headers\",\r\n \"type\": \"core::array::Span::\"\r\n },\r\n {\r\n \"name\": \"stored_header\",\r\n \"type\": \"btc_relay::structs::stored_blockheader::StoredBlockHeader\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"submit_fork_blockheaders\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"fork_id\",\r\n \"type\": \"core::felt252\"\r\n },\r\n {\r\n \"name\": \"block_headers\",\r\n \"type\": \"core::array::Span::\"\r\n },\r\n {\r\n \"name\": \"stored_header\",\r\n \"type\": \"btc_relay::structs::stored_blockheader::StoredBlockHeader\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"state_mutability\": \"external\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"impl\",\r\n \"name\": \"BtcRelayReadOnlyImpl\",\r\n \"interface_name\": \"btc_relay::IBtcRelayReadOnly\"\r\n },\r\n {\r\n \"type\": \"interface\",\r\n \"name\": \"btc_relay::IBtcRelayReadOnly\",\r\n \"items\": [\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_chainwork\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u256\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_blockheight\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u32\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"verify_blockheader\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"stored_header\",\r\n \"type\": \"btc_relay::structs::stored_blockheader::StoredBlockHeader\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::integer::u32\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_commit_hash\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"height\",\r\n \"type\": \"core::integer::u32\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::felt252\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"get_tip_commit_hash\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"type\": \"core::felt252\"\r\n }\r\n ],\r\n \"state_mutability\": \"view\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"constructor\",\r\n \"name\": \"constructor\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"stored_header\",\r\n \"type\": \"btc_relay::structs::stored_blockheader::StoredBlockHeader\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"btc_relay::events::StoreHeader\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"commit_hash\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"block_hash_poseidon\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"header\",\r\n \"type\": \"btc_relay::structs::stored_blockheader::StoredBlockHeader\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"btc_relay::events::StoreForkHeader\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"commit_hash\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"block_hash_poseidon\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"fork_id\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"header\",\r\n \"type\": \"btc_relay::structs::stored_blockheader::StoredBlockHeader\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"btc_relay::events::ChainReorg\",\r\n \"kind\": \"struct\",\r\n \"members\": [\r\n {\r\n \"name\": \"fork_submitter\",\r\n \"type\": \"core::starknet::contract_address::ContractAddress\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"fork_id\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"tip_block_hash_poseidon\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"tip_commit_hash\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"key\"\r\n },\r\n {\r\n \"name\": \"start_height\",\r\n \"type\": \"core::felt252\",\r\n \"kind\": \"data\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"btc_relay::BtcRelay::Event\",\r\n \"kind\": \"enum\",\r\n \"variants\": [\r\n {\r\n \"name\": \"StoreHeader\",\r\n \"type\": \"btc_relay::events::StoreHeader\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"StoreForkHeader\",\r\n \"type\": \"btc_relay::events::StoreForkHeader\",\r\n \"kind\": \"nested\"\r\n },\r\n {\r\n \"name\": \"ChainReorg\",\r\n \"type\": \"btc_relay::events::ChainReorg\",\r\n \"kind\": \"nested\"\r\n }\r\n ]\r\n }\r\n];\r\n","import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { Keypair, sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { createInitializeMintInstruction } from '../../instructions/initializeMint.js';\nimport { ExtensionType, getMintLen } from '../extensionType.js';\nimport {\n createInitializeInterestBearingMintInstruction,\n createUpdateRateInterestBearingMintInstruction,\n} from './instructions.js';\n\n/**\n * Initialize an interest bearing account on a mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mintAuthority Account or multisig that will control minting\n * @param freezeAuthority Optional account or multisig that can freeze token accounts\n * @param rateAuthority The public key for the account that can update the rate\n * @param rate The initial interest rate\n * @param decimals Location of the decimal place\n * @param keypair Optional keypair, defaulting to a new random one\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Public key of the mint\n */\nexport async function createInterestBearingMint(\n connection: Connection,\n payer: Signer,\n mintAuthority: PublicKey,\n freezeAuthority: PublicKey,\n rateAuthority: PublicKey,\n rate: number,\n decimals: number,\n keypair = Keypair.generate(),\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const mintLen = getMintLen([ExtensionType.InterestBearingConfig]);\n const lamports = await connection.getMinimumBalanceForRentExemption(mintLen);\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space: mintLen,\n lamports,\n programId,\n }),\n createInitializeInterestBearingMintInstruction(keypair.publicKey, rateAuthority, rate, programId),\n createInitializeMintInstruction(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId)\n );\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n return keypair.publicKey;\n}\n\n/**\n * Update the interest rate of an interest bearing account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Public key of the mint\n * @param rateAuthority The public key for the account that can update the rate\n * @param rate The initial interest rate\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function updateRateInterestBearingMint(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n rateAuthority: Signer,\n rate: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [rateAuthorityPublicKey, signers] = getSigners(rateAuthority, multiSigners);\n const transaction = new Transaction().add(\n createUpdateRateInterestBearingMintInstruction(mint, rateAuthorityPublicKey, rate, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, rateAuthority, ...signers], confirmOptions);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.angleDoubleRight = void 0;\nvar angleDoubleRight = {\n \"viewBox\": \"0 0 1024 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M595 960q0 13-10 23l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23zM979 960q0 13-10 23l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23z\"\n }\n }]\n};\nexports.angleDoubleRight = angleDoubleRight;","import { struct } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { PublicKey } from '@solana/web3.js';\nimport type { Mint } from '../state/mint.js';\nimport { ExtensionType, getExtensionData } from './extensionType.js';\n\n/** MintCloseAuthority as stored by the program */\nexport interface MintCloseAuthority {\n closeAuthority: PublicKey;\n}\n\n/** Buffer layout for de/serializing a mint */\nexport const MintCloseAuthorityLayout = struct([publicKey('closeAuthority')]);\n\nexport const MINT_CLOSE_AUTHORITY_SIZE = MintCloseAuthorityLayout.span;\n\nexport function getMintCloseAuthority(mint: Mint): MintCloseAuthority | null {\n const extensionData = getExtensionData(ExtensionType.MintCloseAuthority, mint.tlvData);\n if (extensionData !== null) {\n return MintCloseAuthorityLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","export * from './actions.js';\nexport * from './instructions.js';\nexport * from './state.js';\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__exportStar(require(\"./starknet/base/StarknetAction\"), exports);\r\n__exportStar(require(\"./starknet/base/StarknetBase\"), exports);\r\n__exportStar(require(\"./starknet/base/StarknetModule\"), exports);\r\n__exportStar(require(\"./starknet/base/modules/StarknetFees\"), exports);\r\n__exportStar(require(\"./starknet/base/modules/StarknetEvents\"), exports);\r\n__exportStar(require(\"./starknet/base/modules/StarknetTokens\"), exports);\r\n__exportStar(require(\"./starknet/base/modules/StarknetAddresses\"), exports);\r\n__exportStar(require(\"./starknet/base/modules/StarknetTransactions\"), exports);\r\n__exportStar(require(\"./starknet/base/modules/StarknetSignatures\"), exports);\r\n__exportStar(require(\"./starknet/btcrelay/headers/StarknetBtcStoredHeader\"), exports);\r\n__exportStar(require(\"./starknet/btcrelay/headers/StarknetBtcHeader\"), exports);\r\n__exportStar(require(\"./starknet/btcrelay/StarknetBtcRelay\"), exports);\r\n__exportStar(require(\"./starknet/contract/modules/StarknetContractEvents\"), exports);\r\n__exportStar(require(\"./starknet/contract/StarknetContractBase\"), exports);\r\n__exportStar(require(\"./starknet/swaps/StarknetSwapContract\"), exports);\r\n__exportStar(require(\"./starknet/swaps/StarknetSwapData\"), exports);\r\n__exportStar(require(\"./starknet/swaps/StarknetSwapModule\"), exports);\r\n__exportStar(require(\"./starknet/swaps/modules/StarknetLpVault\"), exports);\r\n__exportStar(require(\"./starknet/swaps/modules/StarknetSwapClaim\"), exports);\r\n__exportStar(require(\"./starknet/swaps/modules/StarknetSwapInit\"), exports);\r\n__exportStar(require(\"./starknet/swaps/modules/StarknetSwapRefund\"), exports);\r\n__exportStar(require(\"./starknet/swaps/handlers/IHandler\"), exports);\r\n__exportStar(require(\"./starknet/swaps/handlers/refund/TimelockRefundHandler\"), exports);\r\n__exportStar(require(\"./starknet/swaps/handlers/claim/ClaimHandlers\"), exports);\r\n__exportStar(require(\"./starknet/swaps/handlers/claim/HashlockClaimHandler\"), exports);\r\n__exportStar(require(\"./starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler\"), exports);\r\n__exportStar(require(\"./starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler\"), exports);\r\n__exportStar(require(\"./starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler\"), exports);\r\n__exportStar(require(\"./starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler\"), exports);\r\n__exportStar(require(\"./starknet/events/StarknetChainEventsBrowser\"), exports);\r\n__exportStar(require(\"./starknet/wallet/StarknetSigner\"), exports);\r\n__exportStar(require(\"./starknet/wallet/StarknetKeypairWallet\"), exports);\r\n__exportStar(require(\"./starknet/StarknetChainType\"), exports);\r\n__exportStar(require(\"./starknet/StarknetInitializer\"), exports);\r\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface ApproveCheckedInstructionData {\n instruction: TokenInstruction.ApproveChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const approveCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct an ApproveChecked instruction\n *\n * @param account Account to set the delegate for\n * @param mint Mint account\n * @param delegate Account authorized to transfer of tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param decimals Number of decimals in approve amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createApproveCheckedInstruction(\n account: PublicKey,\n mint: PublicKey,\n delegate: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: delegate, isSigner: false, isWritable: false },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(approveCheckedInstructionData.span);\n approveCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.ApproveChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid ApproveChecked instruction */\nexport interface DecodedApproveCheckedInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n delegate: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.ApproveChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode an ApproveChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeApproveCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedApproveCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== approveCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, delegate, owner, multiSigners },\n data,\n } = decodeApproveCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.ApproveChecked) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !delegate || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n delegate,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated ApproveChecked instruction */\nexport interface DecodedApproveCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n delegate: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode an ApproveChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeApproveCheckedInstructionUnchecked({\n programId,\n keys: [account, mint, delegate, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedApproveCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n delegate,\n owner,\n multiSigners,\n },\n data: approveCheckedInstructionData.decode(data),\n };\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\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetTokens = void 0;\r\nconst StarknetModule_1 = require(\"../StarknetModule\");\r\nconst StarknetAction_1 = require(\"../StarknetAction\");\r\nconst ERC20Abi_1 = require(\"./ERC20Abi\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nclass StarknetTokens extends StarknetModule_1.StarknetModule {\r\n getContract(address) {\r\n return new starknet_1.Contract(ERC20Abi_1.ERC20Abi, address, this.root.provider).typedv2(ERC20Abi_1.ERC20Abi);\r\n }\r\n /**\r\n * Action for transferring the erc20 token\r\n *\r\n * @param signer\r\n * @param recipient\r\n * @param token\r\n * @param amount\r\n * @constructor\r\n * @private\r\n */\r\n Transfer(signer, recipient, token, amount) {\r\n const erc20 = this.getContract(token);\r\n return new StarknetAction_1.StarknetAction(signer, this.root, erc20.populateTransaction.transfer(recipient, amount), StarknetTokens.GasCosts.TRANSFER);\r\n }\r\n /**\r\n * Approves spend of tokens for a specific spender\r\n *\r\n * @param signer\r\n * @param spender\r\n * @param token\r\n * @param amount\r\n * @constructor\r\n * @private\r\n */\r\n Approve(signer, spender, token, amount) {\r\n const erc20 = this.getContract(token);\r\n return new StarknetAction_1.StarknetAction(signer, this.root, erc20.populateTransaction.approve(spender, amount), StarknetTokens.GasCosts.APPROVE);\r\n }\r\n ///////////////////\r\n //// Tokens\r\n /**\r\n * Checks if the provided string is a valid starknet token\r\n *\r\n * @param token\r\n */\r\n isValidToken(token) {\r\n return this.root.Addresses.isValidAddress(token);\r\n }\r\n /**\r\n * Returns the token balance of the address\r\n *\r\n * @param address\r\n * @param token\r\n */\r\n async getTokenBalance(address, token) {\r\n const erc20 = this.getContract(token);\r\n const balance = await erc20.balance_of(address);\r\n const balanceBN = (0, Utils_1.toBigInt)(balance);\r\n this.logger.debug(\"getTokenBalance(): token balance fetched, token: \" + token +\r\n \" address: \" + address + \" amount: \" + balanceBN.toString());\r\n return balanceBN;\r\n }\r\n /**\r\n * Returns the native currency address, return the default used by the fee module\r\n */\r\n getNativeCurrencyAddress() {\r\n return this.root.Fees.getDefaultGasToken();\r\n }\r\n ///////////////////\r\n //// Transfers\r\n /**\r\n * Creates transactions for sending the over the tokens\r\n *\r\n * @param signer\r\n * @param token token to send\r\n * @param amount amount of the token to send\r\n * @param recipient recipient's address\r\n * @param feeRate fee rate to use for the transactions\r\n * @private\r\n */\r\n async txsTransfer(signer, token, amount, recipient, feeRate) {\r\n const action = this.Transfer(signer, recipient, token, amount);\r\n feeRate = feeRate ?? await this.root.Fees.getFeeRate();\r\n this.logger.debug(\"txsTransfer(): transfer TX created, recipient: \" + recipient.toString() +\r\n \" token: \" + token.toString() + \" amount: \" + amount.toString(10));\r\n return [await action.tx(feeRate)];\r\n }\r\n}\r\nexports.StarknetTokens = StarknetTokens;\r\nStarknetTokens.ERC20_ETH = \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\";\r\nStarknetTokens.ERC20_STRK = \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\";\r\nStarknetTokens.GasCosts = {\r\n TRANSFER: { l1: 400, l2: 0 },\r\n APPROVE: { l1: 400, l2: 0 }\r\n};\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.requestProvider = void 0;\nvar errors_1 = require(\"./errors\");\nfunction requestProvider(_) {\n if (_ === void 0) { _ = {}; }\n return new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n return reject(new Error('Must be called in a browser context'));\n }\n var webln = window.webln;\n if (!webln) {\n return reject(new errors_1.MissingProviderError('Your browser has no WebLN provider'));\n }\n webln.enable()\n .then(function () { return resolve(webln); })\n .catch(function (err) { return reject(err); });\n });\n}\nexports.requestProvider = requestProvider;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.verifySchema = exports.verifyField = exports.isOptionalField = exports.FieldTypeEnum = exports.parseBigInt = void 0;\r\nfunction parseBigInt(str) {\r\n if (str == null)\r\n return null;\r\n if (typeof (str) !== \"string\" && typeof (str) !== \"number\")\r\n return null;\r\n try {\r\n return BigInt(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n}\r\nexports.parseBigInt = parseBigInt;\r\nvar FieldTypeEnum;\r\n(function (FieldTypeEnum) {\r\n FieldTypeEnum[FieldTypeEnum[\"String\"] = 0] = \"String\";\r\n FieldTypeEnum[FieldTypeEnum[\"Boolean\"] = 1] = \"Boolean\";\r\n FieldTypeEnum[FieldTypeEnum[\"Number\"] = 2] = \"Number\";\r\n FieldTypeEnum[FieldTypeEnum[\"BigInt\"] = 3] = \"BigInt\";\r\n FieldTypeEnum[FieldTypeEnum[\"Any\"] = 4] = \"Any\";\r\n FieldTypeEnum[FieldTypeEnum[\"StringOptional\"] = 100] = \"StringOptional\";\r\n FieldTypeEnum[FieldTypeEnum[\"BooleanOptional\"] = 101] = \"BooleanOptional\";\r\n FieldTypeEnum[FieldTypeEnum[\"NumberOptional\"] = 102] = \"NumberOptional\";\r\n FieldTypeEnum[FieldTypeEnum[\"BigIntOptional\"] = 103] = \"BigIntOptional\";\r\n FieldTypeEnum[FieldTypeEnum[\"AnyOptional\"] = 104] = \"AnyOptional\";\r\n})(FieldTypeEnum = exports.FieldTypeEnum || (exports.FieldTypeEnum = {}));\r\nfunction isAllOptional(schema) {\r\n for (let key in schema) {\r\n if (!isOptionalField(schema[key]))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction isOptionalField(type) {\r\n if (typeof (type) === \"function\")\r\n return type(undefined) != null;\r\n if (typeof (type) === \"object\")\r\n return isAllOptional(type);\r\n return type >= 100;\r\n}\r\nexports.isOptionalField = isOptionalField;\r\nfunction verifyField(fieldType, val) {\r\n const type = fieldType;\r\n if (typeof (type) === \"function\") {\r\n const result = type(val);\r\n if (result == null)\r\n return;\r\n return result;\r\n }\r\n if (val == null && isOptionalField(type)) {\r\n return null;\r\n }\r\n if (type === FieldTypeEnum.Any || type === FieldTypeEnum.AnyOptional) {\r\n return val;\r\n }\r\n else if (type === FieldTypeEnum.Boolean || type === FieldTypeEnum.BooleanOptional) {\r\n if (typeof (val) !== \"boolean\")\r\n return;\r\n return val;\r\n }\r\n else if (type === FieldTypeEnum.Number || type === FieldTypeEnum.NumberOptional) {\r\n if (typeof (val) !== \"number\")\r\n return;\r\n if (isNaN(val))\r\n return;\r\n return val;\r\n }\r\n else if (type === FieldTypeEnum.BigInt || type === FieldTypeEnum.BigIntOptional) {\r\n const result = parseBigInt(val);\r\n if (result == null)\r\n return;\r\n return result;\r\n }\r\n else if (type === FieldTypeEnum.String || type === FieldTypeEnum.StringOptional) {\r\n if (typeof (val) !== \"string\")\r\n return;\r\n return val;\r\n }\r\n else {\r\n //Probably another request schema\r\n const result = verifySchema(val, type);\r\n if (result == null)\r\n return;\r\n return result;\r\n }\r\n}\r\nexports.verifyField = verifyField;\r\nfunction verifySchema(req, schema) {\r\n if (req == null)\r\n return null;\r\n const resultSchema = {};\r\n for (let fieldName in schema) {\r\n const val = req[fieldName];\r\n const type = schema[fieldName];\r\n if (typeof (type) === \"function\") {\r\n const result = type(val);\r\n if (result == null)\r\n return null;\r\n resultSchema[fieldName] = result;\r\n continue;\r\n }\r\n if (val == null && isOptionalField(type)) {\r\n resultSchema[fieldName] = null;\r\n continue;\r\n }\r\n if (type === FieldTypeEnum.Any || type === FieldTypeEnum.AnyOptional) {\r\n resultSchema[fieldName] = val;\r\n }\r\n else if (type === FieldTypeEnum.Boolean || type === FieldTypeEnum.BooleanOptional) {\r\n if (typeof (val) !== \"boolean\")\r\n return null;\r\n resultSchema[fieldName] = val;\r\n }\r\n else if (type === FieldTypeEnum.Number || type === FieldTypeEnum.NumberOptional) {\r\n if (typeof (val) !== \"number\")\r\n return null;\r\n if (isNaN(val))\r\n return null;\r\n resultSchema[fieldName] = val;\r\n }\r\n else if (type === FieldTypeEnum.BigInt || type === FieldTypeEnum.BigIntOptional) {\r\n const result = parseBigInt(val);\r\n if (result == null)\r\n return null;\r\n resultSchema[fieldName] = result;\r\n }\r\n else if (type === FieldTypeEnum.String || type === FieldTypeEnum.StringOptional) {\r\n if (typeof (val) !== \"string\")\r\n return null;\r\n resultSchema[fieldName] = val;\r\n }\r\n else {\r\n //Probably another request schema\r\n const result = verifySchema(val, type);\r\n if (result == null)\r\n return null;\r\n resultSchema[fieldName] = result;\r\n }\r\n }\r\n return resultSchema;\r\n}\r\nexports.verifySchema = verifySchema;\r\n","import { struct } from '@solana/buffer-layout';\nimport type { Account } from '../state/account.js';\nimport { ExtensionType, getExtensionData } from './extensionType.js';\n\n/** ImmutableOwner as stored by the program */\nexport interface ImmutableOwner {} // eslint-disable-line\n\n/** Buffer layout for de/serializing an account */\nexport const ImmutableOwnerLayout = struct([]);\n\nexport const IMMUTABLE_OWNER_SIZE = ImmutableOwnerLayout.span;\n\nexport function getImmutableOwner(account: Account): ImmutableOwner | null {\n const extensionData = getExtensionData(ExtensionType.ImmutableOwner, account.tlvData);\n if (extensionData !== null) {\n return ImmutableOwnerLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n","export * from './base';\nexport * from './bigint';\nexport * from './decimal';\nexport * from './native';\nexport * from './web3';\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\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}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\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}\n\nprocess.nextTick = function (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};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IBitcoinClaimHandler = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst Utils_1 = require(\"../../../../../utils/Utils\");\r\nconst logger = (0, Utils_1.getLogger)(\"IBitcoinClaimHandler: \");\r\nclass IBitcoinClaimHandler {\r\n constructor(address) {\r\n this.address = address;\r\n }\r\n /**\r\n * Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on\r\n * requiredConfirmations\r\n * If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the\r\n * current chain tip & adds them to the txs array\r\n *\r\n * @param signer\r\n * @param btcRelay\r\n * @param txBlockheight transaction blockheight\r\n * @param requiredConfirmations required confirmation for the swap to be claimable with that TX\r\n * @param blockhash blockhash of the block which includes the transaction\r\n * @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization\r\n * txns are added here\r\n * @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized\r\n * to the required blockheight\r\n * @param feeRate Fee rate to use for synchronization transactions\r\n * @private\r\n */\r\n async getCommitedHeaderAndSynchronize(signer, btcRelay, txBlockheight, requiredConfirmations, blockhash, txs, synchronizer, feeRate) {\r\n const requiredBlockheight = txBlockheight + requiredConfirmations - 1;\r\n const result = await (0, Utils_1.tryWithRetries)(() => btcRelay.retrieveLogAndBlockheight({\r\n blockhash: blockhash\r\n }, requiredBlockheight));\r\n if (result != null)\r\n return result.header;\r\n //Need to synchronize\r\n if (synchronizer == null)\r\n return null;\r\n //TODO: We don't have to synchronize to tip, only to our required blockheight\r\n const resp = await synchronizer.syncToLatestTxs(signer.toString(), feeRate);\r\n logger.debug(\"getCommitedHeaderAndSynchronize(): BTC Relay not synchronized to required blockheight, \" +\r\n \"synchronizing ourselves in \" + resp.txs.length + \" txs\");\r\n logger.debug(\"getCommitedHeaderAndSynchronize(): BTC Relay computed header map: \", resp.computedHeaderMap);\r\n resp.txs.forEach(tx => txs.push(tx));\r\n //Retrieve computed header\r\n return resp.computedHeaderMap[txBlockheight];\r\n }\r\n serializeCommitment(data) {\r\n return [\r\n data.confirmations,\r\n data.btcRelay.contract.address\r\n ];\r\n }\r\n getCommitment(data) {\r\n return starknet_1.hash.computePoseidonHashOnElements(this.serializeCommitment(data));\r\n }\r\n async _getWitness(signer, swapData, { tx, btcRelay, commitedHeader, synchronizer, requiredConfirmations }, commitment, feeRate) {\r\n const serializedData = this.serializeCommitment({\r\n ...commitment,\r\n btcRelay,\r\n confirmations: requiredConfirmations\r\n });\r\n const commitmentHash = starknet_1.hash.computePoseidonHashOnElements(serializedData);\r\n if (!swapData.isClaimData(commitmentHash))\r\n throw new Error(\"Invalid commit data\");\r\n const merkleProof = await btcRelay.bitcoinRpc.getMerkleProof(tx.txid, tx.blockhash);\r\n logger.debug(\"getWitness(): merkle proof computed: \", merkleProof);\r\n const txs = [];\r\n if (commitedHeader == null)\r\n commitedHeader = await this.getCommitedHeaderAndSynchronize(signer, btcRelay, tx.height, requiredConfirmations, tx.blockhash, txs, synchronizer, feeRate);\r\n if (commitedHeader == null)\r\n throw new Error(\"Cannot fetch committed header!\");\r\n serializedData.push(...commitedHeader.serialize());\r\n serializedData.push(merkleProof.merkle.length, ...merkleProof.merkle.map(Utils_1.bufferToU32Array).flat());\r\n serializedData.push(merkleProof.pos);\r\n return { initialTxns: txs, witness: serializedData };\r\n }\r\n parseWitnessResult(result) {\r\n return (0, Utils_1.u32ArrayToBuffer)(result).toString(\"hex\");\r\n }\r\n}\r\nexports.IBitcoinClaimHandler = IBitcoinClaimHandler;\r\nIBitcoinClaimHandler.address = \"\";\r\nIBitcoinClaimHandler.type = base_1.ChainSwapType.CHAIN_TXID;\r\nIBitcoinClaimHandler.gas = { l1: 20000 };\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pathMatch = pathMatch;\n/**\n * Answers \"does the request-path path-match a given cookie-path?\" as per {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.1.4 | RFC6265 Section 5.1.4}.\n * This is essentially a prefix-match where cookiePath is a prefix of reqPath.\n *\n * @remarks\n * A request-path path-matches a given cookie-path if at least one of\n * the following conditions holds:\n *\n * - The cookie-path and the request-path are identical.\n * - The cookie-path is a prefix of the request-path, and the last character of the cookie-path is %x2F (\"/\").\n * - The cookie-path is a prefix of the request-path, and the first character of the request-path that is not included in the cookie-path is a %x2F (\"/\") character.\n *\n * @param reqPath - the path of the request\n * @param cookiePath - the path of the cookie\n * @public\n */\nfunction pathMatch(reqPath, cookiePath) {\n // \"o The cookie-path and the request-path are identical.\"\n if (cookiePath === reqPath) {\n return true;\n }\n const idx = reqPath.indexOf(cookiePath);\n if (idx === 0) {\n // \"o The cookie-path is a prefix of the request-path, and the last\n // character of the cookie-path is %x2F (\"/\").\"\n if (cookiePath[cookiePath.length - 1] === '/') {\n return true;\n }\n // \" o The cookie-path is a prefix of the request-path, and the first\n // character of the request-path that is not included in the cookie- path\n // is a %x2F (\"/\") character.\"\n if (reqPath.startsWith(cookiePath) && reqPath[cookiePath.length] === '/') {\n return true;\n }\n }\n return false;\n}\n",null,null,null,null,null,null,"/**\n * A `StructFailure` represents a single specific failure in validation.\n */\n\n/**\n * `StructError` objects are thrown (or returned) when validation fails.\n *\n * Validation logic is design to exit early for maximum performance. The error\n * represents the first error encountered during validation. For more detail,\n * the `error.failures` property is a generator function that can be run to\n * continue validation and receive all the failures in the data.\n */\nclass StructError extends TypeError {\n constructor(failure, failures) {\n let cached;\n const {\n message,\n ...rest\n } = failure;\n const {\n path\n } = failure;\n const msg = path.length === 0 ? message : \"At path: \" + path.join('.') + \" -- \" + message;\n super(msg);\n this.value = void 0;\n this.key = void 0;\n this.type = void 0;\n this.refinement = void 0;\n this.path = void 0;\n this.branch = void 0;\n this.failures = void 0;\n Object.assign(this, rest);\n this.name = this.constructor.name;\n\n this.failures = () => {\n var _cached;\n\n return (_cached = cached) != null ? _cached : cached = [failure, ...failures()];\n };\n }\n\n}\n\n/**\n * Check if a value is an iterator.\n */\nfunction isIterable(x) {\n return isObject(x) && typeof x[Symbol.iterator] === 'function';\n}\n/**\n * Check if a value is a plain object.\n */\n\n\nfunction isObject(x) {\n return typeof x === 'object' && x != null;\n}\n/**\n * Check if a value is a plain object.\n */\n\nfunction isPlainObject(x) {\n if (Object.prototype.toString.call(x) !== '[object Object]') {\n return false;\n }\n\n const prototype = Object.getPrototypeOf(x);\n return prototype === null || prototype === Object.prototype;\n}\n/**\n * Return a value as a printable string.\n */\n\nfunction print(value) {\n return typeof value === 'string' ? JSON.stringify(value) : \"\" + value;\n}\n/**\n * Shifts (removes and returns) the first value from the `input` iterator.\n * Like `Array.prototype.shift()` but for an `Iterator`.\n */\n\nfunction shiftIterator(input) {\n const {\n done,\n value\n } = input.next();\n return done ? undefined : value;\n}\n/**\n * Convert a single validation result to a failure.\n */\n\nfunction toFailure(result, context, struct, value) {\n if (result === true) {\n return;\n } else if (result === false) {\n result = {};\n } else if (typeof result === 'string') {\n result = {\n message: result\n };\n }\n\n const {\n path,\n branch\n } = context;\n const {\n type\n } = struct;\n const {\n refinement,\n message = \"Expected a value of type `\" + type + \"`\" + (refinement ? \" with refinement `\" + refinement + \"`\" : '') + \", but received: `\" + print(value) + \"`\"\n } = result;\n return {\n value,\n type,\n refinement,\n key: path[path.length - 1],\n path,\n branch,\n ...result,\n message\n };\n}\n/**\n * Convert a validation result to an iterable of failures.\n */\n\nfunction* toFailures(result, context, struct, value) {\n if (!isIterable(result)) {\n result = [result];\n }\n\n for (const r of result) {\n const failure = toFailure(r, context, struct, value);\n\n if (failure) {\n yield failure;\n }\n }\n}\n/**\n * Check a value against a struct, traversing deeply into nested values, and\n * returning an iterator of failures or success.\n */\n\nfunction* run(value, struct, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n path = [],\n branch = [value],\n coerce = false,\n mask = false\n } = options;\n const ctx = {\n path,\n branch\n };\n\n if (coerce) {\n value = struct.coercer(value, ctx);\n\n if (mask && struct.type !== 'type' && isObject(struct.schema) && isObject(value) && !Array.isArray(value)) {\n for (const key in value) {\n if (struct.schema[key] === undefined) {\n delete value[key];\n }\n }\n }\n }\n\n let valid = true;\n\n for (const failure of struct.validator(value, ctx)) {\n valid = false;\n yield [failure, undefined];\n }\n\n for (let [k, v, s] of struct.entries(value, ctx)) {\n const ts = run(v, s, {\n path: k === undefined ? path : [...path, k],\n branch: k === undefined ? branch : [...branch, v],\n coerce,\n mask\n });\n\n for (const t of ts) {\n if (t[0]) {\n valid = false;\n yield [t[0], undefined];\n } else if (coerce) {\n v = t[1];\n\n if (k === undefined) {\n value = v;\n } else if (value instanceof Map) {\n value.set(k, v);\n } else if (value instanceof Set) {\n value.add(v);\n } else if (isObject(value)) {\n value[k] = v;\n }\n }\n }\n }\n\n if (valid) {\n for (const failure of struct.refiner(value, ctx)) {\n valid = false;\n yield [failure, undefined];\n }\n }\n\n if (valid) {\n yield [undefined, value];\n }\n}\n\n/**\n * `Struct` objects encapsulate the validation logic for a specific type of\n * values. Once constructed, you use the `assert`, `is` or `validate` helpers to\n * validate unknown input data against the struct.\n */\n\nclass Struct {\n constructor(props) {\n this.TYPE = void 0;\n this.type = void 0;\n this.schema = void 0;\n this.coercer = void 0;\n this.validator = void 0;\n this.refiner = void 0;\n this.entries = void 0;\n const {\n type,\n schema,\n validator,\n refiner,\n coercer = value => value,\n entries = function* () {}\n } = props;\n this.type = type;\n this.schema = schema;\n this.entries = entries;\n this.coercer = coercer;\n\n if (validator) {\n this.validator = (value, context) => {\n const result = validator(value, context);\n return toFailures(result, context, this, value);\n };\n } else {\n this.validator = () => [];\n }\n\n if (refiner) {\n this.refiner = (value, context) => {\n const result = refiner(value, context);\n return toFailures(result, context, this, value);\n };\n } else {\n this.refiner = () => [];\n }\n }\n /**\n * Assert that a value passes the struct's validation, throwing if it doesn't.\n */\n\n\n assert(value) {\n return assert(value, this);\n }\n /**\n * Create a value with the struct's coercion logic, then validate it.\n */\n\n\n create(value) {\n return create(value, this);\n }\n /**\n * Check if a value passes the struct's validation.\n */\n\n\n is(value) {\n return is(value, this);\n }\n /**\n * Mask a value, coercing and validating it, but returning only the subset of\n * properties defined by the struct's schema.\n */\n\n\n mask(value) {\n return mask(value, this);\n }\n /**\n * Validate a value with the struct's validation logic, returning a tuple\n * representing the result.\n *\n * You may optionally pass `true` for the `withCoercion` argument to coerce\n * the value before attempting to validate it. If you do, the result will\n * contain the coerced result when successful.\n */\n\n\n validate(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n return validate(value, this, options);\n }\n\n}\n/**\n * Assert that a value passes a struct, throwing if it doesn't.\n */\n\nfunction assert(value, struct) {\n const result = validate(value, struct);\n\n if (result[0]) {\n throw result[0];\n }\n}\n/**\n * Create a value with the coercion logic of struct and validate it.\n */\n\nfunction create(value, struct) {\n const result = validate(value, struct, {\n coerce: true\n });\n\n if (result[0]) {\n throw result[0];\n } else {\n return result[1];\n }\n}\n/**\n * Mask a value, returning only the subset of properties defined by a struct.\n */\n\nfunction mask(value, struct) {\n const result = validate(value, struct, {\n coerce: true,\n mask: true\n });\n\n if (result[0]) {\n throw result[0];\n } else {\n return result[1];\n }\n}\n/**\n * Check if a value passes a struct.\n */\n\nfunction is(value, struct) {\n const result = validate(value, struct);\n return !result[0];\n}\n/**\n * Validate a value against a struct, returning an error if invalid, or the\n * value (with potential coercion) if valid.\n */\n\nfunction validate(value, struct, options) {\n if (options === void 0) {\n options = {};\n }\n\n const tuples = run(value, struct, options);\n const tuple = shiftIterator(tuples);\n\n if (tuple[0]) {\n const error = new StructError(tuple[0], function* () {\n for (const t of tuples) {\n if (t[0]) {\n yield t[0];\n }\n }\n });\n return [error, undefined];\n } else {\n const v = tuple[1];\n return [undefined, v];\n }\n}\n\nfunction assign() {\n for (var _len = arguments.length, Structs = new Array(_len), _key = 0; _key < _len; _key++) {\n Structs[_key] = arguments[_key];\n }\n\n const isType = Structs[0].type === 'type';\n const schemas = Structs.map(s => s.schema);\n const schema = Object.assign({}, ...schemas);\n return isType ? type(schema) : object(schema);\n}\n/**\n * Define a new struct type with a custom validation function.\n */\n\nfunction define(name, validator) {\n return new Struct({\n type: name,\n schema: null,\n validator\n });\n}\n/**\n * Create a new struct based on an existing struct, but the value is allowed to\n * be `undefined`. `log` will be called if the value is not `undefined`.\n */\n\nfunction deprecated(struct, log) {\n return new Struct({ ...struct,\n refiner: (value, ctx) => value === undefined || struct.refiner(value, ctx),\n\n validator(value, ctx) {\n if (value === undefined) {\n return true;\n } else {\n log(value, ctx);\n return struct.validator(value, ctx);\n }\n }\n\n });\n}\n/**\n * Create a struct with dynamic validation logic.\n *\n * The callback will receive the value currently being validated, and must\n * return a struct object to validate it with. This can be useful to model\n * validation logic that changes based on its input.\n */\n\nfunction dynamic(fn) {\n return new Struct({\n type: 'dynamic',\n schema: null,\n\n *entries(value, ctx) {\n const struct = fn(value, ctx);\n yield* struct.entries(value, ctx);\n },\n\n validator(value, ctx) {\n const struct = fn(value, ctx);\n return struct.validator(value, ctx);\n },\n\n coercer(value, ctx) {\n const struct = fn(value, ctx);\n return struct.coercer(value, ctx);\n },\n\n refiner(value, ctx) {\n const struct = fn(value, ctx);\n return struct.refiner(value, ctx);\n }\n\n });\n}\n/**\n * Create a struct with lazily evaluated validation logic.\n *\n * The first time validation is run with the struct, the callback will be called\n * and must return a struct object to use. This is useful for cases where you\n * want to have self-referential structs for nested data structures to avoid a\n * circular definition problem.\n */\n\nfunction lazy(fn) {\n let struct;\n return new Struct({\n type: 'lazy',\n schema: null,\n\n *entries(value, ctx) {\n var _struct;\n\n (_struct = struct) != null ? _struct : struct = fn();\n yield* struct.entries(value, ctx);\n },\n\n validator(value, ctx) {\n var _struct2;\n\n (_struct2 = struct) != null ? _struct2 : struct = fn();\n return struct.validator(value, ctx);\n },\n\n coercer(value, ctx) {\n var _struct3;\n\n (_struct3 = struct) != null ? _struct3 : struct = fn();\n return struct.coercer(value, ctx);\n },\n\n refiner(value, ctx) {\n var _struct4;\n\n (_struct4 = struct) != null ? _struct4 : struct = fn();\n return struct.refiner(value, ctx);\n }\n\n });\n}\n/**\n * Create a new struct based on an existing object struct, but excluding\n * specific properties.\n *\n * Like TypeScript's `Omit` utility.\n */\n\nfunction omit(struct, keys) {\n const {\n schema\n } = struct;\n const subschema = { ...schema\n };\n\n for (const key of keys) {\n delete subschema[key];\n }\n\n switch (struct.type) {\n case 'type':\n return type(subschema);\n\n default:\n return object(subschema);\n }\n}\n/**\n * Create a new struct based on an existing object struct, but with all of its\n * properties allowed to be `undefined`.\n *\n * Like TypeScript's `Partial` utility.\n */\n\nfunction partial(struct) {\n const schema = struct instanceof Struct ? { ...struct.schema\n } : { ...struct\n };\n\n for (const key in schema) {\n schema[key] = optional(schema[key]);\n }\n\n return object(schema);\n}\n/**\n * Create a new struct based on an existing object struct, but only including\n * specific properties.\n *\n * Like TypeScript's `Pick` utility.\n */\n\nfunction pick(struct, keys) {\n const {\n schema\n } = struct;\n const subschema = {};\n\n for (const key of keys) {\n subschema[key] = schema[key];\n }\n\n return object(subschema);\n}\n/**\n * Define a new struct type with a custom validation function.\n *\n * @deprecated This function has been renamed to `define`.\n */\n\nfunction struct(name, validator) {\n console.warn('superstruct@0.11 - The `struct` helper has been renamed to `define`.');\n return define(name, validator);\n}\n\n/**\n * Ensure that any value passes validation.\n */\n\nfunction any() {\n return define('any', () => true);\n}\nfunction array(Element) {\n return new Struct({\n type: 'array',\n schema: Element,\n\n *entries(value) {\n if (Element && Array.isArray(value)) {\n for (const [i, v] of value.entries()) {\n yield [i, v, Element];\n }\n }\n },\n\n coercer(value) {\n return Array.isArray(value) ? value.slice() : value;\n },\n\n validator(value) {\n return Array.isArray(value) || \"Expected an array value, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value is a bigint.\n */\n\nfunction bigint() {\n return define('bigint', value => {\n return typeof value === 'bigint';\n });\n}\n/**\n * Ensure that a value is a boolean.\n */\n\nfunction boolean() {\n return define('boolean', value => {\n return typeof value === 'boolean';\n });\n}\n/**\n * Ensure that a value is a valid `Date`.\n *\n * Note: this also ensures that the value is *not* an invalid `Date` object,\n * which can occur when parsing a date fails but still returns a `Date`.\n */\n\nfunction date() {\n return define('date', value => {\n return value instanceof Date && !isNaN(value.getTime()) || \"Expected a valid `Date` object, but received: \" + print(value);\n });\n}\nfunction enums(values) {\n const schema = {};\n const description = values.map(v => print(v)).join();\n\n for (const key of values) {\n schema[key] = key;\n }\n\n return new Struct({\n type: 'enums',\n schema,\n\n validator(value) {\n return values.includes(value) || \"Expected one of `\" + description + \"`, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value is a function.\n */\n\nfunction func() {\n return define('func', value => {\n return typeof value === 'function' || \"Expected a function, but received: \" + print(value);\n });\n}\n/**\n * Ensure that a value is an instance of a specific class.\n */\n\nfunction instance(Class) {\n return define('instance', value => {\n return value instanceof Class || \"Expected a `\" + Class.name + \"` instance, but received: \" + print(value);\n });\n}\n/**\n * Ensure that a value is an integer.\n */\n\nfunction integer() {\n return define('integer', value => {\n return typeof value === 'number' && !isNaN(value) && Number.isInteger(value) || \"Expected an integer, but received: \" + print(value);\n });\n}\n/**\n * Ensure that a value matches all of a set of types.\n */\n\nfunction intersection(Structs) {\n return new Struct({\n type: 'intersection',\n schema: null,\n\n *entries(value, ctx) {\n for (const S of Structs) {\n yield* S.entries(value, ctx);\n }\n },\n\n *validator(value, ctx) {\n for (const S of Structs) {\n yield* S.validator(value, ctx);\n }\n },\n\n *refiner(value, ctx) {\n for (const S of Structs) {\n yield* S.refiner(value, ctx);\n }\n }\n\n });\n}\nfunction literal(constant) {\n const description = print(constant);\n const t = typeof constant;\n return new Struct({\n type: 'literal',\n schema: t === 'string' || t === 'number' || t === 'boolean' ? constant : null,\n\n validator(value) {\n return value === constant || \"Expected the literal `\" + description + \"`, but received: \" + print(value);\n }\n\n });\n}\nfunction map(Key, Value) {\n return new Struct({\n type: 'map',\n schema: null,\n\n *entries(value) {\n if (Key && Value && value instanceof Map) {\n for (const [k, v] of value.entries()) {\n yield [k, k, Key];\n yield [k, v, Value];\n }\n }\n },\n\n coercer(value) {\n return value instanceof Map ? new Map(value) : value;\n },\n\n validator(value) {\n return value instanceof Map || \"Expected a `Map` object, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that no value ever passes validation.\n */\n\nfunction never() {\n return define('never', () => false);\n}\n/**\n * Augment an existing struct to allow `null` values.\n */\n\nfunction nullable(struct) {\n return new Struct({ ...struct,\n validator: (value, ctx) => value === null || struct.validator(value, ctx),\n refiner: (value, ctx) => value === null || struct.refiner(value, ctx)\n });\n}\n/**\n * Ensure that a value is a number.\n */\n\nfunction number() {\n return define('number', value => {\n return typeof value === 'number' && !isNaN(value) || \"Expected a number, but received: \" + print(value);\n });\n}\nfunction object(schema) {\n const knowns = schema ? Object.keys(schema) : [];\n const Never = never();\n return new Struct({\n type: 'object',\n schema: schema ? schema : null,\n\n *entries(value) {\n if (schema && isObject(value)) {\n const unknowns = new Set(Object.keys(value));\n\n for (const key of knowns) {\n unknowns.delete(key);\n yield [key, value[key], schema[key]];\n }\n\n for (const key of unknowns) {\n yield [key, value[key], Never];\n }\n }\n },\n\n validator(value) {\n return isObject(value) || \"Expected an object, but received: \" + print(value);\n },\n\n coercer(value) {\n return isObject(value) ? { ...value\n } : value;\n }\n\n });\n}\n/**\n * Augment a struct to allow `undefined` values.\n */\n\nfunction optional(struct) {\n return new Struct({ ...struct,\n validator: (value, ctx) => value === undefined || struct.validator(value, ctx),\n refiner: (value, ctx) => value === undefined || struct.refiner(value, ctx)\n });\n}\n/**\n * Ensure that a value is an object with keys and values of specific types, but\n * without ensuring any specific shape of properties.\n *\n * Like TypeScript's `Record` utility.\n */\n\nfunction record(Key, Value) {\n return new Struct({\n type: 'record',\n schema: null,\n\n *entries(value) {\n if (isObject(value)) {\n for (const k in value) {\n const v = value[k];\n yield [k, k, Key];\n yield [k, v, Value];\n }\n }\n },\n\n validator(value) {\n return isObject(value) || \"Expected an object, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value is a `RegExp`.\n *\n * Note: this does not test the value against the regular expression! For that\n * you need to use the `pattern()` refinement.\n */\n\nfunction regexp() {\n return define('regexp', value => {\n return value instanceof RegExp;\n });\n}\nfunction set(Element) {\n return new Struct({\n type: 'set',\n schema: null,\n\n *entries(value) {\n if (Element && value instanceof Set) {\n for (const v of value) {\n yield [v, v, Element];\n }\n }\n },\n\n coercer(value) {\n return value instanceof Set ? new Set(value) : value;\n },\n\n validator(value) {\n return value instanceof Set || \"Expected a `Set` object, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value is a string.\n */\n\nfunction string() {\n return define('string', value => {\n return typeof value === 'string' || \"Expected a string, but received: \" + print(value);\n });\n}\n/**\n * Ensure that a value is a tuple of a specific length, and that each of its\n * elements is of a specific type.\n */\n\nfunction tuple(Structs) {\n const Never = never();\n return new Struct({\n type: 'tuple',\n schema: null,\n\n *entries(value) {\n if (Array.isArray(value)) {\n const length = Math.max(Structs.length, value.length);\n\n for (let i = 0; i < length; i++) {\n yield [i, value[i], Structs[i] || Never];\n }\n }\n },\n\n validator(value) {\n return Array.isArray(value) || \"Expected an array, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value has a set of known properties of specific types.\n *\n * Note: Unrecognized properties are allowed and untouched. This is similar to\n * how TypeScript's structural typing works.\n */\n\nfunction type(schema) {\n const keys = Object.keys(schema);\n return new Struct({\n type: 'type',\n schema,\n\n *entries(value) {\n if (isObject(value)) {\n for (const k of keys) {\n yield [k, value[k], schema[k]];\n }\n }\n },\n\n validator(value) {\n return isObject(value) || \"Expected an object, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value matches one of a set of types.\n */\n\nfunction union(Structs) {\n const description = Structs.map(s => s.type).join(' | ');\n return new Struct({\n type: 'union',\n schema: null,\n\n coercer(value, ctx) {\n const firstMatch = Structs.find(s => {\n const [e] = s.validate(value, {\n coerce: true\n });\n return !e;\n }) || unknown();\n return firstMatch.coercer(value, ctx);\n },\n\n validator(value, ctx) {\n const failures = [];\n\n for (const S of Structs) {\n const [...tuples] = run(value, S, ctx);\n const [first] = tuples;\n\n if (!first[0]) {\n return [];\n } else {\n for (const [failure] of tuples) {\n if (failure) {\n failures.push(failure);\n }\n }\n }\n }\n\n return [\"Expected the value to satisfy a union of `\" + description + \"`, but received: \" + print(value), ...failures];\n }\n\n });\n}\n/**\n * Ensure that any value passes validation, without widening its type to `any`.\n */\n\nfunction unknown() {\n return define('unknown', () => true);\n}\n\n/**\n * Augment a `Struct` to add an additional coercion step to its input.\n *\n * This allows you to transform input data before validating it, to increase the\n * likelihood that it passes validation—for example for default values, parsing\n * different formats, etc.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nfunction coerce(struct, condition, coercer) {\n return new Struct({ ...struct,\n coercer: (value, ctx) => {\n return is(value, condition) ? struct.coercer(coercer(value, ctx), ctx) : struct.coercer(value, ctx);\n }\n });\n}\n/**\n * Augment a struct to replace `undefined` values with a default.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nfunction defaulted(struct, fallback, options) {\n if (options === void 0) {\n options = {};\n }\n\n return coerce(struct, unknown(), x => {\n const f = typeof fallback === 'function' ? fallback() : fallback;\n\n if (x === undefined) {\n return f;\n }\n\n if (!options.strict && isPlainObject(x) && isPlainObject(f)) {\n const ret = { ...x\n };\n let changed = false;\n\n for (const key in f) {\n if (ret[key] === undefined) {\n ret[key] = f[key];\n changed = true;\n }\n }\n\n if (changed) {\n return ret;\n }\n }\n\n return x;\n });\n}\n/**\n * Augment a struct to trim string inputs.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nfunction trimmed(struct) {\n return coerce(struct, string(), x => x.trim());\n}\n\n/**\n * Ensure that a string, array, map, or set is empty.\n */\n\nfunction empty(struct) {\n return refine(struct, 'empty', value => {\n const size = getSize(value);\n return size === 0 || \"Expected an empty \" + struct.type + \" but received one with a size of `\" + size + \"`\";\n });\n}\n\nfunction getSize(value) {\n if (value instanceof Map || value instanceof Set) {\n return value.size;\n } else {\n return value.length;\n }\n}\n/**\n * Ensure that a number or date is below a threshold.\n */\n\n\nfunction max(struct, threshold, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n exclusive\n } = options;\n return refine(struct, 'max', value => {\n return exclusive ? value < threshold : value <= threshold || \"Expected a \" + struct.type + \" less than \" + (exclusive ? '' : 'or equal to ') + threshold + \" but received `\" + value + \"`\";\n });\n}\n/**\n * Ensure that a number or date is above a threshold.\n */\n\nfunction min(struct, threshold, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n exclusive\n } = options;\n return refine(struct, 'min', value => {\n return exclusive ? value > threshold : value >= threshold || \"Expected a \" + struct.type + \" greater than \" + (exclusive ? '' : 'or equal to ') + threshold + \" but received `\" + value + \"`\";\n });\n}\n/**\n * Ensure that a string, array, map or set is not empty.\n */\n\nfunction nonempty(struct) {\n return refine(struct, 'nonempty', value => {\n const size = getSize(value);\n return size > 0 || \"Expected a nonempty \" + struct.type + \" but received an empty one\";\n });\n}\n/**\n * Ensure that a string matches a regular expression.\n */\n\nfunction pattern(struct, regexp) {\n return refine(struct, 'pattern', value => {\n return regexp.test(value) || \"Expected a \" + struct.type + \" matching `/\" + regexp.source + \"/` but received \\\"\" + value + \"\\\"\";\n });\n}\n/**\n * Ensure that a string, array, number, date, map, or set has a size (or length, or time) between `min` and `max`.\n */\n\nfunction size(struct, min, max) {\n if (max === void 0) {\n max = min;\n }\n\n const expected = \"Expected a \" + struct.type;\n const of = min === max ? \"of `\" + min + \"`\" : \"between `\" + min + \"` and `\" + max + \"`\";\n return refine(struct, 'size', value => {\n if (typeof value === 'number' || value instanceof Date) {\n return min <= value && value <= max || expected + \" \" + of + \" but received `\" + value + \"`\";\n } else if (value instanceof Map || value instanceof Set) {\n const {\n size\n } = value;\n return min <= size && size <= max || expected + \" with a size \" + of + \" but received one with a size of `\" + size + \"`\";\n } else {\n const {\n length\n } = value;\n return min <= length && length <= max || expected + \" with a length \" + of + \" but received one with a length of `\" + length + \"`\";\n }\n });\n}\n/**\n * Augment a `Struct` to add an additional refinement to the validation.\n *\n * The refiner function is guaranteed to receive a value of the struct's type,\n * because the struct's existing validation will already have passed. This\n * allows you to layer additional validation on top of existing structs.\n */\n\nfunction refine(struct, name, refiner) {\n return new Struct({ ...struct,\n\n *refiner(value, ctx) {\n yield* struct.refiner(value, ctx);\n const result = refiner(value, ctx);\n const failures = toFailures(result, ctx, struct, value);\n\n for (const failure of failures) {\n yield { ...failure,\n refinement: name\n };\n }\n }\n\n });\n}\n\nexport { Struct, StructError, any, array, assert, assign, bigint, boolean, coerce, create, date, defaulted, define, deprecated, dynamic, empty, enums, func, instance, integer, intersection, is, lazy, literal, map, mask, max, min, never, nonempty, nullable, number, object, omit, optional, partial, pattern, pick, record, refine, regexp, set, size, string, struct, trimmed, tuple, type, union, unknown, validate };\n//# sourceMappingURL=index.es.js.map\n",null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nvar SUPPORTED_LOCALE = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str, locale) {\n var lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang)\n return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));\n return lowerCase(str);\n}\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str) {\n return str.toLowerCase();\n}\n//# sourceMappingURL=index.js.map","import { lowerCase } from \"lower-case\";\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { noCase } from \"no-case\";\nexport function dotCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \".\" }, options));\n}\n//# sourceMappingURL=index.js.map",null,null,"import { __assign } from \"tslib\";\nimport { dotCase } from \"dot-case\";\nexport function snakeCase(input, options) {\n if (options === void 0) { options = {}; }\n return dotCase(input, __assign({ delimiter: \"_\" }, options));\n}\n//# sourceMappingURL=index.js.map",null,null,null,null,null,null,"/* The MIT License (MIT)\n *\n * Copyright 2015-2018 Peter A. Bigot\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * Support for translating between Buffer instances and JavaScript\n * native types.\n *\n * {@link module:Layout~Layout|Layout} is the basis of a class\n * hierarchy that associates property names with sequences of encoded\n * bytes.\n *\n * Layouts are supported for these scalar (numeric) types:\n * * {@link module:Layout~UInt|Unsigned integers in little-endian\n * format} with {@link module:Layout.u8|8-bit}, {@link\n * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit},\n * {@link module:Layout.u32|32-bit}, {@link\n * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit}\n * representation ranges;\n * * {@link module:Layout~UIntBE|Unsigned integers in big-endian\n * format} with {@link module:Layout.u16be|16-bit}, {@link\n * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit},\n * {@link module:Layout.u40be|40-bit}, and {@link\n * module:Layout.u48be|48-bit} representation ranges;\n * * {@link module:Layout~Int|Signed integers in little-endian\n * format} with {@link module:Layout.s8|8-bit}, {@link\n * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit},\n * {@link module:Layout.s32|32-bit}, {@link\n * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit}\n * representation ranges;\n * * {@link module:Layout~IntBE|Signed integers in big-endian format}\n * with {@link module:Layout.s16be|16-bit}, {@link\n * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit},\n * {@link module:Layout.s40be|40-bit}, and {@link\n * module:Layout.s48be|48-bit} representation ranges;\n * * 64-bit integral values that decode to an exact (if magnitude is\n * less than 2^53) or nearby integral Number in {@link\n * module:Layout.nu64|unsigned little-endian}, {@link\n * module:Layout.nu64be|unsigned big-endian}, {@link\n * module:Layout.ns64|signed little-endian}, and {@link\n * module:Layout.ns64be|unsigned big-endian} encodings;\n * * 32-bit floating point values with {@link\n * module:Layout.f32|little-endian} and {@link\n * module:Layout.f32be|big-endian} representations;\n * * 64-bit floating point values with {@link\n * module:Layout.f64|little-endian} and {@link\n * module:Layout.f64be|big-endian} representations;\n * * {@link module:Layout.const|Constants} that take no space in the\n * encoded expression.\n *\n * and for these aggregate types:\n * * {@link module:Layout.seq|Sequence}s of instances of a {@link\n * module:Layout~Layout|Layout}, with JavaScript representation as\n * an Array and constant or data-dependent {@link\n * module:Layout~Sequence#count|length};\n * * {@link module:Layout.struct|Structure}s that aggregate a\n * heterogeneous sequence of {@link module:Layout~Layout|Layout}\n * instances, with JavaScript representation as an Object;\n * * {@link module:Layout.union|Union}s that support multiple {@link\n * module:Layout~VariantLayout|variant layouts} over a fixed\n * (padded) or variable (not padded) span of bytes, using an\n * unsigned integer at the start of the data or a separate {@link\n * module:Layout.unionLayoutDiscriminator|layout element} to\n * determine which layout to use when interpreting the buffer\n * contents;\n * * {@link module:Layout.bits|BitStructure}s that contain a sequence\n * of individual {@link\n * module:Layout~BitStructure#addField|BitField}s packed into an 8,\n * 16, 24, or 32-bit unsigned integer starting at the least- or\n * most-significant bit;\n * * {@link module:Layout.cstr|C strings} of varying length;\n * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link\n * module:Layout~Blob#length|length} raw data.\n *\n * All {@link module:Layout~Layout|Layout} instances are immutable\n * after construction, to prevent internal state from becoming\n * inconsistent.\n *\n * @local Layout\n * @local ExternalLayout\n * @local GreedyCount\n * @local OffsetLayout\n * @local UInt\n * @local UIntBE\n * @local Int\n * @local IntBE\n * @local NearUInt64\n * @local NearUInt64BE\n * @local NearInt64\n * @local NearInt64BE\n * @local Float\n * @local FloatBE\n * @local Double\n * @local DoubleBE\n * @local Sequence\n * @local Structure\n * @local UnionDiscriminator\n * @local UnionLayoutDiscriminator\n * @local Union\n * @local VariantLayout\n * @local BitStructure\n * @local BitField\n * @local Boolean\n * @local Blob\n * @local CString\n * @local Constant\n * @local bindConstructorLayout\n * @module Layout\n * @license MIT\n * @author Peter A. Bigot\n * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub}\n */\n\n'use strict';\n\n/**\n * Base class for layout objects.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * Layout#encode|encode} or {@link Layout#decode|decode} functions.\n *\n * @param {Number} span - Initializer for {@link Layout#span|span}. The\n * parameter must be an integer; a negative value signifies that the\n * span is {@link Layout#getSpan|value-specific}.\n *\n * @param {string} [property] - Initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n */\nclass Layout {\n constructor(span, property) {\n if (!Number.isInteger(span)) {\n throw new TypeError('span must be an integer');\n }\n\n /** The span of the layout in bytes.\n *\n * Positive values are generally expected.\n *\n * Zero will only appear in {@link Constant}s and in {@link\n * Sequence}s where the {@link Sequence#count|count} is zero.\n *\n * A negative value indicates that the span is value-specific, and\n * must be obtained using {@link Layout#getSpan|getSpan}. */\n this.span = span;\n\n /** The property name used when this layout is represented in an\n * Object.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances. If left undefined the span of the unnamed layout will\n * be treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n\n /** Function to create an Object into which decoded properties will\n * be written.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances, which means:\n * * {@link Structure}\n * * {@link Union}\n * * {@link VariantLayout}\n * * {@link BitStructure}\n *\n * If left undefined the JavaScript representation of these layouts\n * will be Object instances.\n *\n * See {@link bindConstructorLayout}.\n */\n makeDestinationObject() {\n return {};\n }\n\n /**\n * Decode from a Buffer into an JavaScript value.\n *\n * @param {Buffer} b - the buffer from which encoded data is read.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {(Number|Array|Object)} - the value of the decoded data.\n *\n * @abstract\n */\n decode(b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Encode a JavaScript value into a Buffer.\n *\n * @param {(Number|Array|Object)} src - the value to be encoded into\n * the buffer. The type accepted depends on the (sub-)type of {@link\n * Layout}.\n *\n * @param {Buffer} b - the buffer into which encoded data will be\n * written.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {Number} - the number of bytes encoded, including the\n * space skipped for internal padding, but excluding data such as\n * {@link Sequence#count|lengths} when stored {@link\n * ExternalLayout|externally}. This is the adjustment to `offset`\n * producing the offset where data for the next layout would be\n * written.\n *\n * @abstract\n */\n encode(src, b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Calculate the span of a specific instance of a layout.\n *\n * @param {Buffer} b - the buffer that contains an encoded instance.\n *\n * @param {Number} [offset] - the offset at which the encoded instance\n * starts. If absent a zero offset is inferred.\n *\n * @return {Number} - the number of bytes covered by the layout\n * instance. If this method is not overridden in a subclass the\n * definition-time constant {@link Layout#span|span} will be\n * returned.\n *\n * @throws {RangeError} - if the length of the value cannot be\n * determined.\n */\n getSpan(b, offset) {\n if (0 > this.span) {\n throw new RangeError('indeterminate span');\n }\n return this.span;\n }\n\n /**\n * Replicate the layout using a new property.\n *\n * This function must be used to get a structurally-equivalent layout\n * with a different name since all {@link Layout} instances are\n * immutable.\n *\n * **NOTE** This is a shallow copy. All fields except {@link\n * Layout#property|property} are strictly equal to the origin layout.\n *\n * @param {String} property - the value for {@link\n * Layout#property|property} in the replica.\n *\n * @returns {Layout} - the copy with {@link Layout#property|property}\n * set to `property`.\n */\n replicate(property) {\n const rv = Object.create(this.constructor.prototype);\n Object.assign(rv, this);\n rv.property = property;\n return rv;\n }\n\n /**\n * Create an object from layout properties and an array of values.\n *\n * **NOTE** This function returns `undefined` if invoked on a layout\n * that does not return its value as an Object. Objects are\n * returned for things that are a {@link Structure}, which includes\n * {@link VariantLayout|variant layouts} if they are structures, and\n * excludes {@link Union}s. If you want this feature for a union\n * you must use {@link Union.getVariant|getVariant} to select the\n * desired layout.\n *\n * @param {Array} values - an array of values that correspond to the\n * default order for properties. As with {@link Layout#decode|decode}\n * layout elements that have no property name are skipped when\n * iterating over the array values. Only the top-level properties are\n * assigned; arguments are not assigned to properties of contained\n * layouts. Any unused values are ignored.\n *\n * @return {(Object|undefined)}\n */\n fromArray(values) {\n return undefined;\n }\n}\nexports.Layout = Layout;\n\n/* Provide text that carries a name (such as for a function that will\n * be throwing an error) annotated with the property of a given layout\n * (such as one for which the value was unacceptable).\n *\n * @ignore */\nfunction nameWithProperty(name, lo) {\n if (lo.property) {\n return name + '[' + lo.property + ']';\n }\n return name;\n}\nexports.nameWithProperty = nameWithProperty;\n\n/**\n * Augment a class so that instances can be encoded/decoded using a\n * given layout.\n *\n * Calling this function couples `Class` with `layout` in several ways:\n *\n * * `Class.layout_` becomes a static member property equal to `layout`;\n * * `layout.boundConstructor_` becomes a static member property equal\n * to `Class`;\n * * The {@link Layout#makeDestinationObject|makeDestinationObject()}\n * property of `layout` is set to a function that returns a `new\n * Class()`;\n * * `Class.decode(b, offset)` becomes a static member function that\n * delegates to {@link Layout#decode|layout.decode}. The\n * synthesized function may be captured and extended.\n * * `Class.prototype.encode(b, offset)` provides an instance member\n * function that delegates to {@link Layout#encode|layout.encode}\n * with `src` set to `this`. The synthesized function may be\n * captured and extended, but when the extension is invoked `this`\n * must be explicitly bound to the instance.\n *\n * @param {class} Class - a JavaScript class with a nullary\n * constructor.\n *\n * @param {Layout} layout - the {@link Layout} instance used to encode\n * instances of `Class`.\n */\nfunction bindConstructorLayout(Class, layout) {\n if ('function' !== typeof Class) {\n throw new TypeError('Class must be constructor');\n }\n if (Class.hasOwnProperty('layout_')) {\n throw new Error('Class is already bound to a layout');\n }\n if (!(layout && (layout instanceof Layout))) {\n throw new TypeError('layout must be a Layout');\n }\n if (layout.hasOwnProperty('boundConstructor_')) {\n throw new Error('layout is already bound to a constructor');\n }\n Class.layout_ = layout;\n layout.boundConstructor_ = Class;\n layout.makeDestinationObject = (() => new Class());\n Object.defineProperty(Class.prototype, 'encode', {\n value: function(b, offset) {\n return layout.encode(this, b, offset);\n },\n writable: true,\n });\n Object.defineProperty(Class, 'decode', {\n value: function(b, offset) {\n return layout.decode(b, offset);\n },\n writable: true,\n });\n}\nexports.bindConstructorLayout = bindConstructorLayout;\n\n/**\n * An object that behaves like a layout but does not consume space\n * within its containing layout.\n *\n * This is primarily used to obtain metadata about a member, such as a\n * {@link OffsetLayout} that can provide data about a {@link\n * Layout#getSpan|value-specific span}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support {@link\n * ExternalLayout#isCount|isCount} or other {@link Layout} functions.\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n * @augments {Layout}\n */\nclass ExternalLayout extends Layout {\n /**\n * Return `true` iff the external layout decodes to an unsigned\n * integer layout.\n *\n * In that case it can be used as the source of {@link\n * Sequence#count|Sequence counts}, {@link Blob#length|Blob lengths},\n * or as {@link UnionLayoutDiscriminator#layout|external union\n * discriminators}.\n *\n * @abstract\n */\n isCount() {\n throw new Error('ExternalLayout is abstract');\n }\n}\n\n/**\n * An {@link ExternalLayout} that determines its {@link\n * Layout#decode|value} based on offset into and length of the buffer\n * on which it is invoked.\n *\n * *Factory*: {@link module:Layout.greedy|greedy}\n *\n * @param {Number} [elementSpan] - initializer for {@link\n * GreedyCount#elementSpan|elementSpan}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {ExternalLayout}\n */\nclass GreedyCount extends ExternalLayout {\n constructor(elementSpan, property) {\n if (undefined === elementSpan) {\n elementSpan = 1;\n }\n if ((!Number.isInteger(elementSpan)) || (0 >= elementSpan)) {\n throw new TypeError('elementSpan must be a (positive) integer');\n }\n super(-1, property);\n\n /** The layout for individual elements of the sequence. The value\n * must be a positive integer. If not provided, the value will be\n * 1. */\n this.elementSpan = elementSpan;\n }\n\n /** @override */\n isCount() {\n return true;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const rem = b.length - offset;\n return Math.floor(rem / this.elementSpan);\n }\n\n /** @override */\n encode(src, b, offset) {\n return 0;\n }\n}\n\n/**\n * An {@link ExternalLayout} that supports accessing a {@link Layout}\n * at a fixed offset from the start of another Layout. The offset may\n * be before, within, or after the base layout.\n *\n * *Factory*: {@link module:Layout.offset|offset}\n *\n * @param {Layout} layout - initializer for {@link\n * OffsetLayout#layout|layout}, modulo `property`.\n *\n * @param {Number} [offset] - Initializes {@link\n * OffsetLayout#offset|offset}. Defaults to zero.\n *\n * @param {string} [property] - Optional new property name for a\n * {@link Layout#replicate| replica} of `layout` to be used as {@link\n * OffsetLayout#layout|layout}. If not provided the `layout` is used\n * unchanged.\n *\n * @augments {Layout}\n */\nclass OffsetLayout extends ExternalLayout {\n constructor(layout, offset, property) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n\n if (undefined === offset) {\n offset = 0;\n } else if (!Number.isInteger(offset)) {\n throw new TypeError('offset must be integer or undefined');\n }\n\n super(layout.span, property || layout.property);\n\n /** The subordinated layout. */\n this.layout = layout;\n\n /** The location of {@link OffsetLayout#layout} relative to the\n * start of another layout.\n *\n * The value may be positive or negative, but an error will thrown\n * if at the point of use it goes outside the span of the Buffer\n * being accessed. */\n this.offset = offset;\n }\n\n /** @override */\n isCount() {\n return ((this.layout instanceof UInt)\n || (this.layout instanceof UIntBE));\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.decode(b, offset + this.offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.encode(src, b, offset + this.offset);\n }\n}\n\n/**\n * Represent an unsigned integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.u8|u8}, {@link\n * module:Layout.u16|u16}, {@link module:Layout.u24|u24}, {@link\n * module:Layout.u32|u32}, {@link module:Layout.u40|u40}, {@link\n * module:Layout.u48|u48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UInt extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntLE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntLE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent an unsigned integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.u8be|u8be}, {@link\n * module:Layout.u16be|u16be}, {@link module:Layout.u24be|u24be},\n * {@link module:Layout.u32be|u32be}, {@link\n * module:Layout.u40be|u40be}, {@link module:Layout.u48be|u48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UIntBE extends Layout {\n constructor(span, property) {\n super( span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntBE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntBE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent a signed integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.s8|s8}, {@link\n * module:Layout.s16|s16}, {@link module:Layout.s24|s24}, {@link\n * module:Layout.s32|s32}, {@link module:Layout.s40|s40}, {@link\n * module:Layout.s48|s48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Int extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readIntLE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeIntLE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent a signed integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.s8be|s8be}, {@link\n * module:Layout.s16be|s16be}, {@link module:Layout.s24be|s24be},\n * {@link module:Layout.s32be|s32be}, {@link\n * module:Layout.s40be|s40be}, {@link module:Layout.s48be|s48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass IntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readIntBE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeIntBE(src, offset, this.span);\n return this.span;\n }\n}\n\nconst V2E32 = Math.pow(2, 32);\n\n/* True modulus high and low 32-bit words, where low word is always\n * non-negative. */\nfunction divmodInt64(src) {\n const hi32 = Math.floor(src / V2E32);\n const lo32 = src - (hi32 * V2E32);\n return {hi32, lo32};\n}\n/* Reconstruct Number from quotient and non-negative remainder */\nfunction roundedInt64(hi32, lo32) {\n return hi32 * V2E32 + lo32;\n}\n\n/**\n * Represent an unsigned 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64|nu64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readUInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeUInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent an unsigned 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64be|nu64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const hi32 = b.readUInt32BE(offset);\n const lo32 = b.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32BE(split.hi32, offset);\n b.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a signed 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64|ns64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a signed 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64be|ns64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const hi32 = b.readInt32BE(offset);\n const lo32 = b.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeInt32BE(split.hi32, offset);\n b.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a 32-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f32|f32}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Float extends Layout {\n constructor(property) {\n super(4, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readFloatLE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeFloatLE(src, offset);\n return 4;\n }\n}\n\n/**\n * Represent a 32-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f32be|f32be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass FloatBE extends Layout {\n constructor(property) {\n super(4, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readFloatBE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeFloatBE(src, offset);\n return 4;\n }\n}\n\n/**\n * Represent a 64-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f64|f64}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Double extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readDoubleLE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeDoubleLE(src, offset);\n return 8;\n }\n}\n\n/**\n * Represent a 64-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f64be|f64be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass DoubleBE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readDoubleBE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeDoubleBE(src, offset);\n return 8;\n }\n}\n\n/**\n * Represent a contiguous sequence of a specific layout as an Array.\n *\n * *Factory*: {@link module:Layout.seq|seq}\n *\n * @param {Layout} elementLayout - initializer for {@link\n * Sequence#elementLayout|elementLayout}.\n *\n * @param {(Number|ExternalLayout)} count - initializer for {@link\n * Sequence#count|count}. The parameter must be either a positive\n * integer or an instance of {@link ExternalLayout}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Sequence extends Layout {\n constructor(elementLayout, count, property) {\n if (!(elementLayout instanceof Layout)) {\n throw new TypeError('elementLayout must be a Layout');\n }\n if (!(((count instanceof ExternalLayout) && count.isCount())\n || (Number.isInteger(count) && (0 <= count)))) {\n throw new TypeError('count must be non-negative integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if ((!(count instanceof ExternalLayout))\n && (0 < elementLayout.span)) {\n span = count * elementLayout.span;\n }\n\n super(span, property);\n\n /** The layout for individual elements of the sequence. */\n this.elementLayout = elementLayout;\n\n /** The number of elements in the sequence.\n *\n * This will be either a non-negative integer or an instance of\n * {@link ExternalLayout} for which {@link\n * ExternalLayout#isCount|isCount()} is `true`. */\n this.count = count;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let span = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n if (0 < this.elementLayout.span) {\n span = count * this.elementLayout.span;\n } else {\n let idx = 0;\n while (idx < count) {\n span += this.elementLayout.getSpan(b, offset + span);\n ++idx;\n }\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const rv = [];\n let i = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n while (i < count) {\n rv.push(this.elementLayout.decode(b, offset));\n offset += this.elementLayout.getSpan(b, offset);\n i += 1;\n }\n return rv;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Sequence}.\n *\n * **NOTE** If `src` is shorter than {@link Sequence#count|count} then\n * the unused space in the buffer is left unchanged. If `src` is\n * longer than {@link Sequence#count|count} the unneeded elements are\n * ignored.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const elo = this.elementLayout;\n const span = src.reduce((span, v) => {\n return span + elo.encode(v, b, offset + span);\n }, 0);\n if (this.count instanceof ExternalLayout) {\n this.count.encode(src.length, b, offset);\n }\n return span;\n }\n}\n\n/**\n * Represent a contiguous sequence of arbitrary layout elements as an\n * Object.\n *\n * *Factory*: {@link module:Layout.struct|struct}\n *\n * **NOTE** The {@link Layout#span|span} of the structure is variable\n * if any layout in {@link Structure#fields|fields} has a variable\n * span. When {@link Layout#encode|encoding} we must have a value for\n * all variable-length fields, or we wouldn't be able to figure out\n * how much space to use for storage. We can only identify the value\n * for a field when it has a {@link Layout#property|property}. As\n * such, although a structure may contain both unnamed fields and\n * variable-length fields, it cannot contain an unnamed\n * variable-length field.\n *\n * @param {Layout[]} fields - initializer for {@link\n * Structure#fields|fields}. An error is raised if this contains a\n * variable-length field for which a {@link Layout#property|property}\n * is not defined.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @param {Boolean} [decodePrefixes] - initializer for {@link\n * Structure#decodePrefixes|property}.\n *\n * @throws {Error} - if `fields` contains an unnamed variable-length\n * layout.\n *\n * @augments {Layout}\n */\nclass Structure extends Layout {\n constructor(fields, property, decodePrefixes) {\n if (!(Array.isArray(fields)\n && fields.reduce((acc, v) => acc && (v instanceof Layout), true))) {\n throw new TypeError('fields must be array of Layout instances');\n }\n if (('boolean' === typeof property)\n && (undefined === decodePrefixes)) {\n decodePrefixes = property;\n property = undefined;\n }\n\n /* Verify absence of unnamed variable-length fields. */\n for (const fd of fields) {\n if ((0 > fd.span)\n && (undefined === fd.property)) {\n throw new Error('fields cannot contain unnamed variable-length layout');\n }\n }\n\n let span = -1;\n try {\n span = fields.reduce((span, fd) => span + fd.getSpan(), 0);\n } catch (e) {\n }\n super(span, property);\n\n /** The sequence of {@link Layout} values that comprise the\n * structure.\n *\n * The individual elements need not be the same type, and may be\n * either scalar or aggregate layouts. If a member layout leaves\n * its {@link Layout#property|property} undefined the\n * corresponding region of the buffer associated with the element\n * will not be mutated.\n *\n * @type {Layout[]} */\n this.fields = fields;\n\n /** Control behavior of {@link Layout#decode|decode()} given short\n * buffers.\n *\n * In some situations a structure many be extended with additional\n * fields over time, with older installations providing only a\n * prefix of the full structure. If this property is `true`\n * decoding will accept those buffers and leave subsequent fields\n * undefined, as long as the buffer ends at a field boundary.\n * Defaults to `false`. */\n this.decodePrefixes = !!decodePrefixes;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let span = 0;\n try {\n span = this.fields.reduce((span, fd) => {\n const fsp = fd.getSpan(b, offset);\n offset += fsp;\n return span + fsp;\n }, 0);\n } catch (e) {\n throw new RangeError('indeterminate span');\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b, offset);\n }\n offset += fd.getSpan(b, offset);\n if (this.decodePrefixes\n && (b.length === offset)) {\n break;\n }\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Structure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the buffer is\n * left unmodified. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const firstOffset = offset;\n let lastOffset = 0;\n let lastWrote = 0;\n for (const fd of this.fields) {\n let span = fd.span;\n lastWrote = (0 < span) ? span : 0;\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n lastWrote = fd.encode(fv, b, offset);\n if (0 > span) {\n /* Read the as-encoded span, which is not necessarily the\n * same as what we wrote. */\n span = fd.getSpan(b, offset);\n }\n }\n }\n lastOffset = offset;\n offset += span;\n }\n /* Use (lastOffset + lastWrote) instead of offset because the last\n * item may have had a dynamic length and we don't want to include\n * the padding between it and the end of the space reserved for\n * it. */\n return (lastOffset + lastWrote) - firstOffset;\n }\n\n /** @override */\n fromArray(values) {\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if ((undefined !== fd.property)\n && (0 < values.length)) {\n dest[fd.property] = values.shift();\n }\n }\n return dest;\n }\n\n /**\n * Get access to the layout of a given property.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Layout} - the layout associated with `property`, or\n * undefined if there is no such property.\n */\n layoutFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n }\n\n /**\n * Get the offset of a structure member.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Number} - the offset in bytes to the start of `property`\n * within the structure, or undefined if `property` is not a field\n * within the structure. If the property is a member but follows a\n * variable-length structure member a negative number will be\n * returned.\n */\n offsetOf(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n let offset = 0;\n for (const fd of this.fields) {\n if (fd.property === property) {\n return offset;\n }\n if (0 > fd.span) {\n offset = -1;\n } else if (0 <= offset) {\n offset += fd.span;\n }\n }\n }\n}\n\n/**\n * An object that can provide a {@link\n * Union#discriminator|discriminator} API for {@link Union}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * UnionDiscriminator#encode|encode} or {@link\n * UnionDiscriminator#decode|decode} functions.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}.\n *\n * @abstract\n */\nclass UnionDiscriminator {\n constructor(property) {\n /** The {@link Layout#property|property} to be used when the\n * discriminator is referenced in isolation (generally when {@link\n * Union#decode|Union decode} cannot delegate to a specific\n * variant). */\n this.property = property;\n }\n\n /** Analog to {@link Layout#decode|Layout decode} for union discriminators.\n *\n * The implementation of this method need not reference the buffer if\n * variant information is available through other means. */\n decode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n\n /** Analog to {@link Layout#decode|Layout encode} for union discriminators.\n *\n * The implementation of this method need not store the value if\n * variant information is maintained through other means. */\n encode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n}\n\n/**\n * An object that can provide a {@link\n * UnionDiscriminator|discriminator API} for {@link Union} using an\n * unsigned integral {@link Layout} instance located either inside or\n * outside the union.\n *\n * @param {ExternalLayout} layout - initializes {@link\n * UnionLayoutDiscriminator#layout|layout}. Must satisfy {@link\n * ExternalLayout#isCount|isCount()}.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}, superseding the property\n * from `layout`, but defaulting to `variant` if neither `property`\n * nor layout provide a property name.\n *\n * @augments {UnionDiscriminator}\n */\nclass UnionLayoutDiscriminator extends UnionDiscriminator {\n constructor(layout, property) {\n if (!((layout instanceof ExternalLayout)\n && layout.isCount())) {\n throw new TypeError('layout must be an unsigned integer ExternalLayout');\n }\n\n super(property || layout.property || 'variant');\n\n /** The {@link ExternalLayout} used to access the discriminator\n * value. */\n this.layout = layout;\n }\n\n /** Delegate decoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n decode(b, offset) {\n return this.layout.decode(b, offset);\n }\n\n /** Delegate encoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n encode(src, b, offset) {\n return this.layout.encode(src, b, offset);\n }\n}\n\n/**\n * Represent any number of span-compatible layouts.\n *\n * *Factory*: {@link module:Layout.union|union}\n *\n * If the union has a {@link Union#defaultLayout|default layout} that\n * layout must have a non-negative {@link Layout#span|span}. The span\n * of a fixed-span union includes its {@link\n * Union#discriminator|discriminator} if the variant is a {@link\n * Union#usesPrefixDiscriminator|prefix of the union}, plus the span\n * of its {@link Union#defaultLayout|default layout}.\n *\n * If the union does not have a default layout then the encoded span\n * of the union depends on the encoded span of its variant (which may\n * be fixed or variable).\n *\n * {@link VariantLayout#layout|Variant layout}s are added through\n * {@link Union#addVariant|addVariant}. If the union has a default\n * layout, the span of the {@link VariantLayout#layout|layout\n * contained by the variant} must not exceed the span of the {@link\n * Union#defaultLayout|default layout} (minus the span of a {@link\n * Union#usesPrefixDiscriminator|prefix disriminator}, if used). The\n * span of the variant will equal the span of the union itself.\n *\n * The variant for a buffer can only be identified from the {@link\n * Union#discriminator|discriminator} {@link\n * UnionDiscriminator#property|property} (in the case of the {@link\n * Union#defaultLayout|default layout}), or by using {@link\n * Union#getVariant|getVariant} and examining the resulting {@link\n * VariantLayout} instance.\n *\n * A variant compatible with a JavaScript object can be identified\n * using {@link Union#getSourceVariant|getSourceVariant}.\n *\n * @param {(UnionDiscriminator|ExternalLayout|Layout)} discr - How to\n * identify the layout used to interpret the union contents. The\n * parameter must be an instance of {@link UnionDiscriminator}, an\n * {@link ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}, or {@link UInt} (or {@link\n * UIntBE}). When a non-external layout element is passed the layout\n * appears at the start of the union. In all cases the (synthesized)\n * {@link UnionDiscriminator} instance is recorded as {@link\n * Union#discriminator|discriminator}.\n *\n * @param {(Layout|null)} defaultLayout - initializer for {@link\n * Union#defaultLayout|defaultLayout}. If absent defaults to `null`.\n * If `null` there is no default layout: the union has data-dependent\n * length and attempts to decode or encode unrecognized variants will\n * throw an exception. A {@link Layout} instance must have a\n * non-negative {@link Layout#span|span}, and if it lacks a {@link\n * Layout#property|property} the {@link\n * Union#defaultLayout|defaultLayout} will be a {@link\n * Layout#replicate|replica} with property `content`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Union extends Layout {\n constructor(discr, defaultLayout, property) {\n const upv = ((discr instanceof UInt)\n || (discr instanceof UIntBE));\n if (upv) {\n discr = new UnionLayoutDiscriminator(new OffsetLayout(discr));\n } else if ((discr instanceof ExternalLayout)\n && discr.isCount()) {\n discr = new UnionLayoutDiscriminator(discr);\n } else if (!(discr instanceof UnionDiscriminator)) {\n throw new TypeError('discr must be a UnionDiscriminator '\n + 'or an unsigned integer layout');\n }\n if (undefined === defaultLayout) {\n defaultLayout = null;\n }\n if (!((null === defaultLayout)\n || (defaultLayout instanceof Layout))) {\n throw new TypeError('defaultLayout must be null or a Layout');\n }\n if (null !== defaultLayout) {\n if (0 > defaultLayout.span) {\n throw new Error('defaultLayout must have constant span');\n }\n if (undefined === defaultLayout.property) {\n defaultLayout = defaultLayout.replicate('content');\n }\n }\n\n /* The union span can be estimated only if there's a default\n * layout. The union spans its default layout, plus any prefix\n * variant layout. By construction both layouts, if present, have\n * non-negative span. */\n let span = -1;\n if (defaultLayout) {\n span = defaultLayout.span;\n if ((0 <= span) && upv) {\n span += discr.layout.span;\n }\n }\n super(span, property);\n\n /** The interface for the discriminator value in isolation.\n *\n * This a {@link UnionDiscriminator} either passed to the\n * constructor or synthesized from the `discr` constructor\n * argument. {@link\n * Union#usesPrefixDiscriminator|usesPrefixDiscriminator} will be\n * `true` iff the `discr` parameter was a non-offset {@link\n * Layout} instance. */\n this.discriminator = discr;\n\n /** `true` if the {@link Union#discriminator|discriminator} is the\n * first field in the union.\n *\n * If `false` the discriminator is obtained from somewhere\n * else. */\n this.usesPrefixDiscriminator = upv;\n\n /** The layout for non-discriminator content when the value of the\n * discriminator is not recognized.\n *\n * This is the value passed to the constructor. It is\n * structurally equivalent to the second component of {@link\n * Union#layout|layout} but may have a different property\n * name. */\n this.defaultLayout = defaultLayout;\n\n /** A registry of allowed variants.\n *\n * The keys are unsigned integers which should be compatible with\n * {@link Union.discriminator|discriminator}. The property value\n * is the corresponding {@link VariantLayout} instances assigned\n * to this union by {@link Union#addVariant|addVariant}.\n *\n * **NOTE** The registry remains mutable so that variants can be\n * {@link Union#addVariant|added} at any time. Users should not\n * manipulate the content of this property. */\n this.registry = {};\n\n /* Private variable used when invoking getSourceVariant */\n let boundGetSourceVariant = this.defaultGetSourceVariant.bind(this);\n\n /** Function to infer the variant selected by a source object.\n *\n * Defaults to {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant} but may\n * be overridden using {@link\n * Union#configGetSourceVariant|configGetSourceVariant}.\n *\n * @param {Object} src - as with {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * @returns {(undefined|VariantLayout)} The default variant\n * (`undefined`) or first registered variant that uses a property\n * available in `src`. */\n this.getSourceVariant = function(src) {\n return boundGetSourceVariant(src);\n };\n\n /** Function to override the implementation of {@link\n * Union#getSourceVariant|getSourceVariant}.\n *\n * Use this if the desired variant cannot be identified using the\n * algorithm of {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * **NOTE** The provided function will be invoked bound to this\n * Union instance, providing local access to {@link\n * Union#registry|registry}.\n *\n * @param {Function} gsv - a function that follows the API of\n * {@link Union#defaultGetSourceVariant|defaultGetSourceVariant}. */\n this.configGetSourceVariant = function(gsv) {\n boundGetSourceVariant = gsv.bind(this);\n };\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n /* Default layouts always have non-negative span, so we don't have\n * one and we have to recognize the variant which will in turn\n * determine the span. */\n const vlo = this.getVariant(b, offset);\n if (!vlo) {\n throw new Error('unable to determine span for unrecognized variant');\n }\n return vlo.getSpan(b, offset);\n }\n\n /**\n * Method to infer a registered Union variant compatible with `src`.\n *\n * The first satisified rule in the following sequence defines the\n * return value:\n * * If `src` has properties matching the Union discriminator and\n * the default layout, `undefined` is returned regardless of the\n * value of the discriminator property (this ensures the default\n * layout will be used);\n * * If `src` has a property matching the Union discriminator, the\n * value of the discriminator identifies a registered variant, and\n * either (a) the variant has no layout, or (b) `src` has the\n * variant's property, then the variant is returned (because the\n * source satisfies the constraints of the variant it identifies);\n * * If `src` does not have a property matching the Union\n * discriminator, but does have a property matching a registered\n * variant, then the variant is returned (because the source\n * matches a variant without an explicit conflict);\n * * An error is thrown (because we either can't identify a variant,\n * or we were explicitly told the variant but can't satisfy it).\n *\n * @param {Object} src - an object presumed to be compatible with\n * the content of the Union.\n *\n * @return {(undefined|VariantLayout)} - as described above.\n *\n * @throws {Error} - if `src` cannot be associated with a default or\n * registered variant.\n */\n defaultGetSourceVariant(src) {\n if (src.hasOwnProperty(this.discriminator.property)) {\n if (this.defaultLayout\n && src.hasOwnProperty(this.defaultLayout.property)) {\n return undefined;\n }\n const vlo = this.registry[src[this.discriminator.property]];\n if (vlo\n && ((!vlo.layout)\n || src.hasOwnProperty(vlo.property))) {\n return vlo;\n }\n } else {\n for (const tag in this.registry) {\n const vlo = this.registry[tag];\n if (src.hasOwnProperty(vlo.property)) {\n return vlo;\n }\n }\n }\n throw new Error('unable to infer src variant');\n }\n\n /** Implement {@link Layout#decode|decode} for {@link Union}.\n *\n * If the variant is {@link Union#addVariant|registered} the return\n * value is an instance of that variant, with no explicit\n * discriminator. Otherwise the {@link Union#defaultLayout|default\n * layout} is used to decode the content. */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let dest;\n const dlo = this.discriminator;\n const discr = dlo.decode(b, offset);\n let clo = this.registry[discr];\n if (undefined === clo) {\n let contentOffset = 0;\n clo = this.defaultLayout;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dest = this.makeDestinationObject();\n dest[dlo.property] = discr;\n dest[clo.property] = this.defaultLayout.decode(b, offset + contentOffset);\n } else {\n dest = clo.decode(b, offset);\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Union}.\n *\n * This API assumes the `src` object is consistent with the union's\n * {@link Union#defaultLayout|default layout}. To encode variants\n * use the appropriate variant-specific {@link VariantLayout#encode}\n * method. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const vlo = this.getSourceVariant(src);\n if (undefined === vlo) {\n const dlo = this.discriminator;\n const clo = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dlo.encode(src[dlo.property], b, offset);\n return contentOffset + clo.encode(src[clo.property], b,\n offset + contentOffset);\n }\n return vlo.encode(src, b, offset);\n }\n\n /** Register a new variant structure within a union. The newly\n * created variant is returned.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} layout - initializer for {@link\n * VariantLayout#layout|layout}.\n *\n * @param {String} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {VariantLayout} */\n addVariant(variant, layout, property) {\n const rv = new VariantLayout(this, variant, layout, property);\n this.registry[variant] = rv;\n return rv;\n }\n\n /**\n * Get the layout associated with a registered variant.\n *\n * If `vb` does not produce a registered variant the function returns\n * `undefined`.\n *\n * @param {(Number|Buffer)} vb - either the variant number, or a\n * buffer from which the discriminator is to be read.\n *\n * @param {Number} offset - offset into `vb` for the start of the\n * union. Used only when `vb` is an instance of {Buffer}.\n *\n * @return {({VariantLayout}|undefined)}\n */\n getVariant(vb, offset) {\n let variant = vb;\n if (Buffer.isBuffer(vb)) {\n if (undefined === offset) {\n offset = 0;\n }\n variant = this.discriminator.decode(vb, offset);\n }\n return this.registry[variant];\n }\n}\n\n/**\n * Represent a specific variant within a containing union.\n *\n * **NOTE** The {@link Layout#span|span} of the variant may include\n * the span of the {@link Union#discriminator|discriminator} used to\n * identify it, but values read and written using the variant strictly\n * conform to the content of {@link VariantLayout#layout|layout}.\n *\n * **NOTE** User code should not invoke this constructor directly. Use\n * the union {@link Union#addVariant|addVariant} helper method.\n *\n * @param {Union} union - initializer for {@link\n * VariantLayout#union|union}.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} [layout] - initializer for {@link\n * VariantLayout#layout|layout}. If absent the variant carries no\n * data.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}. Unlike many other layouts, variant\n * layouts normally include a property name so they can be identified\n * within their containing {@link Union}. The property identifier may\n * be absent only if `layout` is is absent.\n *\n * @augments {Layout}\n */\nclass VariantLayout extends Layout {\n constructor(union, variant, layout, property) {\n if (!(union instanceof Union)) {\n throw new TypeError('union must be a Union');\n }\n if ((!Number.isInteger(variant)) || (0 > variant)) {\n throw new TypeError('variant must be a (non-negative) integer');\n }\n if (('string' === typeof layout)\n && (undefined === property)) {\n property = layout;\n layout = null;\n }\n if (layout) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if ((null !== union.defaultLayout)\n && (0 <= layout.span)\n && (layout.span > union.defaultLayout.span)) {\n throw new Error('variant span exceeds span of containing union');\n }\n if ('string' !== typeof property) {\n throw new TypeError('variant must have a String property');\n }\n }\n let span = union.span;\n if (0 > union.span) {\n span = layout ? layout.span : 0;\n if ((0 <= span) && union.usesPrefixDiscriminator) {\n span += union.discriminator.layout.span;\n }\n }\n super(span, property);\n\n /** The {@link Union} to which this variant belongs. */\n this.union = union;\n\n /** The unsigned integral value identifying this variant within\n * the {@link Union#discriminator|discriminator} of the containing\n * union. */\n this.variant = variant;\n\n /** The {@link Layout} to be used when reading/writing the\n * non-discriminator part of the {@link\n * VariantLayout#union|union}. If `null` the variant carries no\n * data. */\n this.layout = layout || null;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n /* Will be equal to the containing union span if that is not\n * variable. */\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n /* Span is defined solely by the variant (and prefix discriminator) */\n return contentOffset + this.layout.getSpan(b, offset + contentOffset);\n }\n\n /** @override */\n decode(b, offset) {\n const dest = this.makeDestinationObject();\n if (undefined === offset) {\n offset = 0;\n }\n if (this !== this.union.getVariant(b, offset)) {\n throw new Error('variant mismatch');\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout) {\n dest[this.property] = this.layout.decode(b, offset + contentOffset);\n } else if (this.property) {\n dest[this.property] = true;\n } else if (this.union.usesPrefixDiscriminator) {\n dest[this.union.discriminator.property] = this.variant;\n }\n return dest;\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout\n && (!src.hasOwnProperty(this.property))) {\n throw new TypeError('variant lacks property ' + this.property);\n }\n this.union.discriminator.encode(this.variant, b, offset);\n let span = contentOffset;\n if (this.layout) {\n this.layout.encode(src[this.property], b, offset + contentOffset);\n span += this.layout.getSpan(b, offset + contentOffset);\n if ((0 <= this.union.span)\n && (span > this.union.span)) {\n throw new Error('encoded variant overruns containing union');\n }\n }\n return span;\n }\n\n /** Delegate {@link Layout#fromArray|fromArray} to {@link\n * VariantLayout#layout|layout}. */\n fromArray(values) {\n if (this.layout) {\n return this.layout.fromArray(values);\n }\n }\n}\n\n/** JavaScript chose to define bitwise operations as operating on\n * signed 32-bit values in 2's complement form, meaning any integer\n * with bit 31 set is going to look negative. For right shifts that's\n * not a problem, because `>>>` is a logical shift, but for every\n * other bitwise operator we have to compensate for possible negative\n * results. */\nfunction fixBitwiseResult(v) {\n if (0 > v) {\n v += 0x100000000;\n }\n return v;\n}\n\n/**\n * Contain a sequence of bit fields as an unsigned integer.\n *\n * *Factory*: {@link module:Layout.bits|bits}\n *\n * This is a container element; within it there are {@link BitField}\n * instances that provide the extracted properties. The container\n * simply defines the aggregate representation and its bit ordering.\n * The representation is an object containing properties with numeric\n * or {@link Boolean} values.\n *\n * {@link BitField}s are added with the {@link\n * BitStructure#addField|addField} and {@link\n * BitStructure#addBoolean|addBoolean} methods.\n\n * @param {Layout} word - initializer for {@link\n * BitStructure#word|word}. The parameter must be an instance of\n * {@link UInt} (or {@link UIntBE}) that is no more than 4 bytes wide.\n *\n * @param {bool} [msb] - `true` if the bit numbering starts at the\n * most significant bit of the containing word; `false` (default) if\n * it starts at the least significant bit of the containing word. If\n * the parameter at this position is a string and `property` is\n * `undefined` the value of this argument will instead be used as the\n * value of `property`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass BitStructure extends Layout {\n constructor(word, msb, property) {\n if (!((word instanceof UInt)\n || (word instanceof UIntBE))) {\n throw new TypeError('word must be a UInt or UIntBE layout');\n }\n if (('string' === typeof msb)\n && (undefined === property)) {\n property = msb;\n msb = undefined;\n }\n if (4 < word.span) {\n throw new RangeError('word cannot exceed 32 bits');\n }\n super(word.span, property);\n\n /** The layout used for the packed value. {@link BitField}\n * instances are packed sequentially depending on {@link\n * BitStructure#msb|msb}. */\n this.word = word;\n\n /** Whether the bit sequences are packed starting at the most\n * significant bit growing down (`true`), or the least significant\n * bit growing up (`false`).\n *\n * **NOTE** Regardless of this value, the least significant bit of\n * any {@link BitField} value is the least significant bit of the\n * corresponding section of the packed value. */\n this.msb = !!msb;\n\n /** The sequence of {@link BitField} layouts that comprise the\n * packed structure.\n *\n * **NOTE** The array remains mutable to allow fields to be {@link\n * BitStructure#addField|added} after construction. Users should\n * not manipulate the content of this property.*/\n this.fields = [];\n\n /* Storage for the value. Capture a variable instead of using an\n * instance property because we don't want anything to change the\n * value without going through the mutator. */\n let value = 0;\n this._packedSetValue = function(v) {\n value = fixBitwiseResult(v);\n return this;\n };\n this._packedGetValue = function() {\n return value;\n };\n }\n\n /** @override */\n decode(b, offset) {\n const dest = this.makeDestinationObject();\n if (undefined === offset) {\n offset = 0;\n }\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(value);\n }\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link BitStructure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the packed\n * value is left unmodified. Unused bits are also left unmodified. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n fd.encode(fv);\n }\n }\n }\n return this.word.encode(this._packedGetValue(), b, offset);\n }\n\n /** Register a new bitfield with a containing bit structure. The\n * resulting bitfield is returned.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {BitField} */\n addField(bits, property) {\n const bf = new BitField(this, bits, property);\n this.fields.push(bf);\n return bf;\n }\n\n /** As with {@link BitStructure#addField|addField} for single-bit\n * fields with `boolean` value representation.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {Boolean} */\n addBoolean(property) {\n // This is my Boolean, not the Javascript one.\n // eslint-disable-next-line no-new-wrappers\n const bf = new Boolean(this, property);\n this.fields.push(bf);\n return bf;\n }\n\n /**\n * Get access to the bit field for a given property.\n *\n * @param {String} property - the bit field of interest.\n *\n * @return {BitField} - the field associated with `property`, or\n * undefined if there is no such property.\n */\n fieldFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n }\n}\n\n/**\n * Represent a sequence of bits within a {@link BitStructure}.\n *\n * All bit field values are represented as unsigned integers.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addField|addField} helper\n * method.\n *\n * **NOTE** BitField instances are not instances of {@link Layout}\n * since {@link Layout#span|span} measures 8-bit units.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n */\nclass BitField {\n constructor(container, bits, property) {\n if (!(container instanceof BitStructure)) {\n throw new TypeError('container must be a BitStructure');\n }\n if ((!Number.isInteger(bits)) || (0 >= bits)) {\n throw new TypeError('bits must be positive integer');\n }\n const totalBits = 8 * container.span;\n const usedBits = container.fields.reduce((sum, fd) => sum + fd.bits, 0);\n if ((bits + usedBits) > totalBits) {\n throw new Error('bits too long for span remainder ('\n + (totalBits - usedBits) + ' of '\n + totalBits + ' remain)');\n }\n\n /** The {@link BitStructure} instance to which this bit field\n * belongs. */\n this.container = container;\n\n /** The span of this value in bits. */\n this.bits = bits;\n\n /** A mask of {@link BitField#bits|bits} bits isolating value bits\n * that fit within the field.\n *\n * That is, it masks a value that has not yet been shifted into\n * position within its containing packed integer. */\n this.valueMask = (1 << bits) - 1;\n if (32 === bits) { // shifted value out of range\n this.valueMask = 0xFFFFFFFF;\n }\n\n /** The offset of the value within the containing packed unsigned\n * integer. The least significant bit of the packed value is at\n * offset zero, regardless of bit ordering used. */\n this.start = usedBits;\n if (this.container.msb) {\n this.start = totalBits - usedBits - bits;\n }\n\n /** A mask of {@link BitField#bits|bits} isolating the field value\n * within the containing packed unsigned integer. */\n this.wordMask = fixBitwiseResult(this.valueMask << this.start);\n\n /** The property name used when this bitfield is represented in an\n * Object.\n *\n * Intended to be functionally equivalent to {@link\n * Layout#property}.\n *\n * If left undefined the corresponding span of bits will be\n * treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n\n /** Store a value into the corresponding subsequence of the containing\n * bit field. */\n decode() {\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(word & this.wordMask);\n const value = wordValue >>> this.start;\n return value;\n }\n\n /** Store a value into the corresponding subsequence of the containing\n * bit field.\n *\n * **NOTE** This is not a specialization of {@link\n * Layout#encode|Layout.encode} and there is no return value. */\n encode(value) {\n if ((!Number.isInteger(value))\n || (value !== fixBitwiseResult(value & this.valueMask))) {\n throw new TypeError(nameWithProperty('BitField.encode', this)\n + ' value must be integer not exceeding ' + this.valueMask);\n }\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(value << this.start);\n this.container._packedSetValue(fixBitwiseResult(word & ~this.wordMask)\n | wordValue);\n };\n}\n\n/**\n * Represent a single bit within a {@link BitStructure} as a\n * JavaScript boolean.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addBoolean|addBoolean} helper\n * method.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {BitField}\n */\n/* eslint-disable no-extend-native */\nclass Boolean extends BitField {\n constructor(container, property) {\n super(container, 1, property);\n }\n\n /** Override {@link BitField#decode|decode} for {@link Boolean|Boolean}.\n *\n * @returns {boolean} */\n decode(b, offset) {\n return !!BitField.prototype.decode.call(this, b, offset);\n }\n\n /** @override */\n encode(value) {\n if ('boolean' === typeof value) {\n // BitField requires integer values\n value = +value;\n }\n return BitField.prototype.encode.call(this, value);\n }\n}\n/* eslint-enable no-extend-native */\n\n/**\n * Contain a fixed-length block of arbitrary data, represented as a\n * Buffer.\n *\n * *Factory*: {@link module:Layout.blob|blob}\n *\n * @param {(Number|ExternalLayout)} length - initializes {@link\n * Blob#length|length}.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Blob extends Layout {\n constructor(length, property) {\n if (!(((length instanceof ExternalLayout) && length.isCount())\n || (Number.isInteger(length) && (0 <= length)))) {\n throw new TypeError('length must be positive integer '\n + 'or an unsigned integer ExternalLayout');\n }\n\n let span = -1;\n if (!(length instanceof ExternalLayout)) {\n span = length;\n }\n super(span, property);\n\n /** The number of bytes in the blob.\n *\n * This may be a non-negative integer, or an instance of {@link\n * ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}. */\n this.length = length;\n }\n\n /** @override */\n getSpan(b, offset) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return b.slice(offset, offset + span);\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Blob}.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n let span = this.length;\n if (this.length instanceof ExternalLayout) {\n span = src.length;\n }\n if (!(Buffer.isBuffer(src)\n && (span === src.length))) {\n throw new TypeError(nameWithProperty('Blob.encode', this)\n + ' requires (length ' + span + ') Buffer as src');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n b.write(src.toString('hex'), offset, span, 'hex');\n if (this.length instanceof ExternalLayout) {\n this.length.encode(span, b, offset);\n }\n return span;\n }\n}\n\n/**\n * Contain a `NUL`-terminated UTF8 string.\n *\n * *Factory*: {@link module:Layout.cstr|cstr}\n *\n * **NOTE** Any UTF8 string that incorporates a zero-valued byte will\n * not be correctly decoded by this layout.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass CString extends Layout {\n constructor(property) {\n super(-1, property);\n }\n\n /** @override */\n getSpan(b, offset) {\n if (!Buffer.isBuffer(b)) {\n throw new TypeError('b must be a Buffer');\n }\n if (undefined === offset) {\n offset = 0;\n }\n let idx = offset;\n while ((idx < b.length) && (0 !== b[idx])) {\n idx += 1;\n }\n return 1 + idx - offset;\n }\n\n /** @override */\n decode(b, offset, dest) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.getSpan(b, offset);\n return b.slice(offset, offset + span - 1).toString('utf-8');\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = src.toString();\n }\n const srcb = new Buffer(src, 'utf8');\n const span = srcb.length;\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(b, offset);\n b[offset + span] = 0;\n return span + 1;\n }\n}\n\n/**\n * Contain a UTF8 string with implicit length.\n *\n * *Factory*: {@link module:Layout.utf8|utf8}\n *\n * **NOTE** Because the length is implicit in the size of the buffer\n * this layout should be used only in isolation, or in a situation\n * where the length can be expressed by operating on a slice of the\n * containing buffer.\n *\n * @param {Number} [maxSpan] - the maximum length allowed for encoded\n * string content. If not provided there is no bound on the allowed\n * content.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UTF8 extends Layout {\n constructor(maxSpan, property) {\n if (('string' === typeof maxSpan)\n && (undefined === property)) {\n property = maxSpan;\n maxSpan = undefined;\n }\n if (undefined === maxSpan) {\n maxSpan = -1;\n } else if (!Number.isInteger(maxSpan)) {\n throw new TypeError('maxSpan must be an integer');\n }\n\n super(-1, property);\n\n /** The maximum span of the layout in bytes.\n *\n * Positive values are generally expected. Zero is abnormal.\n * Attempts to encode or decode a value that exceeds this length\n * will throw a `RangeError`.\n *\n * A negative value indicates that there is no bound on the length\n * of the content. */\n this.maxSpan = maxSpan;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (!Buffer.isBuffer(b)) {\n throw new TypeError('b must be a Buffer');\n }\n if (undefined === offset) {\n offset = 0;\n }\n return b.length - offset;\n }\n\n /** @override */\n decode(b, offset, dest) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.getSpan(b, offset);\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n return b.slice(offset, offset + span).toString('utf-8');\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = src.toString();\n }\n const srcb = new Buffer(src, 'utf8');\n const span = srcb.length;\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(b, offset);\n return span;\n }\n}\n\n/**\n * Contain a constant value.\n *\n * This layout may be used in cases where a JavaScript value can be\n * inferred without an expression in the binary encoding. An example\n * would be a {@link VariantLayout|variant layout} where the content\n * is implied by the union {@link Union#discriminator|discriminator}.\n *\n * @param {Object|Number|String} value - initializer for {@link\n * Constant#value|value}. If the value is an object (or array) and\n * the application intends the object to remain unchanged regardless\n * of what is done to values decoded by this layout, the value should\n * be frozen prior passing it to this constructor.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Constant extends Layout {\n constructor(value, property) {\n super(0, property);\n\n /** The value produced by this constant when the layout is {@link\n * Constant#decode|decoded}.\n *\n * Any JavaScript value including `null` and `undefined` is\n * permitted.\n *\n * **WARNING** If `value` passed in the constructor was not\n * frozen, it is possible for users of decoded values to change\n * the content of the value. */\n this.value = value;\n }\n\n /** @override */\n decode(b, offset, dest) {\n return this.value;\n }\n\n /** @override */\n encode(src, b, offset) {\n /* Constants take no space */\n return 0;\n }\n}\n\nexports.ExternalLayout = ExternalLayout;\nexports.GreedyCount = GreedyCount;\nexports.OffsetLayout = OffsetLayout;\nexports.UInt = UInt;\nexports.UIntBE = UIntBE;\nexports.Int = Int;\nexports.IntBE = IntBE;\nexports.Float = Float;\nexports.FloatBE = FloatBE;\nexports.Double = Double;\nexports.DoubleBE = DoubleBE;\nexports.Sequence = Sequence;\nexports.Structure = Structure;\nexports.UnionDiscriminator = UnionDiscriminator;\nexports.UnionLayoutDiscriminator = UnionLayoutDiscriminator;\nexports.Union = Union;\nexports.VariantLayout = VariantLayout;\nexports.BitStructure = BitStructure;\nexports.BitField = BitField;\nexports.Boolean = Boolean;\nexports.Blob = Blob;\nexports.CString = CString;\nexports.UTF8 = UTF8;\nexports.Constant = Constant;\n\n/** Factory for {@link GreedyCount}. */\nexports.greedy = ((elementSpan, property) => new GreedyCount(elementSpan, property));\n\n/** Factory for {@link OffsetLayout}. */\nexports.offset = ((layout, offset, property) => new OffsetLayout(layout, offset, property));\n\n/** Factory for {@link UInt|unsigned int layouts} spanning one\n * byte. */\nexports.u8 = (property => new UInt(1, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16 = (property => new UInt(2, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24 = (property => new UInt(3, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32 = (property => new UInt(4, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40 = (property => new UInt(5, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48 = (property => new UInt(6, property));\n\n/** Factory for {@link NearUInt64|little-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64 = (property => new NearUInt64(property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16be = (property => new UIntBE(2, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24be = (property => new UIntBE(3, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32be = (property => new UIntBE(4, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40be = (property => new UIntBE(5, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48be = (property => new UIntBE(6, property));\n\n/** Factory for {@link NearUInt64BE|big-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64be = (property => new NearUInt64BE(property));\n\n/** Factory for {@link Int|signed int layouts} spanning one\n * byte. */\nexports.s8 = (property => new Int(1, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning two bytes. */\nexports.s16 = (property => new Int(2, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning three bytes. */\nexports.s24 = (property => new Int(3, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning four bytes. */\nexports.s32 = (property => new Int(4, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning five bytes. */\nexports.s40 = (property => new Int(5, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning six bytes. */\nexports.s48 = (property => new Int(6, property));\n\n/** Factory for {@link NearInt64|little-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64 = (property => new NearInt64(property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning two bytes. */\nexports.s16be = (property => new IntBE(2, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning three bytes. */\nexports.s24be = (property => new IntBE(3, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning four bytes. */\nexports.s32be = (property => new IntBE(4, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning five bytes. */\nexports.s40be = (property => new IntBE(5, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning six bytes. */\nexports.s48be = (property => new IntBE(6, property));\n\n/** Factory for {@link NearInt64BE|big-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64be = (property => new NearInt64BE(property));\n\n/** Factory for {@link Float|little-endian 32-bit floating point} values. */\nexports.f32 = (property => new Float(property));\n\n/** Factory for {@link FloatBE|big-endian 32-bit floating point} values. */\nexports.f32be = (property => new FloatBE(property));\n\n/** Factory for {@link Double|little-endian 64-bit floating point} values. */\nexports.f64 = (property => new Double(property));\n\n/** Factory for {@link DoubleBE|big-endian 64-bit floating point} values. */\nexports.f64be = (property => new DoubleBE(property));\n\n/** Factory for {@link Structure} values. */\nexports.struct = ((fields, property, decodePrefixes) => new Structure(fields, property, decodePrefixes));\n\n/** Factory for {@link BitStructure} values. */\nexports.bits = ((word, msb, property) => new BitStructure(word, msb, property));\n\n/** Factory for {@link Sequence} values. */\nexports.seq = ((elementLayout, count, property) => new Sequence(elementLayout, count, property));\n\n/** Factory for {@link Union} values. */\nexports.union = ((discr, defaultLayout, property) => new Union(discr, defaultLayout, property));\n\n/** Factory for {@link UnionLayoutDiscriminator} values. */\nexports.unionLayoutDiscriminator = ((layout, property) => new UnionLayoutDiscriminator(layout, property));\n\n/** Factory for {@link Blob} values. */\nexports.blob = ((length, property) => new Blob(length, property));\n\n/** Factory for {@link CString} values. */\nexports.cstr = (property => new CString(property));\n\n/** Factory for {@link UTF8} values. */\nexports.utf8 = ((maxSpan, property) => new UTF8(maxSpan, property));\n\n/** Factory for {@link Constant} values. */\nexports.const = ((value, property) => new Constant(value, property));\n",null,null,null,null,null,null,null,null,"var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"import { ns64, s16, struct } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { PublicKey } from '@solana/web3.js';\nimport type { Mint } from '../../state/mint.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\nexport interface InterestBearingMintConfigState {\n rateAuthority: PublicKey;\n initializationTimestamp: bigint;\n preUpdateAverageRate: number;\n lastUpdateTimestamp: bigint;\n currentRate: number;\n}\n\nexport const InterestBearingMintConfigStateLayout = struct([\n publicKey('rateAuthority'),\n ns64('initializationTimestamp'),\n s16('preUpdateAverageRate'),\n ns64('lastUpdateTimestamp'),\n s16('currentRate'),\n]);\n\nexport const INTEREST_BEARING_MINT_CONFIG_STATE_SIZE = InterestBearingMintConfigStateLayout.span;\n\nexport function getInterestBearingMintConfigState(mint: Mint): InterestBearingMintConfigState | null {\n const extensionData = getExtensionData(ExtensionType.InterestBearingConfig, mint.tlvData);\n if (extensionData !== null) {\n return InterestBearingMintConfigStateLayout.decode(extensionData);\n }\n return null;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TimelockRefundHandler = void 0;\r\nconst Utils_1 = require(\"../../../../utils/Utils\");\r\nclass TimelockRefundHandler {\r\n constructor(address) {\r\n this.address = address;\r\n }\r\n getCommitment(data) {\r\n return data;\r\n }\r\n getWitness(signer, data) {\r\n const expiry = TimelockRefundHandler.getExpiry(data);\r\n const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n if (expiry > currentTimestamp)\r\n throw new Error(\"Not expired yet!\");\r\n return Promise.resolve({ initialTxns: [], witness: [] });\r\n }\r\n getGas() {\r\n return TimelockRefundHandler.gas;\r\n }\r\n static getExpiry(data) {\r\n return (0, Utils_1.bigNumberishToBuffer)(data.refundData, 32).readBigUInt64BE(24);\r\n }\r\n}\r\nexports.TimelockRefundHandler = TimelockRefundHandler;\r\nTimelockRefundHandler.gas = { l1: 500 };\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_content_copy = void 0;\nvar ic_content_copy = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\n },\n \"children\": []\n }]\n};\nexports.ic_content_copy = ic_content_copy;","import { Layout } from '@solana/buffer-layout';\n\nexport interface EncodeDecode {\n decode(buffer: Buffer, offset?: number): T;\n encode(src: T, buffer: Buffer, offset?: number): number;\n}\n\nexport const encodeDecode = (layout: Layout): EncodeDecode => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return { decode, encode };\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapEvent = void 0;\r\nclass SwapEvent {\r\n constructor(escrowHash) {\r\n this.escrowHash = escrowHash;\r\n }\r\n}\r\nexports.SwapEvent = SwapEvent;\r\n",null,"\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaBtcRelay = void 0;\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst SolanaBtcStoredHeader_1 = require(\"./headers/SolanaBtcStoredHeader\");\r\nconst SolanaBtcHeader_1 = require(\"./headers/SolanaBtcHeader\");\r\nconst programIdl = require(\"./program/programIdl.json\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst SolanaProgramBase_1 = require(\"../program/SolanaProgramBase\");\r\nconst SolanaAction_1 = require(\"../base/SolanaAction\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst SolanaFees_1 = require(\"../base/modules/SolanaFees\");\r\nconst BN = require(\"bn.js\");\r\nconst MAX_CLOSE_IX_PER_TX = 10;\r\nfunction serializeBlockHeader(e) {\r\n return new SolanaBtcHeader_1.SolanaBtcHeader({\r\n version: e.getVersion(),\r\n reversedPrevBlockhash: [...buffer_1.Buffer.from(e.getPrevBlockhash(), \"hex\").reverse()],\r\n merkleRoot: [...buffer_1.Buffer.from(e.getMerkleRoot(), \"hex\").reverse()],\r\n timestamp: e.getTimestamp(),\r\n nbits: e.getNbits(),\r\n nonce: e.getNonce(),\r\n hash: buffer_1.Buffer.from(e.getHash(), \"hex\").reverse()\r\n });\r\n}\r\n;\r\nclass SolanaBtcRelay extends SolanaProgramBase_1.SolanaProgramBase {\r\n /**\r\n * Creates initialization action for initializing the btc relay\r\n *\r\n * @param signer\r\n * @param header\r\n * @param epochStart\r\n * @param pastBlocksTimestamps\r\n * @constructor\r\n * @private\r\n */\r\n async Initialize(signer, header, epochStart, pastBlocksTimestamps) {\r\n const serializedBlock = serializeBlockHeader(header);\r\n return new SolanaAction_1.SolanaAction(signer, this, await this.program.methods\r\n .initialize(serializedBlock, header.getHeight(), header.getChainWork(), epochStart, pastBlocksTimestamps)\r\n .accounts({\r\n signer,\r\n mainState: this.BtcRelayMainState,\r\n headerTopic: this.BtcRelayHeader(serializedBlock.hash),\r\n systemProgram: web3_js_1.SystemProgram.programId\r\n })\r\n .instruction());\r\n }\r\n /**\r\n * Creates verify action to be used with the swap program, specifies the action to be firstIxBeforeComputeBudget,\r\n * such that the verify instruction will always be the 0th in the transaction, this is required because\r\n * swap program expects the verify instruction to be at the 0th position\r\n *\r\n * @param signer\r\n * @param reversedTxId\r\n * @param confirmations\r\n * @param position\r\n * @param reversedMerkleProof\r\n * @param committedHeader\r\n */\r\n async Verify(signer, reversedTxId, confirmations, position, reversedMerkleProof, committedHeader) {\r\n return new SolanaAction_1.SolanaAction(signer, this, await this.program.methods\r\n .verifyTransaction(reversedTxId, confirmations, position, reversedMerkleProof, committedHeader)\r\n .accounts({\r\n signer,\r\n mainState: this.BtcRelayMainState\r\n })\r\n .instruction(), null, null, null, true);\r\n }\r\n async CloseForkAccount(signer, forkId) {\r\n return new SolanaAction_1.SolanaAction(signer, this, await this.program.methods\r\n .closeForkAccount(new BN(forkId))\r\n .accounts({\r\n signer,\r\n forkState: this.BtcRelayFork(forkId, signer),\r\n systemProgram: web3_js_1.SystemProgram.programId,\r\n })\r\n .instruction(), 20000);\r\n }\r\n constructor(connection, bitcoinRpc, programAddress, solanaFeeEstimator = new SolanaFees_1.SolanaFees(connection)) {\r\n super(connection, programIdl, programAddress, null, solanaFeeEstimator);\r\n this.BtcRelayMainState = this.pda(\"state\");\r\n this.BtcRelayHeader = this.pda(\"header\", (hash) => [hash]);\r\n this.BtcRelayFork = this.pda(\"fork\", (forkId, pubkey) => [new BN(forkId).toArrayLike(buffer_1.Buffer, \"le\", 8), pubkey.toBuffer()]);\r\n this.maxHeadersPerTx = 5;\r\n this.maxForkHeadersPerTx = 4;\r\n this.maxShortForkHeadersPerTx = 4;\r\n this.bitcoinRpc = bitcoinRpc;\r\n }\r\n /**\r\n * Gets set of block commitments representing current main chain from the mainState\r\n *\r\n * @param mainState\r\n * @private\r\n */\r\n getBlockCommitmentsSet(mainState) {\r\n const storedCommitments = new Set();\r\n mainState.blockCommitments.forEach(e => {\r\n storedCommitments.add(buffer_1.Buffer.from(e).toString(\"hex\"));\r\n });\r\n return storedCommitments;\r\n }\r\n /**\r\n * Computes subsequent commited headers as they will appear on the blockchain when transactions\r\n * are submitted & confirmed\r\n *\r\n * @param initialStoredHeader\r\n * @param syncedHeaders\r\n * @private\r\n */\r\n computeCommitedHeaders(initialStoredHeader, syncedHeaders) {\r\n const computedCommitedHeaders = [initialStoredHeader];\r\n for (let blockHeader of syncedHeaders) {\r\n computedCommitedHeaders.push(computedCommitedHeaders[computedCommitedHeaders.length - 1].computeNext(blockHeader));\r\n }\r\n return computedCommitedHeaders;\r\n }\r\n /**\r\n * A common logic for submitting blockheaders in a transaction\r\n *\r\n * @param signer\r\n * @param headers headers to sync to the btc relay\r\n * @param storedHeader current latest stored block header for a given fork\r\n * @param tipWork work of the current tip in a given fork\r\n * @param forkId forkId to submit to, forkId=0 means main chain\r\n * @param feeRate feeRate for the transaction\r\n * @param createTx transaction generator function\r\n * @private\r\n */\r\n async _saveHeaders(signer, headers, storedHeader, tipWork, forkId, feeRate, createTx) {\r\n const blockHeaderObj = headers.map(serializeBlockHeader);\r\n const tx = await createTx(blockHeaderObj)\r\n .remainingAccounts(blockHeaderObj.map(e => {\r\n return {\r\n pubkey: this.BtcRelayHeader(e.hash),\r\n isSigner: false,\r\n isWritable: false\r\n };\r\n }))\r\n .transaction();\r\n tx.feePayer = signer;\r\n this.Fees.applyFeeRateBegin(tx, null, feeRate);\r\n this.Fees.applyFeeRateEnd(tx, null, feeRate);\r\n const computedCommitedHeaders = this.computeCommitedHeaders(storedHeader, blockHeaderObj);\r\n const lastStoredHeader = computedCommitedHeaders[computedCommitedHeaders.length - 1];\r\n if (forkId !== 0 && base_1.StatePredictorUtils.gtBuffer(buffer_1.Buffer.from(lastStoredHeader.chainWork), tipWork)) {\r\n //Fork's work is higher than main chain's work, this fork will become a main chain\r\n forkId = 0;\r\n }\r\n return {\r\n forkId: forkId,\r\n lastStoredHeader,\r\n tx: {\r\n tx,\r\n signers: []\r\n },\r\n computedCommitedHeaders\r\n };\r\n }\r\n /**\r\n * Returns data about current main chain tip stored in the btc relay\r\n */\r\n async getTipData() {\r\n const data = await this.program.account.mainState.fetchNullable(this.BtcRelayMainState);\r\n if (data == null)\r\n return null;\r\n return {\r\n blockheight: data.blockHeight,\r\n commitHash: buffer_1.Buffer.from(data.tipCommitHash).toString(\"hex\"),\r\n blockhash: buffer_1.Buffer.from(data.tipBlockHash).reverse().toString(\"hex\"),\r\n chainWork: buffer_1.Buffer.from(data.chainWork)\r\n };\r\n }\r\n /**\r\n * Retrieves blockheader with a specific blockhash, returns null if requiredBlockheight is provided and\r\n * btc relay contract is not synced up to the desired blockheight\r\n *\r\n * @param blockData\r\n * @param requiredBlockheight\r\n */\r\n async retrieveLogAndBlockheight(blockData, requiredBlockheight) {\r\n const mainState = await this.program.account.mainState.fetch(this.BtcRelayMainState);\r\n if (requiredBlockheight != null && mainState.blockHeight < requiredBlockheight) {\r\n return null;\r\n }\r\n const storedCommitments = this.getBlockCommitmentsSet(mainState);\r\n const blockHashBuffer = buffer_1.Buffer.from(blockData.blockhash, 'hex').reverse();\r\n const topicKey = this.BtcRelayHeader(blockHashBuffer);\r\n const data = await this.Events.findInEvents(topicKey, async (event) => {\r\n if (event.name === \"StoreFork\" || event.name === \"StoreHeader\") {\r\n const eventData = event.data;\r\n const commitHash = buffer_1.Buffer.from(eventData.commitHash).toString(\"hex\");\r\n if (blockHashBuffer.equals(buffer_1.Buffer.from(eventData.blockHash)) && storedCommitments.has(commitHash))\r\n return {\r\n header: new SolanaBtcStoredHeader_1.SolanaBtcStoredHeader(eventData.header),\r\n height: mainState.blockHeight,\r\n commitHash\r\n };\r\n }\r\n });\r\n if (data != null)\r\n this.logger.debug(\"retrieveLogAndBlockheight(): block found,\" +\r\n \" commit hash: \" + data.commitHash + \" blockhash: \" + blockData.blockhash + \" height: \" + data.height);\r\n return data;\r\n }\r\n /**\r\n * Retrieves blockheader data by blockheader's commit hash,\r\n *\r\n * @param commitmentHashStr\r\n * @param blockData\r\n */\r\n async retrieveLogByCommitHash(commitmentHashStr, blockData) {\r\n const blockHashBuffer = buffer_1.Buffer.from(blockData.blockhash, \"hex\").reverse();\r\n const topicKey = this.BtcRelayHeader(blockHashBuffer);\r\n const data = await this.Events.findInEvents(topicKey, async (event) => {\r\n if (event.name === \"StoreFork\" || event.name === \"StoreHeader\") {\r\n const eventData = event.data;\r\n const commitHash = buffer_1.Buffer.from(eventData.commitHash).toString(\"hex\");\r\n if (commitmentHashStr === commitHash)\r\n return new SolanaBtcStoredHeader_1.SolanaBtcStoredHeader(eventData.header);\r\n }\r\n });\r\n if (data != null)\r\n this.logger.debug(\"retrieveLogByCommitHash(): block found,\" +\r\n \" commit hash: \" + commitmentHashStr + \" blockhash: \" + blockData.blockhash + \" height: \" + data.blockheight);\r\n return data;\r\n }\r\n /**\r\n * Retrieves latest known stored blockheader & blockheader from bitcoin RPC that is in the main chain\r\n */\r\n async retrieveLatestKnownBlockLog() {\r\n const mainState = await this.program.account.mainState.fetch(this.BtcRelayMainState);\r\n const storedCommitments = this.getBlockCommitmentsSet(mainState);\r\n const data = await this.Events.findInEvents(this.program.programId, async (event) => {\r\n if (event.name === \"StoreFork\" || event.name === \"StoreHeader\") {\r\n const eventData = event.data;\r\n const blockHashHex = buffer_1.Buffer.from(eventData.blockHash).reverse().toString(\"hex\");\r\n const isInMainChain = await this.bitcoinRpc.isInMainChain(blockHashHex).catch(() => false);\r\n const commitHash = buffer_1.Buffer.from(eventData.commitHash).toString(\"hex\");\r\n //Check if this fork is part of main chain\r\n if (isInMainChain && storedCommitments.has(commitHash))\r\n return {\r\n resultStoredHeader: new SolanaBtcStoredHeader_1.SolanaBtcStoredHeader(eventData.header),\r\n resultBitcoinHeader: await this.bitcoinRpc.getBlockHeader(blockHashHex),\r\n commitHash: commitHash\r\n };\r\n }\r\n }, null, 10);\r\n if (data != null)\r\n this.logger.debug(\"retrieveLatestKnownBlockLog(): block found,\" +\r\n \" commit hash: \" + data.commitHash + \" blockhash: \" + data.resultBitcoinHeader.getHash() +\r\n \" height: \" + data.resultStoredHeader.blockheight);\r\n return data;\r\n }\r\n /**\r\n * Saves initial block header when the btc relay is in uninitialized state\r\n *\r\n * @param signer\r\n * @param header a bitcoin blockheader to submit\r\n * @param epochStart timestamp of the start of the epoch (block timestamp at blockheight-(blockheight%2016))\r\n * @param pastBlocksTimestamps timestamp of the past 10 blocks\r\n * @param feeRate fee rate to use for the transaction\r\n */\r\n async saveInitialHeader(signer, header, epochStart, pastBlocksTimestamps, feeRate) {\r\n if (pastBlocksTimestamps.length !== 10)\r\n throw new Error(\"Invalid prevBlocksTimestamps\");\r\n const action = await this.Initialize(new web3_js_1.PublicKey(signer), header, epochStart, pastBlocksTimestamps);\r\n this.logger.debug(\"saveInitialHeader(): saving initial header, blockhash: \" + header.getHash() +\r\n \" blockheight: \" + header.getHeight() + \" epochStart: \" + epochStart + \" past block timestamps: \" + pastBlocksTimestamps.join());\r\n return await action.tx(feeRate);\r\n }\r\n /**\r\n * Saves blockheaders as a bitcoin main chain to the btc relay\r\n *\r\n * @param signer\r\n * @param mainHeaders\r\n * @param storedHeader\r\n * @param feeRate\r\n */\r\n saveMainHeaders(signer, mainHeaders, storedHeader, feeRate) {\r\n this.logger.debug(\"saveMainHeaders(): submitting main blockheaders, count: \" + mainHeaders.length);\r\n const _signer = new web3_js_1.PublicKey(signer);\r\n return this._saveHeaders(_signer, mainHeaders, storedHeader, null, 0, feeRate, (blockHeaders) => this.program.methods\r\n .submitBlockHeaders(blockHeaders, storedHeader)\r\n .accounts({\r\n signer: _signer,\r\n mainState: this.BtcRelayMainState,\r\n }));\r\n }\r\n /**\r\n * Creates a new long fork and submits the headers to it\r\n *\r\n * @param signer\r\n * @param forkHeaders\r\n * @param storedHeader\r\n * @param tipWork\r\n * @param feeRate\r\n */\r\n async saveNewForkHeaders(signer, forkHeaders, storedHeader, tipWork, feeRate) {\r\n const mainState = await this.program.account.mainState.fetch(this.BtcRelayMainState);\r\n let forkId = mainState.forkCounter;\r\n const _signer = new web3_js_1.PublicKey(signer);\r\n this.logger.debug(\"saveNewForkHeaders(): submitting new fork & blockheaders,\" +\r\n \" count: \" + forkHeaders.length + \" forkId: \" + forkId.toString(10));\r\n return await this._saveHeaders(_signer, forkHeaders, storedHeader, tipWork, forkId.toNumber(), feeRate, (blockHeaders) => this.program.methods\r\n .submitForkHeaders(blockHeaders, storedHeader, forkId, true)\r\n .accounts({\r\n signer: _signer,\r\n mainState: this.BtcRelayMainState,\r\n forkState: this.BtcRelayFork(forkId.toNumber(), _signer),\r\n systemProgram: web3_js_1.SystemProgram.programId,\r\n }));\r\n }\r\n /**\r\n * Continues submitting blockheaders to a given fork\r\n *\r\n * @param signer\r\n * @param forkHeaders\r\n * @param storedHeader\r\n * @param forkId\r\n * @param tipWork\r\n * @param feeRate\r\n */\r\n saveForkHeaders(signer, forkHeaders, storedHeader, forkId, tipWork, feeRate) {\r\n this.logger.debug(\"saveForkHeaders(): submitting blockheaders to existing fork,\" +\r\n \" count: \" + forkHeaders.length + \" forkId: \" + forkId.toString(10));\r\n const _signer = new web3_js_1.PublicKey(signer);\r\n return this._saveHeaders(_signer, forkHeaders, storedHeader, tipWork, forkId, feeRate, (blockHeaders) => this.program.methods\r\n .submitForkHeaders(blockHeaders, storedHeader, new BN(forkId), false)\r\n .accounts({\r\n signer: _signer,\r\n mainState: this.BtcRelayMainState,\r\n forkState: this.BtcRelayFork(forkId, _signer),\r\n systemProgram: web3_js_1.SystemProgram.programId,\r\n }));\r\n }\r\n /**\r\n * Submits short fork with given blockheaders\r\n *\r\n * @param signer\r\n * @param forkHeaders\r\n * @param storedHeader\r\n * @param tipWork\r\n * @param feeRate\r\n */\r\n saveShortForkHeaders(signer, forkHeaders, storedHeader, tipWork, feeRate) {\r\n this.logger.debug(\"saveShortForkHeaders(): submitting short fork blockheaders,\" +\r\n \" count: \" + forkHeaders.length);\r\n const _signer = new web3_js_1.PublicKey(signer);\r\n return this._saveHeaders(_signer, forkHeaders, storedHeader, tipWork, -1, feeRate, (blockHeaders) => this.program.methods\r\n .submitShortForkHeaders(blockHeaders, storedHeader)\r\n .accounts({\r\n signer: _signer,\r\n mainState: this.BtcRelayMainState\r\n }));\r\n }\r\n /**\r\n * Sweeps fork data PDAs back to self\r\n *\r\n * @param signer\r\n * @param lastSweepId lastCheckedId returned from the previous sweepForkData() call\r\n * @returns {number} lastCheckedId that should be passed to the next call of sweepForkData()\r\n */\r\n async sweepForkData(signer, lastSweepId) {\r\n const mainState = await this.program.account.mainState.fetch(this.BtcRelayMainState);\r\n let forkId = mainState.forkCounter.toNumber();\r\n const txs = [];\r\n let action = new SolanaAction_1.SolanaAction(signer.getPublicKey(), this);\r\n let lastCheckedId = lastSweepId;\r\n for (let i = lastSweepId == null ? 0 : lastSweepId + 1; i <= forkId; i++) {\r\n lastCheckedId = i;\r\n const accountAddr = this.BtcRelayFork(i, signer.getPublicKey());\r\n let forkState = await this.program.account.forkState.fetchNullable(accountAddr);\r\n if (forkState == null)\r\n continue;\r\n this.logger.info(\"sweepForkData(): sweeping forkId: \" + i);\r\n action.add(await this.CloseForkAccount(signer.getPublicKey(), i));\r\n if (action.ixsLength() >= MAX_CLOSE_IX_PER_TX) {\r\n await action.addToTxs(txs);\r\n action = new SolanaAction_1.SolanaAction(signer.getPublicKey(), this);\r\n }\r\n }\r\n if (action.ixsLength() >= MAX_CLOSE_IX_PER_TX) {\r\n await action.addToTxs(txs);\r\n }\r\n if (txs.length > 0) {\r\n const signatures = await this.Transactions.sendAndConfirm(signer, txs, true);\r\n this.logger.info(\"sweepForkData(): forks swept, signatures: \" + signatures.join());\r\n }\r\n return lastCheckedId;\r\n }\r\n /**\r\n * Estimate required synchronization fee (worst case) to synchronize btc relay to the required blockheight\r\n *\r\n * @param requiredBlockheight\r\n * @param feeRate\r\n */\r\n async estimateSynchronizeFee(requiredBlockheight, feeRate) {\r\n const tipData = await this.getTipData();\r\n const currBlockheight = tipData.blockheight;\r\n const blockheightDelta = requiredBlockheight - currBlockheight;\r\n if (blockheightDelta <= 0)\r\n return 0n;\r\n const synchronizationFee = BigInt(blockheightDelta) * await this.getFeePerBlock(feeRate);\r\n this.logger.debug(\"estimateSynchronizeFee(): required blockheight: \" + requiredBlockheight +\r\n \" blockheight delta: \" + blockheightDelta + \" fee: \" + synchronizationFee.toString(10));\r\n return synchronizationFee;\r\n }\r\n /**\r\n * Returns fee required (in SOL) to synchronize a single block to btc relay\r\n *\r\n * @param feeRate\r\n */\r\n async getFeePerBlock(feeRate) {\r\n // feeRate = feeRate || await this.getMainFeeRate(null);\r\n // return BASE_FEE_SOL_PER_BLOCKHEADER.add(this.Fees.getPriorityFee(200000, feeRate, false));\r\n return 50000n;\r\n }\r\n /**\r\n * Gets fee rate required for submitting blockheaders to the main chain\r\n */\r\n getMainFeeRate(signer) {\r\n const _signer = signer == null ? null : new web3_js_1.PublicKey(signer);\r\n return this.Fees.getFeeRate(_signer == null ? [this.BtcRelayMainState] : [\r\n _signer,\r\n this.BtcRelayMainState\r\n ]);\r\n }\r\n /**\r\n * Gets fee rate required for submitting blockheaders to the specific fork\r\n */\r\n getForkFeeRate(signer, forkId) {\r\n const _signer = new web3_js_1.PublicKey(signer);\r\n return this.Fees.getFeeRate([\r\n _signer,\r\n this.BtcRelayMainState,\r\n this.BtcRelayFork(forkId, _signer)\r\n ]);\r\n }\r\n}\r\nexports.SolanaBtcRelay = SolanaBtcRelay;\r\n","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, CHash, Input, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC> extends Hash> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, _key: Input) {\n super();\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf: Input) {\n assertExists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array) {\n assertExists(this);\n assertBytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: HMAC): HMAC {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash: CHash, key: Input, message: Input): Uint8Array =>\n new HMAC(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Input) => new HMAC(hash, key);\n",null,"'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","// extracted by mini-css-extract-plugin\nexport default {};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IToBTCWrapper = void 0;\r\nconst IToBTCSwap_1 = require(\"./IToBTCSwap\");\r\nconst ISwapWrapper_1 = require(\"../ISwapWrapper\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst IntermediaryError_1 = require(\"../../errors/IntermediaryError\");\r\nclass IToBTCWrapper extends ISwapWrapper_1.ISwapWrapper {\r\n constructor() {\r\n super(...arguments);\r\n this.pendingSwapStates = [\r\n IToBTCSwap_1.ToBTCSwapState.CREATED,\r\n IToBTCSwap_1.ToBTCSwapState.QUOTE_SOFT_EXPIRED,\r\n IToBTCSwap_1.ToBTCSwapState.COMMITED,\r\n IToBTCSwap_1.ToBTCSwapState.SOFT_CLAIMED,\r\n IToBTCSwap_1.ToBTCSwapState.REFUNDABLE\r\n ];\r\n this.tickSwapState = [IToBTCSwap_1.ToBTCSwapState.CREATED, IToBTCSwap_1.ToBTCSwapState.COMMITED, IToBTCSwap_1.ToBTCSwapState.SOFT_CLAIMED];\r\n }\r\n /**\r\n * Pre-fetches intermediary's reputation, doesn't throw, instead aborts via abortController and returns null\r\n *\r\n * @param amountData\r\n * @param lp Intermediary\r\n * @param abortController\r\n * @protected\r\n * @returns Intermediary's reputation or null if failed\r\n * @throws {IntermediaryError} If the intermediary vault doesn't exist\r\n */\r\n preFetchIntermediaryReputation(amountData, lp, abortController) {\r\n return lp.getReputation(this.chainIdentifier, this.contract, [amountData.token.toString()], abortController.signal).then(res => {\r\n if (res == null)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid data returned - invalid LP vault\");\r\n return res;\r\n }).catch(e => {\r\n this.logger.error(\"preFetchIntermediaryReputation(): Error: \", e);\r\n abortController.abort(e);\r\n return null;\r\n });\r\n }\r\n /**\r\n * Pre-fetches feeRate for a given swap\r\n *\r\n * @param signer Address of the swap initiator\r\n * @param amountData\r\n * @param claimHash optional hash of the swap or null\r\n * @param abortController\r\n * @protected\r\n * @returns Fee rate\r\n */\r\n preFetchFeeRate(signer, amountData, claimHash, abortController) {\r\n return (0, Utils_1.tryWithRetries)(() => this.contract.getInitPayInFeeRate(signer, null, amountData.token, claimHash), null, null, abortController.signal).catch(e => {\r\n this.logger.error(\"preFetchFeeRate(): Error: \", e);\r\n abortController.abort(e);\r\n return null;\r\n });\r\n }\r\n async processEventInitialize(swap, event) {\r\n if (swap.state === IToBTCSwap_1.ToBTCSwapState.CREATED || swap.state === IToBTCSwap_1.ToBTCSwapState.QUOTE_SOFT_EXPIRED) {\r\n const swapData = await event.swapData();\r\n if (swap.data != null && !swap.data.equals(swapData))\r\n return false;\r\n if (swap.state === IToBTCSwap_1.ToBTCSwapState.CREATED || swap.state === IToBTCSwap_1.ToBTCSwapState.QUOTE_SOFT_EXPIRED)\r\n swap.state = IToBTCSwap_1.ToBTCSwapState.COMMITED;\r\n swap.data = swapData;\r\n return true;\r\n }\r\n }\r\n processEventClaim(swap, event) {\r\n if (swap.state !== IToBTCSwap_1.ToBTCSwapState.REFUNDED) {\r\n swap.state = IToBTCSwap_1.ToBTCSwapState.CLAIMED;\r\n swap._setPaymentResult({ secret: event.result, txId: Buffer.from(event.result, \"hex\").reverse().toString(\"hex\") });\r\n return Promise.resolve(true);\r\n }\r\n return Promise.resolve(false);\r\n }\r\n processEventRefund(swap, event) {\r\n if (swap.state !== IToBTCSwap_1.ToBTCSwapState.CLAIMED) {\r\n swap.state = IToBTCSwap_1.ToBTCSwapState.REFUNDED;\r\n return Promise.resolve(true);\r\n }\r\n return Promise.resolve(false);\r\n }\r\n}\r\nexports.IToBTCWrapper = IToBTCWrapper;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BinancePriceProvider = void 0;\r\nconst ExchangePriceProvider_1 = require(\"./abstract/ExchangePriceProvider\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass BinancePriceProvider extends ExchangePriceProvider_1.ExchangePriceProvider {\r\n constructor(coinsMap, url = \"https://api.binance.com/api/v3\", httpRequestTimeout) {\r\n super(coinsMap, url, httpRequestTimeout);\r\n }\r\n async fetchPair(pair, abortSignal) {\r\n const response = await (0, Utils_1.httpGet)(this.url + \"/ticker/price?symbol=\" + pair, this.httpRequestTimeout, abortSignal);\r\n return parseFloat(response.price);\r\n }\r\n async fetchUsdPrice(abortSignal) {\r\n const response = await (0, Utils_1.httpGet)(this.url + \"/ticker/price?symbol=BTCUSDC\", this.httpRequestTimeout, abortSignal);\r\n return parseFloat(response.price) / 100000000;\r\n }\r\n}\r\nexports.BinancePriceProvider = BinancePriceProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UserError = void 0;\r\n/**\r\n * An error on the user side, such as invalid address provided\r\n */\r\nclass UserError extends Error {\r\n constructor(msg) {\r\n super(msg);\r\n // Set the prototype explicitly.\r\n Object.setPrototypeOf(this, UserError.prototype);\r\n }\r\n}\r\nexports.UserError = UserError;\r\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (psz < source.length) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaTransactions = void 0;\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst SolanaModule_1 = require(\"../SolanaModule\");\r\nconst bs58 = require(\"bs58\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst buffer_1 = require(\"buffer\");\r\nclass SolanaTransactions extends SolanaModule_1.SolanaModule {\r\n /**\r\n * Sends raw solana transaction, first through the cbkSendTransaction callback (for e.g. sending the transaction\r\n * to a different specific RPC), the through the Fees handler (for e.g. Jito transaction) and last through the\r\n * underlying provider's Connection instance (the usual way). Only sends the transaction through one channel.\r\n *\r\n * @param data\r\n * @param options\r\n * @private\r\n */\r\n async sendRawTransaction(data, options) {\r\n let result = null;\r\n options ?? (options = {});\r\n options.maxRetries = 0;\r\n if (this.cbkSendTransaction != null)\r\n result = await this.cbkSendTransaction(data, options);\r\n if (result == null)\r\n result = await this.root.Fees.submitTx(data, options);\r\n if (result == null)\r\n result = await this.connection.sendRawTransaction(data, options);\r\n // this.logger.debug(\"sendRawTransaction(): tx sent, signature: \"+result);\r\n return result;\r\n }\r\n /**\r\n * Waits for the transaction to confirm by periodically checking the transaction status over HTTP, also\r\n * re-sends the transaction at regular intervals\r\n *\r\n * @param solanaTx solana tx to wait for confirmation for\r\n * @param finality wait for this finality\r\n * @param abortSignal signal to abort waiting for tx confirmation\r\n * @private\r\n */\r\n txConfirmationAndResendWatchdog(solanaTx, finality, abortSignal) {\r\n const rawTx = solanaTx.tx.serialize();\r\n const signature = bs58.encode(solanaTx.tx.signature);\r\n return new Promise((resolve, reject) => {\r\n let watchdogInterval;\r\n watchdogInterval = setInterval(async () => {\r\n const result = await this.sendRawTransaction(rawTx, { skipPreflight: true }).catch(e => this.logger.error(\"txConfirmationAndResendWatchdog(): transaction re-sent error: \", e));\r\n this.logger.debug(\"txConfirmationAndResendWatchdog(): transaction re-sent: \" + result);\r\n const status = await this.getTxIdStatus(signature, finality).catch(e => this.logger.error(\"txConfirmationAndResendWatchdog(): get tx id status error: \", e));\r\n if (status == null || status === \"not_found\")\r\n return;\r\n if (status === \"success\") {\r\n this.logger.info(\"txConfirmationAndResendWatchdog(): transaction confirmed from HTTP polling, signature: \" + signature);\r\n resolve(signature);\r\n }\r\n if (status === \"reverted\")\r\n reject(new Error(\"Transaction reverted!\"));\r\n clearInterval(watchdogInterval);\r\n }, this.retryPolicy?.transactionResendInterval || 3000);\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => {\r\n clearInterval(watchdogInterval);\r\n reject(abortSignal.reason);\r\n });\r\n });\r\n }\r\n /**\r\n * Waits for the transaction to confirm from WS, sometimes the WS rejects even though the transaction was confirmed\r\n * this therefore also runs an ultimate check on the transaction in case the WS handler rejects, checking if it\r\n * really was expired\r\n *\r\n * @param solanaTx solana tx to wait for confirmation for\r\n * @param finality wait for this finality\r\n * @param abortSignal signal to abort waiting for tx confirmation\r\n * @private\r\n */\r\n async txConfirmFromWebsocket(solanaTx, finality, abortSignal) {\r\n const signature = bs58.encode(solanaTx.tx.signature);\r\n let result;\r\n try {\r\n result = await this.connection.confirmTransaction({\r\n signature: signature,\r\n blockhash: solanaTx.tx.recentBlockhash,\r\n lastValidBlockHeight: solanaTx.tx.lastValidBlockHeight,\r\n abortSignal\r\n }, finality);\r\n this.logger.info(\"txConfirmFromWebsocket(): transaction confirmed from WS, signature: \" + signature);\r\n }\r\n catch (err) {\r\n if (abortSignal != null && abortSignal.aborted)\r\n throw err;\r\n this.logger.debug(\"txConfirmFromWebsocket(): transaction rejected from WS, running ultimate check, expiry blockheight: \" + solanaTx.tx.lastValidBlockHeight + \" signature: \" + signature + \" error: \" + err);\r\n const status = await (0, Utils_1.tryWithRetries)(() => this.getTxIdStatus(signature, finality));\r\n this.logger.info(\"txConfirmFromWebsocket(): transaction status: \" + status + \" signature: \" + signature);\r\n if (status === \"success\")\r\n return signature;\r\n if (status === \"reverted\")\r\n throw new Error(\"Transaction reverted!\");\r\n if (err instanceof web3_js_1.TransactionExpiredBlockheightExceededError || err.toString().startsWith(\"TransactionExpiredBlockheightExceededError\")) {\r\n throw new Error(\"Transaction expired before confirmation, please try again!\");\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n if (result.value.err != null)\r\n throw new Error(\"Transaction reverted!\");\r\n return signature;\r\n }\r\n /**\r\n * Waits for transaction confirmation using WS subscription and occasional HTTP polling, also re-sends\r\n * the transaction at regular interval\r\n *\r\n * @param solanaTx solana transaction to wait for confirmation for & keep re-sending until it confirms\r\n * @param abortSignal signal to abort waiting for tx confirmation\r\n * @param finality wait for specific finality\r\n * @private\r\n */\r\n async confirmTransaction(solanaTx, abortSignal, finality) {\r\n const abortController = new AbortController();\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => {\r\n abortController.abort();\r\n });\r\n let txSignature;\r\n try {\r\n txSignature = await Promise.race([\r\n this.txConfirmationAndResendWatchdog(solanaTx, finality, abortController.signal),\r\n this.txConfirmFromWebsocket(solanaTx, finality, abortController.signal)\r\n ]);\r\n }\r\n catch (e) {\r\n abortController.abort(e);\r\n throw e;\r\n }\r\n // this.logger.info(\"confirmTransaction(): transaction confirmed, signature: \"+txSignature);\r\n abortController.abort();\r\n }\r\n /**\r\n * Prepares solana transactions, assigns recentBlockhash if needed, applies Phantom hotfix,\r\n * sets feePayer to ourselves, calls beforeTxSigned callback & signs transaction with provided signers array\r\n *\r\n * @param signer\r\n * @param txs\r\n * @private\r\n */\r\n async prepareTransactions(signer, txs) {\r\n let latestBlockData = null;\r\n for (let tx of txs) {\r\n if (tx.tx.recentBlockhash == null) {\r\n if (latestBlockData == null) {\r\n latestBlockData = await (0, Utils_1.tryWithRetries)(() => this.connection.getLatestBlockhash(\"confirmed\"), this.retryPolicy);\r\n this.logger.debug(\"prepareTransactions(): fetched latest block data for transactions,\" +\r\n \" blockhash: \" + latestBlockData.blockhash + \" expiry blockheight: \" + latestBlockData.lastValidBlockHeight);\r\n }\r\n tx.tx.recentBlockhash = latestBlockData.blockhash;\r\n tx.tx.lastValidBlockHeight = latestBlockData.lastValidBlockHeight;\r\n }\r\n //This is a hotfix for Phantom adding compute unit price instruction on the first position & breaking\r\n // required instructions order (e.g. btc relay verify needs to be 0th instruction in a tx)\r\n if (signer.keypair == null && tx.tx.signatures.length === 0) {\r\n const foundIx = tx.tx.instructions.find(ix => ix.programId.equals(web3_js_1.ComputeBudgetProgram.programId) && web3_js_1.ComputeBudgetInstruction.decodeInstructionType(ix) === \"SetComputeUnitPrice\");\r\n if (foundIx == null)\r\n tx.tx.instructions.splice(tx.tx.instructions.length - 1, 0, web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 1 }));\r\n }\r\n tx.tx.feePayer = signer.getPublicKey();\r\n if (this.cbkBeforeTxSigned != null)\r\n await this.cbkBeforeTxSigned(tx);\r\n if (tx.signers != null && tx.signers.length > 0)\r\n for (let signer of tx.signers)\r\n tx.tx.sign(signer);\r\n }\r\n }\r\n /**\r\n * Sends out a signed transaction to the RPC\r\n *\r\n * @param solTx solana tx to send\r\n * @param options send options to be passed to the RPC\r\n * @param onBeforePublish a callback called before every transaction is published\r\n * @private\r\n */\r\n async sendSignedTransaction(solTx, options, onBeforePublish) {\r\n if (onBeforePublish != null)\r\n await onBeforePublish(bs58.encode(solTx.tx.signature), await this.serializeTx(solTx));\r\n const serializedTx = solTx.tx.serialize();\r\n this.logger.debug(\"sendSignedTransaction(): sending transaction: \" + serializedTx.toString(\"hex\") +\r\n \" signature: \" + bs58.encode(solTx.tx.signature));\r\n const txResult = await (0, Utils_1.tryWithRetries)(() => this.sendRawTransaction(serializedTx, options), this.retryPolicy);\r\n this.logger.info(\"sendSignedTransaction(): tx sent, signature: \" + txResult);\r\n return txResult;\r\n }\r\n /**\r\n * Prepares (adds recent blockhash if required, applies Phantom hotfix),\r\n * signs (all together using signAllTransactions() calls), sends (in parallel or sequentially) &\r\n * optionally waits for confirmation of a batch of solana transactions\r\n *\r\n * @param signer\r\n * @param _txs\r\n * @param waitForConfirmation whether to wait for transaction confirmations (this also makes sure the transactions\r\n * are re-sent at regular intervals)\r\n * @param abortSignal abort signal to abort waiting for transaction confirmations\r\n * @param parallel whether the send all the transaction at once in parallel or sequentially (such that transactions\r\n * are executed in order)\r\n * @param onBeforePublish a callback called before every transaction is published\r\n */\r\n async sendAndConfirm(signer, _txs, waitForConfirmation, abortSignal, parallel, onBeforePublish) {\r\n const options = {\r\n skipPreflight: true\r\n };\r\n this.logger.debug(\"sendAndConfirm(): sending transactions, count: \" + _txs.length +\r\n \" waitForConfirmation: \" + waitForConfirmation + \" parallel: \" + parallel);\r\n const signatures = [];\r\n for (let e = 0; e < _txs.length; e += 50) {\r\n const txs = _txs.slice(e, e + 50);\r\n await this.prepareTransactions(signer, txs);\r\n const signedTxs = await signer.wallet.signAllTransactions(txs.map(e => e.tx));\r\n signedTxs.forEach((tx, index) => {\r\n const solTx = txs[index];\r\n tx.lastValidBlockHeight = solTx.tx.lastValidBlockHeight;\r\n solTx.tx = tx;\r\n });\r\n this.logger.debug(\"sendAndConfirm(): sending transaction batch (\" + e + \"..\" + (e + 50) + \"), count: \" + txs.length);\r\n if (parallel) {\r\n const promises = [];\r\n for (let solTx of txs) {\r\n const signature = await this.sendSignedTransaction(solTx, options, onBeforePublish);\r\n if (waitForConfirmation)\r\n promises.push(this.confirmTransaction(solTx, abortSignal, \"confirmed\"));\r\n signatures.push(signature);\r\n }\r\n if (promises.length > 0)\r\n await Promise.all(promises);\r\n }\r\n else {\r\n for (let i = 0; i < txs.length; i++) {\r\n const solTx = txs[i];\r\n const signature = await this.sendSignedTransaction(solTx, options, onBeforePublish);\r\n const confirmPromise = this.confirmTransaction(solTx, abortSignal, \"confirmed\");\r\n //Don't await the last promise when !waitForConfirmation\r\n if (i < txs.length - 1 || e + 50 < _txs.length || waitForConfirmation)\r\n await confirmPromise;\r\n signatures.push(signature);\r\n }\r\n }\r\n }\r\n this.logger.info(\"sendAndConfirm(): sent transactions, count: \" + _txs.length +\r\n \" waitForConfirmation: \" + waitForConfirmation + \" parallel: \" + parallel);\r\n return signatures;\r\n }\r\n /**\r\n * Serializes the solana transaction, saves the transaction, signers & last valid blockheight\r\n *\r\n * @param tx\r\n */\r\n serializeTx(tx) {\r\n return Promise.resolve(JSON.stringify({\r\n tx: tx.tx.serialize().toString(\"hex\"),\r\n signers: tx.signers.map(e => buffer_1.Buffer.from(e.secretKey).toString(\"hex\")),\r\n lastValidBlockheight: tx.tx.lastValidBlockHeight\r\n }));\r\n }\r\n /**\r\n * Deserializes saved solana transaction, extracting the transaction, signers & last valid blockheight\r\n *\r\n * @param txData\r\n */\r\n deserializeTx(txData) {\r\n const jsonParsed = JSON.parse(txData);\r\n const transaction = web3_js_1.Transaction.from(buffer_1.Buffer.from(jsonParsed.tx, \"hex\"));\r\n transaction.lastValidBlockHeight = jsonParsed.lastValidBlockheight;\r\n return Promise.resolve({\r\n tx: transaction,\r\n signers: jsonParsed.signers.map(e => web3_js_1.Keypair.fromSecretKey(buffer_1.Buffer.from(e, \"hex\"))),\r\n });\r\n }\r\n /**\r\n * Gets the status of the raw solana transaction, this also checks transaction expiry & can therefore report tx\r\n * in \"pending\" status, however pending status doesn't necessarily mean that the transaction was sent (again,\r\n * no mempool on Solana, cannot check that), this function is preferred against getTxIdStatus\r\n *\r\n * @param tx\r\n */\r\n async getTxStatus(tx) {\r\n const parsedTx = await this.deserializeTx(tx);\r\n const txReceipt = await this.connection.getTransaction(bs58.encode(parsedTx.tx.signature), {\r\n commitment: \"confirmed\",\r\n maxSupportedTransactionVersion: 0\r\n });\r\n if (txReceipt == null) {\r\n const currentBlockheight = await this.connection.getBlockHeight(\"processed\");\r\n if (currentBlockheight > parsedTx.tx.lastValidBlockHeight)\r\n return \"not_found\";\r\n return \"pending\";\r\n }\r\n if (txReceipt.meta.err)\r\n return \"reverted\";\r\n return \"success\";\r\n }\r\n /**\r\n * Gets the status of the solana transaction with a specific txId, this cannot report whether the transaction is\r\n * \"pending\" because Solana has no concept of mempool & only confirmed transactions are accessible\r\n *\r\n * @param txId\r\n * @param finality\r\n */\r\n async getTxIdStatus(txId, finality) {\r\n const txReceipt = await this.connection.getTransaction(txId, {\r\n commitment: finality || \"confirmed\",\r\n maxSupportedTransactionVersion: 0\r\n });\r\n if (txReceipt == null)\r\n return \"not_found\";\r\n if (txReceipt.meta.err)\r\n return \"reverted\";\r\n return \"success\";\r\n }\r\n onBeforeTxSigned(callback) {\r\n this.cbkBeforeTxSigned = callback;\r\n }\r\n offBeforeTxSigned(callback) {\r\n this.cbkBeforeTxSigned = null;\r\n return true;\r\n }\r\n onSendTransaction(callback) {\r\n this.cbkSendTransaction = callback;\r\n }\r\n offSendTransaction(callback) {\r\n this.cbkSendTransaction = null;\r\n return true;\r\n }\r\n}\r\nexports.SolanaTransactions = SolanaTransactions;\r\n","\"use strict\";\n/* tslint:disable:max-classes-per-file */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InternalError = exports.InvalidDataError = exports.RoutingError = exports.UnsupportedMethodError = exports.ConnectionError = exports.RejectionError = exports.MissingProviderError = void 0;\n/**\n * Workaround for custom errors when compiling typescript targeting 'ES5'.\n * see: https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n * @param {CustomError} error\n * @param newTarget the value of `new.target`\n * @param {Function} errorType\n */\nfunction fixError(error, newTarget, errorType) {\n Object.setPrototypeOf(error, errorType.prototype);\n // when an error constructor is invoked with the `new` operator\n if (newTarget === errorType) {\n error.name = newTarget.name;\n // exclude the constructor call of the error type from the stack trace.\n if (Error.captureStackTrace) {\n Error.captureStackTrace(error, errorType);\n }\n else {\n var stack = new Error(error.message).stack;\n if (stack) {\n error.stack = fixStack(stack, \"new \".concat(newTarget.name));\n }\n }\n }\n}\nfunction fixStack(stack, functionName) {\n if (!stack)\n return stack;\n if (!functionName)\n return stack;\n // exclude lines starts with: \" at functionName \"\n var exclusion = new RegExp(\"\\\\s+at\\\\s\".concat(functionName, \"\\\\s\"));\n var lines = stack.split(\"\\n\");\n var resultLines = lines.filter(function (line) { return !line.match(exclusion); });\n return resultLines.join(\"\\n\");\n}\n/// CUSTOM ERRORS ///\n// When no WebLN provider is available\nvar MissingProviderError = /** @class */ (function (_super) {\n __extends(MissingProviderError, _super);\n function MissingProviderError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, MissingProviderError);\n return _this;\n }\n return MissingProviderError;\n}(Error));\nexports.MissingProviderError = MissingProviderError;\n// When the user rejects a request\nvar RejectionError = /** @class */ (function (_super) {\n __extends(RejectionError, _super);\n function RejectionError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, RejectionError);\n return _this;\n }\n return RejectionError;\n}(Error));\nexports.RejectionError = RejectionError;\n// When the node can't be connected to (i.e. the app did nothing wrong)\nvar ConnectionError = /** @class */ (function (_super) {\n __extends(ConnectionError, _super);\n function ConnectionError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, ConnectionError);\n return _this;\n }\n return ConnectionError;\n}(Error));\nexports.ConnectionError = ConnectionError;\n// The WebLN provider doesn't support this method\nvar UnsupportedMethodError = /** @class */ (function (_super) {\n __extends(UnsupportedMethodError, _super);\n function UnsupportedMethodError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, UnsupportedMethodError);\n return _this;\n }\n return UnsupportedMethodError;\n}(Error));\nexports.UnsupportedMethodError = UnsupportedMethodError;\n// The desired node couldn't be routed to\nvar RoutingError = /** @class */ (function (_super) {\n __extends(RoutingError, _super);\n function RoutingError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, RoutingError);\n return _this;\n }\n return RoutingError;\n}(Error));\nexports.RoutingError = RoutingError;\n// An argument passed was somehow invalid (e.g. malformed invoice)\nvar InvalidDataError = /** @class */ (function (_super) {\n __extends(InvalidDataError, _super);\n function InvalidDataError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, InvalidDataError);\n return _this;\n }\n return InvalidDataError;\n}(Error));\nexports.InvalidDataError = InvalidDataError;\n// Something broke in the WebLN provider internally, nothing to do with the app\nvar InternalError = /** @class */ (function (_super) {\n __extends(InternalError, _super);\n function InternalError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n fixError(_this, _newTarget, InternalError);\n return _this;\n }\n return InternalError;\n}(Error));\nexports.InternalError = InternalError;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OnchainForGasSwap = exports.isOnchainForGasSwapInit = exports.OnchainForGasSwapState = void 0;\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst PaymentAuthError_1 = require(\"../../../errors/PaymentAuthError\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst ISwap_1 = require(\"../../ISwap\");\r\nconst TrustedIntermediaryAPI_1 = require(\"../../../intermediaries/TrustedIntermediaryAPI\");\r\nconst Tokens_1 = require(\"../../Tokens\");\r\nvar OnchainForGasSwapState;\r\n(function (OnchainForGasSwapState) {\r\n OnchainForGasSwapState[OnchainForGasSwapState[\"EXPIRED\"] = -3] = \"EXPIRED\";\r\n OnchainForGasSwapState[OnchainForGasSwapState[\"FAILED\"] = -2] = \"FAILED\";\r\n OnchainForGasSwapState[OnchainForGasSwapState[\"REFUNDED\"] = -1] = \"REFUNDED\";\r\n OnchainForGasSwapState[OnchainForGasSwapState[\"PR_CREATED\"] = 0] = \"PR_CREATED\";\r\n OnchainForGasSwapState[OnchainForGasSwapState[\"FINISHED\"] = 1] = \"FINISHED\";\r\n OnchainForGasSwapState[OnchainForGasSwapState[\"REFUNDABLE\"] = 2] = \"REFUNDABLE\";\r\n})(OnchainForGasSwapState = exports.OnchainForGasSwapState || (exports.OnchainForGasSwapState = {}));\r\nfunction isOnchainForGasSwapInit(obj) {\r\n return typeof (obj.paymentHash) === \"string\" &&\r\n typeof (obj.sequence) === \"bigint\" &&\r\n typeof (obj.address) === \"string\" &&\r\n typeof (obj.inputAmount) === \"bigint\" &&\r\n typeof (obj.outputAmount) === \"bigint\" &&\r\n typeof (obj.recipient) === \"string\" &&\r\n typeof (obj.token) === \"string\" &&\r\n (obj.refundAddress == null || typeof (obj.refundAddress) === \"string\") &&\r\n (0, ISwap_1.isISwapInit)(obj);\r\n}\r\nexports.isOnchainForGasSwapInit = isOnchainForGasSwapInit;\r\nclass OnchainForGasSwap extends ISwap_1.ISwap {\r\n constructor(wrapper, initOrObj) {\r\n if (isOnchainForGasSwapInit(initOrObj))\r\n initOrObj.url += \"/frombtc_trusted\";\r\n super(wrapper, initOrObj);\r\n this.TYPE = SwapType_1.SwapType.TRUSTED_FROM_BTC;\r\n if (isOnchainForGasSwapInit(initOrObj)) {\r\n this.state = OnchainForGasSwapState.PR_CREATED;\r\n }\r\n else {\r\n this.paymentHash = initOrObj.paymentHash;\r\n this.sequence = initOrObj.sequence == null ? null : BigInt(initOrObj.sequence);\r\n this.address = initOrObj.address;\r\n this.inputAmount = initOrObj.inputAmount == null ? null : BigInt(initOrObj.inputAmount);\r\n this.outputAmount = initOrObj.outputAmount == null ? null : BigInt(initOrObj.outputAmount);\r\n this.recipient = initOrObj.recipient;\r\n this.token = initOrObj.token;\r\n this.refundAddress = initOrObj.refundAddress;\r\n this.scTxId = initOrObj.scTxId;\r\n this.txId = initOrObj.txId;\r\n this.refundTxId = initOrObj.refundTxId;\r\n }\r\n this.logger = (0, Utils_1.getLogger)(\"OnchainForGas(\" + this.getIdentifierHashString() + \"): \");\r\n this.tryCalculateSwapFee();\r\n if (this.pricingInfo.swapPriceUSatPerToken == null) {\r\n this.pricingInfo = this.wrapper.prices.recomputePriceInfoReceive(this.chainIdentifier, this.inputAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, this.outputAmount, this.token ?? this.wrapper.getNativeToken().address);\r\n }\r\n }\r\n upgradeVersion() {\r\n if (this.version == null) {\r\n //Noop\r\n this.version = 1;\r\n }\r\n }\r\n /**\r\n * In case swapFee in BTC is not supplied it recalculates it based on swap price\r\n * @protected\r\n */\r\n tryCalculateSwapFee() {\r\n if (this.swapFeeBtc == null) {\r\n this.swapFeeBtc = this.swapFee * this.getInput().rawAmount / this.getOutAmountWithoutFee();\r\n }\r\n }\r\n //////////////////////////////\r\n //// Pricing\r\n async refreshPriceData() {\r\n if (this.pricingInfo == null)\r\n return null;\r\n const priceData = await this.wrapper.prices.isValidAmountReceive(this.chainIdentifier, this.inputAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, this.outputAmount, this.token ?? this.wrapper.getNativeToken().address);\r\n this.pricingInfo = priceData;\r\n return priceData;\r\n }\r\n getSwapPrice() {\r\n return Number(this.pricingInfo.swapPriceUSatPerToken) / 100000000000000;\r\n }\r\n getMarketPrice() {\r\n return Number(this.pricingInfo.realPriceUSatPerToken) / 100000000000000;\r\n }\r\n //////////////////////////////\r\n //// Getters & utils\r\n getInputAddress() {\r\n return this.address;\r\n }\r\n getOutputAddress() {\r\n return this.recipient;\r\n }\r\n getInputTxId() {\r\n return this.txId;\r\n }\r\n getOutputTxId() {\r\n return this.scTxId;\r\n }\r\n getRecipient() {\r\n return this.recipient;\r\n }\r\n getIdentifierHash() {\r\n return this.getPaymentHash();\r\n }\r\n getPaymentHash() {\r\n return buffer_1.Buffer.from(this.paymentHash, \"hex\");\r\n }\r\n getAddress() {\r\n return this.address;\r\n }\r\n /**\r\n * Returns bitcoin address where the on-chain BTC should be sent to\r\n */\r\n getBitcoinAddress() {\r\n return this.address;\r\n }\r\n getQrData() {\r\n return \"bitcoin:\" + this.address + \"?amount=\" + encodeURIComponent((Number(this.inputAmount) / 100000000).toString(10));\r\n }\r\n getTimeoutTime() {\r\n return this.expiry;\r\n }\r\n isFinished() {\r\n return this.state === OnchainForGasSwapState.FINISHED || this.state === OnchainForGasSwapState.FAILED || this.state === OnchainForGasSwapState.EXPIRED || this.state === OnchainForGasSwapState.REFUNDED;\r\n }\r\n isQuoteExpired() {\r\n return this.state === OnchainForGasSwapState.EXPIRED;\r\n }\r\n isQuoteSoftExpired() {\r\n return this.expiry < Date.now();\r\n }\r\n isFailed() {\r\n return this.state === OnchainForGasSwapState.FAILED;\r\n }\r\n isSuccessful() {\r\n return this.state === OnchainForGasSwapState.FINISHED;\r\n }\r\n isQuoteValid() {\r\n return Promise.resolve(this.getTimeoutTime() > Date.now());\r\n }\r\n isActionable() {\r\n return this.state === OnchainForGasSwapState.REFUNDABLE;\r\n }\r\n //////////////////////////////\r\n //// Amounts & fees\r\n getOutAmountWithoutFee() {\r\n return this.outputAmount + this.swapFee;\r\n }\r\n getOutput() {\r\n return (0, Tokens_1.toTokenAmount)(this.outputAmount, this.wrapper.tokens[this.wrapper.contract.getNativeCurrencyAddress()], this.wrapper.prices);\r\n }\r\n getInputWithoutFee() {\r\n return (0, Tokens_1.toTokenAmount)(this.inputAmount - this.swapFeeBtc, Tokens_1.BitcoinTokens.BTC, this.wrapper.prices);\r\n }\r\n getInput() {\r\n return (0, Tokens_1.toTokenAmount)(this.inputAmount, Tokens_1.BitcoinTokens.BTC, this.wrapper.prices);\r\n }\r\n getSwapFee() {\r\n return {\r\n amountInSrcToken: (0, Tokens_1.toTokenAmount)(this.swapFeeBtc, Tokens_1.BitcoinTokens.BTC, this.wrapper.prices),\r\n amountInDstToken: (0, Tokens_1.toTokenAmount)(this.swapFee, this.wrapper.tokens[this.wrapper.contract.getNativeCurrencyAddress()], this.wrapper.prices),\r\n usdValue: (abortSignal, preFetchedUsdPrice) => this.wrapper.prices.getBtcUsdValue(this.swapFeeBtc, abortSignal, preFetchedUsdPrice)\r\n };\r\n }\r\n getRealSwapFeePercentagePPM() {\r\n const feeWithoutBaseFee = this.swapFeeBtc - this.pricingInfo.satsBaseFee;\r\n return feeWithoutBaseFee * 1000000n / this.getInputWithoutFee().rawAmount;\r\n }\r\n //////////////////////////////\r\n //// Payment\r\n async checkAddress(save = true) {\r\n if (this.state === OnchainForGasSwapState.FAILED ||\r\n this.state === OnchainForGasSwapState.EXPIRED ||\r\n this.state === OnchainForGasSwapState.REFUNDED)\r\n return false;\r\n if (this.state === OnchainForGasSwapState.FINISHED)\r\n return false;\r\n const response = await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.getAddressStatus(this.url, this.paymentHash, this.sequence, this.wrapper.options.getRequestTimeout);\r\n switch (response.code) {\r\n case TrustedIntermediaryAPI_1.AddressStatusResponseCodes.AWAIT_PAYMENT:\r\n if (this.txId != null) {\r\n this.txId = null;\r\n if (save)\r\n await this._save();\r\n return true;\r\n }\r\n return false;\r\n case TrustedIntermediaryAPI_1.AddressStatusResponseCodes.AWAIT_CONFIRMATION:\r\n case TrustedIntermediaryAPI_1.AddressStatusResponseCodes.PENDING:\r\n case TrustedIntermediaryAPI_1.AddressStatusResponseCodes.TX_SENT:\r\n const inputAmount = BigInt(response.data.adjustedAmount);\r\n const outputAmount = BigInt(response.data.adjustedTotal);\r\n const adjustedFee = response.data.adjustedFee == null ? null : BigInt(response.data.adjustedFee);\r\n const adjustedFeeSats = response.data.adjustedFeeSats == null ? null : BigInt(response.data.adjustedFeeSats);\r\n const txId = response.data.txId;\r\n if (this.txId != txId ||\r\n this.inputAmount !== inputAmount ||\r\n this.outputAmount !== outputAmount) {\r\n this.txId = txId;\r\n this.inputAmount = inputAmount;\r\n this.outputAmount = outputAmount;\r\n if (adjustedFee != null)\r\n this.swapFee = adjustedFee;\r\n if (adjustedFeeSats != null)\r\n this.swapFeeBtc = adjustedFeeSats;\r\n if (save)\r\n await this._save();\r\n return true;\r\n }\r\n return false;\r\n case TrustedIntermediaryAPI_1.AddressStatusResponseCodes.PAID:\r\n const txStatus = await this.wrapper.contract.getTxIdStatus(response.data.txId);\r\n if (txStatus === \"success\") {\r\n this.state = OnchainForGasSwapState.FINISHED;\r\n this.scTxId = response.data.txId;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n return false;\r\n case TrustedIntermediaryAPI_1.AddressStatusResponseCodes.EXPIRED:\r\n this.state = OnchainForGasSwapState.EXPIRED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n case TrustedIntermediaryAPI_1.AddressStatusResponseCodes.REFUNDABLE:\r\n if (this.state === OnchainForGasSwapState.REFUNDABLE)\r\n return null;\r\n this.state = OnchainForGasSwapState.REFUNDABLE;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n case TrustedIntermediaryAPI_1.AddressStatusResponseCodes.REFUNDED:\r\n this.state = OnchainForGasSwapState.REFUNDED;\r\n this.refundTxId = response.data.txId;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n default:\r\n this.state = OnchainForGasSwapState.FAILED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n }\r\n /**\r\n * A blocking promise resolving when payment was received by the intermediary and client can continue\r\n * rejecting in case of failure\r\n *\r\n * @param abortSignal Abort signal\r\n * @param checkIntervalSeconds How often to poll the intermediary for answer\r\n * @param updateCallback Callback called when txId is found, and also called with subsequent confirmations\r\n * @throws {PaymentAuthError} If swap expired or failed\r\n * @throws {Error} When in invalid state (not PR_CREATED)\r\n */\r\n async waitForPayment(abortSignal, checkIntervalSeconds = 5, updateCallback) {\r\n if (this.state !== OnchainForGasSwapState.PR_CREATED)\r\n throw new Error(\"Must be in PR_CREATED state!\");\r\n if (!this.initiated) {\r\n this.initiated = true;\r\n await this._saveAndEmit();\r\n }\r\n while (!abortSignal.aborted &&\r\n this.state === OnchainForGasSwapState.PR_CREATED) {\r\n await this.checkAddress(true);\r\n if (this.txId != null && updateCallback != null) {\r\n const res = await this.wrapper.btcRpc.getTransaction(this.txId);\r\n if (res == null) {\r\n updateCallback(null, null);\r\n }\r\n else if (res.confirmations > 0) {\r\n updateCallback(res.txid, 0);\r\n }\r\n else {\r\n const delay = await this.wrapper.btcRpc.getConfirmationDelay(res, 1);\r\n updateCallback(res.txid, delay);\r\n }\r\n }\r\n if (this.state === OnchainForGasSwapState.PR_CREATED)\r\n await (0, Utils_1.timeoutPromise)(checkIntervalSeconds * 1000, abortSignal);\r\n }\r\n if (this.state === OnchainForGasSwapState.REFUNDABLE ||\r\n this.state === OnchainForGasSwapState.REFUNDED)\r\n return false;\r\n if (this.isQuoteExpired())\r\n throw new PaymentAuthError_1.PaymentAuthError(\"Swap expired\");\r\n if (this.isFailed())\r\n throw new PaymentAuthError_1.PaymentAuthError(\"Swap failed\");\r\n return true;\r\n }\r\n async waitTillRefunded(abortSignal, checkIntervalSeconds = 5) {\r\n if (this.state === OnchainForGasSwapState.REFUNDED)\r\n return;\r\n if (this.state !== OnchainForGasSwapState.REFUNDABLE)\r\n throw new Error(\"Must be in REFUNDABLE state!\");\r\n while (!abortSignal.aborted &&\r\n this.state === OnchainForGasSwapState.REFUNDABLE) {\r\n await this.checkAddress(true);\r\n if (this.state === OnchainForGasSwapState.REFUNDABLE)\r\n await (0, Utils_1.timeoutPromise)(checkIntervalSeconds * 1000, abortSignal);\r\n }\r\n if (this.isQuoteExpired())\r\n throw new PaymentAuthError_1.PaymentAuthError(\"Swap expired\");\r\n if (this.isFailed())\r\n throw new PaymentAuthError_1.PaymentAuthError(\"Swap failed\");\r\n }\r\n async setRefundAddress(refundAddress) {\r\n if (this.refundAddress != null) {\r\n if (this.refundAddress !== refundAddress)\r\n throw new Error(\"Different refund address already set!\");\r\n return;\r\n }\r\n await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.setRefundAddress(this.url, this.paymentHash, this.sequence, refundAddress, this.wrapper.options.getRequestTimeout);\r\n this.refundAddress = refundAddress;\r\n }\r\n async requestRefund(refundAddress, abortSignal) {\r\n if (refundAddress != null)\r\n await this.setRefundAddress(refundAddress);\r\n await this.waitTillRefunded(abortSignal);\r\n }\r\n //////////////////////////////\r\n //// Storage\r\n serialize() {\r\n return {\r\n ...super.serialize(),\r\n paymentHash: this.paymentHash,\r\n sequence: this.sequence == null ? null : this.sequence.toString(10),\r\n address: this.address,\r\n inputAmount: this.inputAmount == null ? null : this.inputAmount.toString(10),\r\n outputAmount: this.outputAmount == null ? null : this.outputAmount.toString(10),\r\n recipient: this.recipient,\r\n token: this.token,\r\n refundAddress: this.refundAddress,\r\n scTxId: this.scTxId,\r\n txId: this.txId,\r\n refundTxId: this.refundTxId,\r\n };\r\n }\r\n getInitiator() {\r\n return this.recipient;\r\n }\r\n hasEnoughForTxFees() {\r\n return Promise.resolve({\r\n balance: (0, Tokens_1.toTokenAmount)(0n, this.wrapper.getNativeToken(), this.wrapper.prices),\r\n enoughBalance: true,\r\n required: (0, Tokens_1.toTokenAmount)(0n, this.wrapper.getNativeToken(), this.wrapper.prices)\r\n });\r\n }\r\n //////////////////////////////\r\n //// Swap ticks & sync\r\n async _sync(save) {\r\n if (this.state === OnchainForGasSwapState.PR_CREATED) {\r\n //Check if it's maybe already paid\r\n const result = await this.checkAddress(false);\r\n if (result) {\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _tick(save) {\r\n return Promise.resolve(false);\r\n }\r\n}\r\nexports.OnchainForGasSwap = OnchainForGasSwap;\r\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport { AffinePoint, BasicCurve, Group, GroupConstructor, validateBasic, wNAF } from './curve.js';\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { CHash, Hex, PrivKey, ensureBytes } from './utils.js';\n\nexport type { AffinePoint };\ntype HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;\ntype EndomorphismOpts = {\n beta: bigint;\n splitScalar: (k: bigint) => { k1neg: boolean; k1: bigint; k2neg: boolean; k2: bigint };\n};\nexport type BasicWCurve = BasicCurve & {\n // Params: a, b\n a: T;\n b: T;\n\n // Optional params\n allowedPrivateKeyLengths?: readonly number[]; // for P521\n wrapPrivateKey?: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n\n endo?: EndomorphismOpts; // Endomorphism options for Koblitz curves\n // When a cofactor != 1, there can be an effective methods to:\n // 1. Determine whether a point is torsion-free\n isTorsionFree?: (c: ProjConstructor, point: ProjPointType) => boolean;\n // 2. Clear torsion component\n clearCofactor?: (c: ProjConstructor, point: ProjPointType) => ProjPointType;\n};\n\ntype Entropy = Hex | boolean;\nexport type SignOpts = { lowS?: boolean; extraEntropy?: Entropy; prehash?: boolean };\nexport type VerOpts = { lowS?: boolean; prehash?: boolean };\n\n/**\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance of nominative types in TypeScript and interfaces only check for shape, so it's hard to create unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * TODO: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n */\n\n// Instance for 3d XYZ points\nexport interface ProjPointType extends Group> {\n readonly px: T;\n readonly py: T;\n readonly pz: T;\n get x(): T;\n get y(): T;\n multiply(scalar: bigint): ProjPointType;\n toAffine(iz?: T): AffinePoint;\n isTorsionFree(): boolean;\n clearCofactor(): ProjPointType;\n assertValidity(): void;\n hasEvenY(): boolean;\n toRawBytes(isCompressed?: boolean): Uint8Array;\n toHex(isCompressed?: boolean): string;\n\n multiplyUnsafe(scalar: bigint): ProjPointType;\n multiplyAndAddUnsafe(Q: ProjPointType, a: bigint, b: bigint): ProjPointType | undefined;\n _setWindowSize(windowSize: number): void;\n}\n// Static methods for 3d XYZ points\nexport interface ProjConstructor extends GroupConstructor> {\n new (x: T, y: T, z: T): ProjPointType;\n fromAffine(p: AffinePoint): ProjPointType;\n fromHex(hex: Hex): ProjPointType;\n fromPrivateKey(privateKey: PrivKey): ProjPointType;\n normalizeZ(points: ProjPointType[]): ProjPointType[];\n}\n\nexport type CurvePointsType = BasicWCurve & {\n // Bytes\n fromBytes?: (bytes: Uint8Array) => AffinePoint;\n toBytes?: (c: ProjConstructor, point: ProjPointType, isCompressed: boolean) => Uint8Array;\n};\n\nfunction validatePointOpts(curve: CurvePointsType) {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n a: 'field',\n b: 'field',\n },\n {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n }\n );\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (\n typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function'\n ) {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts } as const);\n}\n\nexport type CurvePointsRes = {\n CURVE: ReturnType>;\n ProjectivePoint: ProjConstructor;\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n weierstrassEquation: (x: T) => T;\n isWithinCurveOrder: (num: bigint) => boolean;\n};\n\n// ASN.1 DER encoding utilities\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n _parseInt(data: Uint8Array): { d: bigint; l: Uint8Array } {\n const { Err: E } = DER;\n if (data.length < 2 || data[0] !== 0x02) throw new E('Invalid signature integer tag');\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) throw new E('Invalid signature integer: wrong length');\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n if (res[0] & 0b10000000) throw new E('Invalid signature integer: negative');\n if (res[0] === 0x00 && !(res[1] & 0b10000000))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return { d: b2n(res), l: data.subarray(len + 2) }; // d is data, l is left\n },\n toSig(hex: string | Uint8Array): { r: bigint; s: bigint } {\n // parse DER signature\n const { Err: E } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n ut.abytes(data);\n let l = data.length;\n if (l < 2 || data[0] != 0x30) throw new E('Invalid signature tag');\n if (data[1] !== l - 2) throw new E('Invalid signature: incorrect length');\n const { d: r, l: sBytes } = DER._parseInt(data.subarray(2));\n const { d: s, l: rBytesLeft } = DER._parseInt(sBytes);\n if (rBytesLeft.length) throw new E('Invalid signature: left bytes after parsing');\n return { r, s };\n },\n hexFromSig(sig: { r: bigint; s: bigint }): string {\n // Add leading zero if first byte has negative bit enabled. More details in '_parseInt'\n const slice = (s: string): string => (Number.parseInt(s[0], 16) & 0b1000 ? '00' + s : s);\n const h = (num: number | bigint) => {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n };\n const s = slice(h(sig.s));\n const r = slice(h(sig.r));\n const shl = s.length / 2;\n const rhl = r.length / 2;\n const sl = h(shl);\n const rl = h(rhl);\n return `30${h(rhl + shl + 4)}02${rl}${r}02${sl}${s}`;\n },\n};\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\n\nexport function weierstrassPoints(opts: CurvePointsType): CurvePointsRes {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n\n const toBytes =\n CURVE.toBytes ||\n ((_c: ProjConstructor, point: ProjPointType, _isCompressed: boolean) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes =\n CURVE.fromBytes ||\n ((bytes: Uint8Array) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x: T): T {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num: bigint): boolean {\n return typeof num === 'bigint' && _0n < num && num < CURVE.n;\n }\n function assertGE(num: bigint) {\n if (!isWithinCurveOrder(num)) throw new Error('Expected valid bigint: 0 < bigint < curve.n');\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key: PrivKey): bigint {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (ut.isBytes(key)) key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length)) throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num: bigint;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n } catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey) num = mod.mod(num, n); // disabled by default, enabled for BLS\n assertGE(num); // num in range [1..N-1]\n return num;\n }\n\n const pointPrecomputes = new Map();\n function assertPrjPoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('ProjectivePoint expected');\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point implements ProjPointType {\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n static readonly ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n\n constructor(\n readonly px: T,\n readonly py: T,\n readonly pz: T\n ) {\n if (px == null || !Fp.isValid(px)) throw new Error('x required');\n if (py == null || !Fp.isValid(py)) throw new Error('y required');\n if (pz == null || !Fp.isValid(pz)) throw new Error('z required');\n }\n\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p: AffinePoint): Point {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y)) throw new Error('invalid affine point');\n if (p instanceof Point) throw new Error('projective point not allowed');\n const is0 = (i: T) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y)) return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n\n get x(): T {\n return this.toAffine().x;\n }\n get y(): T {\n return this.toAffine().y;\n }\n\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points: Point[]): Point[] {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex: Hex): Point {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey: PrivKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n _WINDOW_SIZE?: number;\n\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize: number) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n\n // A point on curve is valid if it conforms to equation.\n assertValidity(): void {\n if (this.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is wrong representation of ZERO and is always invalid.\n if (CURVE.allowInfinityPoint && !Fp.is0(this.py)) return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = this.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y)) throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right)) throw new Error('bad point: equation left != right');\n if (!this.isTorsionFree()) throw new Error('bad point: not in prime-order subgroup');\n }\n hasEvenY(): boolean {\n const { y } = this.toAffine();\n if (Fp.isOdd) return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n\n /**\n * Compare one point to another.\n */\n equals(other: Point): boolean {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate(): Point {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other: Point): Point {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n\n subtract(other: Point) {\n return this.add(other.negate());\n }\n\n private is0() {\n return this.equals(Point.ZERO);\n }\n private wNAF(n: bigint): { p: Point; f: Point } {\n return wnaf.wNAFCached(this, pointPrecomputes, n, (comp: Point[]) => {\n const toInv = Fp.invertBatch(comp.map((p) => p.pz));\n return comp.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n });\n }\n\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(n: bigint): Point {\n const I = Point.ZERO;\n if (n === _0n) return I;\n assertGE(n); // Will throw on 0\n if (n === _1n) return this;\n const { endo } = CURVE;\n if (!endo) return wnaf.unsafeLadder(this, n);\n\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = I;\n let k2p = I;\n let d: Point = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n) k1p = k1p.add(d);\n if (k2 & _1n) k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg) k1p = k1p.negate();\n if (k2neg) k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar: bigint): Point {\n assertGE(scalar);\n let n = scalar;\n let point: Point, fake: Point; // Fake point is used to const-time mult\n const { endo } = CURVE;\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n } else {\n const { p, f } = this.wNAF(n);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q: Point, a: bigint, b: bigint): Point | undefined {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (\n P: Point,\n a: bigint // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz?: T): AffinePoint {\n const { px: x, py: y, pz: z } = this;\n const is0 = this.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null) iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0) return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE)) throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n }\n isTorsionFree(): boolean {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n) return true; // No subgroups, always torsion-free\n if (isTorsionFree) return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor(): Point {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n) return this; // Fast-path\n if (clearCofactor) return clearCofactor(Point, this) as Point;\n return this.multiplyUnsafe(CURVE.h);\n }\n\n toRawBytes(isCompressed = true): Uint8Array {\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n\n toHex(isCompressed = true): string {\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point as ProjConstructor,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\n\n// Instance\nexport interface SignatureType {\n readonly r: bigint;\n readonly s: bigint;\n readonly recovery?: number;\n assertValidity(): void;\n addRecoveryBit(recovery: number): RecoveredSignatureType;\n hasHighS(): boolean;\n normalizeS(): SignatureType;\n recoverPublicKey(msgHash: Hex): ProjPointType;\n toCompactRawBytes(): Uint8Array;\n toCompactHex(): string;\n // DER-encoded\n toDERRawBytes(isCompressed?: boolean): Uint8Array;\n toDERHex(isCompressed?: boolean): string;\n}\nexport type RecoveredSignatureType = SignatureType & {\n readonly recovery: number;\n};\n// Static methods\nexport type SignatureConstructor = {\n new (r: bigint, s: bigint): SignatureType;\n fromCompact(hex: Hex): SignatureType;\n fromDER(hex: Hex): SignatureType;\n};\ntype SignatureLike = { r: bigint; s: bigint };\n\nexport type PubKey = Hex | ProjPointType;\n\nexport type CurveType = BasicWCurve & {\n hash: CHash; // CHash not FHash because we need outputLen for DRBG\n hmac: HmacFnSync;\n randomBytes: (bytesLength?: number) => Uint8Array;\n lowS?: boolean;\n bits2int?: (bytes: Uint8Array) => bigint;\n bits2int_modN?: (bytes: Uint8Array) => bigint;\n};\n\nfunction validateOpts(curve: CurveType) {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n },\n {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n }\n );\n return Object.freeze({ lowS: true, ...opts } as const);\n}\n\nexport type CurveFn = {\n CURVE: ReturnType;\n getPublicKey: (privateKey: PrivKey, isCompressed?: boolean) => Uint8Array;\n getSharedSecret: (privateA: PrivKey, publicB: Hex, isCompressed?: boolean) => Uint8Array;\n sign: (msgHash: Hex, privKey: PrivKey, opts?: SignOpts) => RecoveredSignatureType;\n verify: (signature: Hex | SignatureLike, msgHash: Hex, publicKey: Hex, opts?: VerOpts) => boolean;\n ProjectivePoint: ProjConstructor;\n Signature: SignatureConstructor;\n utils: {\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n isValidPrivateKey(privateKey: PrivKey): boolean;\n randomPrivateKey: () => Uint8Array;\n precompute: (windowSize?: number, point?: ProjPointType) => ProjPointType;\n };\n};\n\nexport function weierstrass(curveDef: CurveType): CurveFn {\n const CURVE = validateOpts(curveDef) as ReturnType;\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n\n function isValidFieldElement(num: bigint): boolean {\n return _0n < num && num < Fp.ORDER; // 0 is banned since it's not invertible FE\n }\n function modN(a: bigint) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a: bigint) {\n return mod.invert(a, CURVE_ORDER);\n }\n\n const {\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed: boolean): Uint8Array {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n } else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes: Uint8Array) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!isValidFieldElement(x)) throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y: bigint;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n } catch (sqrtError) {\n const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('Point is not on curve' + suffix);\n }\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd) y = Fp.neg(y);\n return { x, y };\n } else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n } else {\n throw new Error(\n `Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`\n );\n }\n },\n });\n const numToNByteStr = (num: bigint): string =>\n ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n\n function isBiggerThanHalfOrder(number: bigint) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n\n function normalizeS(s: bigint) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b: Uint8Array, from: number, to: number) => ut.bytesToNumberBE(b.slice(from, to));\n\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature implements SignatureType {\n constructor(\n readonly r: bigint,\n readonly s: bigint,\n readonly recovery?: number\n ) {\n this.assertValidity();\n }\n\n // pair (bytes of r, bytes of s)\n static fromCompact(hex: Hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex: Hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n\n assertValidity(): void {\n // can use assertGE here\n if (!isWithinCurveOrder(this.r)) throw new Error('r must be 0 < r < CURVE.n');\n if (!isWithinCurveOrder(this.s)) throw new Error('s must be 0 < s < CURVE.n');\n }\n\n addRecoveryBit(recovery: number): RecoveredSignature {\n return new Signature(this.r, this.s, recovery) as RecoveredSignature;\n }\n\n recoverPublicKey(msgHash: Hex): typeof Point.BASE {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec)) throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER) throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q) throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n\n // Signatures should be low-s, to prevent malleability.\n hasHighS(): boolean {\n return isBiggerThanHalfOrder(this.s);\n }\n\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n type RecoveredSignature = Signature & { recovery: number };\n\n const utils = {\n isValidPrivateKey(privateKey: PrivKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n } catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: (): Uint8Array => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE): typeof Point.BASE {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey: PrivKey, isCompressed = true): Uint8Array {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item: PrivKey | PubKey): boolean {\n const arr = ut.isBytes(item);\n const str = typeof item === 'string';\n const len = (arr || str) && (item as Hex).length;\n if (arr) return len === compressedLen || len === uncompressedLen;\n if (str) return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point) return true;\n return false;\n }\n\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA: PrivKey, publicB: Hex, isCompressed = true): Uint8Array {\n if (isProbPub(privateA)) throw new Error('first arg must be private key');\n if (!isProbPub(publicB)) throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int =\n CURVE.bits2int ||\n function (bytes: Uint8Array): bigint {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN =\n CURVE.bits2int_modN ||\n function (bytes: Uint8Array): bigint {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num: bigint): Uint8Array {\n if (typeof num !== 'bigint') throw new Error('bigint expected');\n if (!(_0n <= num && num < ORDER_MASK))\n throw new Error(`bigint expected < 2^${CURVE.nBitLength}`);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash: Hex, privateKey: PrivKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null) lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n if (prehash) msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null && ent !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes: Uint8Array): RecoveredSignature | undefined {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k)) return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n) return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n) return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery) as RecoveredSignature; // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts: SignOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts: VerOpts = { lowS: CURVE.lowS, prehash: false };\n\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash: Hex, privKey: PrivKey, opts = defaultSigOpts): RecoveredSignature {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(\n signature: Hex | SignatureLike,\n msgHash: Hex,\n publicKey: Hex,\n opts = defaultVerOpts\n ): boolean {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts) throw new Error('options.strict was renamed to lowS');\n const { lowS, prehash } = opts;\n\n let _sig: Signature | undefined = undefined;\n let P: ProjPointType;\n try {\n if (typeof sg === 'string' || ut.isBytes(sg)) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n } catch (derError) {\n if (!(derError instanceof DER.Err)) throw derError;\n _sig = Signature.fromCompact(sg);\n }\n } else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n } else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n } catch (error) {\n if ((error as Error).message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS()) return false;\n if (prehash) msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R) return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp: mod.IField, Z: T) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n) l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u: T, v: T): { isValid: boolean; value: T } => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u: T, v: T) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(\n Fp: mod.IField,\n opts: {\n A: T;\n B: T;\n Z: T;\n }\n) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd) throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u: T): { x: T; y: T } => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd!(u) === Fp.isOdd!(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaAction = void 0;\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nclass SolanaAction {\r\n constructor(mainSigner, root, instructions = [], computeBudget = 0, feeRate, signers, firstIxBeforeComputeBudget) {\r\n this.firstIxBeforeComputeBudget = false;\r\n this.mainSigner = mainSigner;\r\n this.root = root;\r\n this.instructions = Array.isArray(instructions) ? instructions : [instructions];\r\n this.computeBudget = computeBudget;\r\n this.feeRate = feeRate;\r\n this.signers = signers || [];\r\n if (firstIxBeforeComputeBudget != null)\r\n this.firstIxBeforeComputeBudget = firstIxBeforeComputeBudget;\r\n }\r\n estimateFee() {\r\n const mutableAccounts = [];\r\n this.instructions.forEach(ix => ix.keys.forEach(key => key.isWritable && mutableAccounts.push(key.pubkey)));\r\n return this.root.Fees.getFeeRate(mutableAccounts);\r\n }\r\n addIx(instruction, computeBudget, signers) {\r\n this.instructions.push(instruction);\r\n if (this.computeBudget == null) {\r\n this.computeBudget = computeBudget;\r\n }\r\n else {\r\n if (computeBudget != null)\r\n this.computeBudget += computeBudget;\r\n }\r\n }\r\n add(action) {\r\n return this.addAction(action);\r\n }\r\n addAction(action, index = this.instructions.length) {\r\n if (action.firstIxBeforeComputeBudget) {\r\n if (this.instructions.length > 0)\r\n throw new Error(\"Tried to add firstIxBeforeComputeBudget action to existing action with instructions\");\r\n this.firstIxBeforeComputeBudget = true;\r\n }\r\n if (this.firstIxBeforeComputeBudget && this.instructions.length > 0 && index === 0)\r\n throw new Error(\"Tried adding to firstIxBeforeComputeBudget action on 0th index\");\r\n if (!action.mainSigner.equals(this.mainSigner))\r\n throw new Error(\"Actions need to have the same signer!\");\r\n if (this.computeBudget == null && action.computeBudget != null)\r\n this.computeBudget = action.computeBudget;\r\n if (this.computeBudget != null && action.computeBudget != null)\r\n this.computeBudget += action.computeBudget;\r\n this.instructions.splice(index, 0, ...action.instructions);\r\n this.signers.push(...action.signers);\r\n if (this.feeRate == null)\r\n this.feeRate = action.feeRate;\r\n return this;\r\n }\r\n async tx(feeRate, block) {\r\n const tx = new web3_js_1.Transaction();\r\n tx.feePayer = this.mainSigner;\r\n if (feeRate == null)\r\n feeRate = this.feeRate;\r\n if (feeRate == null)\r\n feeRate = await this.estimateFee();\r\n let instructions = this.instructions;\r\n if (instructions.length > 0 && this.firstIxBeforeComputeBudget) {\r\n tx.add(this.instructions[0]);\r\n instructions = this.instructions.slice(1);\r\n }\r\n this.root.Fees.applyFeeRateBegin(tx, this.computeBudget, feeRate);\r\n instructions.forEach(ix => tx.add(ix));\r\n this.root.Fees.applyFeeRateEnd(tx, this.computeBudget, feeRate);\r\n if (block != null) {\r\n tx.recentBlockhash = block.blockhash;\r\n tx.lastValidBlockHeight = block.blockHeight + this.root.TX_SLOT_VALIDITY;\r\n }\r\n return {\r\n tx,\r\n signers: this.signers\r\n };\r\n }\r\n async addToTxs(txs, feeRate, block) {\r\n txs.push(await this.tx(feeRate, block));\r\n }\r\n ixsLength() {\r\n return this.instructions.length;\r\n }\r\n}\r\nexports.SolanaAction = SolanaAction;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetBase = void 0;\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst StarknetTransactions_1 = require(\"./modules/StarknetTransactions\");\r\nconst StarknetFees_1 = require(\"./modules/StarknetFees\");\r\nconst StarknetAddresses_1 = require(\"./modules/StarknetAddresses\");\r\nconst StarknetTokens_1 = require(\"./modules/StarknetTokens\");\r\nconst StarknetEvents_1 = require(\"./modules/StarknetEvents\");\r\nconst StarknetSignatures_1 = require(\"./modules/StarknetSignatures\");\r\nconst StarknetAccounts_1 = require(\"./modules/StarknetAccounts\");\r\nconst StarknetBlocks_1 = require(\"./modules/StarknetBlocks\");\r\nclass StarknetBase {\r\n constructor(chainId, provider, retryPolicy, solanaFeeEstimator = new StarknetFees_1.StarknetFees(provider)) {\r\n this.logger = (0, Utils_1.getLogger)(this.constructor.name + \": \");\r\n this.starknetChainId = chainId;\r\n this.provider = provider;\r\n this.retryPolicy = retryPolicy;\r\n this.Fees = solanaFeeEstimator;\r\n this.Tokens = new StarknetTokens_1.StarknetTokens(this);\r\n this.Transactions = new StarknetTransactions_1.StarknetTransactions(this);\r\n this.Addresses = new StarknetAddresses_1.StarknetAddresses(this);\r\n this.Signatures = new StarknetSignatures_1.StarknetSignatures(this);\r\n this.Events = new StarknetEvents_1.StarknetEvents(this);\r\n this.Accounts = new StarknetAccounts_1.StarknetAccounts(this);\r\n this.Blocks = new StarknetBlocks_1.StarknetBlocks(this);\r\n }\r\n}\r\nexports.StarknetBase = StarknetBase;\r\n","export * from './actions.js';\nexport * from './instructions.js';\nexport * from './state.js';\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createTransferCheckedInstruction } from '../instructions/transferChecked.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Transfer tokens from one account to another, asserting the token mint and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param source Source account\n * @param mint Mint for the account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function transferChecked(\n connection: Connection,\n payer: Signer,\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createTransferCheckedInstruction(\n source,\n mint,\n destination,\n ownerPublicKey,\n amount,\n decimals,\n multiSigners,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n",null,"/**\n * hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380).\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport type { AffinePoint, Group, GroupConstructor } from './curve.js';\nimport { type IField, mod } from './modular.js';\nimport type { CHash } from './utils.js';\nimport { abytes, bytesToNumberBE, concatBytes, utf8ToBytes, validateObject } from './utils.js';\n\nexport type UnicodeOrBytes = string | Uint8Array;\n\n/**\n * * `DST` is a domain separation tag, defined in section 2.2.5\n * * `p` characteristic of F, where F is a finite field of characteristic p and order q = p^m\n * * `m` is extension degree (1 for prime fields)\n * * `k` is the target security target in bits (e.g. 128), from section 5.1\n * * `expand` is `xmd` (SHA2, SHA3, BLAKE) or `xof` (SHAKE, BLAKE-XOF)\n * * `hash` conforming to `utils.CHash` interface, with `outputLen` / `blockLen` props\n */\nexport type Opts = {\n DST: UnicodeOrBytes;\n p: bigint;\n m: number;\n k: number;\n expand: 'xmd' | 'xof';\n hash: CHash;\n};\n\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value: number, length: number): Uint8Array {\n anum(value);\n anum(length);\n if (value < 0 || value >= 1 << (8 * length)) throw new Error('invalid I2OSP input: ' + value);\n const res = Array.from({ length }).fill(0) as number[];\n for (let i = length - 1; i >= 0; i--) {\n res[i] = value & 0xff;\n value >>>= 8;\n }\n return new Uint8Array(res);\n}\n\nfunction strxor(a: Uint8Array, b: Uint8Array): Uint8Array {\n const arr = new Uint8Array(a.length);\n for (let i = 0; i < a.length; i++) {\n arr[i] = a[i] ^ b[i];\n }\n return arr;\n}\n\nfunction anum(item: unknown): void {\n if (!Number.isSafeInteger(item)) throw new Error('number expected');\n}\n\n/**\n * Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits.\n * [RFC 9380 5.3.1](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.1).\n */\nexport function expand_message_xmd(\n msg: Uint8Array,\n DST: Uint8Array,\n lenInBytes: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n abytes(DST);\n anum(lenInBytes);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n if (DST.length > 255) DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));\n const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n const ell = Math.ceil(lenInBytes / b_in_bytes);\n if (lenInBytes > 65535 || ell > 255) throw new Error('expand_message_xmd: invalid lenInBytes');\n const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n const Z_pad = i2osp(0, r_in_bytes);\n const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n const b = new Array(ell);\n const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n for (let i = 1; i <= ell; i++) {\n const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n b[i] = H(concatBytes(...args));\n }\n const pseudo_random_bytes = concatBytes(...b);\n return pseudo_random_bytes.slice(0, lenInBytes);\n}\n\n/**\n * Produces a uniformly random byte string using an extendable-output function (XOF) H.\n * 1. The collision resistance of H MUST be at least k bits.\n * 2. H MUST be an XOF that has been proved indifferentiable from\n * a random oracle under a reasonable cryptographic assumption.\n * [RFC 9380 5.3.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.2).\n */\nexport function expand_message_xof(\n msg: Uint8Array,\n DST: Uint8Array,\n lenInBytes: number,\n k: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n abytes(DST);\n anum(lenInBytes);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n if (DST.length > 255) {\n const dkLen = Math.ceil((2 * k) / 8);\n DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n }\n if (lenInBytes > 65535 || DST.length > 255)\n throw new Error('expand_message_xof: invalid lenInBytes');\n return (\n H.create({ dkLen: lenInBytes })\n .update(msg)\n .update(i2osp(lenInBytes, 2))\n // 2. DST_prime = DST || I2OSP(len(DST), 1)\n .update(DST)\n .update(i2osp(DST.length, 1))\n .digest()\n );\n}\n\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * [RFC 9380 5.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.2).\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg: Uint8Array, count: number, options: Opts): bigint[][] {\n validateObject(options, {\n DST: 'stringOrUint8Array',\n p: 'bigint',\n m: 'isSafeInteger',\n k: 'isSafeInteger',\n hash: 'hash',\n });\n const { p, k, m, hash, expand, DST: _DST } = options;\n abytes(msg);\n anum(count);\n const DST = typeof _DST === 'string' ? utf8ToBytes(_DST) : _DST;\n const log2p = p.toString(2).length;\n const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n const len_in_bytes = count * m * L;\n let prb; // pseudo_random_bytes\n if (expand === 'xmd') {\n prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n } else if (expand === 'xof') {\n prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n } else if (expand === '_internal_pass') {\n // for internal tests only\n prb = msg;\n } else {\n throw new Error('expand must be \"xmd\" or \"xof\"');\n }\n const u = new Array(count);\n for (let i = 0; i < count; i++) {\n const e = new Array(m);\n for (let j = 0; j < m; j++) {\n const elm_offset = L * (j + i * m);\n const tv = prb.subarray(elm_offset, elm_offset + L);\n e[j] = mod(os2ip(tv), p);\n }\n u[i] = e;\n }\n return u;\n}\n\nexport type XY = (\n x: T,\n y: T\n) => {\n x: T;\n y: T;\n};\nexport function isogenyMap>(field: F, map: [T[], T[], T[], T[]]): XY {\n // Make same order as in spec\n const COEFF = map.map((i) => Array.from(i).reverse());\n return (x: T, y: T) => {\n const [xNum, xDen, yNum, yDen] = COEFF.map((val) =>\n val.reduce((acc, i) => field.add(field.mul(acc, x), i))\n );\n x = field.div(xNum, xDen); // xNum / xDen\n y = field.mul(y, field.div(yNum, yDen)); // y * (yNum / yDev)\n return { x: x, y: y };\n };\n}\n\n/** Point interface, which curves must implement to work correctly with the module. */\nexport interface H2CPoint extends Group> {\n add(rhs: H2CPoint): H2CPoint;\n toAffine(iz?: bigint): AffinePoint;\n clearCofactor(): H2CPoint;\n assertValidity(): void;\n}\n\nexport interface H2CPointConstructor extends GroupConstructor> {\n fromAffine(ap: AffinePoint): H2CPoint;\n}\n\nexport type MapToCurve = (scalar: bigint[]) => AffinePoint;\n\n// Separated from initialization opts, so users won't accidentally change per-curve parameters\n// (changing DST is ok!)\nexport type htfBasicOpts = { DST: UnicodeOrBytes };\nexport type HTFMethod = (msg: Uint8Array, options?: htfBasicOpts) => H2CPoint;\nexport type MapMethod = (scalars: bigint[]) => H2CPoint;\n\n/** Creates hash-to-curve methods from EC Point and mapToCurve function. */\nexport function createHasher(\n Point: H2CPointConstructor,\n mapToCurve: MapToCurve,\n def: Opts & { encodeDST?: UnicodeOrBytes }\n): {\n hashToCurve: HTFMethod;\n encodeToCurve: HTFMethod;\n mapToCurve: MapMethod;\n} {\n if (typeof mapToCurve !== 'function') throw new Error('mapToCurve() must be defined');\n return {\n // Encodes byte string to elliptic curve.\n // hash_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n hashToCurve(msg: Uint8Array, options?: htfBasicOpts): H2CPoint {\n const u = hash_to_field(msg, 2, { ...def, DST: def.DST, ...options } as Opts);\n const u0 = Point.fromAffine(mapToCurve(u[0]));\n const u1 = Point.fromAffine(mapToCurve(u[1]));\n const P = u0.add(u1).clearCofactor();\n P.assertValidity();\n return P;\n },\n\n // Encodes byte string to elliptic curve.\n // encode_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n encodeToCurve(msg: Uint8Array, options?: htfBasicOpts): H2CPoint {\n const u = hash_to_field(msg, 1, { ...def, DST: def.encodeDST, ...options } as Opts);\n const P = Point.fromAffine(mapToCurve(u[0])).clearCofactor();\n P.assertValidity();\n return P;\n },\n // Same as encodeToCurve, but without hash\n mapToCurve(scalars: bigint[]): H2CPoint {\n if (!Array.isArray(scalars)) throw new Error('mapToCurve: expected array of bigints');\n for (const i of scalars)\n if (typeof i !== 'bigint') throw new Error('mapToCurve: expected array of bigints');\n const P = Point.fromAffine(mapToCurve(scalars)).clearCofactor();\n P.assertValidity();\n return P;\n },\n };\n}\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","/*! MIT License. Copyright 2015-2018 Richard Moore . See LICENSE.txt. */\n(function(root) {\n \"use strict\";\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n // We cannot safely handle numbers beyond the safe range for integers\n if (value > Number.MAX_SAFE_INTEGER) {\n throw new Error('integer value out of safe range');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = parseInt(value / 256);\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define([], function() { return aesjs; });\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n","export * from './account.js';\nexport * from './mint.js';\nexport * from './multisig.js';\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface SyncNativeInstructionData {\n instruction: TokenInstruction.SyncNative;\n}\n\n/** TODO: docs */\nexport const syncNativeInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a SyncNative instruction\n *\n * @param account Native account to sync lamports from\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createSyncNativeInstruction(account: PublicKey, programId = TOKEN_PROGRAM_ID): TransactionInstruction {\n const keys = [{ pubkey: account, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(syncNativeInstructionData.span);\n syncNativeInstructionData.encode({ instruction: TokenInstruction.SyncNative }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid SyncNative instruction */\nexport interface DecodedSyncNativeInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.SyncNative;\n };\n}\n\n/**\n * Decode a SyncNative instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeSyncNativeInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedSyncNativeInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== syncNativeInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account },\n data,\n } = decodeSyncNativeInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.SyncNative) throw new TokenInvalidInstructionTypeError();\n if (!account) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n },\n data,\n };\n}\n\n/** A decoded, non-validated SyncNative instruction */\nexport interface DecodedSyncNativeInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a SyncNative instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeSyncNativeInstructionUnchecked({\n programId,\n keys: [account],\n data,\n}: TransactionInstruction): DecodedSyncNativeInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n },\n data: syncNativeInstructionData.decode(data),\n };\n}\n","'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport type { AffinePoint, Group, GroupConstructor } from './curve.js';\nimport { IField, mod } from './modular.js';\nimport type { CHash } from './utils.js';\nimport { abytes, bytesToNumberBE, concatBytes, utf8ToBytes, validateObject } from './utils.js';\n\n/**\n * * `DST` is a domain separation tag, defined in section 2.2.5\n * * `p` characteristic of F, where F is a finite field of characteristic p and order q = p^m\n * * `m` is extension degree (1 for prime fields)\n * * `k` is the target security target in bits (e.g. 128), from section 5.1\n * * `expand` is `xmd` (SHA2, SHA3, BLAKE) or `xof` (SHAKE, BLAKE-XOF)\n * * `hash` conforming to `utils.CHash` interface, with `outputLen` / `blockLen` props\n */\ntype UnicodeOrBytes = string | Uint8Array;\nexport type Opts = {\n DST: UnicodeOrBytes;\n p: bigint;\n m: number;\n k: number;\n expand: 'xmd' | 'xof';\n hash: CHash;\n};\n\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value: number, length: number): Uint8Array {\n if (value < 0 || value >= 1 << (8 * length)) {\n throw new Error(`bad I2OSP call: value=${value} length=${length}`);\n }\n const res = Array.from({ length }).fill(0) as number[];\n for (let i = length - 1; i >= 0; i--) {\n res[i] = value & 0xff;\n value >>>= 8;\n }\n return new Uint8Array(res);\n}\n\nfunction strxor(a: Uint8Array, b: Uint8Array): Uint8Array {\n const arr = new Uint8Array(a.length);\n for (let i = 0; i < a.length; i++) {\n arr[i] = a[i] ^ b[i];\n }\n return arr;\n}\n\nfunction anum(item: unknown): void {\n if (!Number.isSafeInteger(item)) throw new Error('number expected');\n}\n\n// Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits\n// https://www.rfc-editor.org/rfc/rfc9380#section-5.3.1\nexport function expand_message_xmd(\n msg: Uint8Array,\n DST: Uint8Array,\n lenInBytes: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n abytes(DST);\n anum(lenInBytes);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n if (DST.length > 255) DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));\n const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n const ell = Math.ceil(lenInBytes / b_in_bytes);\n if (ell > 255) throw new Error('Invalid xmd length');\n const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n const Z_pad = i2osp(0, r_in_bytes);\n const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n const b = new Array(ell);\n const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n for (let i = 1; i <= ell; i++) {\n const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n b[i] = H(concatBytes(...args));\n }\n const pseudo_random_bytes = concatBytes(...b);\n return pseudo_random_bytes.slice(0, lenInBytes);\n}\n\n// Produces a uniformly random byte string using an extendable-output function (XOF) H.\n// 1. The collision resistance of H MUST be at least k bits.\n// 2. H MUST be an XOF that has been proved indifferentiable from\n// a random oracle under a reasonable cryptographic assumption.\n// https://www.rfc-editor.org/rfc/rfc9380#section-5.3.2\nexport function expand_message_xof(\n msg: Uint8Array,\n DST: Uint8Array,\n lenInBytes: number,\n k: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n abytes(DST);\n anum(lenInBytes);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n if (DST.length > 255) {\n const dkLen = Math.ceil((2 * k) / 8);\n DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n }\n if (lenInBytes > 65535 || DST.length > 255)\n throw new Error('expand_message_xof: invalid lenInBytes');\n return (\n H.create({ dkLen: lenInBytes })\n .update(msg)\n .update(i2osp(lenInBytes, 2))\n // 2. DST_prime = DST || I2OSP(len(DST), 1)\n .update(DST)\n .update(i2osp(DST.length, 1))\n .digest()\n );\n}\n\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F\n * https://www.rfc-editor.org/rfc/rfc9380#section-5.2\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg: Uint8Array, count: number, options: Opts): bigint[][] {\n validateObject(options, {\n DST: 'stringOrUint8Array',\n p: 'bigint',\n m: 'isSafeInteger',\n k: 'isSafeInteger',\n hash: 'hash',\n });\n const { p, k, m, hash, expand, DST: _DST } = options;\n abytes(msg);\n anum(count);\n const DST = typeof _DST === 'string' ? utf8ToBytes(_DST) : _DST;\n const log2p = p.toString(2).length;\n const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n const len_in_bytes = count * m * L;\n let prb; // pseudo_random_bytes\n if (expand === 'xmd') {\n prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n } else if (expand === 'xof') {\n prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n } else if (expand === '_internal_pass') {\n // for internal tests only\n prb = msg;\n } else {\n throw new Error('expand must be \"xmd\" or \"xof\"');\n }\n const u = new Array(count);\n for (let i = 0; i < count; i++) {\n const e = new Array(m);\n for (let j = 0; j < m; j++) {\n const elm_offset = L * (j + i * m);\n const tv = prb.subarray(elm_offset, elm_offset + L);\n e[j] = mod(os2ip(tv), p);\n }\n u[i] = e;\n }\n return u;\n}\n\nexport function isogenyMap>(field: F, map: [T[], T[], T[], T[]]) {\n // Make same order as in spec\n const COEFF = map.map((i) => Array.from(i).reverse());\n return (x: T, y: T) => {\n const [xNum, xDen, yNum, yDen] = COEFF.map((val) =>\n val.reduce((acc, i) => field.add(field.mul(acc, x), i))\n );\n x = field.div(xNum, xDen); // xNum / xDen\n y = field.mul(y, field.div(yNum, yDen)); // y * (yNum / yDev)\n return { x, y };\n };\n}\n\nexport interface H2CPoint extends Group> {\n add(rhs: H2CPoint): H2CPoint;\n toAffine(iz?: bigint): AffinePoint;\n clearCofactor(): H2CPoint;\n assertValidity(): void;\n}\n\nexport interface H2CPointConstructor extends GroupConstructor> {\n fromAffine(ap: AffinePoint): H2CPoint;\n}\n\nexport type MapToCurve = (scalar: bigint[]) => AffinePoint;\n\n// Separated from initialization opts, so users won't accidentally change per-curve parameters\n// (changing DST is ok!)\nexport type htfBasicOpts = { DST: UnicodeOrBytes };\n\nexport function createHasher(\n Point: H2CPointConstructor,\n mapToCurve: MapToCurve,\n def: Opts & { encodeDST?: UnicodeOrBytes }\n) {\n if (typeof mapToCurve !== 'function') throw new Error('mapToCurve() must be defined');\n return {\n // Encodes byte string to elliptic curve.\n // hash_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n hashToCurve(msg: Uint8Array, options?: htfBasicOpts) {\n const u = hash_to_field(msg, 2, { ...def, DST: def.DST, ...options } as Opts);\n const u0 = Point.fromAffine(mapToCurve(u[0]));\n const u1 = Point.fromAffine(mapToCurve(u[1]));\n const P = u0.add(u1).clearCofactor();\n P.assertValidity();\n return P;\n },\n\n // Encodes byte string to elliptic curve.\n // encode_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n encodeToCurve(msg: Uint8Array, options?: htfBasicOpts) {\n const u = hash_to_field(msg, 1, { ...def, DST: def.encodeDST, ...options } as Opts);\n const P = Point.fromAffine(mapToCurve(u[0])).clearCofactor();\n P.assertValidity();\n return P;\n },\n // Same as encodeToCurve, but without hash\n mapToCurve(scalars: bigint[]) {\n if (!Array.isArray(scalars)) throw new Error('mapToCurve: expected array of bigints');\n for (const i of scalars)\n if (typeof i !== 'bigint')\n throw new Error(`mapToCurve: expected array of bigints, got ${i} in array`);\n const P = Point.fromAffine(mapToCurve(scalars)).clearCofactor();\n P.assertValidity();\n return P;\n },\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetAccounts = void 0;\r\nconst StarknetModule_1 = require(\"../StarknetModule\");\r\nclass StarknetAccounts extends StarknetModule_1.StarknetModule {\r\n async getAccountDeployTransaction(deploymentData) {\r\n const feeDetails = this.root.Fees.getFeeDetails(5000, 0, await this.root.Fees.getFeeRate());\r\n const details = {\r\n ...feeDetails,\r\n walletAddress: deploymentData.contractAddress,\r\n cairoVersion: \"1\",\r\n chainId: this.root.starknetChainId,\r\n nonce: 0,\r\n accountDeploymentData: [],\r\n skipValidate: false\r\n };\r\n return {\r\n type: \"DEPLOY_ACCOUNT\",\r\n tx: deploymentData,\r\n details\r\n };\r\n }\r\n}\r\nexports.StarknetAccounts = StarknetAccounts;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FromBTCLNSwap = exports.isFromBTCLNSwapInit = exports.FromBTCLNSwapState = void 0;\r\nconst bolt11_1 = require(\"@atomiqlabs/bolt11\");\r\nconst IFromBTCSwap_1 = require(\"../IFromBTCSwap\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst ISwap_1 = require(\"../../ISwap\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst LNURL_1 = require(\"../../../utils/LNURL\");\r\nconst UserError_1 = require(\"../../../errors/UserError\");\r\nconst IntermediaryAPI_1 = require(\"../../../intermediaries/IntermediaryAPI\");\r\nconst IntermediaryError_1 = require(\"../../../errors/IntermediaryError\");\r\nconst PaymentAuthError_1 = require(\"../../../errors/PaymentAuthError\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst Tokens_1 = require(\"../../Tokens\");\r\nvar FromBTCLNSwapState;\r\n(function (FromBTCLNSwapState) {\r\n FromBTCLNSwapState[FromBTCLNSwapState[\"FAILED\"] = -4] = \"FAILED\";\r\n FromBTCLNSwapState[FromBTCLNSwapState[\"QUOTE_EXPIRED\"] = -3] = \"QUOTE_EXPIRED\";\r\n FromBTCLNSwapState[FromBTCLNSwapState[\"QUOTE_SOFT_EXPIRED\"] = -2] = \"QUOTE_SOFT_EXPIRED\";\r\n FromBTCLNSwapState[FromBTCLNSwapState[\"EXPIRED\"] = -1] = \"EXPIRED\";\r\n FromBTCLNSwapState[FromBTCLNSwapState[\"PR_CREATED\"] = 0] = \"PR_CREATED\";\r\n FromBTCLNSwapState[FromBTCLNSwapState[\"PR_PAID\"] = 1] = \"PR_PAID\";\r\n FromBTCLNSwapState[FromBTCLNSwapState[\"CLAIM_COMMITED\"] = 2] = \"CLAIM_COMMITED\";\r\n FromBTCLNSwapState[FromBTCLNSwapState[\"CLAIM_CLAIMED\"] = 3] = \"CLAIM_CLAIMED\";\r\n})(FromBTCLNSwapState = exports.FromBTCLNSwapState || (exports.FromBTCLNSwapState = {}));\r\nfunction isFromBTCLNSwapInit(obj) {\r\n return typeof obj.pr === \"string\" &&\r\n typeof obj.secret === \"string\" &&\r\n (obj.lnurl == null || typeof (obj.lnurl) === \"string\") &&\r\n (obj.lnurlK1 == null || typeof (obj.lnurlK1) === \"string\") &&\r\n (obj.lnurlCallback == null || typeof (obj.lnurlCallback) === \"string\") &&\r\n (0, ISwap_1.isISwapInit)(obj);\r\n}\r\nexports.isFromBTCLNSwapInit = isFromBTCLNSwapInit;\r\nclass FromBTCLNSwap extends IFromBTCSwap_1.IFromBTCSwap {\r\n getSwapData() {\r\n return this.data ?? this.initialSwapData;\r\n }\r\n constructor(wrapper, initOrObject) {\r\n if (isFromBTCLNSwapInit(initOrObject))\r\n initOrObject.url += \"/frombtcln\";\r\n super(wrapper, initOrObject);\r\n this.inputToken = Tokens_1.BitcoinTokens.BTCLN;\r\n this.TYPE = SwapType_1.SwapType.FROM_BTCLN;\r\n this.lnurlFailSignal = new AbortController();\r\n this.prPosted = false;\r\n if (isFromBTCLNSwapInit(initOrObject)) {\r\n this.state = FromBTCLNSwapState.PR_CREATED;\r\n }\r\n else {\r\n this.pr = initOrObject.pr;\r\n this.secret = initOrObject.secret;\r\n this.initialSwapData = initOrObject.initialSwapData == null ? null : base_1.SwapData.deserialize(initOrObject.initialSwapData);\r\n this.lnurl = initOrObject.lnurl;\r\n this.lnurlK1 = initOrObject.lnurlK1;\r\n this.lnurlCallback = initOrObject.lnurlCallback;\r\n this.prPosted = initOrObject.prPosted;\r\n if (this.state === FromBTCLNSwapState.PR_CREATED && this.data != null) {\r\n this.initialSwapData = this.data;\r\n delete this.data;\r\n }\r\n }\r\n this.tryCalculateSwapFee();\r\n this.logger = (0, Utils_1.getLogger)(\"FromBTCLN(\" + this.getIdentifierHashString() + \"): \");\r\n }\r\n upgradeVersion() {\r\n if (this.version == null) {\r\n switch (this.state) {\r\n case -2:\r\n this.state = FromBTCLNSwapState.QUOTE_EXPIRED;\r\n break;\r\n case -1:\r\n this.state = FromBTCLNSwapState.FAILED;\r\n break;\r\n case 0:\r\n this.state = FromBTCLNSwapState.PR_CREATED;\r\n break;\r\n case 1:\r\n this.state = FromBTCLNSwapState.PR_PAID;\r\n break;\r\n case 2:\r\n this.state = FromBTCLNSwapState.CLAIM_COMMITED;\r\n break;\r\n case 3:\r\n this.state = FromBTCLNSwapState.CLAIM_CLAIMED;\r\n break;\r\n }\r\n this.version = 1;\r\n }\r\n }\r\n //////////////////////////////\r\n //// Getters & utils\r\n getInputTxId() {\r\n return this.getPaymentHash().toString(\"hex\");\r\n }\r\n getIdentifierHash() {\r\n const paymentHashBuffer = this.getPaymentHash();\r\n if (this.randomNonce == null)\r\n return paymentHashBuffer;\r\n return buffer_1.Buffer.concat([paymentHashBuffer, buffer_1.Buffer.from(this.randomNonce, \"hex\")]);\r\n }\r\n getPaymentHash() {\r\n if (this.pr == null)\r\n return null;\r\n const decodedPR = (0, bolt11_1.decode)(this.pr);\r\n return buffer_1.Buffer.from(decodedPR.tagsObject.payment_hash, \"hex\");\r\n }\r\n getAddress() {\r\n return this.pr;\r\n }\r\n /**\r\n * Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap\r\n */\r\n getLightningInvoice() {\r\n return this.pr;\r\n }\r\n getQrData() {\r\n return \"lightning:\" + this.getLightningInvoice().toUpperCase();\r\n }\r\n /**\r\n * Returns timeout time (in UNIX milliseconds) when the LN invoice will expire\r\n */\r\n getTimeoutTime() {\r\n if (this.pr == null)\r\n return null;\r\n const decoded = (0, bolt11_1.decode)(this.pr);\r\n return (decoded.timeExpireDate * 1000);\r\n }\r\n /**\r\n * Returns timeout time (in UNIX milliseconds) when the on-chain address will expire and no funds should be sent\r\n * to that address anymore\r\n */\r\n getHtlcTimeoutTime() {\r\n return Number(this.wrapper.getHtlcTimeout(this.data)) * 1000;\r\n }\r\n isFinished() {\r\n return this.state === FromBTCLNSwapState.CLAIM_CLAIMED || this.state === FromBTCLNSwapState.QUOTE_EXPIRED || this.state === FromBTCLNSwapState.FAILED;\r\n }\r\n isClaimable() {\r\n return this.state === FromBTCLNSwapState.PR_PAID || this.state === FromBTCLNSwapState.CLAIM_COMMITED;\r\n }\r\n isSuccessful() {\r\n return this.state === FromBTCLNSwapState.CLAIM_CLAIMED;\r\n }\r\n isFailed() {\r\n return this.state === FromBTCLNSwapState.FAILED || this.state === FromBTCLNSwapState.EXPIRED;\r\n }\r\n isQuoteExpired() {\r\n return this.state === FromBTCLNSwapState.QUOTE_EXPIRED;\r\n }\r\n isQuoteSoftExpired() {\r\n return this.state === FromBTCLNSwapState.QUOTE_EXPIRED || this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED;\r\n }\r\n isQuoteValid() {\r\n if (this.state === FromBTCLNSwapState.PR_CREATED ||\r\n (this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED && this.signatureData == null)) {\r\n return Promise.resolve(this.getTimeoutTime() > Date.now());\r\n }\r\n return super.isQuoteValid();\r\n }\r\n canCommit() {\r\n return this.state === FromBTCLNSwapState.PR_PAID;\r\n }\r\n canClaim() {\r\n return this.state === FromBTCLNSwapState.CLAIM_COMMITED;\r\n }\r\n //////////////////////////////\r\n //// Amounts & fees\r\n getInput() {\r\n const parsed = (0, bolt11_1.decode)(this.pr);\r\n const amount = (BigInt(parsed.millisatoshis) + 999n) / 1000n;\r\n return (0, Tokens_1.toTokenAmount)(amount, this.inputToken, this.wrapper.prices);\r\n }\r\n /**\r\n * Estimated transaction fee for commit & claim txs combined\r\n */\r\n async getCommitAndClaimFee() {\r\n const swapContract = this.wrapper.contract;\r\n const feeRate = this.feeRate ?? await swapContract.getInitFeeRate(this.getSwapData().getOfferer(), this.getSwapData().getClaimer(), this.getSwapData().getToken(), this.getSwapData().getClaimHash());\r\n const commitFee = await (swapContract.getRawCommitFee != null ?\r\n swapContract.getRawCommitFee(this.getSwapData(), feeRate) :\r\n swapContract.getCommitFee(this.getSwapData(), feeRate));\r\n const claimFee = await (swapContract.getRawClaimFee != null ?\r\n swapContract.getRawClaimFee(this.getInitiator(), this.getSwapData(), feeRate) :\r\n swapContract.getClaimFee(this.getInitiator(), this.getSwapData(), feeRate));\r\n return commitFee + claimFee;\r\n }\r\n async getSmartChainNetworkFee() {\r\n return (0, Tokens_1.toTokenAmount)(await this.getCommitAndClaimFee(), this.wrapper.getNativeToken(), this.wrapper.prices);\r\n }\r\n async hasEnoughForTxFees() {\r\n const [balance, feeRate] = await Promise.all([\r\n this.wrapper.contract.getBalance(this.getInitiator(), this.wrapper.contract.getNativeCurrencyAddress(), false),\r\n this.feeRate != null ? Promise.resolve(this.feeRate) : this.wrapper.contract.getInitFeeRate(this.getSwapData().getOfferer(), this.getSwapData().getClaimer(), this.getSwapData().getToken(), this.getSwapData().getClaimHash())\r\n ]);\r\n const commitFee = await this.wrapper.contract.getCommitFee(this.getSwapData(), feeRate);\r\n const claimFee = await this.wrapper.contract.getClaimFee(this.getInitiator(), this.getSwapData(), feeRate);\r\n const totalFee = commitFee + claimFee + this.getSwapData().getTotalDeposit();\r\n return {\r\n enoughBalance: balance >= totalFee,\r\n balance: (0, Tokens_1.toTokenAmount)(balance, this.wrapper.getNativeToken(), this.wrapper.prices),\r\n required: (0, Tokens_1.toTokenAmount)(totalFee, this.wrapper.getNativeToken(), this.wrapper.prices)\r\n };\r\n }\r\n //////////////////////////////\r\n //// Payment\r\n /**\r\n * Waits till an LN payment is received by the intermediary and client can continue commiting & claiming the HTLC\r\n *\r\n * @param abortSignal Abort signal to stop waiting for payment\r\n * @param checkIntervalSeconds How often to poll the intermediary for answer\r\n */\r\n async waitForPayment(abortSignal, checkIntervalSeconds = 5) {\r\n if (this.state !== FromBTCLNSwapState.PR_CREATED &&\r\n (this.state !== FromBTCLNSwapState.QUOTE_SOFT_EXPIRED || this.signatureData != null))\r\n throw new Error(\"Must be in PR_CREATED state!\");\r\n const abortController = new AbortController();\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => abortController.abort(abortSignal.reason));\r\n let save = false;\r\n if (this.lnurl != null && !this.prPosted) {\r\n LNURL_1.LNURL.postInvoiceToLNURLWithdraw({ k1: this.lnurlK1, callback: this.lnurlCallback }, this.pr).catch(e => {\r\n this.lnurlFailSignal.abort(e);\r\n });\r\n this.prPosted = true;\r\n save ||= true;\r\n }\r\n if (!this.initiated) {\r\n this.initiated = true;\r\n save ||= true;\r\n }\r\n if (save)\r\n await this._saveAndEmit();\r\n let lnurlFailListener = () => abortController.abort(this.lnurlFailSignal.signal.reason);\r\n this.lnurlFailSignal.signal.addEventListener(\"abort\", lnurlFailListener);\r\n this.lnurlFailSignal.signal.throwIfAborted();\r\n let resp = { code: IntermediaryAPI_1.PaymentAuthorizationResponseCodes.PENDING, msg: \"\" };\r\n while (!abortController.signal.aborted && resp.code === IntermediaryAPI_1.PaymentAuthorizationResponseCodes.PENDING) {\r\n resp = await IntermediaryAPI_1.IntermediaryAPI.getPaymentAuthorization(this.url, this.getPaymentHash().toString(\"hex\"));\r\n if (resp.code === IntermediaryAPI_1.PaymentAuthorizationResponseCodes.PENDING)\r\n await (0, Utils_1.timeoutPromise)(checkIntervalSeconds * 1000, abortController.signal);\r\n }\r\n this.lnurlFailSignal.signal.removeEventListener(\"abort\", lnurlFailListener);\r\n abortController.signal.throwIfAborted();\r\n if (resp.code === IntermediaryAPI_1.PaymentAuthorizationResponseCodes.AUTH_DATA) {\r\n const sigData = resp.data;\r\n const swapData = new this.wrapper.swapDataDeserializer(resp.data.data);\r\n await this.checkIntermediaryReturnedAuthData(this.getInitiator(), swapData, sigData);\r\n this.expiry = await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.getInitAuthorizationExpiry(swapData, sigData));\r\n if (this.state === FromBTCLNSwapState.PR_CREATED || this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED) {\r\n delete this.initialSwapData;\r\n this.data = swapData;\r\n this.signatureData = {\r\n prefix: sigData.prefix,\r\n timeout: sigData.timeout,\r\n signature: sigData.signature\r\n };\r\n await this._saveAndEmit(FromBTCLNSwapState.PR_PAID);\r\n }\r\n return;\r\n }\r\n if (this.state === FromBTCLNSwapState.PR_CREATED || this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED) {\r\n if (resp.code === IntermediaryAPI_1.PaymentAuthorizationResponseCodes.EXPIRED) {\r\n await this._saveAndEmit(FromBTCLNSwapState.QUOTE_EXPIRED);\r\n }\r\n throw new PaymentAuthError_1.PaymentAuthError(resp.msg, resp.code, resp.data);\r\n }\r\n }\r\n /**\r\n * Checks whether the LP received the LN payment and we can continue by committing & claiming the HTLC on-chain\r\n *\r\n * @param save If the new swap state should be saved\r\n */\r\n async checkIntermediaryPaymentReceived(save = true) {\r\n if (this.state === FromBTCLNSwapState.PR_PAID ||\r\n this.state === FromBTCLNSwapState.CLAIM_COMMITED ||\r\n this.state === FromBTCLNSwapState.CLAIM_CLAIMED ||\r\n this.state === FromBTCLNSwapState.FAILED)\r\n return true;\r\n if (this.state === FromBTCLNSwapState.QUOTE_EXPIRED || (this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED && this.signatureData != null))\r\n return false;\r\n const resp = await IntermediaryAPI_1.IntermediaryAPI.getPaymentAuthorization(this.url, this.getPaymentHash().toString(\"hex\"));\r\n switch (resp.code) {\r\n case IntermediaryAPI_1.PaymentAuthorizationResponseCodes.AUTH_DATA:\r\n const data = new this.wrapper.swapDataDeserializer(resp.data.data);\r\n try {\r\n await this.checkIntermediaryReturnedAuthData(this.getInitiator(), data, resp.data);\r\n this.expiry = await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.getInitAuthorizationExpiry(data, resp.data));\r\n this.state = FromBTCLNSwapState.PR_PAID;\r\n delete this.initialSwapData;\r\n this.data = data;\r\n this.signatureData = {\r\n prefix: resp.data.prefix,\r\n timeout: resp.data.timeout,\r\n signature: resp.data.signature\r\n };\r\n this.initiated = true;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n catch (e) { }\r\n return null;\r\n case IntermediaryAPI_1.PaymentAuthorizationResponseCodes.EXPIRED:\r\n this.state = FromBTCLNSwapState.QUOTE_EXPIRED;\r\n this.initiated = true;\r\n if (save)\r\n await this._saveAndEmit();\r\n return false;\r\n default:\r\n return null;\r\n }\r\n }\r\n /**\r\n * Checks the data returned by the intermediary in the payment auth request\r\n *\r\n * @param signer Smart chain signer's address initiating the swap\r\n * @param data Parsed swap data as returned by the intermediary\r\n * @param signature Signature data as returned by the intermediary\r\n * @protected\r\n * @throws {IntermediaryError} If the returned are not valid\r\n * @throws {SignatureVerificationError} If the returned signature is not valid\r\n * @throws {Error} If the swap is already committed on-chain\r\n */\r\n async checkIntermediaryReturnedAuthData(signer, data, signature) {\r\n data.setClaimer(signer);\r\n if (data.getOfferer() !== this.getSwapData().getOfferer())\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid offerer used\");\r\n if (!data.isToken(this.getSwapData().getToken()))\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid token used\");\r\n if (data.getSecurityDeposit() > this.getSwapData().getSecurityDeposit())\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid security deposit!\");\r\n if (data.getAmount() < this.getSwapData().getAmount())\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid amount received!\");\r\n if (data.getClaimHash() !== this.getSwapData().getClaimHash())\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid payment hash used!\");\r\n if (!data.isDepositToken(this.getSwapData().getDepositToken()))\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid deposit token used!\");\r\n await Promise.all([\r\n (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.isValidInitAuthorization(data, signature, this.feeRate), null, base_1.SignatureVerificationError),\r\n (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.getCommitStatus(data.getClaimer(), data)).then(status => {\r\n if (status !== base_1.SwapCommitStatus.NOT_COMMITED)\r\n throw new Error(\"Swap already committed on-chain!\");\r\n })\r\n ]);\r\n }\r\n //////////////////////////////\r\n //// Commit\r\n /**\r\n * Commits the swap on-chain, locking the tokens from the intermediary in an HTLC\r\n *\r\n * @param signer Signer to sign the transactions with, must be the same as used in the initialization\r\n * @param abortSignal Abort signal to stop waiting for the transaction confirmation and abort\r\n * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet\r\n * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)\r\n * @throws {Error} If invalid signer is provided that doesn't match the swap data\r\n */\r\n async commit(signer, abortSignal, skipChecks) {\r\n this.checkSigner(signer);\r\n const result = await this.wrapper.contract.sendAndConfirm(signer, await this.txsCommit(skipChecks), true, abortSignal);\r\n this.commitTxId = result[0];\r\n if (this.state === FromBTCLNSwapState.PR_PAID || this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED) {\r\n await this._saveAndEmit(FromBTCLNSwapState.CLAIM_COMMITED);\r\n }\r\n return result[0];\r\n }\r\n async waitTillCommited(abortSignal) {\r\n if (this.state === FromBTCLNSwapState.CLAIM_COMMITED || this.state === FromBTCLNSwapState.CLAIM_CLAIMED)\r\n return Promise.resolve();\r\n if (this.state !== FromBTCLNSwapState.PR_PAID && (this.state !== FromBTCLNSwapState.QUOTE_SOFT_EXPIRED && this.signatureData != null))\r\n throw new Error(\"Invalid state\");\r\n const abortController = (0, Utils_1.extendAbortController)(abortSignal);\r\n const result = await Promise.race([\r\n this.watchdogWaitTillCommited(abortController.signal),\r\n this.waitTillState(FromBTCLNSwapState.CLAIM_COMMITED, \"gte\", abortController.signal).then(() => 0)\r\n ]);\r\n abortController.abort();\r\n if (result === 0)\r\n this.logger.debug(\"waitTillCommited(): Resolved from state changed\");\r\n if (result === true)\r\n this.logger.debug(\"waitTillCommited(): Resolved from watchdog - commited\");\r\n if (result === false) {\r\n this.logger.debug(\"waitTillCommited(): Resolved from watchdog - signature expired\");\r\n if (this.state === FromBTCLNSwapState.PR_PAID ||\r\n this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED) {\r\n await this._saveAndEmit(FromBTCLNSwapState.QUOTE_EXPIRED);\r\n }\r\n return;\r\n }\r\n if (this.state === FromBTCLNSwapState.PR_PAID ||\r\n this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED) {\r\n await this._saveAndEmit(FromBTCLNSwapState.CLAIM_COMMITED);\r\n }\r\n }\r\n //////////////////////////////\r\n //// Claim\r\n /**\r\n * Returns transactions required for claiming the HTLC and finishing the swap by revealing the HTLC secret\r\n * (hash preimage)\r\n *\r\n * @param signer Optional signer address to use for claiming the swap, can also be different from the initializer\r\n * @throws {Error} If in invalid state (must be CLAIM_COMMITED)\r\n */\r\n txsClaim(signer) {\r\n if (this.state !== FromBTCLNSwapState.CLAIM_COMMITED)\r\n throw new Error(\"Must be in CLAIM_COMMITED state!\");\r\n return this.wrapper.contract.txsClaimWithSecret(signer ?? this.getInitiator(), this.data, this.secret, true, true);\r\n }\r\n /**\r\n * Claims and finishes the swap\r\n *\r\n * @param signer Signer to sign the transactions with, can also be different to the initializer\r\n * @param abortSignal Abort signal to stop waiting for transaction confirmation\r\n */\r\n async claim(signer, abortSignal) {\r\n const result = await this.wrapper.contract.sendAndConfirm(signer, await this.txsClaim(), true, abortSignal);\r\n this.claimTxId = result[0];\r\n if (FromBTCLNSwapState.CLAIM_COMMITED || FromBTCLNSwapState.EXPIRED || FromBTCLNSwapState.FAILED) {\r\n await this._saveAndEmit(FromBTCLNSwapState.CLAIM_CLAIMED);\r\n }\r\n return result[0];\r\n }\r\n /**\r\n * Waits till the swap is successfully claimed\r\n *\r\n * @param abortSignal AbortSignal\r\n * @throws {Error} If swap is in invalid state (must be BTC_TX_CONFIRMED)\r\n * @throws {Error} If the LP refunded sooner than we were able to claim\r\n */\r\n async waitTillClaimed(abortSignal) {\r\n if (this.state === FromBTCLNSwapState.CLAIM_CLAIMED)\r\n return Promise.resolve();\r\n if (this.state !== FromBTCLNSwapState.CLAIM_COMMITED)\r\n throw new Error(\"Invalid state (not CLAIM_COMMITED)\");\r\n const abortController = new AbortController();\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => abortController.abort(abortSignal.reason));\r\n const res = await Promise.race([\r\n this.watchdogWaitTillResult(abortController.signal),\r\n this.waitTillState(FromBTCLNSwapState.CLAIM_CLAIMED, \"eq\", abortController.signal).then(() => 0),\r\n this.waitTillState(FromBTCLNSwapState.EXPIRED, \"eq\", abortController.signal).then(() => 1),\r\n ]);\r\n abortController.abort();\r\n if (res === 0) {\r\n this.logger.debug(\"waitTillClaimed(): Resolved from state change (CLAIM_CLAIMED)\");\r\n return;\r\n }\r\n if (res === 1) {\r\n this.logger.debug(\"waitTillClaimed(): Resolved from state change (EXPIRED)\");\r\n throw new Error(\"Swap expired during claiming\");\r\n }\r\n this.logger.debug(\"waitTillClaimed(): Resolved from watchdog\");\r\n if (res === base_1.SwapCommitStatus.PAID) {\r\n if (this.state !== FromBTCLNSwapState.CLAIM_CLAIMED)\r\n await this._saveAndEmit(FromBTCLNSwapState.CLAIM_CLAIMED);\r\n }\r\n if (res === base_1.SwapCommitStatus.NOT_COMMITED || res === base_1.SwapCommitStatus.EXPIRED) {\r\n if (this.state !== FromBTCLNSwapState.CLAIM_CLAIMED &&\r\n this.state !== FromBTCLNSwapState.FAILED)\r\n await this._saveAndEmit(FromBTCLNSwapState.FAILED);\r\n }\r\n }\r\n //////////////////////////////\r\n //// Commit & claim\r\n canCommitAndClaimInOneShot() {\r\n return this.wrapper.contract.initAndClaimWithSecret != null;\r\n }\r\n /**\r\n * Commits and claims the swap, in a way that the transactions can be signed together by the underlying provider and\r\n * then sent sequentially\r\n *\r\n * @param signer Signer to sign the transactions with, must be the same as used in the initialization\r\n * @param abortSignal Abort signal to stop waiting for the transaction confirmation and abort\r\n * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet\r\n * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)\r\n * @throws {Error} If in invalid state (must be PR_PAID or CLAIM_COMMITED)\r\n * @throws {Error} If invalid signer is provided that doesn't match the swap data\r\n */\r\n async commitAndClaim(signer, abortSignal, skipChecks) {\r\n if (!this.canCommitAndClaimInOneShot())\r\n throw new Error(\"Cannot commitAndClaim in single action, please run commit and claim separately!\");\r\n this.checkSigner(signer);\r\n if (this.state === FromBTCLNSwapState.CLAIM_COMMITED)\r\n return [null, await this.claim(signer)];\r\n const result = await this.wrapper.contract.sendAndConfirm(signer, await this.txsCommitAndClaim(skipChecks), true, abortSignal);\r\n this.commitTxId = result[0] || this.commitTxId;\r\n this.claimTxId = result[result.length - 1] || this.claimTxId;\r\n if (this.state !== FromBTCLNSwapState.CLAIM_CLAIMED) {\r\n await this._saveAndEmit(FromBTCLNSwapState.CLAIM_CLAIMED);\r\n }\r\n }\r\n /**==\r\n * Returns transactions for both commit & claim operation together, such that they can be signed all at once by\r\n * the wallet. CAUTION: transactions must be sent sequentially, such that the claim (2nd) transaction is only\r\n * sent after the commit (1st) transaction confirms. Failure to do so can reveal the HTLC pre-image too soon,\r\n * opening a possibility for the LP to steal funds.\r\n *\r\n * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet\r\n * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)\r\n *\r\n * @throws {Error} If in invalid state (must be PR_PAID or CLAIM_COMMITED)\r\n */\r\n async txsCommitAndClaim(skipChecks) {\r\n if (this.state === FromBTCLNSwapState.CLAIM_COMMITED)\r\n return await this.txsClaim();\r\n if (this.state !== FromBTCLNSwapState.PR_PAID && (this.state !== FromBTCLNSwapState.QUOTE_SOFT_EXPIRED || this.signatureData == null))\r\n throw new Error(\"Must be in PR_PAID state!\");\r\n const initTxs = await this.txsCommit(skipChecks);\r\n const claimTxs = await this.wrapper.contract.txsClaimWithSecret(this.getInitiator(), this.data, this.secret, true, true, null, true);\r\n return initTxs.concat(claimTxs);\r\n }\r\n //////////////////////////////\r\n //// LNURL\r\n /**\r\n * Is this an LNURL-withdraw swap?\r\n */\r\n isLNURL() {\r\n return this.lnurl != null;\r\n }\r\n /**\r\n * Gets the used LNURL or null if this is not an LNURL-withdraw swap\r\n */\r\n getLNURL() {\r\n return this.lnurl;\r\n }\r\n /**\r\n * Pay the generated lightning network invoice with LNURL-withdraw\r\n */\r\n async settleWithLNURLWithdraw(lnurl) {\r\n if (this.lnurl != null)\r\n throw new Error(\"Cannot settle LNURL-withdraw swap with different LNURL\");\r\n let lnurlParams;\r\n if (typeof (lnurl) === \"string\") {\r\n const parsedLNURL = await LNURL_1.LNURL.getLNURL(lnurl);\r\n if (parsedLNURL == null || parsedLNURL.tag !== \"withdrawRequest\")\r\n throw new UserError_1.UserError(\"Invalid LNURL-withdraw to settle the swap\");\r\n lnurlParams = parsedLNURL;\r\n }\r\n else {\r\n lnurlParams = lnurl.params;\r\n }\r\n LNURL_1.LNURL.useLNURLWithdraw(lnurlParams, this.pr).catch(e => this.lnurlFailSignal.abort(e));\r\n this.lnurl = lnurlParams.url;\r\n this.lnurlCallback = lnurlParams.callback;\r\n this.lnurlK1 = lnurlParams.k1;\r\n this.prPosted = true;\r\n await this._saveAndEmit();\r\n }\r\n //////////////////////////////\r\n //// Storage\r\n serialize() {\r\n return {\r\n ...super.serialize(),\r\n pr: this.pr,\r\n secret: this.secret,\r\n lnurl: this.lnurl,\r\n lnurlK1: this.lnurlK1,\r\n lnurlCallback: this.lnurlCallback,\r\n prPosted: this.prPosted,\r\n initialSwapData: this.initialSwapData == null ? null : this.initialSwapData.serialize()\r\n };\r\n }\r\n //////////////////////////////\r\n //// Swap ticks & sync\r\n /**\r\n * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain\r\n * data\r\n *\r\n * @private\r\n */\r\n async syncStateFromChain() {\r\n if (this.state === FromBTCLNSwapState.PR_PAID || (this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED && this.signatureData != null)) {\r\n //Check if it's already committed\r\n const status = await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.getCommitStatus(this.getInitiator(), this.data));\r\n switch (status) {\r\n case base_1.SwapCommitStatus.COMMITED:\r\n this.state = FromBTCLNSwapState.CLAIM_COMMITED;\r\n return true;\r\n case base_1.SwapCommitStatus.EXPIRED:\r\n this.state = FromBTCLNSwapState.QUOTE_EXPIRED;\r\n return true;\r\n case base_1.SwapCommitStatus.PAID:\r\n this.state = FromBTCLNSwapState.CLAIM_CLAIMED;\r\n return true;\r\n }\r\n return false;\r\n }\r\n if (this.state === FromBTCLNSwapState.CLAIM_COMMITED || this.state === FromBTCLNSwapState.EXPIRED) {\r\n //Check if it's already successfully paid\r\n const commitStatus = await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.getCommitStatus(this.getInitiator(), this.data));\r\n if (commitStatus === base_1.SwapCommitStatus.PAID) {\r\n this.state = FromBTCLNSwapState.CLAIM_CLAIMED;\r\n return true;\r\n }\r\n if (commitStatus === base_1.SwapCommitStatus.NOT_COMMITED || commitStatus === base_1.SwapCommitStatus.EXPIRED) {\r\n this.state = FromBTCLNSwapState.FAILED;\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n async _sync(save) {\r\n let changed = false;\r\n if (this.state === FromBTCLNSwapState.PR_CREATED || (this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED && this.signatureData == null)) {\r\n if (this.getTimeoutTime() < Date.now()) {\r\n this.state = FromBTCLNSwapState.QUOTE_SOFT_EXPIRED;\r\n changed ||= true;\r\n }\r\n const result = await this.checkIntermediaryPaymentReceived(false);\r\n if (result !== null)\r\n changed ||= true;\r\n }\r\n changed ||= await this.syncStateFromChain();\r\n if (this.state === FromBTCLNSwapState.PR_PAID || (this.state === FromBTCLNSwapState.QUOTE_SOFT_EXPIRED && this.signatureData != null)) {\r\n if (!await this.isQuoteValid()) {\r\n this.state = FromBTCLNSwapState.QUOTE_EXPIRED;\r\n changed ||= true;\r\n }\r\n }\r\n if (save && changed)\r\n await this._saveAndEmit();\r\n return changed;\r\n }\r\n async _tick(save) {\r\n switch (this.state) {\r\n case FromBTCLNSwapState.PR_CREATED:\r\n if (this.getTimeoutTime() < Date.now()) {\r\n this.state = FromBTCLNSwapState.QUOTE_SOFT_EXPIRED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n break;\r\n case FromBTCLNSwapState.PR_PAID:\r\n if (this.expiry < Date.now()) {\r\n this.state = FromBTCLNSwapState.QUOTE_SOFT_EXPIRED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n break;\r\n case FromBTCLNSwapState.CLAIM_COMMITED:\r\n const expired = await this.wrapper.contract.isExpired(this.getInitiator(), this.data);\r\n if (expired) {\r\n this.state = FromBTCLNSwapState.EXPIRED;\r\n if (save)\r\n await this._saveAndEmit();\r\n return true;\r\n }\r\n break;\r\n }\r\n }\r\n}\r\nexports.FromBTCLNSwap = FromBTCLNSwap;\r\n","import { u8 } from '@solana/buffer-layout';\nimport type { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionTypeError } from '../errors.js';\nimport type { DecodedAmountToUiAmountInstruction } from './amountToUiAmount.js';\nimport { decodeAmountToUiAmountInstruction } from './amountToUiAmount.js';\nimport type { DecodedApproveInstruction } from './approve.js';\nimport { decodeApproveInstruction } from './approve.js';\nimport type { DecodedApproveCheckedInstruction } from './approveChecked.js';\nimport { decodeApproveCheckedInstruction } from './approveChecked.js';\nimport type { DecodedBurnInstruction } from './burn.js';\nimport { decodeBurnInstruction } from './burn.js';\nimport type { DecodedBurnCheckedInstruction } from './burnChecked.js';\nimport { decodeBurnCheckedInstruction } from './burnChecked.js';\nimport type { DecodedCloseAccountInstruction } from './closeAccount.js';\nimport { decodeCloseAccountInstruction } from './closeAccount.js';\nimport type { DecodedFreezeAccountInstruction } from './freezeAccount.js';\nimport { decodeFreezeAccountInstruction } from './freezeAccount.js';\nimport type { DecodedInitializeAccountInstruction } from './initializeAccount.js';\nimport { decodeInitializeAccountInstruction } from './initializeAccount.js';\nimport type { DecodedInitializeAccount2Instruction } from './initializeAccount2.js';\nimport { decodeInitializeAccount2Instruction } from './initializeAccount2.js';\nimport type { DecodedInitializeAccount3Instruction } from './initializeAccount3.js';\nimport { decodeInitializeAccount3Instruction } from './initializeAccount3.js';\nimport type { DecodedInitializeMintInstruction } from './initializeMint.js';\nimport { decodeInitializeMintInstruction } from './initializeMint.js';\nimport type { DecodedInitializeMint2Instruction } from './initializeMint2.js';\nimport { decodeInitializeMint2Instruction } from './initializeMint2.js';\nimport type { DecodedInitializeMultisigInstruction } from './initializeMultisig.js';\nimport { decodeInitializeMultisigInstruction } from './initializeMultisig.js';\nimport type { DecodedMintToInstruction } from './mintTo.js';\nimport { decodeMintToInstruction } from './mintTo.js';\nimport type { DecodedMintToCheckedInstruction } from './mintToChecked.js';\nimport { decodeMintToCheckedInstruction } from './mintToChecked.js';\nimport type { DecodedRevokeInstruction } from './revoke.js';\nimport { decodeRevokeInstruction } from './revoke.js';\nimport type { DecodedSetAuthorityInstruction } from './setAuthority.js';\nimport { decodeSetAuthorityInstruction } from './setAuthority.js';\nimport type { DecodedSyncNativeInstruction } from './syncNative.js';\nimport { decodeSyncNativeInstruction } from './syncNative.js';\nimport type { DecodedThawAccountInstruction } from './thawAccount.js';\nimport { decodeThawAccountInstruction } from './thawAccount.js';\nimport type { DecodedTransferInstruction } from './transfer.js';\nimport { decodeTransferInstruction } from './transfer.js';\nimport type { DecodedTransferCheckedInstruction } from './transferChecked.js';\nimport { decodeTransferCheckedInstruction } from './transferChecked.js';\nimport { TokenInstruction } from './types.js';\nimport type { DecodedUiAmountToAmountInstruction } from './uiAmountToAmount.js';\nimport { decodeUiAmountToAmountInstruction } from './uiAmountToAmount.js';\n\n/** TODO: docs */\nexport type DecodedInstruction =\n | DecodedInitializeMintInstruction\n | DecodedInitializeAccountInstruction\n | DecodedInitializeMultisigInstruction\n | DecodedTransferInstruction\n | DecodedApproveInstruction\n | DecodedRevokeInstruction\n | DecodedSetAuthorityInstruction\n | DecodedMintToInstruction\n | DecodedBurnInstruction\n | DecodedCloseAccountInstruction\n | DecodedFreezeAccountInstruction\n | DecodedThawAccountInstruction\n | DecodedTransferCheckedInstruction\n | DecodedApproveCheckedInstruction\n | DecodedMintToCheckedInstruction\n | DecodedBurnCheckedInstruction\n | DecodedInitializeAccount2Instruction\n | DecodedSyncNativeInstruction\n | DecodedInitializeAccount3Instruction\n | DecodedInitializeMint2Instruction\n | DecodedAmountToUiAmountInstruction\n | DecodedUiAmountToAmountInstruction\n // | DecodedInitializeMultisig2Instruction\n // TODO: implement ^ and remove `never`\n | never;\n\n/** TODO: docs */\nexport function decodeInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInstruction {\n if (!instruction.data.length) throw new TokenInvalidInstructionDataError();\n\n const type = u8().decode(instruction.data);\n if (type === TokenInstruction.InitializeMint) return decodeInitializeMintInstruction(instruction, programId);\n if (type === TokenInstruction.InitializeAccount) return decodeInitializeAccountInstruction(instruction, programId);\n if (type === TokenInstruction.InitializeMultisig)\n return decodeInitializeMultisigInstruction(instruction, programId);\n if (type === TokenInstruction.Transfer) return decodeTransferInstruction(instruction, programId);\n if (type === TokenInstruction.Approve) return decodeApproveInstruction(instruction, programId);\n if (type === TokenInstruction.Revoke) return decodeRevokeInstruction(instruction, programId);\n if (type === TokenInstruction.SetAuthority) return decodeSetAuthorityInstruction(instruction, programId);\n if (type === TokenInstruction.MintTo) return decodeMintToInstruction(instruction, programId);\n if (type === TokenInstruction.Burn) return decodeBurnInstruction(instruction, programId);\n if (type === TokenInstruction.CloseAccount) return decodeCloseAccountInstruction(instruction, programId);\n if (type === TokenInstruction.FreezeAccount) return decodeFreezeAccountInstruction(instruction, programId);\n if (type === TokenInstruction.ThawAccount) return decodeThawAccountInstruction(instruction, programId);\n if (type === TokenInstruction.TransferChecked) return decodeTransferCheckedInstruction(instruction, programId);\n if (type === TokenInstruction.ApproveChecked) return decodeApproveCheckedInstruction(instruction, programId);\n if (type === TokenInstruction.MintToChecked) return decodeMintToCheckedInstruction(instruction, programId);\n if (type === TokenInstruction.BurnChecked) return decodeBurnCheckedInstruction(instruction, programId);\n if (type === TokenInstruction.InitializeAccount2)\n return decodeInitializeAccount2Instruction(instruction, programId);\n if (type === TokenInstruction.SyncNative) return decodeSyncNativeInstruction(instruction, programId);\n if (type === TokenInstruction.InitializeAccount3)\n return decodeInitializeAccount3Instruction(instruction, programId);\n if (type === TokenInstruction.InitializeMint2) return decodeInitializeMint2Instruction(instruction, programId);\n if (type === TokenInstruction.AmountToUiAmount) return decodeAmountToUiAmountInstruction(instruction, programId);\n if (type === TokenInstruction.UiAmountToAmount) return decodeUiAmountToAmountInstruction(instruction, programId);\n // TODO: implement\n if (type === TokenInstruction.InitializeMultisig2) throw new TokenInvalidInstructionTypeError();\n\n throw new TokenInvalidInstructionTypeError();\n}\n\n/** TODO: docs */\nexport function isInitializeMintInstruction(decoded: DecodedInstruction): decoded is DecodedInitializeMintInstruction {\n return decoded.data.instruction === TokenInstruction.InitializeMint;\n}\n\n/** TODO: docs */\nexport function isInitializeAccountInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeAccountInstruction {\n return decoded.data.instruction === TokenInstruction.InitializeAccount;\n}\n\n/** TODO: docs */\nexport function isInitializeMultisigInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeMultisigInstruction {\n return decoded.data.instruction === TokenInstruction.InitializeMultisig;\n}\n\n/** TODO: docs */\nexport function isTransferInstruction(decoded: DecodedInstruction): decoded is DecodedTransferInstruction {\n return decoded.data.instruction === TokenInstruction.Transfer;\n}\n\n/** TODO: docs */\nexport function isApproveInstruction(decoded: DecodedInstruction): decoded is DecodedApproveInstruction {\n return decoded.data.instruction === TokenInstruction.Approve;\n}\n\n/** TODO: docs */\nexport function isRevokeInstruction(decoded: DecodedInstruction): decoded is DecodedRevokeInstruction {\n return decoded.data.instruction === TokenInstruction.Revoke;\n}\n\n/** TODO: docs */\nexport function isSetAuthorityInstruction(decoded: DecodedInstruction): decoded is DecodedSetAuthorityInstruction {\n return decoded.data.instruction === TokenInstruction.SetAuthority;\n}\n\n/** TODO: docs */\nexport function isMintToInstruction(decoded: DecodedInstruction): decoded is DecodedMintToInstruction {\n return decoded.data.instruction === TokenInstruction.MintTo;\n}\n\n/** TODO: docs */\nexport function isBurnInstruction(decoded: DecodedInstruction): decoded is DecodedBurnInstruction {\n return decoded.data.instruction === TokenInstruction.Burn;\n}\n\n/** TODO: docs */\nexport function isCloseAccountInstruction(decoded: DecodedInstruction): decoded is DecodedCloseAccountInstruction {\n return decoded.data.instruction === TokenInstruction.CloseAccount;\n}\n\n/** TODO: docs */\nexport function isFreezeAccountInstruction(decoded: DecodedInstruction): decoded is DecodedFreezeAccountInstruction {\n return decoded.data.instruction === TokenInstruction.FreezeAccount;\n}\n\n/** TODO: docs */\nexport function isThawAccountInstruction(decoded: DecodedInstruction): decoded is DecodedThawAccountInstruction {\n return decoded.data.instruction === TokenInstruction.ThawAccount;\n}\n\n/** TODO: docs */\nexport function isTransferCheckedInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedTransferCheckedInstruction {\n return decoded.data.instruction === TokenInstruction.TransferChecked;\n}\n\n/** TODO: docs */\nexport function isApproveCheckedInstruction(decoded: DecodedInstruction): decoded is DecodedApproveCheckedInstruction {\n return decoded.data.instruction === TokenInstruction.ApproveChecked;\n}\n\n/** TODO: docs */\nexport function isMintToCheckedInstruction(decoded: DecodedInstruction): decoded is DecodedMintToCheckedInstruction {\n return decoded.data.instruction === TokenInstruction.MintToChecked;\n}\n\n/** TODO: docs */\nexport function isBurnCheckedInstruction(decoded: DecodedInstruction): decoded is DecodedBurnCheckedInstruction {\n return decoded.data.instruction === TokenInstruction.BurnChecked;\n}\n\n/** TODO: docs */\nexport function isInitializeAccount2Instruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeAccount2Instruction {\n return decoded.data.instruction === TokenInstruction.InitializeAccount2;\n}\n\n/** TODO: docs */\nexport function isSyncNativeInstruction(decoded: DecodedInstruction): decoded is DecodedSyncNativeInstruction {\n return decoded.data.instruction === TokenInstruction.SyncNative;\n}\n\n/** TODO: docs */\nexport function isInitializeAccount3Instruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeAccount3Instruction {\n return decoded.data.instruction === TokenInstruction.InitializeAccount3;\n}\n\n/** TODO: docs, implement */\n// export function isInitializeMultisig2Instruction(\n// decoded: DecodedInstruction\n// ): decoded is DecodedInitializeMultisig2Instruction {\n// return decoded.data.instruction === TokenInstruction.InitializeMultisig2;\n// }\n\n/** TODO: docs */\nexport function isInitializeMint2Instruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeMint2Instruction {\n return decoded.data.instruction === TokenInstruction.InitializeMint2;\n}\n\n/** TODO: docs */\nexport function isAmountToUiAmountInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedAmountToUiAmountInstruction {\n return decoded.data.instruction === TokenInstruction.AmountToUiAmount;\n}\n\n/** TODO: docs */\nexport function isUiamountToAmountInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedUiAmountToAmountInstruction {\n return decoded.data.instruction === TokenInstruction.UiAmountToAmount;\n}\n","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n// Initial state:\n// first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nclass SHA256 extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n A = SHA256_IV[0] | 0;\n B = SHA256_IV[1] | 0;\n C = SHA256_IV[2] | 0;\n D = SHA256_IV[3] | 0;\n E = SHA256_IV[4] | 0;\n F = SHA256_IV[5] | 0;\n G = SHA256_IV[6] | 0;\n H = SHA256_IV[7] | 0;\n\n constructor() {\n super(64, 32, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n A = 0xc1059ed8 | 0;\n B = 0x367cd507 | 0;\n C = 0x3070dd17 | 0;\n D = 0xf70e5939 | 0;\n E = 0xffc00b31 | 0;\n F = 0x68581511 | 0;\n G = 0x64f98fa7 | 0;\n H = 0xbefa4fa4 | 0;\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaDataAccount = exports.StoredDataAccount = void 0;\r\nconst SolanaSwapModule_1 = require(\"../SolanaSwapModule\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst SolanaAction_1 = require(\"../../base/SolanaAction\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst randomBytes = require(\"randombytes\");\r\nconst SolanaSigner_1 = require(\"../../wallet/SolanaSigner\");\r\nclass StoredDataAccount {\r\n constructor(accountKeyOrData, owner) {\r\n if (accountKeyOrData instanceof web3_js_1.PublicKey) {\r\n this.accountKey = accountKeyOrData;\r\n this.owner = owner;\r\n }\r\n else {\r\n this.accountKey = new web3_js_1.PublicKey(accountKeyOrData.accountKey);\r\n this.owner = new web3_js_1.PublicKey(accountKeyOrData.owner);\r\n }\r\n }\r\n serialize() {\r\n return {\r\n accountKey: this.accountKey.toBase58(),\r\n owner: this.owner.toBase58()\r\n };\r\n }\r\n}\r\nexports.StoredDataAccount = StoredDataAccount;\r\nclass SolanaDataAccount extends SolanaSwapModule_1.SolanaSwapModule {\r\n /**\r\n * Action for initialization of the data account\r\n *\r\n * @param signer\r\n * @param accountKey\r\n * @param dataLength\r\n * @private\r\n */\r\n async InitDataAccount(signer, accountKey, dataLength) {\r\n const accountSize = 32 + dataLength;\r\n const lamportsDeposit = await (0, Utils_1.tryWithRetries)(() => this.connection.getMinimumBalanceForRentExemption(accountSize), this.retryPolicy);\r\n return new SolanaAction_1.SolanaAction(signer, this.root, [\r\n web3_js_1.SystemProgram.createAccount({\r\n fromPubkey: signer,\r\n newAccountPubkey: accountKey.publicKey,\r\n lamports: lamportsDeposit,\r\n space: accountSize,\r\n programId: this.program.programId\r\n }),\r\n await this.program.methods\r\n .initData()\r\n .accounts({\r\n signer,\r\n data: accountKey.publicKey\r\n })\r\n .instruction(),\r\n ], SolanaDataAccount.CUCosts.DATA_CREATE, null, [accountKey]);\r\n }\r\n /**\r\n * Action for closing the specific data account\r\n *\r\n * @param signer\r\n * @param publicKey\r\n */\r\n async CloseDataAccount(signer, publicKey) {\r\n return new SolanaAction_1.SolanaAction(signer, this.root, await this.program.methods\r\n .closeData()\r\n .accounts({\r\n signer,\r\n data: publicKey\r\n })\r\n .instruction(), SolanaDataAccount.CUCosts.DATA_REMOVE, await this.root.Fees.getFeeRate([signer, publicKey]));\r\n }\r\n /**\r\n * Action for writing data to a data account, writes up to sizeLimit starting from the offset position of the\r\n * provided writeData buffer\r\n *\r\n * @param signer\r\n * @param accountKey account public key to write to\r\n * @param writeData buffer holding the write data\r\n * @param offset data from buffer starting at offset are written\r\n * @param sizeLimit maximum amount of data to be written to the data account in this action\r\n * @private\r\n * @returns {Promise<{bytesWritten: number, action: SolanaAction}>} bytes written to the data account & action\r\n */\r\n async WriteData(signer, accountKey, writeData, offset, sizeLimit) {\r\n const writeLen = Math.min(writeData.length - offset, sizeLimit);\r\n return {\r\n bytesWritten: writeLen,\r\n action: new SolanaAction_1.SolanaAction(signer, this.root, await this.program.methods\r\n .writeData(offset, writeData.slice(offset, offset + writeLen))\r\n .accounts({\r\n signer,\r\n data: accountKey.publicKey\r\n })\r\n .instruction(), SolanaDataAccount.CUCosts.DATA_WRITE)\r\n };\r\n }\r\n constructor(root, storage) {\r\n super(root);\r\n this.SwapTxDataAlt = this.root.keypair((reversedTxId, signer) => [Buffer.from(signer.secretKey), reversedTxId]);\r\n this.SwapTxDataAltBuffer = this.root.keypair((reversedTxId, secret) => [secret, reversedTxId]);\r\n this.storage = storage;\r\n }\r\n /**\r\n * Saves data account to the storage, the storage is required such that we are able to close the accounts later\r\n * manually in case the claim doesn't happen (expires due to fees, etc.)\r\n *\r\n * @param signer\r\n * @param publicKey\r\n * @private\r\n */\r\n saveDataAccount(signer, publicKey) {\r\n return this.storage.saveData(publicKey.toBase58(), new StoredDataAccount(publicKey, signer));\r\n }\r\n /**\r\n * Initializes the data account handler, loads the existing data accounts which should be checked and closed\r\n */\r\n async init() {\r\n await this.storage.init();\r\n const loadedData = await this.storage.loadData(StoredDataAccount);\r\n this.logger.info(\"init(): initialized & loaded stored data accounts, count: \" + loadedData.length);\r\n }\r\n /**\r\n * Removes data account from the list of accounts that should be checked for reclaiming the locked SOL, this should\r\n * be called after a batch of transactions claiming the swap was confirmed\r\n *\r\n * @param publicKey\r\n */\r\n removeDataAccount(publicKey) {\r\n return this.storage.removeData(publicKey.toBase58());\r\n }\r\n async getDataAccountsInfo(signer) {\r\n const closePublicKeys = [];\r\n let totalLocked = 0n;\r\n for (let key in this.storage.data) {\r\n const { accountKey, owner } = this.storage.data[key];\r\n if (!owner.equals(signer))\r\n continue;\r\n try {\r\n const fetchedDataAccount = await this.connection.getAccountInfo(accountKey);\r\n if (fetchedDataAccount == null) {\r\n await this.removeDataAccount(accountKey);\r\n continue;\r\n }\r\n closePublicKeys.push(accountKey);\r\n totalLocked += BigInt(fetchedDataAccount.lamports);\r\n }\r\n catch (e) { }\r\n }\r\n return {\r\n closePublicKeys,\r\n count: closePublicKeys.length,\r\n totalValue: totalLocked\r\n };\r\n }\r\n /**\r\n * Sweeps all old data accounts, reclaiming the SOL locked in the PDAs\r\n */\r\n async sweepDataAccounts(signer) {\r\n const { closePublicKeys, totalValue } = await this.getDataAccountsInfo(signer.getPublicKey());\r\n if (closePublicKeys.length === 0) {\r\n this.logger.debug(\"sweepDataAccounts(): no old data accounts found, no need to close any!\");\r\n return;\r\n }\r\n this.logger.debug(\"sweepDataAccounts(): closing old data accounts: \", closePublicKeys);\r\n let txns = [];\r\n for (let publicKey of closePublicKeys) {\r\n await (await this.CloseDataAccount(signer.getPublicKey(), publicKey)).addToTxs(txns);\r\n }\r\n const result = await this.root.Transactions.sendAndConfirm(signer, txns, true, null, true);\r\n this.logger.info(\"sweepDataAccounts(): old data accounts closed: \" +\r\n closePublicKeys.map(pk => pk.toBase58()).join());\r\n for (let publicKey of closePublicKeys) {\r\n await this.removeDataAccount(publicKey);\r\n }\r\n return {\r\n txIds: result,\r\n count: closePublicKeys.length,\r\n totalValue: totalValue\r\n };\r\n }\r\n /**\r\n * Adds the transactions writing (and also initializing if it doesn't exist) data to the data account\r\n *\r\n * @param signer\r\n * @param reversedTxId reversed btc tx id is used to derive the data account address\r\n * @param writeData full data to be written to the data account\r\n * @param txs solana transactions array, where txns for writing & initializing will be added\r\n * @param feeRate fee rate to use for the transactions\r\n */\r\n async addTxsWriteData(signer, reversedTxId, writeData, txs, feeRate) {\r\n let txDataKey;\r\n let fetchedDataAccount = null;\r\n if (signer instanceof SolanaSigner_1.SolanaSigner && signer.keypair != null) {\r\n txDataKey = this.SwapTxDataAlt(reversedTxId, signer.keypair);\r\n fetchedDataAccount = await (0, Utils_1.tryWithRetries)(() => this.connection.getAccountInfo(txDataKey.publicKey), this.retryPolicy);\r\n }\r\n else {\r\n const secret = randomBytes(32);\r\n txDataKey = this.SwapTxDataAltBuffer(reversedTxId, secret);\r\n }\r\n const signerKey = signer instanceof SolanaSigner_1.SolanaSigner ? signer.getPublicKey() : signer;\r\n let pointer = 0;\r\n if (fetchedDataAccount == null) {\r\n const action = new SolanaAction_1.SolanaAction(signerKey, this.root);\r\n action.add(await this.InitDataAccount(signerKey, txDataKey, writeData.length));\r\n const { bytesWritten, action: writeAction } = await this.WriteData(signerKey, txDataKey, writeData, pointer, 420);\r\n this.logger.debug(\"addTxsWriteData(): Write partial data (\" + pointer + \" .. \" + (pointer + bytesWritten) + \")/\" + writeData.length +\r\n \" key: \" + txDataKey.publicKey.toBase58());\r\n pointer += bytesWritten;\r\n action.add(writeAction);\r\n await action.addToTxs(txs, feeRate);\r\n await this.saveDataAccount(signerKey, txDataKey.publicKey);\r\n }\r\n while (pointer < writeData.length) {\r\n const { bytesWritten, action } = await this.WriteData(signerKey, txDataKey, writeData, pointer, 950);\r\n this.logger.debug(\"addTxsWriteData(): Write partial data (\" + pointer + \" .. \" + (pointer + bytesWritten) + \")/\" + writeData.length +\r\n \" key: \" + txDataKey.publicKey.toBase58());\r\n pointer += bytesWritten;\r\n await action.addToTxs(txs, feeRate);\r\n }\r\n return txDataKey.publicKey;\r\n }\r\n}\r\nexports.SolanaDataAccount = SolanaDataAccount;\r\nSolanaDataAccount.CUCosts = {\r\n DATA_REMOVE: 50000,\r\n DATA_CREATE_AND_WRITE: 15000,\r\n DATA_CREATE: 5000,\r\n DATA_WRITE: 15000\r\n};\r\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createApproveCheckedInstruction } from '../instructions/approveChecked.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Approve a delegate to transfer up to a maximum number of tokens from an account, asserting the token mint and\n * decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Address of the account\n * @param delegate Account authorized to perform a transfer tokens from the source account\n * @param owner Owner of the source account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param decimals Number of decimals in approve amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function approveChecked(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n account: PublicKey,\n delegate: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createApproveCheckedInstruction(\n account,\n mint,\n delegate,\n ownerPublicKey,\n amount,\n decimals,\n multiSigners,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","import { bech32, bech32m, type Coder, createBase58check, hex } from '@scure/base';\nimport * as P from 'micro-packed';\nimport { TaprootControlBlock, type TransactionInput } from './psbt.js';\nimport { OpToNum, Script, type ScriptType, VarBytes } from './script.js';\nimport * as u from './utils.js';\nimport { type BTC_NETWORK, type Bytes, NETWORK } from './utils.js';\n\n// We need following items:\n// - encode/decode output script\n// - generate input script\n// - generate address/output/redeem from user input\n// P2ret represents generic interface for all p2* methods\nexport type P2Ret = {\n type: string;\n script: Bytes;\n address?: string;\n redeemScript?: Bytes;\n witnessScript?: Bytes;\n};\n\n// Pay to Anchor (P2A)\ntype OutP2AType = { type: 'p2a'; script: Bytes };\nconst OutP2A: Coder = {\n encode(from: ScriptType): OutP2AType | undefined {\n if (from.length !== 2 || from[0] !== 1 || !u.isBytes(from[1]) || hex.encode(from[1]) !== '4e73')\n return;\n return { type: 'p2a', script: Script.encode(from) };\n },\n decode: (to: OutP2AType): OptScript => {\n if (to.type !== 'p2a') return;\n return [1, hex.decode('4e73')];\n },\n};\n\n// Public Key (P2PK)\ntype OutPKType = { type: 'pk'; pubkey: Bytes };\nexport type OptScript = ScriptType | undefined;\n\nfunction isValidPubkey(pub: Bytes, type: u.PubT): boolean {\n try {\n u.validatePubkey(pub, type);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nconst OutPK: Coder = {\n encode(from: ScriptType): OutPKType | undefined {\n if (\n from.length !== 2 ||\n !u.isBytes(from[0]) ||\n !isValidPubkey(from[0], u.PubT.ecdsa) ||\n from[1] !== 'CHECKSIG'\n )\n return;\n return { type: 'pk', pubkey: from[0] };\n },\n decode: (to: OutPKType): OptScript => (to.type === 'pk' ? [to.pubkey, 'CHECKSIG'] : undefined),\n};\n\n// Public Key Hash (P2PKH)\ntype OutPKHType = { type: 'pkh'; hash: Bytes };\nconst OutPKH: Coder = {\n encode(from: ScriptType): OutPKHType | undefined {\n if (from.length !== 5 || from[0] !== 'DUP' || from[1] !== 'HASH160' || !u.isBytes(from[2]))\n return;\n if (from[3] !== 'EQUALVERIFY' || from[4] !== 'CHECKSIG') return;\n return { type: 'pkh', hash: from[2] };\n },\n decode: (to: OutPKHType): OptScript =>\n to.type === 'pkh' ? ['DUP', 'HASH160', to.hash, 'EQUALVERIFY', 'CHECKSIG'] : undefined,\n};\n// Script Hash (P2SH)\ntype OutSHType = { type: 'sh'; hash: Bytes };\nconst OutSH: Coder = {\n encode(from: ScriptType): OutSHType | undefined {\n if (from.length !== 3 || from[0] !== 'HASH160' || !u.isBytes(from[1]) || from[2] !== 'EQUAL')\n return;\n return { type: 'sh', hash: from[1] };\n },\n decode: (to: OutSHType): OptScript =>\n to.type === 'sh' ? ['HASH160', to.hash, 'EQUAL'] : undefined,\n};\n\n// Witness Script Hash (P2WSH)\ntype OutWSHType = { type: 'wsh'; hash: Bytes };\nconst OutWSH: Coder = {\n encode(from: ScriptType): OutWSHType | undefined {\n if (from.length !== 2 || from[0] !== 0 || !u.isBytes(from[1])) return;\n if (from[1].length !== 32) return;\n return { type: 'wsh', hash: from[1] };\n },\n decode: (to: OutWSHType): OptScript => (to.type === 'wsh' ? [0, to.hash] : undefined),\n};\n\n// Witness Public Key Hash (P2WPKH)\ntype OutWPKHType = { type: 'wpkh'; hash: Bytes };\nconst OutWPKH: Coder = {\n encode(from: ScriptType): OutWPKHType | undefined {\n if (from.length !== 2 || from[0] !== 0 || !u.isBytes(from[1])) return;\n if (from[1].length !== 20) return;\n return { type: 'wpkh', hash: from[1] };\n },\n decode: (to: OutWPKHType): OptScript => (to.type === 'wpkh' ? [0, to.hash] : undefined),\n};\n\n// Multisig (P2MS)\ntype OutMSType = { type: 'ms'; pubkeys: Bytes[]; m: number };\nconst OutMS: Coder = {\n encode(from: ScriptType): OutMSType | undefined {\n const last = from.length - 1;\n if (from[last] !== 'CHECKMULTISIG') return;\n const m = from[0];\n const n = from[last - 1];\n if (typeof m !== 'number' || typeof n !== 'number') return;\n const pubkeys = from.slice(1, -2);\n if (n !== pubkeys.length) return;\n for (const pub of pubkeys) if (!u.isBytes(pub)) return;\n return { type: 'ms', m, pubkeys: pubkeys as Bytes[] }; // we don't need n, since it is the same as pubkeys\n },\n // checkmultisig(n, ..pubkeys, m)\n decode: (to: OutMSType): OptScript =>\n to.type === 'ms' ? [to.m, ...to.pubkeys, to.pubkeys.length, 'CHECKMULTISIG'] : undefined,\n};\n// Taproot (P2TR)\ntype OutTRType = { type: 'tr'; pubkey: Bytes };\nconst OutTR: Coder = {\n encode(from: ScriptType): OutTRType | undefined {\n if (from.length !== 2 || from[0] !== 1 || !u.isBytes(from[1])) return;\n return { type: 'tr', pubkey: from[1] };\n },\n decode: (to: OutTRType): OptScript => (to.type === 'tr' ? [1, to.pubkey] : undefined),\n};\n\n// Taproot N-of-N multisig (P2TR_NS)\ntype OutTRNSType = { type: 'tr_ns'; pubkeys: Bytes[] };\nconst OutTRNS: Coder = {\n encode(from: ScriptType): OutTRNSType | undefined {\n const last = from.length - 1;\n if (from[last] !== 'CHECKSIG') return;\n const pubkeys = [];\n // On error return, since it can be different script\n for (let i = 0; i < last; i++) {\n const elm = from[i];\n if (i & 1) {\n if (elm !== 'CHECKSIGVERIFY' || i === last - 1) return;\n continue;\n }\n if (!u.isBytes(elm)) return;\n pubkeys.push(elm);\n }\n return { type: 'tr_ns', pubkeys };\n },\n decode: (to: OutTRNSType): OptScript => {\n if (to.type !== 'tr_ns') return;\n const out: ScriptType = [];\n for (let i = 0; i < to.pubkeys.length - 1; i++) out.push(to.pubkeys[i], 'CHECKSIGVERIFY');\n out.push(to.pubkeys[to.pubkeys.length - 1], 'CHECKSIG');\n return out;\n },\n};\n\n// Taproot M-of-N Multisig (P2TR_MS)\ntype OutTRMSType = { type: 'tr_ms'; pubkeys: Bytes[]; m: number };\nconst OutTRMS: Coder = {\n encode(from: ScriptType): OutTRMSType | undefined {\n const last = from.length - 1;\n if (from[last] !== 'NUMEQUAL' || from[1] !== 'CHECKSIG') return;\n const pubkeys = [];\n const m = OpToNum(from[last - 1]);\n if (typeof m !== 'number') return;\n for (let i = 0; i < last - 1; i++) {\n const elm = from[i];\n if (i & 1) {\n if (elm !== (i === 1 ? 'CHECKSIG' : 'CHECKSIGADD'))\n throw new Error('OutScript.encode/tr_ms: wrong element');\n continue;\n }\n if (!u.isBytes(elm)) throw new Error('OutScript.encode/tr_ms: wrong key element');\n pubkeys.push(elm);\n }\n return { type: 'tr_ms', pubkeys, m };\n },\n decode: (to: OutTRMSType): OptScript => {\n if (to.type !== 'tr_ms') return;\n const out: ScriptType = [to.pubkeys[0], 'CHECKSIG'];\n for (let i = 1; i < to.pubkeys.length; i++) out.push(to.pubkeys[i], 'CHECKSIGADD');\n out.push(to.m, 'NUMEQUAL');\n return out;\n },\n};\n\n// Unknown output type\ntype OutUnknownType = { type: 'unknown'; script: Bytes };\nconst OutUnknown: Coder = {\n encode(from: ScriptType): OutUnknownType | undefined {\n return { type: 'unknown', script: Script.encode(from) };\n },\n decode: (to: OutUnknownType): OptScript =>\n to.type === 'unknown' ? Script.decode(to.script) : undefined,\n};\n// /Payments\n\nconst OutScripts = [\n OutP2A,\n OutPK,\n OutPKH,\n OutSH,\n OutWSH,\n OutWPKH,\n OutMS,\n OutTR,\n OutTRNS,\n OutTRMS,\n OutUnknown,\n];\n// TODO: we can support user supplied output scripts now\n// - addOutScript\n// - removeOutScript\n// - We can do that as log we modify array in-place\n// - Actually is very hard, since there is sign/finalize logic\nconst _OutScript = P.apply(Script, P.coders.match(OutScripts));\n\n/*\n * UNSAFE: Custom scripts: mostly ordinals, be very careful when crafting new scripts\n * Only taproot supported for now.\n * NOTE: we can use same to move finalization logic from Transaction, but it will significantly change audited code.\n */\n\ntype FinalizeSignature = [{ pubKey: Bytes; leafHash: Bytes }, Bytes];\ntype CustomScriptOut = { type: string } & Record;\nexport type CustomScript = Coder & {\n finalizeTaproot?: (\n script: Bytes,\n parsed: CustomScriptOut,\n signatures: FinalizeSignature[]\n ) => Bytes[] | undefined;\n};\n\n// We can validate this once, because of packed & coders\nexport const OutScript: P.CoderType<\n NonNullable<\n | OutP2AType\n | OutPKType\n | OutPKHType\n | OutSHType\n | OutWSHType\n | OutWPKHType\n | OutMSType\n | OutTRType\n | OutTRNSType\n | OutTRMSType\n | OutUnknownType\n | undefined\n >\n> = P.validate(_OutScript, (i) => {\n if (i.type === 'pk' && !isValidPubkey(i.pubkey, u.PubT.ecdsa))\n throw new Error('OutScript/pk: wrong key');\n if (\n (i.type === 'pkh' || i.type === 'sh' || i.type === 'wpkh') &&\n (!u.isBytes(i.hash) || i.hash.length !== 20)\n )\n throw new Error(`OutScript/${i.type}: wrong hash`);\n if (i.type === 'wsh' && (!u.isBytes(i.hash) || i.hash.length !== 32))\n throw new Error(`OutScript/wsh: wrong hash`);\n if (i.type === 'tr' && (!u.isBytes(i.pubkey) || !isValidPubkey(i.pubkey, u.PubT.schnorr)))\n throw new Error('OutScript/tr: wrong taproot public key');\n if (i.type === 'ms' || i.type === 'tr_ns' || i.type === 'tr_ms')\n if (!Array.isArray(i.pubkeys)) throw new Error('OutScript/multisig: wrong pubkeys array');\n if (i.type === 'ms') {\n const n = i.pubkeys.length;\n for (const p of i.pubkeys)\n if (!isValidPubkey(p, u.PubT.ecdsa)) throw new Error('OutScript/multisig: wrong pubkey');\n if (i.m <= 0 || n > 16 || i.m > n) throw new Error('OutScript/multisig: invalid params');\n }\n if (i.type === 'tr_ns' || i.type === 'tr_ms') {\n for (const p of i.pubkeys)\n if (!isValidPubkey(p, u.PubT.schnorr)) throw new Error(`OutScript/${i.type}: wrong pubkey`);\n }\n if (i.type === 'tr_ms') {\n const n = i.pubkeys.length;\n if (i.m <= 0 || n > 999 || i.m > n) throw new Error('OutScript/tr_ms: invalid params');\n }\n return i;\n});\nexport type OutScriptType = typeof OutScript;\n\n// Basic sanity check for scripts\nfunction checkWSH(s: OutWSHType, witnessScript: Bytes) {\n if (!u.equalBytes(s.hash, u.sha256(witnessScript)))\n throw new Error('checkScript: wsh wrong witnessScript hash');\n const w = OutScript.decode(witnessScript);\n if (w.type === 'tr' || w.type === 'tr_ns' || w.type === 'tr_ms')\n throw new Error(`checkScript: P2${w.type} cannot be wrapped in P2SH`);\n if (w.type === 'wpkh' || w.type === 'sh')\n throw new Error(`checkScript: P2${w.type} cannot be wrapped in P2WSH`);\n}\n\nexport function checkScript(script?: Bytes, redeemScript?: Bytes, witnessScript?: Bytes): void {\n if (script) {\n const s = OutScript.decode(script);\n // ms||pk maybe work, but there will be no address, hard to spend\n if (s.type === 'tr_ns' || s.type === 'tr_ms' || s.type === 'ms' || s.type == 'pk')\n throw new Error(`checkScript: non-wrapped ${s.type}`);\n if (s.type === 'sh' && redeemScript) {\n if (!u.equalBytes(s.hash, u.hash160(redeemScript)))\n throw new Error('checkScript: sh wrong redeemScript hash');\n const r = OutScript.decode(redeemScript);\n if (r.type === 'tr' || r.type === 'tr_ns' || r.type === 'tr_ms')\n throw new Error(`checkScript: P2${r.type} cannot be wrapped in P2SH`);\n // Not sure if this unspendable, but we cannot represent this via PSBT\n if (r.type === 'sh') throw new Error('checkScript: P2SH cannot be wrapped in P2SH');\n }\n if (s.type === 'wsh' && witnessScript) checkWSH(s, witnessScript);\n }\n if (redeemScript) {\n const r = OutScript.decode(redeemScript);\n if (r.type === 'wsh' && witnessScript) checkWSH(r, witnessScript);\n }\n}\n\nfunction uniqPubkey(pubkeys: Bytes[]) {\n const map: Record = {};\n for (const pub of pubkeys) {\n const key = hex.encode(pub);\n if (map[key]) throw new Error(`Multisig: non-uniq pubkey: ${pubkeys.map(hex.encode)}`);\n map[key] = true;\n }\n}\n\n// @ts-ignore\nexport const p2pk = (pubkey: Bytes, network: BTC_NETWORK = NETWORK): P2Ret => {\n // network is unused\n if (!isValidPubkey(pubkey, u.PubT.ecdsa)) throw new Error('P2PK: invalid publicKey');\n return {\n type: 'pk',\n script: OutScript.encode({ type: 'pk', pubkey }),\n };\n};\nexport const p2pkh = (publicKey: Bytes, network: BTC_NETWORK = NETWORK): P2Ret => {\n if (!isValidPubkey(publicKey, u.PubT.ecdsa)) throw new Error('P2PKH: invalid publicKey');\n const hash = u.hash160(publicKey);\n return {\n type: 'pkh',\n script: OutScript.encode({ type: 'pkh', hash }),\n address: Address(network).encode({ type: 'pkh', hash }),\n };\n};\nexport const p2sh = (child: P2Ret, network: BTC_NETWORK = NETWORK): P2Ret => {\n // It is already tested inside noble-hashes and checkScript\n const cs = child.script;\n if (!u.isBytes(cs)) throw new Error(`Wrong script: ${typeof child.script}, expected Uint8Array`);\n const hash = u.hash160(cs);\n const script = OutScript.encode({ type: 'sh', hash });\n checkScript(script, cs, child.witnessScript);\n const res: P2Ret = {\n type: 'sh',\n redeemScript: cs,\n script: OutScript.encode({ type: 'sh', hash }),\n address: Address(network).encode({ type: 'sh', hash }),\n };\n if (child.witnessScript) res.witnessScript = child.witnessScript;\n return res;\n};\nexport const p2wsh = (child: P2Ret, network: BTC_NETWORK = NETWORK): P2Ret => {\n const cs = child.script;\n if (!u.isBytes(cs)) throw new Error(`Wrong script: ${typeof cs}, expected Uint8Array`);\n const hash = u.sha256(cs);\n const script = OutScript.encode({ type: 'wsh', hash });\n checkScript(script, undefined, cs);\n return {\n type: 'wsh',\n witnessScript: cs,\n script: OutScript.encode({ type: 'wsh', hash }),\n address: Address(network).encode({ type: 'wsh', hash }),\n };\n};\nexport const p2wpkh = (publicKey: Bytes, network: BTC_NETWORK = NETWORK): P2Ret => {\n if (!isValidPubkey(publicKey, u.PubT.ecdsa)) throw new Error('P2WPKH: invalid publicKey');\n if (publicKey.length === 65) throw new Error('P2WPKH: uncompressed public key');\n const hash = u.hash160(publicKey);\n return {\n type: 'wpkh',\n script: OutScript.encode({ type: 'wpkh', hash }),\n address: Address(network).encode({ type: 'wpkh', hash }),\n };\n};\nexport const p2ms = (m: number, pubkeys: Bytes[], allowSamePubkeys = false): P2Ret => {\n if (!allowSamePubkeys) uniqPubkey(pubkeys);\n return { type: 'ms', script: OutScript.encode({ type: 'ms', pubkeys, m }) };\n};\n\nexport type HashedTree =\n | { type: 'leaf'; version?: number; script: Bytes; hash: Bytes }\n | { type: 'branch'; left: HashedTree; right: HashedTree; hash: Bytes };\nfunction checkTaprootScript(\n script: Bytes,\n internalPubKey: Bytes,\n allowUnknownOutputs = false,\n customScripts?: CustomScript[]\n) {\n const out = OutScript.decode(script);\n if (out.type === 'unknown') {\n // NOTE: this check should be before allowUnknownOutputs, otherwise it will\n // disable custom. All custom scripts for taproot should have prefix 'tr_'\n if (customScripts) {\n const cs = P.apply(Script, P.coders.match(customScripts));\n const c = cs.decode(script);\n if (c !== undefined) {\n if (typeof c.type !== 'string' || !c.type.startsWith('tr_'))\n throw new Error(`P2TR: invalid custom type=${c.type}`);\n return;\n }\n }\n if (allowUnknownOutputs) return;\n }\n if (!['tr_ns', 'tr_ms'].includes(out.type))\n throw new Error(`P2TR: invalid leaf script=${out.type}`);\n const outms = out as OutTRNSType | OutTRMSType;\n if (!allowUnknownOutputs && outms.pubkeys) {\n for (const p of outms.pubkeys) {\n if (u.equalBytes(p, u.TAPROOT_UNSPENDABLE_KEY))\n throw new Error('Unspendable taproot key in leaf script');\n // It's likely a mistake at this point:\n // 1. p2tr(A, p2tr_ns(2, [A, B])) == p2tr(A, p2tr_pk(B)) (A or B key)\n // but will take more space and fees.\n // 2. For multi-sig p2tr(A, p2tr_ns(2, [A, B, C])) it's probably a security issue:\n // User creates 2 of 3 multisig of keys [A, B, C],\n // but key A always can spend whole output without signatures from other keys.\n // p2tr(A, p2tr_ns(2, [B, C, D])) is ok: A or (B and C) or (B and D) or (C and D)\n if (u.equalBytes(p, internalPubKey)) {\n throw new Error(\n 'Using P2TR with leaf script with same key as internal key is not supported'\n );\n }\n }\n }\n}\n\nexport type P2TROut = P2Ret & {\n tweakedPubkey: Bytes;\n tapInternalKey: Bytes;\n tapMerkleRoot?: Bytes;\n tapLeafScript?: TransactionInput['tapLeafScript'];\n leaves?: TaprootLeaf[];\n};\n\nexport type TaprootNode = {\n script: Bytes | string;\n leafVersion?: number;\n weight?: number;\n} & Partial;\nexport type TaprootScriptTree = TaprootNode | TaprootScriptTree[];\nexport type TaprootScriptList = TaprootNode[];\ntype _TaprootTreeInternal = {\n weight?: number;\n childs?: [_TaprootTreeInternal[], _TaprootTreeInternal[]];\n};\n\n// Helper for generating binary tree from list, with weights\nexport function taprootListToTree(taprootList: TaprootScriptList): TaprootScriptTree {\n // Clone input in order to not corrupt it\n const lst = Array.from(taprootList) as _TaprootTreeInternal[];\n // We have at least 2 elements => can create branch\n while (lst.length >= 2) {\n // Sort: elements with smallest weight are in the end of queue\n lst.sort((a, b) => (b.weight || 1) - (a.weight || 1));\n const b = lst.pop()!;\n const a = lst.pop()!;\n const weight = (a?.weight || 1) + (b?.weight || 1);\n lst.push({\n weight,\n // Unwrap children array\n // TODO: Very hard to remove any here\n childs: [a?.childs || (a as any[]), b?.childs || (b as any)],\n });\n }\n // At this point there is always 1 element in lst\n const last = lst[0];\n return (last?.childs || last) as TaprootScriptTree;\n}\n\nexport type TaprootLeaf = {\n type: 'leaf';\n version?: number;\n script: Bytes;\n hash: Bytes;\n path: Bytes[];\n};\n\nexport type HashedTreeWithPath =\n | TaprootLeaf\n | {\n type: 'branch';\n left: HashedTreeWithPath;\n right: HashedTreeWithPath;\n hash: Bytes;\n path: Bytes[];\n };\n\nfunction taprootAddPath(tree: HashedTree, path: Bytes[] = []): HashedTreeWithPath {\n if (!tree) throw new Error(`taprootAddPath: empty tree`);\n if (tree.type === 'leaf') return { ...tree, path };\n if (tree.type !== 'branch') throw new Error(`taprootAddPath: wrong type=${tree}`);\n return {\n ...tree,\n path,\n // Left element has right hash in path and otherwise\n left: taprootAddPath(tree.left, [tree.right.hash, ...path]),\n right: taprootAddPath(tree.right, [tree.left.hash, ...path]),\n };\n}\nfunction taprootWalkTree(tree: HashedTreeWithPath): TaprootLeaf[] {\n if (!tree) throw new Error(`taprootAddPath: empty tree`);\n if (tree.type === 'leaf') return [tree];\n if (tree.type !== 'branch') throw new Error(`taprootWalkTree: wrong type=${tree}`);\n return [...taprootWalkTree(tree.left), ...taprootWalkTree(tree.right)];\n}\n\nfunction taprootHashTree(\n tree: TaprootScriptTree,\n internalPubKey: Bytes,\n allowUnknownOutputs = false,\n customScripts?: CustomScript[]\n): HashedTree {\n if (!tree) throw new Error('taprootHashTree: empty tree');\n if (Array.isArray(tree) && tree.length === 1) tree = tree[0];\n // Terminal node (leaf)\n if (!Array.isArray(tree)) {\n const { leafVersion: version, script: leafScript } = tree;\n // Earliest tree walk where we can validate tapScripts\n if (tree.tapLeafScript || (tree.tapMerkleRoot && !u.equalBytes(tree.tapMerkleRoot, P.EMPTY)))\n throw new Error('P2TR: tapRoot leafScript cannot have tree');\n const script = typeof leafScript === 'string' ? hex.decode(leafScript) : leafScript;\n if (!u.isBytes(script)) throw new Error(`checkScript: wrong script type=${script}`);\n checkTaprootScript(script, internalPubKey, allowUnknownOutputs, customScripts);\n return {\n type: 'leaf',\n version,\n script,\n hash: tapLeafHash(script, version),\n };\n }\n // If tree / branch is not binary tree, convert it\n if (tree.length !== 2) tree = taprootListToTree(tree as TaprootNode[]) as TaprootNode[];\n if (tree.length !== 2) throw new Error('hashTree: non binary tree!');\n // branch\n // Both nodes should exist\n const left = taprootHashTree(tree[0], internalPubKey, allowUnknownOutputs, customScripts);\n const right = taprootHashTree(tree[1], internalPubKey, allowUnknownOutputs, customScripts);\n // We cannot swap left/right here, since it will change structure of tree\n let [lH, rH] = [left.hash, right.hash];\n if (u.compareBytes(rH, lH) === -1) [lH, rH] = [rH, lH];\n return { type: 'branch', left, right, hash: u.tagSchnorr('TapBranch', lH, rH) };\n}\n\nexport const TAP_LEAF_VERSION = 0xc0;\nexport const tapLeafHash = (script: Bytes, version: number = TAP_LEAF_VERSION): Bytes =>\n u.tagSchnorr('TapLeaf', new Uint8Array([version]), VarBytes.encode(script));\n\n// Works as key OR tree.\n// If we only have tree, need to add unspendable key, otherwise\n// complex multisig wallet can be spent by owner of key only. See TAPROOT_UNSPENDABLE_KEY\nexport function p2tr(\n internalPubKey?: Bytes | string,\n tree?: TaprootScriptTree,\n network: BTC_NETWORK = NETWORK,\n allowUnknownOutputs = false,\n customScripts?: CustomScript[]\n): P2TROut {\n // Unspendable\n if (!internalPubKey && !tree) throw new Error('p2tr: should have pubKey or scriptTree (or both)');\n const pubKey =\n typeof internalPubKey === 'string'\n ? hex.decode(internalPubKey)\n : internalPubKey || u.TAPROOT_UNSPENDABLE_KEY;\n if (!isValidPubkey(pubKey, u.PubT.schnorr)) throw new Error('p2tr: non-schnorr pubkey');\n let hashedTree = tree\n ? taprootAddPath(taprootHashTree(tree, pubKey, allowUnknownOutputs, customScripts))\n : undefined;\n const tapMerkleRoot = hashedTree ? hashedTree.hash : undefined;\n const [tweakedPubkey, parity] = u.taprootTweakPubkey(pubKey, tapMerkleRoot || P.EMPTY);\n let leaves;\n if (hashedTree) {\n leaves = taprootWalkTree(hashedTree).map((l) => ({\n ...l,\n controlBlock: TaprootControlBlock.encode({\n version: (l.version || TAP_LEAF_VERSION) + parity,\n internalKey: pubKey,\n merklePath: l.path,\n }),\n }));\n }\n let tapLeafScript: TransactionInput['tapLeafScript'];\n if (leaves) {\n tapLeafScript = leaves.map((l) => [\n TaprootControlBlock.decode(l.controlBlock),\n u.concatBytes(l.script, new Uint8Array([l.version || TAP_LEAF_VERSION])),\n ]);\n }\n const res: P2TROut = {\n type: 'tr',\n script: OutScript.encode({ type: 'tr', pubkey: tweakedPubkey }),\n address: Address(network).encode({ type: 'tr', pubkey: tweakedPubkey }),\n // For tests\n tweakedPubkey,\n // PSBT stuff\n tapInternalKey: pubKey,\n };\n // Just in case someone would want to select a specific script\n if (leaves) res.leaves = leaves;\n if (tapLeafScript) res.tapLeafScript = tapLeafScript;\n if (tapMerkleRoot) res.tapMerkleRoot = tapMerkleRoot;\n return res;\n}\n\n// Returns all combinations of size M from lst\nexport function combinations(m: number, list: T[]): T[][] {\n const res: T[][] = [];\n if (!Array.isArray(list)) throw new Error('combinations: lst arg should be array');\n const n = list.length;\n if (m > n) throw new Error('combinations: m > lst.length, no combinations possible');\n /*\n Basically works as M nested loops like:\n for (;idx[0] i);\n const last = idx.length - 1;\n main: for (;;) {\n res.push(idx.map((i) => list[i]));\n idx[last] += 1;\n let i = last;\n // Propagate increment\n // idx[i] cannot be bigger than n-m+i, otherwise last elements in right part will overflow\n for (; i >= 0 && idx[i] > n - m + i; i--) {\n idx[i] = 0;\n // Overflow in idx[0], break\n if (i === 0) break main;\n idx[i - 1] += 1;\n }\n // Propagate: idx[i+1] = idx[idx]+1\n for (i += 1; i < idx.length; i++) idx[i] = idx[i - 1] + 1;\n }\n return res;\n}\n\n/**\n * M-of-N multi-leaf wallet via p2tr_ns. If m == n, single script is emitted.\n * Takes O(n^2) if m != n. 99-of-100 is ok, 5-of-100 is not.\n * `2-of-[A,B,C] => [A,B] | [A,C] | [B,C]`\n */\nexport const p2tr_ns = (m: number, pubkeys: Bytes[], allowSamePubkeys = false): P2Ret[] => {\n if (!allowSamePubkeys) uniqPubkey(pubkeys);\n return combinations(m, pubkeys).map((i) => ({\n type: 'tr_ns',\n script: OutScript.encode({ type: 'tr_ns', pubkeys: i }),\n }));\n};\n// Taproot public key (case of p2tr_ns)\nexport const p2tr_pk = (pubkey: Bytes): P2Ret => p2tr_ns(1, [pubkey], undefined)[0];\n\nexport function p2tr_ms(\n m: number,\n pubkeys: Bytes[],\n allowSamePubkeys = false\n): {\n type: string;\n script: Uint8Array;\n} {\n if (!allowSamePubkeys) uniqPubkey(pubkeys);\n return {\n type: 'tr_ms',\n script: OutScript.encode({ type: 'tr_ms', pubkeys, m }),\n };\n}\n\n// Simple pubkey address, without complex scripts\nexport function getAddress(\n type: 'pkh' | 'wpkh' | 'tr',\n privKey: Bytes,\n network: BTC_NETWORK = NETWORK\n): string | undefined {\n if (type === 'tr') {\n return p2tr(u.pubSchnorr(privKey), undefined, network).address;\n }\n const pubKey = u.pubECDSA(privKey);\n if (type === 'pkh') return p2pkh(pubKey, network).address;\n if (type === 'wpkh') return p2wpkh(pubKey, network).address;\n throw new Error(`getAddress: unknown type=${type}`);\n}\n\nexport const _sortPubkeys = (pubkeys: Bytes[]): Uint8Array[] =>\n Array.from(pubkeys).sort(u.compareBytes);\n\nexport function multisig(\n m: number,\n pubkeys: Bytes[],\n sorted = false,\n witness = false,\n network: BTC_NETWORK = NETWORK\n): P2Ret {\n const ms = p2ms(m, sorted ? _sortPubkeys(pubkeys) : pubkeys);\n return witness ? p2wsh(ms, network) : p2sh(ms, network);\n}\n\nexport function sortedMultisig(\n m: number,\n pubkeys: Bytes[],\n witness = false,\n network: BTC_NETWORK = NETWORK\n): P2Ret {\n return multisig(m, pubkeys, true, witness, network);\n}\n\nconst base58check = createBase58check(u.sha256);\n\nfunction validateWitness(version: number, data: Bytes) {\n if (data.length < 2 || data.length > 40) throw new Error('Witness: invalid length');\n if (version > 16) throw new Error('Witness: invalid version');\n if (version === 0 && !(data.length === 20 || data.length === 32))\n throw new Error('Witness: invalid length for version');\n}\n\nfunction programToWitness(version: number, data: Bytes, network = NETWORK) {\n validateWitness(version, data);\n const coder = version === 0 ? bech32 : bech32m;\n return coder.encode(network.bech32, [version].concat(coder.toWords(data)));\n}\n\nfunction formatKey(hashed: Bytes, prefix: number[]): string {\n return base58check.encode(u.concatBytes(Uint8Array.from(prefix), hashed));\n}\n\nexport function WIF(network: BTC_NETWORK = NETWORK): Coder {\n return {\n encode(privKey: Bytes) {\n const compressed = u.concatBytes(privKey, new Uint8Array([0x01]));\n return formatKey(compressed.subarray(0, 33), [network.wif]);\n },\n decode(wif: string) {\n let parsed = base58check.decode(wif);\n if (parsed[0] !== network.wif) throw new Error('Wrong WIF prefix');\n parsed = parsed.subarray(1);\n // Check what it is. Compressed flag?\n if (parsed.length !== 33) throw new Error('Wrong WIF length');\n if (parsed[32] !== 0x01) throw new Error('Wrong WIF postfix');\n return parsed.subarray(0, -1);\n },\n };\n}\n\n// Returns OutType, which can be used to create outscript\nexport function Address(network: BTC_NETWORK = NETWORK) {\n return {\n encode(from: P.UnwrapCoder): string {\n const { type } = from;\n if (type === 'wpkh') return programToWitness(0, from.hash, network);\n else if (type === 'wsh') return programToWitness(0, from.hash, network);\n else if (type === 'tr') return programToWitness(1, from.pubkey, network);\n else if (type === 'pkh') return formatKey(from.hash, [network.pubKeyHash]);\n else if (type === 'sh') return formatKey(from.hash, [network.scriptHash]);\n throw new Error(`Unknown address type=${type}`);\n },\n decode(address: string): P.UnwrapCoder {\n if (address.length < 14 || address.length > 74) throw new Error('Invalid address length');\n // Bech32\n if (network.bech32 && address.toLowerCase().startsWith(`${network.bech32}1`)) {\n let res;\n try {\n res = bech32.decode(address as `${string}1${string}`);\n if (res.words[0] !== 0) throw new Error(`bech32: wrong version=${res.words[0]}`);\n } catch (_) {\n // Starting from version 1 it is decoded as bech32m\n res = bech32m.decode(address as `${string}1${string}`);\n if (res.words[0] === 0) throw new Error(`bech32m: wrong version=${res.words[0]}`);\n }\n if (res.prefix !== network.bech32) throw new Error(`wrong bech32 prefix=${res.prefix}`);\n const [version, ...program] = res.words;\n const data = bech32.fromWords(program);\n validateWitness(version, data);\n if (version === 0 && data.length === 32) return { type: 'wsh', hash: data };\n else if (version === 0 && data.length === 20) return { type: 'wpkh', hash: data };\n else if (version === 1 && data.length === 32) return { type: 'tr', pubkey: data };\n else throw new Error('Unknown witness program');\n }\n const data = base58check.decode(address);\n if (data.length !== 21) throw new Error('Invalid base58 address');\n // Pay To Public Key Hash\n if (data[0] === network.pubKeyHash) {\n return { type: 'pkh', hash: data.slice(1) };\n } else if (data[0] === network.scriptHash) {\n return {\n type: 'sh',\n hash: data.slice(1),\n };\n }\n throw new Error(`Invalid address prefix=${data[0]}`);\n },\n };\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createApproveInstruction } from '../instructions/approve.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Approve a delegate to transfer up to a maximum number of tokens from an account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Address of the token account\n * @param delegate Account authorized to transfer tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function approve(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n delegate: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createApproveInstruction(account, delegate, ownerPublicKey, amount, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { PublicKey } from '@solana/web3.js';\nimport { SystemProgram, TransactionInstruction } from '@solana/web3.js';\nimport { NATIVE_MINT_2022, programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../constants.js';\nimport { TokenUnsupportedInstructionError } from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface CreateNativeMintInstructionData {\n instruction: TokenInstruction.CreateNativeMint;\n}\n\n/** TODO: docs */\nexport const createNativeMintInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a CreateNativeMint instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner Owner of the new account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createCreateNativeMintInstruction(\n payer: PublicKey,\n nativeMintId = NATIVE_MINT_2022,\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: nativeMintId, isSigner: false, isWritable: true },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n ];\n\n const data = Buffer.alloc(createNativeMintInstructionData.span);\n createNativeMintInstructionData.encode({ instruction: TokenInstruction.CreateNativeMint }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n",null,"/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { type IField, nLength, validateField } from './modular.js';\nimport { bitLen, validateObject } from './utils.js';\n\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n\nexport type AffinePoint = {\n x: T;\n y: T;\n} & { z?: never; t?: never };\n\nexport interface Group> {\n double(): T;\n negate(): T;\n add(other: T): T;\n subtract(other: T): T;\n equals(other: T): boolean;\n multiply(scalar: bigint): T;\n}\n\nexport type GroupConstructor = {\n BASE: T;\n ZERO: T;\n};\nexport type Mapper = (i: T[]) => T[];\n\nfunction constTimeNegate>(condition: boolean, item: T): T {\n const neg = item.negate();\n return condition ? neg : item;\n}\n\nfunction validateW(W: number, bits: number) {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\n\nfunction calcWOpts(W: number, bits: number) {\n validateW(W, bits);\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n}\n\nfunction validateMSMPoints(points: any[], c: any) {\n if (!Array.isArray(points)) throw new Error('array expected');\n points.forEach((p, i) => {\n if (!(p instanceof c)) throw new Error('invalid point at index ' + i);\n });\n}\nfunction validateMSMScalars(scalars: any[], field: any) {\n if (!Array.isArray(scalars)) throw new Error('array of scalars expected');\n scalars.forEach((s, i) => {\n if (!field.isValid(s)) throw new Error('invalid scalar at index ' + i);\n });\n}\n\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap(); // This allows use make points immutable (nothing changes inside)\n\nfunction getW(P: any): number {\n return pointWindowSizes.get(P) || 1;\n}\n\nexport type IWNAF> = {\n constTimeNegate: >(condition: boolean, item: T) => T;\n hasPrecomputes(elm: T): boolean;\n unsafeLadder(elm: T, n: bigint, p?: T): T;\n precomputeWindow(elm: T, W: number): Group[];\n wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T };\n wNAFUnsafe(W: number, precomputes: T[], n: bigint, acc?: T): T;\n getPrecomputes(W: number, P: T, transform: Mapper): T[];\n wNAFCached(P: T, n: bigint, transform: Mapper): { p: T; f: T };\n wNAFCachedUnsafe(P: T, n: bigint, transform: Mapper, prev?: T): T;\n setWindowSize(P: T, W: number): void;\n};\n\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport function wNAF>(c: GroupConstructor, bits: number): IWNAF {\n return {\n constTimeNegate,\n\n hasPrecomputes(elm: T) {\n return getW(elm) !== 1;\n },\n\n // non-const time multiplication ladder\n unsafeLadder(elm: T, n: bigint, p = c.ZERO) {\n let d: T = elm;\n while (n > _0n) {\n if (n & _1n) p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @param elm Point instance\n * @param W window size\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm: T, W: number): Group[] {\n const { windows, windowSize } = calcWOpts(W, bits);\n const points: T[] = [];\n let p: T = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T } {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = calcWOpts(W, bits);\n\n let p = c.ZERO;\n let f = c.BASE;\n\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n\n // Shift number by W bits.\n n >>= shiftBy;\n\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n } else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n\n /**\n * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @param acc accumulator point to add result of multiplication\n * @returns point\n */\n wNAFUnsafe(W: number, precomputes: T[], n: bigint, acc: T = c.ZERO): T {\n const { windows, windowSize } = calcWOpts(W, bits);\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n if (n === _0n) break; // No need to go over empty scalar\n // Extract W bits.\n let wbits = Number(n & mask);\n // Shift number by W bits.\n n >>= shiftBy;\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) continue;\n let curr = precomputes[offset + Math.abs(wbits) - 1]; // -1 because we skip zero\n if (wbits < 0) curr = curr.negate();\n // NOTE: by re-using acc, we can save a lot of additions in case of MSM\n acc = acc.add(curr);\n }\n return acc;\n },\n\n getPrecomputes(W: number, P: T, transform: Mapper): T[] {\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W) as T[];\n if (W !== 1) pointPrecomputes.set(P, transform(comp));\n }\n return comp;\n },\n\n wNAFCached(P: T, n: bigint, transform: Mapper): { p: T; f: T } {\n const W = getW(P);\n return this.wNAF(W, this.getPrecomputes(W, P, transform), n);\n },\n\n wNAFCachedUnsafe(P: T, n: bigint, transform: Mapper, prev?: T): T {\n const W = getW(P);\n if (W === 1) return this.unsafeLadder(P, n, prev); // For W=1 ladder is ~x2 faster\n return this.wNAFUnsafe(W, this.getPrecomputes(W, P, transform), n, prev);\n },\n\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n\n setWindowSize(P: T, W: number) {\n validateW(W, bits);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n },\n };\n}\n\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster with precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka private keys / bigints)\n */\nexport function pippenger>(\n c: GroupConstructor,\n fieldN: IField,\n points: T[],\n scalars: bigint[]\n): T {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n validateMSMPoints(points, c);\n validateMSMScalars(scalars, fieldN);\n if (points.length !== scalars.length)\n throw new Error('arrays of points and scalars must have equal length');\n const zero = c.ZERO;\n const wbits = bitLen(BigInt(points.length));\n const windowSize = wbits > 12 ? wbits - 3 : wbits > 4 ? wbits - 2 : wbits ? 2 : 1; // in bits\n const MASK = (1 << windowSize) - 1;\n const buckets = new Array(MASK + 1).fill(zero); // +1 for zero array\n const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n let sum = zero;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(zero);\n for (let j = 0; j < scalars.length; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & BigInt(MASK));\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = zero; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0) for (let j = 0; j < windowSize; j++) sum = sum.double();\n }\n return sum as T;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe>(\n c: GroupConstructor,\n fieldN: IField,\n points: T[],\n windowSize: number\n): (scalars: bigint[]) => T {\n /**\n * Performance Analysis of Window-based Precomputation\n *\n * Base Case (256-bit scalar, 8-bit window):\n * - Standard precomputation requires:\n * - 31 additions per scalar × 256 scalars = 7,936 ops\n * - Plus 255 summary additions = 8,191 total ops\n * Note: Summary additions can be optimized via accumulator\n *\n * Chunked Precomputation Analysis:\n * - Using 32 chunks requires:\n * - 255 additions per chunk\n * - 256 doublings\n * - Total: (255 × 32) + 256 = 8,416 ops\n *\n * Memory Usage Comparison:\n * Window Size | Standard Points | Chunked Points\n * ------------|-----------------|---------------\n * 4-bit | 520 | 15\n * 8-bit | 4,224 | 255\n * 10-bit | 13,824 | 1,023\n * 16-bit | 557,056 | 65,535\n *\n * Key Advantages:\n * 1. Enables larger window sizes due to reduced memory overhead\n * 2. More efficient for smaller scalar counts:\n * - 16 chunks: (16 × 255) + 256 = 4,336 ops\n * - ~2x faster than standard 8,191 ops\n *\n * Limitations:\n * - Not suitable for plain precomputes (requires 256 constant doublings)\n * - Performance degrades with larger scalar counts:\n * - Optimal for ~256 scalars\n * - Less efficient for 4096+ scalars (Pippenger preferred)\n */\n validateW(windowSize, fieldN.BITS);\n validateMSMPoints(points, c);\n const zero = c.ZERO;\n const tableSize = 2 ** windowSize - 1; // table size (without zero)\n const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n const MASK = BigInt((1 << windowSize) - 1);\n const tables = points.map((p: T) => {\n const res = [];\n for (let i = 0, acc = p; i < tableSize; i++) {\n res.push(acc);\n acc = acc.add(p);\n }\n return res;\n });\n return (scalars: bigint[]): T => {\n validateMSMScalars(scalars, fieldN);\n if (scalars.length > points.length)\n throw new Error('array of scalars must be smaller than array of points');\n let res = zero;\n for (let i = 0; i < chunks; i++) {\n // No need to double if accumulator is still zero.\n if (res !== zero) for (let j = 0; j < windowSize; j++) res = res.double();\n const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n for (let j = 0; j < scalars.length; j++) {\n const n = scalars[j];\n const curr = Number((n >> shiftBy) & MASK);\n if (!curr) continue; // skip zero scalars chunks\n res = res.add(tables[j][curr - 1]);\n }\n }\n return res;\n };\n}\n\n/**\n * Generic BasicCurve interface: works even for polynomial fields (BLS): P, n, h would be ok.\n * Though generator can be different (Fp2 / Fp6 for BLS).\n */\nexport type BasicCurve = {\n Fp: IField; // Field over which we'll do calculations (Fp)\n n: bigint; // Curve order, total count of valid points in the field\n nBitLength?: number; // bit length of curve order\n nByteLength?: number; // byte length of curve order\n h: bigint; // cofactor. we can assign default=1, but users will just ignore it w/o validation\n hEff?: bigint; // Number to multiply to clear cofactor\n Gx: T; // base point X coordinate\n Gy: T; // base point Y coordinate\n allowInfinityPoint?: boolean; // bls12-381 requires it. ZERO point is valid, but invalid pubkey\n};\n\nexport function validateBasic(\n curve: BasicCurve & T\n): Readonly<\n {\n readonly nBitLength: number;\n readonly nByteLength: number;\n } & BasicCurve &\n T & {\n p: bigint;\n }\n> {\n validateField(curve.Fp);\n validateObject(\n curve,\n {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n },\n {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n }\n );\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n } as const);\n}\n","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`positive integer expected, not ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`boolean expected, not ${b}`);\n}\n\n// copied from utils\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(h: Hash) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(h.outputLen);\n number(h.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BitcoinNetwork = void 0;\r\nvar BitcoinNetwork;\r\n(function (BitcoinNetwork) {\r\n BitcoinNetwork[BitcoinNetwork[\"MAINNET\"] = 0] = \"MAINNET\";\r\n BitcoinNetwork[BitcoinNetwork[\"TESTNET\"] = 1] = \"TESTNET\";\r\n})(BitcoinNetwork = exports.BitcoinNetwork || (exports.BitcoinNetwork = {}));\r\n","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash } from './_assert.js';\nimport { Hash, toBytes, type CHash, type Input } from './utils.js';\n\nexport class HMAC> extends Hash> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, _key: Input) {\n super();\n ahash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf: Input): this {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n abytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest(): Uint8Array {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: HMAC): HMAC {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy(): void {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac: {\n (hash: CHash, key: Input, message: Input): Uint8Array;\n create(hash: CHash, key: Input): HMAC;\n} = (hash: CHash, key: Input, message: Input): Uint8Array =>\n new HMAC(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Input) => new HMAC(hash, key);\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaModule = void 0;\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass SolanaModule {\r\n constructor(root) {\r\n this.logger = (0, Utils_1.getLogger)(this.constructor.name + \": \");\r\n this.connection = root.connection;\r\n this.retryPolicy = root.retryPolicy;\r\n this.root = root;\r\n }\r\n}\r\nexports.SolanaModule = SolanaModule;\r\n",null,"\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_contactless = void 0;\nvar ic_contactless = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": []\n }]\n }]\n }, {\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12,2C6.48,2,2,6.48,2,12c0,5.52,4.48,10,10,10s10-4.48,10-10C22,6.48,17.52,2,12,2z M8.46,14.45L7.1,13.83 c0.28-0.61,0.41-1.24,0.4-1.86c-0.01-0.63-0.14-1.24-0.4-1.8l1.36-0.63c0.35,0.75,0.53,1.56,0.54,2.4 C9.01,12.8,8.83,13.64,8.46,14.45z M11.53,16.01l-1.3-0.74c0.52-0.92,0.78-1.98,0.78-3.15c0-1.19-0.27-2.33-0.8-3.4l1.34-0.67 c0.64,1.28,0.96,2.65,0.96,4.07C12.51,13.55,12.18,14.86,11.53,16.01z M14.67,17.33l-1.35-0.66c0.78-1.6,1.18-3.18,1.18-4.69 c0-1.51-0.4-3.07-1.18-4.64l1.34-0.67C15.56,8.45,16,10.23,16,11.98C16,13.72,15.56,15.52,14.67,17.33z\"\n },\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M12,2C6.48,2,2,6.48,2,12c0,5.52,4.48,10,10,10s10-4.48,10-10C22,6.48,17.52,2,12,2z M8.46,14.45L7.1,13.83 c0.28-0.61,0.41-1.24,0.4-1.86c-0.01-0.63-0.14-1.24-0.4-1.8l1.36-0.63c0.35,0.75,0.53,1.56,0.54,2.4 C9.01,12.8,8.83,13.64,8.46,14.45z M11.53,16.01l-1.3-0.74c0.52-0.92,0.78-1.98,0.78-3.15c0-1.19-0.27-2.33-0.8-3.4l1.34-0.67 c0.64,1.28,0.96,2.65,0.96,4.07C12.51,13.55,12.18,14.86,11.53,16.01z M14.67,17.33l-1.35-0.66c0.78-1.6,1.18-3.18,1.18-4.69 c0-1.51-0.4-3.07-1.18-4.64l1.34-0.67C15.56,8.45,16,10.23,16,11.98C16,13.72,15.56,15.52,14.67,17.33z\"\n },\n \"children\": []\n }]\n }]\n }]\n};\nexports.ic_contactless = ic_contactless;","/**\n * Utils for modular division and finite fields.\n * A finite field over 11 is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n bitMask,\n bytesToNumberBE,\n bytesToNumberLE,\n ensureBytes,\n numberToBytesBE,\n numberToBytesLE,\n validateObject,\n} from './utils.js';\n\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _8n = /* @__PURE__ */ BigInt(8);\n// prettier-ignore\nconst _9n =/* @__PURE__ */ BigInt(9), _16n = /* @__PURE__ */ BigInt(16);\n\n// Calculates a modulo b\nexport function mod(a: bigint, b: bigint): bigint {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @todo use field version && remove\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num: bigint, power: bigint, modulo: bigint): bigint {\n if (power < _0n) throw new Error('invalid exponent, negatives unsupported');\n if (modulo <= _0n) throw new Error('invalid modulus');\n if (modulo === _1n) return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n) res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x: bigint, power: bigint, modulo: bigint): bigint {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number: bigint, modulo: bigint): bigint {\n if (number === _0n) throw new Error('invert: expected non-zero number');\n if (modulo <= _0n) throw new Error('invert: expected positive modulus, got ' + modulo);\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n) throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P: bigint): (Fp: IField, n: T) => T {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n\n let Q: bigint, S: number, Z: bigint;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++);\n\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++) {\n // Crash instead of infinity loop, we cannot reasonable count until P.\n if (Z > 1000) throw new Error('Cannot find square root: likely non-prime P');\n }\n\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp: IField, n: T): T {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE)) throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO)) return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE)) break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\n\n/**\n * Square root for a finite field. It will try to check if optimizations are applicable and fall back to 4:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. P ≡ 9 (mod 16)\n * 4. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P: bigint): (Fp: IField, n: T) => T {\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp: IField, n: T) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num: bigint, modulo: bigint): boolean =>\n (mod(num, modulo) & _1n) === _1n;\n\n/** Field is not always over prime: for example, Fp2 has ORDER(q)=p^m. */\nexport interface IField {\n ORDER: bigint;\n isLE: boolean;\n BYTES: number;\n BITS: number;\n MASK: bigint;\n ZERO: T;\n ONE: T;\n // 1-arg\n create: (num: T) => T;\n isValid: (num: T) => boolean;\n is0: (num: T) => boolean;\n neg(num: T): T;\n inv(num: T): T;\n sqrt(num: T): T;\n sqr(num: T): T;\n // 2-args\n eql(lhs: T, rhs: T): boolean;\n add(lhs: T, rhs: T): T;\n sub(lhs: T, rhs: T): T;\n mul(lhs: T, rhs: T | bigint): T;\n pow(lhs: T, power: bigint): T;\n div(lhs: T, rhs: T | bigint): T;\n // N for NonNormalized (for now)\n addN(lhs: T, rhs: T): T;\n subN(lhs: T, rhs: T): T;\n mulN(lhs: T, rhs: T | bigint): T;\n sqrN(num: T): T;\n\n // Optional\n // Should be same as sgn0 function in\n // [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#section-4.1).\n // NOTE: sgn0 is 'negative in LE', which is same as odd. And negative in LE is kinda strange definition anyway.\n isOdd?(num: T): boolean; // Odd instead of even since we have it for Fp2\n // legendre?(num: T): T;\n pow(lhs: T, power: bigint): T;\n invertBatch: (lst: T[]) => T[];\n toBytes(num: T): Uint8Array;\n fromBytes(bytes: Uint8Array): T;\n // If c is False, CMOV returns a, otherwise it returns b.\n cmov(a: T, b: T, c: boolean): T;\n}\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n] as const;\nexport function validateField(field: IField): IField {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n } as Record;\n const opts = FIELD_FIELDS.reduce((map, val: string) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n\n// Generic field functions\n\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f: IField, num: T, power: bigint): T {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n) throw new Error('invalid exponent, negatives unsupported');\n if (power === _0n) return f.ONE;\n if (power === _1n) return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n) p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f: IField, nums: T[]): T[] {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\n\nexport function FpDiv(f: IField, lhs: T, rhs: T | bigint): T {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n\n/**\n * Legendre symbol.\n * * (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0 if a ≡ 0 (mod p)\n */\nexport function FpLegendre(order: bigint): (f: IField, x: T) => T {\n const legendreConst = (order - _1n) / _2n; // Integer arithmetic\n return (f: IField, x: T): T => f.pow(x, legendreConst);\n}\n\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f: IField): (x: T) => boolean {\n const legendre = FpLegendre(f.ORDER);\n return (x: T): boolean => {\n const p = legendre(f, x);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n\n// CURVE.n lengths\nexport function nLength(\n n: bigint,\n nBitLength?: number\n): {\n nBitLength: number;\n nByteLength: number;\n} {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n\ntype FpField = IField & Required, 'isOdd'>>;\n/**\n * Initializes a finite field over prime.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(\n ORDER: bigint,\n bitLen?: number,\n isLE = false,\n redef: Partial> = {}\n): Readonly {\n if (ORDER <= _0n) throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048) throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n let sqrtP: ReturnType; // cached sqrtP\n const f: Readonly = Object.freeze({\n ORDER,\n isLE,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error('invalid field element: expected bigint, got ' + typeof num);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n\n inv: (num) => invert(num, ORDER),\n sqrt:\n redef.sqrt ||\n ((n) => {\n if (!sqrtP) sqrtP = FpSqrt(ORDER);\n return sqrtP(f, n);\n }),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n } as FpField);\n return Object.freeze(f);\n}\n\nexport function FpSqrtOdd(Fp: IField, elm: T): T {\n if (!Fp.isOdd) throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\n\nexport function FpSqrtEven(Fp: IField, elm: T): T {\n if (!Fp.isOdd) throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(\n hash: string | Uint8Array,\n groupOrder: bigint,\n isLE = false\n): bigint {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(\n 'hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen\n );\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder: bigint): number {\n if (typeof fieldOrder !== 'bigint') throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder: bigint): number {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE = false): Uint8Array {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n","import { PublicKey } from '@solana/web3.js';\n\n/** Address of the SPL Token program */\nexport const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\n\n/** Address of the SPL Token 2022 program */\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey('TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb');\n\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\n\n/** Address of the special mint for wrapped native SOL in spl-token */\nexport const NATIVE_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n\n/** Address of the special mint for wrapped native SOL in spl-token-2022 */\nexport const NATIVE_MINT_2022 = new PublicKey('9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP');\n\n/** Check that the token program provided is not `Tokenkeg...`, useful when using extensions */\nexport function programSupportsExtensions(programId: PublicKey): boolean {\n if (programId === TOKEN_PROGRAM_ID) {\n return false;\n } else {\n return true;\n }\n}\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES = 30;\n/* number of distance codes */\n\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Tracev((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Tracev((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) => {\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n\n const next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n code = (code + bl_count[bits - 1]) << 1;\n next_code[bits] = code;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.sym_next = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) => {\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let sx = 0; /* running index in sym_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.sym_next !== 0) {\n do {\n dist = s.pending_buf[s.sym_buf + sx++] & 0xff;\n dist += (s.pending_buf[s.sym_buf + sx++] & 0xff) << 8;\n lc = s.pending_buf[s.sym_buf + sx++];\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and sym_buf is ok: */\n //Assert(s->pending < s->lit_bufsize + sx, \"pendingBuf overflow\");\n\n } while (sx < s.sym_next);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) => {\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"block list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"allow list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* block_mask is the bit mask of block-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let block_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"block-listed\") bytes. */\n for (n = 0; n <= 31; n++, block_mask >>>= 1) {\n if ((block_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"allow-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"block-listed\" or \"allow-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n bi_windup(s); /* align on byte boundary */\n put_short(s, stored_len);\n put_short(s, ~stored_len);\n if (stored_len) {\n s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);\n }\n s.pending += stored_len;\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and write out the encoded block.\n */\nconst _tr_flush_block = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->sym_next / 3));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally = (s, dist, lc) => {\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n\n s.pending_buf[s.sym_buf + s.sym_next++] = dist;\n s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;\n s.pending_buf[s.sym_buf + s.sym_next++] = lc;\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n return (s.sym_next === s.sym_end);\n};\n\nmodule.exports._tr_init = _tr_init;\nmodule.exports._tr_stored_block = _tr_stored_block;\nmodule.exports._tr_flush_block = _tr_flush_block;\nmodule.exports._tr_tally = _tr_tally;\nmodule.exports._tr_align = _tr_align;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetContractBase = void 0;\r\nconst StarknetBase_1 = require(\"../base/StarknetBase\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst StarknetFees_1 = require(\"../base/modules/StarknetFees\");\r\nconst StarknetContractEvents_1 = require(\"./modules/StarknetContractEvents\");\r\n/**\r\n * Base class providing program specific utilities\r\n */\r\nclass StarknetContractBase extends StarknetBase_1.StarknetBase {\r\n constructor(chainId, provider, contractAddress, contractAbi, retryPolicy, solanaFeeEstimator = new StarknetFees_1.StarknetFees(provider)) {\r\n super(chainId, provider, retryPolicy, solanaFeeEstimator);\r\n this.contract = new starknet_1.Contract(contractAbi, contractAddress, provider).typedv2(contractAbi);\r\n this.Events = new StarknetContractEvents_1.StarknetContractEvents(this, contractAbi);\r\n }\r\n}\r\nexports.StarknetContractBase = StarknetContractBase;\r\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\nexport interface InitializeAccount3InstructionData {\n instruction: TokenInstruction.InitializeAccount3;\n owner: PublicKey;\n}\n\nexport const initializeAccount3InstructionData = struct([\n u8('instruction'),\n publicKey('owner'),\n]);\n\n/**\n * Construct an InitializeAccount3 instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner New account's owner/multisignature\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeAccount3Instruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(initializeAccount3InstructionData.span);\n initializeAccount3InstructionData.encode({ instruction: TokenInstruction.InitializeAccount3, owner }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeAccount3 instruction */\nexport interface DecodedInitializeAccount3Instruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeAccount3;\n owner: PublicKey;\n };\n}\n\n/**\n * Decode an InitializeAccount3 instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeAccount3Instruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeAccount3Instruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeAccount3InstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint },\n data,\n } = decodeInitializeAccount3InstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeAccount3) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeAccount3 instruction */\nexport interface DecodedInitializeAccount3InstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n owner: PublicKey;\n };\n}\n\n/**\n * Decode an InitializeAccount3 instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeAccount3InstructionUnchecked({\n programId,\n keys: [account, mint],\n data,\n}: TransactionInstruction): DecodedInitializeAccount3InstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n },\n data: initializeAccount3InstructionData.decode(data),\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SmartChainAssets = void 0;\r\nexports.SmartChainAssets = {\r\n WBTC: {\r\n pricing: {\r\n binancePair: \"WBTCBTC\",\r\n okxPair: null,\r\n coinGeckoCoinId: \"wrapped-bitcoin\",\r\n coinPaprikaCoinId: \"wbtc-wrapped-bitcoin\",\r\n krakenPair: \"WBTCXBT\"\r\n },\r\n name: \"Wrapped BTC (Wormhole)\"\r\n },\r\n USDC: {\r\n pricing: {\r\n binancePair: \"!BTCUSDC\",\r\n okxPair: \"!BTC-USDC\",\r\n coinGeckoCoinId: \"usd-coin\",\r\n coinPaprikaCoinId: \"usdc-usd-coin\",\r\n krakenPair: \"!XBTUSDC\"\r\n },\r\n name: \"USD Circle\"\r\n },\r\n USDT: {\r\n pricing: {\r\n binancePair: \"!BTCUSDT\",\r\n okxPair: \"!BTC-USDT\",\r\n coinGeckoCoinId: \"tether\",\r\n coinPaprikaCoinId: \"usdt-tether\",\r\n krakenPair: \"!XBTUSDT\"\r\n },\r\n name: \"Tether USD\"\r\n },\r\n SOL: {\r\n pricing: {\r\n binancePair: \"SOLBTC\",\r\n okxPair: \"SOL-BTC\",\r\n coinGeckoCoinId: \"solana\",\r\n coinPaprikaCoinId: \"sol-solana\",\r\n krakenPair: \"SOLXBT\"\r\n },\r\n name: \"Solana\"\r\n },\r\n BONK: {\r\n pricing: {\r\n binancePair: \"BONKUSDC;!BTCUSDC\",\r\n okxPair: \"BONK-USDT;!BTC-USDT\",\r\n coinGeckoCoinId: \"bonk\",\r\n coinPaprikaCoinId: \"bonk-bonk\",\r\n krakenPair: \"BONKUSD;!XXBTZUSD\"\r\n },\r\n name: \"Bonk\"\r\n },\r\n ETH: {\r\n pricing: {\r\n binancePair: \"ETHBTC\",\r\n okxPair: \"ETH-BTC\",\r\n coinGeckoCoinId: \"ethereum\",\r\n coinPaprikaCoinId: \"eth-ethereum\",\r\n krakenPair: \"XETHXXBT\"\r\n },\r\n name: \"Ethereum\"\r\n },\r\n STRK: {\r\n pricing: {\r\n binancePair: \"STRKUSDT;!BTCUSDT\",\r\n okxPair: \"STRK-USDT;!BTC-USDT\",\r\n coinGeckoCoinId: \"starknet\",\r\n coinPaprikaCoinId: \"strk-starknet\",\r\n krakenPair: \"STRKUSD;!XXBTZUSD\"\r\n },\r\n name: \"Starknet\"\r\n }\r\n};\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultPath = defaultPath;\n/**\n * Given a current request/response path, gives the path appropriate for storing\n * in a cookie. This is basically the \"directory\" of a \"file\" in the path, but\n * is specified by {@link https://www.rfc-editor.org/rfc/rfc6265.html#section-5.1.4 | RFC6265 - Section 5.1.4}.\n *\n * @remarks\n * ### RFC6265 - Section 5.1.4\n *\n * The user agent MUST use an algorithm equivalent to the following algorithm to compute the default-path of a cookie:\n *\n * 1. Let uri-path be the path portion of the request-uri if such a\n * portion exists (and empty otherwise). For example, if the\n * request-uri contains just a path (and optional query string),\n * then the uri-path is that path (without the %x3F (\"?\") character\n * or query string), and if the request-uri contains a full\n * absoluteURI, the uri-path is the path component of that URI.\n *\n * 2. If the uri-path is empty or if the first character of the uri-\n * path is not a %x2F (\"/\") character, output %x2F (\"/\") and skip\n * the remaining steps.\n *\n * 3. If the uri-path contains no more than one %x2F (\"/\") character,\n * output %x2F (\"/\") and skip the remaining step.\n *\n * 4. Output the characters of the uri-path from the first character up\n * to, but not including, the right-most %x2F (\"/\").\n *\n * @example\n * ```\n * defaultPath('') === '/'\n * defaultPath('/some-path') === '/'\n * defaultPath('/some-parent-path/some-path') === '/some-parent-path'\n * defaultPath('relative-path') === '/'\n * ```\n *\n * @param path - the path portion of the request-uri (excluding the hostname, query, fragment, and so on)\n * @public\n */\nfunction defaultPath(path) {\n // \"2. If the uri-path is empty or if the first character of the uri-path is not\n // a %x2F (\"/\") character, output %x2F (\"/\") and skip the remaining steps.\n if (!path || path.slice(0, 1) !== '/') {\n return '/';\n }\n // \"3. If the uri-path contains no more than one %x2F (\"/\") character, output\n // %x2F (\"/\") and skip the remaining step.\"\n if (path === '/') {\n return path;\n }\n const rightSlash = path.lastIndexOf('/');\n if (rightSlash === 0) {\n return '/';\n }\n // \"4. Output the characters of the uri-path from the first character up to,\n // but not including, the right-most %x2F (\"/\").\"\n return path.slice(0, rightSlash);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.KrakenPriceProvider = void 0;\r\nconst ExchangePriceProvider_1 = require(\"./abstract/ExchangePriceProvider\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass KrakenPriceProvider extends ExchangePriceProvider_1.ExchangePriceProvider {\r\n constructor(coinsMap, url = \"https://api.kraken.com/0\", httpRequestTimeout) {\r\n super(coinsMap, url, httpRequestTimeout);\r\n }\r\n async fetchPair(pair, abortSignal) {\r\n const response = await (0, Utils_1.httpGet)(this.url + \"/public/Ticker?pair=\" + pair, this.httpRequestTimeout, abortSignal);\r\n return parseFloat(response.result[pair].c[0]);\r\n }\r\n async fetchUsdPrice(abortSignal) {\r\n const response = await (0, Utils_1.httpGet)(this.url + \"/public/Ticker?pair=XBTUSDC\", this.httpRequestTimeout, abortSignal);\r\n return parseFloat(response.result[\"XBTUSDC\"].c[0]) / 100000000;\r\n }\r\n async fetchPrice(token, abortSignal) {\r\n const pairs = token.coinId.split(\";\");\r\n const response = await (0, Utils_1.httpGet)(this.url + \"/public/Ticker?pair=\" + pairs.map(val => val.startsWith(\"!\") ? val.substring(1) : val).join(\",\"), this.httpRequestTimeout, abortSignal);\r\n const prices = pairs.map(pair => {\r\n let invert = pair.startsWith(\"!\");\r\n if (invert)\r\n pair = pair.substring(1);\r\n const value = parseFloat(response.result[pair].c[0]);\r\n return invert ? 1 / value : value;\r\n });\r\n const price = prices.reduce((previousValue, currentValue) => previousValue * currentValue, 1);\r\n return BigInt(Math.floor(price * 100000000000000));\r\n }\r\n}\r\nexports.KrakenPriceProvider = KrakenPriceProvider;\r\n","// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\ndeclare const globalThis: Record | undefined;\nexport const crypto =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapperFactory = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst sdk_lib_1 = require(\"@atomiqlabs/sdk-lib\");\r\nconst SmartChainAssets_1 = require(\"./SmartChainAssets\");\r\nconst LocalStorageManager_1 = require(\"./storage/LocalStorageManager\");\r\nclass SwapperFactory {\r\n constructor(initializers) {\r\n this.initializers = initializers;\r\n this.Tokens = {\r\n BITCOIN: sdk_lib_1.BitcoinTokens\r\n };\r\n this.TokenResolver = {};\r\n this.initializers = initializers;\r\n initializers.forEach(initializer => {\r\n const addressMap = {};\r\n this.Tokens[initializer.chainId] = {};\r\n for (let ticker in initializer.tokens) {\r\n const assetData = initializer.tokens[ticker];\r\n this.Tokens[initializer.chainId][ticker] = addressMap[assetData.address] = {\r\n chain: \"SC\",\r\n chainId: initializer.chainId,\r\n address: assetData.address,\r\n name: SmartChainAssets_1.SmartChainAssets[ticker].name,\r\n decimals: assetData.decimals,\r\n displayDecimals: assetData.displayDecimals,\r\n ticker\r\n };\r\n }\r\n this.TokenResolver[initializer.chainId] = {\r\n getToken: (address) => addressMap[address]\r\n };\r\n });\r\n }\r\n newSwapper(options) {\r\n options.bitcoinNetwork ?? (options.bitcoinNetwork = base_1.BitcoinNetwork.MAINNET);\r\n options.storagePrefix ?? (options.storagePrefix = \"atomiqsdk-\" + options.bitcoinNetwork + \"-\");\r\n options.defaultTrustedIntermediaryUrl ?? (options.defaultTrustedIntermediaryUrl = options.bitcoinNetwork === base_1.BitcoinNetwork.MAINNET ?\r\n \"https://node3.gethopa.com:34100\" :\r\n \"https://node3.gethopa.com:24100\");\r\n options.registryUrl ?? (options.registryUrl = options.bitcoinNetwork === base_1.BitcoinNetwork.MAINNET ?\r\n \"https://api.github.com/repos/adambor/SolLightning-registry/contents/registry-mainnet.json?ref=main\" :\r\n \"https://api.github.com/repos/adambor/SolLightning-registry/contents/registry.json?ref=main\");\r\n const mempoolApi = options.mempoolApi ?? new sdk_lib_1.MempoolApi(options.bitcoinNetwork === base_1.BitcoinNetwork.TESTNET ?\r\n [\r\n \"https://mempool.space/testnet/api/\",\r\n \"https://mempool.fra.mempool.space/testnet/api/\",\r\n \"https://mempool.va1.mempool.space/testnet/api/\",\r\n \"https://mempool.tk7.mempool.space/testnet/api/\"\r\n ] :\r\n [\r\n \"https://mempool.space/api/\",\r\n \"https://mempool.fra.mempool.space/api/\",\r\n \"https://mempool.va1.mempool.space/api/\",\r\n \"https://mempool.tk7.mempool.space/api/\"\r\n ]);\r\n const bitcoinRpc = new sdk_lib_1.MempoolBitcoinRpc(mempoolApi);\r\n const pricingAssets = [];\r\n Object.keys(SmartChainAssets_1.SmartChainAssets).forEach((ticker) => {\r\n const chains = {};\r\n for (let { tokens, chainId } of this.initializers) {\r\n if (tokens[ticker] != null)\r\n chains[chainId] = tokens[ticker];\r\n }\r\n const assetData = SmartChainAssets_1.SmartChainAssets[ticker];\r\n pricingAssets.push({\r\n ...assetData.pricing,\r\n chains,\r\n ticker,\r\n name: assetData.name\r\n });\r\n });\r\n options.chainStorageCtor ?? (options.chainStorageCtor = (name) => new LocalStorageManager_1.LocalStorageManager(name));\r\n const chains = {};\r\n for (let { initializer, chainId } of this.initializers) {\r\n if (options.chains[chainId] == null)\r\n continue;\r\n chains[chainId] = initializer(options.chains[chainId], bitcoinRpc, options.bitcoinNetwork, options.chainStorageCtor);\r\n }\r\n return new sdk_lib_1.Swapper(bitcoinRpc, chains, sdk_lib_1.RedundantSwapPrice.createFromTokenMap(options.pricingFeeDifferencePPM ?? 10000n, pricingAssets), pricingAssets, options);\r\n }\r\n}\r\nexports.SwapperFactory = SwapperFactory;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BitcoinTxIdClaimHandler = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst Utils_1 = require(\"../../../../../utils/Utils\");\r\nconst IBitcoinClaimHandler_1 = require(\"./IBitcoinClaimHandler\");\r\nconst logger = (0, Utils_1.getLogger)(\"BitcoinTxIdClaimHandler: \");\r\nclass BitcoinTxIdClaimHandler extends IBitcoinClaimHandler_1.IBitcoinClaimHandler {\r\n serializeCommitment(data) {\r\n return [\r\n ...(0, Utils_1.bufferToU32Array)(Buffer.from(data.txId, \"hex\").reverse()),\r\n ...super.serializeCommitment(data)\r\n ];\r\n }\r\n getWitness(signer, swapData, witnessData, feeRate) {\r\n if (!swapData.isClaimHandler(this.address))\r\n throw new Error(\"Invalid claim handler\");\r\n return this._getWitness(signer, swapData, witnessData, { txId: witnessData.tx.txid });\r\n }\r\n getGas(data) {\r\n return BitcoinTxIdClaimHandler.gas;\r\n }\r\n getType() {\r\n return BitcoinTxIdClaimHandler.type;\r\n }\r\n}\r\nexports.BitcoinTxIdClaimHandler = BitcoinTxIdClaimHandler;\r\nBitcoinTxIdClaimHandler.type = base_1.ChainSwapType.CHAIN_TXID;\r\nBitcoinTxIdClaimHandler.gas = { l1: 20000 };\r\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createRevokeInstruction } from '../instructions/revoke.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Revoke approval for the transfer of tokens from an account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Address of the token account\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function revoke(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n owner: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createRevokeInstruction(account, ownerPublicKey, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapClaim = void 0;\r\nconst SolanaSwapModule_1 = require(\"../SolanaSwapModule\");\r\nconst SolanaAction_1 = require(\"../../base/SolanaAction\");\r\nconst spl_token_1 = require(\"@solana/spl-token\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst SolanaSigner_1 = require(\"../../wallet/SolanaSigner\");\r\nconst SolanaTokens_1 = require(\"../../base/modules/SolanaTokens\");\r\nconst BN = require(\"bn.js\");\r\nclass SwapClaim extends SolanaSwapModule_1.SolanaSwapModule {\r\n async Claim(signer, swapData, secretOrDataKey) {\r\n const isDataKey = typeof (secretOrDataKey) !== \"string\";\r\n const accounts = {\r\n signer,\r\n initializer: swapData.isPayIn() ? swapData.offerer : swapData.claimer,\r\n escrowState: this.root.SwapEscrowState(Buffer.from(swapData.paymentHash, \"hex\")),\r\n ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,\r\n data: isDataKey ? secretOrDataKey : null,\r\n };\r\n let secretBuffer = isDataKey ?\r\n Buffer.alloc(0) :\r\n Buffer.from(secretOrDataKey, \"hex\");\r\n if (swapData.isPayOut()) {\r\n return new SolanaAction_1.SolanaAction(signer, this.root, await this.program.methods\r\n .claimerClaimPayOut(secretBuffer)\r\n .accounts({\r\n ...accounts,\r\n claimerAta: swapData.claimerAta,\r\n vault: this.root.SwapVault(swapData.token),\r\n vaultAuthority: this.root.SwapVaultAuthority,\r\n tokenProgram: spl_token_1.TOKEN_PROGRAM_ID\r\n })\r\n .instruction(), this.getComputeBudget(swapData));\r\n }\r\n else {\r\n return new SolanaAction_1.SolanaAction(signer, this.root, await this.program.methods\r\n .claimerClaim(secretBuffer)\r\n .accounts({\r\n ...accounts,\r\n claimerUserData: this.root.SwapUserVault(swapData.claimer, swapData.token)\r\n })\r\n .instruction(), this.getComputeBudget(swapData));\r\n }\r\n }\r\n /**\r\n * Verify and claim action required for BTC on-chain swaps verified through btc relay, adds the btc relay verify\r\n * instruction to the 0th index in the transaction, also intentionally sets compute budget to null such that no\r\n * compute budget instruction is added, since that takes up too much space and txs are limited to 1232 bytes\r\n *\r\n * @param signer\r\n * @param swapData\r\n * @param storeDataKey\r\n * @param merkleProof\r\n * @param commitedHeader\r\n * @constructor\r\n * @private\r\n */\r\n async VerifyAndClaim(signer, swapData, storeDataKey, merkleProof, commitedHeader) {\r\n const action = await this.btcRelay.Verify(signer, merkleProof.reversedTxId, swapData.confirmations, merkleProof.pos, merkleProof.merkle, commitedHeader);\r\n action.addAction(await this.Claim(signer, swapData, storeDataKey));\r\n action.computeBudget = null;\r\n return action;\r\n }\r\n constructor(root, btcRelay) {\r\n super(root);\r\n this.btcRelay = btcRelay;\r\n }\r\n /**\r\n * Gets the compute budget required for claiming the swap\r\n *\r\n * @param swapData\r\n * @private\r\n */\r\n getComputeBudget(swapData) {\r\n if (swapData.isPayOut()) {\r\n return SwapClaim.CUCosts[swapData.getType() === base_1.ChainSwapType.HTLC ? \"CLAIM_PAY_OUT\" : \"CLAIM_ONCHAIN_PAY_OUT\"];\r\n }\r\n else {\r\n return SwapClaim.CUCosts[swapData.getType() === base_1.ChainSwapType.HTLC ? \"CLAIM\" : \"CLAIM_ONCHAIN\"];\r\n }\r\n }\r\n /**\r\n * Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on\r\n * requiredConfirmations\r\n * If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the\r\n * current chain tip & adds them to the txs array\r\n *\r\n * @param signer\r\n * @param txBlockheight transaction blockheight\r\n * @param requiredConfirmations required confirmation for the swap to be claimable with that TX\r\n * @param blockhash blockhash of the block which includes the transaction\r\n * @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization\r\n * txns are added here\r\n * @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized\r\n * to the required blockheight\r\n * @private\r\n */\r\n async getCommitedHeaderAndSynchronize(signer, txBlockheight, requiredConfirmations, blockhash, txs, synchronizer) {\r\n const requiredBlockheight = txBlockheight + requiredConfirmations - 1;\r\n const result = await (0, Utils_1.tryWithRetries)(() => this.btcRelay.retrieveLogAndBlockheight({\r\n blockhash: blockhash\r\n }, requiredBlockheight), this.retryPolicy);\r\n if (result != null)\r\n return result.header;\r\n //Need to synchronize\r\n if (synchronizer == null)\r\n return null;\r\n //TODO: We don't have to synchronize to tip, only to our required blockheight\r\n const resp = await synchronizer.syncToLatestTxs(signer.toString());\r\n this.logger.debug(\"getCommitedHeaderAndSynchronize(): BTC Relay not synchronized to required blockheight, \" +\r\n \"synchronizing ourselves in \" + resp.txs.length + \" txs\");\r\n this.logger.debug(\"getCommitedHeaderAndSynchronize(): BTC Relay computed header map: \", resp.computedHeaderMap);\r\n resp.txs.forEach(tx => txs.push(tx));\r\n //Retrieve computed header\r\n return resp.computedHeaderMap[txBlockheight];\r\n }\r\n /**\r\n * Adds the transactions required for initialization and writing of transaction data to the data account\r\n *\r\n * @param signer\r\n * @param tx transaction to be written\r\n * @param vout vout of the transaction to use to satisfy swap conditions\r\n * @param feeRate fee rate for the transactions\r\n * @param txs solana transaction array, init & write transactions are added here\r\n * @private\r\n * @returns {Promise} publicKey/address of the data account\r\n */\r\n addTxsWriteTransactionData(signer, tx, vout, feeRate, txs) {\r\n const reversedTxId = Buffer.from(tx.txid, \"hex\").reverse();\r\n const writeData = Buffer.concat([\r\n Buffer.from(new BN(vout).toArray(\"le\", 4)),\r\n Buffer.from(tx.hex, \"hex\")\r\n ]);\r\n this.logger.debug(\"addTxsWriteTransactionData(): writing transaction data: \", writeData.toString(\"hex\"));\r\n return this.root.DataAccount.addTxsWriteData(signer, reversedTxId, writeData, txs, feeRate);\r\n }\r\n /**\r\n * Checks whether we should unwrap the WSOL to SOL when claiming the swap\r\n *\r\n * @param signer\r\n * @param swapData\r\n * @private\r\n */\r\n shouldUnwrap(signer, swapData) {\r\n return swapData.isPayOut() &&\r\n swapData.token.equals(SolanaTokens_1.SolanaTokens.WSOL_ADDRESS) &&\r\n swapData.claimer.equals(signer);\r\n }\r\n /**\r\n * Creates transactions claiming the swap using a secret (for HTLC swaps)\r\n *\r\n * @param signer\r\n * @param swapData swap to claim\r\n * @param secret hex encoded secret pre-image to the HTLC hash\r\n * @param checkExpiry whether to check if the swap is already expired (trying to claim an expired swap with a secret\r\n * is dangerous because we might end up revealing the secret to the counterparty without being able to claim the swap)\r\n * @param initAta whether to init the claimer's ATA if it doesn't exist\r\n * @param feeRate fee rate to use for the transaction\r\n * @param skipAtaCheck whether to check if ATA exists\r\n */\r\n async txsClaimWithSecret(signer, swapData, secret, checkExpiry, initAta, feeRate, skipAtaCheck) {\r\n //We need to be sure that this transaction confirms in time, otherwise we reveal the secret to the counterparty\r\n // and won't claim the funds\r\n if (checkExpiry && await this.root.isExpired(swapData.claimer.toString(), swapData)) {\r\n throw new base_1.SwapDataVerificationError(\"Not enough time to reliably pay the invoice\");\r\n }\r\n const shouldInitAta = !skipAtaCheck && swapData.isPayOut() && !await this.root.Tokens.ataExists(swapData.claimerAta);\r\n if (shouldInitAta && !initAta)\r\n throw new base_1.SwapDataVerificationError(\"ATA not initialized\");\r\n if (feeRate == null)\r\n feeRate = await this.getClaimFeeRate(signer, swapData);\r\n const action = new SolanaAction_1.SolanaAction(signer, this.root);\r\n const shouldUnwrap = this.shouldUnwrap(signer, swapData);\r\n if (shouldInitAta) {\r\n const initAction = this.root.Tokens.InitAta(signer, swapData.claimer, swapData.token, swapData.claimerAta);\r\n if (initAction == null)\r\n throw new base_1.SwapDataVerificationError(\"Invalid claimer token account address\");\r\n action.add(initAction);\r\n }\r\n action.add(await this.Claim(signer, swapData, secret));\r\n if (shouldUnwrap)\r\n action.add(this.root.Tokens.Unwrap(signer));\r\n this.logger.debug(\"txsClaimWithSecret(): creating claim transaction, swap: \" + swapData.getClaimHash() +\r\n \" initializingAta: \" + shouldInitAta + \" unwrapping: \" + shouldUnwrap);\r\n return [await action.tx(feeRate)];\r\n }\r\n /**\r\n * Creates transaction claiming the swap using a confirmed transaction data (for BTC on-chain swaps)\r\n *\r\n * @param signer\r\n * @param swapData swap to claim\r\n * @param blockheight blockheight of the bitcoin transaction\r\n * @param tx bitcoin transaction that satisfies the swap condition\r\n * @param vout vout of the bitcoin transaction that satisfies the swap condition\r\n * @param commitedHeader commited header data from btc relay (fetched internally if null)\r\n * @param synchronizer optional synchronizer to use in case we need to sync up the btc relay ourselves\r\n * @param initAta whether to initialize claimer's ATA\r\n * @param storageAccHolder an object holder filled in with the created data account where tx data is written\r\n * @param feeRate fee rate to be used for the transactions\r\n */\r\n async txsClaimWithTxData(signer, swapData, tx, vout, commitedHeader, synchronizer, initAta, storageAccHolder, feeRate) {\r\n const shouldInitAta = swapData.isPayOut() && !await this.root.Tokens.ataExists(swapData.claimerAta);\r\n if (shouldInitAta && !initAta)\r\n throw new base_1.SwapDataVerificationError(\"ATA not initialized\");\r\n const signerKey = signer instanceof SolanaSigner_1.SolanaSigner ? signer.getPublicKey() : signer;\r\n if (feeRate == null)\r\n feeRate = await this.getClaimFeeRate(signerKey, swapData);\r\n const merkleProof = await this.btcRelay.bitcoinRpc.getMerkleProof(tx.txid, tx.blockhash);\r\n this.logger.debug(\"txsClaimWithTxData(): merkle proof computed: \", merkleProof);\r\n const txs = [];\r\n if (commitedHeader == null)\r\n commitedHeader = await this.getCommitedHeaderAndSynchronize(signerKey, tx.height, swapData.confirmations, tx.blockhash, txs, synchronizer);\r\n const storeDataKey = await this.addTxsWriteTransactionData(signer, tx, vout, feeRate, txs);\r\n if (storageAccHolder != null)\r\n storageAccHolder.storageAcc = storeDataKey;\r\n const shouldUnwrap = this.shouldUnwrap(signerKey, swapData);\r\n if (shouldInitAta) {\r\n const initAction = this.root.Tokens.InitAta(signerKey, swapData.claimer, swapData.token, swapData.claimerAta);\r\n if (initAction == null)\r\n throw new base_1.SwapDataVerificationError(\"Invalid claimer token account address\");\r\n await initAction.addToTxs(txs, feeRate);\r\n }\r\n const claimAction = await this.VerifyAndClaim(signerKey, swapData, storeDataKey, merkleProof, commitedHeader);\r\n await claimAction.addToTxs(txs, feeRate);\r\n if (shouldUnwrap)\r\n await this.root.Tokens.Unwrap(signerKey).addToTxs(txs, feeRate);\r\n this.logger.debug(\"txsClaimWithTxData(): creating claim transaction, swap: \" + swapData.getClaimHash() +\r\n \" initializingAta: \" + shouldInitAta + \" unwrapping: \" + shouldUnwrap + \" num txns: \" + txs.length);\r\n return txs;\r\n }\r\n getClaimFeeRate(signer, swapData) {\r\n const accounts = [signer];\r\n if (swapData.payOut) {\r\n if (swapData.token != null)\r\n accounts.push(this.root.SwapVault(swapData.token));\r\n if (swapData.payIn) {\r\n if (swapData.offerer != null)\r\n accounts.push(swapData.offerer);\r\n }\r\n else {\r\n if (swapData.claimer != null)\r\n accounts.push(swapData.claimer);\r\n }\r\n if (swapData.claimerAta != null && !swapData.claimerAta.equals(web3_js_1.PublicKey.default))\r\n accounts.push(swapData.claimerAta);\r\n }\r\n else {\r\n if (swapData.claimer != null && swapData.token != null)\r\n accounts.push(this.root.SwapUserVault(swapData.claimer, swapData.token));\r\n if (swapData.payIn) {\r\n if (swapData.offerer != null)\r\n accounts.push(swapData.offerer);\r\n }\r\n else {\r\n if (swapData.claimer != null)\r\n accounts.push(swapData.claimer);\r\n }\r\n }\r\n if (swapData.paymentHash != null)\r\n accounts.push(this.root.SwapEscrowState(Buffer.from(swapData.paymentHash, \"hex\")));\r\n return this.root.Fees.getFeeRate(accounts);\r\n }\r\n /**\r\n * Get the estimated solana transaction fee of the claim transaction in the worst case scenario in case where the\r\n * ATA needs to be initialized again (i.e. adding the ATA rent exempt lamports to the fee)\r\n */\r\n async getClaimFee(signer, swapData, feeRate) {\r\n return BigInt(swapData == null || swapData.payOut ? SolanaTokens_1.SolanaTokens.SPL_ATA_RENT_EXEMPT : 0) +\r\n await this.getRawClaimFee(signer, swapData, feeRate);\r\n }\r\n /**\r\n * Get the estimated solana transaction fee of the claim transaction, without\r\n */\r\n async getRawClaimFee(signer, swapData, feeRate) {\r\n if (swapData == null)\r\n return 5000n;\r\n feeRate = feeRate || await this.getClaimFeeRate(signer, swapData);\r\n //Include rent exempt in claim fee, to take into consideration worst case cost when user destroys ATA\r\n return 5000n + this.root.Fees.getPriorityFee(this.getComputeBudget(swapData), feeRate);\r\n }\r\n}\r\nexports.SwapClaim = SwapClaim;\r\nSwapClaim.CUCosts = {\r\n CLAIM: 25000,\r\n CLAIM_PAY_OUT: 50000,\r\n CLAIM_ONCHAIN: 600000,\r\n CLAIM_ONCHAIN_PAY_OUT: 600000\r\n};\r\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createMintToInstruction } from '../instructions/mintTo.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Mint tokens to an account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint for the account\n * @param destination Address of the account to mint to\n * @param authority Minting authority\n * @param amount Amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function mintTo(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createMintToInstruction(mint, destination, authorityPublicKey, amount, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta } from '@solana/web3.js';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeMint2InstructionData {\n instruction: TokenInstruction.InitializeMint2;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthorityOption: 1 | 0;\n freezeAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const initializeMint2InstructionData = struct([\n u8('instruction'),\n u8('decimals'),\n publicKey('mintAuthority'),\n u8('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n\n/**\n * Construct an InitializeMint2 instruction\n *\n * @param mint Token mint account\n * @param decimals Number of decimals in token account amounts\n * @param mintAuthority Minting authority\n * @param freezeAuthority Optional authority that can freeze token accounts\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMint2Instruction(\n mint: PublicKey,\n decimals: number,\n mintAuthority: PublicKey,\n freezeAuthority: PublicKey | null,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeMint2InstructionData.span);\n initializeMint2InstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMint2,\n decimals,\n mintAuthority,\n freezeAuthorityOption: freezeAuthority ? 1 : 0,\n freezeAuthority: freezeAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMint2 instruction */\nexport interface DecodedInitializeMint2Instruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeMint2;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint2 instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMint2Instruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeMint2Instruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMint2InstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeInitializeMint2InstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMint2) throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMint2 instruction */\nexport interface DecodedInitializeMint2InstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint2 instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMint2InstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedInitializeMint2InstructionUnchecked {\n const { instruction, decimals, mintAuthority, freezeAuthorityOption, freezeAuthority } =\n initializeMint2InstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n },\n data: {\n instruction,\n decimals,\n mintAuthority,\n freezeAuthority: freezeAuthorityOption ? freezeAuthority : null,\n },\n };\n}\n","import { hex } from '@scure/base';\nimport * as P from 'micro-packed';\nimport { Address, type CustomScript, OutScript, checkScript, tapLeafHash } from './payment.js';\nimport * as psbt from './psbt.js'; // circular\nimport {\n CompactSizeLen,\n RawOldTx,\n RawOutput,\n RawTx,\n RawWitness,\n Script,\n VarBytes,\n} from './script.js';\nimport * as u from './utils.js';\nimport { type Bytes, NETWORK, concatBytes, equalBytes, isBytes } from './utils.js';\nimport { getInputType, getPrevOut, normalizeInput, toVsize } from './utxo.js'; // circular\n\nconst EMPTY32 = new Uint8Array(32);\nconst EMPTY_OUTPUT: P.UnwrapCoder = {\n amount: 0xffffffffffffffffn,\n script: P.EMPTY,\n};\n\n// @scure/bip32 interface\ninterface HDKey {\n publicKey: Bytes;\n privateKey: Bytes;\n fingerprint: number;\n derive(path: string): HDKey;\n deriveChild(index: number): HDKey;\n sign(hash: Bytes): Bytes;\n}\n\nexport type Signer = Bytes | HDKey;\n\nexport const PRECISION = 8;\nexport const DEFAULT_VERSION = 2;\nexport const DEFAULT_LOCKTIME = 0;\nexport const DEFAULT_SEQUENCE = 4294967295;\nexport const Decimal: P.Coder = P.coders.decimal(PRECISION);\n\n// Same as value || def, but doesn't overwrites zero ('0', 0, 0n, etc)\nexport const def = (value: T | undefined, def: T): T => (value === undefined ? def : value);\n\nexport function cloneDeep(obj: T): T {\n if (Array.isArray(obj)) return obj.map((i) => cloneDeep(i)) as unknown as T;\n // slice of nodejs Buffer doesn't copy\n else if (isBytes(obj)) return Uint8Array.from(obj) as unknown as T;\n // immutable\n else if (['number', 'bigint', 'boolean', 'string', 'undefined'].includes(typeof obj)) return obj;\n // null is object\n else if (obj === null) return obj;\n // should be last, so it won't catch other types\n else if (typeof obj === 'object') {\n return Object.fromEntries(\n Object.entries(obj).map(([k, v]) => [k, cloneDeep(v)])\n ) as unknown as T;\n }\n throw new Error(`cloneDeep: unknown type=${obj} (${typeof obj})`);\n}\n\n// Mostly security features, hardened defaults;\n// but you still can parse other people tx with unspendable outputs and stuff if you want\nexport type TxOpts = {\n version?: number;\n lockTime?: number;\n PSBTVersion?: number;\n // Flags\n // Allow output scripts to be unknown scripts (probably unspendable)\n /** @deprecated Use `allowUnknownOutputs` */\n allowUnknowOutput?: boolean;\n allowUnknownOutputs?: boolean;\n // Try to sign/finalize unknown input. All bets are off, but there is chance that it will work\n /** @deprecated Use `allowUnknownInputs` */\n allowUnknowInput?: boolean;\n allowUnknownInputs?: boolean;\n // Check input/output scripts for sanity\n disableScriptCheck?: boolean;\n // There is strange behaviour where tx without outputs encoded with empty output in the end,\n // tx without outputs in BIP174 doesn't have itb\n bip174jsCompat?: boolean;\n // If transaction data comes from untrusted source, then it can be modified in such way that will\n // result paying higher mining fee\n allowLegacyWitnessUtxo?: boolean;\n lowR?: boolean; // Use lowR signatures\n customScripts?: CustomScript[]; // UNSAFE: Custom payment scripts\n};\n\n/**\n * Internal, exported only for backwards-compat. Use `SigHash` instead.\n * @deprecated\n */\nexport enum SignatureHash {\n DEFAULT,\n ALL,\n NONE,\n SINGLE,\n ANYONECANPAY = 0x80,\n}\n\nexport enum SigHash {\n DEFAULT = SignatureHash.DEFAULT,\n ALL = SignatureHash.ALL,\n NONE = SignatureHash.NONE,\n SINGLE = SignatureHash.SINGLE,\n DEFAULT_ANYONECANPAY = SignatureHash.DEFAULT | SignatureHash.ANYONECANPAY,\n ALL_ANYONECANPAY = SignatureHash.ALL | SignatureHash.ANYONECANPAY,\n NONE_ANYONECANPAY = SignatureHash.NONE | SignatureHash.ANYONECANPAY,\n SINGLE_ANYONECANPAY = SignatureHash.SINGLE | SignatureHash.ANYONECANPAY,\n}\n\nfunction getTaprootKeys(\n privKey: Bytes,\n pubKey: Bytes,\n internalKey: Bytes,\n merkleRoot: Bytes = P.EMPTY\n) {\n if (equalBytes(internalKey, pubKey)) {\n privKey = u.taprootTweakPrivKey(privKey, merkleRoot);\n pubKey = u.pubSchnorr(privKey);\n }\n return { privKey, pubKey };\n}\n\n// User facing API with decoders\nexport type TransactionInputRequired = {\n txid: Bytes;\n index: number;\n sequence: number;\n finalScriptSig: Bytes;\n};\n\n// Force check amount/script\nfunction outputBeforeSign(i: psbt.TransactionOutput): psbt.TransactionOutputRequired {\n if (i.script === undefined || i.amount === undefined)\n throw new Error('Transaction/output: script and amount required');\n return { script: i.script, amount: i.amount };\n}\n\n// Force check index/txid/sequence\nexport function inputBeforeSign(i: psbt.TransactionInput): TransactionInputRequired {\n if (i.txid === undefined || i.index === undefined)\n throw new Error('Transaction/input: txid and index required');\n return {\n txid: i.txid,\n index: i.index,\n sequence: def(i.sequence, DEFAULT_SEQUENCE),\n finalScriptSig: def(i.finalScriptSig, P.EMPTY),\n };\n}\nfunction cleanFinalInput(i: psbt.TransactionInput) {\n for (const _k in i) {\n const k = _k as keyof psbt.TransactionInput;\n if (!psbt.PSBTInputFinalKeys.includes(k)) delete i[k];\n }\n}\n\n// (TxHash, Idx)\nconst TxHashIdx = P.struct({ txid: P.bytes(32, true), index: P.U32LE });\n\nfunction validateSigHash(s: SigHash) {\n if (typeof s !== 'number' || typeof SigHash[s] !== 'string')\n throw new Error(`Invalid SigHash=${s}`);\n return s;\n}\n\nfunction unpackSighash(hashType: number) {\n const masked = hashType & 0b0011111;\n return {\n isAny: !!(hashType & SignatureHash.ANYONECANPAY),\n isNone: masked === SignatureHash.NONE,\n isSingle: masked === SignatureHash.SINGLE,\n };\n}\n\nfunction validateOpts(opts: TxOpts): Readonly {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error(`Wrong object type for transaction options: ${opts}`);\n\n const _opts = {\n ...opts,\n // Defaults\n version: def(opts.version, DEFAULT_VERSION),\n lockTime: def(opts.lockTime, 0),\n PSBTVersion: def(opts.PSBTVersion, 0),\n };\n if (typeof _opts.allowUnknowInput !== 'undefined')\n opts.allowUnknownInputs = _opts.allowUnknowInput;\n if (typeof _opts.allowUnknowOutput !== 'undefined')\n opts.allowUnknownOutputs = _opts.allowUnknowOutput;\n // 0 and -1 happens in tests\n if (![-1, 0, 1, 2, 3].includes(_opts.version))\n throw new Error(`Unknown version: ${_opts.version}`);\n if (typeof _opts.lockTime !== 'number') throw new Error('Transaction lock time should be number');\n P.U32LE.encode(_opts.lockTime); // Additional range checks that lockTime\n // There is no PSBT v1, and any new version will probably have fields which we don't know how to parse, which\n // can lead to constructing broken transactions\n if (_opts.PSBTVersion !== 0 && _opts.PSBTVersion !== 2)\n throw new Error(`Unknown PSBT version ${_opts.PSBTVersion}`);\n // Flags\n for (const k of [\n 'allowUnknownOutputs',\n 'allowUnknownInputs',\n 'disableScriptCheck',\n 'bip174jsCompat',\n 'allowLegacyWitnessUtxo',\n 'lowR',\n ] as const) {\n const v = _opts[k];\n if (v === undefined) continue; // optional\n if (typeof v !== 'boolean')\n throw new Error(`Transation options wrong type: ${k}=${v} (${typeof v})`);\n }\n if (_opts.customScripts !== undefined) {\n const cs = _opts.customScripts;\n if (!Array.isArray(cs)) {\n throw new Error(\n `wrong custom scripts type (expected array): customScripts=${cs} (${typeof cs})`\n );\n }\n for (const s of cs) {\n if (typeof s.encode !== 'function' || typeof s.decode !== 'function')\n throw new Error(`wrong script=${s} (${typeof s})`);\n if (s.finalizeTaproot !== undefined && typeof s.finalizeTaproot !== 'function')\n throw new Error(`wrong script=${s} (${typeof s})`);\n }\n }\n return Object.freeze(_opts);\n}\n\nexport class Transaction {\n private global: psbt.PSBTKeyMapKeys = {};\n private inputs: psbt.TransactionInput[] = []; // use getInput()\n private outputs: psbt.TransactionOutput[] = []; // use getOutput()\n readonly opts: ReturnType;\n constructor(opts: TxOpts = {}) {\n const _opts = (this.opts = validateOpts(opts));\n // Merge with global structure of PSBTv2\n if (_opts.lockTime !== DEFAULT_LOCKTIME) this.global.fallbackLocktime = _opts.lockTime;\n this.global.txVersion = _opts.version;\n }\n\n // Import\n static fromRaw(raw: Bytes, opts: TxOpts = {}): Transaction {\n const parsed = RawTx.decode(raw);\n const tx = new Transaction({ ...opts, version: parsed.version, lockTime: parsed.lockTime });\n for (const o of parsed.outputs) tx.addOutput(o);\n tx.outputs = parsed.outputs;\n tx.inputs = parsed.inputs;\n if (parsed.witnesses) {\n for (let i = 0; i < parsed.witnesses.length; i++)\n tx.inputs[i].finalScriptWitness = parsed.witnesses[i];\n }\n return tx;\n }\n // PSBT\n static fromPSBT(psbt_: Bytes, opts: TxOpts = {}): Transaction {\n let parsed: P.UnwrapCoder;\n try {\n parsed = psbt.RawPSBTV0.decode(psbt_);\n } catch (e0) {\n try {\n parsed = psbt.RawPSBTV2.decode(psbt_);\n } catch (e2) {\n // Throw error for v0 parsing, since it popular, otherwise it would be shadowed by v2 error\n throw e0;\n }\n }\n const PSBTVersion = parsed.global.version || 0;\n if (PSBTVersion !== 0 && PSBTVersion !== 2)\n throw new Error(`Wrong PSBT version=${PSBTVersion}`);\n const unsigned = parsed.global.unsignedTx;\n const version = PSBTVersion === 0 ? unsigned?.version : parsed.global.txVersion;\n const lockTime = PSBTVersion === 0 ? unsigned?.lockTime : parsed.global.fallbackLocktime;\n const tx = new Transaction({ ...opts, version, lockTime, PSBTVersion });\n // We need slice here, because otherwise\n const inputCount = PSBTVersion === 0 ? unsigned?.inputs.length : parsed.global.inputCount;\n tx.inputs = parsed.inputs.slice(0, inputCount).map((i, j) => ({\n finalScriptSig: P.EMPTY,\n ...parsed.global.unsignedTx?.inputs[j],\n ...i,\n }));\n const outputCount = PSBTVersion === 0 ? unsigned?.outputs.length : parsed.global.outputCount;\n tx.outputs = parsed.outputs.slice(0, outputCount).map((i, j) => ({\n ...i,\n ...parsed.global.unsignedTx?.outputs[j],\n }));\n tx.global = { ...parsed.global, txVersion: version }; // just in case proprietary/unknown fields\n if (lockTime !== DEFAULT_LOCKTIME) tx.global.fallbackLocktime = lockTime;\n return tx;\n }\n toPSBT(PSBTVersion: number | undefined = this.opts.PSBTVersion): Uint8Array {\n if (PSBTVersion !== 0 && PSBTVersion !== 2)\n throw new Error(`Wrong PSBT version=${PSBTVersion}`);\n // if (PSBTVersion === 0 && this.inputs.length === 0) {\n // throw new Error(\n // 'PSBT version=0 export for transaction without inputs disabled, please use version=2. Please check `toPSBT` method for explanation.'\n // );\n // }\n const inputs = this.inputs.map((i) => psbt.cleanPSBTFields(PSBTVersion, psbt.PSBTInput, i));\n for (const inp of inputs) {\n // Don't serialize empty fields\n if (inp.partialSig && !inp.partialSig.length) delete inp.partialSig;\n if (inp.finalScriptSig && !inp.finalScriptSig.length) delete inp.finalScriptSig;\n if (inp.finalScriptWitness && !inp.finalScriptWitness.length) delete inp.finalScriptWitness;\n }\n const outputs = this.outputs.map((i) => psbt.cleanPSBTFields(PSBTVersion, psbt.PSBTOutput, i));\n const global = { ...this.global };\n if (PSBTVersion === 0) {\n /*\n - Bitcoin raw transaction expects to have at least 1 input because it uses case with zero inputs as marker for SegWit\n - this means we cannot serialize raw tx with zero inputs since it will be parsed as SegWit tx\n - Parsing of PSBTv0 depends on unsignedTx (it looks for input count here)\n - BIP-174 requires old serialization format (without witnesses) inside global, which solves this\n */\n global.unsignedTx = RawOldTx.decode(\n RawOldTx.encode({\n version: this.version,\n lockTime: this.lockTime,\n inputs: this.inputs.map(inputBeforeSign).map((i) => ({\n ...i,\n finalScriptSig: P.EMPTY,\n })),\n outputs: this.outputs.map(outputBeforeSign),\n })\n );\n delete global.fallbackLocktime;\n delete global.txVersion;\n } else {\n global.version = PSBTVersion;\n global.txVersion = this.version;\n global.inputCount = this.inputs.length;\n global.outputCount = this.outputs.length;\n if (global.fallbackLocktime && global.fallbackLocktime === DEFAULT_LOCKTIME)\n delete global.fallbackLocktime;\n }\n if (this.opts.bip174jsCompat) {\n if (!inputs.length) inputs.push({});\n if (!outputs.length) outputs.push({});\n }\n return (PSBTVersion === 0 ? psbt.RawPSBTV0 : psbt.RawPSBTV2).encode({\n global,\n inputs,\n outputs,\n });\n }\n\n // BIP370 lockTime (https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki#determining-lock-time)\n get lockTime(): number {\n let height = DEFAULT_LOCKTIME;\n let heightCnt = 0;\n let time = DEFAULT_LOCKTIME;\n let timeCnt = 0;\n for (const i of this.inputs) {\n if (i.requiredHeightLocktime) {\n height = Math.max(height, i.requiredHeightLocktime);\n heightCnt++;\n }\n if (i.requiredTimeLocktime) {\n time = Math.max(time, i.requiredTimeLocktime);\n timeCnt++;\n }\n }\n if (heightCnt && heightCnt >= timeCnt) return height;\n if (time !== DEFAULT_LOCKTIME) return time;\n return this.global.fallbackLocktime || DEFAULT_LOCKTIME;\n }\n\n get version(): number {\n // Should be not possible\n if (this.global.txVersion === undefined) throw new Error('No global.txVersion');\n return this.global.txVersion;\n }\n\n private inputStatus(idx: number) {\n this.checkInputIdx(idx);\n const input = this.inputs[idx];\n // Finalized\n if (input.finalScriptSig && input.finalScriptSig.length) return 'finalized';\n if (input.finalScriptWitness && input.finalScriptWitness.length) return 'finalized';\n // Signed taproot\n if (input.tapKeySig) return 'signed';\n if (input.tapScriptSig && input.tapScriptSig.length) return 'signed';\n // Signed\n if (input.partialSig && input.partialSig.length) return 'signed';\n return 'unsigned';\n }\n // Cannot replace unpackSighash, tests rely on very generic implemenetation with signing inputs outside of range\n // We will lose some vectors -> smaller test coverage of preimages (very important!)\n private inputSighash(idx: number) {\n this.checkInputIdx(idx);\n const inputSighash = this.inputs[idx].sighashType;\n const sighash = inputSighash === undefined ? SignatureHash.DEFAULT : inputSighash;\n // ALL or DEFAULT -- everything signed\n // NONE -- all inputs + no outputs\n // SINGLE -- all inputs + output with same index\n // ALL + ANYONE -- specific input + all outputs\n // NONE + ANYONE -- specific input + no outputs\n // SINGLE -- specific inputs + output with same index\n const sigOutputs = sighash === SignatureHash.DEFAULT ? SignatureHash.ALL : sighash & 0b11;\n const sigInputs = sighash & SignatureHash.ANYONECANPAY;\n return { sigInputs, sigOutputs };\n }\n // Very nice for debug purposes, but slow. If there is too much inputs/outputs to add, will be quadratic.\n // Some cache will be nice, but there chance to have bugs with cache invalidation\n private signStatus() {\n // if addInput or addOutput is not possible, then all inputs or outputs are signed\n let addInput = true,\n addOutput = true;\n let inputs = [],\n outputs = [];\n for (let idx = 0; idx < this.inputs.length; idx++) {\n const status = this.inputStatus(idx);\n // Unsigned input doesn't affect anything\n if (status === 'unsigned') continue;\n const { sigInputs, sigOutputs } = this.inputSighash(idx);\n // Input type\n if (sigInputs === SignatureHash.ANYONECANPAY) inputs.push(idx);\n else addInput = false;\n // Output type\n if (sigOutputs === SignatureHash.ALL) addOutput = false;\n else if (sigOutputs === SignatureHash.SINGLE) outputs.push(idx);\n else if (sigOutputs === SignatureHash.NONE) {\n // Doesn't affect any outputs at all\n } else throw new Error(`Wrong signature hash output type: ${sigOutputs}`);\n }\n return { addInput, addOutput, inputs, outputs };\n }\n\n get isFinal(): boolean {\n for (let idx = 0; idx < this.inputs.length; idx++)\n if (this.inputStatus(idx) !== 'finalized') return false;\n return true;\n }\n\n // Info utils\n get hasWitnesses(): boolean {\n let out = false;\n for (const i of this.inputs)\n if (i.finalScriptWitness && i.finalScriptWitness.length) out = true;\n return out;\n }\n // https://en.bitcoin.it/wiki/Weight_units\n get weight(): number {\n if (!this.isFinal) throw new Error('Transaction is not finalized');\n let out = 32;\n // Outputs\n const outputs = this.outputs.map(outputBeforeSign);\n out += 4 * CompactSizeLen.encode(this.outputs.length).length;\n for (const o of outputs) out += 32 + 4 * VarBytes.encode(o.script).length;\n // Inputs\n if (this.hasWitnesses) out += 2;\n out += 4 * CompactSizeLen.encode(this.inputs.length).length;\n for (const i of this.inputs) {\n out += 160 + 4 * VarBytes.encode(i.finalScriptSig || P.EMPTY).length;\n if (this.hasWitnesses && i.finalScriptWitness)\n out += RawWitness.encode(i.finalScriptWitness).length;\n }\n return out;\n }\n get vsize(): number {\n return toVsize(this.weight);\n }\n toBytes(withScriptSig = false, withWitness = false): Uint8Array {\n return RawTx.encode({\n version: this.version,\n lockTime: this.lockTime,\n inputs: this.inputs.map(inputBeforeSign).map((i) => ({\n ...i,\n finalScriptSig: (withScriptSig && i.finalScriptSig) || P.EMPTY,\n })),\n outputs: this.outputs.map(outputBeforeSign),\n witnesses: this.inputs.map((i) => i.finalScriptWitness || []),\n segwitFlag: withWitness && this.hasWitnesses,\n });\n }\n get unsignedTx(): Bytes {\n return this.toBytes(false, false);\n }\n get hex(): string {\n return hex.encode(this.toBytes(true, this.hasWitnesses));\n }\n\n get hash(): string {\n if (!this.isFinal) throw new Error('Transaction is not finalized');\n return hex.encode(u.sha256x2(this.toBytes(true)));\n }\n get id(): string {\n if (!this.isFinal) throw new Error('Transaction is not finalized');\n return hex.encode(u.sha256x2(this.toBytes(true)).reverse());\n }\n // Input stuff\n private checkInputIdx(idx: number) {\n if (!Number.isSafeInteger(idx) || 0 > idx || idx >= this.inputs.length)\n throw new Error(`Wrong input index=${idx}`);\n }\n getInput(idx: number): psbt.TransactionInput {\n this.checkInputIdx(idx);\n return cloneDeep(this.inputs[idx]);\n }\n get inputsLength(): number {\n return this.inputs.length;\n }\n // Modification\n addInput(input: psbt.TransactionInputUpdate, _ignoreSignStatus = false): number {\n if (!_ignoreSignStatus && !this.signStatus().addInput)\n throw new Error('Tx has signed inputs, cannot add new one');\n this.inputs.push(normalizeInput(input, undefined, undefined, this.opts.disableScriptCheck));\n return this.inputs.length - 1;\n }\n updateInput(idx: number, input: psbt.TransactionInputUpdate, _ignoreSignStatus = false): void {\n this.checkInputIdx(idx);\n let allowedFields = undefined;\n if (!_ignoreSignStatus) {\n const status = this.signStatus();\n if (!status.addInput || status.inputs.includes(idx))\n allowedFields = psbt.PSBTInputUnsignedKeys;\n }\n this.inputs[idx] = normalizeInput(\n input,\n this.inputs[idx],\n allowedFields,\n this.opts.disableScriptCheck\n );\n }\n // Output stuff\n private checkOutputIdx(idx: number) {\n if (!Number.isSafeInteger(idx) || 0 > idx || idx >= this.outputs.length)\n throw new Error(`Wrong output index=${idx}`);\n }\n getOutput(idx: number): psbt.TransactionOutput {\n this.checkOutputIdx(idx);\n return cloneDeep(this.outputs[idx]);\n }\n getOutputAddress(idx: number, network: u.BTC_NETWORK = NETWORK): string | undefined {\n const out = this.getOutput(idx);\n if (!out.script) return;\n return Address(network).encode(OutScript.decode(out.script));\n }\n\n get outputsLength(): number {\n return this.outputs.length;\n }\n private normalizeOutput(\n o: psbt.TransactionOutputUpdate,\n cur?: psbt.TransactionOutput,\n allowedFields?: (keyof typeof psbt.PSBTOutput)[]\n ): psbt.TransactionOutput {\n let { amount, script } = o;\n if (amount === undefined) amount = cur?.amount;\n if (typeof amount !== 'bigint')\n throw new Error(\n `Wrong amount type, should be of type bigint in sats, but got ${amount} of type ${typeof amount}`\n );\n if (typeof script === 'string') script = hex.decode(script);\n if (script === undefined) script = cur?.script;\n let res: psbt.PSBTKeyMapKeys = { ...cur, ...o, amount, script };\n if (res.amount === undefined) delete res.amount;\n res = psbt.mergeKeyMap(psbt.PSBTOutput, res, cur, allowedFields);\n psbt.PSBTOutputCoder.encode(res);\n if (\n res.script &&\n !this.opts.allowUnknownOutputs &&\n OutScript.decode(res.script).type === 'unknown'\n ) {\n throw new Error(\n 'Transaction/output: unknown output script type, there is a chance that input is unspendable. Pass allowUnknownOutputs=true, if you sure'\n );\n }\n if (!this.opts.disableScriptCheck) checkScript(res.script, res.redeemScript, res.witnessScript);\n return res;\n }\n addOutput(o: psbt.TransactionOutputUpdate, _ignoreSignStatus = false): number {\n if (!_ignoreSignStatus && !this.signStatus().addOutput)\n throw new Error('Tx has signed outputs, cannot add new one');\n this.outputs.push(this.normalizeOutput(o));\n return this.outputs.length - 1;\n }\n updateOutput(idx: number, output: psbt.TransactionOutputUpdate, _ignoreSignStatus = false): void {\n this.checkOutputIdx(idx);\n let allowedFields = undefined;\n if (!_ignoreSignStatus) {\n const status = this.signStatus();\n if (!status.addOutput || status.outputs.includes(idx))\n allowedFields = psbt.PSBTOutputUnsignedKeys;\n }\n this.outputs[idx] = this.normalizeOutput(output, this.outputs[idx], allowedFields);\n }\n addOutputAddress(address: string, amount: bigint, network: u.BTC_NETWORK = NETWORK): number {\n return this.addOutput({ script: OutScript.encode(Address(network).decode(address)), amount });\n }\n // Utils\n get fee(): bigint {\n let res = 0n;\n for (const i of this.inputs) {\n const prevOut = getPrevOut(i);\n if (!prevOut) throw new Error('Empty input amount');\n res += prevOut.amount;\n }\n const outputs = this.outputs.map(outputBeforeSign);\n for (const o of outputs) res -= o.amount;\n return res;\n }\n\n // Signing\n // Based on https://github.com/bitcoin/bitcoin/blob/5871b5b5ab57a0caf9b7514eb162c491c83281d5/test/functional/test_framework/script.py#L624\n // There is optimization opportunity to re-use hashes for multiple inputs for witness v0/v1,\n // but we are trying to be less complicated for audit purpose for now.\n private preimageLegacy(idx: number, prevOutScript: Bytes, hashType: number) {\n const { isAny, isNone, isSingle } = unpackSighash(hashType);\n if (idx < 0 || !Number.isSafeInteger(idx)) throw new Error(`Invalid input idx=${idx}`);\n if ((isSingle && idx >= this.outputs.length) || idx >= this.inputs.length)\n return P.U256BE.encode(1n);\n prevOutScript = Script.encode(\n Script.decode(prevOutScript).filter((i) => i !== 'CODESEPARATOR')\n );\n let inputs: TransactionInputRequired[] = this.inputs\n .map(inputBeforeSign)\n .map((input, inputIdx) => ({\n ...input,\n finalScriptSig: inputIdx === idx ? prevOutScript : P.EMPTY,\n }));\n if (isAny) inputs = [inputs[idx]];\n else if (isNone || isSingle) {\n inputs = inputs.map((input, inputIdx) => ({\n ...input,\n sequence: inputIdx === idx ? input.sequence : 0,\n }));\n }\n let outputs = this.outputs.map(outputBeforeSign);\n if (isNone) outputs = [];\n else if (isSingle) {\n outputs = outputs.slice(0, idx).fill(EMPTY_OUTPUT).concat([outputs[idx]]);\n }\n const tmpTx = RawTx.encode({\n lockTime: this.lockTime,\n version: this.version,\n segwitFlag: false,\n inputs,\n outputs,\n });\n return u.sha256x2(tmpTx, P.I32LE.encode(hashType));\n }\n preimageWitnessV0(\n idx: number,\n prevOutScript: Bytes,\n hashType: number,\n amount: bigint\n ): Uint8Array {\n const { isAny, isNone, isSingle } = unpackSighash(hashType);\n let inputHash = EMPTY32;\n let sequenceHash = EMPTY32;\n let outputHash = EMPTY32;\n const inputs = this.inputs.map(inputBeforeSign);\n const outputs = this.outputs.map(outputBeforeSign);\n if (!isAny) inputHash = u.sha256x2(...inputs.map(TxHashIdx.encode));\n if (!isAny && !isSingle && !isNone)\n sequenceHash = u.sha256x2(...inputs.map((i) => P.U32LE.encode(i.sequence)));\n if (!isSingle && !isNone) {\n outputHash = u.sha256x2(...outputs.map(RawOutput.encode));\n } else if (isSingle && idx < outputs.length)\n outputHash = u.sha256x2(RawOutput.encode(outputs[idx]));\n const input = inputs[idx];\n return u.sha256x2(\n P.I32LE.encode(this.version),\n inputHash,\n sequenceHash,\n P.bytes(32, true).encode(input.txid),\n P.U32LE.encode(input.index),\n VarBytes.encode(prevOutScript),\n P.U64LE.encode(amount),\n P.U32LE.encode(input.sequence),\n outputHash,\n P.U32LE.encode(this.lockTime),\n P.U32LE.encode(hashType)\n );\n }\n preimageWitnessV1(\n idx: number,\n prevOutScript: Bytes[],\n hashType: number,\n amount: bigint[],\n codeSeparator = -1,\n leafScript?: Bytes,\n leafVer = 0xc0,\n annex?: Bytes\n ): Uint8Array {\n if (!Array.isArray(amount) || this.inputs.length !== amount.length)\n throw new Error(`Invalid amounts array=${amount}`);\n if (!Array.isArray(prevOutScript) || this.inputs.length !== prevOutScript.length)\n throw new Error(`Invalid prevOutScript array=${prevOutScript}`);\n const out: Bytes[] = [\n P.U8.encode(0),\n P.U8.encode(hashType), // U8 sigHash\n P.I32LE.encode(this.version),\n P.U32LE.encode(this.lockTime),\n ];\n const outType = hashType === SignatureHash.DEFAULT ? SignatureHash.ALL : hashType & 0b11;\n const inType = hashType & SignatureHash.ANYONECANPAY;\n const inputs = this.inputs.map(inputBeforeSign);\n const outputs = this.outputs.map(outputBeforeSign);\n if (inType !== SignatureHash.ANYONECANPAY) {\n out.push(\n ...[\n inputs.map(TxHashIdx.encode),\n amount.map(P.U64LE.encode),\n prevOutScript.map(VarBytes.encode),\n inputs.map((i) => P.U32LE.encode(i.sequence)),\n ].map((i) => u.sha256(concatBytes(...i)))\n );\n }\n if (outType === SignatureHash.ALL) {\n out.push(u.sha256(concatBytes(...outputs.map(RawOutput.encode))));\n }\n const spendType = (annex ? 1 : 0) | (leafScript ? 2 : 0);\n out.push(new Uint8Array([spendType]));\n if (inType === SignatureHash.ANYONECANPAY) {\n const inp = inputs[idx];\n out.push(\n TxHashIdx.encode(inp),\n P.U64LE.encode(amount[idx]),\n VarBytes.encode(prevOutScript[idx]),\n P.U32LE.encode(inp.sequence)\n );\n } else out.push(P.U32LE.encode(idx));\n if (spendType & 1) out.push(u.sha256(VarBytes.encode(annex || P.EMPTY)));\n if (outType === SignatureHash.SINGLE)\n out.push(idx < outputs.length ? u.sha256(RawOutput.encode(outputs[idx])) : EMPTY32);\n if (leafScript)\n out.push(tapLeafHash(leafScript, leafVer), P.U8.encode(0), P.I32LE.encode(codeSeparator));\n return u.tagSchnorr('TapSighash', ...out);\n }\n // Signer can be privateKey OR instance of bip32 HD stuff\n signIdx(privateKey: Signer, idx: number, allowedSighash?: SigHash[], _auxRand?: Bytes): boolean {\n this.checkInputIdx(idx);\n const input = this.inputs[idx];\n const inputType = getInputType(input, this.opts.allowLegacyWitnessUtxo);\n // Handle BIP32 HDKey\n if (!isBytes(privateKey)) {\n if (!input.bip32Derivation || !input.bip32Derivation.length)\n throw new Error('bip32Derivation: empty');\n const signers = input.bip32Derivation\n .filter((i) => i[1].fingerprint == (privateKey as HDKey).fingerprint)\n .map(([pubKey, { path }]) => {\n let s = privateKey as HDKey;\n for (const i of path) s = s.deriveChild(i);\n if (!equalBytes(s.publicKey, pubKey)) throw new Error('bip32Derivation: wrong pubKey');\n if (!s.privateKey) throw new Error('bip32Derivation: no privateKey');\n return s;\n });\n if (!signers.length)\n throw new Error(`bip32Derivation: no items with fingerprint=${privateKey.fingerprint}`);\n let signed = false;\n for (const s of signers) if (this.signIdx(s.privateKey, idx)) signed = true;\n return signed;\n }\n // Sighash checks\n // Just for compat with bitcoinjs-lib, so users won't face unexpected behaviour.\n if (!allowedSighash) allowedSighash = [inputType.defaultSighash as unknown as SigHash];\n else allowedSighash.forEach(validateSigHash);\n const sighash = inputType.sighash;\n if (!allowedSighash.includes(sighash)) {\n throw new Error(\n `Input with not allowed sigHash=${sighash}. Allowed: ${allowedSighash.join(', ')}`\n );\n }\n // It is possible to sign these inputs for legacy/segwit v0 (but no taproot!),\n // however this was because of bug in bitcoin-core, which remains here because of consensus.\n // If this is absolutely neccessary for your case, please open issue.\n // We disable it to avoid complicated workflow where SINGLE will block adding new outputs\n const { sigOutputs } = this.inputSighash(idx);\n if (sigOutputs === SignatureHash.SINGLE && idx >= this.outputs.length) {\n throw new Error(\n `Input with sighash SINGLE, but there is no output with corresponding index=${idx}`\n );\n }\n\n // Actual signing\n // Taproot\n const prevOut = getPrevOut(input);\n if (inputType.txType === 'taproot') {\n const prevOuts = this.inputs.map(getPrevOut);\n const prevOutScript = prevOuts.map((i) => i.script);\n const amount = prevOuts.map((i) => i.amount);\n let signed = false;\n let schnorrPub = u.pubSchnorr(privateKey);\n let merkleRoot = input.tapMerkleRoot || P.EMPTY;\n if (input.tapInternalKey) {\n // internal + tweak = tweaked key\n // if internal key == current public key, we need to tweak private key,\n // otherwise sign as is. bitcoinjs implementation always wants tweaked\n // priv key to be provided\n const { pubKey, privKey } = getTaprootKeys(\n privateKey,\n schnorrPub,\n input.tapInternalKey,\n merkleRoot\n );\n const [taprootPubKey, _] = u.taprootTweakPubkey(input.tapInternalKey, merkleRoot);\n if (equalBytes(taprootPubKey, pubKey)) {\n const hash = this.preimageWitnessV1(idx, prevOutScript, sighash, amount);\n const sig = concatBytes(\n u.signSchnorr(hash, privKey, _auxRand),\n sighash !== SignatureHash.DEFAULT ? new Uint8Array([sighash]) : P.EMPTY\n );\n this.updateInput(idx, { tapKeySig: sig }, true);\n signed = true;\n }\n }\n if (input.tapLeafScript) {\n input.tapScriptSig = input.tapScriptSig || [];\n for (const [_, _script] of input.tapLeafScript) {\n const script = _script.subarray(0, -1);\n const scriptDecoded = Script.decode(script);\n const ver = _script[_script.length - 1];\n const hash = tapLeafHash(script, ver);\n // NOTE: no need to tweak internal key here, since we don't support nested p2tr\n const pos = scriptDecoded.findIndex((i) => isBytes(i) && equalBytes(i, schnorrPub));\n // Skip if there is no public key in tapLeafScript\n if (pos === -1) continue;\n const msg = this.preimageWitnessV1(\n idx,\n prevOutScript,\n sighash,\n amount,\n undefined,\n script,\n ver\n );\n const sig = concatBytes(\n u.signSchnorr(msg, privateKey, _auxRand),\n sighash !== SignatureHash.DEFAULT ? new Uint8Array([sighash]) : P.EMPTY\n );\n this.updateInput(\n idx,\n { tapScriptSig: [[{ pubKey: schnorrPub, leafHash: hash }, sig]] },\n true\n );\n signed = true;\n }\n }\n if (!signed) throw new Error('No taproot scripts signed');\n return true;\n } else {\n // only compressed keys are supported for now\n const pubKey = u.pubECDSA(privateKey);\n // TODO: replace with explicit checks\n // Check if script has public key or its has inside\n let hasPubkey = false;\n const pubKeyHash = u.hash160(pubKey);\n for (const i of Script.decode(inputType.lastScript)) {\n if (isBytes(i) && (equalBytes(i, pubKey) || equalBytes(i, pubKeyHash))) hasPubkey = true;\n }\n if (!hasPubkey) throw new Error(`Input script doesn't have pubKey: ${inputType.lastScript}`);\n let hash;\n if (inputType.txType === 'legacy') {\n hash = this.preimageLegacy(idx, inputType.lastScript, sighash);\n } else if (inputType.txType === 'segwit') {\n let script = inputType.lastScript;\n // If wpkh OR sh-wpkh, wsh-wpkh is impossible, so looks ok\n if (inputType.last.type === 'wpkh')\n script = OutScript.encode({ type: 'pkh', hash: inputType.last.hash });\n hash = this.preimageWitnessV0(idx, script, sighash, prevOut.amount);\n } else throw new Error(`Transaction/sign: unknown tx type: ${inputType.txType}`);\n const sig = u.signECDSA(hash, privateKey, this.opts.lowR);\n this.updateInput(\n idx,\n {\n partialSig: [[pubKey, concatBytes(sig, new Uint8Array([sighash]))]],\n },\n true\n );\n }\n return true;\n }\n // This is bad API. Will work if user creates and signs tx, but if\n // there is some complex workflow with exchanging PSBT and signing them,\n // then it is better to validate which output user signs. How could a better API look like?\n // Example: user adds input, sends to another party, then signs received input (mixer etc),\n // another user can add different input for same key and user will sign it.\n // Even worse: another user can add bip32 derivation, and spend money from different address.\n // Better api: signIdx\n sign(privateKey: Signer, allowedSighash?: number[], _auxRand?: Bytes): number {\n let num = 0;\n for (let i = 0; i < this.inputs.length; i++) {\n try {\n if (this.signIdx(privateKey, i, allowedSighash, _auxRand)) num++;\n } catch (e) {}\n }\n if (!num) throw new Error('No inputs signed');\n return num;\n }\n\n finalizeIdx(idx: number): void {\n this.checkInputIdx(idx);\n if (this.fee < 0n) throw new Error('Outputs spends more than inputs amount');\n const input = this.inputs[idx];\n const inputType = getInputType(input, this.opts.allowLegacyWitnessUtxo);\n // Taproot finalize\n if (inputType.txType === 'taproot') {\n if (input.tapKeySig) input.finalScriptWitness = [input.tapKeySig];\n else if (input.tapLeafScript && input.tapScriptSig) {\n // Sort leafs by control block length.\n const leafs = input.tapLeafScript.sort(\n (a, b) =>\n psbt.TaprootControlBlock.encode(a[0]).length -\n psbt.TaprootControlBlock.encode(b[0]).length\n );\n for (const [cb, _script] of leafs) {\n // Last byte is version\n const script = _script.slice(0, -1);\n const ver = _script[_script.length - 1];\n const outScript = OutScript.decode(script);\n const hash = tapLeafHash(script, ver);\n const scriptSig = input.tapScriptSig.filter((i) => equalBytes(i[0].leafHash, hash));\n let signatures: Bytes[] = [];\n if (outScript.type === 'tr_ms') {\n const m = outScript.m;\n const pubkeys = outScript.pubkeys;\n let added = 0;\n for (const pub of pubkeys) {\n const sigIdx = scriptSig.findIndex((i) => equalBytes(i[0].pubKey, pub));\n // Should have exact amount of signatures (more -- will fail)\n if (added === m || sigIdx === -1) {\n signatures.push(P.EMPTY);\n continue;\n }\n signatures.push(scriptSig[sigIdx][1]);\n added++;\n }\n // Should be exact same as m\n if (added !== m) continue;\n } else if (outScript.type === 'tr_ns') {\n for (const pub of outScript.pubkeys) {\n const sigIdx = scriptSig.findIndex((i) => equalBytes(i[0].pubKey, pub));\n if (sigIdx === -1) continue;\n signatures.push(scriptSig[sigIdx][1]);\n }\n if (signatures.length !== outScript.pubkeys.length) continue;\n } else if (outScript.type === 'unknown' && this.opts.allowUnknownInputs) {\n // Trying our best to sign what we can\n const scriptDecoded = Script.decode(script);\n signatures = scriptSig\n .map(([{ pubKey }, signature]) => {\n const pos = scriptDecoded.findIndex((i) => isBytes(i) && equalBytes(i, pubKey));\n if (pos === -1)\n throw new Error('finalize/taproot: cannot find position of pubkey in script');\n return { signature, pos };\n })\n // Reverse order (because witness is stack and we take last element first from it)\n .sort((a, b) => a.pos - b.pos)\n .map((i) => i.signature);\n if (!signatures.length) continue;\n } else {\n const custom = this.opts.customScripts;\n if (custom) {\n for (const c of custom) {\n if (!c.finalizeTaproot) continue;\n const scriptDecoded = Script.decode(script);\n const csEncoded = c.encode(scriptDecoded);\n if (csEncoded === undefined) continue;\n const finalized = c.finalizeTaproot(script, csEncoded, scriptSig);\n if (!finalized) continue;\n input.finalScriptWitness = finalized.concat(psbt.TaprootControlBlock.encode(cb));\n input.finalScriptSig = P.EMPTY;\n cleanFinalInput(input);\n return;\n }\n }\n throw new Error('Finalize: Unknown tapLeafScript');\n }\n // Witness is stack, so last element will be used first\n input.finalScriptWitness = signatures\n .reverse()\n .concat([script, psbt.TaprootControlBlock.encode(cb)]);\n break;\n }\n if (!input.finalScriptWitness) throw new Error('finalize/taproot: empty witness');\n } else throw new Error('finalize/taproot: unknown input');\n input.finalScriptSig = P.EMPTY;\n cleanFinalInput(input);\n return;\n }\n if (!input.partialSig || !input.partialSig.length) throw new Error('Not enough partial sign');\n\n let inputScript: Bytes = P.EMPTY;\n let witness: Bytes[] = [];\n // TODO: move input scripts closer to payments/output scripts\n // Multisig\n if (inputType.last.type === 'ms') {\n const m = inputType.last.m;\n const pubkeys = inputType.last.pubkeys;\n let signatures = [];\n // partial: [pubkey, sign]\n for (const pub of pubkeys) {\n const sign = input.partialSig.find((s) => equalBytes(pub, s[0]));\n if (!sign) continue;\n signatures.push(sign[1]);\n }\n signatures = signatures.slice(0, m);\n if (signatures.length !== m) {\n throw new Error(\n `Multisig: wrong signatures count, m=${m} n=${pubkeys.length} signatures=${signatures.length}`\n );\n }\n inputScript = Script.encode([0, ...signatures]);\n } else if (inputType.last.type === 'pk') {\n inputScript = Script.encode([input.partialSig[0][1]]);\n } else if (inputType.last.type === 'pkh') {\n inputScript = Script.encode([input.partialSig[0][1], input.partialSig[0][0]]);\n } else if (inputType.last.type === 'wpkh') {\n inputScript = P.EMPTY;\n witness = [input.partialSig[0][1], input.partialSig[0][0]];\n } else if (inputType.last.type === 'unknown' && !this.opts.allowUnknownInputs)\n throw new Error('Unknown inputs not allowed');\n\n // Create final scripts (generic part)\n let finalScriptSig: Bytes | undefined, finalScriptWitness: Bytes[] | undefined;\n if (inputType.type.includes('wsh-')) {\n // P2WSH\n if (inputScript.length && inputType.lastScript.length) {\n witness = Script.decode(inputScript).map((i) => {\n if (i === 0) return P.EMPTY;\n if (isBytes(i)) return i;\n throw new Error(`Wrong witness op=${i}`);\n });\n }\n witness = witness.concat(inputType.lastScript);\n }\n if (inputType.txType === 'segwit') finalScriptWitness = witness;\n if (inputType.type.startsWith('sh-wsh-')) {\n finalScriptSig = Script.encode([Script.encode([0, u.sha256(inputType.lastScript)])]);\n } else if (inputType.type.startsWith('sh-')) {\n finalScriptSig = Script.encode([...Script.decode(inputScript), inputType.lastScript]);\n } else if (inputType.type.startsWith('wsh-')) {\n } else if (inputType.txType !== 'segwit') finalScriptSig = inputScript;\n\n if (!finalScriptSig && !finalScriptWitness) throw new Error('Unknown error finalizing input');\n if (finalScriptSig) input.finalScriptSig = finalScriptSig;\n if (finalScriptWitness) input.finalScriptWitness = finalScriptWitness;\n cleanFinalInput(input);\n }\n finalize(): void {\n for (let i = 0; i < this.inputs.length; i++) this.finalizeIdx(i);\n }\n extract(): Uint8Array {\n if (!this.isFinal) throw new Error('Transaction has unfinalized inputs');\n if (!this.outputs.length) throw new Error('Transaction has no outputs');\n if (this.fee < 0n) throw new Error('Outputs spends more than inputs amount');\n return this.toBytes(true, true);\n }\n combine(other: Transaction): this {\n for (const k of ['PSBTVersion', 'version', 'lockTime'] as const) {\n if (this.opts[k] !== other.opts[k]) {\n throw new Error(\n `Transaction/combine: different ${k} this=${this.opts[k]} other=${other.opts[k]}`\n );\n }\n }\n for (const k of ['inputs', 'outputs'] as const) {\n if (this[k].length !== other[k].length) {\n throw new Error(\n `Transaction/combine: different ${k} length this=${this[k].length} other=${other[k].length}`\n );\n }\n }\n const thisUnsigned = this.global.unsignedTx ? RawOldTx.encode(this.global.unsignedTx) : P.EMPTY;\n const otherUnsigned = other.global.unsignedTx\n ? RawOldTx.encode(other.global.unsignedTx)\n : P.EMPTY;\n if (!equalBytes(thisUnsigned, otherUnsigned))\n throw new Error(`Transaction/combine: different unsigned tx`);\n this.global = psbt.mergeKeyMap(psbt.PSBTGlobal, this.global, other.global);\n for (let i = 0; i < this.inputs.length; i++) this.updateInput(i, other.inputs[i], true);\n for (let i = 0; i < this.outputs.length; i++) this.updateOutput(i, other.outputs[i], true);\n return this;\n }\n clone(): Transaction {\n // deepClone probably faster, but this enforces that encoding is valid\n return Transaction.fromPSBT(this.toPSBT(this.opts.PSBTVersion), this.opts);\n }\n}\n\nexport function PSBTCombine(psbts: Bytes[]): Bytes {\n if (!psbts || !Array.isArray(psbts) || !psbts.length)\n throw new Error('PSBTCombine: wrong PSBT list');\n const tx = Transaction.fromPSBT(psbts[0]);\n for (let i = 1; i < psbts.length; i++) tx.combine(Transaction.fromPSBT(psbts[i]));\n return tx.toPSBT();\n}\n\n// Copy-pasted from bip32 derive, maybe do something like 'bip32.parsePath'?\nconst HARDENED_OFFSET: number = 0x80000000;\nexport function bip32Path(path: string): number[] {\n const out: number[] = [];\n if (!/^[mM]'?/.test(path)) throw new Error('Path must start with \"m\" or \"M\"');\n if (/^[mM]'?$/.test(path)) return out;\n const parts = path.replace(/^[mM]'?\\//, '').split('/');\n for (const c of parts) {\n const m = /^(\\d+)('?)$/.exec(c);\n if (!m || m.length !== 3) throw new Error(`Invalid child index: ${c}`);\n let idx = +m[1];\n if (!Number.isSafeInteger(idx) || idx >= HARDENED_OFFSET) throw new Error('Invalid index');\n // hardened key\n if (m[2] === \"'\") idx += HARDENED_OFFSET;\n out.push(idx);\n }\n return out;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n",null,"\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.externalLink = void 0;\nvar externalLink = {\n \"viewBox\": \"0 0 1792 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M1408 928v320q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h704q14 0 23 9t9 23v64q0 14-9 23t-23 9h-704q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113v-320q0-14 9-23t23-9h64q14 0 23 9t9 23zM1792 64v512q0 26-19 45t-45 19-45-19l-176-176-652 652q-10 10-23 10t-23-10l-114-114q-10-10-10-23t10-23l652-652-176-176q-19-19-19-45t19-45 45-19h512q26 0 45 19t19 45z\"\n }\n }]\n};\nexports.externalLink = externalLink;","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta } from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n TokenUnsupportedInstructionError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializePermanentDelegateInstructionData {\n instruction: TokenInstruction.InitializePermanentDelegate;\n delegate: PublicKey;\n}\n\n/** TODO: docs */\nexport const initializePermanentDelegateInstructionData = struct([\n u8('instruction'),\n publicKey('delegate'),\n]);\n\n/**\n * Construct an InitializePermanentDelegate instruction\n *\n * @param mint Token mint account\n * @param permanentDelegate Authority that may sign for `Transfer`s and `Burn`s on any account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializePermanentDelegateInstruction(\n mint: PublicKey,\n permanentDelegate: PublicKey | null,\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializePermanentDelegateInstructionData.span);\n initializePermanentDelegateInstructionData.encode(\n {\n instruction: TokenInstruction.InitializePermanentDelegate,\n delegate: permanentDelegate || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializePermanentDelegate instruction */\nexport interface DecodedInitializePermanentDelegateInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializePermanentDelegate;\n delegate: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializePermanentDelegate instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializePermanentDelegateInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedInitializePermanentDelegateInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializePermanentDelegateInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeInitializePermanentDelegateInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializePermanentDelegate) throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializePermanentDelegate instruction */\nexport interface DecodedInitializePermanentDelegateInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n delegate: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializePermanentDelegate instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializePermanentDelegateInstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedInitializePermanentDelegateInstructionUnchecked {\n const { instruction, delegate } = initializePermanentDelegateInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n },\n data: {\n instruction,\n delegate,\n },\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapType = void 0;\r\nvar SwapType;\r\n(function (SwapType) {\r\n SwapType[SwapType[\"FROM_BTC\"] = 0] = \"FROM_BTC\";\r\n SwapType[SwapType[\"FROM_BTCLN\"] = 1] = \"FROM_BTCLN\";\r\n SwapType[SwapType[\"TO_BTC\"] = 2] = \"TO_BTC\";\r\n SwapType[SwapType[\"TO_BTCLN\"] = 3] = \"TO_BTCLN\";\r\n SwapType[SwapType[\"TRUSTED_FROM_BTC\"] = 4] = \"TRUSTED_FROM_BTC\";\r\n SwapType[SwapType[\"TRUSTED_FROM_BTCLN\"] = 5] = \"TRUSTED_FROM_BTCLN\";\r\n})(SwapType = exports.SwapType || (exports.SwapType = {}));\r\n;\r\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\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","import { Layout, u8 } from '@solana/buffer-layout';\nimport { encodeDecode } from './base';\n\nexport const bool = (property?: string): Layout => {\n const layout = u8(property);\n const { encode, decode } = encodeDecode(layout);\n\n const boolLayout = layout as Layout as Layout;\n\n boolLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return !!src;\n };\n\n boolLayout.encode = (bool: boolean, buffer: Buffer, offset: number) => {\n const src = Number(bool);\n return encode(src, buffer, offset);\n };\n\n return boolLayout;\n};\n","module.exports = /[^A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]+/g\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.toOutputScript = exports.bigIntCompare = exports.bigIntMax = exports.bigIntMin = exports.timeoutSignal = exports.timeoutPromise = exports.httpPost = exports.httpGet = exports.fetchWithTimeout = exports.tryWithRetries = exports.extendAbortController = exports.mapToArray = exports.objectMap = exports.promiseAny = exports.getLogger = void 0;\r\nconst RequestError_1 = require(\"../errors/RequestError\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst btc_signer_1 = require(\"@scure/btc-signer\");\r\nfunction isConstructor(fn) {\r\n return (typeof fn === 'function' &&\r\n fn.prototype != null &&\r\n fn.prototype.constructor === fn);\r\n}\r\nfunction isConstructorArray(fnArr) {\r\n return Array.isArray(fnArr) && fnArr.every(isConstructor);\r\n}\r\n/**\r\n * Checks whether the passed error is allowed to pass through\r\n *\r\n * @param e Error in question\r\n * @param errorAllowed Allowed errors as defined as a callback function, specific error type, or an array of error types\r\n */\r\nfunction checkError(e, errorAllowed) {\r\n if (isConstructorArray(errorAllowed))\r\n return errorAllowed.find(error => e instanceof error) != null;\r\n if (isConstructor(errorAllowed))\r\n return e instanceof errorAllowed;\r\n return errorAllowed(e);\r\n}\r\nfunction getLogger(prefix) {\r\n return {\r\n debug: (msg, ...args) => console.debug(prefix + msg, ...args),\r\n info: (msg, ...args) => console.info(prefix + msg, ...args),\r\n warn: (msg, ...args) => console.warn(prefix + msg, ...args),\r\n error: (msg, ...args) => console.error(prefix + msg, ...args)\r\n };\r\n}\r\nexports.getLogger = getLogger;\r\nconst logger = getLogger(\"Utils: \");\r\n/**\r\n * Returns a promise that resolves when any of the passed promises resolves, and rejects if all the underlying\r\n * promises fail with an array of errors returned by the respective promises\r\n *\r\n * @param promises\r\n */\r\nfunction promiseAny(promises) {\r\n return new Promise((resolve, reject) => {\r\n let numRejected = 0;\r\n const rejectReasons = Array(promises.length);\r\n promises.forEach((promise, index) => {\r\n promise.then((val) => {\r\n if (resolve != null)\r\n resolve(val);\r\n resolve = null;\r\n }).catch(err => {\r\n rejectReasons[index] = err;\r\n numRejected++;\r\n if (numRejected === promises.length) {\r\n reject(rejectReasons);\r\n }\r\n });\r\n });\r\n });\r\n}\r\nexports.promiseAny = promiseAny;\r\n/**\r\n * Maps a JS object to another JS object based on the translation function, the translation function is called for every\r\n * property (value/key) of the old object and returns the new value of for this property\r\n *\r\n * @param obj\r\n * @param translator\r\n */\r\nfunction objectMap(obj, translator) {\r\n const resp = {};\r\n for (let key in obj) {\r\n resp[key] = translator(obj[key], key);\r\n }\r\n return resp;\r\n}\r\nexports.objectMap = objectMap;\r\n/**\r\n * Maps the entries from the map to the array using the translator function\r\n *\r\n * @param map\r\n * @param translator\r\n */\r\nfunction mapToArray(map, translator) {\r\n const arr = Array(map.size);\r\n let pointer = 0;\r\n for (let entry of map.entries()) {\r\n arr[pointer++] = translator(entry[0], entry[1]);\r\n }\r\n return arr;\r\n}\r\nexports.mapToArray = mapToArray;\r\n/**\r\n * Creates a new abort controller that will abort if the passed abort signal aborts\r\n *\r\n * @param abortSignal\r\n */\r\nfunction extendAbortController(abortSignal) {\r\n const _abortController = new AbortController();\r\n if (abortSignal != null) {\r\n abortSignal.throwIfAborted();\r\n abortSignal.onabort = () => _abortController.abort(abortSignal.reason);\r\n }\r\n return _abortController;\r\n}\r\nexports.extendAbortController = extendAbortController;\r\n/**\r\n * Runs the passed function multiple times if it fails\r\n *\r\n * @param func A callback for executing the action\r\n * @param func.retryCount Count of the current retry, starting from 0 for original request and increasing\r\n * @param retryPolicy Retry policy\r\n * @param retryPolicy.maxRetries How many retries to attempt in total\r\n * @param retryPolicy.delay How long should the delay be\r\n * @param retryPolicy.exponential Whether to use exponentially increasing delays\r\n * @param errorAllowed A callback for determining whether a given error is allowed, and we should therefore not retry\r\n * @param abortSignal\r\n * @returns Result of the action executing callback\r\n */\r\nasync function tryWithRetries(func, retryPolicy, errorAllowed, abortSignal) {\r\n retryPolicy = retryPolicy || {};\r\n retryPolicy.maxRetries = retryPolicy.maxRetries || 5;\r\n retryPolicy.delay = retryPolicy.delay || 500;\r\n retryPolicy.exponential = retryPolicy.exponential == null ? true : retryPolicy.exponential;\r\n let err = null;\r\n for (let i = 0; i < retryPolicy.maxRetries; i++) {\r\n try {\r\n return await func(i);\r\n }\r\n catch (e) {\r\n if (errorAllowed != null && checkError(e, errorAllowed))\r\n throw e;\r\n err = e;\r\n logger.warn(\"tryWithRetries(): Error on try number: \" + i, e);\r\n }\r\n if (abortSignal != null && abortSignal.aborted)\r\n throw (abortSignal.reason || new Error(\"Aborted\"));\r\n if (i !== retryPolicy.maxRetries - 1) {\r\n await timeoutPromise(retryPolicy.exponential ? retryPolicy.delay * Math.pow(2, i) : retryPolicy.delay, abortSignal);\r\n }\r\n }\r\n throw err;\r\n}\r\nexports.tryWithRetries = tryWithRetries;\r\n/**\r\n * Mimics fetch API byt adds a timeout to the request\r\n *\r\n * @param input\r\n * @param init\r\n */\r\nfunction fetchWithTimeout(input, init) {\r\n if (init == null)\r\n init = {};\r\n if (init.timeout != null)\r\n init.signal = timeoutSignal(init.timeout, new Error(\"Network request timed out\"), init.signal);\r\n return fetch(input, init).catch(e => {\r\n if (e.name === \"AbortError\") {\r\n throw init.signal.reason;\r\n }\r\n else {\r\n throw e;\r\n }\r\n });\r\n}\r\nexports.fetchWithTimeout = fetchWithTimeout;\r\n/**\r\n * Sends an HTTP GET request through a fetch API, handles non 200 response codes as errors\r\n * @param url Send request to this URL\r\n * @param timeout Timeout (in milliseconds) for the request to conclude\r\n * @param abortSignal\r\n * @param allowNon200 Whether to allow non-200 status code HTTP responses\r\n * @throws {RequestError} if non 200 response code was returned or body cannot be parsed\r\n */\r\nasync function httpGet(url, timeout, abortSignal, allowNon200 = false) {\r\n const init = {\r\n method: \"GET\",\r\n timeout,\r\n signal: abortSignal\r\n };\r\n const response = await fetchWithTimeout(url, init);\r\n if (response.status !== 200) {\r\n let resp;\r\n try {\r\n resp = await response.text();\r\n }\r\n catch (e) {\r\n throw new RequestError_1.RequestError(response.statusText, response.status);\r\n }\r\n if (allowNon200) {\r\n try {\r\n return JSON.parse(resp);\r\n }\r\n catch (e) { }\r\n }\r\n throw RequestError_1.RequestError.parse(resp, response.status);\r\n }\r\n return await response.json();\r\n}\r\nexports.httpGet = httpGet;\r\n/**\r\n * Sends an HTTP POST request through a fetch API, handles non 200 response codes as errors\r\n * @param url Send request to this URL\r\n * @param body A HTTP request body to send to the server\r\n * @param timeout Timeout (in milliseconds) for the request to conclude\r\n * @param abortSignal\r\n * @throws {RequestError} if non 200 response code was returned\r\n */\r\nasync function httpPost(url, body, timeout, abortSignal) {\r\n const init = {\r\n method: \"POST\",\r\n timeout,\r\n body: JSON.stringify(body),\r\n headers: { 'Content-Type': 'application/json' },\r\n signal: abortSignal\r\n };\r\n const response = timeout == null ? await fetch(url, init) : await fetchWithTimeout(url, init);\r\n if (response.status !== 200) {\r\n let resp;\r\n try {\r\n resp = await response.text();\r\n }\r\n catch (e) {\r\n throw new RequestError_1.RequestError(response.statusText, response.status);\r\n }\r\n throw RequestError_1.RequestError.parse(resp, response.status);\r\n }\r\n return await response.json();\r\n}\r\nexports.httpPost = httpPost;\r\n/**\r\n * Returns a promise that resolves after given amount seconds\r\n *\r\n * @param timeout how many milliseconds to wait for\r\n * @param abortSignal\r\n */\r\nfunction timeoutPromise(timeout, abortSignal) {\r\n return new Promise((resolve, reject) => {\r\n if (abortSignal != null && abortSignal.aborted) {\r\n reject(abortSignal.reason);\r\n return;\r\n }\r\n let timeoutHandle = setTimeout(resolve, timeout);\r\n if (abortSignal != null) {\r\n abortSignal.addEventListener(\"abort\", () => {\r\n if (timeoutHandle != null)\r\n clearTimeout(timeoutHandle);\r\n timeoutHandle = null;\r\n reject(abortSignal.reason);\r\n });\r\n }\r\n });\r\n}\r\nexports.timeoutPromise = timeoutPromise;\r\n/**\r\n * Returns an abort signal that aborts after a specified timeout in milliseconds\r\n *\r\n * @param timeout Milliseconds to wait\r\n * @param abortReason Abort with this abort reason\r\n * @param abortSignal Abort signal to extend\r\n */\r\nfunction timeoutSignal(timeout, abortReason, abortSignal) {\r\n if (timeout == null)\r\n return abortSignal;\r\n const abortController = new AbortController();\r\n const timeoutHandle = setTimeout(() => abortController.abort(abortReason || new Error(\"Timed out\")), timeout);\r\n if (abortSignal != null) {\r\n abortSignal.addEventListener(\"abort\", () => {\r\n clearTimeout(timeoutHandle);\r\n abortController.abort(abortSignal.reason);\r\n });\r\n }\r\n return abortController.signal;\r\n}\r\nexports.timeoutSignal = timeoutSignal;\r\nfunction bigIntMin(a, b) {\r\n return a > b ? b : a;\r\n}\r\nexports.bigIntMin = bigIntMin;\r\nfunction bigIntMax(a, b) {\r\n return b > a ? b : a;\r\n}\r\nexports.bigIntMax = bigIntMax;\r\nfunction bigIntCompare(a, b) {\r\n return a > b ? 1 : a === b ? 0 : -1;\r\n}\r\nexports.bigIntCompare = bigIntCompare;\r\nfunction toOutputScript(network, address) {\r\n const outputScript = (0, btc_signer_1.Address)(network).decode(address);\r\n switch (outputScript.type) {\r\n case \"pkh\":\r\n case \"sh\":\r\n case \"wpkh\":\r\n case \"wsh\":\r\n return buffer_1.Buffer.from(btc_signer_1.OutScript.encode({\r\n type: outputScript.type,\r\n hash: outputScript.hash\r\n }));\r\n case \"tr\":\r\n return buffer_1.Buffer.from(btc_signer_1.OutScript.encode({\r\n type: \"tr\",\r\n pubkey: outputScript.pubkey\r\n }));\r\n }\r\n}\r\nexports.toOutputScript = toOutputScript;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","import * as P from 'micro-packed';\nimport { isBytes } from './utils.js';\n\nexport const MAX_SCRIPT_BYTE_LENGTH = 520;\n\n// prettier-ignore\nexport enum OP {\n OP_0 = 0x00, PUSHDATA1 = 0x4c, PUSHDATA2, PUSHDATA4, '1NEGATE',\n RESERVED = 0x50,\n OP_1, OP_2, OP_3, OP_4, OP_5, OP_6, OP_7, OP_8,\n OP_9, OP_10, OP_11, OP_12, OP_13, OP_14, OP_15, OP_16,\n // Control\n NOP, VER, IF, NOTIF, VERIF, VERNOTIF, ELSE, ENDIF, VERIFY, RETURN,\n // Stack\n TOALTSTACK, FROMALTSTACK, '2DROP', '2DUP', '3DUP', '2OVER', '2ROT', '2SWAP',\n IFDUP, DEPTH, DROP, DUP, NIP, OVER, PICK, ROLL, ROT, SWAP, TUCK,\n // Splice\n CAT, SUBSTR, LEFT, RIGHT, SIZE,\n // Boolean logic\n INVERT, AND, OR, XOR, EQUAL, EQUALVERIFY, RESERVED1, RESERVED2,\n // Numbers\n '1ADD', '1SUB', '2MUL', '2DIV',\n NEGATE, ABS, NOT, '0NOTEQUAL',\n ADD, SUB, MUL, DIV, MOD, LSHIFT, RSHIFT, BOOLAND, BOOLOR,\n NUMEQUAL, NUMEQUALVERIFY, NUMNOTEQUAL, LESSTHAN, GREATERTHAN,\n LESSTHANOREQUAL, GREATERTHANOREQUAL, MIN, MAX, WITHIN,\n // Crypto\n RIPEMD160, SHA1, SHA256, HASH160, HASH256, CODESEPARATOR,\n CHECKSIG, CHECKSIGVERIFY, CHECKMULTISIG, CHECKMULTISIGVERIFY,\n // Expansion\n NOP1, CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, NOP4, NOP5, NOP6, NOP7, NOP8, NOP9, NOP10,\n // BIP 342\n CHECKSIGADD,\n // Invalid\n INVALID = 0xff,\n}\n\nexport type ScriptOP = keyof typeof OP | Uint8Array | number;\nexport type ScriptType = ScriptOP[];\n\n// We can encode almost any number as ScriptNum, however, parsing will be a problem\n// since we can't know if buffer is a number or something else.\nexport function ScriptNum(bytesLimit = 6, forceMinimal = false): P.CoderType {\n return P.wrap({\n encodeStream: (w: P.Writer, value: bigint) => {\n if (value === 0n) return;\n const neg = value < 0;\n const val = BigInt(value);\n const nums = [];\n for (let abs = neg ? -val : val; abs; abs >>= 8n) nums.push(Number(abs & 0xffn));\n if (nums[nums.length - 1] >= 0x80) nums.push(neg ? 0x80 : 0);\n else if (neg) nums[nums.length - 1] |= 0x80;\n w.bytes(new Uint8Array(nums));\n },\n decodeStream: (r: P.Reader): bigint => {\n const len = r.leftBytes;\n if (len > bytesLimit)\n throw new Error(`ScriptNum: number (${len}) bigger than limit=${bytesLimit}`);\n if (len === 0) return 0n;\n if (forceMinimal) {\n const data = r.bytes(len, true);\n // MSB is zero (without sign bit) -> not minimally encoded\n if ((data[data.length - 1] & 0x7f) === 0) {\n // exception\n if (len <= 1 || (data[data.length - 2] & 0x80) === 0)\n throw new Error('Non-minimally encoded ScriptNum');\n }\n }\n let last = 0;\n let res = 0n;\n for (let i = 0; i < len; ++i) {\n last = r.byte();\n res |= BigInt(last) << (8n * BigInt(i));\n }\n if (last >= 0x80) {\n res &= (2n ** BigInt(len * 8) - 1n) >> 1n;\n res = -res;\n }\n return res;\n },\n });\n}\n\nexport function OpToNum(op: ScriptOP, bytesLimit = 4, forceMinimal = true): number | undefined {\n if (typeof op === 'number') return op;\n if (isBytes(op)) {\n try {\n const val = ScriptNum(bytesLimit, forceMinimal).decode(op);\n if (val > Number.MAX_SAFE_INTEGER) return;\n return Number(val);\n } catch (e) {\n return;\n }\n }\n return;\n}\n\n// Converts script bytes to parsed script\n// 5221030000000000000000000000000000000000000000000000000000000000000001210300000000000000000000000000000000000000000000000000000000000000022103000000000000000000000000000000000000000000000000000000000000000353ae\n// =>\n// OP_2\n// 030000000000000000000000000000000000000000000000000000000000000001\n// 030000000000000000000000000000000000000000000000000000000000000002\n// 030000000000000000000000000000000000000000000000000000000000000003\n// OP_3\n// CHECKMULTISIG\nexport const Script: P.CoderType = P.wrap({\n encodeStream: (w: P.Writer, value: ScriptType) => {\n for (let o of value) {\n if (typeof o === 'string') {\n if (OP[o] === undefined) throw new Error(`Unknown opcode=${o}`);\n w.byte(OP[o]);\n continue;\n } else if (typeof o === 'number') {\n if (o === 0x00) {\n w.byte(0x00);\n continue;\n } else if (1 <= o && o <= 16) {\n w.byte(OP.OP_1 - 1 + o);\n continue;\n }\n }\n // Encode big numbers\n if (typeof o === 'number') o = ScriptNum().encode(BigInt(o));\n if (!isBytes(o)) throw new Error(`Wrong Script OP=${o} (${typeof o})`);\n // Bytes\n const len = o.length;\n if (len < OP.PUSHDATA1) w.byte(len);\n else if (len <= 0xff) {\n w.byte(OP.PUSHDATA1);\n w.byte(len);\n } else if (len <= 0xffff) {\n w.byte(OP.PUSHDATA2);\n w.bytes(P.U16LE.encode(len));\n } else {\n w.byte(OP.PUSHDATA4);\n w.bytes(P.U32LE.encode(len));\n }\n w.bytes(o);\n }\n },\n decodeStream: (r: P.Reader): ScriptType => {\n const out: ScriptType = [];\n while (!r.isEnd()) {\n const cur = r.byte();\n // if 0 < cur < 78\n if (OP.OP_0 < cur && cur <= OP.PUSHDATA4) {\n let len;\n if (cur < OP.PUSHDATA1) len = cur;\n else if (cur === OP.PUSHDATA1) len = P.U8.decodeStream(r);\n else if (cur === OP.PUSHDATA2) len = P.U16LE.decodeStream(r);\n else if (cur === OP.PUSHDATA4) len = P.U32LE.decodeStream(r);\n else throw new Error('Should be not possible');\n out.push(r.bytes(len));\n } else if (cur === 0x00) {\n out.push(0);\n } else if (OP.OP_1 <= cur && cur <= OP.OP_16) {\n out.push(cur - (OP.OP_1 - 1));\n } else {\n const op = OP[cur] as keyof typeof OP;\n if (op === undefined) throw new Error(`Unknown opcode=${cur.toString(16)}`);\n out.push(op);\n }\n }\n return out;\n },\n});\n\n// BTC specific variable length integer encoding\n// https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer\nconst CSLimits: Record = {\n 0xfd: [0xfd, 2, 253n, 65535n],\n 0xfe: [0xfe, 4, 65536n, 4294967295n],\n 0xff: [0xff, 8, 4294967296n, 18446744073709551615n],\n};\nexport const CompactSize: P.CoderType = P.wrap({\n encodeStream: (w: P.Writer, value: bigint) => {\n if (typeof value === 'number') value = BigInt(value);\n if (0n <= value && value <= 252n) return w.byte(Number(value));\n for (const [flag, bytes, start, stop] of Object.values(CSLimits)) {\n if (start > value || value > stop) continue;\n w.byte(flag);\n for (let i = 0; i < bytes; i++) w.byte(Number((value >> (8n * BigInt(i))) & 0xffn));\n return;\n }\n throw w.err(`VarInt too big: ${value}`);\n },\n decodeStream: (r: P.Reader): bigint => {\n const b0 = r.byte();\n if (b0 <= 0xfc) return BigInt(b0);\n const [_, bytes, start] = CSLimits[b0];\n let num = 0n;\n for (let i = 0; i < bytes; i++) num |= BigInt(r.byte()) << (8n * BigInt(i));\n if (num < start) throw r.err(`Wrong CompactSize(${8 * bytes})`);\n return num;\n },\n});\n\n// Same thing, but in number instead of bigint. Checks for safe integer inside\nexport const CompactSizeLen: P.CoderType = P.apply(CompactSize, P.coders.numberBigint);\n\n// ui8a of size \nexport const VarBytes: P.CoderType = P.bytes(CompactSize);\n\n// SegWit v0 stack of witness buffers\nexport const RawWitness: P.CoderType = P.array(CompactSizeLen, VarBytes);\n\n// Array of size \nexport const BTCArray = (t: P.CoderType): P.CoderType => P.array(CompactSize, t);\n\nexport const RawInput = P.struct({\n txid: P.bytes(32, true), // hash(prev_tx),\n index: P.U32LE, // output number of previous tx\n finalScriptSig: VarBytes, // btc merges input and output script, executes it. If ok = tx passes\n sequence: P.U32LE, // ?\n});\n\nexport const RawOutput = P.struct({ amount: P.U64LE, script: VarBytes });\n\n// https://en.bitcoin.it/wiki/Protocol_documentation#tx\nconst _RawTx = P.struct({\n version: P.I32LE,\n segwitFlag: P.flag(new Uint8Array([0x00, 0x01])),\n inputs: BTCArray(RawInput),\n outputs: BTCArray(RawOutput),\n witnesses: P.flagged('segwitFlag', P.array('inputs/length', RawWitness)),\n // < 500000000\tBlock number at which this transaction is unlocked\n // >= 500000000\tUNIX timestamp at which this transaction is unlocked\n // Handled as part of PSBTv2\n lockTime: P.U32LE,\n});\n\nfunction validateRawTx(tx: P.UnwrapCoder) {\n if (tx.segwitFlag && tx.witnesses && !tx.witnesses.length)\n throw new Error('Segwit flag with empty witnesses array');\n return tx;\n}\nexport const RawTx: typeof _RawTx = P.validate(_RawTx, validateRawTx);\n// Pre-SegWit serialization format (for PSBTv0)\nexport const RawOldTx = P.struct({\n version: P.I32LE,\n inputs: BTCArray(RawInput),\n outputs: BTCArray(RawOutput),\n lockTime: P.U32LE,\n});\n","/**\n * Internal assertion helpers.\n * @module\n */\n\n/** Asserts something is positive integer. */\nfunction anumber(n: number): void {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Is number an Uint8Array? Copied from utils for perf. */\nfunction isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is Uint8Array. */\nfunction abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\n/** Hash interface. */\nexport type Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\n\n/** Asserts something is hash */\nfunction ahash(h: Hash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nfunction aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nfunction aoutput(out: any, instance: any): void {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n\nexport { anumber, abytes, ahash, aexists, aoutput };\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Lockable = void 0;\r\nclass Lockable {\r\n constructor() {\r\n this.lockedTill = 0;\r\n this.lockNonce = 0;\r\n }\r\n lock(timeoutSeconds) {\r\n if (this.isLocked()) {\r\n return null;\r\n }\r\n this.lockedTill = Date.now() + (timeoutSeconds * 1000);\r\n this.lockNonce++;\r\n const lockNonce = this.lockNonce;\r\n return () => {\r\n if (this.lockNonce !== lockNonce) {\r\n return false;\r\n }\r\n this.lockedTill = 0;\r\n return true;\r\n };\r\n }\r\n isLocked() {\r\n return this.lockedTill > Date.now();\r\n }\r\n}\r\nexports.Lockable = Lockable;\r\n","import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { Keypair, sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createInitializeMint2Instruction } from '../instructions/initializeMint2.js';\nimport { getMinimumBalanceForRentExemptMint, MINT_SIZE } from '../state/mint.js';\n\n/**\n * Create and initialize a new mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mintAuthority Account or multisig that will control minting\n * @param freezeAuthority Optional account or multisig that can freeze token accounts\n * @param decimals Location of the decimal place\n * @param keypair Optional keypair, defaulting to a new random one\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Address of the new mint\n */\nexport async function createMint(\n connection: Connection,\n payer: Signer,\n mintAuthority: PublicKey,\n freezeAuthority: PublicKey | null,\n decimals: number,\n keypair = Keypair.generate(),\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const lamports = await getMinimumBalanceForRentExemptMint(connection);\n\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space: MINT_SIZE,\n lamports,\n programId,\n }),\n createInitializeMint2Instruction(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n\n return keypair.publicKey;\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n",null,"(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n */\nimport { HashMD } from './_md.js';\nimport u64 from './_u64.js';\nimport { type CHash, wrapConstructor } from './utils.js';\n\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n protected Ah: number = 0x6a09e667 | 0;\n protected Al: number = 0xf3bcc908 | 0;\n protected Bh: number = 0xbb67ae85 | 0;\n protected Bl: number = 0x84caa73b | 0;\n protected Ch: number = 0x3c6ef372 | 0;\n protected Cl: number = 0xfe94f82b | 0;\n protected Dh: number = 0xa54ff53a | 0;\n protected Dl: number = 0x5f1d36f1 | 0;\n protected Eh: number = 0x510e527f | 0;\n protected El: number = 0xade682d1 | 0;\n protected Fh: number = 0x9b05688c | 0;\n protected Fl: number = 0x2b3e6c1f | 0;\n protected Gh: number = 0x1f83d9ab | 0;\n protected Gl: number = 0xfb41bd6b | 0;\n protected Hh: number = 0x5be0cd19 | 0;\n protected Hl: number = 0x137e2179 | 0;\n\n constructor() {\n super(128, 64, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ): void {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n protected roundClean(): void {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy(): void {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\nexport class SHA512_224 extends SHA512 {\n // h -- high 32 bits, l -- low 32 bits\n protected Ah: number = 0x8c3d37c8 | 0;\n protected Al: number = 0x19544da2 | 0;\n protected Bh: number = 0x73e19966 | 0;\n protected Bl: number = 0x89dcd4d6 | 0;\n protected Ch: number = 0x1dfab7ae | 0;\n protected Cl: number = 0x32ff9c82 | 0;\n protected Dh: number = 0x679dd514 | 0;\n protected Dl: number = 0x582f9fcf | 0;\n protected Eh: number = 0x0f6d2b69 | 0;\n protected El: number = 0x7bd44da8 | 0;\n protected Fh: number = 0x77e36f73 | 0;\n protected Fl: number = 0x04c48942 | 0;\n protected Gh: number = 0x3f9d85a8 | 0;\n protected Gl: number = 0x6a1d36c8 | 0;\n protected Hh: number = 0x1112e6ad | 0;\n protected Hl: number = 0x91d692a1 | 0;\n\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\nexport class SHA512_256 extends SHA512 {\n // h -- high 32 bits, l -- low 32 bits\n protected Ah: number = 0x22312194 | 0;\n protected Al: number = 0xfc2bf72c | 0;\n protected Bh: number = 0x9f555fa3 | 0;\n protected Bl: number = 0xc84c64c2 | 0;\n protected Ch: number = 0x2393b86b | 0;\n protected Cl: number = 0x6f53b151 | 0;\n protected Dh: number = 0x96387719 | 0;\n protected Dl: number = 0x5940eabd | 0;\n protected Eh: number = 0x96283ee2 | 0;\n protected El: number = 0xa88effe3 | 0;\n protected Fh: number = 0xbe5e1e25 | 0;\n protected Fl: number = 0x53863992 | 0;\n protected Gh: number = 0x2b0199fc | 0;\n protected Gl: number = 0x2c85b8aa | 0;\n protected Hh: number = 0x0eb72ddc | 0;\n protected Hl: number = 0x81c52ca2 | 0;\n\n constructor() {\n super();\n this.outputLen = 32;\n }\n}\n\nexport class SHA384 extends SHA512 {\n // h -- high 32 bits, l -- low 32 bits\n protected Ah: number = 0xcbbb9d5d | 0;\n protected Al: number = 0xc1059ed8 | 0;\n protected Bh: number = 0x629a292a | 0;\n protected Bl: number = 0x367cd507 | 0;\n protected Ch: number = 0x9159015a | 0;\n protected Cl: number = 0x3070dd17 | 0;\n protected Dh: number = 0x152fecd8 | 0;\n protected Dl: number = 0xf70e5939 | 0;\n protected Eh: number = 0x67332667 | 0;\n protected El: number = 0xffc00b31 | 0;\n protected Fh: number = 0x8eb44a87 | 0;\n protected Fl: number = 0x68581511 | 0;\n protected Gh: number = 0xdb0c2e0d | 0;\n protected Gl: number = 0x64f98fa7 | 0;\n protected Hh: number = 0x47b5481d | 0;\n protected Hl: number = 0xbefa4fa4 | 0;\n\n constructor() {\n super();\n this.outputLen = 48;\n }\n}\n\n/** SHA2-512 hash function. */\nexport const sha512: CHash = /* @__PURE__ */ wrapConstructor(() => new SHA512());\n/** SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexport const sha512_224: CHash = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\n/** SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexport const sha512_256: CHash = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\n/** SHA2-384 hash function. */\nexport const sha384: CHash = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n","/**\n * Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y².\n * For design rationale of types / exports, see weierstrass module documentation.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n type AffinePoint,\n type BasicCurve,\n type Group,\n type GroupConstructor,\n pippenger,\n validateBasic,\n wNAF,\n} from './curve.js';\nimport { Field, mod } from './modular.js';\nimport * as ut from './utils.js';\nimport { abool, ensureBytes, type FHash, type Hex, memoized } from './utils.js';\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);\n\n/** Edwards curves must declare params a & d. */\nexport type CurveType = BasicCurve & {\n a: bigint; // curve param a\n d: bigint; // curve param d\n hash: FHash; // Hashing\n randomBytes: (bytesLength?: number) => Uint8Array; // CSPRNG\n adjustScalarBytes?: (bytes: Uint8Array) => Uint8Array; // clears bits to get valid field elemtn\n domain?: (data: Uint8Array, ctx: Uint8Array, phflag: boolean) => Uint8Array; // Used for hashing\n uvRatio?: (u: bigint, v: bigint) => { isValid: boolean; value: bigint }; // Ratio √(u/v)\n prehash?: FHash; // RFC 8032 pre-hashing of messages to sign() / verify()\n mapToCurve?: (scalar: bigint[]) => AffinePoint; // for hash-to-curve standard\n};\n\nexport type CurveTypeWithLength = Readonly;\n\n// verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\nconst VERIFY_DEFAULT = { zip215: true };\n\nfunction validateOpts(curve: CurveType): CurveTypeWithLength {\n const opts = validateBasic(curve);\n ut.validateObject(\n curve,\n {\n hash: 'function',\n a: 'bigint',\n d: 'bigint',\n randomBytes: 'function',\n },\n {\n adjustScalarBytes: 'function',\n domain: 'function',\n uvRatio: 'function',\n mapToCurve: 'function',\n }\n );\n // Set defaults\n return Object.freeze({ ...opts } as const);\n}\n\n/** Instance of Extended Point with coordinates in X, Y, Z, T. */\nexport interface ExtPointType extends Group {\n readonly ex: bigint;\n readonly ey: bigint;\n readonly ez: bigint;\n readonly et: bigint;\n get x(): bigint;\n get y(): bigint;\n assertValidity(): void;\n multiply(scalar: bigint): ExtPointType;\n multiplyUnsafe(scalar: bigint): ExtPointType;\n isSmallOrder(): boolean;\n isTorsionFree(): boolean;\n clearCofactor(): ExtPointType;\n toAffine(iz?: bigint): AffinePoint;\n toRawBytes(isCompressed?: boolean): Uint8Array;\n toHex(isCompressed?: boolean): string;\n _setWindowSize(windowSize: number): void;\n}\n/** Static methods of Extended Point with coordinates in X, Y, Z, T. */\nexport interface ExtPointConstructor extends GroupConstructor {\n new (x: bigint, y: bigint, z: bigint, t: bigint): ExtPointType;\n fromAffine(p: AffinePoint): ExtPointType;\n fromHex(hex: Hex): ExtPointType;\n fromPrivateKey(privateKey: Hex): ExtPointType;\n msm(points: ExtPointType[], scalars: bigint[]): ExtPointType;\n}\n\n/**\n * Edwards Curve interface.\n * Main methods: `getPublicKey(priv)`, `sign(msg, priv)`, `verify(sig, msg, pub)`.\n */\nexport type CurveFn = {\n CURVE: ReturnType;\n getPublicKey: (privateKey: Hex) => Uint8Array;\n sign: (message: Hex, privateKey: Hex, options?: { context?: Hex }) => Uint8Array;\n verify: (\n sig: Hex,\n message: Hex,\n publicKey: Hex,\n options?: { context?: Hex; zip215: boolean }\n ) => boolean;\n ExtendedPoint: ExtPointConstructor;\n utils: {\n randomPrivateKey: () => Uint8Array;\n getExtendedPublicKey: (key: Hex) => {\n head: Uint8Array;\n prefix: Uint8Array;\n scalar: bigint;\n point: ExtPointType;\n pointBytes: Uint8Array;\n };\n precompute: (windowSize?: number, point?: ExtPointType) => ExtPointType;\n };\n};\n\n/**\n * Creates Twisted Edwards curve with EdDSA signatures.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, d, p, n, Gx, Gy, h\n * const curve = twistedEdwards({ a, d, Fp: Field(p), n, Gx, Gy, h })\n */\nexport function twistedEdwards(curveDef: CurveType): CurveFn {\n const CURVE = validateOpts(curveDef) as ReturnType;\n const {\n Fp,\n n: CURVE_ORDER,\n prehash: prehash,\n hash: cHash,\n randomBytes,\n nByteLength,\n h: cofactor,\n } = CURVE;\n // Important:\n // There are some places where Fp.BYTES is used instead of nByteLength.\n // So far, everything has been tested with curves of Fp.BYTES == nByteLength.\n // TODO: test and find curves which behave otherwise.\n const MASK = _2n << (BigInt(nByteLength * 8) - _1n);\n const modP = Fp.create; // Function overrides\n const Fn = Field(CURVE.n, CURVE.nBitLength);\n\n // sqrt(u/v)\n const uvRatio =\n CURVE.uvRatio ||\n ((u: bigint, v: bigint) => {\n try {\n return { isValid: true, value: Fp.sqrt(u * Fp.inv(v)) };\n } catch (e) {\n return { isValid: false, value: _0n };\n }\n });\n const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes: Uint8Array) => bytes); // NOOP\n const domain =\n CURVE.domain ||\n ((data: Uint8Array, ctx: Uint8Array, phflag: boolean) => {\n abool('phflag', phflag);\n if (ctx.length || phflag) throw new Error('Contexts/pre-hash are not supported');\n return data;\n }); // NOOP\n // 0 <= n < MASK\n // Coordinates larger than Fp.ORDER are allowed for zip215\n function aCoordinate(title: string, n: bigint) {\n ut.aInRange('coordinate ' + title, n, _0n, MASK);\n }\n\n function assertPoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('ExtendedPoint expected');\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n const toAffineMemo = memoized((p: Point, iz?: bigint): AffinePoint => {\n const { ex: x, ey: y, ez: z } = p;\n const is0 = p.is0();\n if (iz == null) iz = is0 ? _8n : (Fp.inv(z) as bigint); // 8 was chosen arbitrarily\n const ax = modP(x * iz);\n const ay = modP(y * iz);\n const zz = modP(z * iz);\n if (is0) return { x: _0n, y: _1n };\n if (zz !== _1n) throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n const assertValidMemo = memoized((p: Point) => {\n const { a, d } = CURVE;\n if (p.is0()) throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = p;\n const X2 = modP(X * X); // X²\n const Y2 = modP(Y * Y); // Y²\n const Z2 = modP(Z * Z); // Z²\n const Z4 = modP(Z2 * Z2); // Z⁴\n const aX2 = modP(X2 * a); // aX²\n const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²\n const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right) throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT) throw new Error('bad point: equation left != right (2)');\n return true;\n });\n\n // Extended Point works in extended coordinates: (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy).\n // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n class Point implements ExtPointType {\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n static readonly ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n\n constructor(\n readonly ex: bigint,\n readonly ey: bigint,\n readonly ez: bigint,\n readonly et: bigint\n ) {\n aCoordinate('x', ex);\n aCoordinate('y', ey);\n aCoordinate('z', ez);\n aCoordinate('t', et);\n Object.freeze(this);\n }\n\n get x(): bigint {\n return this.toAffine().x;\n }\n get y(): bigint {\n return this.toAffine().y;\n }\n\n static fromAffine(p: AffinePoint): Point {\n if (p instanceof Point) throw new Error('extended point not allowed');\n const { x, y } = p || {};\n aCoordinate('x', x);\n aCoordinate('y', y);\n return new Point(x, y, _1n, modP(x * y));\n }\n static normalizeZ(points: Point[]): Point[] {\n const toInv = Fp.invertBatch(points.map((p) => p.ez));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n // Multiscalar Multiplication\n static msm(points: Point[], scalars: bigint[]): Point {\n return pippenger(Point, Fn, points, scalars);\n }\n\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize: number) {\n wnaf.setWindowSize(this, windowSize);\n }\n // Not required for fromHex(), which always creates valid points.\n // Could be useful for fromAffine().\n assertValidity(): void {\n assertValidMemo(this);\n }\n\n // Compare one point to another.\n equals(other: Point): boolean {\n assertPoint(other);\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = other;\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n\n is0(): boolean {\n return this.equals(Point.ZERO);\n }\n\n negate(): Point {\n // Flips point sign to a negative one (-x, y in affine coords)\n return new Point(modP(-this.ex), this.ey, this.ez, modP(-this.et));\n }\n\n // Fast algo for doubling Extended Point.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n // Cost: 4M + 4S + 1*a + 6add + 1*2.\n double(): Point {\n const { a } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const A = modP(X1 * X1); // A = X12\n const B = modP(Y1 * Y1); // B = Y12\n const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n const D = modP(a * A); // D = a*A\n const x1y1 = X1 + Y1;\n const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n const G = D + B; // G = D+B\n const F = G - C; // F = G-C\n const H = D - B; // H = D-B\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n\n // Fast algo for adding 2 Extended Points.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n // Cost: 9M + 1*a + 1*d + 7add.\n add(other: Point) {\n assertPoint(other);\n const { a, d } = CURVE;\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = other;\n // Faster algo for adding 2 Extended Points when curve's a=-1.\n // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-4\n // Cost: 8M + 8add + 2*2.\n // Note: It does not check whether the `other` point is valid.\n if (a === BigInt(-1)) {\n const A = modP((Y1 - X1) * (Y2 + X2));\n const B = modP((Y1 + X1) * (Y2 - X2));\n const F = modP(B - A);\n if (F === _0n) return this.double(); // Same point. Tests say it doesn't affect timing\n const C = modP(Z1 * _2n * T2);\n const D = modP(T1 * _2n * Z2);\n const E = D + C;\n const G = B + A;\n const H = D - C;\n const X3 = modP(E * F);\n const Y3 = modP(G * H);\n const T3 = modP(E * H);\n const Z3 = modP(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n const A = modP(X1 * X2); // A = X1*X2\n const B = modP(Y1 * Y2); // B = Y1*Y2\n const C = modP(T1 * d * T2); // C = T1*d*T2\n const D = modP(Z1 * Z2); // D = Z1*Z2\n const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n const F = D - C; // F = D-C\n const G = D + C; // G = D+C\n const H = modP(B - a * A); // H = B-a*A\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n\n return new Point(X3, Y3, Z3, T3);\n }\n\n subtract(other: Point): Point {\n return this.add(other.negate());\n }\n\n private wNAF(n: bigint): { p: Point; f: Point } {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n\n // Constant-time multiplication.\n multiply(scalar: bigint): Point {\n const n = scalar;\n ut.aInRange('scalar', n, _1n, CURVE_ORDER); // 1 <= scalar < L\n const { p, f } = this.wNAF(n);\n return Point.normalizeZ([p, f])[0];\n }\n\n // Non-constant-time multiplication. Uses double-and-add algorithm.\n // It's faster, but should only be used when you don't care about\n // an exposed private key e.g. sig verification.\n // Does NOT allow scalars higher than CURVE.n.\n // Accepts optional accumulator to merge with multiply (important for sparse scalars)\n multiplyUnsafe(scalar: bigint, acc = Point.ZERO): Point {\n const n = scalar;\n ut.aInRange('scalar', n, _0n, CURVE_ORDER); // 0 <= scalar < L\n if (n === _0n) return I;\n if (this.is0() || n === _1n) return this;\n return wnaf.wNAFCachedUnsafe(this, n, Point.normalizeZ, acc);\n }\n\n // Checks if point is of small order.\n // If you add something to small order point, you will have \"dirty\"\n // point with torsion component.\n // Multiplies point by cofactor and checks if the result is 0.\n isSmallOrder(): boolean {\n return this.multiplyUnsafe(cofactor).is0();\n }\n\n // Multiplies point by curve order and checks if the result is 0.\n // Returns `false` is the point is dirty.\n isTorsionFree(): boolean {\n return wnaf.unsafeLadder(this, CURVE_ORDER).is0();\n }\n\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n toAffine(iz?: bigint): AffinePoint {\n return toAffineMemo(this, iz);\n }\n\n clearCofactor(): Point {\n const { h: cofactor } = CURVE;\n if (cofactor === _1n) return this;\n return this.multiplyUnsafe(cofactor);\n }\n\n // Converts hash string or Uint8Array to Point.\n // Uses algo from RFC8032 5.1.3.\n static fromHex(hex: Hex, zip215 = false): Point {\n const { d, a } = CURVE;\n const len = Fp.BYTES;\n hex = ensureBytes('pointHex', hex, len); // copy hex to a new array\n abool('zip215', zip215);\n const normed = hex.slice(); // copy again, we'll manipulate it\n const lastByte = hex[len - 1]; // select last byte\n normed[len - 1] = lastByte & ~0x80; // clear last bit\n const y = ut.bytesToNumberLE(normed);\n\n // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n // RFC8032 prohibits >= p, but ZIP215 doesn't\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n const max = zip215 ? MASK : Fp.ORDER;\n ut.aInRange('pointHex.y', y, _0n, max);\n\n // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:\n // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)\n const y2 = modP(y * y); // denominator is always non-0 mod p.\n const u = modP(y2 - _1n); // u = y² - 1\n const v = modP(d * y2 - a); // v = d y² + 1.\n let { isValid, value: x } = uvRatio(u, v); // √(u/v)\n if (!isValid) throw new Error('Point.fromHex: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === _0n && isLastByteOdd)\n // if x=0 and x_0 = 1, fail\n throw new Error('Point.fromHex: x=0 and x_0=1');\n if (isLastByteOdd !== isXOdd) x = modP(-x); // if x_0 != x mod 2, set x = p-x\n return Point.fromAffine({ x, y });\n }\n static fromPrivateKey(privKey: Hex) {\n return getExtendedPublicKey(privKey).point;\n }\n toRawBytes(): Uint8Array {\n const { x, y } = this.toAffine();\n const bytes = ut.numberToBytesLE(y, Fp.BYTES); // each y has 2 x values (x, -y)\n bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0; // when compressing, it's enough to store y\n return bytes; // and use the last byte to encode sign of x\n }\n toHex(): string {\n return ut.bytesToHex(this.toRawBytes()); // Same as toRawBytes, but returns string.\n }\n }\n const { BASE: G, ZERO: I } = Point;\n const wnaf = wNAF(Point, nByteLength * 8);\n\n function modN(a: bigint) {\n return mod(a, CURVE_ORDER);\n }\n // Little-endian SHA512 with modulo n\n function modN_LE(hash: Uint8Array): bigint {\n return modN(ut.bytesToNumberLE(hash));\n }\n\n /** Convenience method that creates public key and other stuff. RFC8032 5.1.5 */\n function getExtendedPublicKey(key: Hex) {\n const len = Fp.BYTES;\n key = ensureBytes('private key', key, len);\n // Hash private key with curve's hash function to produce uniformingly random input\n // Check byte lengths: ensure(64, h(ensure(32, key)))\n const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n const scalar = modN_LE(head); // The actual private scalar\n const point = G.multiply(scalar); // Point on Edwards curve aka public key\n const pointBytes = point.toRawBytes(); // Uint8Array representation\n return { head, prefix, scalar, point, pointBytes };\n }\n\n // Calculates EdDSA pub key. RFC8032 5.1.5. Privkey is hashed. Use first half with 3 bits cleared\n function getPublicKey(privKey: Hex): Uint8Array {\n return getExtendedPublicKey(privKey).pointBytes;\n }\n\n // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n function hashDomainToScalar(context: Hex = new Uint8Array(), ...msgs: Uint8Array[]) {\n const msg = ut.concatBytes(...msgs);\n return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n }\n\n /** Signs message with privateKey. RFC8032 5.1.6 */\n function sign(msg: Hex, privKey: Hex, options: { context?: Hex } = {}): Uint8Array {\n msg = ensureBytes('message', msg);\n if (prehash) msg = prehash(msg); // for ed25519ph etc.\n const { prefix, scalar, pointBytes } = getExtendedPublicKey(privKey);\n const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n const R = G.multiply(r).toRawBytes(); // R = rG\n const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n const s = modN(r + k * scalar); // S = (r + k * s) mod L\n ut.aInRange('signature.s', s, _0n, CURVE_ORDER); // 0 <= s < l\n const res = ut.concatBytes(R, ut.numberToBytesLE(s, Fp.BYTES));\n return ensureBytes('result', res, Fp.BYTES * 2); // 64-byte signature\n }\n\n const verifyOpts: { context?: Hex; zip215?: boolean } = VERIFY_DEFAULT;\n\n /**\n * Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n * An extended group equation is checked.\n */\n function verify(sig: Hex, msg: Hex, publicKey: Hex, options = verifyOpts): boolean {\n const { context, zip215 } = options;\n const len = Fp.BYTES; // Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n sig = ensureBytes('signature', sig, 2 * len); // An extended group equation is checked.\n msg = ensureBytes('message', msg);\n publicKey = ensureBytes('publicKey', publicKey, len);\n if (zip215 !== undefined) abool('zip215', zip215);\n if (prehash) msg = prehash(msg); // for ed25519ph, etc\n\n const s = ut.bytesToNumberLE(sig.slice(len, 2 * len));\n let A, R, SB;\n try {\n // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n A = Point.fromHex(publicKey, zip215);\n R = Point.fromHex(sig.slice(0, len), zip215);\n SB = G.multiplyUnsafe(s); // 0 <= s < l is done inside\n } catch (error) {\n return false;\n }\n if (!zip215 && A.isSmallOrder()) return false;\n\n const k = hashDomainToScalar(context, R.toRawBytes(), A.toRawBytes(), msg);\n const RkA = R.add(A.multiplyUnsafe(k));\n // Extended group equation\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().equals(Point.ZERO);\n }\n\n G._setWindowSize(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n\n const utils = {\n getExtendedPublicKey,\n // ed25519 private keys are uniform 32b. No need to check for modulo bias, like in secp256k1.\n randomPrivateKey: (): Uint8Array => randomBytes(Fp.BYTES),\n\n /**\n * We're doing scalar multiplication (used in getPublicKey etc) with precomputed BASE_POINT\n * values. This slows down first getPublicKey() by milliseconds (see Speed section),\n * but allows to speed-up subsequent getPublicKey() calls up to 20x.\n * @param windowSize 2, 4, 8, 16\n */\n precompute(windowSize = 8, point: ExtPointType = Point.BASE): ExtPointType {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3));\n return point;\n },\n };\n\n return {\n CURVE,\n getPublicKey,\n sign,\n verify,\n ExtendedPoint: Point,\n utils,\n };\n}\n","/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha512';\nimport { concatBytes, randomBytes, utf8ToBytes } from '@noble/hashes/utils';\nimport { type AffinePoint, type Group, pippenger } from './abstract/curve.js';\nimport { type CurveFn, type ExtPointType, twistedEdwards } from './abstract/edwards.js';\nimport {\n createHasher,\n expand_message_xmd,\n type htfBasicOpts,\n type HTFMethod,\n} from './abstract/hash-to-curve.js';\nimport { Field, FpSqrtEven, isNegativeLE, mod, pow2 } from './abstract/modular.js';\nimport { montgomery, type CurveFn as XCurveFn } from './abstract/montgomery.js';\nimport {\n bytesToHex,\n bytesToNumberLE,\n ensureBytes,\n equalBytes,\n type Hex,\n numberToBytesLE,\n} from './abstract/utils.js';\n\nconst ED25519_P = BigInt(\n '57896044618658097711785492504343953926634992332820282019728792003956564819949'\n);\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst ED25519_SQRT_M1 = /* @__PURE__ */ BigInt(\n '19681161376707505956807079304988542015446066515923890162744021073123829784752'\n);\n\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _5n = BigInt(5), _8n = BigInt(8);\n\nfunction ed25519_pow_2_252_3(x: bigint) {\n // prettier-ignore\n const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n const P = ED25519_P;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\n\nfunction adjustScalarBytes(bytes: Uint8Array): Uint8Array {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n\n// sqrt(u/v)\nfunction uvRatio(u: bigint, v: bigint): { isValid: boolean; value: bigint } {\n const P = ED25519_P;\n const v3 = mod(v * v * v, P); // v³\n const v7 = mod(v3 * v3 * v, P); // v⁷\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)\n if (useRoot1) x = root1;\n if (useRoot2 || noRoot) x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P)) x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\n\n// Just in case\nexport const ED25519_TORSION_SUBGROUP: string[] = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\n\nconst Fp = /* @__PURE__ */ (() => Field(ED25519_P, undefined, true))();\n\nconst ed25519Defaults = /* @__PURE__ */ (() =>\n ({\n // Param: a\n a: BigInt(-1), // Fp.create(-1) is proper; our way still works and is faster\n // d is equal to -121665/121666 over finite field.\n // Negative number is P - number, and division is invert(number, P)\n d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n // Finite field 𝔽p over which we'll do calculations; 2n**255n - 19n\n Fp,\n // Subgroup order: how many points curve has\n // 2n**252n + 27742317777372353535851937790883648493n;\n n: BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989'),\n // Cofactor\n h: _8n,\n // Base point (x, y) aka generator point\n Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n hash: sha512,\n randomBytes,\n adjustScalarBytes,\n // dom2\n // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n // Constant-time, u/√v\n uvRatio,\n }) as const)();\n\n/**\n * ed25519 curve with EdDSA signatures.\n * @example\n * import { ed25519 } from '@noble/curves/ed25519';\n * const priv = ed25519.utils.randomPrivateKey();\n * const pub = ed25519.getPublicKey(priv);\n * const msg = new TextEncoder().encode('hello');\n * const sig = ed25519.sign(msg, priv);\n * ed25519.verify(sig, msg, pub); // Default mode: follows ZIP215\n * ed25519.verify(sig, msg, pub, { zip215: false }); // RFC8032 / FIPS 186-5\n */\nexport const ed25519: CurveFn = /* @__PURE__ */ (() => twistedEdwards(ed25519Defaults))();\n\nfunction ed25519_domain(data: Uint8Array, ctx: Uint8Array, phflag: boolean) {\n if (ctx.length > 255) throw new Error('Context is too big');\n return concatBytes(\n utf8ToBytes('SigEd25519 no Ed25519 collisions'),\n new Uint8Array([phflag ? 1 : 0, ctx.length]),\n ctx,\n data\n );\n}\n\nexport const ed25519ctx: CurveFn = /* @__PURE__ */ (() =>\n twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n }))();\nexport const ed25519ph: CurveFn = /* @__PURE__ */ (() =>\n twistedEdwards(\n Object.assign({}, ed25519Defaults, {\n domain: ed25519_domain,\n prehash: sha512,\n })\n ))();\n\n/**\n * ECDH using curve25519 aka x25519.\n * @example\n * import { x25519 } from '@noble/curves/ed25519';\n * const priv = 'a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4';\n * const pub = 'e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c';\n * x25519.getSharedSecret(priv, pub) === x25519.scalarMult(priv, pub); // aliases\n * x25519.getPublicKey(priv) === x25519.scalarMultBase(priv);\n * x25519.getPublicKey(x25519.utils.randomPrivateKey());\n */\nexport const x25519: XCurveFn = /* @__PURE__ */ (() =>\n montgomery({\n P: ED25519_P,\n a: BigInt(486662),\n montgomeryBits: 255, // n is 253 bits\n nByteLength: 32,\n Gu: BigInt(9),\n powPminus2: (x: bigint): bigint => {\n const P = ED25519_P;\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n },\n adjustScalarBytes,\n randomBytes,\n }))();\n\n/**\n * Converts ed25519 public key to x25519 public key. Uses formula:\n * * `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * * `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * @example\n * const someonesPub = ed25519.getPublicKey(ed25519.utils.randomPrivateKey());\n * const aPriv = x25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(aPriv, edwardsToMontgomeryPub(someonesPub))\n */\nexport function edwardsToMontgomeryPub(edwardsPub: Hex): Uint8Array {\n const { y } = ed25519.ExtendedPoint.fromHex(edwardsPub);\n const _1n = BigInt(1);\n return Fp.toBytes(Fp.create((_1n + y) * Fp.inv(_1n - y)));\n}\nexport const edwardsToMontgomery: typeof edwardsToMontgomeryPub = edwardsToMontgomeryPub; // deprecated\n\n/**\n * Converts ed25519 secret key to x25519 secret key.\n * @example\n * const someonesPub = x25519.getPublicKey(x25519.utils.randomPrivateKey());\n * const aPriv = ed25519.utils.randomPrivateKey();\n * x25519.getSharedSecret(edwardsToMontgomeryPriv(aPriv), someonesPub)\n */\nexport function edwardsToMontgomeryPriv(edwardsPriv: Uint8Array): Uint8Array {\n const hashed = ed25519Defaults.hash(edwardsPriv.subarray(0, 32));\n return ed25519Defaults.adjustScalarBytes(hashed).subarray(0, 32);\n}\n\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\n\nconst ELL2_C1 = /* @__PURE__ */ (() => (Fp.ORDER + _3n) / _8n)(); // 1. c1 = (q + 3) / 8 # Integer arithmetic\nconst ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1\nconst ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)\n\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u: bigint) {\n const ELL2_C4 = (Fp.ORDER - _5n) / _8n; // 4. c4 = (q - 5) / 8 # Integer arithmetic\n const ELL2_J = BigInt(486662);\n\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J);// 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\n\nconst ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u: bigint) {\n const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n\n const inv = Fp.invertBatch([xd, yd]); // batch division\n return { x: Fp.mul(xn, inv[0]), y: Fp.mul(yn, inv[1]) }; // 13. return (xn, xd, yn, yd)\n}\n\nconst htf = /* @__PURE__ */ (() =>\n createHasher(\n ed25519.ExtendedPoint,\n (scalars: bigint[]) => map_to_curve_elligator2_edwards25519(scalars[0]),\n {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n }\n ))();\nexport const hashToCurve: HTFMethod = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve: HTFMethod = /* @__PURE__ */ (() => htf.encodeToCurve)();\n\nfunction assertRstPoint(other: unknown) {\n if (!(other instanceof RistPoint)) throw new Error('RistrettoPoint expected');\n}\n\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt(\n '25063068953384623474111414158702152701244531502492656460079210482610430750235'\n);\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt(\n '54469307008909316920995813868745141605393597292927456921205312896311721017578'\n);\n// 1-d²\nconst ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt(\n '1159843021668779879193775521855586647937357759715417654439879720876111806838'\n);\n// (d-1)²\nconst D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt(\n '40440834346308536858101042469323190826248399146238708352240133220865137265952'\n);\n// Calculates 1/√(number)\nconst invertSqrt = (number: bigint) => uvRatio(_1n, number);\n\nconst MAX_255B = /* @__PURE__ */ BigInt(\n '0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'\n);\nconst bytes255ToNumberLE = (bytes: Uint8Array) =>\n ed25519.CURVE.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n\ntype ExtendedPoint = ExtPointType;\n\n// Computes Elligator map for Ristretto\n// https://ristretto.group/formulas/elligator.html\nfunction calcElligatorRistrettoMap(r0: bigint): ExtendedPoint {\n const { d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P)) s_ = mod(-s_);\n if (!Ns_D_is_sq) s = s_; // 7\n if (!Ns_D_is_sq) c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519.ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n\n/**\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-ristretto255-decaf448\n */\nclass RistPoint implements Group {\n static BASE: RistPoint;\n static ZERO: RistPoint;\n // Private property to discourage combining ExtendedPoint + RistrettoPoint\n // Always use Ristretto encoding/decoding instead.\n constructor(private readonly ep: ExtendedPoint) {}\n\n static fromAffine(ap: AffinePoint): RistPoint {\n return new RistPoint(ed25519.ExtendedPoint.fromAffine(ap));\n }\n\n /**\n * Takes uniform output of 64-byte hash function like sha512 and converts it to `RistrettoPoint`.\n * The hash-to-group operation applies Elligator twice and adds the results.\n * **Note:** this is one-way map, there is no conversion from point to hash.\n * https://ristretto.group/formulas/elligator.html\n * @param hex 64-byte output of a hash function\n */\n static hashToCurve(hex: Hex): RistPoint {\n hex = ensureBytes('ristrettoHash', hex, 64);\n const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new RistPoint(R1.add(R2));\n }\n\n /**\n * Converts ristretto-encoded string to ristretto point.\n * https://ristretto.group/formulas/decoding.html\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex: Hex): RistPoint {\n hex = ensureBytes('ristrettoHex', hex, 32);\n const { a, d } = ed25519.CURVE;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n const s = bytes255ToNumberLE(hex);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(numberToBytesLE(s, 32), hex) || isNegativeLE(s, P)) throw new Error(emsg);\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P)) x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n) throw new Error(emsg);\n return new RistPoint(new ed25519.ExtendedPoint(x, y, _1n, t));\n }\n\n static msm(points: RistPoint[], scalars: bigint[]): RistPoint {\n const Fn = Field(ed25519.CURVE.n, ed25519.CURVE.nBitLength);\n return pippenger(RistPoint, Fn, points, scalars);\n }\n\n /**\n * Encodes ristretto point to Uint8Array.\n * https://ristretto.group/formulas/encoding.html\n */\n toRawBytes(): Uint8Array {\n let { ex: x, ey: y, ez: z, et: t } = this.ep;\n const P = ed25519.CURVE.Fp.ORDER;\n const mod = ed25519.CURVE.Fp.create;\n const u1 = mod(mod(z + y) * mod(z - y)); // 1\n const u2 = mod(x * y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * t); // 6\n let D: bigint; // 7\n if (isNegativeLE(t * zInv, P)) {\n let _x = mod(y * SQRT_M1);\n let _y = mod(x * SQRT_M1);\n x = _x;\n y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n } else {\n D = D2; // 8\n }\n if (isNegativeLE(x * zInv, P)) y = mod(-y); // 9\n let s = mod((z - y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P)) s = mod(-s);\n return numberToBytesLE(s, 32); // 11\n }\n\n toHex(): string {\n return bytesToHex(this.toRawBytes());\n }\n\n toString(): string {\n return this.toHex();\n }\n\n // Compare one point to another.\n equals(other: RistPoint): boolean {\n assertRstPoint(other);\n const { ex: X1, ey: Y1 } = this.ep;\n const { ex: X2, ey: Y2 } = other.ep;\n const mod = ed25519.CURVE.Fp.create;\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n\n add(other: RistPoint): RistPoint {\n assertRstPoint(other);\n return new RistPoint(this.ep.add(other.ep));\n }\n\n subtract(other: RistPoint): RistPoint {\n assertRstPoint(other);\n return new RistPoint(this.ep.subtract(other.ep));\n }\n\n multiply(scalar: bigint): RistPoint {\n return new RistPoint(this.ep.multiply(scalar));\n }\n\n multiplyUnsafe(scalar: bigint): RistPoint {\n return new RistPoint(this.ep.multiplyUnsafe(scalar));\n }\n\n double(): RistPoint {\n return new RistPoint(this.ep.double());\n }\n\n negate(): RistPoint {\n return new RistPoint(this.ep.negate());\n }\n}\nexport const RistrettoPoint: typeof RistPoint = /* @__PURE__ */ (() => {\n if (!RistPoint.BASE) RistPoint.BASE = new RistPoint(ed25519.ExtendedPoint.BASE);\n if (!RistPoint.ZERO) RistPoint.ZERO = new RistPoint(ed25519.ExtendedPoint.ZERO);\n return RistPoint;\n})();\n\n// Hashing to ristretto255. https://www.rfc-editor.org/rfc/rfc9380#appendix-B\nexport const hashToRistretto255 = (msg: Uint8Array, options: htfBasicOpts): RistPoint => {\n const d = options.DST;\n const DST = typeof d === 'string' ? utf8ToBytes(d) : d;\n const uniform_bytes = expand_message_xmd(msg, DST, 64, sha512);\n const P = RistPoint.hashToCurve(uniform_bytes);\n return P;\n};\nexport const hash_to_ristretto255: (msg: Uint8Array, options: htfBasicOpts) => RistPoint =\n hashToRistretto255; // legacy\n",null,null,null,null,null,null,"/**\n * WebSocket implements a browser-side WebSocket specification.\n * @module Client\n */\n\n\"use strict\"\n\nimport { EventEmitter } from \"eventemitter3\"\n\nimport {\n BrowserWebSocketType,\n NodeWebSocketType,\n IWSClientAdditionalOptions,\n} from \"./client.types.js\"\n\nclass WebSocketBrowserImpl extends EventEmitter\n{\n socket: BrowserWebSocketType\n\n /** Instantiate a WebSocket class\n * @constructor\n * @param {String} address - url to a websocket server\n * @param {(Object)} options - websocket options\n * @param {(String|Array)} protocols - a list of protocols\n * @return {WebSocketBrowserImpl} - returns a WebSocket instance\n */\n constructor(address: string, options: {}, protocols?: string | string[])\n {\n super()\n\n this.socket = new window.WebSocket(address, protocols)\n\n this.socket.onopen = () => this.emit(\"open\")\n this.socket.onmessage = (event) => this.emit(\"message\", event.data)\n this.socket.onerror = (error) => this.emit(\"error\", error)\n this.socket.onclose = (event) =>\n {\n this.emit(\"close\", event.code, event.reason)\n }\n }\n\n /**\n * Sends data through a websocket connection\n * @method\n * @param {(String|Object)} data - data to be sent via websocket\n * @param {Object} optionsOrCallback - ws options\n * @param {Function} callback - a callback called once the data is sent\n * @return {Undefined}\n */\n send(\n data: Parameters[0],\n optionsOrCallback: (\n error?: Error\n ) => void | Parameters[1],\n callback?: () => void\n )\n {\n const cb = callback || optionsOrCallback\n\n try\n {\n this.socket.send(data)\n cb()\n }\n catch (error)\n {\n cb(error)\n }\n }\n\n /**\n * Closes an underlying socket\n * @method\n * @param {Number} code - status code explaining why the connection is being closed\n * @param {String} reason - a description why the connection is closing\n * @return {Undefined}\n * @throws {Error}\n */\n close(code?: number, reason?: string)\n {\n this.socket.close(code, reason)\n }\n\n addEventListener(\n type: K,\n listener: (ev: WebSocketEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void\n {\n this.socket.addEventListener(type, listener, options)\n }\n}\n\n/**\n * factory method for common WebSocket instance\n * @method\n * @param {String} address - url to a websocket server\n * @param {(Object)} options - websocket options\n * @return {Undefined}\n */\nexport function WebSocket(\n address: string,\n options: IWSClientAdditionalOptions\n)\n{\n return new WebSocketBrowserImpl(address, options)\n}\n","/**\n * \"Client\" wraps \"ws\" or a browser-implemented \"WebSocket\" library\n * according to the environment providing JSON RPC 2.0 support on top.\n * @module Client\n */\n\n\"use strict\"\n\nimport NodeWebSocket from \"ws\"\nimport { EventEmitter } from \"eventemitter3\"\nimport {\n ICommonWebSocket,\n IWSClientAdditionalOptions,\n NodeWebSocketType,\n ICommonWebSocketFactory,\n} from \"./client/client.types.js\"\n\nimport { DataPack, DefaultDataPack } from \"./utils.js\"\n\ninterface IQueueElement {\n promise: [\n Parameters[0]>[0],\n Parameters[0]>[1]\n ];\n timeout?: ReturnType;\n}\n\nexport interface IQueue {\n [x: number | string]: IQueueElement;\n}\n\nexport interface IWSRequestParams {\n [x: string]: any;\n [x: number]: any;\n}\n\nexport class CommonClient extends EventEmitter\n{\n private address: string\n private rpc_id: number | string\n private queue: IQueue\n private options: IWSClientAdditionalOptions & NodeWebSocket.ClientOptions\n private autoconnect: boolean\n private ready: boolean\n private reconnect: boolean\n private reconnect_timer_id: NodeJS.Timeout\n private reconnect_interval: number\n private max_reconnects: number\n private rest_options: IWSClientAdditionalOptions &\n NodeWebSocket.ClientOptions\n private current_reconnects: number\n private generate_request_id: (\n method: string,\n params: object | Array\n ) => number | string\n private socket: ICommonWebSocket\n private webSocketFactory: ICommonWebSocketFactory\n private dataPack: DataPack\n\n /**\n * Instantiate a Client class.\n * @constructor\n * @param {webSocketFactory} webSocketFactory - factory method for WebSocket\n * @param {String} address - url to a websocket server\n * @param {Object} options - ws options object with reconnect parameters\n * @param {Function} generate_request_id - custom generation request Id\n * @param {DataPack} dataPack - data pack contains encoder and decoder\n * @return {CommonClient}\n */\n constructor(\n webSocketFactory: ICommonWebSocketFactory,\n address = \"ws://localhost:8080\",\n {\n autoconnect = true,\n reconnect = true,\n reconnect_interval = 1000,\n max_reconnects = 5,\n ...rest_options\n } = {},\n generate_request_id?: (\n method: string,\n params: object | Array\n ) => number | string,\n dataPack?: DataPack\n )\n {\n super()\n\n this.webSocketFactory = webSocketFactory\n\n this.queue = {}\n this.rpc_id = 0\n\n this.address = address\n this.autoconnect = autoconnect\n this.ready = false\n this.reconnect = reconnect\n this.reconnect_timer_id = undefined\n this.reconnect_interval = reconnect_interval\n this.max_reconnects = max_reconnects\n this.rest_options = rest_options\n this.current_reconnects = 0\n this.generate_request_id = generate_request_id || (() => typeof this.rpc_id === \"number\"\n ? ++this.rpc_id\n : Number(this.rpc_id) + 1)\n\n if (!dataPack) this.dataPack = new DefaultDataPack()\n else this.dataPack = dataPack\n\n if (this.autoconnect)\n this._connect(this.address, {\n autoconnect: this.autoconnect,\n reconnect: this.reconnect,\n reconnect_interval: this.reconnect_interval,\n max_reconnects: this.max_reconnects,\n ...this.rest_options,\n })\n }\n\n /**\n * Connects to a defined server if not connected already.\n * @method\n * @return {Undefined}\n */\n connect()\n {\n if (this.socket) return\n\n this._connect(this.address, {\n autoconnect: this.autoconnect,\n reconnect: this.reconnect,\n reconnect_interval: this.reconnect_interval,\n max_reconnects: this.max_reconnects,\n ...this.rest_options,\n })\n }\n\n /**\n * Calls a registered RPC method on server.\n * @method\n * @param {String} method - RPC method name\n * @param {Object|Array} params - optional method parameters\n * @param {Number} timeout - RPC reply timeout value\n * @param {Object} ws_opts - options passed to ws\n * @return {Promise}\n */\n call(\n method: string,\n params?: IWSRequestParams,\n timeout?: number,\n ws_opts?: Parameters[1]\n )\n {\n if (!ws_opts && \"object\" === typeof timeout)\n {\n ws_opts = timeout\n timeout = null\n }\n\n return new Promise((resolve, reject) =>\n {\n if (!this.ready) return reject(new Error(\"socket not ready\"))\n\n const rpc_id = this.generate_request_id(method, params)\n\n const message = {\n jsonrpc: \"2.0\",\n method: method,\n params: params || undefined,\n id: rpc_id,\n }\n\n this.socket.send(this.dataPack.encode(message), ws_opts, (error) =>\n {\n if (error) return reject(error)\n\n this.queue[rpc_id] = { promise: [resolve, reject] }\n\n if (timeout)\n {\n this.queue[rpc_id].timeout = setTimeout(() =>\n {\n delete this.queue[rpc_id]\n reject(new Error(\"reply timeout\"))\n }, timeout)\n }\n })\n })\n }\n\n /**\n * Logins with the other side of the connection.\n * @method\n * @param {Object} params - Login credentials object\n * @return {Promise}\n */\n async login(params: IWSRequestParams)\n {\n const resp = await this.call(\"rpc.login\", params)\n\n if (!resp) throw new Error(\"authentication failed\")\n\n return resp\n }\n\n /**\n * Fetches a list of client's methods registered on server.\n * @method\n * @return {Array}\n */\n async listMethods()\n {\n return await this.call(\"__listMethods\")\n }\n\n /**\n * Sends a JSON-RPC 2.0 notification to server.\n * @method\n * @param {String} method - RPC method name\n * @param {Object} params - optional method parameters\n * @return {Promise}\n */\n notify(method: string, params?: IWSRequestParams)\n {\n return new Promise((resolve, reject) =>\n {\n if (!this.ready) return reject(new Error(\"socket not ready\"))\n\n const message = {\n jsonrpc: \"2.0\",\n method: method,\n params,\n }\n\n this.socket.send(this.dataPack.encode(message), (error) =>\n {\n if (error) return reject(error)\n\n resolve()\n })\n })\n }\n\n /**\n * Subscribes for a defined event.\n * @method\n * @param {String|Array} event - event name\n * @return {Undefined}\n * @throws {Error}\n */\n async subscribe(event: string | Array)\n {\n if (typeof event === \"string\") event = [event]\n\n const result = await this.call(\"rpc.on\", event)\n\n if (typeof event === \"string\" && result[event] !== \"ok\")\n throw new Error(\n \"Failed subscribing to an event '\" + event + \"' with: \" + result[event]\n )\n\n return result\n }\n\n /**\n * Unsubscribes from a defined event.\n * @method\n * @param {String|Array} event - event name\n * @return {Undefined}\n * @throws {Error}\n */\n async unsubscribe(event: string | Array)\n {\n if (typeof event === \"string\") event = [event]\n\n const result = await this.call(\"rpc.off\", event)\n\n if (typeof event === \"string\" && result[event] !== \"ok\")\n throw new Error(\"Failed unsubscribing from an event with: \" + result)\n\n return result\n }\n\n /**\n * Closes a WebSocket connection gracefully.\n * @method\n * @param {Number} code - socket close code\n * @param {String} data - optional data to be sent before closing\n * @return {Undefined}\n */\n close(code?: number, data?: string)\n {\n this.socket.close(code || 1000, data)\n }\n\n /**\n * Enable / disable automatic reconnection.\n * @method\n * @param {Boolean} reconnect - enable / disable reconnection\n * @return {Undefined}\n */\n setAutoReconnect(reconnect: boolean)\n {\n this.reconnect = reconnect\n }\n\n /**\n * Set the interval between reconnection attempts.\n * @method\n * @param {Number} interval - reconnection interval in milliseconds\n * @return {Undefined}\n */\n setReconnectInterval(interval: number)\n {\n this.reconnect_interval = interval\n }\n\n /**\n * Set the maximum number of reconnection attempts.\n * @method\n * @param {Number} max_reconnects - maximum reconnection attempts\n * @return {Undefined}\n */\n setMaxReconnects(max_reconnects: number)\n {\n this.max_reconnects = max_reconnects\n }\n\n /**\n * Connection/Message handler.\n * @method\n * @private\n * @param {String} address - WebSocket API address\n * @param {Object} options - ws options object\n * @return {Undefined}\n */\n private _connect(\n address: string,\n options: IWSClientAdditionalOptions & NodeWebSocket.ClientOptions\n )\n {\n clearTimeout(this.reconnect_timer_id)\n this.socket = this.webSocketFactory(address, options)\n\n this.socket.addEventListener(\"open\", () =>\n {\n this.ready = true\n this.emit(\"open\")\n this.current_reconnects = 0\n })\n\n this.socket.addEventListener(\"message\", ({ data: message }) =>\n {\n if (message instanceof ArrayBuffer)\n message = Buffer.from(message).toString()\n\n try\n {\n message = this.dataPack.decode(message)\n }\n catch (error)\n {\n return\n }\n\n // check if any listeners are attached and forward event\n if (message.notification && this.listeners(message.notification).length)\n {\n if (!Object.keys(message.params).length)\n return this.emit(message.notification)\n\n const args = [message.notification]\n\n if (message.params.constructor === Object) args.push(message.params)\n // using for-loop instead of unshift/spread because performance is better\n else\n for (let i = 0; i < message.params.length; i++)\n args.push(message.params[i])\n\n // run as microtask so that pending queue messages are resolved first\n // eslint-disable-next-line prefer-spread\n return Promise.resolve().then(() =>\n {\n // eslint-disable-next-line prefer-spread\n this.emit.apply(this, args)\n })\n }\n\n if (!this.queue[message.id])\n {\n // general JSON RPC 2.0 events\n if (message.method)\n {\n // run as microtask so that pending queue messages are resolved first\n return Promise.resolve().then(() =>\n {\n this.emit(message.method, message?.params)\n })\n }\n\n return\n }\n\n // reject early since server's response is invalid\n if (\"error\" in message === \"result\" in message)\n this.queue[message.id].promise[1](\n new Error(\n \"Server response malformed. Response must include either \\\"result\\\"\" +\n \" or \\\"error\\\", but not both.\"\n )\n )\n\n if (this.queue[message.id].timeout)\n clearTimeout(this.queue[message.id].timeout)\n\n if (message.error) this.queue[message.id].promise[1](message.error)\n else this.queue[message.id].promise[0](message.result)\n\n delete this.queue[message.id]\n })\n\n this.socket.addEventListener(\"error\", (error) => this.emit(\"error\", error))\n\n this.socket.addEventListener(\"close\", ({ code, reason }) =>\n {\n if (this.ready)\n // Delay close event until internal state is updated\n setTimeout(() => this.emit(\"close\", code, reason), 0)\n\n this.ready = false\n this.socket = undefined\n\n if (code === 1000) return\n\n this.current_reconnects++\n\n if (\n this.reconnect &&\n (this.max_reconnects > this.current_reconnects ||\n this.max_reconnects === 0)\n )\n this.reconnect_timer_id = setTimeout(\n () => this._connect(address, options),\n this.reconnect_interval\n )\n })\n }\n}\n","\"use strict\"\n\nexport interface DataPack<\n T,\n R extends string | ArrayBufferLike | Blob | ArrayBufferView\n> {\n encode(value: T): R;\n decode(value: R): T;\n}\n\nexport class DefaultDataPack implements DataPack\n{\n encode(value: Object): string\n {\n return JSON.stringify(value)\n }\n\n decode(value: string): Object\n {\n return JSON.parse(value)\n }\n}\n","/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { abytes, aexists, anumber, aoutput } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n byteSwap32,\n Hash,\n isLE,\n toBytes,\n u32,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n type CHash,\n type CHashXO,\n type HashXOF,\n type Input,\n} from './utils.js';\n\n// Various per round constants calculations\nconst SHA3_PI: number[] = [];\nconst SHA3_ROTL: number[] = [];\nconst _SHA3_IOTA: bigint[] = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s: Uint32Array, rounds: number = 24): void {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\n/** Keccak sponge function. */\nexport class Keccak extends Hash implements HashXOF {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n anumber(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n // 0 < blockLen < 200\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak(): void {\n if (!isLE) byteSwap32(this.state32);\n keccakP(this.state32, this.rounds);\n if (!isLE) byteSwap32(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input): this {\n aexists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish(): void {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n aexists(this, false);\n abytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n anumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array): Uint8Array {\n aoutput(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest(): Uint8Array {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy(): void {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\n/** SHA3-224 hash function. */\nexport const sha3_224: CHash = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256: CHash = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\n/** SHA3-384 hash function. */\nexport const sha3_384: CHash = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\n/** SHA3-512 hash function. */\nexport const sha3_512: CHash = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\n\n/** keccak-224 hash function. */\nexport const keccak_224: CHash = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256: CHash = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\n/** keccak-384 hash function. */\nexport const keccak_384: CHash = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\n/** keccak-512 hash function. */\nexport const keccak_512: CHash = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128: CHashXO = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256: CHashXO = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","import {ed25519} from '@noble/curves/ed25519';\n\n/**\n * A 64 byte secret key, the first 32 bytes of which is the\n * private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\ntype Ed25519SecretKey = Uint8Array;\n\n/**\n * Ed25519 Keypair\n */\nexport interface Ed25519Keypair {\n publicKey: Uint8Array;\n secretKey: Ed25519SecretKey;\n}\n\nexport const generatePrivateKey = ed25519.utils.randomPrivateKey;\nexport const generateKeypair = (): Ed25519Keypair => {\n const privateScalar = ed25519.utils.randomPrivateKey();\n const publicKey = getPublicKey(privateScalar);\n const secretKey = new Uint8Array(64);\n secretKey.set(privateScalar);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey,\n };\n};\nexport const getPublicKey = ed25519.getPublicKey;\nexport function isOnCurve(publicKey: Uint8Array): boolean {\n try {\n ed25519.ExtendedPoint.fromHex(publicKey);\n return true;\n } catch {\n return false;\n }\n}\nexport const sign = (\n message: Parameters[0],\n secretKey: Ed25519SecretKey,\n) => ed25519.sign(message, secretKey.slice(0, 32));\nexport const verify = ed25519.verify;\n","import {Buffer} from 'buffer';\n\nexport const toBuffer = (arr: Buffer | Uint8Array | Array): Buffer => {\n if (Buffer.isBuffer(arr)) {\n return arr;\n } else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n } else {\n return Buffer.from(arr);\n }\n};\n","import {Buffer} from 'buffer';\nimport {serialize, deserialize, deserializeUnchecked} from 'borsh';\n\n// Class wrapping a plain object\nexport class Struct {\n constructor(properties: any) {\n Object.assign(this, properties);\n }\n\n encode(): Buffer {\n return Buffer.from(serialize(SOLANA_SCHEMA, this));\n }\n\n static decode(data: Buffer): any {\n return deserialize(SOLANA_SCHEMA, this, data);\n }\n\n static decodeUnchecked(data: Buffer): any {\n return deserializeUnchecked(SOLANA_SCHEMA, this, data);\n }\n}\n\n// Class representing a Rust-compatible enum, since enums are only strings or\n// numbers in pure JS\nexport class Enum extends Struct {\n enum: string = '';\n constructor(properties: any) {\n super(properties);\n if (Object.keys(properties).length !== 1) {\n throw new Error('Enum can only take single value');\n }\n Object.keys(properties).map(key => {\n this.enum = key;\n });\n }\n}\n\nexport const SOLANA_SCHEMA: Map = new Map();\n","import BN from 'bn.js';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport {sha256} from '@noble/hashes/sha256';\n\nimport {isOnCurve} from './utils/ed25519';\nimport {Struct, SOLANA_SCHEMA} from './utils/borsh-schema';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * Maximum length of derived pubkey seed\n */\nexport const MAX_SEED_LENGTH = 32;\n\n/**\n * Size of public key in bytes\n */\nexport const PUBLIC_KEY_LENGTH = 32;\n\n/**\n * Value to be converted into public key\n */\nexport type PublicKeyInitData =\n | number\n | string\n | Uint8Array\n | Array\n | PublicKeyData;\n\n/**\n * JSON object representation of PublicKey class\n */\nexport type PublicKeyData = {\n /** @internal */\n _bn: BN;\n};\n\nfunction isPublicKeyData(value: PublicKeyInitData): value is PublicKeyData {\n return (value as PublicKeyData)._bn !== undefined;\n}\n\n// local counter used by PublicKey.unique()\nlet uniquePublicKeyCounter = 1;\n\n/**\n * A public key\n */\nexport class PublicKey extends Struct {\n /** @internal */\n _bn: BN;\n\n /**\n * Create a new PublicKey object\n * @param value ed25519 public key as buffer or base-58 encoded string\n */\n constructor(value: PublicKeyInitData) {\n super({});\n if (isPublicKeyData(value)) {\n this._bn = value._bn;\n } else {\n if (typeof value === 'string') {\n // assume base 58 encoding by default\n const decoded = bs58.decode(value);\n if (decoded.length != PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n this._bn = new BN(decoded);\n } else {\n this._bn = new BN(value);\n }\n\n if (this._bn.byteLength() > PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n }\n }\n\n /**\n * Returns a unique PublicKey for tests and benchmarks using a counter\n */\n static unique(): PublicKey {\n const key = new PublicKey(uniquePublicKeyCounter);\n uniquePublicKeyCounter += 1;\n return new PublicKey(key.toBuffer());\n }\n\n /**\n * Default public key value. The base58-encoded string representation is all ones (as seen below)\n * The underlying BN number is 32 bytes that are all zeros\n */\n static default: PublicKey = new PublicKey('11111111111111111111111111111111');\n\n /**\n * Checks if two publicKeys are equal\n */\n equals(publicKey: PublicKey): boolean {\n return this._bn.eq(publicKey._bn);\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toBase58(): string {\n return bs58.encode(this.toBytes());\n }\n\n toJSON(): string {\n return this.toBase58();\n }\n\n /**\n * Return the byte array representation of the public key in big endian\n */\n toBytes(): Uint8Array {\n const buf = this.toBuffer();\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n\n /**\n * Return the Buffer representation of the public key in big endian\n */\n toBuffer(): Buffer {\n const b = this._bn.toArrayLike(Buffer);\n if (b.length === PUBLIC_KEY_LENGTH) {\n return b;\n }\n\n const zeroPad = Buffer.alloc(32);\n b.copy(zeroPad, 32 - b.length);\n return zeroPad;\n }\n\n get [Symbol.toStringTag](): string {\n return `PublicKey(${this.toString()})`;\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toString(): string {\n return this.toBase58();\n }\n\n /**\n * Derive a public key from another key, a seed, and a program ID.\n * The program ID will also serve as the owner of the public key, giving\n * it permission to write data to the account.\n */\n /* eslint-disable require-await */\n static async createWithSeed(\n fromPublicKey: PublicKey,\n seed: string,\n programId: PublicKey,\n ): Promise {\n const buffer = Buffer.concat([\n fromPublicKey.toBuffer(),\n Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const publicKeyBytes = sha256(buffer);\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Derive a program address from seeds and a program ID.\n */\n /* eslint-disable require-await */\n static createProgramAddressSync(\n seeds: Array,\n programId: PublicKey,\n ): PublicKey {\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([\n buffer,\n programId.toBuffer(),\n Buffer.from('ProgramDerivedAddress'),\n ]);\n const publicKeyBytes = sha256(buffer);\n if (isOnCurve(publicKeyBytes)) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Async version of createProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link createProgramAddressSync} instead\n */\n /* eslint-disable require-await */\n static async createProgramAddress(\n seeds: Array,\n programId: PublicKey,\n ): Promise {\n return this.createProgramAddressSync(seeds, programId);\n }\n\n /**\n * Find a valid program address\n *\n * Valid program addresses must fall off the ed25519 curve. This function\n * iterates a nonce until it finds one that when combined with the seeds\n * results in a valid program address.\n */\n static findProgramAddressSync(\n seeds: Array,\n programId: PublicKey,\n ): [PublicKey, number] {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = this.createProgramAddressSync(seedsWithNonce, programId);\n } catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n }\n\n /**\n * Async version of findProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link findProgramAddressSync} instead\n */\n static async findProgramAddress(\n seeds: Array,\n programId: PublicKey,\n ): Promise<[PublicKey, number]> {\n return this.findProgramAddressSync(seeds, programId);\n }\n\n /**\n * Check that a pubkey is on the ed25519 curve.\n */\n static isOnCurve(pubkeyData: PublicKeyInitData): boolean {\n const pubkey = new PublicKey(pubkeyData);\n return isOnCurve(pubkey.toBytes());\n }\n}\n\nSOLANA_SCHEMA.set(PublicKey, {\n kind: 'struct',\n fields: [['_bn', 'u256']],\n});\n","import {Buffer} from 'buffer';\n\nimport {generatePrivateKey, getPublicKey} from './utils/ed25519';\nimport {toBuffer} from './utils/to-buffer';\nimport {PublicKey} from './publickey';\n\n/**\n * An account key pair (public and secret keys).\n *\n * @deprecated since v1.10.0, please use {@link Keypair} instead.\n */\nexport class Account {\n /** @internal */\n private _publicKey: Buffer;\n /** @internal */\n private _secretKey: Buffer;\n\n /**\n * Create a new Account object\n *\n * If the secretKey parameter is not provided a new key pair is randomly\n * created for the account\n *\n * @param secretKey Secret key for the account\n */\n constructor(secretKey?: Uint8Array | Array) {\n if (secretKey) {\n const secretKeyBuffer = toBuffer(secretKey);\n if (secretKey.length !== 64) {\n throw new Error('bad secret key size');\n }\n this._publicKey = secretKeyBuffer.slice(32, 64);\n this._secretKey = secretKeyBuffer.slice(0, 32);\n } else {\n this._secretKey = toBuffer(generatePrivateKey());\n this._publicKey = toBuffer(getPublicKey(this._secretKey));\n }\n }\n\n /**\n * The public key for this account\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._publicKey);\n }\n\n /**\n * The **unencrypted** secret key for this account. The first 32 bytes\n * is the private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\n get secretKey(): Buffer {\n return Buffer.concat([this._secretKey, this._publicKey], 64);\n }\n}\n","import {PublicKey} from './publickey';\n\nexport const BPF_LOADER_DEPRECATED_PROGRAM_ID = new PublicKey(\n 'BPFLoader1111111111111111111111111111111111',\n);\n","/**\n * Maximum over-the-wire size of a Transaction\n *\n * 1280 is IPv6 minimum MTU\n * 40 bytes is the size of the IPv6 header\n * 8 bytes is the size of the fragment header\n */\nexport const PACKET_DATA_SIZE = 1280 - 40 - 8;\n\nexport const VERSION_PREFIX_MASK = 0x7f;\n\nexport const SIGNATURE_LENGTH_IN_BYTES = 64;\n","export class TransactionExpiredBlockheightExceededError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: block height exceeded.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(\n TransactionExpiredBlockheightExceededError.prototype,\n 'name',\n {\n value: 'TransactionExpiredBlockheightExceededError',\n },\n);\n\nexport class TransactionExpiredTimeoutError extends Error {\n signature: string;\n\n constructor(signature: string, timeoutSeconds: number) {\n super(\n `Transaction was not confirmed in ${timeoutSeconds.toFixed(\n 2,\n )} seconds. It is ` +\n 'unknown if it succeeded or failed. Check signature ' +\n `${signature} using the Solana Explorer or CLI tools.`,\n );\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredTimeoutError.prototype, 'name', {\n value: 'TransactionExpiredTimeoutError',\n});\n\nexport class TransactionExpiredNonceInvalidError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: the nonce is no longer valid.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredNonceInvalidError.prototype, 'name', {\n value: 'TransactionExpiredNonceInvalidError',\n});\n","import {LoadedAddresses} from '../connection';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {MessageCompiledInstruction} from './index';\n\nexport type AccountKeysFromLookups = LoadedAddresses;\n\nexport class MessageAccountKeys {\n staticAccountKeys: Array;\n accountKeysFromLookups?: AccountKeysFromLookups;\n\n constructor(\n staticAccountKeys: Array,\n accountKeysFromLookups?: AccountKeysFromLookups,\n ) {\n this.staticAccountKeys = staticAccountKeys;\n this.accountKeysFromLookups = accountKeysFromLookups;\n }\n\n keySegments(): Array> {\n const keySegments = [this.staticAccountKeys];\n if (this.accountKeysFromLookups) {\n keySegments.push(this.accountKeysFromLookups.writable);\n keySegments.push(this.accountKeysFromLookups.readonly);\n }\n return keySegments;\n }\n\n get(index: number): PublicKey | undefined {\n for (const keySegment of this.keySegments()) {\n if (index < keySegment.length) {\n return keySegment[index];\n } else {\n index -= keySegment.length;\n }\n }\n return;\n }\n\n get length(): number {\n return this.keySegments().flat().length;\n }\n\n compileInstructions(\n instructions: Array,\n ): Array {\n // Bail early if any account indexes would overflow a u8\n const U8_MAX = 255;\n if (this.length > U8_MAX + 1) {\n throw new Error('Account index overflow encountered during compilation');\n }\n\n const keyIndexMap = new Map();\n this.keySegments()\n .flat()\n .forEach((key, index) => {\n keyIndexMap.set(key.toBase58(), index);\n });\n\n const findKeyIndex = (key: PublicKey) => {\n const keyIndex = keyIndexMap.get(key.toBase58());\n if (keyIndex === undefined)\n throw new Error(\n 'Encountered an unknown instruction account key during compilation',\n );\n return keyIndex;\n };\n\n return instructions.map((instruction): MessageCompiledInstruction => {\n return {\n programIdIndex: findKeyIndex(instruction.programId),\n accountKeyIndexes: instruction.keys.map(meta =>\n findKeyIndex(meta.pubkey),\n ),\n data: instruction.data,\n };\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {VoteAuthorizeWithSeedArgs} from './programs/vote';\n\n/**\n * Layout for a public key\n */\nexport const publicKey = (property: string = 'publicKey') => {\n return BufferLayout.blob(32, property);\n};\n\n/**\n * Layout for a signature\n */\nexport const signature = (property: string = 'signature') => {\n return BufferLayout.blob(64, property);\n};\n\n/**\n * Layout for a 64bit unsigned value\n */\nexport const uint64 = (property: string = 'uint64') => {\n return BufferLayout.blob(8, property);\n};\n\ninterface IRustStringShim\n extends Omit<\n BufferLayout.Structure<\n Readonly<{\n length: number;\n lengthPadding: number;\n chars: Uint8Array;\n }>\n >,\n 'decode' | 'encode' | 'replicate'\n > {\n alloc: (str: string) => number;\n decode: (b: Uint8Array, offset?: number) => string;\n encode: (str: string, b: Uint8Array, offset?: number) => number;\n replicate: (property: string) => this;\n}\n\n/**\n * Layout for a Rust String type\n */\nexport const rustString = (\n property: string = 'string',\n): BufferLayout.Layout => {\n const rsl = BufferLayout.struct<\n Readonly<{\n length?: number;\n lengthPadding?: number;\n chars: Uint8Array;\n }>\n >(\n [\n BufferLayout.u32('length'),\n BufferLayout.u32('lengthPadding'),\n BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(), -8), 'chars'),\n ],\n property,\n );\n const _decode = rsl.decode.bind(rsl);\n const _encode = rsl.encode.bind(rsl);\n\n const rslShim = rsl as unknown as IRustStringShim;\n\n rslShim.decode = (b: Uint8Array, offset?: number) => {\n const data = _decode(b, offset);\n return data['chars'].toString();\n };\n\n rslShim.encode = (str: string, b: Uint8Array, offset?: number) => {\n const data = {\n chars: Buffer.from(str, 'utf8'),\n };\n return _encode(data, b, offset);\n };\n\n rslShim.alloc = (str: string) => {\n return (\n BufferLayout.u32().span +\n BufferLayout.u32().span +\n Buffer.from(str, 'utf8').length\n );\n };\n\n return rslShim;\n};\n\n/**\n * Layout for an Authorized object\n */\nexport const authorized = (property: string = 'authorized') => {\n return BufferLayout.struct<\n Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n }>\n >([publicKey('staker'), publicKey('withdrawer')], property);\n};\n\n/**\n * Layout for a Lockup object\n */\nexport const lockup = (property: string = 'lockup') => {\n return BufferLayout.struct<\n Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n }>\n >(\n [\n BufferLayout.ns64('unixTimestamp'),\n BufferLayout.ns64('epoch'),\n publicKey('custodian'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteInit object\n */\nexport const voteInit = (property: string = 'voteInit') => {\n return BufferLayout.struct<\n Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>\n >(\n [\n publicKey('nodePubkey'),\n publicKey('authorizedVoter'),\n publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteAuthorizeWithSeedArgs object\n */\nexport const voteAuthorizeWithSeedArgs = (\n property: string = 'voteAuthorizeWithSeedArgs',\n) => {\n return BufferLayout.struct(\n [\n BufferLayout.u32('voteAuthorizationType'),\n publicKey('currentAuthorityDerivedKeyOwnerPubkey'),\n rustString('currentAuthorityDerivedKeySeed'),\n publicKey('newAuthorized'),\n ],\n property,\n );\n};\n\nexport function getAlloc(type: any, fields: any): number {\n const getItemAlloc = (item: any): number => {\n if (item.span >= 0) {\n return item.span;\n } else if (typeof item.alloc === 'function') {\n return item.alloc(fields[item.property]);\n } else if ('count' in item && 'elementLayout' in item) {\n const field = fields[item.property];\n if (Array.isArray(field)) {\n return field.length * getItemAlloc(item.elementLayout);\n }\n } else if ('fields' in item) {\n // This is a `Structure` whose size needs to be recursively measured.\n return getAlloc({layout: item}, fields[item.property]);\n }\n // Couldn't determine allocated size of layout\n return 0;\n };\n\n let alloc = 0;\n type.layout.fields.forEach((item: any) => {\n alloc += getItemAlloc(item);\n });\n\n return alloc;\n}\n","export function decodeLength(bytes: Array): number {\n let len = 0;\n let size = 0;\n for (;;) {\n let elem = bytes.shift() as number;\n len |= (elem & 0x7f) << (size * 7);\n size += 1;\n if ((elem & 0x80) === 0) {\n break;\n }\n }\n return len;\n}\n\nexport function encodeLength(bytes: Array, len: number) {\n let rem_len = len;\n for (;;) {\n let elem = rem_len & 0x7f;\n rem_len >>= 7;\n if (rem_len == 0) {\n bytes.push(elem);\n break;\n } else {\n elem |= 0x80;\n bytes.push(elem);\n }\n }\n}\n","export default function (\n condition: unknown,\n message?: string,\n): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import {MessageHeader, MessageAddressTableLookup} from './index';\nimport {AccountKeysFromLookups} from './account-keys';\nimport {AddressLookupTableAccount} from '../programs';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {PublicKey} from '../publickey';\n\nexport type CompiledKeyMeta = {\n isSigner: boolean;\n isWritable: boolean;\n isInvoked: boolean;\n};\n\ntype KeyMetaMap = Map;\n\nexport class CompiledKeys {\n payer: PublicKey;\n keyMetaMap: KeyMetaMap;\n\n constructor(payer: PublicKey, keyMetaMap: KeyMetaMap) {\n this.payer = payer;\n this.keyMetaMap = keyMetaMap;\n }\n\n static compile(\n instructions: Array,\n payer: PublicKey,\n ): CompiledKeys {\n const keyMetaMap: KeyMetaMap = new Map();\n const getOrInsertDefault = (pubkey: PublicKey): CompiledKeyMeta => {\n const address = pubkey.toBase58();\n let keyMeta = keyMetaMap.get(address);\n if (keyMeta === undefined) {\n keyMeta = {\n isSigner: false,\n isWritable: false,\n isInvoked: false,\n };\n keyMetaMap.set(address, keyMeta);\n }\n return keyMeta;\n };\n\n const payerKeyMeta = getOrInsertDefault(payer);\n payerKeyMeta.isSigner = true;\n payerKeyMeta.isWritable = true;\n\n for (const ix of instructions) {\n getOrInsertDefault(ix.programId).isInvoked = true;\n for (const accountMeta of ix.keys) {\n const keyMeta = getOrInsertDefault(accountMeta.pubkey);\n keyMeta.isSigner ||= accountMeta.isSigner;\n keyMeta.isWritable ||= accountMeta.isWritable;\n }\n }\n\n return new CompiledKeys(payer, keyMetaMap);\n }\n\n getMessageComponents(): [MessageHeader, Array] {\n const mapEntries = [...this.keyMetaMap.entries()];\n assert(mapEntries.length <= 256, 'Max static account keys length exceeded');\n\n const writableSigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && meta.isWritable,\n );\n const readonlySigners = mapEntries.filter(\n ([, meta]) => meta.isSigner && !meta.isWritable,\n );\n const writableNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && meta.isWritable,\n );\n const readonlyNonSigners = mapEntries.filter(\n ([, meta]) => !meta.isSigner && !meta.isWritable,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: writableSigners.length + readonlySigners.length,\n numReadonlySignedAccounts: readonlySigners.length,\n numReadonlyUnsignedAccounts: readonlyNonSigners.length,\n };\n\n // sanity checks\n {\n assert(\n writableSigners.length > 0,\n 'Expected at least one writable signer key',\n );\n const [payerAddress] = writableSigners[0];\n assert(\n payerAddress === this.payer.toBase58(),\n 'Expected first writable signer key to be the fee payer',\n );\n }\n\n const staticAccountKeys = [\n ...writableSigners.map(([address]) => new PublicKey(address)),\n ...readonlySigners.map(([address]) => new PublicKey(address)),\n ...writableNonSigners.map(([address]) => new PublicKey(address)),\n ...readonlyNonSigners.map(([address]) => new PublicKey(address)),\n ];\n\n return [header, staticAccountKeys];\n }\n\n extractTableLookup(\n lookupTable: AddressLookupTableAccount,\n ): [MessageAddressTableLookup, AccountKeysFromLookups] | undefined {\n const [writableIndexes, drainedWritableKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && keyMeta.isWritable,\n );\n const [readonlyIndexes, drainedReadonlyKeys] =\n this.drainKeysFoundInLookupTable(\n lookupTable.state.addresses,\n keyMeta =>\n !keyMeta.isSigner && !keyMeta.isInvoked && !keyMeta.isWritable,\n );\n\n // Don't extract lookup if no keys were found\n if (writableIndexes.length === 0 && readonlyIndexes.length === 0) {\n return;\n }\n\n return [\n {\n accountKey: lookupTable.key,\n writableIndexes,\n readonlyIndexes,\n },\n {\n writable: drainedWritableKeys,\n readonly: drainedReadonlyKeys,\n },\n ];\n }\n\n /** @internal */\n private drainKeysFoundInLookupTable(\n lookupTableEntries: Array,\n keyMetaFilter: (keyMeta: CompiledKeyMeta) => boolean,\n ): [Array, Array] {\n const lookupTableIndexes = new Array();\n const drainedKeys = new Array();\n\n for (const [address, keyMeta] of this.keyMetaMap.entries()) {\n if (keyMetaFilter(keyMeta)) {\n const key = new PublicKey(address);\n const lookupTableIndex = lookupTableEntries.findIndex(entry =>\n entry.equals(key),\n );\n if (lookupTableIndex >= 0) {\n assert(lookupTableIndex < 256, 'Max lookup table index exceeded');\n lookupTableIndexes.push(lookupTableIndex);\n drainedKeys.push(key);\n this.keyMetaMap.delete(address);\n }\n }\n }\n\n return [lookupTableIndexes, drainedKeys];\n }\n}\n","const END_OF_BUFFER_ERROR_MESSAGE = 'Reached end of buffer unexpectedly';\n\n/**\n * Delegates to `Array#shift`, but throws if the array is zero-length.\n */\nexport function guardedShift(byteArray: T[]): T {\n if (byteArray.length === 0) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.shift() as T;\n}\n\n/**\n * Delegates to `Array#splice`, but throws if the section being spliced out extends past the end of\n * the array.\n */\nexport function guardedSplice(\n byteArray: T[],\n ...args:\n | [start: number, deleteCount?: number]\n | [start: number, deleteCount: number, ...items: T[]]\n): T[] {\n const [start] = args;\n if (\n args.length === 2 // Implies that `deleteCount` was supplied\n ? start + (args[1] ?? 0) > byteArray.length\n : start >= byteArray.length\n ) {\n throw new Error(END_OF_BUFFER_ERROR_MESSAGE);\n }\n return byteArray.splice(\n ...(args as Parameters),\n );\n}\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport type {Blockhash} from '../blockhash';\nimport * as Layout from '../layout';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {TransactionInstruction} from '../transaction';\nimport {CompiledKeys} from './compiled-keys';\nimport {MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * An instruction to execute by a program\n *\n * @property {number} programIdIndex\n * @property {number[]} accounts\n * @property {string} data\n */\nexport type CompiledInstruction = {\n /** Index into the transaction keys array indicating the program account that executes this instruction */\n programIdIndex: number;\n /** Ordered indices into the transaction keys array indicating which accounts to pass to the program */\n accounts: number[];\n /** The program input data encoded as base 58 */\n data: string;\n};\n\n/**\n * Message constructor arguments\n */\nexport type MessageArgs = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** All the account keys used by this transaction */\n accountKeys: string[] | PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n instructions: CompiledInstruction[];\n};\n\nexport type CompileLegacyArgs = {\n payerKey: PublicKey;\n instructions: Array;\n recentBlockhash: Blockhash;\n};\n\n/**\n * List of instructions to be processed atomically\n */\nexport class Message {\n header: MessageHeader;\n accountKeys: PublicKey[];\n recentBlockhash: Blockhash;\n instructions: CompiledInstruction[];\n\n private indexToProgramIds: Map = new Map<\n number,\n PublicKey\n >();\n\n constructor(args: MessageArgs) {\n this.header = args.header;\n this.accountKeys = args.accountKeys.map(account => new PublicKey(account));\n this.recentBlockhash = args.recentBlockhash;\n this.instructions = args.instructions;\n this.instructions.forEach(ix =>\n this.indexToProgramIds.set(\n ix.programIdIndex,\n this.accountKeys[ix.programIdIndex],\n ),\n );\n }\n\n get version(): 'legacy' {\n return 'legacy';\n }\n\n get staticAccountKeys(): Array {\n return this.accountKeys;\n }\n\n get compiledInstructions(): Array {\n return this.instructions.map(\n (ix): MessageCompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n }),\n );\n }\n\n get addressTableLookups(): Array {\n return [];\n }\n\n getAccountKeys(): MessageAccountKeys {\n return new MessageAccountKeys(this.staticAccountKeys);\n }\n\n static compile(args: CompileLegacyArgs): Message {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(staticAccountKeys);\n const instructions = accountKeys.compileInstructions(args.instructions).map(\n (ix: MessageCompiledInstruction): CompiledInstruction => ({\n programIdIndex: ix.programIdIndex,\n accounts: ix.accountKeyIndexes,\n data: bs58.encode(ix.data),\n }),\n );\n return new Message({\n header,\n accountKeys: staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n instructions,\n });\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = this.accountKeys.length - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n isProgramId(index: number): boolean {\n return this.indexToProgramIds.has(index);\n }\n\n programIds(): PublicKey[] {\n return [...this.indexToProgramIds.values()];\n }\n\n nonProgramIds(): PublicKey[] {\n return this.accountKeys.filter((_, index) => !this.isProgramId(index));\n }\n\n serialize(): Buffer {\n const numKeys = this.accountKeys.length;\n\n let keyCount: number[] = [];\n shortvec.encodeLength(keyCount, numKeys);\n\n const instructions = this.instructions.map(instruction => {\n const {accounts, programIdIndex} = instruction;\n const data = Array.from(bs58.decode(instruction.data));\n\n let keyIndicesCount: number[] = [];\n shortvec.encodeLength(keyIndicesCount, accounts.length);\n\n let dataCount: number[] = [];\n shortvec.encodeLength(dataCount, data.length);\n\n return {\n programIdIndex,\n keyIndicesCount: Buffer.from(keyIndicesCount),\n keyIndices: accounts,\n dataLength: Buffer.from(dataCount),\n data,\n };\n });\n\n let instructionCount: number[] = [];\n shortvec.encodeLength(instructionCount, instructions.length);\n let instructionBuffer = Buffer.alloc(PACKET_DATA_SIZE);\n Buffer.from(instructionCount).copy(instructionBuffer);\n let instructionBufferLength = instructionCount.length;\n\n instructions.forEach(instruction => {\n const instructionLayout = BufferLayout.struct<\n Readonly<{\n data: number[];\n dataLength: Uint8Array;\n keyIndices: number[];\n keyIndicesCount: Uint8Array;\n programIdIndex: number;\n }>\n >([\n BufferLayout.u8('programIdIndex'),\n\n BufferLayout.blob(\n instruction.keyIndicesCount.length,\n 'keyIndicesCount',\n ),\n BufferLayout.seq(\n BufferLayout.u8('keyIndex'),\n instruction.keyIndices.length,\n 'keyIndices',\n ),\n BufferLayout.blob(instruction.dataLength.length, 'dataLength'),\n BufferLayout.seq(\n BufferLayout.u8('userdatum'),\n instruction.data.length,\n 'data',\n ),\n ]);\n const length = instructionLayout.encode(\n instruction,\n instructionBuffer,\n instructionBufferLength,\n );\n instructionBufferLength += length;\n });\n instructionBuffer = instructionBuffer.slice(0, instructionBufferLength);\n\n const signDataLayout = BufferLayout.struct<\n Readonly<{\n keyCount: Uint8Array;\n keys: Uint8Array[];\n numReadonlySignedAccounts: Uint8Array;\n numReadonlyUnsignedAccounts: Uint8Array;\n numRequiredSignatures: Uint8Array;\n recentBlockhash: Uint8Array;\n }>\n >([\n BufferLayout.blob(1, 'numRequiredSignatures'),\n BufferLayout.blob(1, 'numReadonlySignedAccounts'),\n BufferLayout.blob(1, 'numReadonlyUnsignedAccounts'),\n BufferLayout.blob(keyCount.length, 'keyCount'),\n BufferLayout.seq(Layout.publicKey('key'), numKeys, 'keys'),\n Layout.publicKey('recentBlockhash'),\n ]);\n\n const transaction = {\n numRequiredSignatures: Buffer.from([this.header.numRequiredSignatures]),\n numReadonlySignedAccounts: Buffer.from([\n this.header.numReadonlySignedAccounts,\n ]),\n numReadonlyUnsignedAccounts: Buffer.from([\n this.header.numReadonlyUnsignedAccounts,\n ]),\n keyCount: Buffer.from(keyCount),\n keys: this.accountKeys.map(key => toBuffer(key.toBytes())),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n };\n\n let signData = Buffer.alloc(2048);\n const length = signDataLayout.encode(transaction, signData);\n instructionBuffer.copy(signData, length);\n return signData.slice(0, length + instructionBuffer.length);\n }\n\n /**\n * Decode a compiled message into a Message object.\n */\n static from(buffer: Buffer | Uint8Array | Array): Message {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const numRequiredSignatures = guardedShift(byteArray);\n if (\n numRequiredSignatures !==\n (numRequiredSignatures & VERSION_PREFIX_MASK)\n ) {\n throw new Error(\n 'Versioned messages must be deserialized with VersionedMessage.deserialize()',\n );\n }\n\n const numReadonlySignedAccounts = guardedShift(byteArray);\n const numReadonlyUnsignedAccounts = guardedShift(byteArray);\n\n const accountCount = shortvec.decodeLength(byteArray);\n let accountKeys = [];\n for (let i = 0; i < accountCount; i++) {\n const account = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n accountKeys.push(new PublicKey(Buffer.from(account)));\n }\n\n const recentBlockhash = guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH);\n\n const instructionCount = shortvec.decodeLength(byteArray);\n let instructions: CompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountCount = shortvec.decodeLength(byteArray);\n const accounts = guardedSplice(byteArray, 0, accountCount);\n const dataLength = shortvec.decodeLength(byteArray);\n const dataSlice = guardedSplice(byteArray, 0, dataLength);\n const data = bs58.encode(Buffer.from(dataSlice));\n instructions.push({\n programIdIndex,\n accounts,\n data,\n });\n }\n\n const messageArgs = {\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n recentBlockhash: bs58.encode(Buffer.from(recentBlockhash)),\n accountKeys,\n instructions,\n };\n\n return new Message(messageArgs);\n }\n}\n","import bs58 from 'bs58';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../layout';\nimport {Blockhash} from '../blockhash';\nimport {\n MessageHeader,\n MessageAddressTableLookup,\n MessageCompiledInstruction,\n} from './index';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport assert from '../utils/assert';\nimport {PACKET_DATA_SIZE, VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {TransactionInstruction} from '../transaction';\nimport {AddressLookupTableAccount} from '../programs';\nimport {CompiledKeys} from './compiled-keys';\nimport {AccountKeysFromLookups, MessageAccountKeys} from './account-keys';\nimport {guardedShift, guardedSplice} from '../utils/guarded-array-utils';\n\n/**\n * Message constructor arguments\n */\nexport type MessageV0Args = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** The static account keys used by this transaction */\n staticAccountKeys: PublicKey[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n compiledInstructions: MessageCompiledInstruction[];\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n addressTableLookups: MessageAddressTableLookup[];\n};\n\nexport type CompileV0Args = {\n payerKey: PublicKey;\n instructions: Array;\n recentBlockhash: Blockhash;\n addressLookupTableAccounts?: Array;\n};\n\nexport type GetAccountKeysArgs =\n | {\n accountKeysFromLookups?: AccountKeysFromLookups | null;\n }\n | {\n addressLookupTableAccounts?: AddressLookupTableAccount[] | null;\n };\n\nexport class MessageV0 {\n header: MessageHeader;\n staticAccountKeys: Array;\n recentBlockhash: Blockhash;\n compiledInstructions: Array;\n addressTableLookups: Array;\n\n constructor(args: MessageV0Args) {\n this.header = args.header;\n this.staticAccountKeys = args.staticAccountKeys;\n this.recentBlockhash = args.recentBlockhash;\n this.compiledInstructions = args.compiledInstructions;\n this.addressTableLookups = args.addressTableLookups;\n }\n\n get version(): 0 {\n return 0;\n }\n\n get numAccountKeysFromLookups(): number {\n let count = 0;\n for (const lookup of this.addressTableLookups) {\n count += lookup.readonlyIndexes.length + lookup.writableIndexes.length;\n }\n return count;\n }\n\n getAccountKeys(args?: GetAccountKeysArgs): MessageAccountKeys {\n let accountKeysFromLookups: AccountKeysFromLookups | undefined;\n if (\n args &&\n 'accountKeysFromLookups' in args &&\n args.accountKeysFromLookups\n ) {\n if (\n this.numAccountKeysFromLookups !=\n args.accountKeysFromLookups.writable.length +\n args.accountKeysFromLookups.readonly.length\n ) {\n throw new Error(\n 'Failed to get account keys because of a mismatch in the number of account keys from lookups',\n );\n }\n accountKeysFromLookups = args.accountKeysFromLookups;\n } else if (\n args &&\n 'addressLookupTableAccounts' in args &&\n args.addressLookupTableAccounts\n ) {\n accountKeysFromLookups = this.resolveAddressTableLookups(\n args.addressLookupTableAccounts,\n );\n } else if (this.addressTableLookups.length > 0) {\n throw new Error(\n 'Failed to get account keys because address table lookups were not resolved',\n );\n }\n return new MessageAccountKeys(\n this.staticAccountKeys,\n accountKeysFromLookups,\n );\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n const numSignedAccounts = this.header.numRequiredSignatures;\n const numStaticAccountKeys = this.staticAccountKeys.length;\n if (index >= numStaticAccountKeys) {\n const lookupAccountKeysIndex = index - numStaticAccountKeys;\n const numWritableLookupAccountKeys = this.addressTableLookups.reduce(\n (count, lookup) => count + lookup.writableIndexes.length,\n 0,\n );\n return lookupAccountKeysIndex < numWritableLookupAccountKeys;\n } else if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = numStaticAccountKeys - numSignedAccounts;\n const numWritableUnsignedAccounts =\n numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts =\n numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n resolveAddressTableLookups(\n addressLookupTableAccounts: AddressLookupTableAccount[],\n ): AccountKeysFromLookups {\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: [],\n readonly: [],\n };\n\n for (const tableLookup of this.addressTableLookups) {\n const tableAccount = addressLookupTableAccounts.find(account =>\n account.key.equals(tableLookup.accountKey),\n );\n if (!tableAccount) {\n throw new Error(\n `Failed to find address lookup table account for table key ${tableLookup.accountKey.toBase58()}`,\n );\n }\n\n for (const index of tableLookup.writableIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.writable.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n\n for (const index of tableLookup.readonlyIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.readonly.push(\n tableAccount.state.addresses[index],\n );\n } else {\n throw new Error(\n `Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`,\n );\n }\n }\n }\n\n return accountKeysFromLookups;\n }\n\n static compile(args: CompileV0Args): MessageV0 {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n\n const addressTableLookups = new Array();\n const accountKeysFromLookups: AccountKeysFromLookups = {\n writable: new Array(),\n readonly: new Array(),\n };\n const lookupTableAccounts = args.addressLookupTableAccounts || [];\n for (const lookupTable of lookupTableAccounts) {\n const extractResult = compiledKeys.extractTableLookup(lookupTable);\n if (extractResult !== undefined) {\n const [addressTableLookup, {writable, readonly}] = extractResult;\n addressTableLookups.push(addressTableLookup);\n accountKeysFromLookups.writable.push(...writable);\n accountKeysFromLookups.readonly.push(...readonly);\n }\n }\n\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(\n staticAccountKeys,\n accountKeysFromLookups,\n );\n const compiledInstructions = accountKeys.compileInstructions(\n args.instructions,\n );\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n\n serialize(): Uint8Array {\n const encodedStaticAccountKeysLength = Array();\n shortvec.encodeLength(\n encodedStaticAccountKeysLength,\n this.staticAccountKeys.length,\n );\n\n const serializedInstructions = this.serializeInstructions();\n const encodedInstructionsLength = Array();\n shortvec.encodeLength(\n encodedInstructionsLength,\n this.compiledInstructions.length,\n );\n\n const serializedAddressTableLookups = this.serializeAddressTableLookups();\n const encodedAddressTableLookupsLength = Array();\n shortvec.encodeLength(\n encodedAddressTableLookupsLength,\n this.addressTableLookups.length,\n );\n\n const messageLayout = BufferLayout.struct<{\n prefix: number;\n header: MessageHeader;\n staticAccountKeysLength: Uint8Array;\n staticAccountKeys: Array;\n recentBlockhash: Uint8Array;\n instructionsLength: Uint8Array;\n serializedInstructions: Uint8Array;\n addressTableLookupsLength: Uint8Array;\n serializedAddressTableLookups: Uint8Array;\n }>([\n BufferLayout.u8('prefix'),\n BufferLayout.struct(\n [\n BufferLayout.u8('numRequiredSignatures'),\n BufferLayout.u8('numReadonlySignedAccounts'),\n BufferLayout.u8('numReadonlyUnsignedAccounts'),\n ],\n 'header',\n ),\n BufferLayout.blob(\n encodedStaticAccountKeysLength.length,\n 'staticAccountKeysLength',\n ),\n BufferLayout.seq(\n Layout.publicKey(),\n this.staticAccountKeys.length,\n 'staticAccountKeys',\n ),\n Layout.publicKey('recentBlockhash'),\n BufferLayout.blob(encodedInstructionsLength.length, 'instructionsLength'),\n BufferLayout.blob(\n serializedInstructions.length,\n 'serializedInstructions',\n ),\n BufferLayout.blob(\n encodedAddressTableLookupsLength.length,\n 'addressTableLookupsLength',\n ),\n BufferLayout.blob(\n serializedAddressTableLookups.length,\n 'serializedAddressTableLookups',\n ),\n ]);\n\n const serializedMessage = new Uint8Array(PACKET_DATA_SIZE);\n const MESSAGE_VERSION_0_PREFIX = 1 << 7;\n const serializedMessageLength = messageLayout.encode(\n {\n prefix: MESSAGE_VERSION_0_PREFIX,\n header: this.header,\n staticAccountKeysLength: new Uint8Array(encodedStaticAccountKeysLength),\n staticAccountKeys: this.staticAccountKeys.map(key => key.toBytes()),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n instructionsLength: new Uint8Array(encodedInstructionsLength),\n serializedInstructions,\n addressTableLookupsLength: new Uint8Array(\n encodedAddressTableLookupsLength,\n ),\n serializedAddressTableLookups,\n },\n serializedMessage,\n );\n return serializedMessage.slice(0, serializedMessageLength);\n }\n\n private serializeInstructions(): Uint8Array {\n let serializedLength = 0;\n const serializedInstructions = new Uint8Array(PACKET_DATA_SIZE);\n for (const instruction of this.compiledInstructions) {\n const encodedAccountKeyIndexesLength = Array();\n shortvec.encodeLength(\n encodedAccountKeyIndexesLength,\n instruction.accountKeyIndexes.length,\n );\n\n const encodedDataLength = Array();\n shortvec.encodeLength(encodedDataLength, instruction.data.length);\n\n const instructionLayout = BufferLayout.struct<{\n programIdIndex: number;\n encodedAccountKeyIndexesLength: Uint8Array;\n accountKeyIndexes: number[];\n encodedDataLength: Uint8Array;\n data: Uint8Array;\n }>([\n BufferLayout.u8('programIdIndex'),\n BufferLayout.blob(\n encodedAccountKeyIndexesLength.length,\n 'encodedAccountKeyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n instruction.accountKeyIndexes.length,\n 'accountKeyIndexes',\n ),\n BufferLayout.blob(encodedDataLength.length, 'encodedDataLength'),\n BufferLayout.blob(instruction.data.length, 'data'),\n ]);\n\n serializedLength += instructionLayout.encode(\n {\n programIdIndex: instruction.programIdIndex,\n encodedAccountKeyIndexesLength: new Uint8Array(\n encodedAccountKeyIndexesLength,\n ),\n accountKeyIndexes: instruction.accountKeyIndexes,\n encodedDataLength: new Uint8Array(encodedDataLength),\n data: instruction.data,\n },\n serializedInstructions,\n serializedLength,\n );\n }\n\n return serializedInstructions.slice(0, serializedLength);\n }\n\n private serializeAddressTableLookups(): Uint8Array {\n let serializedLength = 0;\n const serializedAddressTableLookups = new Uint8Array(PACKET_DATA_SIZE);\n for (const lookup of this.addressTableLookups) {\n const encodedWritableIndexesLength = Array();\n shortvec.encodeLength(\n encodedWritableIndexesLength,\n lookup.writableIndexes.length,\n );\n\n const encodedReadonlyIndexesLength = Array();\n shortvec.encodeLength(\n encodedReadonlyIndexesLength,\n lookup.readonlyIndexes.length,\n );\n\n const addressTableLookupLayout = BufferLayout.struct<{\n accountKey: Uint8Array;\n encodedWritableIndexesLength: Uint8Array;\n writableIndexes: number[];\n encodedReadonlyIndexesLength: Uint8Array;\n readonlyIndexes: number[];\n }>([\n Layout.publicKey('accountKey'),\n BufferLayout.blob(\n encodedWritableIndexesLength.length,\n 'encodedWritableIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.writableIndexes.length,\n 'writableIndexes',\n ),\n BufferLayout.blob(\n encodedReadonlyIndexesLength.length,\n 'encodedReadonlyIndexesLength',\n ),\n BufferLayout.seq(\n BufferLayout.u8(),\n lookup.readonlyIndexes.length,\n 'readonlyIndexes',\n ),\n ]);\n\n serializedLength += addressTableLookupLayout.encode(\n {\n accountKey: lookup.accountKey.toBytes(),\n encodedWritableIndexesLength: new Uint8Array(\n encodedWritableIndexesLength,\n ),\n writableIndexes: lookup.writableIndexes,\n encodedReadonlyIndexesLength: new Uint8Array(\n encodedReadonlyIndexesLength,\n ),\n readonlyIndexes: lookup.readonlyIndexes,\n },\n serializedAddressTableLookups,\n serializedLength,\n );\n }\n\n return serializedAddressTableLookups.slice(0, serializedLength);\n }\n\n static deserialize(serializedMessage: Uint8Array): MessageV0 {\n let byteArray = [...serializedMessage];\n\n const prefix = guardedShift(byteArray);\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n assert(\n prefix !== maskedPrefix,\n `Expected versioned message but received legacy message`,\n );\n\n const version = maskedPrefix;\n assert(\n version === 0,\n `Expected versioned message with version 0 but found version ${version}`,\n );\n\n const header: MessageHeader = {\n numRequiredSignatures: guardedShift(byteArray),\n numReadonlySignedAccounts: guardedShift(byteArray),\n numReadonlyUnsignedAccounts: guardedShift(byteArray),\n };\n\n const staticAccountKeys = [];\n const staticAccountKeysLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < staticAccountKeysLength; i++) {\n staticAccountKeys.push(\n new PublicKey(guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH)),\n );\n }\n\n const recentBlockhash = bs58.encode(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n\n const instructionCount = shortvec.decodeLength(byteArray);\n const compiledInstructions: MessageCompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = guardedShift(byteArray);\n const accountKeyIndexesLength = shortvec.decodeLength(byteArray);\n const accountKeyIndexes = guardedSplice(\n byteArray,\n 0,\n accountKeyIndexesLength,\n );\n const dataLength = shortvec.decodeLength(byteArray);\n const data = new Uint8Array(guardedSplice(byteArray, 0, dataLength));\n compiledInstructions.push({\n programIdIndex,\n accountKeyIndexes,\n data,\n });\n }\n\n const addressTableLookupsCount = shortvec.decodeLength(byteArray);\n const addressTableLookups: MessageAddressTableLookup[] = [];\n for (let i = 0; i < addressTableLookupsCount; i++) {\n const accountKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const writableIndexesLength = shortvec.decodeLength(byteArray);\n const writableIndexes = guardedSplice(\n byteArray,\n 0,\n writableIndexesLength,\n );\n const readonlyIndexesLength = shortvec.decodeLength(byteArray);\n const readonlyIndexes = guardedSplice(\n byteArray,\n 0,\n readonlyIndexesLength,\n );\n addressTableLookups.push({\n accountKey,\n writableIndexes,\n readonlyIndexes,\n });\n }\n\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash,\n compiledInstructions,\n addressTableLookups,\n });\n }\n}\n","import {VERSION_PREFIX_MASK} from '../transaction/constants';\nimport {Message} from './legacy';\nimport {MessageV0} from './v0';\n\nexport type VersionedMessage = Message | MessageV0;\n// eslint-disable-next-line no-redeclare\nexport const VersionedMessage = {\n deserializeMessageVersion(serializedMessage: Uint8Array): 'legacy' | number {\n const prefix = serializedMessage[0];\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n\n // if the highest bit of the prefix is not set, the message is not versioned\n if (maskedPrefix === prefix) {\n return 'legacy';\n }\n\n // the lower 7 bits of the prefix indicate the message version\n return maskedPrefix;\n },\n\n deserialize: (serializedMessage: Uint8Array): VersionedMessage => {\n const version =\n VersionedMessage.deserializeMessageVersion(serializedMessage);\n if (version === 'legacy') {\n return Message.from(serializedMessage);\n }\n\n if (version === 0) {\n return MessageV0.deserialize(serializedMessage);\n } else {\n throw new Error(\n `Transaction message version ${version} deserialization is not supported`,\n );\n }\n },\n};\n","import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n\nimport {PACKET_DATA_SIZE, SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport {Connection} from '../connection';\nimport {Message} from '../message';\nimport {PublicKey} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport invariant from '../utils/assert';\nimport type {Signer} from '../keypair';\nimport type {Blockhash} from '../blockhash';\nimport type {CompiledInstruction} from '../message';\nimport {sign, verify} from '../utils/ed25519';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\n/** @internal */\ntype MessageSignednessErrors = {\n invalid?: PublicKey[];\n missing?: PublicKey[];\n};\n\n/**\n * Transaction signature as base-58 encoded string\n */\nexport type TransactionSignature = string;\n\nexport const enum TransactionStatus {\n BLOCKHEIGHT_EXCEEDED,\n PROCESSED,\n TIMED_OUT,\n NONCE_INVALID,\n}\n\n/**\n * Default (empty) signature\n */\nconst DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);\n\n/**\n * Account metadata used to define instructions\n */\nexport type AccountMeta = {\n /** An account's public key */\n pubkey: PublicKey;\n /** True if an instruction requires a transaction signature matching `pubkey` */\n isSigner: boolean;\n /** True if the `pubkey` can be loaded as a read-write account. */\n isWritable: boolean;\n};\n\n/**\n * List of TransactionInstruction object fields that may be initialized at construction\n */\nexport type TransactionInstructionCtorFields = {\n keys: Array;\n programId: PublicKey;\n data?: Buffer;\n};\n\n/**\n * Configuration object for Transaction.serialize()\n */\nexport type SerializeConfig = {\n /** Require all transaction signatures be present (default: true) */\n requireAllSignatures?: boolean;\n /** Verify provided signatures (default: true) */\n verifySignatures?: boolean;\n};\n\n/**\n * @internal\n */\nexport interface TransactionInstructionJSON {\n keys: {\n pubkey: string;\n isSigner: boolean;\n isWritable: boolean;\n }[];\n programId: string;\n data: number[];\n}\n\n/**\n * Transaction Instruction class\n */\nexport class TransactionInstruction {\n /**\n * Public keys to include in this transaction\n * Boolean represents whether this pubkey needs to sign the transaction\n */\n keys: Array;\n\n /**\n * Program Id to execute\n */\n programId: PublicKey;\n\n /**\n * Program input\n */\n data: Buffer = Buffer.alloc(0);\n\n constructor(opts: TransactionInstructionCtorFields) {\n this.programId = opts.programId;\n this.keys = opts.keys;\n if (opts.data) {\n this.data = opts.data;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionInstructionJSON {\n return {\n keys: this.keys.map(({pubkey, isSigner, isWritable}) => ({\n pubkey: pubkey.toJSON(),\n isSigner,\n isWritable,\n })),\n programId: this.programId.toJSON(),\n data: [...this.data],\n };\n }\n}\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SignaturePubkeyPair = {\n signature: Buffer | null;\n publicKey: PublicKey;\n};\n\n/**\n * List of Transaction object fields that may be initialized at construction\n */\nexport type TransactionCtorFields_DEPRECATED = {\n /** Optional nonce information used for offline nonce'd transactions */\n nonceInfo?: NonceInformation | null;\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array;\n /** A recent blockhash */\n recentBlockhash?: Blockhash;\n};\n\n// For backward compatibility; an unfortunate consequence of being\n// forced to over-export types by the documentation generator.\n// See https://github.com/solana-labs/solana/pull/25820\nexport type TransactionCtorFields = TransactionCtorFields_DEPRECATED;\n\n/**\n * Blockhash-based transactions have a lifetime that are defined by\n * the blockhash they include. Any transaction whose blockhash is\n * too old will be rejected.\n */\nexport type TransactionBlockhashCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array;\n /** A recent blockhash */\n blockhash: Blockhash;\n /** the last block chain can advance to before tx is declared expired */\n lastValidBlockHeight: number;\n};\n\n/**\n * Use these options to construct a durable nonce transaction.\n */\nexport type TransactionNonceCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n minContextSlot: number;\n nonceInfo: NonceInformation;\n /** One or more signatures */\n signatures?: Array;\n};\n\n/**\n * Nonce information to be used to build an offline Transaction.\n */\nexport type NonceInformation = {\n /** The current blockhash stored in the nonce */\n nonce: Blockhash;\n /** AdvanceNonceAccount Instruction */\n nonceInstruction: TransactionInstruction;\n};\n\n/**\n * @internal\n */\nexport interface TransactionJSON {\n recentBlockhash: string | null;\n feePayer: string | null;\n nonceInfo: {\n nonce: string;\n nonceInstruction: TransactionInstructionJSON;\n } | null;\n instructions: TransactionInstructionJSON[];\n signers: string[];\n}\n\n/**\n * Transaction class\n */\nexport class Transaction {\n /**\n * Signatures for the transaction. Typically created by invoking the\n * `sign()` method\n */\n signatures: Array = [];\n\n /**\n * The first (payer) Transaction signature\n *\n * @returns {Buffer | null} Buffer of payer's signature\n */\n get signature(): Buffer | null {\n if (this.signatures.length > 0) {\n return this.signatures[0].signature;\n }\n return null;\n }\n\n /**\n * The transaction fee payer\n */\n feePayer?: PublicKey;\n\n /**\n * The instructions to atomically execute\n */\n instructions: Array = [];\n\n /**\n * A recent transaction id. Must be populated by the caller\n */\n recentBlockhash?: Blockhash;\n\n /**\n * the last block chain can advance to before tx is declared expired\n * */\n lastValidBlockHeight?: number;\n\n /**\n * Optional Nonce information. If populated, transaction will use a durable\n * Nonce hash instead of a recentBlockhash. Must be populated by the caller\n */\n nonceInfo?: NonceInformation;\n\n /**\n * If this is a nonce transaction this represents the minimum slot from which\n * to evaluate if the nonce has advanced when attempting to confirm the\n * transaction. This protects against a case where the transaction confirmation\n * logic loads the nonce account from an old slot and assumes the mismatch in\n * nonce value implies that the nonce has been advanced.\n */\n minNonceContextSlot?: number;\n\n /**\n * @internal\n */\n _message?: Message;\n\n /**\n * @internal\n */\n _json?: TransactionJSON;\n\n // Construct a transaction with a blockhash and lastValidBlockHeight\n constructor(opts?: TransactionBlockhashCtor);\n\n // Construct a transaction using a durable nonce\n constructor(opts?: TransactionNonceCtor);\n\n /**\n * @deprecated `TransactionCtorFields` has been deprecated and will be removed in a future version.\n * Please supply a `TransactionBlockhashCtor` instead.\n */\n constructor(opts?: TransactionCtorFields_DEPRECATED);\n\n /**\n * Construct an empty Transaction\n */\n constructor(\n opts?:\n | TransactionBlockhashCtor\n | TransactionNonceCtor\n | TransactionCtorFields_DEPRECATED,\n ) {\n if (!opts) {\n return;\n }\n if (opts.feePayer) {\n this.feePayer = opts.feePayer;\n }\n if (opts.signatures) {\n this.signatures = opts.signatures;\n }\n if (Object.prototype.hasOwnProperty.call(opts, 'nonceInfo')) {\n const {minContextSlot, nonceInfo} = opts as TransactionNonceCtor;\n this.minNonceContextSlot = minContextSlot;\n this.nonceInfo = nonceInfo;\n } else if (\n Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')\n ) {\n const {blockhash, lastValidBlockHeight} =\n opts as TransactionBlockhashCtor;\n this.recentBlockhash = blockhash;\n this.lastValidBlockHeight = lastValidBlockHeight;\n } else {\n const {recentBlockhash, nonceInfo} =\n opts as TransactionCtorFields_DEPRECATED;\n if (nonceInfo) {\n this.nonceInfo = nonceInfo;\n }\n this.recentBlockhash = recentBlockhash;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionJSON {\n return {\n recentBlockhash: this.recentBlockhash || null,\n feePayer: this.feePayer ? this.feePayer.toJSON() : null,\n nonceInfo: this.nonceInfo\n ? {\n nonce: this.nonceInfo.nonce,\n nonceInstruction: this.nonceInfo.nonceInstruction.toJSON(),\n }\n : null,\n instructions: this.instructions.map(instruction => instruction.toJSON()),\n signers: this.signatures.map(({publicKey}) => {\n return publicKey.toJSON();\n }),\n };\n }\n\n /**\n * Add one or more instructions to this Transaction\n *\n * @param {Array< Transaction | TransactionInstruction | TransactionInstructionCtorFields >} items - Instructions to add to the Transaction\n */\n add(\n ...items: Array<\n Transaction | TransactionInstruction | TransactionInstructionCtorFields\n >\n ): Transaction {\n if (items.length === 0) {\n throw new Error('No instructions');\n }\n\n items.forEach((item: any) => {\n if ('instructions' in item) {\n this.instructions = this.instructions.concat(item.instructions);\n } else if ('data' in item && 'programId' in item && 'keys' in item) {\n this.instructions.push(item);\n } else {\n this.instructions.push(new TransactionInstruction(item));\n }\n });\n return this;\n }\n\n /**\n * Compile transaction data\n */\n compileMessage(): Message {\n if (\n this._message &&\n JSON.stringify(this.toJSON()) === JSON.stringify(this._json)\n ) {\n return this._message;\n }\n\n let recentBlockhash;\n let instructions: TransactionInstruction[];\n if (this.nonceInfo) {\n recentBlockhash = this.nonceInfo.nonce;\n if (this.instructions[0] != this.nonceInfo.nonceInstruction) {\n instructions = [this.nonceInfo.nonceInstruction, ...this.instructions];\n } else {\n instructions = this.instructions;\n }\n } else {\n recentBlockhash = this.recentBlockhash;\n instructions = this.instructions;\n }\n if (!recentBlockhash) {\n throw new Error('Transaction recentBlockhash required');\n }\n\n if (instructions.length < 1) {\n console.warn('No instructions provided');\n }\n\n let feePayer: PublicKey;\n if (this.feePayer) {\n feePayer = this.feePayer;\n } else if (this.signatures.length > 0 && this.signatures[0].publicKey) {\n // Use implicit fee payer\n feePayer = this.signatures[0].publicKey;\n } else {\n throw new Error('Transaction fee payer required');\n }\n\n for (let i = 0; i < instructions.length; i++) {\n if (instructions[i].programId === undefined) {\n throw new Error(\n `Transaction instruction index ${i} has undefined program id`,\n );\n }\n }\n\n const programIds: string[] = [];\n const accountMetas: AccountMeta[] = [];\n instructions.forEach(instruction => {\n instruction.keys.forEach(accountMeta => {\n accountMetas.push({...accountMeta});\n });\n\n const programId = instruction.programId.toString();\n if (!programIds.includes(programId)) {\n programIds.push(programId);\n }\n });\n\n // Append programID account metas\n programIds.forEach(programId => {\n accountMetas.push({\n pubkey: new PublicKey(programId),\n isSigner: false,\n isWritable: false,\n });\n });\n\n // Cull duplicate account metas\n const uniqueMetas: AccountMeta[] = [];\n accountMetas.forEach(accountMeta => {\n const pubkeyString = accountMeta.pubkey.toString();\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.toString() === pubkeyString;\n });\n if (uniqueIndex > -1) {\n uniqueMetas[uniqueIndex].isWritable =\n uniqueMetas[uniqueIndex].isWritable || accountMeta.isWritable;\n uniqueMetas[uniqueIndex].isSigner =\n uniqueMetas[uniqueIndex].isSigner || accountMeta.isSigner;\n } else {\n uniqueMetas.push(accountMeta);\n }\n });\n\n // Sort. Prioritizing first by signer, then by writable\n uniqueMetas.sort(function (x, y) {\n if (x.isSigner !== y.isSigner) {\n // Signers always come before non-signers\n return x.isSigner ? -1 : 1;\n }\n if (x.isWritable !== y.isWritable) {\n // Writable accounts always come before read-only accounts\n return x.isWritable ? -1 : 1;\n }\n // Otherwise, sort by pubkey, stringwise.\n const options = {\n localeMatcher: 'best fit',\n usage: 'sort',\n sensitivity: 'variant',\n ignorePunctuation: false,\n numeric: false,\n caseFirst: 'lower',\n } as Intl.CollatorOptions;\n return x.pubkey\n .toBase58()\n .localeCompare(y.pubkey.toBase58(), 'en', options);\n });\n\n // Move fee payer to the front\n const feePayerIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(feePayer);\n });\n if (feePayerIndex > -1) {\n const [payerMeta] = uniqueMetas.splice(feePayerIndex, 1);\n payerMeta.isSigner = true;\n payerMeta.isWritable = true;\n uniqueMetas.unshift(payerMeta);\n } else {\n uniqueMetas.unshift({\n pubkey: feePayer,\n isSigner: true,\n isWritable: true,\n });\n }\n\n // Disallow unknown signers\n for (const signature of this.signatures) {\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(signature.publicKey);\n });\n if (uniqueIndex > -1) {\n if (!uniqueMetas[uniqueIndex].isSigner) {\n uniqueMetas[uniqueIndex].isSigner = true;\n console.warn(\n 'Transaction references a signature that is unnecessary, ' +\n 'only the fee payer and instruction signer accounts should sign a transaction. ' +\n 'This behavior is deprecated and will throw an error in the next major version release.',\n );\n }\n } else {\n throw new Error(`unknown signer: ${signature.publicKey.toString()}`);\n }\n }\n\n let numRequiredSignatures = 0;\n let numReadonlySignedAccounts = 0;\n let numReadonlyUnsignedAccounts = 0;\n\n // Split out signing from non-signing keys and count header values\n const signedKeys: string[] = [];\n const unsignedKeys: string[] = [];\n uniqueMetas.forEach(({pubkey, isSigner, isWritable}) => {\n if (isSigner) {\n signedKeys.push(pubkey.toString());\n numRequiredSignatures += 1;\n if (!isWritable) {\n numReadonlySignedAccounts += 1;\n }\n } else {\n unsignedKeys.push(pubkey.toString());\n if (!isWritable) {\n numReadonlyUnsignedAccounts += 1;\n }\n }\n });\n\n const accountKeys = signedKeys.concat(unsignedKeys);\n const compiledInstructions: CompiledInstruction[] = instructions.map(\n instruction => {\n const {data, programId} = instruction;\n return {\n programIdIndex: accountKeys.indexOf(programId.toString()),\n accounts: instruction.keys.map(meta =>\n accountKeys.indexOf(meta.pubkey.toString()),\n ),\n data: bs58.encode(data),\n };\n },\n );\n\n compiledInstructions.forEach(instruction => {\n invariant(instruction.programIdIndex >= 0);\n instruction.accounts.forEach(keyIndex => invariant(keyIndex >= 0));\n });\n\n return new Message({\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n accountKeys,\n recentBlockhash,\n instructions: compiledInstructions,\n });\n }\n\n /**\n * @internal\n */\n _compile(): Message {\n const message = this.compileMessage();\n const signedKeys = message.accountKeys.slice(\n 0,\n message.header.numRequiredSignatures,\n );\n\n if (this.signatures.length === signedKeys.length) {\n const valid = this.signatures.every((pair, index) => {\n return signedKeys[index].equals(pair.publicKey);\n });\n\n if (valid) return message;\n }\n\n this.signatures = signedKeys.map(publicKey => ({\n signature: null,\n publicKey,\n }));\n\n return message;\n }\n\n /**\n * Get a buffer of the Transaction data that need to be covered by signatures\n */\n serializeMessage(): Buffer {\n return this._compile().serialize();\n }\n\n /**\n * Get the estimated fee associated with a transaction\n *\n * @param {Connection} connection Connection to RPC Endpoint.\n *\n * @returns {Promise} The estimated fee for the transaction\n */\n async getEstimatedFee(connection: Connection): Promise {\n return (await connection.getFeeForMessage(this.compileMessage())).value;\n }\n\n /**\n * Specify the public keys which will be used to sign the Transaction.\n * The first signer will be used as the transaction fee payer account.\n *\n * Signatures can be added with either `partialSign` or `addSignature`\n *\n * @deprecated Deprecated since v0.84.0. Only the fee payer needs to be\n * specified and it can be set in the Transaction constructor or with the\n * `feePayer` property.\n */\n setSigners(...signers: Array) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n const seen = new Set();\n this.signatures = signers\n .filter(publicKey => {\n const key = publicKey.toString();\n if (seen.has(key)) {\n return false;\n } else {\n seen.add(key);\n return true;\n }\n })\n .map(publicKey => ({signature: null, publicKey}));\n }\n\n /**\n * Sign the Transaction with the specified signers. Multiple signatures may\n * be applied to a Transaction. The first signature is considered \"primary\"\n * and is used identify and confirm transactions.\n *\n * If the Transaction `feePayer` is not set, the first signer will be used\n * as the transaction fee payer account.\n *\n * Transaction fields should not be modified after the first call to `sign`,\n * as doing so may invalidate the signature and cause the Transaction to be\n * rejected.\n *\n * The Transaction must be assigned a valid `recentBlockhash` before invoking this method\n *\n * @param {Array} signers Array of signers that will sign the transaction\n */\n sign(...signers: Array) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n this.signatures = uniqueSigners.map(signer => ({\n signature: null,\n publicKey: signer.publicKey,\n }));\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * Partially sign a transaction with the specified accounts. All accounts must\n * correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * All the caveats from the `sign` method apply to `partialSign`\n *\n * @param {Array} signers Array of signers that will sign the transaction\n */\n partialSign(...signers: Array) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * @internal\n */\n _partialSign(message: Message, ...signers: Array) {\n const signData = message.serialize();\n signers.forEach(signer => {\n const signature = sign(signData, signer.secretKey);\n this._addSignature(signer.publicKey, toBuffer(signature));\n });\n }\n\n /**\n * Add an externally created signature to a transaction. The public key\n * must correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * @param {PublicKey} pubkey Public key that will be added to the transaction.\n * @param {Buffer} signature An externally created signature to add to the transaction.\n */\n addSignature(pubkey: PublicKey, signature: Buffer) {\n this._compile(); // Ensure signatures array is populated\n this._addSignature(pubkey, signature);\n }\n\n /**\n * @internal\n */\n _addSignature(pubkey: PublicKey, signature: Buffer) {\n invariant(signature.length === 64);\n\n const index = this.signatures.findIndex(sigpair =>\n pubkey.equals(sigpair.publicKey),\n );\n if (index < 0) {\n throw new Error(`unknown signer: ${pubkey.toString()}`);\n }\n\n this.signatures[index].signature = Buffer.from(signature);\n }\n\n /**\n * Verify signatures of a Transaction\n * Optional parameter specifies if we're expecting a fully signed Transaction or a partially signed one.\n * If no boolean is provided, we expect a fully signed Transaction by default.\n *\n * @param {boolean} [requireAllSignatures=true] Require a fully signed Transaction\n */\n verifySignatures(requireAllSignatures: boolean = true): boolean {\n const signatureErrors = this._getMessageSignednessErrors(\n this.serializeMessage(),\n requireAllSignatures,\n );\n return !signatureErrors;\n }\n\n /**\n * @internal\n */\n _getMessageSignednessErrors(\n message: Uint8Array,\n requireAllSignatures: boolean,\n ): MessageSignednessErrors | undefined {\n const errors: MessageSignednessErrors = {};\n for (const {signature, publicKey} of this.signatures) {\n if (signature === null) {\n if (requireAllSignatures) {\n (errors.missing ||= []).push(publicKey);\n }\n } else {\n if (!verify(signature, message, publicKey.toBytes())) {\n (errors.invalid ||= []).push(publicKey);\n }\n }\n }\n return errors.invalid || errors.missing ? errors : undefined;\n }\n\n /**\n * Serialize the Transaction in the wire format.\n *\n * @param {Buffer} [config] Config of transaction.\n *\n * @returns {Buffer} Signature of transaction in wire format.\n */\n serialize(config?: SerializeConfig): Buffer {\n const {requireAllSignatures, verifySignatures} = Object.assign(\n {requireAllSignatures: true, verifySignatures: true},\n config,\n );\n\n const signData = this.serializeMessage();\n if (verifySignatures) {\n const sigErrors = this._getMessageSignednessErrors(\n signData,\n requireAllSignatures,\n );\n if (sigErrors) {\n let errorMessage = 'Signature verification failed.';\n if (sigErrors.invalid) {\n errorMessage += `\\nInvalid signature for public key${\n sigErrors.invalid.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.invalid.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n if (sigErrors.missing) {\n errorMessage += `\\nMissing signature for public key${\n sigErrors.missing.length === 1 ? '' : '(s)'\n } [\\`${sigErrors.missing.map(p => p.toBase58()).join('`, `')}\\`].`;\n }\n throw new Error(errorMessage);\n }\n }\n\n return this._serialize(signData);\n }\n\n /**\n * @internal\n */\n _serialize(signData: Buffer): Buffer {\n const {signatures} = this;\n const signatureCount: number[] = [];\n shortvec.encodeLength(signatureCount, signatures.length);\n const transactionLength =\n signatureCount.length + signatures.length * 64 + signData.length;\n const wireTransaction = Buffer.alloc(transactionLength);\n invariant(signatures.length < 256);\n Buffer.from(signatureCount).copy(wireTransaction, 0);\n signatures.forEach(({signature}, index) => {\n if (signature !== null) {\n invariant(signature.length === 64, `signature has invalid length`);\n Buffer.from(signature).copy(\n wireTransaction,\n signatureCount.length + index * 64,\n );\n }\n });\n signData.copy(\n wireTransaction,\n signatureCount.length + signatures.length * 64,\n );\n invariant(\n wireTransaction.length <= PACKET_DATA_SIZE,\n `Transaction too large: ${wireTransaction.length} > ${PACKET_DATA_SIZE}`,\n );\n return wireTransaction;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get keys(): Array {\n invariant(this.instructions.length === 1);\n return this.instructions[0].keys.map(keyObj => keyObj.pubkey);\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get programId(): PublicKey {\n invariant(this.instructions.length === 1);\n return this.instructions[0].programId;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get data(): Buffer {\n invariant(this.instructions.length === 1);\n return this.instructions[0].data;\n }\n\n /**\n * Parse a wire transaction into a Transaction object.\n *\n * @param {Buffer | Uint8Array | Array} buffer Signature of wire Transaction\n *\n * @returns {Transaction} Transaction associated with the signature\n */\n static from(buffer: Buffer | Uint8Array | Array): Transaction {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const signatureCount = shortvec.decodeLength(byteArray);\n let signatures = [];\n for (let i = 0; i < signatureCount; i++) {\n const signature = guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES);\n signatures.push(bs58.encode(Buffer.from(signature)));\n }\n\n return Transaction.populate(Message.from(byteArray), signatures);\n }\n\n /**\n * Populate Transaction object from message and signatures\n *\n * @param {Message} message Message of transaction\n * @param {Array} signatures List of signatures to assign to the transaction\n *\n * @returns {Transaction} The populated Transaction\n */\n static populate(\n message: Message,\n signatures: Array = [],\n ): Transaction {\n const transaction = new Transaction();\n transaction.recentBlockhash = message.recentBlockhash;\n if (message.header.numRequiredSignatures > 0) {\n transaction.feePayer = message.accountKeys[0];\n }\n signatures.forEach((signature, index) => {\n const sigPubkeyPair = {\n signature:\n signature == bs58.encode(DEFAULT_SIGNATURE)\n ? null\n : bs58.decode(signature),\n publicKey: message.accountKeys[index],\n };\n transaction.signatures.push(sigPubkeyPair);\n });\n\n message.instructions.forEach(instruction => {\n const keys = instruction.accounts.map(account => {\n const pubkey = message.accountKeys[account];\n return {\n pubkey,\n isSigner:\n transaction.signatures.some(\n keyObj => keyObj.publicKey.toString() === pubkey.toString(),\n ) || message.isAccountSigner(account),\n isWritable: message.isAccountWritable(account),\n };\n });\n\n transaction.instructions.push(\n new TransactionInstruction({\n keys,\n programId: message.accountKeys[instruction.programIdIndex],\n data: bs58.decode(instruction.data),\n }),\n );\n });\n\n transaction._message = message;\n transaction._json = transaction.toJSON();\n\n return transaction;\n }\n}\n","import {AccountKeysFromLookups} from '../message/account-keys';\nimport assert from '../utils/assert';\nimport {toBuffer} from '../utils/to-buffer';\nimport {Blockhash} from '../blockhash';\nimport {Message, MessageV0, VersionedMessage} from '../message';\nimport {PublicKey} from '../publickey';\nimport {AddressLookupTableAccount} from '../programs';\nimport {AccountMeta, TransactionInstruction} from './legacy';\n\nexport type TransactionMessageArgs = {\n payerKey: PublicKey;\n instructions: Array;\n recentBlockhash: Blockhash;\n};\n\nexport type DecompileArgs =\n | {\n accountKeysFromLookups: AccountKeysFromLookups;\n }\n | {\n addressLookupTableAccounts: AddressLookupTableAccount[];\n };\n\nexport class TransactionMessage {\n payerKey: PublicKey;\n instructions: Array;\n recentBlockhash: Blockhash;\n\n constructor(args: TransactionMessageArgs) {\n this.payerKey = args.payerKey;\n this.instructions = args.instructions;\n this.recentBlockhash = args.recentBlockhash;\n }\n\n static decompile(\n message: VersionedMessage,\n args?: DecompileArgs,\n ): TransactionMessage {\n const {header, compiledInstructions, recentBlockhash} = message;\n\n const {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n } = header;\n\n const numWritableSignedAccounts =\n numRequiredSignatures - numReadonlySignedAccounts;\n assert(numWritableSignedAccounts > 0, 'Message header is invalid');\n\n const numWritableUnsignedAccounts =\n message.staticAccountKeys.length -\n numRequiredSignatures -\n numReadonlyUnsignedAccounts;\n assert(numWritableUnsignedAccounts >= 0, 'Message header is invalid');\n\n const accountKeys = message.getAccountKeys(args);\n const payerKey = accountKeys.get(0);\n if (payerKey === undefined) {\n throw new Error(\n 'Failed to decompile message because no account keys were found',\n );\n }\n\n const instructions: TransactionInstruction[] = [];\n for (const compiledIx of compiledInstructions) {\n const keys: AccountMeta[] = [];\n\n for (const keyIndex of compiledIx.accountKeyIndexes) {\n const pubkey = accountKeys.get(keyIndex);\n if (pubkey === undefined) {\n throw new Error(\n `Failed to find key for account key index ${keyIndex}`,\n );\n }\n\n const isSigner = keyIndex < numRequiredSignatures;\n\n let isWritable;\n if (isSigner) {\n isWritable = keyIndex < numWritableSignedAccounts;\n } else if (keyIndex < accountKeys.staticAccountKeys.length) {\n isWritable =\n keyIndex - numRequiredSignatures < numWritableUnsignedAccounts;\n } else {\n isWritable =\n keyIndex - accountKeys.staticAccountKeys.length <\n // accountKeysFromLookups cannot be undefined because we already found a pubkey for this index above\n accountKeys.accountKeysFromLookups!.writable.length;\n }\n\n keys.push({\n pubkey,\n isSigner: keyIndex < header.numRequiredSignatures,\n isWritable,\n });\n }\n\n const programId = accountKeys.get(compiledIx.programIdIndex);\n if (programId === undefined) {\n throw new Error(\n `Failed to find program id for program id index ${compiledIx.programIdIndex}`,\n );\n }\n\n instructions.push(\n new TransactionInstruction({\n programId,\n data: toBuffer(compiledIx.data),\n keys,\n }),\n );\n }\n\n return new TransactionMessage({\n payerKey,\n instructions,\n recentBlockhash,\n });\n }\n\n compileToLegacyMessage(): Message {\n return Message.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n });\n }\n\n compileToV0Message(\n addressLookupTableAccounts?: AddressLookupTableAccount[],\n ): MessageV0 {\n return MessageV0.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n addressLookupTableAccounts,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {Signer} from '../keypair';\nimport assert from '../utils/assert';\nimport {VersionedMessage} from '../message/versioned';\nimport {SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport * as Layout from '../layout';\nimport {sign} from '../utils/ed25519';\nimport {PublicKey} from '../publickey';\nimport {guardedSplice} from '../utils/guarded-array-utils';\n\nexport type TransactionVersion = 'legacy' | 0;\n\n/**\n * Versioned transaction class\n */\nexport class VersionedTransaction {\n signatures: Array;\n message: VersionedMessage;\n\n get version(): TransactionVersion {\n return this.message.version;\n }\n\n constructor(message: VersionedMessage, signatures?: Array) {\n if (signatures !== undefined) {\n assert(\n signatures.length === message.header.numRequiredSignatures,\n 'Expected signatures length to be equal to the number of required signatures',\n );\n this.signatures = signatures;\n } else {\n const defaultSignatures = [];\n for (let i = 0; i < message.header.numRequiredSignatures; i++) {\n defaultSignatures.push(new Uint8Array(SIGNATURE_LENGTH_IN_BYTES));\n }\n this.signatures = defaultSignatures;\n }\n this.message = message;\n }\n\n serialize(): Uint8Array {\n const serializedMessage = this.message.serialize();\n\n const encodedSignaturesLength = Array();\n shortvec.encodeLength(encodedSignaturesLength, this.signatures.length);\n\n const transactionLayout = BufferLayout.struct<{\n encodedSignaturesLength: Uint8Array;\n signatures: Array;\n serializedMessage: Uint8Array;\n }>([\n BufferLayout.blob(\n encodedSignaturesLength.length,\n 'encodedSignaturesLength',\n ),\n BufferLayout.seq(\n Layout.signature(),\n this.signatures.length,\n 'signatures',\n ),\n BufferLayout.blob(serializedMessage.length, 'serializedMessage'),\n ]);\n\n const serializedTransaction = new Uint8Array(2048);\n const serializedTransactionLength = transactionLayout.encode(\n {\n encodedSignaturesLength: new Uint8Array(encodedSignaturesLength),\n signatures: this.signatures,\n serializedMessage,\n },\n serializedTransaction,\n );\n\n return serializedTransaction.slice(0, serializedTransactionLength);\n }\n\n static deserialize(serializedTransaction: Uint8Array): VersionedTransaction {\n let byteArray = [...serializedTransaction];\n\n const signatures = [];\n const signaturesLength = shortvec.decodeLength(byteArray);\n for (let i = 0; i < signaturesLength; i++) {\n signatures.push(\n new Uint8Array(guardedSplice(byteArray, 0, SIGNATURE_LENGTH_IN_BYTES)),\n );\n }\n\n const message = VersionedMessage.deserialize(new Uint8Array(byteArray));\n return new VersionedTransaction(message, signatures);\n }\n\n sign(signers: Array) {\n const messageData = this.message.serialize();\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n for (const signer of signers) {\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(signer.publicKey),\n );\n assert(\n signerIndex >= 0,\n `Cannot sign with non signer key ${signer.publicKey.toBase58()}`,\n );\n this.signatures[signerIndex] = sign(messageData, signer.secretKey);\n }\n }\n\n addSignature(publicKey: PublicKey, signature: Uint8Array) {\n assert(signature.byteLength === 64, 'Signature must be 64 bytes long');\n const signerPubkeys = this.message.staticAccountKeys.slice(\n 0,\n this.message.header.numRequiredSignatures,\n );\n const signerIndex = signerPubkeys.findIndex(pubkey =>\n pubkey.equals(publicKey),\n );\n assert(\n signerIndex >= 0,\n `Can not add signature; \\`${publicKey.toBase58()}\\` is not required to sign this transaction`,\n );\n this.signatures[signerIndex] = signature;\n }\n}\n","// TODO: These constants should be removed in favor of reading them out of a\n// Syscall account\n\n/**\n * @internal\n */\nexport const NUM_TICKS_PER_SECOND = 160;\n\n/**\n * @internal\n */\nexport const DEFAULT_TICKS_PER_SLOT = 64;\n\n/**\n * @internal\n */\nexport const NUM_SLOTS_PER_SECOND =\n NUM_TICKS_PER_SECOND / DEFAULT_TICKS_PER_SLOT;\n\n/**\n * @internal\n */\nexport const MS_PER_SLOT = 1000 / NUM_SLOTS_PER_SECOND;\n","import {PublicKey} from './publickey';\n\nexport const SYSVAR_CLOCK_PUBKEY = new PublicKey(\n 'SysvarC1ock11111111111111111111111111111111',\n);\n\nexport const SYSVAR_EPOCH_SCHEDULE_PUBKEY = new PublicKey(\n 'SysvarEpochSchedu1e111111111111111111111111',\n);\n\nexport const SYSVAR_INSTRUCTIONS_PUBKEY = new PublicKey(\n 'Sysvar1nstructions1111111111111111111111111',\n);\n\nexport const SYSVAR_RECENT_BLOCKHASHES_PUBKEY = new PublicKey(\n 'SysvarRecentB1ockHashes11111111111111111111',\n);\n\nexport const SYSVAR_RENT_PUBKEY = new PublicKey(\n 'SysvarRent111111111111111111111111111111111',\n);\n\nexport const SYSVAR_REWARDS_PUBKEY = new PublicKey(\n 'SysvarRewards111111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HASHES_PUBKEY = new PublicKey(\n 'SysvarS1otHashes111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HISTORY_PUBKEY = new PublicKey(\n 'SysvarS1otHistory11111111111111111111111111',\n);\n\nexport const SYSVAR_STAKE_HISTORY_PUBKEY = new PublicKey(\n 'SysvarStakeHistory1111111111111111111111111',\n);\n","import {Connection} from './connection';\nimport {TransactionSignature} from './transaction';\n\nexport class SendTransactionError extends Error {\n private signature: TransactionSignature;\n private transactionMessage: string;\n private transactionLogs: string[] | Promise | undefined;\n\n constructor({\n action,\n signature,\n transactionMessage,\n logs,\n }: {\n action: 'send' | 'simulate';\n signature: TransactionSignature;\n transactionMessage: string;\n logs?: string[];\n }) {\n const maybeLogsOutput = logs\n ? `Logs: \\n${JSON.stringify(logs.slice(-10), null, 2)}. `\n : '';\n const guideText =\n '\\nCatch the `SendTransactionError` and call `getLogs()` on it for full details.';\n let message: string;\n switch (action) {\n case 'send':\n message =\n `Transaction ${signature} resulted in an error. \\n` +\n `${transactionMessage}. ` +\n maybeLogsOutput +\n guideText;\n break;\n case 'simulate':\n message =\n `Simulation failed. \\nMessage: ${transactionMessage}. \\n` +\n maybeLogsOutput +\n guideText;\n break;\n default: {\n message = `Unknown action '${((a: never) => a)(action)}'`;\n }\n }\n super(message);\n\n this.signature = signature;\n this.transactionMessage = transactionMessage;\n this.transactionLogs = logs ? logs : undefined;\n }\n\n get transactionError(): {message: string; logs?: string[]} {\n return {\n message: this.transactionMessage,\n logs: Array.isArray(this.transactionLogs)\n ? this.transactionLogs\n : undefined,\n };\n }\n\n /* @deprecated Use `await getLogs()` instead */\n get logs(): string[] | undefined {\n const cachedLogs = this.transactionLogs;\n if (\n cachedLogs != null &&\n typeof cachedLogs === 'object' &&\n 'then' in cachedLogs\n ) {\n return undefined;\n }\n return cachedLogs;\n }\n\n async getLogs(connection: Connection): Promise {\n if (!Array.isArray(this.transactionLogs)) {\n this.transactionLogs = new Promise((resolve, reject) => {\n connection\n .getTransaction(this.signature)\n .then(tx => {\n if (tx && tx.meta && tx.meta.logMessages) {\n const logs = tx.meta.logMessages;\n this.transactionLogs = logs;\n resolve(logs);\n } else {\n reject(new Error('Log messages not found'));\n }\n })\n .catch(reject);\n });\n }\n return await this.transactionLogs;\n }\n}\n\n// Keep in sync with client/src/rpc_custom_errors.rs\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nexport const SolanaJSONRPCErrorCode = {\n JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP: -32001,\n JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE: -32002,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE: -32003,\n JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE: -32004,\n JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY: -32005,\n JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: -32006,\n JSON_RPC_SERVER_ERROR_SLOT_SKIPPED: -32007,\n JSON_RPC_SERVER_ERROR_NO_SNAPSHOT: -32008,\n JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: -32009,\n JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: -32010,\n JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE: -32011,\n JSON_RPC_SCAN_ERROR: -32012,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH: -32013,\n JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: -32014,\n JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: -32015,\n JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED: -32016,\n} as const;\nexport type SolanaJSONRPCErrorCodeEnum =\n (typeof SolanaJSONRPCErrorCode)[keyof typeof SolanaJSONRPCErrorCode];\n\nexport class SolanaJSONRPCError extends Error {\n code: SolanaJSONRPCErrorCodeEnum | unknown;\n data?: any;\n constructor(\n {\n code,\n message,\n data,\n }: Readonly<{code: unknown; message: string; data?: any}>,\n customMessage?: string,\n ) {\n super(customMessage != null ? `${customMessage}: ${message}` : message);\n this.code = code;\n this.data = data;\n this.name = 'SolanaJSONRPCError';\n }\n}\n","import {Connection, SignatureResult} from '../connection';\nimport {Transaction} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport type {Signer} from '../keypair';\nimport type {TransactionSignature} from '../transaction';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Sign, send and confirm a transaction.\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Transaction} transaction\n * @param {Array} signers\n * @param {ConfirmOptions} [options]\n * @returns {Promise}\n */\nexport async function sendAndConfirmTransaction(\n connection: Connection,\n transaction: Transaction,\n signers: Array,\n options?: ConfirmOptions &\n Readonly<{\n // A signal that, when aborted, cancels any outstanding transaction confirmation operations\n abortSignal?: AbortSignal;\n }>,\n): Promise {\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n maxRetries: options.maxRetries,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendTransaction(\n transaction,\n signers,\n sendOptions,\n );\n\n let status: SignatureResult;\n if (\n transaction.recentBlockhash != null &&\n transaction.lastValidBlockHeight != null\n ) {\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n signature: signature,\n blockhash: transaction.recentBlockhash,\n lastValidBlockHeight: transaction.lastValidBlockHeight,\n },\n options && options.commitment,\n )\n ).value;\n } else if (\n transaction.minNonceContextSlot != null &&\n transaction.nonceInfo != null\n ) {\n const {nonceInstruction} = transaction.nonceInfo;\n const nonceAccountPubkey = nonceInstruction.keys[0].pubkey;\n status = (\n await connection.confirmTransaction(\n {\n abortSignal: options?.abortSignal,\n minContextSlot: transaction.minNonceContextSlot,\n nonceAccountPubkey,\n nonceValue: transaction.nonceInfo.nonce,\n signature,\n },\n options && options.commitment,\n )\n ).value;\n } else {\n if (options?.abortSignal != null) {\n console.warn(\n 'sendAndConfirmTransaction(): A transaction with a deprecated confirmation strategy was ' +\n 'supplied along with an `abortSignal`. Only transactions having `lastValidBlockHeight` ' +\n 'or a combination of `nonceInfo` and `minNonceContextSlot` are abortable.',\n );\n }\n status = (\n await connection.confirmTransaction(\n signature,\n options && options.commitment,\n )\n ).value;\n }\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: 'send',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","// zzz\nexport function sleep(ms: number): Promise {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from './layout';\n\nexport interface IInstructionInputData {\n readonly instruction: number;\n}\n\n/**\n * @internal\n */\nexport type InstructionType = {\n /** The Instruction index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout;\n};\n\n/**\n * Populate a buffer of instruction data using an InstructionType\n * @internal\n */\nexport function encodeData(\n type: InstructionType,\n fields?: any,\n): Buffer {\n const allocLength =\n type.layout.span >= 0 ? type.layout.span : Layout.getAlloc(type, fields);\n const data = Buffer.alloc(allocLength);\n const layoutFields = Object.assign({instruction: type.index}, fields);\n type.layout.encode(layoutFields, data);\n return data;\n}\n\n/**\n * Decode instruction data buffer using an InstructionType\n * @internal\n */\nexport function decodeData(\n type: InstructionType,\n buffer: Buffer,\n): TInputData {\n let data: TInputData;\n try {\n data = type.layout.decode(buffer);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (data.instruction !== type.index) {\n throw new Error(\n `invalid instruction; instruction index mismatch ${data.instruction} != ${type.index}`,\n );\n }\n\n return data;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\n/**\n * https://github.com/solana-labs/solana/blob/90bedd7e067b5b8f3ddbb45da00a4e9cabb22c62/sdk/src/fee_calculator.rs#L7-L11\n *\n * @internal\n */\nexport const FeeCalculatorLayout = BufferLayout.nu64('lamportsPerSignature');\n\n/**\n * Calculator for transaction fees.\n *\n * @deprecated Deprecated since Solana v1.8.0.\n */\nexport interface FeeCalculator {\n /** Cost in lamports to validate a signature. */\n lamportsPerSignature: number;\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport type {FeeCalculator} from './fee-calculator';\nimport {FeeCalculatorLayout} from './fee-calculator';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * See https://github.com/solana-labs/solana/blob/0ea2843ec9cdc517572b8e62c959f41b55cf4453/sdk/src/nonce_state.rs#L29-L32\n *\n * @internal\n */\nconst NonceAccountLayout = BufferLayout.struct<\n Readonly<{\n authorizedPubkey: Uint8Array;\n feeCalculator: Readonly<{\n lamportsPerSignature: number;\n }>;\n nonce: Uint8Array;\n state: number;\n version: number;\n }>\n>([\n BufferLayout.u32('version'),\n BufferLayout.u32('state'),\n Layout.publicKey('authorizedPubkey'),\n Layout.publicKey('nonce'),\n BufferLayout.struct>(\n [FeeCalculatorLayout],\n 'feeCalculator',\n ),\n]);\n\nexport const NONCE_ACCOUNT_LENGTH = NonceAccountLayout.span;\n\n/**\n * A durable nonce is a 32 byte value encoded as a base58 string.\n */\nexport type DurableNonce = string;\n\ntype NonceAccountArgs = {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n};\n\n/**\n * NonceAccount class\n */\nexport class NonceAccount {\n authorizedPubkey: PublicKey;\n nonce: DurableNonce;\n feeCalculator: FeeCalculator;\n\n /**\n * @internal\n */\n constructor(args: NonceAccountArgs) {\n this.authorizedPubkey = args.authorizedPubkey;\n this.nonce = args.nonce;\n this.feeCalculator = args.feeCalculator;\n }\n\n /**\n * Deserialize NonceAccount from the account data.\n *\n * @param buffer account data\n * @return NonceAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array,\n ): NonceAccount {\n const nonceAccount = NonceAccountLayout.decode(toBuffer(buffer), 0);\n return new NonceAccount({\n authorizedPubkey: new PublicKey(nonceAccount.authorizedPubkey),\n nonce: new PublicKey(nonceAccount.nonce).toString(),\n feeCalculator: nonceAccount.feeCalculator,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {blob, Layout} from '@solana/buffer-layout';\nimport {toBigIntLE, toBufferLE} from 'bigint-buffer';\n\ninterface EncodeDecode {\n decode(buffer: Buffer, offset?: number): T;\n encode(src: T, buffer: Buffer, offset?: number): number;\n}\n\nconst encodeDecode = (layout: Layout): EncodeDecode => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return {decode, encode};\n};\n\nconst bigInt =\n (length: number) =>\n (property?: string): Layout => {\n const layout = blob(length, property);\n const {encode, decode} = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout as Layout;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const u64 = bigInt(8);\n\nexport const u128 = bigInt(16);\n\nexport const u192 = bigInt(24);\n\nexport const u256 = bigInt(32);\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {NONCE_ACCOUNT_LENGTH} from '../nonce-account';\nimport {PublicKey} from '../publickey';\nimport {SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\nimport {u64} from '../utils/bigint';\n\n/**\n * Create account system transaction params\n */\nexport type CreateAccountParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account */\n newAccountPubkey: PublicKey;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Transfer system transaction params\n */\nexport type TransferParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n};\n\n/**\n * Assign system transaction params\n */\nexport type AssignParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Create account with seed system transaction params\n */\nexport type CreateAccountWithSeedParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account. Must be pre-calculated with PublicKey.createWithSeed() */\n newAccountPubkey: PublicKey;\n /** Base public key to use to derive the address of the created account. Must be the same as the base key used to create `newAccountPubkey` */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the created account. Must be the same as the seed used to create `newAccountPubkey` */\n seed: string;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Create nonce account system transaction params\n */\nexport type CreateNonceAccountParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n};\n\n/**\n * Create nonce account with seed system transaction params\n */\nexport type CreateNonceAccountWithSeedParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n /** Base public key to use to derive the address of the nonce account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the nonce account */\n seed: string;\n};\n\n/**\n * Initialize nonce account system instruction params\n */\nexport type InitializeNonceParams = {\n /** Nonce account which will be initialized */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the initialized nonce account */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Advance nonce account system instruction params\n */\nexport type AdvanceNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Withdraw nonce account system transaction params\n */\nexport type WithdrawNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key of the account which will receive the withdrawn nonce account balance */\n toPubkey: PublicKey;\n /** Amount of lamports to withdraw from the nonce account */\n lamports: number;\n};\n\n/**\n * Authorize nonce account system transaction params\n */\nexport type AuthorizeNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the current nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key to set as the new nonce authority */\n newAuthorizedPubkey: PublicKey;\n};\n\n/**\n * Allocate account system transaction params\n */\nexport type AllocateParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Amount of space in bytes to allocate */\n space: number;\n};\n\n/**\n * Allocate account with seed system transaction params\n */\nexport type AllocateWithSeedParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the allocated account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the allocated account */\n seed: string;\n /** Amount of space in bytes to allocate */\n space: number;\n /** Public key of the program to assign as the owner of the allocated account */\n programId: PublicKey;\n};\n\n/**\n * Assign account with seed system transaction params\n */\nexport type AssignWithSeedParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the assigned account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the assigned account */\n seed: string;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Transfer with seed system transaction params\n */\nexport type TransferWithSeedParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/** Decoded transfer system transaction instruction */\nexport type DecodedTransferInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n};\n\n/** Decoded transferWithSeed system transaction instruction */\nexport type DecodedTransferWithSeedInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/**\n * System Instruction class\n */\nexport class SystemInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a system instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): SystemInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: SystemInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(SYSTEM_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as SystemInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a SystemInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a create account system instruction and retrieve the instruction params.\n */\n static decodeCreateAccount(\n instruction: TransactionInstruction,\n ): CreateAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Create,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a transfer system instruction and retrieve the instruction params.\n */\n static decodeTransfer(\n instruction: TransactionInstruction,\n ): DecodedTransferInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Transfer,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a transfer with seed system instruction and retrieve the instruction params.\n */\n static decodeTransferWithSeed(\n instruction: TransactionInstruction,\n ): DecodedTransferWithSeedInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n basePubkey: instruction.keys[1].pubkey,\n toPubkey: instruction.keys[2].pubkey,\n lamports,\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an allocate system instruction and retrieve the instruction params.\n */\n static decodeAllocate(instruction: TransactionInstruction): AllocateParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {space} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Allocate,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n space,\n };\n }\n\n /**\n * Decode an allocate with seed system instruction and retrieve the instruction params.\n */\n static decodeAllocateWithSeed(\n instruction: TransactionInstruction,\n ): AllocateWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign system instruction and retrieve the instruction params.\n */\n static decodeAssign(instruction: TransactionInstruction): AssignParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Assign,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign with seed system instruction and retrieve the instruction params.\n */\n static decodeAssignWithSeed(\n instruction: TransactionInstruction,\n ): AssignWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a create account with seed system instruction and retrieve the instruction params.\n */\n static decodeCreateWithSeed(\n instruction: TransactionInstruction,\n ): CreateAccountWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {base, seed, lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a nonce initialize system instruction and retrieve the instruction params.\n */\n static decodeNonceInitialize(\n instruction: TransactionInstruction,\n ): InitializeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * Decode a nonce advance system instruction and retrieve the instruction params.\n */\n static decodeNonceAdvance(\n instruction: TransactionInstruction,\n ): AdvanceNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * Decode a nonce withdraw system instruction and retrieve the instruction params.\n */\n static decodeNonceWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a nonce authorize system instruction and retrieve the instruction params.\n */\n static decodeNonceAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[1].pubkey,\n newAuthorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(SystemProgram.programId)) {\n throw new Error('invalid instruction; programId is not SystemProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid SystemInstructionType's\n */\nexport type SystemInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof SystemInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'AdvanceNonceAccount'\n | 'Allocate'\n | 'AllocateWithSeed'\n | 'Assign'\n | 'AssignWithSeed'\n | 'AuthorizeNonceAccount'\n | 'Create'\n | 'CreateWithSeed'\n | 'InitializeNonceAccount'\n | 'Transfer'\n | 'TransferWithSeed'\n | 'WithdrawNonceAccount'\n | 'UpgradeNonceAccount';\n\ntype SystemInstructionInputData = {\n AdvanceNonceAccount: IInstructionInputData;\n Allocate: IInstructionInputData & {\n space: number;\n };\n AllocateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n Assign: IInstructionInputData & {\n programId: Uint8Array;\n };\n AssignWithSeed: IInstructionInputData & {\n base: Uint8Array;\n seed: string;\n programId: Uint8Array;\n };\n AuthorizeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Create: IInstructionInputData & {\n lamports: number;\n programId: Uint8Array;\n space: number;\n };\n CreateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n lamports: number;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n InitializeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Transfer: IInstructionInputData & {\n lamports: bigint;\n };\n TransferWithSeed: IInstructionInputData & {\n lamports: bigint;\n programId: Uint8Array;\n seed: string;\n };\n WithdrawNonceAccount: IInstructionInputData & {\n lamports: number;\n };\n UpgradeNonceAccount: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid system InstructionType's\n * @internal\n */\nexport const SYSTEM_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in SystemInstructionType]: InstructionType<\n SystemInstructionInputData[Instruction]\n >;\n}>({\n Create: {\n index: 0,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n Assign: {\n index: 1,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('programId'),\n ]),\n },\n Transfer: {\n index: 2,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n u64('lamports'),\n ]),\n },\n CreateWithSeed: {\n index: 3,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n AdvanceNonceAccount: {\n index: 4,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AdvanceNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n WithdrawNonceAccount: {\n index: 5,\n layout: BufferLayout.struct<\n SystemInstructionInputData['WithdrawNonceAccount']\n >([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')]),\n },\n InitializeNonceAccount: {\n index: 6,\n layout: BufferLayout.struct<\n SystemInstructionInputData['InitializeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n AuthorizeNonceAccount: {\n index: 7,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AuthorizeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n Allocate: {\n index: 8,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('space'),\n ]),\n },\n AllocateWithSeed: {\n index: 9,\n layout: BufferLayout.struct(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n AssignWithSeed: {\n index: 10,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ]),\n },\n TransferWithSeed: {\n index: 11,\n layout: BufferLayout.struct(\n [\n BufferLayout.u32('instruction'),\n u64('lamports'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n UpgradeNonceAccount: {\n index: 12,\n layout: BufferLayout.struct<\n SystemInstructionInputData['UpgradeNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\n/**\n * Factory class for transactions to interact with the System program\n */\nexport class SystemProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the System program\n */\n static programId: PublicKey = new PublicKey(\n '11111111111111111111111111111111',\n );\n\n /**\n * Generate a transaction instruction that creates a new account\n */\n static createAccount(params: CreateAccountParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Create;\n const data = encodeData(type, {\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: true, isWritable: true},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that transfers lamports from one account to another\n */\n static transfer(\n params: TransferParams | TransferWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;\n data = encodeData(type, {\n lamports: BigInt(params.lamports),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.fromPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Transfer;\n data = encodeData(type, {lamports: BigInt(params.lamports)});\n keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that assigns an account to a program\n */\n static assign(\n params: AssignParams | AssignWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Assign;\n data = encodeData(type, {\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that creates a new account at\n * an address generated with `from`, a seed, and programId\n */\n static createAccountWithSeed(\n params: CreateAccountWithSeedParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed;\n const data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n let keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: false, isWritable: true},\n ];\n if (!params.basePubkey.equals(params.fromPubkey)) {\n keys.push({\n pubkey: params.basePubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that creates a new Nonce account\n */\n static createNonceAccount(\n params: CreateNonceAccountParams | CreateNonceAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n if ('basePubkey' in params && 'seed' in params) {\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n } else {\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n }\n\n const initParams = {\n noncePubkey: params.noncePubkey,\n authorizedPubkey: params.authorizedPubkey,\n };\n\n transaction.add(this.nonceInitialize(initParams));\n return transaction;\n }\n\n /**\n * Generate an instruction to initialize a Nonce account\n */\n static nonceInitialize(\n params: InitializeNonceParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.authorizedPubkey.toBuffer()),\n });\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate an instruction to advance the nonce in a Nonce account\n */\n static nonceAdvance(params: AdvanceNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount;\n const data = encodeData(type);\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction instruction that withdraws lamports from a Nonce account\n */\n static nonceWithdraw(params: WithdrawNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount;\n const data = encodeData(type, {lamports: params.lamports});\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that authorizes a new PublicKey as the authority\n * on a Nonce account.\n */\n static nonceAuthorize(params: AuthorizeNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.newAuthorizedPubkey.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that allocates space in an account without funding\n */\n static allocate(\n params: AllocateParams | AllocateWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Allocate;\n data = encodeData(type, {\n space: params.space,\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey} from './publickey';\nimport {Transaction, PACKET_DATA_SIZE} from './transaction';\nimport {MS_PER_SLOT} from './timing';\nimport {SYSVAR_RENT_PUBKEY} from './sysvar';\nimport {sendAndConfirmTransaction} from './utils/send-and-confirm-transaction';\nimport {sleep} from './utils/sleep';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\nimport {SystemProgram} from './programs/system';\nimport {IInstructionInputData} from './instruction';\n\n// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the\n// rest of the Transaction fields\n//\n// TODO: replace 300 with a proper constant for the size of the other\n// Transaction fields\nconst CHUNK_SIZE = PACKET_DATA_SIZE - 300;\n\n/**\n * Program loader interface\n */\nexport class Loader {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Amount of program data placed in each load Transaction\n */\n static chunkSize: number = CHUNK_SIZE;\n\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return (\n 2 * // Every transaction requires two signatures (payer + program)\n (Math.ceil(dataLength / Loader.chunkSize) +\n 1 + // Add one for Create transaction\n 1) // Add one for Finalize transaction\n );\n }\n\n /**\n * Loads a generic program\n *\n * @param connection The connection to use\n * @param payer System account that pays to load the program\n * @param program Account to load the program into\n * @param programId Public key that identifies the loader\n * @param data Program octets\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static async load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n programId: PublicKey,\n data: Buffer | Uint8Array | Array,\n ): Promise {\n {\n const balanceNeeded = await connection.getMinimumBalanceForRentExemption(\n data.length,\n );\n\n // Fetch program account info to check if it has already been created\n const programInfo = await connection.getAccountInfo(\n program.publicKey,\n 'confirmed',\n );\n\n let transaction: Transaction | null = null;\n if (programInfo !== null) {\n if (programInfo.executable) {\n console.error('Program load failed, account is already executable');\n return false;\n }\n\n if (programInfo.data.length !== data.length) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: program.publicKey,\n space: data.length,\n }),\n );\n }\n\n if (!programInfo.owner.equals(programId)) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.assign({\n accountPubkey: program.publicKey,\n programId,\n }),\n );\n }\n\n if (programInfo.lamports < balanceNeeded) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: program.publicKey,\n lamports: balanceNeeded - programInfo.lamports,\n }),\n );\n }\n } else {\n transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: program.publicKey,\n lamports: balanceNeeded > 0 ? balanceNeeded : 1,\n space: data.length,\n programId,\n }),\n );\n }\n\n // If the account is already created correctly, skip this step\n // and proceed directly to loading instructions\n if (transaction !== null) {\n await sendAndConfirmTransaction(\n connection,\n transaction,\n [payer, program],\n {\n commitment: 'confirmed',\n },\n );\n }\n }\n\n const dataLayout = BufferLayout.struct<\n Readonly<{\n bytes: number[];\n bytesLength: number;\n bytesLengthPadding: number;\n instruction: number;\n offset: number;\n }>\n >([\n BufferLayout.u32('instruction'),\n BufferLayout.u32('offset'),\n BufferLayout.u32('bytesLength'),\n BufferLayout.u32('bytesLengthPadding'),\n BufferLayout.seq(\n BufferLayout.u8('byte'),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'bytes',\n ),\n ]);\n\n const chunkSize = Loader.chunkSize;\n let offset = 0;\n let array = data;\n let transactions = [];\n while (array.length > 0) {\n const bytes = array.slice(0, chunkSize);\n const data = Buffer.alloc(chunkSize + 16);\n dataLayout.encode(\n {\n instruction: 0, // Load instruction\n offset,\n bytes: bytes as number[],\n bytesLength: 0,\n bytesLengthPadding: 0,\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [{pubkey: program.publicKey, isSigner: true, isWritable: true}],\n programId,\n data,\n });\n transactions.push(\n sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed',\n }),\n );\n\n // Delay between sends in an attempt to reduce rate limit errors\n if (connection._rpcEndpoint.includes('solana.com')) {\n const REQUESTS_PER_SECOND = 4;\n await sleep(1000 / REQUESTS_PER_SECOND);\n }\n\n offset += chunkSize;\n array = array.slice(chunkSize);\n }\n await Promise.all(transactions);\n\n // Finalize the account loaded with program data for execution\n {\n const dataLayout = BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]);\n\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 1, // Finalize instruction\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [\n {pubkey: program.publicKey, isSigner: true, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId,\n data,\n });\n const deployCommitment = 'processed';\n const finalizeSignature = await connection.sendTransaction(\n transaction,\n [payer, program],\n {preflightCommitment: deployCommitment},\n );\n const {context, value} = await connection.confirmTransaction(\n {\n signature: finalizeSignature,\n lastValidBlockHeight: transaction.lastValidBlockHeight!,\n blockhash: transaction.recentBlockhash!,\n },\n deployCommitment,\n );\n if (value.err) {\n throw new Error(\n `Transaction ${finalizeSignature} failed (${JSON.stringify(value)})`,\n );\n }\n // We prevent programs from being usable until the slot after their deployment.\n // See https://github.com/solana-labs/solana/pull/29654\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n try {\n const currentSlot = await connection.getSlot({\n commitment: deployCommitment,\n });\n if (currentSlot > context.slot) {\n break;\n }\n } catch {\n /* empty */\n }\n await new Promise(resolve =>\n setTimeout(resolve, Math.round(MS_PER_SLOT / 2)),\n );\n }\n }\n\n // success\n return true;\n }\n}\n","import type {Buffer} from 'buffer';\n\nimport {PublicKey} from './publickey';\nimport {Loader} from './loader';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\n\n/**\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport const BPF_LOADER_PROGRAM_ID = new PublicKey(\n 'BPFLoader2111111111111111111111111111111111',\n);\n\n/**\n * Factory class for transactions to interact with a program loader\n *\n * @deprecated Deprecated since Solana v1.17.20.\n */\nexport class BpfLoader {\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return Loader.getMinNumSignatures(dataLength);\n }\n\n /**\n * Load a SBF program\n *\n * @param connection The connection to use\n * @param payer Account that will pay program loading fees\n * @param program Account to load the program into\n * @param elf The entire ELF containing the SBF program\n * @param loaderProgramId The program id of the BPF loader to use\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n elf: Buffer | Uint8Array | Array,\n loaderProgramId: PublicKey,\n ): Promise {\n return Loader.load(connection, payer, program, loaderProgramId, elf);\n }\n}\n","var objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nmodule.exports = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n","const MINIMUM_SLOT_PER_EPOCH = 32;\n\n// Returns the number of trailing zeros in the binary representation of self.\nfunction trailingZeros(n: number) {\n let trailingZeros = 0;\n while (n > 1) {\n n /= 2;\n trailingZeros++;\n }\n return trailingZeros;\n}\n\n// Returns the smallest power of two greater than or equal to n\nfunction nextPowerOfTwo(n: number) {\n if (n === 0) return 1;\n n--;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n return n + 1;\n}\n\n/**\n * Epoch schedule\n * (see https://docs.solana.com/terminology#epoch)\n * Can be retrieved with the {@link Connection.getEpochSchedule} method\n */\nexport class EpochSchedule {\n /** The maximum number of slots in each epoch */\n public slotsPerEpoch: number;\n /** The number of slots before beginning of an epoch to calculate a leader schedule for that epoch */\n public leaderScheduleSlotOffset: number;\n /** Indicates whether epochs start short and grow */\n public warmup: boolean;\n /** The first epoch with `slotsPerEpoch` slots */\n public firstNormalEpoch: number;\n /** The first slot of `firstNormalEpoch` */\n public firstNormalSlot: number;\n\n constructor(\n slotsPerEpoch: number,\n leaderScheduleSlotOffset: number,\n warmup: boolean,\n firstNormalEpoch: number,\n firstNormalSlot: number,\n ) {\n this.slotsPerEpoch = slotsPerEpoch;\n this.leaderScheduleSlotOffset = leaderScheduleSlotOffset;\n this.warmup = warmup;\n this.firstNormalEpoch = firstNormalEpoch;\n this.firstNormalSlot = firstNormalSlot;\n }\n\n getEpoch(slot: number): number {\n return this.getEpochAndSlotIndex(slot)[0];\n }\n\n getEpochAndSlotIndex(slot: number): [number, number] {\n if (slot < this.firstNormalSlot) {\n const epoch =\n trailingZeros(nextPowerOfTwo(slot + MINIMUM_SLOT_PER_EPOCH + 1)) -\n trailingZeros(MINIMUM_SLOT_PER_EPOCH) -\n 1;\n\n const epochLen = this.getSlotsInEpoch(epoch);\n const slotIndex = slot - (epochLen - MINIMUM_SLOT_PER_EPOCH);\n return [epoch, slotIndex];\n } else {\n const normalSlotIndex = slot - this.firstNormalSlot;\n const normalEpochIndex = Math.floor(normalSlotIndex / this.slotsPerEpoch);\n const epoch = this.firstNormalEpoch + normalEpochIndex;\n const slotIndex = normalSlotIndex % this.slotsPerEpoch;\n return [epoch, slotIndex];\n }\n }\n\n getFirstSlotInEpoch(epoch: number): number {\n if (epoch <= this.firstNormalEpoch) {\n return (Math.pow(2, epoch) - 1) * MINIMUM_SLOT_PER_EPOCH;\n } else {\n return (\n (epoch - this.firstNormalEpoch) * this.slotsPerEpoch +\n this.firstNormalSlot\n );\n }\n }\n\n getLastSlotInEpoch(epoch: number): number {\n return this.getFirstSlotInEpoch(epoch) + this.getSlotsInEpoch(epoch) - 1;\n }\n\n getSlotsInEpoch(epoch: number) {\n if (epoch < this.firstNormalEpoch) {\n return Math.pow(2, epoch + trailingZeros(MINIMUM_SLOT_PER_EPOCH));\n } else {\n return this.slotsPerEpoch;\n }\n }\n}\n","export const Headers: typeof globalThis.Headers = globalThis.Headers;\nexport const Request: typeof globalThis.Request = globalThis.Request;\nexport const Response: typeof globalThis.Response = globalThis.Response;\nexport default globalThis.fetch;\n","import {\n CommonClient,\n ICommonWebSocket,\n IWSClientAdditionalOptions,\n NodeWebSocketType,\n NodeWebSocketTypeOptions,\n WebSocket as createRpc,\n} from 'rpc-websockets';\n\ninterface IHasReadyState {\n readyState: WebSocket['readyState'];\n}\n\nexport default class RpcWebSocketClient extends CommonClient {\n private underlyingSocket: IHasReadyState | undefined;\n constructor(\n address?: string,\n options?: IWSClientAdditionalOptions & NodeWebSocketTypeOptions,\n generate_request_id?: (\n method: string,\n params: object | Array,\n ) => number,\n ) {\n const webSocketFactory = (url: string) => {\n const rpc = createRpc(url, {\n autoconnect: true,\n max_reconnects: 5,\n reconnect: true,\n reconnect_interval: 1000,\n ...options,\n });\n if ('socket' in rpc) {\n this.underlyingSocket = rpc.socket as ReturnType;\n } else {\n this.underlyingSocket = rpc as NodeWebSocketType;\n }\n return rpc as ICommonWebSocket;\n };\n super(webSocketFactory, address, options, generate_request_id);\n }\n call(\n ...args: Parameters\n ): ReturnType {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.call(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to call a JSON-RPC method `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n notify(\n ...args: Parameters\n ): ReturnType {\n const readyState = this.underlyingSocket?.readyState;\n if (readyState === 1 /* WebSocket.OPEN */) {\n return super.notify(...args);\n }\n return Promise.reject(\n new Error(\n 'Tried to send a JSON-RPC notification `' +\n args[0] +\n '` but the socket was not `CONNECTING` or `OPEN` (`readyState` was ' +\n readyState +\n ')',\n ),\n );\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport assert from '../../utils/assert';\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport {u64} from '../../utils/bigint';\nimport {decodeData} from '../../account-data';\n\nexport type AddressLookupTableState = {\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedSlotStartIndex: number;\n authority?: PublicKey;\n addresses: Array;\n};\n\nexport type AddressLookupTableAccountArgs = {\n key: PublicKey;\n state: AddressLookupTableState;\n};\n\n/// The serialized size of lookup table metadata\nconst LOOKUP_TABLE_META_SIZE = 56;\n\nexport class AddressLookupTableAccount {\n key: PublicKey;\n state: AddressLookupTableState;\n\n constructor(args: AddressLookupTableAccountArgs) {\n this.key = args.key;\n this.state = args.state;\n }\n\n isActive(): boolean {\n const U64_MAX = BigInt('0xffffffffffffffff');\n return this.state.deactivationSlot === U64_MAX;\n }\n\n static deserialize(accountData: Uint8Array): AddressLookupTableState {\n const meta = decodeData(LookupTableMetaLayout, accountData);\n\n const serializedAddressesLen = accountData.length - LOOKUP_TABLE_META_SIZE;\n assert(serializedAddressesLen >= 0, 'lookup table is invalid');\n assert(serializedAddressesLen % 32 === 0, 'lookup table is invalid');\n\n const numSerializedAddresses = serializedAddressesLen / 32;\n const {addresses} = BufferLayout.struct<{addresses: Array}>([\n BufferLayout.seq(Layout.publicKey(), numSerializedAddresses, 'addresses'),\n ]).decode(accountData.slice(LOOKUP_TABLE_META_SIZE));\n\n return {\n deactivationSlot: meta.deactivationSlot,\n lastExtendedSlot: meta.lastExtendedSlot,\n lastExtendedSlotStartIndex: meta.lastExtendedStartIndex,\n authority:\n meta.authority.length !== 0\n ? new PublicKey(meta.authority[0])\n : undefined,\n addresses: addresses.map(address => new PublicKey(address)),\n };\n }\n}\n\nconst LookupTableMetaLayout = {\n index: 1,\n layout: BufferLayout.struct<{\n typeIndex: number;\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedStartIndex: number;\n authority: Array;\n }>([\n BufferLayout.u32('typeIndex'),\n u64('deactivationSlot'),\n BufferLayout.nu64('lastExtendedSlot'),\n BufferLayout.u8('lastExtendedStartIndex'),\n BufferLayout.u8(), // option\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u8(), -1),\n 'authority',\n ),\n ]),\n};\n","import * as BufferLayout from '@solana/buffer-layout';\n\nexport interface IAccountStateData {\n readonly typeIndex: number;\n}\n\n/**\n * @internal\n */\nexport type AccountType = {\n /** The account type index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout;\n};\n\n/**\n * Decode account data buffer using an AccountType\n * @internal\n */\nexport function decodeData(\n type: AccountType,\n data: Uint8Array,\n): TAccountStateData {\n let decoded: TAccountStateData;\n try {\n decoded = type.layout.decode(data);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (decoded.typeIndex !== type.index) {\n throw new Error(\n `invalid account data; account type mismatch ${decoded.typeIndex} != ${type.index}`,\n );\n }\n\n return decoded;\n}\n","const URL_RE = /^[^:]+:\\/\\/([^:[]+|\\[[^\\]]+\\])(:\\d+)?(.*)/i;\n\nexport function makeWebsocketUrl(endpoint: string) {\n const matches = endpoint.match(URL_RE);\n if (matches == null) {\n throw TypeError(`Failed to validate endpoint URL \\`${endpoint}\\``);\n }\n const [\n _, // eslint-disable-line @typescript-eslint/no-unused-vars\n hostish,\n portWithColon,\n rest,\n ] = matches;\n const protocol = endpoint.startsWith('https:') ? 'wss:' : 'ws:';\n const startPort =\n portWithColon == null ? null : parseInt(portWithColon.slice(1), 10);\n const websocketPort =\n // Only shift the port by +1 as a convention for ws(s) only if given endpoint\n // is explicitly specifying the endpoint port (HTTP-based RPC), assuming\n // we're directly trying to connect to agave-validator's ws listening port.\n // When the endpoint omits the port, we're connecting to the protocol\n // default ports: http(80) or https(443) and it's assumed we're behind a reverse\n // proxy which manages WebSocket upgrade and backend port redirection.\n startPort == null ? '' : `:${startPort + 1}`;\n return `${protocol}//${hostish}${websocketPort}${rest}`;\n}\n","import HttpKeepAliveAgent, {\n HttpsAgent as HttpsKeepAliveAgent,\n} from 'agentkeepalive';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\nimport type {Agent as NodeHttpAgent} from 'http';\nimport {Agent as NodeHttpsAgent} from 'https';\nimport {\n type as pick,\n number,\n string,\n array,\n boolean,\n literal,\n record,\n union,\n optional,\n nullable,\n coerce,\n instance,\n create,\n tuple,\n unknown,\n any,\n} from 'superstruct';\nimport type {Struct} from 'superstruct';\nimport RpcClient from 'jayson/lib/client/browser';\nimport {JSONRPCError} from 'jayson';\n\nimport {EpochSchedule} from './epoch-schedule';\nimport {SendTransactionError, SolanaJSONRPCError} from './errors';\nimport fetchImpl from './fetch-impl';\nimport {DurableNonce, NonceAccount} from './nonce-account';\nimport {PublicKey} from './publickey';\nimport {Signer} from './keypair';\nimport RpcWebSocketClient from './rpc-websocket';\nimport {MS_PER_SLOT} from './timing';\nimport {\n Transaction,\n TransactionStatus,\n TransactionVersion,\n VersionedTransaction,\n} from './transaction';\nimport {Message, MessageHeader, MessageV0, VersionedMessage} from './message';\nimport {AddressLookupTableAccount} from './programs/address-lookup-table/state';\nimport assert from './utils/assert';\nimport {sleep} from './utils/sleep';\nimport {toBuffer} from './utils/to-buffer';\nimport {\n TransactionExpiredBlockheightExceededError,\n TransactionExpiredNonceInvalidError,\n TransactionExpiredTimeoutError,\n} from './transaction/expiry-custom-errors';\nimport {makeWebsocketUrl} from './utils/makeWebsocketUrl';\nimport type {Blockhash} from './blockhash';\nimport type {FeeCalculator} from './fee-calculator';\nimport type {TransactionSignature} from './transaction';\nimport type {CompiledInstruction} from './message';\n\nconst PublicKeyFromString = coerce(\n instance(PublicKey),\n string(),\n value => new PublicKey(value),\n);\n\nconst RawAccountDataResult = tuple([string(), literal('base64')]);\n\nconst BufferFromRawAccountData = coerce(\n instance(Buffer),\n RawAccountDataResult,\n value => Buffer.from(value[0], 'base64'),\n);\n\n/**\n * Attempt to use a recent blockhash for up to 30 seconds\n * @internal\n */\nexport const BLOCKHASH_CACHE_TIMEOUT_MS = 30 * 1000;\n\n/**\n * HACK.\n * Copied from rpc-websockets/dist/lib/client.\n * Otherwise, `yarn build` fails with:\n * https://gist.github.com/steveluscher/c057eca81d479ef705cdb53162f9971d\n */\ninterface IWSRequestParams {\n [x: string]: any;\n [x: number]: any;\n}\n\ntype ClientSubscriptionId = number;\n/** @internal */ type ServerSubscriptionId = number;\n/** @internal */ type SubscriptionConfigHash = string;\n/** @internal */ type SubscriptionDisposeFn = () => Promise;\n/** @internal */ type SubscriptionStateChangeCallback = (\n nextState: StatefulSubscription['state'],\n) => void;\n/** @internal */ type SubscriptionStateChangeDisposeFn = () => void;\n/**\n * @internal\n * Every subscription contains the args used to open the subscription with\n * the server, and a list of callers interested in notifications.\n */\ntype BaseSubscription = Readonly<{\n args: IWSRequestParams;\n callbacks: Set['callback']>;\n}>;\n/**\n * @internal\n * A subscription may be in various states of connectedness. Only when it is\n * fully connected will it have a server subscription id associated with it.\n * This id can be returned to the server to unsubscribe the client entirely.\n */\ntype StatefulSubscription = Readonly<\n // New subscriptions that have not yet been\n // sent to the server start in this state.\n | {\n state: 'pending';\n }\n // These subscriptions have been sent to the server\n // and are waiting for the server to acknowledge them.\n | {\n state: 'subscribing';\n }\n // These subscriptions have been acknowledged by the\n // server and have been assigned server subscription ids.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'subscribed';\n }\n // These subscriptions are intended to be torn down and\n // are waiting on an acknowledgement from the server.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribing';\n }\n // The request to tear down these subscriptions has been\n // acknowledged by the server. The `serverSubscriptionId`\n // is the id of the now-dead subscription.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribed';\n }\n>;\n/**\n * A type that encapsulates a subscription's RPC method\n * names and notification (callback) signature.\n */\ntype SubscriptionConfig = Readonly<\n | {\n callback: AccountChangeCallback;\n method: 'accountSubscribe';\n unsubscribeMethod: 'accountUnsubscribe';\n }\n | {\n callback: LogsCallback;\n method: 'logsSubscribe';\n unsubscribeMethod: 'logsUnsubscribe';\n }\n | {\n callback: ProgramAccountChangeCallback;\n method: 'programSubscribe';\n unsubscribeMethod: 'programUnsubscribe';\n }\n | {\n callback: RootChangeCallback;\n method: 'rootSubscribe';\n unsubscribeMethod: 'rootUnsubscribe';\n }\n | {\n callback: SignatureSubscriptionCallback;\n method: 'signatureSubscribe';\n unsubscribeMethod: 'signatureUnsubscribe';\n }\n | {\n callback: SlotChangeCallback;\n method: 'slotSubscribe';\n unsubscribeMethod: 'slotUnsubscribe';\n }\n | {\n callback: SlotUpdateCallback;\n method: 'slotsUpdatesSubscribe';\n unsubscribeMethod: 'slotsUpdatesUnsubscribe';\n }\n>;\n/**\n * @internal\n * Utility type that keeps tagged unions intact while omitting properties.\n */\ntype DistributiveOmit = T extends unknown\n ? Omit\n : never;\n/**\n * @internal\n * This type represents a single subscribable 'topic.' It's made up of:\n *\n * - The args used to open the subscription with the server,\n * - The state of the subscription, in terms of its connectedness, and\n * - The set of callbacks to call when the server publishes notifications\n *\n * This record gets indexed by `SubscriptionConfigHash` and is used to\n * set up subscriptions, fan out notifications, and track subscription state.\n */\ntype Subscription = BaseSubscription &\n StatefulSubscription &\n DistributiveOmit;\n\ntype RpcRequest = (methodName: string, args: Array) => Promise;\n\ntype RpcBatchRequest = (requests: RpcParams[]) => Promise;\n\n/**\n * @internal\n */\nexport type RpcParams = {\n methodName: string;\n args: Array;\n};\n\nexport type TokenAccountsFilter =\n | {\n mint: PublicKey;\n }\n | {\n programId: PublicKey;\n };\n\n/**\n * Extra contextual information for RPC responses\n */\nexport type Context = {\n slot: number;\n};\n\n/**\n * Options for sending transactions\n */\nexport type SendOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for confirming transactions\n */\nexport type ConfirmOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** desired commitment level */\n commitment?: Commitment;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for getConfirmedSignaturesForAddress2\n */\nexport type ConfirmedSignaturesForAddress2Options = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n};\n\n/**\n * Options for getSignaturesForAddress\n */\nexport type SignaturesForAddressOptions = {\n /**\n * Start searching backwards from this transaction signature.\n * @remarks If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * RPC Response with extra contextual information\n */\nexport type RpcResponseAndContext = {\n /** response context */\n context: Context;\n /** response value */\n value: T;\n};\n\nexport type BlockhashWithExpiryBlockHeight = Readonly<{\n blockhash: Blockhash;\n lastValidBlockHeight: number;\n}>;\n\n/**\n * A strategy for confirming transactions that uses the last valid\n * block height for a given blockhash to check for transaction expiration.\n */\nexport type BlockheightBasedTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & BlockhashWithExpiryBlockHeight;\n\n/**\n * A strategy for confirming durable nonce transactions.\n */\nexport type DurableNonceTransactionConfirmationStrategy =\n BaseTransactionConfirmationStrategy & {\n /**\n * The lowest slot at which to fetch the nonce value from the\n * nonce account. This should be no lower than the slot at\n * which the last-known value of the nonce was fetched.\n */\n minContextSlot: number;\n /**\n * The account where the current value of the nonce is stored.\n */\n nonceAccountPubkey: PublicKey;\n /**\n * The nonce value that was used to sign the transaction\n * for which confirmation is being sought.\n */\n nonceValue: DurableNonce;\n };\n\n/**\n * Properties shared by all transaction confirmation strategies\n */\nexport type BaseTransactionConfirmationStrategy = Readonly<{\n /** A signal that, when aborted, cancels any outstanding transaction confirmation operations */\n abortSignal?: AbortSignal;\n signature: TransactionSignature;\n}>;\n\n/**\n * This type represents all transaction confirmation strategies\n */\nexport type TransactionConfirmationStrategy =\n | BlockheightBasedTransactionConfirmationStrategy\n | DurableNonceTransactionConfirmationStrategy;\n\n/* @internal */\nfunction assertEndpointUrl(putativeUrl: string) {\n if (/^https?:/.test(putativeUrl) === false) {\n throw new TypeError('Endpoint URL must start with `http:` or `https:`.');\n }\n return putativeUrl;\n}\n\n/** @internal */\nfunction extractCommitmentFromConfig(\n commitmentOrConfig?: Commitment | ({commitment?: Commitment} & TConfig),\n) {\n let commitment: Commitment | undefined;\n let config: Omit | undefined;\n if (typeof commitmentOrConfig === 'string') {\n commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n const {commitment: specifiedCommitment, ...specifiedConfig} =\n commitmentOrConfig;\n commitment = specifiedCommitment;\n config = specifiedConfig;\n }\n return {commitment, config};\n}\n\n/**\n * @internal\n */\nfunction applyDefaultMemcmpEncodingToFilters(\n filters: GetProgramAccountsFilter[],\n): GetProgramAccountsFilter[] {\n return filters.map(filter =>\n 'memcmp' in filter\n ? {\n ...filter,\n memcmp: {\n ...filter.memcmp,\n encoding: filter.memcmp.encoding ?? 'base58',\n },\n }\n : filter,\n );\n}\n\n/**\n * @internal\n */\nfunction createRpcResult(result: Struct) {\n return union([\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n result,\n }),\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n error: pick({\n code: unknown(),\n message: string(),\n data: optional(any()),\n }),\n }),\n ]);\n}\n\nconst UnknownRpcResult = createRpcResult(unknown());\n\n/**\n * @internal\n */\nfunction jsonRpcResult(schema: Struct) {\n return coerce(createRpcResult(schema), UnknownRpcResult, value => {\n if ('error' in value) {\n return value;\n } else {\n return {\n ...value,\n result: create(value.result, schema),\n };\n }\n });\n}\n\n/**\n * @internal\n */\nfunction jsonRpcResultAndContext(value: Struct) {\n return jsonRpcResult(\n pick({\n context: pick({\n slot: number(),\n }),\n value,\n }),\n );\n}\n\n/**\n * @internal\n */\nfunction notificationResultAndContext(value: Struct) {\n return pick({\n context: pick({\n slot: number(),\n }),\n value,\n });\n}\n\n/**\n * @internal\n */\nfunction versionedMessageFromResponse(\n version: TransactionVersion | undefined,\n response: MessageResponse,\n): VersionedMessage {\n if (version === 0) {\n return new MessageV0({\n header: response.header,\n staticAccountKeys: response.accountKeys.map(\n accountKey => new PublicKey(accountKey),\n ),\n recentBlockhash: response.recentBlockhash,\n compiledInstructions: response.instructions.map(ix => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data),\n })),\n addressTableLookups: response.addressTableLookups!,\n });\n } else {\n return new Message(response);\n }\n}\n\n/**\n * The level of commitment desired when querying state\n *
\n *   'processed': Query the most recent block which has reached 1 confirmation by the connected node\n *   'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n *   'finalized': Query the most recent block which has been finalized by the cluster\n * 
\n */\nexport type Commitment =\n | 'processed'\n | 'confirmed'\n | 'finalized'\n | 'recent' // Deprecated as of v1.5.5\n | 'single' // Deprecated as of v1.5.5\n | 'singleGossip' // Deprecated as of v1.5.5\n | 'root' // Deprecated as of v1.5.5\n | 'max'; // Deprecated as of v1.5.5\n\n/**\n * A subset of Commitment levels, which are at least optimistically confirmed\n *
\n *   'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n *   'finalized': Query the most recent block which has been finalized by the cluster\n * 
\n */\nexport type Finality = 'confirmed' | 'finalized';\n\n/**\n * Filter for largest accounts query\n *
\n *   'circulating':    Return the largest accounts that are part of the circulating supply\n *   'nonCirculating': Return the largest accounts that are not part of the circulating supply\n * 
\n */\nexport type LargestAccountsFilter = 'circulating' | 'nonCirculating';\n\n/**\n * Configuration object for changing `getAccountInfo` query behavior\n */\nexport type GetAccountInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for changing `getBalance` query behavior\n */\nexport type GetBalanceConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetVersionedBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n /**\n * Whether to populate the rewards array. If parameter not provided, the default includes rewards.\n */\n rewards?: boolean;\n /**\n * Level of transaction detail to return, either \"full\", \"accounts\", \"signatures\", or \"none\". If\n * parameter not provided, the default detail level is \"full\". If \"accounts\" are requested,\n * transaction details only include signatures and an annotated list of accounts in each\n * transaction. Transaction metadata is limited to only: fee, err, pre_balances, post_balances,\n * pre_token_balances, and post_token_balances.\n */\n transactionDetails?: 'accounts' | 'full' | 'none' | 'signatures';\n};\n\n/**\n * Configuration object for changing `getStakeMinimumDelegation` query behavior\n */\nexport type GetStakeMinimumDelegationConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n};\n\n/**\n * Configuration object for changing `getBlockHeight` query behavior\n */\nexport type GetBlockHeightConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getEpochInfo` query behavior\n */\nexport type GetEpochInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getInflationReward` query behavior\n */\nexport type GetInflationRewardConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** An epoch for which the reward occurs. If omitted, the previous epoch will be used */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getLatestBlockhash` query behavior\n */\nexport type GetLatestBlockhashConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `isBlockhashValid` query behavior\n */\nexport type IsBlockhashValidConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlot` query behavior\n */\nexport type GetSlotConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlotLeader` query behavior\n */\nexport type GetSlotLeaderConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetVersionedTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n};\n\n/**\n * Configuration object for changing `getLargestAccounts` query behavior\n */\nexport type GetLargestAccountsConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Filter largest accounts by whether they are part of the circulating supply */\n filter?: LargestAccountsFilter;\n};\n\n/**\n * Configuration object for changing `getSupply` request behavior\n */\nexport type GetSupplyConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Exclude non circulating accounts list from response */\n excludeNonCirculatingAccountsList?: boolean;\n};\n\n/**\n * Configuration object for changing query behavior\n */\nexport type SignatureStatusConfig = {\n /** enable searching status history, not needed for recent transactions */\n searchTransactionHistory: boolean;\n};\n\n/**\n * Information describing a cluster node\n */\nexport type ContactInfo = {\n /** Identity public key of the node */\n pubkey: string;\n /** Gossip network address for the node */\n gossip: string | null;\n /** TPU network address for the node (null if not available) */\n tpu: string | null;\n /** JSON RPC network address for the node (null if not available) */\n rpc: string | null;\n /** Software version of the node (null if not available) */\n version: string | null;\n};\n\n/**\n * Information describing a vote account\n */\nexport type VoteAccountInfo = {\n /** Public key of the vote account */\n votePubkey: string;\n /** Identity public key of the node voting with this account */\n nodePubkey: string;\n /** The stake, in lamports, delegated to this vote account and activated */\n activatedStake: number;\n /** Whether the vote account is staked for this epoch */\n epochVoteAccount: boolean;\n /** Recent epoch voting credit history for this voter */\n epochCredits: Array<[number, number, number]>;\n /** A percentage (0-100) of rewards payout owed to the voter */\n commission: number;\n /** Most recent slot voted on by this vote account */\n lastVote: number;\n};\n\n/**\n * A collection of cluster vote accounts\n */\nexport type VoteAccountStatus = {\n /** Active vote accounts */\n current: Array;\n /** Inactive vote accounts */\n delinquent: Array;\n};\n\n/**\n * Network Inflation\n * (see https://docs.solana.com/implemented-proposals/ed_overview)\n */\nexport type InflationGovernor = {\n foundation: number;\n foundationTerm: number;\n initial: number;\n taper: number;\n terminal: number;\n};\n\nconst GetInflationGovernorResult = pick({\n foundation: number(),\n foundationTerm: number(),\n initial: number(),\n taper: number(),\n terminal: number(),\n});\n\n/**\n * The inflation reward for an epoch\n */\nexport type InflationReward = {\n /** epoch for which the reward occurs */\n epoch: number;\n /** the slot in which the rewards are effective */\n effectiveSlot: number;\n /** reward amount in lamports */\n amount: number;\n /** post balance of the account in lamports */\n postBalance: number;\n /** vote account commission when the reward was credited */\n commission?: number | null;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationReward\" message\n */\nconst GetInflationRewardResult = jsonRpcResult(\n array(\n nullable(\n pick({\n epoch: number(),\n effectiveSlot: number(),\n amount: number(),\n postBalance: number(),\n commission: optional(nullable(number())),\n }),\n ),\n ),\n);\n\nexport type RecentPrioritizationFees = {\n /** slot in which the fee was observed */\n slot: number;\n /** the per-compute-unit fee paid by at least one successfully landed transaction, specified in increments of 0.000001 lamports*/\n prioritizationFee: number;\n};\n\n/**\n * Configuration object for changing `getRecentPrioritizationFees` query behavior\n */\nexport type GetRecentPrioritizationFeesConfig = {\n /**\n * If this parameter is provided, the response will reflect a fee to land a transaction locking\n * all of the provided accounts as writable.\n */\n lockedWritableAccounts?: PublicKey[];\n};\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesResult = array(\n pick({\n slot: number(),\n prioritizationFee: number(),\n }),\n);\n\nexport type InflationRate = {\n /** total inflation */\n total: number;\n /** inflation allocated to validators */\n validator: number;\n /** inflation allocated to the foundation */\n foundation: number;\n /** epoch for which these values are valid */\n epoch: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateResult = pick({\n total: number(),\n validator: number(),\n foundation: number(),\n epoch: number(),\n});\n\n/**\n * Information about the current epoch\n */\nexport type EpochInfo = {\n epoch: number;\n slotIndex: number;\n slotsInEpoch: number;\n absoluteSlot: number;\n blockHeight?: number;\n transactionCount?: number;\n};\n\nconst GetEpochInfoResult = pick({\n epoch: number(),\n slotIndex: number(),\n slotsInEpoch: number(),\n absoluteSlot: number(),\n blockHeight: optional(number()),\n transactionCount: optional(number()),\n});\n\nconst GetEpochScheduleResult = pick({\n slotsPerEpoch: number(),\n leaderScheduleSlotOffset: number(),\n warmup: boolean(),\n firstNormalEpoch: number(),\n firstNormalSlot: number(),\n});\n\n/**\n * Leader schedule\n * (see https://docs.solana.com/terminology#leader-schedule)\n */\nexport type LeaderSchedule = {\n [address: string]: number[];\n};\n\nconst GetLeaderScheduleResult = record(string(), array(number()));\n\n/**\n * Transaction error or null\n */\nconst TransactionErrorResult = nullable(union([pick({}), string()]));\n\n/**\n * Signature status for a transaction\n */\nconst SignatureStatusResult = pick({\n err: TransactionErrorResult,\n});\n\n/**\n * Transaction signature received notification\n */\nconst SignatureReceivedResult = literal('receivedSignature');\n\n/**\n * Version info for a node\n */\nexport type Version = {\n /** Version of solana-core */\n 'solana-core': string;\n 'feature-set'?: number;\n};\n\nconst VersionResult = pick({\n 'solana-core': string(),\n 'feature-set': optional(number()),\n});\n\nexport type SimulatedTransactionAccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: string;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: string[];\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\nexport type TransactionReturnDataEncoding = 'base64';\n\nexport type TransactionReturnData = {\n programId: string;\n data: [string, TransactionReturnDataEncoding];\n};\n\nexport type SimulateTransactionConfig = {\n /** Optional parameter used to enable signature verification before simulation */\n sigVerify?: boolean;\n /** Optional parameter used to replace the simulated transaction's recent blockhash with the latest blockhash */\n replaceRecentBlockhash?: boolean;\n /** Optional parameter used to set the commitment level when selecting the latest block */\n commitment?: Commitment;\n /** Optional parameter used to specify a list of base58-encoded account addresses to return post simulation state for */\n accounts?: {\n /** The encoding of the returned account's data */\n encoding: 'base64';\n addresses: string[];\n };\n /** Optional parameter used to specify the minimum block slot that can be used for simulation */\n minContextSlot?: number;\n /** Optional parameter used to include inner instructions in the simulation */\n innerInstructions?: boolean;\n};\n\nexport type SimulatedTransactionResponse = {\n err: TransactionError | string | null;\n logs: Array | null;\n accounts?: (SimulatedTransactionAccountInfo | null)[] | null;\n unitsConsumed?: number;\n returnData?: TransactionReturnData | null;\n innerInstructions?: ParsedInnerInstruction[] | null;\n};\nconst ParsedInstructionStruct = pick({\n program: string(),\n programId: PublicKeyFromString,\n parsed: unknown(),\n});\n\nconst PartiallyDecodedInstructionStruct = pick({\n programId: PublicKeyFromString,\n accounts: array(PublicKeyFromString),\n data: string(),\n});\n\nconst SimulatedTransactionResponseStruct = jsonRpcResultAndContext(\n pick({\n err: nullable(union([pick({}), string()])),\n logs: nullable(array(string())),\n accounts: optional(\n nullable(\n array(\n nullable(\n pick({\n executable: boolean(),\n owner: string(),\n lamports: number(),\n data: array(string()),\n rentEpoch: optional(number()),\n }),\n ),\n ),\n ),\n ),\n unitsConsumed: optional(number()),\n returnData: optional(\n nullable(\n pick({\n programId: string(),\n data: tuple([string(), literal('base64')]),\n }),\n ),\n ),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n union([\n ParsedInstructionStruct,\n PartiallyDecodedInstructionStruct,\n ]),\n ),\n }),\n ),\n ),\n ),\n }),\n);\n\nexport type ParsedInnerInstruction = {\n index: number;\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n};\n\nexport type TokenBalance = {\n accountIndex: number;\n mint: string;\n owner?: string;\n programId?: string;\n uiTokenAmount: TokenAmount;\n};\n\n/**\n * Metadata for a parsed confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionMeta} instead.\n */\nexport type ParsedConfirmedTransactionMeta = ParsedTransactionMeta;\n\n/**\n * Collection of addresses loaded by a transaction using address table lookups\n */\nexport type LoadedAddresses = {\n writable: Array;\n readonly: Array;\n};\n\n/**\n * Metadata for a parsed transaction on the ledger\n */\nexport type ParsedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked parsed instructions */\n innerInstructions?: ParsedInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array;\n /** The balances of the transaction accounts after processing */\n postBalances: Array;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\nexport type CompiledInnerInstruction = {\n index: number;\n instructions: CompiledInstruction[];\n};\n\n/**\n * Metadata for a confirmed transaction on the ledger\n */\nexport type ConfirmedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked instructions */\n innerInstructions?: CompiledInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array;\n /** The balances of the transaction accounts after processing */\n postBalances: Array;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n /** The compute units consumed after processing the transaction */\n computeUnitsConsumed?: number;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type TransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type VersionedTransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The transaction version */\n version?: TransactionVersion;\n};\n\n/**\n * A processed transaction message from the RPC API\n */\ntype MessageResponse = {\n accountKeys: string[];\n header: MessageHeader;\n instructions: CompiledInstruction[];\n recentBlockhash: string;\n addressTableLookups?: ParsedAddressTableLookup[];\n};\n\n/**\n * A confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedTransaction = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: Transaction;\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A partially decoded transaction instruction\n */\nexport type PartiallyDecodedInstruction = {\n /** Program id called by this instruction */\n programId: PublicKey;\n /** Public keys of accounts passed to this instruction */\n accounts: Array;\n /** Raw base-58 instruction data */\n data: string;\n};\n\n/**\n * A parsed transaction message account\n */\nexport type ParsedMessageAccount = {\n /** Public key of the account */\n pubkey: PublicKey;\n /** Indicates if the account signed the transaction */\n signer: boolean;\n /** Indicates if the account is writable for this transaction */\n writable: boolean;\n /** Indicates if the account key came from the transaction or a lookup table */\n source?: 'transaction' | 'lookupTable';\n};\n\n/**\n * A parsed transaction instruction\n */\nexport type ParsedInstruction = {\n /** Name of the program for this instruction */\n program: string;\n /** ID of the program for this instruction */\n programId: PublicKey;\n /** Parsed instruction info */\n parsed: any;\n};\n\n/**\n * A parsed address table lookup\n */\nexport type ParsedAddressTableLookup = {\n /** Address lookup table account key */\n accountKey: PublicKey;\n /** Parsed instruction info */\n writableIndexes: number[];\n /** Parsed instruction info */\n readonlyIndexes: number[];\n};\n\n/**\n * A parsed transaction message\n */\nexport type ParsedMessage = {\n /** Accounts used in the instructions */\n accountKeys: ParsedMessageAccount[];\n /** The atomically executed instructions for the transaction */\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n /** Recent blockhash */\n recentBlockhash: string;\n /** Address table lookups used to load additional accounts */\n addressTableLookups?: ParsedAddressTableLookup[] | null;\n};\n\n/**\n * A parsed transaction\n */\nexport type ParsedTransaction = {\n /** Signatures for the transaction */\n signatures: Array;\n /** Message of the transaction */\n message: ParsedMessage;\n};\n\n/**\n * A parsed and confirmed transaction on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link ParsedTransactionWithMeta} instead.\n */\nexport type ParsedConfirmedTransaction = ParsedTransactionWithMeta;\n\n/**\n * A parsed transaction on the ledger with meta\n */\nexport type ParsedTransactionWithMeta = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** The version of the transaction message */\n version?: TransactionVersion;\n};\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type BlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type AccountsModeBlockResponse = VersionedAccountsModeBlockResponse;\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type NoneModeBlockResponse = VersionedNoneModeBlockResponse;\n\n/**\n * A block with parsed transactions\n */\nexport type ParsedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n /** The number of blocks beneath this block */\n blockHeight: number | null;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `accounts`\n */\nexport type ParsedAccountsModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit & {\n transaction: Pick<\n ParsedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A block with parsed transactions where the `transactionDetails` mode is `none`\n */\nexport type ParsedNoneModeBlockResponse = Omit<\n ParsedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type VersionedBlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: VersionedMessage;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The transaction version */\n version?: TransactionVersion;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n /** Vote account commission when the reward was credited, only present for voting and staking rewards */\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `accounts`\n */\nexport type VersionedAccountsModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n> & {\n transactions: Array<\n Omit & {\n transaction: Pick<\n VersionedBlockResponse['transactions'][number]['transaction'],\n 'signatures'\n > & {\n accountKeys: ParsedMessageAccount[];\n };\n }\n >;\n};\n\n/**\n * A processed block fetched from the RPC API where the `transactionDetails` mode is `none`\n */\nexport type VersionedNoneModeBlockResponse = Omit<\n VersionedBlockResponse,\n 'transactions'\n>;\n\n/**\n * A confirmed block on the ledger\n *\n * @deprecated Deprecated since RPC v1.8.0.\n */\nexport type ConfirmedBlock = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions and status metas */\n transactions: Array<{\n transaction: Transaction;\n meta: ConfirmedTransactionMeta | null;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n pubkey: string;\n lamports: number;\n postBalance: number | null;\n rewardType: string | null;\n commission?: number | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A Block on the ledger with signatures only\n */\nexport type BlockSignatures = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of signatures */\n signatures: Array;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * recent block production information\n */\nexport type BlockProduction = Readonly<{\n /** a dictionary of validator identities, as base-58 encoded strings. Value is a two element array containing the number of leader slots and the number of blocks produced */\n byIdentity: Readonly>>;\n /** Block production slot range */\n range: Readonly<{\n /** first slot of the block production information (inclusive) */\n firstSlot: number;\n /** last slot of block production information (inclusive) */\n lastSlot: number;\n }>;\n}>;\n\nexport type GetBlockProductionConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Slot range to return block production for. If parameter not provided, defaults to current epoch. */\n range?: {\n /** first slot to return block production information for (inclusive) */\n firstSlot: number;\n /** last slot to return block production information for (inclusive). If parameter not provided, defaults to the highest slot */\n lastSlot?: number;\n };\n /** Only return results for this validator identity (base-58 encoded) */\n identity?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getBlockProduction\" message\n */\nconst BlockProductionResponseStruct = jsonRpcResultAndContext(\n pick({\n byIdentity: record(string(), array(number())),\n range: pick({\n firstSlot: number(),\n lastSlot: number(),\n }),\n }),\n);\n\n/**\n * A performance sample\n */\nexport type PerfSample = {\n /** Slot number of sample */\n slot: number;\n /** Number of transactions in a sample window */\n numTransactions: number;\n /** Number of slots in a sample window */\n numSlots: number;\n /** Sample window in seconds */\n samplePeriodSecs: number;\n};\n\nfunction createRpcClient(\n url: string,\n httpHeaders?: HttpHeaders,\n customFetch?: FetchFn,\n fetchMiddleware?: FetchMiddleware,\n disableRetryOnRateLimit?: boolean,\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false,\n): RpcClient {\n const fetch = customFetch ? customFetch : fetchImpl;\n let agent: NodeHttpAgent | NodeHttpsAgent | undefined;\n if (process.env.BROWSER) {\n if (httpAgent != null) {\n console.warn(\n 'You have supplied an `httpAgent` when creating a `Connection` in a browser environment.' +\n 'It has been ignored; `httpAgent` is only used in Node environments.',\n );\n }\n } else {\n if (httpAgent == null) {\n if (process.env.NODE_ENV !== 'test') {\n const agentOptions = {\n // One second fewer than the Solana RPC's keepalive timeout.\n // Read more: https://github.com/solana-labs/solana/issues/27859#issuecomment-1340097889\n freeSocketTimeout: 19000,\n keepAlive: true,\n maxSockets: 25,\n };\n if (url.startsWith('https:')) {\n agent = new HttpsKeepAliveAgent(agentOptions);\n } else {\n agent = new HttpKeepAliveAgent(agentOptions);\n }\n }\n } else {\n if (httpAgent !== false) {\n const isHttps = url.startsWith('https:');\n if (isHttps && !(httpAgent instanceof NodeHttpsAgent)) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `https.Agent`. You have, instead, supplied an ' +\n '`http.Agent` through `httpAgent`.',\n );\n } else if (!isHttps && httpAgent instanceof NodeHttpsAgent) {\n throw new Error(\n 'The endpoint `' +\n url +\n '` can only be paired with an `http.Agent`. You have, instead, supplied an ' +\n '`https.Agent` through `httpAgent`.',\n );\n }\n agent = httpAgent;\n }\n }\n }\n\n let fetchWithMiddleware: FetchFn | undefined;\n\n if (fetchMiddleware) {\n fetchWithMiddleware = async (info, init) => {\n const modifiedFetchArgs = await new Promise>(\n (resolve, reject) => {\n try {\n fetchMiddleware(info, init, (modifiedInfo, modifiedInit) =>\n resolve([modifiedInfo, modifiedInit]),\n );\n } catch (error) {\n reject(error);\n }\n },\n );\n return await fetch(...modifiedFetchArgs);\n };\n }\n\n const clientBrowser = new RpcClient(async (request, callback) => {\n const options = {\n method: 'POST',\n body: request,\n agent,\n headers: Object.assign(\n {\n 'Content-Type': 'application/json',\n },\n httpHeaders || {},\n COMMON_HTTP_HEADERS,\n ),\n };\n\n try {\n let too_many_requests_retries = 5;\n let res: Response;\n let waitTime = 500;\n for (;;) {\n if (fetchWithMiddleware) {\n res = await fetchWithMiddleware(url, options);\n } else {\n res = await fetch(url, options);\n }\n\n if (res.status !== 429 /* Too many requests */) {\n break;\n }\n if (disableRetryOnRateLimit === true) {\n break;\n }\n too_many_requests_retries -= 1;\n if (too_many_requests_retries === 0) {\n break;\n }\n console.error(\n `Server responded with ${res.status} ${res.statusText}. Retrying after ${waitTime}ms delay...`,\n );\n await sleep(waitTime);\n waitTime *= 2;\n }\n\n const text = await res.text();\n if (res.ok) {\n callback(null, text);\n } else {\n callback(new Error(`${res.status} ${res.statusText}: ${text}`));\n }\n } catch (err) {\n if (err instanceof Error) callback(err);\n }\n }, {});\n\n return clientBrowser;\n}\n\nfunction createRpcRequest(client: RpcClient): RpcRequest {\n return (method, args) => {\n return new Promise((resolve, reject) => {\n client.request(method, args, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\nfunction createRpcBatchRequest(client: RpcClient): RpcBatchRequest {\n return (requests: RpcParams[]) => {\n return new Promise((resolve, reject) => {\n // Do nothing if requests is empty\n if (requests.length === 0) resolve([]);\n\n const batch = requests.map((params: RpcParams) => {\n return client.request(params.methodName, params.args);\n });\n\n client.request(batch, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\n/**\n * Expected JSON RPC response for the \"getInflationGovernor\" message\n */\nconst GetInflationGovernorRpcResult = jsonRpcResult(GetInflationGovernorResult);\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateRpcResult = jsonRpcResult(GetInflationRateResult);\n\n/**\n * Expected JSON RPC response for the \"getRecentPrioritizationFees\" message\n */\nconst GetRecentPrioritizationFeesRpcResult = jsonRpcResult(\n GetRecentPrioritizationFeesResult,\n);\n\n/**\n * Expected JSON RPC response for the \"getEpochInfo\" message\n */\nconst GetEpochInfoRpcResult = jsonRpcResult(GetEpochInfoResult);\n\n/**\n * Expected JSON RPC response for the \"getEpochSchedule\" message\n */\nconst GetEpochScheduleRpcResult = jsonRpcResult(GetEpochScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"getLeaderSchedule\" message\n */\nconst GetLeaderScheduleRpcResult = jsonRpcResult(GetLeaderScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"minimumLedgerSlot\" and \"getFirstAvailableBlock\" messages\n */\nconst SlotRpcResult = jsonRpcResult(number());\n\n/**\n * Supply\n */\nexport type Supply = {\n /** Total supply in lamports */\n total: number;\n /** Circulating supply in lamports */\n circulating: number;\n /** Non-circulating supply in lamports */\n nonCirculating: number;\n /** List of non-circulating account addresses */\n nonCirculatingAccounts: Array;\n};\n\n/**\n * Expected JSON RPC response for the \"getSupply\" message\n */\nconst GetSupplyRpcResult = jsonRpcResultAndContext(\n pick({\n total: number(),\n circulating: number(),\n nonCirculating: number(),\n nonCirculatingAccounts: array(PublicKeyFromString),\n }),\n);\n\n/**\n * Token amount object which returns a token amount in different formats\n * for various client use cases.\n */\nexport type TokenAmount = {\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC structure for token amounts\n */\nconst TokenAmountResult = pick({\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n});\n\n/**\n * Token address and balance.\n */\nexport type TokenAccountBalancePair = {\n /** Address of the token account */\n address: PublicKey;\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getTokenLargestAccounts\" message\n */\nconst GetTokenLargestAccountsResult = jsonRpcResultAndContext(\n array(\n pick({\n address: PublicKeyFromString,\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message\n */\nconst GetTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\nconst ParsedAccountDataResult = pick({\n program: string(),\n parsed: unknown(),\n space: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message with parsed data\n */\nconst GetParsedTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedAccountDataResult,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\n/**\n * Pair of an account address and its balance\n */\nexport type AccountBalancePair = {\n address: PublicKey;\n lamports: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getLargestAccounts\" message\n */\nconst GetLargestAccountsRpcResult = jsonRpcResultAndContext(\n array(\n pick({\n lamports: number(),\n address: PublicKeyFromString,\n }),\n ),\n);\n\n/**\n * @internal\n */\nconst AccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n});\n\n/**\n * @internal\n */\nconst KeyedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\nconst ParsedOrRawAccountData = coerce(\n union([instance(Buffer), ParsedAccountDataResult]),\n union([RawAccountDataResult, ParsedAccountDataResult]),\n value => {\n if (Array.isArray(value)) {\n return create(value, BufferFromRawAccountData);\n } else {\n return value;\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedAccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedOrRawAccountData,\n rentEpoch: number(),\n});\n\nconst KeyedParsedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: ParsedAccountInfoResult,\n});\n\n/**\n * @internal\n */\nconst StakeActivationResult = pick({\n state: union([\n literal('active'),\n literal('inactive'),\n literal('activating'),\n literal('deactivating'),\n ]),\n active: number(),\n inactive: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getConfirmedSignaturesForAddress2\" message\n */\n\nconst GetConfirmedSignaturesForAddress2RpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getSignaturesForAddress\" message\n */\nconst GetSignaturesForAddressRpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/***\n * Expected JSON RPC response for the \"accountNotification\" message\n */\nconst AccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(AccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst ProgramAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\n/***\n * Expected JSON RPC response for the \"programNotification\" message\n */\nconst ProgramAccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(ProgramAccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst SlotInfoResult = pick({\n parent: number(),\n slot: number(),\n root: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"slotNotification\" message\n */\nconst SlotNotificationResult = pick({\n subscription: number(),\n result: SlotInfoResult,\n});\n\n/**\n * Slot updates which can be used for tracking the live progress of a cluster.\n * - `\"firstShredReceived\"`: connected node received the first shred of a block.\n * Indicates that a new block that is being produced.\n * - `\"completed\"`: connected node has received all shreds of a block. Indicates\n * a block was recently produced.\n * - `\"optimisticConfirmation\"`: block was optimistically confirmed by the\n * cluster. It is not guaranteed that an optimistic confirmation notification\n * will be sent for every finalized blocks.\n * - `\"root\"`: the connected node rooted this block.\n * - `\"createdBank\"`: the connected node has started validating this block.\n * - `\"frozen\"`: the connected node has validated this block.\n * - `\"dead\"`: the connected node failed to validate this block.\n */\nexport type SlotUpdate =\n | {\n type: 'firstShredReceived';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'completed';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'createdBank';\n slot: number;\n timestamp: number;\n parent: number;\n }\n | {\n type: 'frozen';\n slot: number;\n timestamp: number;\n stats: {\n numTransactionEntries: number;\n numSuccessfulTransactions: number;\n numFailedTransactions: number;\n maxTransactionsPerEntry: number;\n };\n }\n | {\n type: 'dead';\n slot: number;\n timestamp: number;\n err: string;\n }\n | {\n type: 'optimisticConfirmation';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'root';\n slot: number;\n timestamp: number;\n };\n\n/**\n * @internal\n */\nconst SlotUpdateResult = union([\n pick({\n type: union([\n literal('firstShredReceived'),\n literal('completed'),\n literal('optimisticConfirmation'),\n literal('root'),\n ]),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('createdBank'),\n parent: number(),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('frozen'),\n slot: number(),\n timestamp: number(),\n stats: pick({\n numTransactionEntries: number(),\n numSuccessfulTransactions: number(),\n numFailedTransactions: number(),\n maxTransactionsPerEntry: number(),\n }),\n }),\n pick({\n type: literal('dead'),\n slot: number(),\n timestamp: number(),\n err: string(),\n }),\n]);\n\n/**\n * Expected JSON RPC response for the \"slotsUpdatesNotification\" message\n */\nconst SlotUpdateNotificationResult = pick({\n subscription: number(),\n result: SlotUpdateResult,\n});\n\n/**\n * Expected JSON RPC response for the \"signatureNotification\" message\n */\nconst SignatureNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(\n union([SignatureStatusResult, SignatureReceivedResult]),\n ),\n});\n\n/**\n * Expected JSON RPC response for the \"rootNotification\" message\n */\nconst RootNotificationResult = pick({\n subscription: number(),\n result: number(),\n});\n\nconst ContactInfoResult = pick({\n pubkey: string(),\n gossip: nullable(string()),\n tpu: nullable(string()),\n rpc: nullable(string()),\n version: nullable(string()),\n});\n\nconst VoteAccountInfoResult = pick({\n votePubkey: string(),\n nodePubkey: string(),\n activatedStake: number(),\n epochVoteAccount: boolean(),\n epochCredits: array(tuple([number(), number(), number()])),\n commission: number(),\n lastVote: number(),\n rootSlot: nullable(number()),\n});\n\n/**\n * Expected JSON RPC response for the \"getVoteAccounts\" message\n */\nconst GetVoteAccounts = jsonRpcResult(\n pick({\n current: array(VoteAccountInfoResult),\n delinquent: array(VoteAccountInfoResult),\n }),\n);\n\nconst ConfirmationStatus = union([\n literal('processed'),\n literal('confirmed'),\n literal('finalized'),\n]);\n\nconst SignatureStatusResponse = pick({\n slot: number(),\n confirmations: nullable(number()),\n err: TransactionErrorResult,\n confirmationStatus: optional(ConfirmationStatus),\n});\n\n/**\n * Expected JSON RPC response for the \"getSignatureStatuses\" message\n */\nconst GetSignatureStatusesRpcResult = jsonRpcResultAndContext(\n array(nullable(SignatureStatusResponse)),\n);\n\n/**\n * Expected JSON RPC response for the \"getMinimumBalanceForRentExemption\" message\n */\nconst GetMinimumBalanceForRentExemptionRpcResult = jsonRpcResult(number());\n\nconst AddressTableLookupStruct = pick({\n accountKey: PublicKeyFromString,\n writableIndexes: array(number()),\n readonlyIndexes: array(number()),\n});\n\nconst ConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(string()),\n header: pick({\n numRequiredSignatures: number(),\n numReadonlySignedAccounts: number(),\n numReadonlyUnsignedAccounts: number(),\n }),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n recentBlockhash: string(),\n addressTableLookups: optional(array(AddressTableLookupStruct)),\n }),\n});\n\nconst AnnotatedAccountKey = pick({\n pubkey: PublicKeyFromString,\n signer: boolean(),\n writable: boolean(),\n source: optional(union([literal('transaction'), literal('lookupTable')])),\n});\n\nconst ConfirmedTransactionAccountsModeResult = pick({\n accountKeys: array(AnnotatedAccountKey),\n signatures: array(string()),\n});\n\nconst ParsedInstructionResult = pick({\n parsed: unknown(),\n program: string(),\n programId: PublicKeyFromString,\n});\n\nconst RawInstructionResult = pick({\n accounts: array(PublicKeyFromString),\n data: string(),\n programId: PublicKeyFromString,\n});\n\nconst InstructionResult = union([\n RawInstructionResult,\n ParsedInstructionResult,\n]);\n\nconst UnknownInstructionResult = union([\n pick({\n parsed: unknown(),\n program: string(),\n programId: string(),\n }),\n pick({\n accounts: array(string()),\n data: string(),\n programId: string(),\n }),\n]);\n\nconst ParsedOrRawInstruction = coerce(\n InstructionResult,\n UnknownInstructionResult,\n value => {\n if ('accounts' in value) {\n return create(value, RawInstructionResult);\n } else {\n return create(value, ParsedInstructionResult);\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(AnnotatedAccountKey),\n instructions: array(ParsedOrRawInstruction),\n recentBlockhash: string(),\n addressTableLookups: optional(nullable(array(AddressTableLookupStruct))),\n }),\n});\n\nconst TokenBalanceResult = pick({\n accountIndex: number(),\n mint: string(),\n owner: optional(string()),\n programId: optional(string()),\n uiTokenAmount: TokenAmountResult,\n});\n\nconst LoadedAddressesResult = pick({\n writable: array(PublicKeyFromString),\n readonly: array(PublicKeyFromString),\n});\n\n/**\n * @internal\n */\nconst ConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(ParsedOrRawInstruction),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number()),\n});\n\nconst TransactionVersionStruct = union([literal(0), literal('legacy')]);\n\n/** @internal */\nconst RewardsResult = pick({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n commission: optional(nullable(number())),\n});\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message\n */\nconst GetParsedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\nconst GetParsedAccountsModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\nconst GetParsedNoneModeBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getConfirmedBlock\" message\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link GetBlockRpcResult} instead.\n */\nconst GetConfirmedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n }),\n ),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockSignaturesRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n signatures: array(string()),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTransaction\" message\n */\nconst GetTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n meta: nullable(ConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n transaction: ConfirmedTransactionResult,\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getTransaction\" message\n */\nconst GetParsedTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n version: optional(TransactionVersionStruct),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getLatestBlockhash\" message\n */\nconst GetLatestBlockhashRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n lastValidBlockHeight: number(),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"isBlockhashValid\" message\n */\nconst IsBlockhashValidRpcResult = jsonRpcResultAndContext(boolean());\n\nconst PerfSampleResult = pick({\n slot: number(),\n numTransactions: number(),\n numSlots: number(),\n samplePeriodSecs: number(),\n});\n\n/*\n * Expected JSON RPC response for \"getRecentPerformanceSamples\" message\n */\nconst GetRecentPerformanceSamplesRpcResult = jsonRpcResult(\n array(PerfSampleResult),\n);\n\n/**\n * Expected JSON RPC response for the \"getFeeCalculatorForBlockhash\" message\n */\nconst GetFeeCalculatorRpcResult = jsonRpcResultAndContext(\n nullable(\n pick({\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"requestAirdrop\" message\n */\nconst RequestAirdropRpcResult = jsonRpcResult(string());\n\n/**\n * Expected JSON RPC response for the \"sendTransaction\" message\n */\nconst SendTransactionRpcResult = jsonRpcResult(string());\n\n/**\n * Information about the latest slot being processed by a node\n */\nexport type SlotInfo = {\n /** Currently processing slot */\n slot: number;\n /** Parent of the current slot */\n parent: number;\n /** The root block of the current slot's fork */\n root: number;\n};\n\n/**\n * Parsed account data\n */\nexport type ParsedAccountData = {\n /** Name of the program that owns this account */\n program: string;\n /** Parsed account data */\n parsed: any;\n /** Space used by account data */\n space: number;\n};\n\n/**\n * Stake Activation data\n */\nexport type StakeActivationData = {\n /** the stake account's activation state */\n state: 'active' | 'inactive' | 'activating' | 'deactivating';\n /** stake active during the epoch */\n active: number;\n /** stake inactive during the epoch */\n inactive: number;\n};\n\n/**\n * Data slice argument for getProgramAccounts\n */\nexport type DataSlice = {\n /** offset of data slice */\n offset: number;\n /** length of data slice */\n length: number;\n};\n\n/**\n * Memory comparison filter for getProgramAccounts\n */\nexport type MemcmpFilter = {\n memcmp: {\n /** offset into program account data to start comparison */\n offset: number;\n } & (\n | {\n encoding?: 'base58'; // Base-58 is the default when not supplied.\n /** data to match, as base-58 encoded string and limited to less than 129 bytes */\n bytes: string;\n }\n | {\n encoding: 'base64';\n /** data to match, as base-64 encoded string */\n bytes: string;\n }\n );\n};\n\n/**\n * Data size comparison filter for getProgramAccounts\n */\nexport type DataSizeFilter = {\n /** Size of data for program account data length comparison */\n dataSize: number;\n};\n\n/**\n * A filter object for getProgramAccounts\n */\nexport type GetProgramAccountsFilter = MemcmpFilter | DataSizeFilter;\n\n/**\n * Configuration object for getProgramAccounts requests\n */\nexport type GetProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional encoding for account data (default base64)\n * To use \"jsonParsed\" encoding, please refer to `getParsedProgramAccounts` in connection.ts\n * */\n encoding?: 'base64';\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** wrap the result in an RpcResponse JSON object */\n withContext?: boolean;\n};\n\nexport type GetProgramAccountsResponse = readonly Readonly<{\n account: AccountInfo;\n /** the account Pubkey as base-58 encoded string */\n pubkey: PublicKey;\n}>[];\n\n/**\n * Configuration object for getParsedProgramAccounts\n */\nexport type GetParsedProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for getMultipleAccounts\n */\nexport type GetMultipleAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetStakeActivationConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Epoch for which to calculate activation details. If parameter not provided, defaults to current epoch */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTokenAccountsByOwnerConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTransactionCountConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonce`\n */\nexport type GetNonceConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getNonceAndContext`\n */\nexport type GetNonceAndContextConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\nexport type AccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n}>;\n\nexport type ProgramAccountSubscriptionConfig = Readonly<{\n /** Optional commitment level */\n commitment?: Commitment;\n /**\n * Encoding format for Account data\n * - `base58` is slow.\n * - `jsonParsed` encoding attempts to use program-specific state parsers to return more\n * human-readable and explicit account state data\n * - If `jsonParsed` is requested but a parser cannot be found, the field falls back to `base64`\n * encoding, detectable when the `data` field is type `string`.\n */\n encoding?: 'base58' | 'base64' | 'base64+zstd' | 'jsonParsed';\n /**\n * Filter results using various filter objects\n * The resultant account must meet ALL filter criteria to be included in the returned results\n */\n filters?: GetProgramAccountsFilter[];\n}>;\n\n/**\n * Information describing an account\n */\nexport type AccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: PublicKey;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: T;\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\n/**\n * Account information identified by pubkey\n */\nexport type KeyedAccountInfo = {\n accountId: PublicKey;\n accountInfo: AccountInfo;\n};\n\n/**\n * Callback function for account change notifications\n */\nexport type AccountChangeCallback = (\n accountInfo: AccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for program account change notifications\n */\nexport type ProgramAccountChangeCallback = (\n keyedAccountInfo: KeyedAccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for slot change notifications\n */\nexport type SlotChangeCallback = (slotInfo: SlotInfo) => void;\n\n/**\n * Callback function for slot update notifications\n */\nexport type SlotUpdateCallback = (slotUpdate: SlotUpdate) => void;\n\n/**\n * Callback function for signature status notifications\n */\nexport type SignatureResultCallback = (\n signatureResult: SignatureResult,\n context: Context,\n) => void;\n\n/**\n * Signature status notification with transaction result\n */\nexport type SignatureStatusNotification = {\n type: 'status';\n result: SignatureResult;\n};\n\n/**\n * Signature received notification\n */\nexport type SignatureReceivedNotification = {\n type: 'received';\n};\n\n/**\n * Callback function for signature notifications\n */\nexport type SignatureSubscriptionCallback = (\n notification: SignatureStatusNotification | SignatureReceivedNotification,\n context: Context,\n) => void;\n\n/**\n * Signature subscription options\n */\nexport type SignatureSubscriptionOptions = {\n commitment?: Commitment;\n enableReceivedNotification?: boolean;\n};\n\n/**\n * Callback function for root change notifications\n */\nexport type RootChangeCallback = (root: number) => void;\n\n/**\n * @internal\n */\nconst LogsResult = pick({\n err: TransactionErrorResult,\n logs: array(string()),\n signature: string(),\n});\n\n/**\n * Logs result.\n */\nexport type Logs = {\n err: TransactionError | null;\n logs: string[];\n signature: string;\n};\n\n/**\n * Expected JSON RPC response for the \"logsNotification\" message.\n */\nconst LogsNotificationResult = pick({\n result: notificationResultAndContext(LogsResult),\n subscription: number(),\n});\n\n/**\n * Filter for log subscriptions.\n */\nexport type LogsFilter = PublicKey | 'all' | 'allWithVotes';\n\n/**\n * Callback function for log notifications.\n */\nexport type LogsCallback = (logs: Logs, ctx: Context) => void;\n\n/**\n * Signature result\n */\nexport type SignatureResult = {\n err: TransactionError | null;\n};\n\n/**\n * Transaction error\n */\nexport type TransactionError = {} | string;\n\n/**\n * Transaction confirmation status\n *
\n *   'processed': Transaction landed in a block which has reached 1 confirmation by the connected node\n *   'confirmed': Transaction landed in a block which has reached 1 confirmation by the cluster\n *   'finalized': Transaction landed in a block which has been finalized by the cluster\n * 
\n */\nexport type TransactionConfirmationStatus =\n | 'processed'\n | 'confirmed'\n | 'finalized';\n\n/**\n * Signature status\n */\nexport type SignatureStatus = {\n /** when the transaction was processed */\n slot: number;\n /** the number of blocks that have been confirmed and voted on in the fork containing `slot` */\n confirmations: number | null;\n /** transaction error, if any */\n err: TransactionError | null;\n /** cluster confirmation status, if data available. Possible responses: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * A confirmed signature with its status\n */\nexport type ConfirmedSignatureInfo = {\n /** the transaction signature */\n signature: string;\n /** when the transaction was processed */\n slot: number;\n /** error, if any */\n err: TransactionError | null;\n /** memo associated with the transaction, if any */\n memo: string | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n /** Cluster confirmation status, if available. Possible values: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * An object defining headers to be passed to the RPC server\n */\nexport type HttpHeaders = {\n [header: string]: string;\n} & {\n // Prohibited headers; for internal use only.\n 'solana-client'?: never;\n};\n\n/**\n * The type of the JavaScript `fetch()` API\n */\nexport type FetchFn = typeof fetchImpl;\n\n/**\n * A callback used to augment the outgoing HTTP request\n */\nexport type FetchMiddleware = (\n info: Parameters[0],\n init: Parameters[1],\n fetch: (...a: Parameters) => void,\n) => void;\n\n/**\n * Configuration for instantiating a Connection\n */\nexport type ConnectionConfig = {\n /**\n * An `http.Agent` that will be used to manage socket connections (eg. to implement connection\n * persistence). Set this to `false` to create a connection that uses no agent. This applies to\n * Node environments only.\n */\n httpAgent?: NodeHttpAgent | NodeHttpsAgent | false;\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional endpoint URL to the fullnode JSON RPC PubSub WebSocket Endpoint */\n wsEndpoint?: string;\n /** Optional HTTP headers object */\n httpHeaders?: HttpHeaders;\n /** Optional custom fetch function */\n fetch?: FetchFn;\n /** Optional fetch middleware callback */\n fetchMiddleware?: FetchMiddleware;\n /** Optional Disable retrying calls when server responds with HTTP 429 (Too Many Requests) */\n disableRetryOnRateLimit?: boolean;\n /** time to allow for the server to initially process a transaction (in milliseconds) */\n confirmTransactionInitialTimeout?: number;\n};\n\n/** @internal */\nconst COMMON_HTTP_HEADERS = {\n 'solana-client': `js/${process.env.npm_package_version ?? 'UNKNOWN'}`,\n};\n\n/**\n * A connection to a fullnode JSON RPC endpoint\n */\nexport class Connection {\n /** @internal */ _commitment?: Commitment;\n /** @internal */ _confirmTransactionInitialTimeout?: number;\n /** @internal */ _rpcEndpoint: string;\n /** @internal */ _rpcWsEndpoint: string;\n /** @internal */ _rpcClient: RpcClient;\n /** @internal */ _rpcRequest: RpcRequest;\n /** @internal */ _rpcBatchRequest: RpcBatchRequest;\n /** @internal */ _rpcWebSocket: RpcWebSocketClient;\n /** @internal */ _rpcWebSocketConnected: boolean = false;\n /** @internal */ _rpcWebSocketHeartbeat: ReturnType<\n typeof setInterval\n > | null = null;\n /** @internal */ _rpcWebSocketIdleTimeout: ReturnType<\n typeof setTimeout\n > | null = null;\n /** @internal\n * A number that we increment every time an active connection closes.\n * Used to determine whether the same socket connection that was open\n * when an async operation started is the same one that's active when\n * its continuation fires.\n *\n */ private _rpcWebSocketGeneration: number = 0;\n\n /** @internal */ _disableBlockhashCaching: boolean = false;\n /** @internal */ _pollingBlockhash: boolean = false;\n /** @internal */ _blockhashInfo: {\n latestBlockhash: BlockhashWithExpiryBlockHeight | null;\n lastFetch: number;\n simulatedSignatures: Array;\n transactionSignatures: Array;\n } = {\n latestBlockhash: null,\n lastFetch: 0,\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n\n /** @internal */ private _nextClientSubscriptionId: ClientSubscriptionId = 0;\n /** @internal */ private _subscriptionDisposeFunctionsByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionDisposeFn\n | undefined;\n } = {};\n /** @internal */ private _subscriptionHashByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionConfigHash\n | undefined;\n } = {};\n /** @internal */ private _subscriptionStateChangeCallbacksByHash: {\n [hash: SubscriptionConfigHash]:\n | Set\n | undefined;\n } = {};\n /** @internal */ private _subscriptionCallbacksByServerSubscriptionId: {\n [serverSubscriptionId: ServerSubscriptionId]:\n | Set\n | undefined;\n } = {};\n /** @internal */ private _subscriptionsByHash: {\n [hash: SubscriptionConfigHash]: Subscription | undefined;\n } = {};\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n /** @internal */ private _subscriptionsAutoDisposedByRpc: Set =\n new Set();\n\n /**\n * Establish a JSON RPC connection\n *\n * @param endpoint URL to the fullnode JSON RPC endpoint\n * @param commitmentOrConfig optional default commitment level or optional ConnectionConfig configuration object\n */\n constructor(\n endpoint: string,\n commitmentOrConfig?: Commitment | ConnectionConfig,\n ) {\n let wsEndpoint;\n let httpHeaders;\n let fetch;\n let fetchMiddleware;\n let disableRetryOnRateLimit;\n let httpAgent;\n if (commitmentOrConfig && typeof commitmentOrConfig === 'string') {\n this._commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n this._commitment = commitmentOrConfig.commitment;\n this._confirmTransactionInitialTimeout =\n commitmentOrConfig.confirmTransactionInitialTimeout;\n wsEndpoint = commitmentOrConfig.wsEndpoint;\n httpHeaders = commitmentOrConfig.httpHeaders;\n fetch = commitmentOrConfig.fetch;\n fetchMiddleware = commitmentOrConfig.fetchMiddleware;\n disableRetryOnRateLimit = commitmentOrConfig.disableRetryOnRateLimit;\n httpAgent = commitmentOrConfig.httpAgent;\n }\n\n this._rpcEndpoint = assertEndpointUrl(endpoint);\n this._rpcWsEndpoint = wsEndpoint || makeWebsocketUrl(endpoint);\n\n this._rpcClient = createRpcClient(\n endpoint,\n httpHeaders,\n fetch,\n fetchMiddleware,\n disableRetryOnRateLimit,\n httpAgent,\n );\n this._rpcRequest = createRpcRequest(this._rpcClient);\n this._rpcBatchRequest = createRpcBatchRequest(this._rpcClient);\n\n this._rpcWebSocket = new RpcWebSocketClient(this._rpcWsEndpoint, {\n autoconnect: false,\n max_reconnects: Infinity,\n });\n this._rpcWebSocket.on('open', this._wsOnOpen.bind(this));\n this._rpcWebSocket.on('error', this._wsOnError.bind(this));\n this._rpcWebSocket.on('close', this._wsOnClose.bind(this));\n this._rpcWebSocket.on(\n 'accountNotification',\n this._wsOnAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'programNotification',\n this._wsOnProgramAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotNotification',\n this._wsOnSlotNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotsUpdatesNotification',\n this._wsOnSlotUpdatesNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'signatureNotification',\n this._wsOnSignatureNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'rootNotification',\n this._wsOnRootNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'logsNotification',\n this._wsOnLogsNotification.bind(this),\n );\n }\n\n /**\n * The default commitment used for requests\n */\n get commitment(): Commitment | undefined {\n return this._commitment;\n }\n\n /**\n * The RPC endpoint\n */\n get rpcEndpoint(): string {\n return this._rpcEndpoint;\n }\n\n /**\n * Fetch the balance for the specified public key, return with context\n */\n async getBalanceAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise> {\n /** @internal */\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get balance for ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the balance for the specified public key\n */\n async getBalance(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise {\n return await this.getBalanceAndContext(publicKey, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get balance of account ' + publicKey.toBase58() + ': ' + e,\n );\n });\n }\n\n /**\n * Fetch the estimated production time of a block\n */\n async getBlockTime(slot: number): Promise {\n const unsafeRes = await this._rpcRequest('getBlockTime', [slot]);\n const res = create(unsafeRes, jsonRpcResult(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get block time for slot ${slot}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the lowest slot that the node has information about in its ledger.\n * This value may increase over time if the node is configured to purge older ledger data\n */\n async getMinimumLedgerSlot(): Promise {\n const unsafeRes = await this._rpcRequest('minimumLedgerSlot', []);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get minimum ledger slot',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the slot of the lowest confirmed block that has not been purged from the ledger\n */\n async getFirstAvailableBlock(): Promise {\n const unsafeRes = await this._rpcRequest('getFirstAvailableBlock', []);\n const res = create(unsafeRes, SlotRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get first available block',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch information about the current supply\n */\n async getSupply(\n config?: GetSupplyConfig | Commitment,\n ): Promise> {\n let configArg: GetSupplyConfig = {};\n if (typeof config === 'string') {\n configArg = {commitment: config};\n } else if (config) {\n configArg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n } else {\n configArg = {\n commitment: this.commitment,\n };\n }\n\n const unsafeRes = await this._rpcRequest('getSupply', [configArg]);\n const res = create(unsafeRes, GetSupplyRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current supply of a token mint\n */\n async getTokenSupply(\n tokenMintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([tokenMintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenSupply', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get token supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current balance of a token account\n */\n async getTokenAccountBalance(\n tokenAddress: PublicKey,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([tokenAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenAccountBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token account balance',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the token accounts owned by the specified account\n *\n * @return {Promise}\n */\n async getTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitmentOrConfig?: Commitment | GetTokenAccountsByOwnerConfig,\n ): Promise> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed token accounts owned by the specified account\n *\n * @return {Promise}>>>}\n */\n async getParsedTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<\n Array<{pubkey: PublicKey; account: AccountInfo}>\n >\n > {\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'jsonParsed');\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetParsedTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest accounts with their current balances\n */\n async getLargestAccounts(\n config?: GetLargestAccountsConfig,\n ): Promise>> {\n const arg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n const args = arg.filter || arg.commitment ? [arg] : [];\n const unsafeRes = await this._rpcRequest('getLargestAccounts', args);\n const res = create(unsafeRes, GetLargestAccountsRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get largest accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest token accounts with their current balances\n * for a given mint.\n */\n async getTokenLargestAccounts(\n mintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise>> {\n const args = this._buildArgs([mintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenLargestAccounts', args);\n const res = create(unsafeRes, GetTokenLargestAccountsResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token largest accounts',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key, return with context\n */\n async getAccountInfoAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise | null>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'base64',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(AccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed account info for the specified public key\n */\n async getParsedAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<\n RpcResponseAndContext | null>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(ParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key\n */\n async getAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise | null> {\n try {\n const res = await this.getAccountInfoAndContext(\n publicKey,\n commitmentOrConfig,\n );\n return res.value;\n } catch (e) {\n throw new Error(\n 'failed to get info about account ' + publicKey.toBase58() + ': ' + e,\n );\n }\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleParsedAccounts(\n publicKeys: PublicKey[],\n rawConfig?: GetMultipleAccountsConfig,\n ): Promise<\n RpcResponseAndContext<(AccountInfo | null)[]>\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'jsonParsed', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(ParsedAccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleAccountsInfoAndContext(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise | null)[]>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(AccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys\n */\n async getMultipleAccountsInfo(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<(AccountInfo | null)[]> {\n const res = await this.getMultipleAccountsInfoAndContext(\n publicKeys,\n commitmentOrConfig,\n );\n return res.value;\n }\n\n /**\n * Returns epoch activation information for a stake account that has been delegated\n *\n * @deprecated Deprecated since RPC v1.18; will be removed in a future version.\n */\n async getStakeActivation(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetStakeActivationConfig,\n epoch?: number,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n\n const unsafeRes = await this._rpcRequest('getStakeActivation', args);\n const res = create(unsafeRes, jsonRpcResult(StakeActivationResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get Stake Activation ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the accounts owned by the specified program id\n *\n * @return {Promise}>>}\n */\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment: GetProgramAccountsConfig &\n Readonly<{withContext: true}>,\n ): Promise>;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise;\n // eslint-disable-next-line no-dupe-class-members\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise<\n | GetProgramAccountsResponse\n | RpcResponseAndContext\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const {encoding, ...configWithoutEncoding} = config || {};\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n encoding || 'base64',\n {\n ...configWithoutEncoding,\n ...(configWithoutEncoding.filters\n ? {\n filters: applyDefaultMemcmpEncodingToFilters(\n configWithoutEncoding.filters,\n ),\n }\n : null),\n },\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const baseSchema = array(KeyedAccountInfoResult);\n const res =\n configWithoutEncoding.withContext === true\n ? create(unsafeRes, jsonRpcResultAndContext(baseSchema))\n : create(unsafeRes, jsonRpcResult(baseSchema));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch and parse all the accounts owned by the specified program id\n *\n * @return {Promise}>>}\n */\n async getParsedProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetParsedProgramAccountsConfig | Commitment,\n ): Promise<\n Array<{\n pubkey: PublicKey;\n account: AccountInfo;\n }>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResult(array(KeyedParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n confirmTransaction(\n strategy: TransactionConfirmationStrategy,\n commitment?: Commitment,\n ): Promise>;\n\n /** @deprecated Instead, call `confirmTransaction` and pass in {@link TransactionConfirmationStrategy} */\n // eslint-disable-next-line no-dupe-class-members\n confirmTransaction(\n strategy: TransactionSignature,\n commitment?: Commitment,\n ): Promise>;\n\n // eslint-disable-next-line no-dupe-class-members\n async confirmTransaction(\n strategy: TransactionConfirmationStrategy | TransactionSignature,\n commitment?: Commitment,\n ): Promise> {\n let rawSignature: string;\n\n if (typeof strategy == 'string') {\n rawSignature = strategy;\n } else {\n const config = strategy as TransactionConfirmationStrategy;\n\n if (config.abortSignal?.aborted) {\n return Promise.reject(config.abortSignal.reason);\n }\n rawSignature = config.signature;\n }\n\n let decodedSignature;\n\n try {\n decodedSignature = bs58.decode(rawSignature);\n } catch (err) {\n throw new Error('signature must be base58 encoded: ' + rawSignature);\n }\n\n assert(decodedSignature.length === 64, 'signature has invalid length');\n\n if (typeof strategy === 'string') {\n return await this.confirmTransactionUsingLegacyTimeoutStrategy({\n commitment: commitment || this.commitment,\n signature: rawSignature,\n });\n } else if ('lastValidBlockHeight' in strategy) {\n return await this.confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n } else {\n return await this.confirmTransactionUsingDurableNonceStrategy({\n commitment: commitment || this.commitment,\n strategy,\n });\n }\n }\n\n private getCancellationPromise(signal?: AbortSignal): Promise {\n return new Promise((_, reject) => {\n if (signal == null) {\n return;\n }\n if (signal.aborted) {\n reject(signal.reason);\n } else {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n });\n }\n });\n }\n\n private getTransactionConfirmationPromise({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }): {\n abortConfirmation(): void;\n confirmationPromise: Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext;\n }>;\n } {\n let signatureSubscriptionId: number | undefined;\n let disposeSignatureSubscriptionStateChangeObserver:\n | SubscriptionStateChangeDisposeFn\n | undefined;\n let done = false;\n const confirmationPromise = new Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext;\n }>((resolve, reject) => {\n try {\n signatureSubscriptionId = this.onSignature(\n signature,\n (result: SignatureResult, context: Context) => {\n signatureSubscriptionId = undefined;\n const response = {\n context,\n value: result,\n };\n resolve({__type: TransactionStatus.PROCESSED, response});\n },\n commitment,\n );\n const subscriptionSetupPromise = new Promise(\n resolveSubscriptionSetup => {\n if (signatureSubscriptionId == null) {\n resolveSubscriptionSetup();\n } else {\n disposeSignatureSubscriptionStateChangeObserver =\n this._onSubscriptionStateChange(\n signatureSubscriptionId,\n nextState => {\n if (nextState === 'subscribed') {\n resolveSubscriptionSetup();\n }\n },\n );\n }\n },\n );\n (async () => {\n await subscriptionSetupPromise;\n if (done) return;\n const response = await this.getSignatureStatus(signature);\n if (done) return;\n if (response == null) {\n return;\n }\n const {context, value} = response;\n if (value == null) {\n return;\n }\n if (value?.err) {\n reject(value.err);\n } else {\n switch (commitment) {\n case 'confirmed':\n case 'single':\n case 'singleGossip': {\n if (value.confirmationStatus === 'processed') {\n return;\n }\n break;\n }\n case 'finalized':\n case 'max':\n case 'root': {\n if (\n value.confirmationStatus === 'processed' ||\n value.confirmationStatus === 'confirmed'\n ) {\n return;\n }\n break;\n }\n // exhaust enums to ensure full coverage\n case 'processed':\n case 'recent':\n }\n done = true;\n resolve({\n __type: TransactionStatus.PROCESSED,\n response: {\n context,\n value,\n },\n });\n }\n })();\n } catch (err) {\n reject(err);\n }\n });\n const abortConfirmation = () => {\n if (disposeSignatureSubscriptionStateChangeObserver) {\n disposeSignatureSubscriptionStateChangeObserver();\n disposeSignatureSubscriptionStateChangeObserver = undefined;\n }\n if (signatureSubscriptionId != null) {\n this.removeSignatureListener(signatureSubscriptionId);\n signatureSubscriptionId = undefined;\n }\n };\n return {abortConfirmation, confirmationPromise};\n }\n\n private async confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment,\n strategy: {abortSignal, lastValidBlockHeight, signature},\n }: {\n commitment?: Commitment;\n strategy: BlockheightBasedTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.BLOCKHEIGHT_EXCEEDED;\n }>(resolve => {\n const checkBlockHeight = async () => {\n try {\n const blockHeight = await this.getBlockHeight(commitment);\n return blockHeight;\n } catch (_e) {\n return -1;\n }\n };\n (async () => {\n let currentBlockHeight = await checkBlockHeight();\n if (done) return;\n while (currentBlockHeight <= lastValidBlockHeight) {\n await sleep(1000);\n if (done) return;\n currentBlockHeight = await checkBlockHeight();\n if (done) return;\n }\n resolve({__type: TransactionStatus.BLOCKHEIGHT_EXCEEDED});\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredBlockheightExceededError(signature);\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingDurableNonceStrategy({\n commitment,\n strategy: {\n abortSignal,\n minContextSlot,\n nonceAccountPubkey,\n nonceValue,\n signature,\n },\n }: {\n commitment?: Commitment;\n strategy: DurableNonceTransactionConfirmationStrategy;\n }) {\n let done: boolean = false;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.NONCE_INVALID;\n slotInWhichNonceDidAdvance: number | null;\n }>(resolve => {\n let currentNonceValue: string | undefined = nonceValue;\n let lastCheckedSlot: number | null = null;\n const getCurrentNonceValue = async () => {\n try {\n const {context, value: nonceAccount} = await this.getNonceAndContext(\n nonceAccountPubkey,\n {\n commitment,\n minContextSlot,\n },\n );\n lastCheckedSlot = context.slot;\n return nonceAccount?.nonce;\n } catch (e) {\n // If for whatever reason we can't reach/read the nonce\n // account, just keep using the last-known value.\n return currentNonceValue;\n }\n };\n (async () => {\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n if (nonceValue !== currentNonceValue) {\n resolve({\n __type: TransactionStatus.NONCE_INVALID,\n slotInWhichNonceDidAdvance: lastCheckedSlot,\n });\n return;\n }\n await sleep(2000);\n if (done) return;\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n }\n })();\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({commitment, signature});\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result: RpcResponseAndContext;\n try {\n const outcome = await Promise.race([\n cancellationPromise,\n confirmationPromise,\n expiryPromise,\n ]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n // Double check that the transaction is indeed unconfirmed.\n let signatureStatus:\n | RpcResponseAndContext\n | null\n | undefined;\n while (\n true // eslint-disable-line no-constant-condition\n ) {\n const status = await this.getSignatureStatus(signature);\n if (status == null) {\n break;\n }\n if (\n status.context.slot <\n (outcome.slotInWhichNonceDidAdvance ?? minContextSlot)\n ) {\n await sleep(400);\n continue;\n }\n signatureStatus = status;\n break;\n }\n if (signatureStatus?.value) {\n const commitmentForStatus = commitment || 'finalized';\n const {confirmationStatus} = signatureStatus.value;\n switch (commitmentForStatus) {\n case 'processed':\n case 'recent':\n if (\n confirmationStatus !== 'processed' &&\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'confirmed':\n case 'single':\n case 'singleGossip':\n if (\n confirmationStatus !== 'confirmed' &&\n confirmationStatus !== 'finalized'\n ) {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n case 'finalized':\n case 'max':\n case 'root':\n if (confirmationStatus !== 'finalized') {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n break;\n default:\n // Exhaustive switch.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ((_: never) => {})(commitmentForStatus);\n }\n result = {\n context: signatureStatus.context,\n value: {err: signatureStatus.value.err},\n };\n } else {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n return result;\n }\n\n private async confirmTransactionUsingLegacyTimeoutStrategy({\n commitment,\n signature,\n }: {\n commitment?: Commitment;\n signature: string;\n }) {\n let timeoutId;\n const expiryPromise = new Promise<{\n __type: TransactionStatus.TIMED_OUT;\n timeoutMs: number;\n }>(resolve => {\n let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;\n switch (commitment) {\n case 'processed':\n case 'recent':\n case 'single':\n case 'confirmed':\n case 'singleGossip': {\n timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;\n break;\n }\n // exhaust enums to ensure full coverage\n case 'finalized':\n case 'max':\n case 'root':\n }\n timeoutId = setTimeout(\n () => resolve({__type: TransactionStatus.TIMED_OUT, timeoutMs}),\n timeoutMs,\n );\n });\n const {abortConfirmation, confirmationPromise} =\n this.getTransactionConfirmationPromise({\n commitment,\n signature,\n });\n let result: RpcResponseAndContext;\n try {\n const outcome = await Promise.race([confirmationPromise, expiryPromise]);\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredTimeoutError(\n signature,\n outcome.timeoutMs / 1000,\n );\n }\n } finally {\n clearTimeout(timeoutId);\n abortConfirmation();\n }\n return result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getClusterNodes(): Promise> {\n const unsafeRes = await this._rpcRequest('getClusterNodes', []);\n const res = create(unsafeRes, jsonRpcResult(array(ContactInfoResult)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get cluster nodes');\n }\n return res.result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getVoteAccounts(commitment?: Commitment): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getVoteAccounts', args);\n const res = create(unsafeRes, GetVoteAccounts);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get vote accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot that the node is processing\n */\n async getSlot(\n commitmentOrConfig?: Commitment | GetSlotConfig,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlot', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot leader of the cluster\n */\n async getSlotLeader(\n commitmentOrConfig?: Commitment | GetSlotLeaderConfig,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlotLeader', args);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leader');\n }\n return res.result;\n }\n\n /**\n * Fetch `limit` number of slot leaders starting from `startSlot`\n *\n * @param startSlot fetch slot leaders starting from this slot\n * @param limit number of slot leaders to return\n */\n async getSlotLeaders(\n startSlot: number,\n limit: number,\n ): Promise> {\n const args = [startSlot, limit];\n const unsafeRes = await this._rpcRequest('getSlotLeaders', args);\n const res = create(unsafeRes, jsonRpcResult(array(PublicKeyFromString)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leaders');\n }\n return res.result;\n }\n\n /**\n * Fetch the current status of a signature\n */\n async getSignatureStatus(\n signature: TransactionSignature,\n config?: SignatureStatusConfig,\n ): Promise> {\n const {context, value: values} = await this.getSignatureStatuses(\n [signature],\n config,\n );\n assert(values.length === 1);\n const value = values[0];\n return {context, value};\n }\n\n /**\n * Fetch the current statuses of a batch of signatures\n */\n async getSignatureStatuses(\n signatures: Array,\n config?: SignatureStatusConfig,\n ): Promise>> {\n const params: any[] = [signatures];\n if (config) {\n params.push(config);\n }\n const unsafeRes = await this._rpcRequest('getSignatureStatuses', params);\n const res = create(unsafeRes, GetSignatureStatusesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get signature status');\n }\n return res.result;\n }\n\n /**\n * Fetch the current transaction count of the cluster\n */\n async getTransactionCount(\n commitmentOrConfig?: Commitment | GetTransactionCountConfig,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransactionCount', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get transaction count',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the current total currency supply of the cluster in lamports\n *\n * @deprecated Deprecated since RPC v1.2.8. Please use {@link getSupply} instead.\n */\n async getTotalSupply(commitment?: Commitment): Promise {\n const result = await this.getSupply({\n commitment,\n excludeNonCirculatingAccountsList: true,\n });\n return result.value.total;\n }\n\n /**\n * Fetch the cluster InflationGovernor parameters\n */\n async getInflationGovernor(\n commitment?: Commitment,\n ): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getInflationGovernor', args);\n const res = create(unsafeRes, GetInflationGovernorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation');\n }\n return res.result;\n }\n\n /**\n * Fetch the inflation reward for a list of addresses for an epoch\n */\n async getInflationReward(\n addresses: PublicKey[],\n epoch?: number,\n commitmentOrConfig?: Commitment | GetInflationRewardConfig,\n ): Promise<(InflationReward | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [addresses.map(pubkey => pubkey.toBase58())],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n const unsafeRes = await this._rpcRequest('getInflationReward', args);\n const res = create(unsafeRes, GetInflationRewardResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation reward');\n }\n return res.result;\n }\n\n /**\n * Fetch the specific inflation values for the current epoch\n */\n async getInflationRate(): Promise {\n const unsafeRes = await this._rpcRequest('getInflationRate', []);\n const res = create(unsafeRes, GetInflationRateRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation rate');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Info parameters\n */\n async getEpochInfo(\n commitmentOrConfig?: Commitment | GetEpochInfoConfig,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getEpochInfo', args);\n const res = create(unsafeRes, GetEpochInfoRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch info');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Schedule parameters\n */\n async getEpochSchedule(): Promise {\n const unsafeRes = await this._rpcRequest('getEpochSchedule', []);\n const res = create(unsafeRes, GetEpochScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch schedule');\n }\n const epochSchedule = res.result;\n return new EpochSchedule(\n epochSchedule.slotsPerEpoch,\n epochSchedule.leaderScheduleSlotOffset,\n epochSchedule.warmup,\n epochSchedule.firstNormalEpoch,\n epochSchedule.firstNormalSlot,\n );\n }\n\n /**\n * Fetch the leader schedule for the current epoch\n * @return {Promise>}\n */\n async getLeaderSchedule(): Promise {\n const unsafeRes = await this._rpcRequest('getLeaderSchedule', []);\n const res = create(unsafeRes, GetLeaderScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get leader schedule');\n }\n return res.result;\n }\n\n /**\n * Fetch the minimum balance needed to exempt an account of `dataLength`\n * size from rent\n */\n async getMinimumBalanceForRentExemption(\n dataLength: number,\n commitment?: Commitment,\n ): Promise {\n const args = this._buildArgs([dataLength], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getMinimumBalanceForRentExemption',\n args,\n );\n const res = create(unsafeRes, GetMinimumBalanceForRentExemptionRpcResult);\n if ('error' in res) {\n console.warn('Unable to fetch minimum balance for rent exemption');\n return 0;\n }\n return res.result;\n }\n\n /**\n * Fetch a recent blockhash from the cluster, return with context\n * @return {Promise>}\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhashAndContext(commitment?: Commitment): Promise<\n RpcResponseAndContext<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n }>\n > {\n const {\n context,\n value: {blockhash},\n } = await this.getLatestBlockhashAndContext(commitment);\n const feeCalculator = {\n get lamportsPerSignature(): number {\n throw new Error(\n 'The capability to fetch `lamportsPerSignature` using the `getRecentBlockhash` API is ' +\n 'no longer offered by the network. Use the `getFeeForMessage` API to obtain the fee ' +\n 'for a given message.',\n );\n },\n toJSON() {\n return {};\n },\n };\n return {\n context,\n value: {\n blockhash,\n feeCalculator,\n },\n };\n }\n\n /**\n * Fetch recent performance samples\n * @return {Promise>}\n */\n async getRecentPerformanceSamples(\n limit?: number,\n ): Promise> {\n const unsafeRes = await this._rpcRequest(\n 'getRecentPerformanceSamples',\n limit ? [limit] : [],\n );\n const res = create(unsafeRes, GetRecentPerformanceSamplesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent performance samples',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch the fee calculator for a recent blockhash from the cluster, return with context\n *\n * @deprecated Deprecated since RPC v1.9.0. Please use {@link getFeeForMessage} instead.\n */\n async getFeeCalculatorForBlockhash(\n blockhash: Blockhash,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([blockhash], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getFeeCalculatorForBlockhash',\n args,\n );\n\n const res = create(unsafeRes, GetFeeCalculatorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee calculator');\n }\n const {context, value} = res.result;\n return {\n context,\n value: value !== null ? value.feeCalculator : null,\n };\n }\n\n /**\n * Fetch the fee for a message from the cluster, return with context\n */\n async getFeeForMessage(\n message: VersionedMessage,\n commitment?: Commitment,\n ): Promise> {\n const wireMessage = toBuffer(message.serialize()).toString('base64');\n const args = this._buildArgs([wireMessage], commitment);\n const unsafeRes = await this._rpcRequest('getFeeForMessage', args);\n\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee for message');\n }\n if (res.result === null) {\n throw new Error('invalid blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of prioritization fees from recent blocks.\n */\n async getRecentPrioritizationFees(\n config?: GetRecentPrioritizationFeesConfig,\n ): Promise {\n const accounts = config?.lockedWritableAccounts?.map(key => key.toBase58());\n const args = accounts?.length ? [accounts] : [];\n const unsafeRes = await this._rpcRequest(\n 'getRecentPrioritizationFees',\n args,\n );\n const res = create(unsafeRes, GetRecentPrioritizationFeesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent prioritization fees',\n );\n }\n return res.result;\n }\n /**\n * Fetch a recent blockhash from the cluster\n * @return {Promise<{blockhash: Blockhash, feeCalculator: FeeCalculator}>}\n *\n * @deprecated Deprecated since RPC v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhash(\n commitment?: Commitment,\n ): Promise<{blockhash: Blockhash; feeCalculator: FeeCalculator}> {\n try {\n const res = await this.getRecentBlockhashAndContext(commitment);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise}\n */\n async getLatestBlockhash(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise {\n try {\n const res = await this.getLatestBlockhashAndContext(commitmentOrConfig);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise}\n */\n async getLatestBlockhashAndContext(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getLatestBlockhash', args);\n const res = create(unsafeRes, GetLatestBlockhashRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get latest blockhash');\n }\n return res.result;\n }\n\n /**\n * Returns whether a blockhash is still valid or not\n */\n async isBlockhashValid(\n blockhash: Blockhash,\n rawConfig?: IsBlockhashValidConfig,\n ): Promise> {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgs(\n [blockhash],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('isBlockhashValid', args);\n const res = create(unsafeRes, IsBlockhashValidRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to determine if the blockhash `' + blockhash + '`is valid',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the node version\n */\n async getVersion(): Promise {\n const unsafeRes = await this._rpcRequest('getVersion', []);\n const res = create(unsafeRes, jsonRpcResult(VersionResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get version');\n }\n return res.result;\n }\n\n /**\n * Fetch the genesis hash\n */\n async getGenesisHash(): Promise {\n const unsafeRes = await this._rpcRequest('getGenesisHash', []);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get genesis hash');\n }\n return res.result;\n }\n\n /**\n * Fetch a processed block from the cluster.\n *\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n async getBlock(\n slot: number,\n rawConfig?: GetBlockConfig,\n ): Promise;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'accounts'},\n ): Promise;\n\n /**\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetBlockConfig & {transactionDetails: 'none'},\n ): Promise;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise;\n\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise;\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | VersionedBlockResponse\n | VersionedAccountsModeBlockResponse\n | VersionedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n const {result} = res;\n return result\n ? {\n ...result,\n transactions: result.transactions.map(\n ({transaction, meta, version}) => ({\n meta,\n transaction: {\n ...transaction,\n message: versionedMessageFromResponse(\n version,\n transaction.message,\n ),\n },\n version,\n }),\n ),\n }\n : null;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(\n e as JSONRPCError,\n 'failed to get confirmed block',\n );\n }\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized block\n */\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'accounts'},\n ): Promise;\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig: GetVersionedBlockConfig & {transactionDetails: 'none'},\n ): Promise;\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(\n slot: number,\n rawConfig?: GetVersionedBlockConfig,\n ): Promise<\n | ParsedBlockResponse\n | ParsedAccountsModeBlockResponse\n | ParsedNoneModeBlockResponse\n | null\n > {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n try {\n switch (config?.transactionDetails) {\n case 'accounts': {\n const res = create(unsafeRes, GetParsedAccountsModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n case 'none': {\n const res = create(unsafeRes, GetParsedNoneModeBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n default: {\n const res = create(unsafeRes, GetParsedBlockRpcResult);\n if ('error' in res) {\n throw res.error;\n }\n return res.result;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(e as JSONRPCError, 'failed to get block');\n }\n }\n\n /*\n * Returns the current block height of the node\n */\n getBlockHeight = (() => {\n const requestPromises: {[hash: string]: Promise} = {};\n return async (\n commitmentOrConfig?: Commitment | GetBlockHeightConfig,\n ): Promise => {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const requestHash = fastStableStringify(args);\n requestPromises[requestHash] =\n requestPromises[requestHash] ??\n (async () => {\n try {\n const unsafeRes = await this._rpcRequest('getBlockHeight', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block height information',\n );\n }\n return res.result;\n } finally {\n delete requestPromises[requestHash];\n }\n })();\n return await requestPromises[requestHash];\n };\n })();\n\n /*\n * Returns recent block production information from the current or previous epoch\n */\n async getBlockProduction(\n configOrCommitment?: GetBlockProductionConfig | Commitment,\n ): Promise> {\n let extra: Omit | undefined;\n let commitment: Commitment | undefined;\n\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else if (configOrCommitment) {\n const {commitment: c, ...rest} = configOrCommitment;\n commitment = c;\n extra = rest;\n }\n\n const args = this._buildArgs([], commitment, 'base64', extra);\n const unsafeRes = await this._rpcRequest('getBlockProduction', args);\n const res = create(unsafeRes, BlockProductionResponseStruct);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block production information',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n *\n * @deprecated Instead, call `getTransaction` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransaction(\n signature: string,\n rawConfig?: GetTransactionConfig,\n ): Promise;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig: GetVersionedTransactionConfig,\n ): Promise;\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(\n signature: string,\n rawConfig?: GetVersionedTransactionConfig,\n ): Promise {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized transaction\n */\n async getParsedTransaction(\n signature: TransactionSignature,\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n */\n async getParsedTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetVersionedTransactionConfig | Finality,\n ): Promise<(ParsedTransactionWithMeta | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link TransactionResponse}.\n *\n * @deprecated Instead, call `getTransactions` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetTransactionConfig | Finality,\n ): Promise<(TransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]>;\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig: GetVersionedTransactionConfig | Finality,\n ): Promise<(VersionedTransactionResponse | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: versionedMessageFromResponse(\n result.version,\n result.transaction.message,\n ),\n },\n };\n });\n\n return res;\n }\n\n /**\n * Fetch a list of Transactions and transaction statuses from the cluster\n * for a confirmed block.\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlock} instead.\n */\n async getConfirmedBlock(\n slot: number,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment);\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetConfirmedBlockRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n\n const block = {\n ...result,\n transactions: result.transactions.map(({transaction, meta}) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: {\n ...transaction,\n message,\n },\n };\n }),\n };\n\n return {\n ...block,\n transactions: block.transactions.map(({transaction, meta}) => {\n return {\n meta,\n transaction: Transaction.populate(\n transaction.message,\n transaction.signatures,\n ),\n };\n }),\n };\n }\n\n /**\n * Fetch confirmed blocks between two slots\n */\n async getBlocks(\n startSlot: number,\n endSlot?: number,\n commitment?: Finality,\n ): Promise> {\n const args = this._buildArgsAtLeastConfirmed(\n endSlot !== undefined ? [startSlot, endSlot] : [startSlot],\n commitment,\n );\n const unsafeRes = await this._rpcRequest('getBlocks', args);\n const res = create(unsafeRes, jsonRpcResult(array(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get blocks');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a block, excluding rewards\n */\n async getBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a confirmed block, excluding rewards\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getBlockSignatures} instead.\n */\n async getConfirmedBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getTransaction} instead.\n */\n async getConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment);\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n const message = new Message(result.transaction.message);\n const signatures = result.transaction.signatures;\n return {\n ...result,\n transaction: Transaction.populate(message, signatures),\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransaction} instead.\n */\n async getParsedConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transaction',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getParsedTransactions} instead.\n */\n async getParsedConfirmedTransactions(\n signatures: TransactionSignature[],\n commitment?: Finality,\n ): Promise<(ParsedConfirmedTransaction | null)[]> {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transactions',\n );\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch a list of all the confirmed signatures for transactions involving an address\n * within a specified slot range. Max range allowed is 10,000 slots.\n *\n * @deprecated Deprecated since RPC v1.3. Please use {@link getConfirmedSignaturesForAddress2} instead.\n *\n * @param address queried address\n * @param startSlot start slot, inclusive\n * @param endSlot end slot, inclusive\n */\n async getConfirmedSignaturesForAddress(\n address: PublicKey,\n startSlot: number,\n endSlot: number,\n ): Promise> {\n let options: any = {};\n\n let firstAvailableBlock = await this.getFirstAvailableBlock();\n while (!('until' in options)) {\n startSlot--;\n if (startSlot <= 0 || startSlot < firstAvailableBlock) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(\n startSlot,\n 'finalized',\n );\n if (block.signatures.length > 0) {\n options.until =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n let highestConfirmedRoot = await this.getSlot('finalized');\n while (!('before' in options)) {\n endSlot++;\n if (endSlot > highestConfirmedRoot) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(endSlot);\n if (block.signatures.length > 0) {\n options.before =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n const confirmedSignatureInfo = await this.getConfirmedSignaturesForAddress2(\n address,\n options,\n );\n return confirmedSignatureInfo.map(info => info.signature);\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n * @deprecated Deprecated since RPC v1.7.0. Please use {@link getSignaturesForAddress} instead.\n */\n async getConfirmedSignaturesForAddress2(\n address: PublicKey,\n options?: ConfirmedSignaturesForAddress2Options,\n commitment?: Finality,\n ): Promise> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest(\n 'getConfirmedSignaturesForAddress2',\n args,\n );\n const res = create(unsafeRes, GetConfirmedSignaturesForAddress2RpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed signatures for address',\n );\n }\n return res.result;\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n async getSignaturesForAddress(\n address: PublicKey,\n options?: SignaturesForAddressOptions,\n commitment?: Finality,\n ): Promise> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest('getSignaturesForAddress', args);\n const res = create(unsafeRes, GetSignaturesForAddressRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get signatures for address',\n );\n }\n return res.result;\n }\n\n async getAddressLookupTable(\n accountKey: PublicKey,\n config?: GetAccountInfoConfig,\n ): Promise> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n accountKey,\n config,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = new AddressLookupTableAccount({\n key: accountKey,\n state: AddressLookupTableAccount.deserialize(accountInfo.data),\n });\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster, return with context\n */\n async getNonceAndContext(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceAndContextConfig,\n ): Promise> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n nonceAccount,\n commitmentOrConfig,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = NonceAccount.fromAccountData(accountInfo.data);\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster\n */\n async getNonce(\n nonceAccount: PublicKey,\n commitmentOrConfig?: Commitment | GetNonceConfig,\n ): Promise {\n return await this.getNonceAndContext(nonceAccount, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get nonce for account ' +\n nonceAccount.toBase58() +\n ': ' +\n e,\n );\n });\n }\n\n /**\n * Request an allocation of lamports to the specified address\n *\n * ```typescript\n * import { Connection, PublicKey, LAMPORTS_PER_SOL } from \"@solana/web3.js\";\n *\n * (async () => {\n * const connection = new Connection(\"https://api.testnet.solana.com\", \"confirmed\");\n * const myAddress = new PublicKey(\"2nr1bHFT86W9tGnyvmYW4vcHKsQB3sVQfnddasz4kExM\");\n * const signature = await connection.requestAirdrop(myAddress, LAMPORTS_PER_SOL);\n * await connection.confirmTransaction(signature);\n * })();\n * ```\n */\n async requestAirdrop(\n to: PublicKey,\n lamports: number,\n ): Promise {\n const unsafeRes = await this._rpcRequest('requestAirdrop', [\n to.toBase58(),\n lamports,\n ]);\n const res = create(unsafeRes, RequestAirdropRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `airdrop to ${to.toBase58()} failed`,\n );\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n async _blockhashWithExpiryBlockHeight(\n disableCache: boolean,\n ): Promise {\n if (!disableCache) {\n // Wait for polling to finish\n while (this._pollingBlockhash) {\n await sleep(100);\n }\n const timeSinceFetch = Date.now() - this._blockhashInfo.lastFetch;\n const expired = timeSinceFetch >= BLOCKHASH_CACHE_TIMEOUT_MS;\n if (this._blockhashInfo.latestBlockhash !== null && !expired) {\n return this._blockhashInfo.latestBlockhash;\n }\n }\n\n return await this._pollNewBlockhash();\n }\n\n /**\n * @internal\n */\n async _pollNewBlockhash(): Promise {\n this._pollingBlockhash = true;\n try {\n const startTime = Date.now();\n const cachedLatestBlockhash = this._blockhashInfo.latestBlockhash;\n const cachedBlockhash = cachedLatestBlockhash\n ? cachedLatestBlockhash.blockhash\n : null;\n for (let i = 0; i < 50; i++) {\n const latestBlockhash = await this.getLatestBlockhash('finalized');\n\n if (cachedBlockhash !== latestBlockhash.blockhash) {\n this._blockhashInfo = {\n latestBlockhash,\n lastFetch: Date.now(),\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n return latestBlockhash;\n }\n\n // Sleep for approximately half a slot\n await sleep(MS_PER_SLOT / 2);\n }\n\n throw new Error(\n `Unable to obtain a new blockhash after ${Date.now() - startTime}ms`,\n );\n } finally {\n this._pollingBlockhash = false;\n }\n }\n\n /**\n * get the stake minimum delegation\n */\n async getStakeMinimumDelegation(\n config?: GetStakeMinimumDelegationConfig,\n ): Promise> {\n const {commitment, config: configArg} = extractCommitmentFromConfig(config);\n const args = this._buildArgs([], commitment, 'base64', configArg);\n const unsafeRes = await this._rpcRequest('getStakeMinimumDelegation', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get stake minimum delegation`,\n );\n }\n return res.result;\n }\n\n /**\n * Simulate a transaction\n *\n * @deprecated Instead, call {@link simulateTransaction} with {@link\n * VersionedTransaction} and {@link SimulateTransactionConfig} parameters\n */\n simulateTransaction(\n transactionOrMessage: Transaction | Message,\n signers?: Array,\n includeAccounts?: boolean | Array,\n ): Promise>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n simulateTransaction(\n transaction: VersionedTransaction,\n config?: SimulateTransactionConfig,\n ): Promise>;\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async simulateTransaction(\n transactionOrMessage: VersionedTransaction | Transaction | Message,\n configOrSigners?: SimulateTransactionConfig | Array,\n includeAccounts?: boolean | Array,\n ): Promise> {\n if ('message' in transactionOrMessage) {\n const versionedTx = transactionOrMessage;\n const wireTransaction = versionedTx.serialize();\n const encodedTransaction =\n Buffer.from(wireTransaction).toString('base64');\n if (Array.isArray(configOrSigners) || includeAccounts !== undefined) {\n throw new Error('Invalid arguments');\n }\n\n const config: any = configOrSigners || {};\n config.encoding = 'base64';\n if (!('commitment' in config)) {\n config.commitment = this.commitment;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n throw new Error('failed to simulate transaction: ' + res.error.message);\n }\n return res.result;\n }\n\n let transaction;\n if (transactionOrMessage instanceof Transaction) {\n let originalTx: Transaction = transactionOrMessage;\n transaction = new Transaction();\n transaction.feePayer = originalTx.feePayer;\n transaction.instructions = transactionOrMessage.instructions;\n transaction.nonceInfo = originalTx.nonceInfo;\n transaction.signatures = originalTx.signatures;\n } else {\n transaction = Transaction.populate(transactionOrMessage);\n // HACK: this function relies on mutating the populated transaction\n transaction._message = transaction._json = undefined;\n }\n\n if (configOrSigners !== undefined && !Array.isArray(configOrSigners)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = configOrSigners;\n if (transaction.nonceInfo && signers) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n\n if (!signers) break;\n\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (\n !this._blockhashInfo.simulatedSignatures.includes(signature) &&\n !this._blockhashInfo.transactionSignatures.includes(signature)\n ) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.simulatedSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const message = transaction._compile();\n const signData = message.serialize();\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config: any = {\n encoding: 'base64',\n commitment: this.commitment,\n };\n\n if (includeAccounts) {\n const addresses = (\n Array.isArray(includeAccounts)\n ? includeAccounts\n : message.nonProgramIds()\n ).map(key => key.toBase58());\n\n config['accounts'] = {\n encoding: 'base64',\n addresses,\n };\n }\n\n if (signers) {\n config.sigVerify = true;\n }\n\n if (\n configOrSigners &&\n typeof configOrSigners === 'object' &&\n 'innerInstructions' in configOrSigners\n ) {\n config.innerInstructions = configOrSigners.innerInstructions;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n let logs;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n if (logs && Array.isArray(logs)) {\n const traceIndent = '\\n ';\n const logTrace = traceIndent + logs.join(traceIndent);\n console.error(res.error.message, logTrace);\n }\n }\n\n throw new SendTransactionError({\n action: 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * Sign and send a transaction\n *\n * @deprecated Instead, call {@link sendTransaction} with a {@link\n * VersionedTransaction}\n */\n sendTransaction(\n transaction: Transaction,\n signers: Array,\n options?: SendOptions,\n ): Promise;\n\n /**\n * Send a signed transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n sendTransaction(\n transaction: VersionedTransaction,\n options?: SendOptions,\n ): Promise;\n\n /**\n * Sign and send a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async sendTransaction(\n transaction: VersionedTransaction | Transaction,\n signersOrOptions?: Array | SendOptions,\n options?: SendOptions,\n ): Promise {\n if ('version' in transaction) {\n if (signersOrOptions && Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, signersOrOptions);\n }\n\n if (signersOrOptions === undefined || !Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = signersOrOptions;\n if (transaction.nonceInfo) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash =\n await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (!this._blockhashInfo.transactionSignatures.includes(signature)) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.transactionSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, options);\n }\n\n /**\n * Send a transaction that has already been signed and serialized into the\n * wire format\n */\n async sendRawTransaction(\n rawTransaction: Buffer | Uint8Array | Array,\n options?: SendOptions,\n ): Promise {\n const encodedTransaction = toBuffer(rawTransaction).toString('base64');\n const result = await this.sendEncodedTransaction(\n encodedTransaction,\n options,\n );\n return result;\n }\n\n /**\n * Send a transaction that has already been signed, serialized into the\n * wire format, and encoded as a base64 string\n */\n async sendEncodedTransaction(\n encodedTransaction: string,\n options?: SendOptions,\n ): Promise {\n const config: any = {encoding: 'base64'};\n const skipPreflight = options && options.skipPreflight;\n const preflightCommitment =\n skipPreflight === true\n ? 'processed' // FIXME Remove when https://github.com/anza-xyz/agave/pull/483 is deployed.\n : (options && options.preflightCommitment) || this.commitment;\n\n if (options && options.maxRetries != null) {\n config.maxRetries = options.maxRetries;\n }\n if (options && options.minContextSlot != null) {\n config.minContextSlot = options.minContextSlot;\n }\n if (skipPreflight) {\n config.skipPreflight = skipPreflight;\n }\n if (preflightCommitment) {\n config.preflightCommitment = preflightCommitment;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('sendTransaction', args);\n const res = create(unsafeRes, SendTransactionRpcResult);\n if ('error' in res) {\n let logs = undefined;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n }\n\n throw new SendTransactionError({\n action: skipPreflight ? 'send' : 'simulate',\n signature: '',\n transactionMessage: res.error.message,\n logs: logs,\n });\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n _wsOnOpen() {\n this._rpcWebSocketConnected = true;\n this._rpcWebSocketHeartbeat = setInterval(() => {\n // Ping server every 5s to prevent idle timeouts\n (async () => {\n try {\n await this._rpcWebSocket.notify('ping');\n // eslint-disable-next-line no-empty\n } catch {}\n })();\n }, 5000);\n this._updateSubscriptions();\n }\n\n /**\n * @internal\n */\n _wsOnError(err: Error) {\n this._rpcWebSocketConnected = false;\n console.error('ws error:', err.message);\n }\n\n /**\n * @internal\n */\n _wsOnClose(code: number) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketGeneration =\n (this._rpcWebSocketGeneration + 1) % Number.MAX_SAFE_INTEGER;\n if (this._rpcWebSocketIdleTimeout) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n }\n if (this._rpcWebSocketHeartbeat) {\n clearInterval(this._rpcWebSocketHeartbeat);\n this._rpcWebSocketHeartbeat = null;\n }\n\n if (code === 1000) {\n // explicit close, check if any subscriptions have been made since close\n this._updateSubscriptions();\n return;\n }\n\n // implicit close, prepare subscriptions for auto-reconnect\n this._subscriptionCallbacksByServerSubscriptionId = {};\n Object.entries(\n this._subscriptionsByHash as Record,\n ).forEach(([hash, subscription]) => {\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n });\n }\n\n /**\n * @internal\n */\n private _setSubscription(\n hash: SubscriptionConfigHash,\n nextSubscription: Subscription,\n ) {\n const prevState = this._subscriptionsByHash[hash]?.state;\n this._subscriptionsByHash[hash] = nextSubscription;\n if (prevState !== nextSubscription.state) {\n const stateChangeCallbacks =\n this._subscriptionStateChangeCallbacksByHash[hash];\n if (stateChangeCallbacks) {\n stateChangeCallbacks.forEach(cb => {\n try {\n cb(nextSubscription.state);\n // eslint-disable-next-line no-empty\n } catch {}\n });\n }\n }\n }\n\n /**\n * @internal\n */\n private _onSubscriptionStateChange(\n clientSubscriptionId: ClientSubscriptionId,\n callback: SubscriptionStateChangeCallback,\n ): SubscriptionStateChangeDisposeFn {\n const hash =\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n if (hash == null) {\n return () => {};\n }\n const stateChangeCallbacks = (this._subscriptionStateChangeCallbacksByHash[\n hash\n ] ||= new Set());\n stateChangeCallbacks.add(callback);\n return () => {\n stateChangeCallbacks.delete(callback);\n if (stateChangeCallbacks.size === 0) {\n delete this._subscriptionStateChangeCallbacksByHash[hash];\n }\n };\n }\n\n /**\n * @internal\n */\n async _updateSubscriptions() {\n if (Object.keys(this._subscriptionsByHash).length === 0) {\n if (this._rpcWebSocketConnected) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketIdleTimeout = setTimeout(() => {\n this._rpcWebSocketIdleTimeout = null;\n try {\n this._rpcWebSocket.close();\n } catch (err) {\n // swallow error if socket has already been closed.\n if (err instanceof Error) {\n console.log(\n `Error when closing socket connection: ${err.message}`,\n );\n }\n }\n }, 500);\n }\n return;\n }\n\n if (this._rpcWebSocketIdleTimeout !== null) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n this._rpcWebSocketConnected = true;\n }\n\n if (!this._rpcWebSocketConnected) {\n this._rpcWebSocket.connect();\n return;\n }\n\n const activeWebSocketGeneration = this._rpcWebSocketGeneration;\n const isCurrentConnectionStillActive = () => {\n return activeWebSocketGeneration === this._rpcWebSocketGeneration;\n };\n\n await Promise.all(\n // Don't be tempted to change this to `Object.entries`. We call\n // `_updateSubscriptions` recursively when processing the state,\n // so it's important that we look up the *current* version of\n // each subscription, every time we process a hash.\n Object.keys(this._subscriptionsByHash).map(async hash => {\n const subscription = this._subscriptionsByHash[hash];\n if (subscription === undefined) {\n // This entry has since been deleted. Skip.\n return;\n }\n switch (subscription.state) {\n case 'pending':\n case 'unsubscribed':\n if (subscription.callbacks.size === 0) {\n /**\n * You can end up here when:\n *\n * - a subscription has recently unsubscribed\n * without having new callbacks added to it\n * while the unsubscribe was in flight, or\n * - when a pending subscription has its\n * listeners removed before a request was\n * sent to the server.\n *\n * Being that nobody is interested in this\n * subscription any longer, delete it.\n */\n delete this._subscriptionsByHash[hash];\n if (subscription.state === 'unsubscribed') {\n delete this._subscriptionCallbacksByServerSubscriptionId[\n subscription.serverSubscriptionId\n ];\n }\n await this._updateSubscriptions();\n return;\n }\n await (async () => {\n const {args, method} = subscription;\n try {\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribing',\n });\n const serverSubscriptionId: ServerSubscriptionId =\n (await this._rpcWebSocket.call(method, args)) as number;\n this._setSubscription(hash, {\n ...subscription,\n serverSubscriptionId,\n state: 'subscribed',\n });\n this._subscriptionCallbacksByServerSubscriptionId[\n serverSubscriptionId\n ] = subscription.callbacks;\n await this._updateSubscriptions();\n } catch (e) {\n console.error(\n `Received ${e instanceof Error ? '' : 'JSON-RPC '}error calling \\`${method}\\``,\n {\n args,\n error: e,\n },\n );\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'pending',\n });\n await this._updateSubscriptions();\n }\n })();\n break;\n case 'subscribed':\n if (subscription.callbacks.size === 0) {\n // By the time we successfully set up a subscription\n // with the server, the client stopped caring about it.\n // Tear it down now.\n await (async () => {\n const {serverSubscriptionId, unsubscribeMethod} = subscription;\n if (\n this._subscriptionsAutoDisposedByRpc.has(serverSubscriptionId)\n ) {\n /**\n * Special case.\n * If we're dealing with a subscription that has been auto-\n * disposed by the RPC, then we can skip the RPC call to\n * tear down the subscription here.\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.delete(\n serverSubscriptionId,\n );\n } else {\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribing',\n });\n try {\n await this._rpcWebSocket.call(unsubscribeMethod, [\n serverSubscriptionId,\n ]);\n } catch (e) {\n if (e instanceof Error) {\n console.error(`${unsubscribeMethod} error:`, e.message);\n }\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._setSubscription(hash, {\n ...subscription,\n state: 'subscribed',\n });\n await this._updateSubscriptions();\n return;\n }\n }\n this._setSubscription(hash, {\n ...subscription,\n state: 'unsubscribed',\n });\n await this._updateSubscriptions();\n })();\n }\n break;\n case 'subscribing':\n case 'unsubscribing':\n break;\n }\n }),\n );\n }\n\n /**\n * @internal\n */\n private _handleServerNotification<\n TCallback extends SubscriptionConfig['callback'],\n >(\n serverSubscriptionId: ServerSubscriptionId,\n callbackArgs: Parameters,\n ): void {\n const callbacks =\n this._subscriptionCallbacksByServerSubscriptionId[serverSubscriptionId];\n if (callbacks === undefined) {\n return;\n }\n callbacks.forEach(cb => {\n try {\n cb(\n // I failed to find a way to convince TypeScript that `cb` is of type\n // `TCallback` which is certainly compatible with `Parameters`.\n // See https://github.com/microsoft/TypeScript/issues/47615\n // @ts-ignore\n ...callbackArgs,\n );\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n /**\n * @internal\n */\n _wsOnAccountNotification(notification: object) {\n const {result, subscription} = create(\n notification,\n AccountNotificationResult,\n );\n this._handleServerNotification(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n private _makeSubscription(\n subscriptionConfig: SubscriptionConfig,\n /**\n * When preparing `args` for a call to `_makeSubscription`, be sure\n * to carefully apply a default `commitment` property, if necessary.\n *\n * - If the user supplied a `commitment` use that.\n * - Otherwise, if the `Connection::commitment` is set, use that.\n * - Otherwise, set it to the RPC server default: `finalized`.\n *\n * This is extremely important to ensure that these two fundamentally\n * identical subscriptions produce the same identifying hash:\n *\n * - A subscription made without specifying a commitment.\n * - A subscription made where the commitment specified is the same\n * as the default applied to the subscription above.\n *\n * Example; these two subscriptions must produce the same hash:\n *\n * - An `accountSubscribe` subscription for `'PUBKEY'`\n * - An `accountSubscribe` subscription for `'PUBKEY'` with commitment\n * `'finalized'`.\n *\n * See the 'making a subscription with defaulted params omitted' test\n * in `connection-subscriptions.ts` for more.\n */\n args: IWSRequestParams,\n ): ClientSubscriptionId {\n const clientSubscriptionId = this._nextClientSubscriptionId++;\n const hash = fastStableStringify([subscriptionConfig.method, args]);\n const existingSubscription = this._subscriptionsByHash[hash];\n if (existingSubscription === undefined) {\n this._subscriptionsByHash[hash] = {\n ...subscriptionConfig,\n args,\n callbacks: new Set([subscriptionConfig.callback]),\n state: 'pending',\n };\n } else {\n existingSubscription.callbacks.add(subscriptionConfig.callback);\n }\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId] = hash;\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ] = async () => {\n delete this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n delete this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n const subscription = this._subscriptionsByHash[hash];\n assert(\n subscription !== undefined,\n `Could not find a \\`Subscription\\` when tearing down client subscription #${clientSubscriptionId}`,\n );\n subscription.callbacks.delete(subscriptionConfig.callback);\n await this._updateSubscriptions();\n };\n this._updateSubscriptions();\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked whenever the specified account changes\n *\n * @param publicKey Public key of the account to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n config?: AccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in an {@link AccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitmentOrConfig?: Commitment | AccountSubscriptionConfig,\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64',\n config,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'accountSubscribe',\n unsubscribeMethod: 'accountUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'account change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnProgramAccountNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n ProgramAccountNotificationResult,\n );\n this._handleServerNotification(subscription, [\n {\n accountId: result.value.pubkey,\n accountInfo: result.value.account,\n },\n result.context,\n ]);\n }\n\n /**\n * Register a callback to be invoked whenever accounts owned by the\n * specified program change\n *\n * @param programId Public key of the program to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param config\n * @return subscription id\n */\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n config?: ProgramAccountSubscriptionConfig,\n ): ClientSubscriptionId;\n /** @deprecated Instead, pass in a {@link ProgramAccountSubscriptionConfig} */\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitment?: Commitment,\n filters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId;\n // eslint-disable-next-line no-dupe-class-members\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitmentOrConfig?: Commitment | ProgramAccountSubscriptionConfig,\n maybeFilters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64' /* encoding */,\n config\n ? config\n : maybeFilters\n ? {filters: applyDefaultMemcmpEncodingToFilters(maybeFilters)}\n : undefined /* extra */,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'programSubscribe',\n unsubscribeMethod: 'programUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeProgramAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'program account change',\n );\n }\n\n /**\n * Registers a callback to be invoked whenever logs are emitted.\n */\n onLogs(\n filter: LogsFilter,\n callback: LogsCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [typeof filter === 'object' ? {mentions: [filter.toString()]} : filter],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n return this._makeSubscription(\n {\n callback,\n method: 'logsSubscribe',\n unsubscribeMethod: 'logsUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister a logs callback.\n *\n * @param clientSubscriptionId client subscription id to deregister.\n */\n async removeOnLogsListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'logs');\n }\n\n /**\n * @internal\n */\n _wsOnLogsNotification(notification: Object) {\n const {result, subscription} = create(notification, LogsNotificationResult);\n this._handleServerNotification(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n _wsOnSlotNotification(notification: Object) {\n const {result, subscription} = create(notification, SlotNotificationResult);\n this._handleServerNotification(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot changes\n *\n * @param callback Function to invoke whenever the slot changes\n * @return subscription id\n */\n onSlotChange(callback: SlotChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotSubscribe',\n unsubscribeMethod: 'slotUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnSlotUpdatesNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SlotUpdateNotificationResult,\n );\n this._handleServerNotification(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot updates. {@link SlotUpdate}'s\n * may be useful to track live progress of a cluster.\n *\n * @param callback Function to invoke whenever the slot updates\n * @return subscription id\n */\n onSlotUpdate(callback: SlotUpdateCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotsUpdatesSubscribe',\n unsubscribeMethod: 'slotsUpdatesUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot update notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSlotUpdateListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot update',\n );\n }\n\n /**\n * @internal\n */\n\n private async _unsubscribeClientSubscription(\n clientSubscriptionId: ClientSubscriptionId,\n subscriptionName: string,\n ) {\n const dispose =\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n if (dispose) {\n await dispose();\n } else {\n console.warn(\n 'Ignored unsubscribe request because an active subscription with id ' +\n `\\`${clientSubscriptionId}\\` for '${subscriptionName}' events ` +\n 'could not be found.',\n );\n }\n }\n\n _buildArgs(\n args: Array,\n override?: Commitment,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array {\n const commitment = override || this._commitment;\n if (commitment || encoding || extra) {\n let options: any = {};\n if (encoding) {\n options.encoding = encoding;\n }\n if (commitment) {\n options.commitment = commitment;\n }\n if (extra) {\n options = Object.assign(options, extra);\n }\n args.push(options);\n }\n return args;\n }\n\n /**\n * @internal\n */\n _buildArgsAtLeastConfirmed(\n args: Array,\n override?: Finality,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array {\n const commitment = override || this._commitment;\n if (commitment && !['confirmed', 'finalized'].includes(commitment)) {\n throw new Error(\n 'Using Connection with default commitment: `' +\n this._commitment +\n '`, but method requires at least `confirmed`',\n );\n }\n return this._buildArgs(args, override, encoding, extra);\n }\n\n /**\n * @internal\n */\n _wsOnSignatureNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SignatureNotificationResult,\n );\n if (result.value !== 'receivedSignature') {\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.add(subscription);\n }\n this._handleServerNotification(\n subscription,\n result.value === 'receivedSignature'\n ? [{type: 'received'}, result.context]\n : [{type: 'status', result: result.value}, result.context],\n );\n }\n\n /**\n * Register a callback to be invoked upon signature updates\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param commitment Specify the commitment level signature must reach before notification\n * @return subscription id\n */\n onSignature(\n signature: TransactionSignature,\n callback: SignatureResultCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [signature],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n if (notification.type === 'status') {\n callback(notification.result, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked when a transaction is\n * received and/or processed.\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param options Enable received notifications and set the commitment\n * level that signature must reach before notification\n * @return subscription id\n */\n onSignatureWithOptions(\n signature: TransactionSignature,\n callback: SignatureSubscriptionCallback,\n options?: SignatureSubscriptionOptions,\n ): ClientSubscriptionId {\n const {commitment, ...extra} = {\n ...options,\n commitment:\n (options && options.commitment) || this._commitment || 'finalized', // Apply connection/server default.\n };\n const args = this._buildArgs(\n [signature],\n commitment,\n undefined /* encoding */,\n extra,\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n callback(notification, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Deregister a signature notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeSignatureListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'signature result',\n );\n }\n\n /**\n * @internal\n */\n _wsOnRootNotification(notification: Object) {\n const {result, subscription} = create(notification, RootNotificationResult);\n this._handleServerNotification(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon root changes\n *\n * @param callback Function to invoke whenever the root changes\n * @return subscription id\n */\n onRootChange(callback: RootChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'rootSubscribe',\n unsubscribeMethod: 'rootUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a root notification callback\n *\n * @param clientSubscriptionId client subscription id to deregister\n */\n async removeRootChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'root change',\n );\n }\n}\n","import {generateKeypair, getPublicKey, Ed25519Keypair} from './utils/ed25519';\nimport {PublicKey} from './publickey';\n\n/**\n * Keypair signer interface\n */\nexport interface Signer {\n publicKey: PublicKey;\n secretKey: Uint8Array;\n}\n\n/**\n * An account keypair used for signing transactions.\n */\nexport class Keypair {\n private _keypair: Ed25519Keypair;\n\n /**\n * Create a new keypair instance.\n * Generate random keypair if no {@link Ed25519Keypair} is provided.\n *\n * @param {Ed25519Keypair} keypair ed25519 keypair\n */\n constructor(keypair?: Ed25519Keypair) {\n this._keypair = keypair ?? generateKeypair();\n }\n\n /**\n * Generate a new random keypair\n *\n * @returns {Keypair} Keypair\n */\n static generate(): Keypair {\n return new Keypair(generateKeypair());\n }\n\n /**\n * Create a keypair from a raw secret key byte array.\n *\n * This method should only be used to recreate a keypair from a previously\n * generated secret key. Generating keypairs from a random seed should be done\n * with the {@link Keypair.fromSeed} method.\n *\n * @throws error if the provided secret key is invalid and validation is not skipped.\n *\n * @param secretKey secret key byte array\n * @param options skip secret key validation\n *\n * @returns {Keypair} Keypair\n */\n static fromSecretKey(\n secretKey: Uint8Array,\n options?: {skipValidation?: boolean},\n ): Keypair {\n if (secretKey.byteLength !== 64) {\n throw new Error('bad secret key size');\n }\n const publicKey = secretKey.slice(32, 64);\n if (!options || !options.skipValidation) {\n const privateScalar = secretKey.slice(0, 32);\n const computedPublicKey = getPublicKey(privateScalar);\n for (let ii = 0; ii < 32; ii++) {\n if (publicKey[ii] !== computedPublicKey[ii]) {\n throw new Error('provided secretKey is invalid');\n }\n }\n }\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * Generate a keypair from a 32 byte seed.\n *\n * @param seed seed byte array\n *\n * @returns {Keypair} Keypair\n */\n static fromSeed(seed: Uint8Array): Keypair {\n const publicKey = getPublicKey(seed);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n return new Keypair({publicKey, secretKey});\n }\n\n /**\n * The public key for this keypair\n *\n * @returns {PublicKey} PublicKey\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._keypair.publicKey);\n }\n\n /**\n * The raw secret key for this keypair\n * @returns {Uint8Array} Secret key in an array of Uint8 bytes\n */\n get secretKey(): Uint8Array {\n return new Uint8Array(this._keypair.secretKey);\n }\n}\n","import {toBufferLE} from 'bigint-buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport * as bigintLayout from '../../utils/bigint';\nimport {SystemProgram} from '../system';\nimport {TransactionInstruction} from '../../transaction';\nimport {decodeData, encodeData, IInstructionInputData} from '../../instruction';\n\nexport * from './state';\n\nexport type CreateLookupTableParams = {\n /** Account used to derive and control the new address lookup table. */\n authority: PublicKey;\n /** Account that will fund the new address lookup table. */\n payer: PublicKey;\n /** A recent slot must be used in the derivation path for each initialized table. */\n recentSlot: bigint | number;\n};\n\nexport type FreezeLookupTableParams = {\n /** Address lookup table account to freeze. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type ExtendLookupTableParams = {\n /** Address lookup table account to extend. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Account that will fund the table reallocation.\n * Not required if the reallocation has already been funded. */\n payer?: PublicKey;\n /** List of Public Keys to be added to the lookup table. */\n addresses: Array;\n};\n\nexport type DeactivateLookupTableParams = {\n /** Address lookup table account to deactivate. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type CloseLookupTableParams = {\n /** Address lookup table account to close. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Recipient of closed account lamports. */\n recipient: PublicKey;\n};\n\n/**\n * An enumeration of valid LookupTableInstructionType's\n */\nexport type LookupTableInstructionType =\n | 'CreateLookupTable'\n | 'ExtendLookupTable'\n | 'CloseLookupTable'\n | 'FreezeLookupTable'\n | 'DeactivateLookupTable';\n\ntype LookupTableInstructionInputData = {\n CreateLookupTable: IInstructionInputData &\n Readonly<{\n recentSlot: bigint;\n bumpSeed: number;\n }>;\n FreezeLookupTable: IInstructionInputData;\n ExtendLookupTable: IInstructionInputData &\n Readonly<{\n numberOfAddresses: bigint;\n addresses: Array;\n }>;\n DeactivateLookupTable: IInstructionInputData;\n CloseLookupTable: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid address lookup table InstructionType's\n * @internal\n */\nexport const LOOKUP_TABLE_INSTRUCTION_LAYOUTS = Object.freeze({\n CreateLookupTable: {\n index: 0,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CreateLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64('recentSlot'),\n BufferLayout.u8('bumpSeed'),\n ]),\n },\n FreezeLookupTable: {\n index: 1,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['FreezeLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n ExtendLookupTable: {\n index: 2,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['ExtendLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64(),\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'addresses',\n ),\n ]),\n },\n DeactivateLookupTable: {\n index: 3,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['DeactivateLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n CloseLookupTable: {\n index: 4,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CloseLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\nexport class AddressLookupTableInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): LookupTableInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const index = instructionTypeLayout.decode(instruction.data);\n\n let type: LookupTableInstructionType | undefined;\n for (const [layoutType, layout] of Object.entries(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS,\n )) {\n if ((layout as any).index == index) {\n type = layoutType as LookupTableInstructionType;\n break;\n }\n }\n if (!type) {\n throw new Error(\n 'Invalid Instruction. Should be a LookupTable Instruction',\n );\n }\n return type;\n }\n\n static decodeCreateLookupTable(\n instruction: TransactionInstruction,\n ): CreateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 4);\n\n const {recentSlot} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,\n instruction.data,\n );\n\n return {\n authority: instruction.keys[1].pubkey,\n payer: instruction.keys[2].pubkey,\n recentSlot: Number(recentSlot),\n };\n }\n\n static decodeExtendLookupTable(\n instruction: TransactionInstruction,\n ): ExtendLookupTableParams {\n this.checkProgramId(instruction.programId);\n if (instruction.keys.length < 2) {\n throw new Error(\n `invalid instruction; found ${instruction.keys.length} keys, expected at least 2`,\n );\n }\n\n const {addresses} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,\n instruction.data,\n );\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n payer:\n instruction.keys.length > 2 ? instruction.keys[2].pubkey : undefined,\n addresses: addresses.map(buffer => new PublicKey(buffer)),\n };\n }\n\n static decodeCloseLookupTable(\n instruction: TransactionInstruction,\n ): CloseLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 3);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n recipient: instruction.keys[2].pubkey,\n };\n }\n\n static decodeFreezeLookupTable(\n instruction: TransactionInstruction,\n ): FreezeLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n static decodeDeactivateLookupTable(\n instruction: TransactionInstruction,\n ): DeactivateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(AddressLookupTableProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not AddressLookupTable Program',\n );\n }\n }\n /**\n * @internal\n */\n static checkKeysLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\nexport class AddressLookupTableProgram {\n /**\n * @internal\n */\n constructor() {}\n\n static programId: PublicKey = new PublicKey(\n 'AddressLookupTab1e1111111111111111111111111',\n );\n\n static createLookupTable(params: CreateLookupTableParams) {\n const [lookupTableAddress, bumpSeed] = PublicKey.findProgramAddressSync(\n [params.authority.toBuffer(), toBufferLE(BigInt(params.recentSlot), 8)],\n this.programId,\n );\n\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable;\n const data = encodeData(type, {\n recentSlot: BigInt(params.recentSlot),\n bumpSeed: bumpSeed,\n });\n\n const keys = [\n {\n pubkey: lookupTableAddress,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n ];\n\n return [\n new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n }),\n lookupTableAddress,\n ] as [TransactionInstruction, PublicKey];\n }\n\n static freezeLookupTable(params: FreezeLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.FreezeLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static extendLookupTable(params: ExtendLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable;\n const data = encodeData(type, {\n addresses: params.addresses.map(addr => addr.toBytes()),\n });\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n if (params.payer) {\n keys.push(\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n );\n }\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static deactivateLookupTable(params: DeactivateLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.DeactivateLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static closeLookupTable(params: CloseLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CloseLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.recipient,\n isSigner: false,\n isWritable: true,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {u64} from '../utils/bigint';\n\n/**\n * Compute Budget Instruction class\n */\nexport class ComputeBudgetInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a compute budget instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): ComputeBudgetInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u8('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: ComputeBudgetInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS,\n )) {\n if (layout.index == typeIndex) {\n type = ixType as ComputeBudgetInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error(\n 'Instruction type incorrect; not a ComputeBudgetInstruction',\n );\n }\n\n return type;\n }\n\n /**\n * Decode request units compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestUnits(\n instruction: TransactionInstruction,\n ): RequestUnitsParams {\n this.checkProgramId(instruction.programId);\n const {units, additionalFee} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,\n instruction.data,\n );\n return {units, additionalFee};\n }\n\n /**\n * Decode request heap frame compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestHeapFrame(\n instruction: TransactionInstruction,\n ): RequestHeapFrameParams {\n this.checkProgramId(instruction.programId);\n const {bytes} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,\n instruction.data,\n );\n return {bytes};\n }\n\n /**\n * Decode set compute unit limit compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitLimit(\n instruction: TransactionInstruction,\n ): SetComputeUnitLimitParams {\n this.checkProgramId(instruction.programId);\n const {units} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,\n instruction.data,\n );\n return {units};\n }\n\n /**\n * Decode set compute unit price compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitPrice(\n instruction: TransactionInstruction,\n ): SetComputeUnitPriceParams {\n this.checkProgramId(instruction.programId);\n const {microLamports} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,\n instruction.data,\n );\n return {microLamports};\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(ComputeBudgetProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not ComputeBudgetProgram',\n );\n }\n }\n}\n\n/**\n * An enumeration of valid ComputeBudgetInstructionType's\n */\nexport type ComputeBudgetInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof ComputeBudgetInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'RequestUnits'\n | 'RequestHeapFrame'\n | 'SetComputeUnitLimit'\n | 'SetComputeUnitPrice';\n\ntype ComputeBudgetInstructionInputData = {\n RequestUnits: IInstructionInputData & Readonly;\n RequestHeapFrame: IInstructionInputData & Readonly;\n SetComputeUnitLimit: IInstructionInputData &\n Readonly;\n SetComputeUnitPrice: IInstructionInputData &\n Readonly;\n};\n\n/**\n * Request units instruction params\n */\nexport interface RequestUnitsParams {\n /** Units to request for transaction-wide compute */\n units: number;\n /** Prioritization fee lamports */\n additionalFee: number;\n}\n\n/**\n * Request heap frame instruction params\n */\nexport type RequestHeapFrameParams = {\n /** Requested transaction-wide program heap size in bytes. Must be multiple of 1024. Applies to each program, including CPIs. */\n bytes: number;\n};\n\n/**\n * Set compute unit limit instruction params\n */\nexport interface SetComputeUnitLimitParams {\n /** Transaction-wide compute unit limit */\n units: number;\n}\n\n/**\n * Set compute unit price instruction params\n */\nexport interface SetComputeUnitPriceParams {\n /** Transaction compute unit price used for prioritization fees */\n microLamports: number | bigint;\n}\n\n/**\n * An enumeration of valid ComputeBudget InstructionType's\n * @internal\n */\nexport const COMPUTE_BUDGET_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in ComputeBudgetInstructionType]: InstructionType<\n ComputeBudgetInstructionInputData[Instruction]\n >;\n}>({\n RequestUnits: {\n index: 0,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestUnits']\n >([\n BufferLayout.u8('instruction'),\n BufferLayout.u32('units'),\n BufferLayout.u32('additionalFee'),\n ]),\n },\n RequestHeapFrame: {\n index: 1,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestHeapFrame']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('bytes')]),\n },\n SetComputeUnitLimit: {\n index: 2,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitLimit']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('units')]),\n },\n SetComputeUnitPrice: {\n index: 3,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitPrice']\n >([BufferLayout.u8('instruction'), u64('microLamports')]),\n },\n});\n\n/**\n * Factory class for transaction instructions to interact with the Compute Budget program\n */\nexport class ComputeBudgetProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Compute Budget program\n */\n static programId: PublicKey = new PublicKey(\n 'ComputeBudget111111111111111111111111111111',\n );\n\n /**\n * @deprecated Instead, call {@link setComputeUnitLimit} and/or {@link setComputeUnitPrice}\n */\n static requestUnits(params: RequestUnitsParams): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static requestHeapFrame(\n params: RequestHeapFrameParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitLimit(\n params: SetComputeUnitLimitParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitPrice(\n params: SetComputeUnitPriceParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice;\n const data = encodeData(type, {\n microLamports: BigInt(params.microLamports),\n });\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {Keypair} from '../keypair';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {sign} from '../utils/ed25519';\n\nconst PRIVATE_KEY_BYTES = 64;\nconst PUBLIC_KEY_BYTES = 32;\nconst SIGNATURE_BYTES = 64;\n\n/**\n * Params for creating an ed25519 instruction using a public key\n */\nexport type CreateEd25519InstructionWithPublicKeyParams = {\n publicKey: Uint8Array;\n message: Uint8Array;\n signature: Uint8Array;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an ed25519 instruction using a private key\n */\nexport type CreateEd25519InstructionWithPrivateKeyParams = {\n privateKey: Uint8Array;\n message: Uint8Array;\n instructionIndex?: number;\n};\n\nconst ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n padding: number;\n publicKeyInstructionIndex: number;\n publicKeyOffset: number;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u8('padding'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u16('signatureInstructionIndex'),\n BufferLayout.u16('publicKeyOffset'),\n BufferLayout.u16('publicKeyInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u16('messageInstructionIndex'),\n]);\n\nexport class Ed25519Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the ed25519 program\n */\n static programId: PublicKey = new PublicKey(\n 'Ed25519SigVerify111111111111111111111111111',\n );\n\n /**\n * Create an ed25519 instruction with a public key and signature. The\n * public key must be a buffer that is 32 bytes long, and the signature\n * must be a buffer of 64 bytes.\n */\n static createInstructionWithPublicKey(\n params: CreateEd25519InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, instructionIndex} = params;\n\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public Key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n assert(\n signature.length === SIGNATURE_BYTES,\n `Signature must be ${SIGNATURE_BYTES} bytes but received ${signature.length} bytes`,\n );\n\n const publicKeyOffset = ED25519_INSTRUCTION_LAYOUT.span;\n const signatureOffset = publicKeyOffset + publicKey.length;\n const messageDataOffset = signatureOffset + signature.length;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(messageDataOffset + message.length);\n\n const index =\n instructionIndex == null\n ? 0xffff // An index of `u16::MAX` makes it default to the current instruction.\n : instructionIndex;\n\n ED25519_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n padding: 0,\n signatureOffset,\n signatureInstructionIndex: index,\n publicKeyOffset,\n publicKeyInstructionIndex: index,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: index,\n },\n instructionData,\n );\n\n instructionData.fill(publicKey, publicKeyOffset);\n instructionData.fill(signature, signatureOffset);\n instructionData.fill(message, messageDataOffset);\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an ed25519 instruction with a private key. The private key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateEd25519InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey, message, instructionIndex} = params;\n\n assert(\n privateKey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${privateKey.length} bytes`,\n );\n\n try {\n const keypair = Keypair.fromSecretKey(privateKey);\n const publicKey = keypair.publicKey.toBytes();\n const signature = sign(message, keypair.secretKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import {secp256k1} from '@noble/curves/secp256k1';\n\nexport const ecdsaSign = (\n msgHash: Parameters[0],\n privKey: Parameters[1],\n) => {\n const signature = secp256k1.sign(msgHash, privKey);\n return [signature.toCompactRawBytes(), signature.recovery!] as const;\n};\nexport const isValidPrivateKey = secp256k1.utils.isValidPrivateKey;\nexport const publicKeyCreate = secp256k1.getPublicKey;\n","import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport {keccak_256} from '@noble/hashes/sha3';\n\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {publicKeyCreate, ecdsaSign} from '../utils/secp256k1';\nimport {toBuffer} from '../utils/to-buffer';\n\nconst PRIVATE_KEY_BYTES = 32;\nconst ETHEREUM_ADDRESS_BYTES = 20;\nconst PUBLIC_KEY_BYTES = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 11;\n\n/**\n * Params for creating an secp256k1 instruction using a public key\n */\nexport type CreateSecp256k1InstructionWithPublicKeyParams = {\n publicKey: Buffer | Uint8Array | Array;\n message: Buffer | Uint8Array | Array;\n signature: Buffer | Uint8Array | Array;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using an Ethereum address\n */\nexport type CreateSecp256k1InstructionWithEthAddressParams = {\n ethAddress: Buffer | Uint8Array | Array | string;\n message: Buffer | Uint8Array | Array;\n signature: Buffer | Uint8Array | Array;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using a private key\n */\nexport type CreateSecp256k1InstructionWithPrivateKeyParams = {\n privateKey: Buffer | Uint8Array | Array;\n message: Buffer | Uint8Array | Array;\n instructionIndex?: number;\n};\n\nconst SECP256K1_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n ethAddress: Uint8Array;\n ethAddressInstructionIndex: number;\n ethAddressOffset: number;\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n recoveryId: number;\n signature: Uint8Array;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u8('signatureInstructionIndex'),\n BufferLayout.u16('ethAddressOffset'),\n BufferLayout.u8('ethAddressInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u8('messageInstructionIndex'),\n BufferLayout.blob(20, 'ethAddress'),\n BufferLayout.blob(64, 'signature'),\n BufferLayout.u8('recoveryId'),\n]);\n\nexport class Secp256k1Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the secp256k1 program\n */\n static programId: PublicKey = new PublicKey(\n 'KeccakSecp256k11111111111111111111111111111',\n );\n\n /**\n * Construct an Ethereum address from a secp256k1 public key buffer.\n * @param {Buffer} publicKey a 64 byte secp256k1 public key buffer\n */\n static publicKeyToEthAddress(\n publicKey: Buffer | Uint8Array | Array,\n ): Buffer {\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n try {\n return Buffer.from(keccak_256(toBuffer(publicKey))).slice(\n -ETHEREUM_ADDRESS_BYTES,\n );\n } catch (error) {\n throw new Error(`Error constructing Ethereum address: ${error}`);\n }\n }\n\n /**\n * Create an secp256k1 instruction with a public key. The public key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPublicKey(\n params: CreateSecp256k1InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, recoveryId, instructionIndex} =\n params;\n return Secp256k1Program.createInstructionWithEthAddress({\n ethAddress: Secp256k1Program.publicKeyToEthAddress(publicKey),\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n }\n\n /**\n * Create an secp256k1 instruction with an Ethereum address. The address\n * must be a hex string or a buffer that is 20 bytes long.\n */\n static createInstructionWithEthAddress(\n params: CreateSecp256k1InstructionWithEthAddressParams,\n ): TransactionInstruction {\n const {\n ethAddress: rawAddress,\n message,\n signature,\n recoveryId,\n instructionIndex = 0,\n } = params;\n\n let ethAddress;\n if (typeof rawAddress === 'string') {\n if (rawAddress.startsWith('0x')) {\n ethAddress = Buffer.from(rawAddress.substr(2), 'hex');\n } else {\n ethAddress = Buffer.from(rawAddress, 'hex');\n }\n } else {\n ethAddress = rawAddress;\n }\n\n assert(\n ethAddress.length === ETHEREUM_ADDRESS_BYTES,\n `Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${ethAddress.length} bytes`,\n );\n\n const dataStart = 1 + SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const ethAddressOffset = dataStart;\n const signatureOffset = dataStart + ethAddress.length;\n const messageDataOffset = signatureOffset + signature.length + 1;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(\n SECP256K1_INSTRUCTION_LAYOUT.span + message.length,\n );\n\n SECP256K1_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n signatureOffset,\n signatureInstructionIndex: instructionIndex,\n ethAddressOffset,\n ethAddressInstructionIndex: instructionIndex,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: instructionIndex,\n signature: toBuffer(signature),\n ethAddress: toBuffer(ethAddress),\n recoveryId,\n },\n instructionData,\n );\n\n instructionData.fill(toBuffer(message), SECP256K1_INSTRUCTION_LAYOUT.span);\n\n return new TransactionInstruction({\n keys: [],\n programId: Secp256k1Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an secp256k1 instruction with a private key. The private key\n * must be a buffer that is 32 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateSecp256k1InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey: pkey, message, instructionIndex} = params;\n\n assert(\n pkey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${pkey.length} bytes`,\n );\n\n try {\n const privateKey = toBuffer(pkey);\n const publicKey = publicKeyCreate(\n privateKey,\n false /* isCompressed */,\n ).slice(1); // throw away leading byte\n const messageHash = Buffer.from(keccak_256(toBuffer(message)));\n const [signature, recoveryId] = ecdsaSign(messageHash, privateKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {\n SYSVAR_CLOCK_PUBKEY,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_STAKE_HISTORY_PUBKEY,\n} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Address of the stake config account which configures the rate\n * of stake warmup and cooldown as well as the slashing penalty.\n */\nexport const STAKE_CONFIG_ID = new PublicKey(\n 'StakeConfig11111111111111111111111111111111',\n);\n\n/**\n * Stake account authority info\n */\nexport class Authorized {\n /** stake authority */\n staker: PublicKey;\n /** withdraw authority */\n withdrawer: PublicKey;\n\n /**\n * Create a new Authorized object\n * @param staker the stake authority\n * @param withdrawer the withdraw authority\n */\n constructor(staker: PublicKey, withdrawer: PublicKey) {\n this.staker = staker;\n this.withdrawer = withdrawer;\n }\n}\n\ntype AuthorizedRaw = Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n}>;\n\n/**\n * Stake account lockup info\n */\nexport class Lockup {\n /** Unix timestamp of lockup expiration */\n unixTimestamp: number;\n /** Epoch of lockup expiration */\n epoch: number;\n /** Lockup custodian authority */\n custodian: PublicKey;\n\n /**\n * Create a new Lockup object\n */\n constructor(unixTimestamp: number, epoch: number, custodian: PublicKey) {\n this.unixTimestamp = unixTimestamp;\n this.epoch = epoch;\n this.custodian = custodian;\n }\n\n /**\n * Default, inactive Lockup value\n */\n static default: Lockup = new Lockup(0, 0, PublicKey.default);\n}\n\ntype LockupRaw = Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n}>;\n\n/**\n * Create stake account transaction params\n */\nexport type CreateStakeAccountParams = {\n /** Address of the account which will fund creation */\n fromPubkey: PublicKey;\n /** Address of the new stake account */\n stakePubkey: PublicKey;\n /** Authorities of the new stake account */\n authorized: Authorized;\n /** Lockup of the new stake account */\n lockup?: Lockup;\n /** Funding amount */\n lamports: number;\n};\n\n/**\n * Create stake account with seed transaction params\n */\nexport type CreateStakeAccountWithSeedParams = {\n fromPubkey: PublicKey;\n stakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n authorized: Authorized;\n lockup?: Lockup;\n lamports: number;\n};\n\n/**\n * Initialize stake instruction params\n */\nexport type InitializeStakeParams = {\n stakePubkey: PublicKey;\n authorized: Authorized;\n lockup?: Lockup;\n};\n\n/**\n * Delegate stake instruction params\n */\nexport type DelegateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n votePubkey: PublicKey;\n};\n\n/**\n * Authorize stake instruction params\n */\nexport type AuthorizeStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Authorize stake instruction params using a derived key\n */\nexport type AuthorizeWithSeedStakeParams = {\n stakePubkey: PublicKey;\n authorityBase: PublicKey;\n authoritySeed: string;\n authorityOwner: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Split stake instruction params\n */\nexport type SplitStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n lamports: number;\n};\n\n/**\n * Split with seed transaction params\n */\nexport type SplitStakeWithSeedParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n lamports: number;\n};\n\n/**\n * Withdraw stake instruction params\n */\nexport type WithdrawStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n toPubkey: PublicKey;\n lamports: number;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Deactivate stake instruction params\n */\nexport type DeactivateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Merge stake instruction params\n */\nexport type MergeStakeParams = {\n stakePubkey: PublicKey;\n sourceStakePubKey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Stake Instruction class\n */\nexport class StakeInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a stake instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): StakeInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: StakeInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(STAKE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as StakeInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a StakeInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a initialize stake instruction and retrieve the instruction params.\n */\n static decodeInitialize(\n instruction: TransactionInstruction,\n ): InitializeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized, lockup} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Initialize,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorized: new Authorized(\n new PublicKey(authorized.staker),\n new PublicKey(authorized.withdrawer),\n ),\n lockup: new Lockup(\n lockup.unixTimestamp,\n lockup.epoch,\n new PublicKey(lockup.custodian),\n ),\n };\n }\n\n /**\n * Decode a delegate stake instruction and retrieve the instruction params.\n */\n static decodeDelegate(\n instruction: TransactionInstruction,\n ): DelegateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 6);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Delegate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n votePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[5].pubkey,\n };\n }\n\n /**\n * Decode an authorize stake instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {newAuthorized, stakeAuthorizationType} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n const o: AuthorizeStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode an authorize-with-seed stake instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeWithSeedStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {\n newAuthorized,\n stakeAuthorizationType,\n authoritySeed,\n authorityOwner,\n } = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n const o: AuthorizeWithSeedStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorityBase: instruction.keys[1].pubkey,\n authoritySeed: authoritySeed,\n authorityOwner: new PublicKey(authorityOwner),\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a split stake instruction and retrieve the instruction params.\n */\n static decodeSplit(instruction: TransactionInstruction): SplitStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Split,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n splitStakePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a merge stake instruction and retrieve the instruction params.\n */\n static decodeMerge(instruction: TransactionInstruction): MergeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Merge, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n sourceStakePubKey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n };\n }\n\n /**\n * Decode a withdraw stake instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n const o: WithdrawStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n if (instruction.keys.length > 5) {\n o.custodianPubkey = instruction.keys[5].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a deactivate stake instruction and retrieve the instruction params.\n */\n static decodeDeactivate(\n instruction: TransactionInstruction,\n ): DeactivateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Deactivate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(StakeProgram.programId)) {\n throw new Error('invalid instruction; programId is not StakeProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid StakeInstructionType's\n */\nexport type StakeInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof StakeInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'Deactivate'\n | 'Delegate'\n | 'Initialize'\n | 'Merge'\n | 'Split'\n | 'Withdraw';\n\ntype StakeInstructionInputData = {\n Authorize: IInstructionInputData &\n Readonly<{\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n AuthorizeWithSeed: IInstructionInputData &\n Readonly<{\n authorityOwner: Uint8Array;\n authoritySeed: string;\n instruction: number;\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n Deactivate: IInstructionInputData;\n Delegate: IInstructionInputData;\n Initialize: IInstructionInputData &\n Readonly<{\n authorized: AuthorizedRaw;\n lockup: LockupRaw;\n }>;\n Merge: IInstructionInputData;\n Split: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n Withdraw: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n};\n\n/**\n * An enumeration of valid stake InstructionType's\n * @internal\n */\nexport const STAKE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in StakeInstructionType]: InstructionType<\n StakeInstructionInputData[Instruction]\n >;\n}>({\n Initialize: {\n index: 0,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.authorized(),\n Layout.lockup(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n ]),\n },\n Delegate: {\n index: 2,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]),\n },\n Split: {\n index: 3,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Withdraw: {\n index: 4,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Deactivate: {\n index: 5,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]),\n },\n Merge: {\n index: 7,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]),\n },\n AuthorizeWithSeed: {\n index: 8,\n layout: BufferLayout.struct(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n Layout.rustString('authoritySeed'),\n Layout.publicKey('authorityOwner'),\n ],\n ),\n },\n});\n\n/**\n * Stake authorization type\n */\nexport type StakeAuthorizationType = {\n /** The Stake Authorization index (from solana-stake-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid StakeAuthorizationLayout's\n */\nexport const StakeAuthorizationLayout = Object.freeze({\n Staker: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Stake program\n */\nexport class StakeProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Stake program\n */\n static programId: PublicKey = new PublicKey(\n 'Stake11111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Stake account\n *\n * This is generated from the solana-stake-program StakeState struct as\n * `StakeStateV2::size_of()`:\n * https://docs.rs/solana-stake-program/latest/solana_stake_program/stake_state/enum.StakeStateV2.html\n */\n static space: number = 200;\n\n /**\n * Generate an Initialize instruction to add to a Stake Create transaction\n */\n static initialize(params: InitializeStakeParams): TransactionInstruction {\n const {stakePubkey, authorized, lockup: maybeLockup} = params;\n const lockup: Lockup = maybeLockup || Lockup.default;\n const type = STAKE_INSTRUCTION_LAYOUTS.Initialize;\n const data = encodeData(type, {\n authorized: {\n staker: toBuffer(authorized.staker.toBuffer()),\n withdrawer: toBuffer(authorized.withdrawer.toBuffer()),\n },\n lockup: {\n unixTimestamp: lockup.unixTimestamp,\n epoch: lockup.epoch,\n custodian: toBuffer(lockup.custodian.toBuffer()),\n },\n });\n const instructionData = {\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a Transaction that creates a new Stake account at\n * an address generated with `from`, a seed, and the Stake programId\n */\n static createAccountWithSeed(\n params: CreateStakeAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that creates a new Stake account\n */\n static createAccount(params: CreateStakeAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that delegates Stake tokens to a validator\n * Vote PublicKey. This transaction can also be used to redelegate Stake\n * to a new validator Vote PublicKey.\n */\n static delegate(params: DelegateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, votePubkey} = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Delegate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: votePubkey, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: STAKE_CONFIG_ID, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorize(params: AuthorizeStakeParams): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorizeWithSeed(params: AuthorizeWithSeedStakeParams): Transaction {\n const {\n stakePubkey,\n authorityBase,\n authoritySeed,\n authorityOwner,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n authoritySeed: authoritySeed,\n authorityOwner: toBuffer(authorityOwner.toBuffer()),\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorityBase, isSigner: true, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * @internal\n */\n static splitInstruction(params: SplitStakeParams): TransactionInstruction {\n const {stakePubkey, authorizedPubkey, splitStakePubkey, lamports} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Split;\n const data = encodeData(type, {lamports});\n return new TransactionInstruction({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: splitStakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another stake account\n */\n static split(\n params: SplitStakeParams,\n // Compute the cost of allocating the new stake account in lamports\n rentExemptReserve: number,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.authorizedPubkey,\n newAccountPubkey: params.splitStakePubkey,\n lamports: rentExemptReserve,\n space: this.space,\n programId: this.programId,\n }),\n );\n return transaction.add(this.splitInstruction(params));\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another account\n * derived from a base public key and seed\n */\n static splitWithSeed(\n params: SplitStakeWithSeedParams,\n // If this stake account is new, compute the cost of allocating it in lamports\n rentExemptReserve?: number,\n ): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n basePubkey,\n seed,\n lamports,\n } = params;\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: splitStakePubkey,\n basePubkey,\n seed,\n space: this.space,\n programId: this.programId,\n }),\n );\n if (rentExemptReserve && rentExemptReserve > 0) {\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: params.authorizedPubkey,\n toPubkey: splitStakePubkey,\n lamports: rentExemptReserve,\n }),\n );\n }\n return transaction.add(\n this.splitInstruction({\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n lamports,\n }),\n );\n }\n\n /**\n * Generate a Transaction that merges Stake accounts.\n */\n static merge(params: MergeStakeParams): Transaction {\n const {stakePubkey, sourceStakePubKey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Merge;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: sourceStakePubKey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that withdraws deactivated Stake tokens.\n */\n static withdraw(params: WithdrawStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, toPubkey, lamports, custodianPubkey} =\n params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: true,\n isWritable: false,\n });\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that deactivates Stake tokens.\n */\n static deactivate(params: DeactivateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Deactivate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Vote account info\n */\nexport class VoteInit {\n nodePubkey: PublicKey;\n authorizedVoter: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number; /** [0, 100] */\n\n constructor(\n nodePubkey: PublicKey,\n authorizedVoter: PublicKey,\n authorizedWithdrawer: PublicKey,\n commission: number,\n ) {\n this.nodePubkey = nodePubkey;\n this.authorizedVoter = authorizedVoter;\n this.authorizedWithdrawer = authorizedWithdrawer;\n this.commission = commission;\n }\n}\n\n/**\n * Create vote account transaction params\n */\nexport type CreateVoteAccountParams = {\n fromPubkey: PublicKey;\n votePubkey: PublicKey;\n voteInit: VoteInit;\n lamports: number;\n};\n\n/**\n * InitializeAccount instruction params\n */\nexport type InitializeAccountParams = {\n votePubkey: PublicKey;\n nodePubkey: PublicKey;\n voteInit: VoteInit;\n};\n\n/**\n * Authorize instruction params\n */\nexport type AuthorizeVoteParams = {\n votePubkey: PublicKey;\n /** Current vote or withdraw authority, depending on `voteAuthorizationType` */\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n};\n\n/**\n * AuthorizeWithSeed instruction params\n */\nexport type AuthorizeVoteWithSeedParams = {\n currentAuthorityDerivedKeyBasePubkey: PublicKey;\n currentAuthorityDerivedKeyOwnerPubkey: PublicKey;\n currentAuthorityDerivedKeySeed: string;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n votePubkey: PublicKey;\n};\n\n/**\n * Withdraw from vote account transaction params\n */\nexport type WithdrawFromVoteAccountParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n lamports: number;\n toPubkey: PublicKey;\n};\n\n/**\n * Update validator identity (node pubkey) vote account instruction params.\n */\nexport type UpdateValidatorIdentityParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n nodePubkey: PublicKey;\n};\n\n/**\n * Vote Instruction class\n */\nexport class VoteInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a vote instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): VoteInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: VoteInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(VOTE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as VoteInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a VoteInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode an initialize vote instruction and retrieve the instruction params.\n */\n static decodeInitializeAccount(\n instruction: TransactionInstruction,\n ): InitializeAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 4);\n\n const {voteInit} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n nodePubkey: instruction.keys[3].pubkey,\n voteInit: new VoteInit(\n new PublicKey(voteInit.nodePubkey),\n new PublicKey(voteInit.authorizedVoter),\n new PublicKey(voteInit.authorizedWithdrawer),\n voteInit.commission,\n ),\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeVoteParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {newAuthorized, voteAuthorizationType} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeVoteWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorized,\n voteAuthorizationType,\n },\n } = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n return {\n currentAuthorityDerivedKeyBasePubkey: instruction.keys[2].pubkey,\n currentAuthorityDerivedKeyOwnerPubkey: new PublicKey(\n currentAuthorityDerivedKeyOwnerPubkey,\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n votePubkey: instruction.keys[0].pubkey,\n };\n }\n\n /**\n * Decode a withdraw instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawFromVoteAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedWithdrawerPubkey: instruction.keys[2].pubkey,\n lamports,\n toPubkey: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(VoteProgram.programId)) {\n throw new Error('invalid instruction; programId is not VoteProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid VoteInstructionType's\n */\nexport type VoteInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof VoteInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'InitializeAccount'\n | 'Withdraw'\n | 'UpdateValidatorIdentity';\n\n/** @internal */\nexport type VoteAuthorizeWithSeedArgs = Readonly<{\n currentAuthorityDerivedKeyOwnerPubkey: Uint8Array;\n currentAuthorityDerivedKeySeed: string;\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n}>;\ntype VoteInstructionInputData = {\n Authorize: IInstructionInputData & {\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n };\n AuthorizeWithSeed: IInstructionInputData & {\n voteAuthorizeWithSeedArgs: VoteAuthorizeWithSeedArgs;\n };\n InitializeAccount: IInstructionInputData & {\n voteInit: Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>;\n };\n Withdraw: IInstructionInputData & {\n lamports: number;\n };\n UpdateValidatorIdentity: IInstructionInputData;\n};\n\nconst VOTE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in VoteInstructionType]: InstructionType<\n VoteInstructionInputData[Instruction]\n >;\n}>({\n InitializeAccount: {\n index: 0,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.voteInit(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('voteAuthorizationType'),\n ]),\n },\n Withdraw: {\n index: 3,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n UpdateValidatorIdentity: {\n index: 4,\n layout: BufferLayout.struct<\n VoteInstructionInputData['UpdateValidatorIdentity']\n >([BufferLayout.u32('instruction')]),\n },\n AuthorizeWithSeed: {\n index: 10,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.voteAuthorizeWithSeedArgs(),\n ]),\n },\n});\n\n/**\n * VoteAuthorize type\n */\nexport type VoteAuthorizationType = {\n /** The VoteAuthorize index (from solana-vote-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid VoteAuthorization layouts.\n */\nexport const VoteAuthorizationLayout = Object.freeze({\n Voter: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Vote program\n */\nexport class VoteProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Vote program\n */\n static programId: PublicKey = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Vote account\n *\n * This is generated from the solana-vote-program VoteState struct as\n * `VoteState::size_of()`:\n * https://docs.rs/solana-vote-program/1.9.5/solana_vote_program/vote_state/struct.VoteState.html#method.size_of\n *\n * KEEP IN SYNC WITH `VoteState::size_of()` in https://github.com/solana-labs/solana/blob/a474cb24b9238f5edcc982f65c0b37d4a1046f7e/sdk/program/src/vote/state/mod.rs#L340-L342\n */\n static space: number = 3762;\n\n /**\n * Generate an Initialize instruction.\n */\n static initializeAccount(\n params: InitializeAccountParams,\n ): TransactionInstruction {\n const {votePubkey, nodePubkey, voteInit} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.InitializeAccount;\n const data = encodeData(type, {\n voteInit: {\n nodePubkey: toBuffer(voteInit.nodePubkey.toBuffer()),\n authorizedVoter: toBuffer(voteInit.authorizedVoter.toBuffer()),\n authorizedWithdrawer: toBuffer(\n voteInit.authorizedWithdrawer.toBuffer(),\n ),\n commission: voteInit.commission,\n },\n });\n const instructionData = {\n keys: [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction that creates a new Vote account.\n */\n static createAccount(params: CreateVoteAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.votePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n return transaction.add(\n this.initializeAccount({\n votePubkey: params.votePubkey,\n nodePubkey: params.voteInit.nodePubkey,\n voteInit: params.voteInit,\n }),\n );\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account.\n */\n static authorize(params: AuthorizeVoteParams): Transaction {\n const {\n votePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n voteAuthorizationType,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account\n * where the current Voter or Withdrawer authority is a derived key.\n */\n static authorizeWithSeed(params: AuthorizeVoteWithSeedParams): Transaction {\n const {\n currentAuthorityDerivedKeyBasePubkey,\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey,\n voteAuthorizationType,\n votePubkey,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey: toBuffer(\n currentAuthorityDerivedKeyOwnerPubkey.toBuffer(),\n ),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n },\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: currentAuthorityDerivedKeyBasePubkey,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw from a Vote account.\n */\n static withdraw(params: WithdrawFromVoteAccountParams): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, lamports, toPubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw safely from a Vote account.\n *\n * This function was created as a safeguard for vote accounts running validators, `safeWithdraw`\n * checks that the withdraw amount will not exceed the specified balance while leaving enough left\n * to cover rent. If you wish to close the vote account by withdrawing the full amount, call the\n * `withdraw` method directly.\n */\n static safeWithdraw(\n params: WithdrawFromVoteAccountParams,\n currentVoteAccountBalance: number,\n rentExemptMinimum: number,\n ): Transaction {\n if (params.lamports > currentVoteAccountBalance - rentExemptMinimum) {\n throw new Error(\n 'Withdraw will leave vote account with insufficient funds.',\n );\n }\n return VoteProgram.withdraw(params);\n }\n\n /**\n * Generate a transaction to update the validator identity (node pubkey) of a Vote account.\n */\n static updateValidatorIdentity(\n params: UpdateValidatorIdentityParams,\n ): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, nodePubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.UpdateValidatorIdentity;\n const data = encodeData(type);\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n","import {Buffer} from 'buffer';\nimport {\n assert as assertType,\n optional,\n string,\n type as pick,\n} from 'superstruct';\n\nimport * as Layout from './layout';\nimport * as shortvec from './utils/shortvec-encoding';\nimport {PublicKey, PUBLIC_KEY_LENGTH} from './publickey';\nimport {guardedShift, guardedSplice} from './utils/guarded-array-utils';\n\nexport const VALIDATOR_INFO_KEY = new PublicKey(\n 'Va1idator1nfo111111111111111111111111111111',\n);\n\n/**\n * @internal\n */\ntype ConfigKey = {\n publicKey: PublicKey;\n isSigner: boolean;\n};\n\n/**\n * Info used to identity validators.\n */\nexport type Info = {\n /** validator name */\n name: string;\n /** optional, validator website */\n website?: string;\n /** optional, extra information the validator chose to share */\n details?: string;\n /** optional, validator logo URL */\n iconUrl?: string;\n /** optional, used to identify validators on keybase.io */\n keybaseUsername?: string;\n};\n\nconst InfoString = pick({\n name: string(),\n website: optional(string()),\n details: optional(string()),\n iconUrl: optional(string()),\n keybaseUsername: optional(string()),\n});\n\n/**\n * ValidatorInfo class\n */\nexport class ValidatorInfo {\n /**\n * validator public key\n */\n key: PublicKey;\n /**\n * validator information\n */\n info: Info;\n\n /**\n * Construct a valid ValidatorInfo\n *\n * @param key validator public key\n * @param info validator information\n */\n constructor(key: PublicKey, info: Info) {\n this.key = key;\n this.info = info;\n }\n\n /**\n * Deserialize ValidatorInfo from the config account data. Exactly two config\n * keys are required in the data.\n *\n * @param buffer config account data\n * @return null if info was not found\n */\n static fromConfigData(\n buffer: Buffer | Uint8Array | Array,\n ): ValidatorInfo | null {\n let byteArray = [...buffer];\n const configKeyCount = shortvec.decodeLength(byteArray);\n if (configKeyCount !== 2) return null;\n\n const configKeys: Array = [];\n for (let i = 0; i < 2; i++) {\n const publicKey = new PublicKey(\n guardedSplice(byteArray, 0, PUBLIC_KEY_LENGTH),\n );\n const isSigner = guardedShift(byteArray) === 1;\n configKeys.push({publicKey, isSigner});\n }\n\n if (configKeys[0].publicKey.equals(VALIDATOR_INFO_KEY)) {\n if (configKeys[1].isSigner) {\n const rawInfo: any = Layout.rustString().decode(Buffer.from(byteArray));\n const info = JSON.parse(rawInfo as string);\n assertType(info, InfoString);\n return new ValidatorInfo(configKeys[1].publicKey, info);\n }\n }\n\n return null;\n }\n}\n","import * as BufferLayout from '@solana/buffer-layout';\nimport type {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport {toBuffer} from './utils/to-buffer';\n\nexport const VOTE_PROGRAM_ID = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n);\n\nexport type Lockout = {\n slot: number;\n confirmationCount: number;\n};\n\n/**\n * History of how many credits earned by the end of each epoch\n */\nexport type EpochCredits = Readonly<{\n epoch: number;\n credits: number;\n prevCredits: number;\n}>;\n\nexport type AuthorizedVoter = Readonly<{\n epoch: number;\n authorizedVoter: PublicKey;\n}>;\n\ntype AuthorizedVoterRaw = Readonly<{\n authorizedVoter: Uint8Array;\n epoch: number;\n}>;\n\ntype PriorVoters = Readonly<{\n buf: PriorVoterRaw[];\n idx: number;\n isEmpty: number;\n}>;\n\nexport type PriorVoter = Readonly<{\n authorizedPubkey: PublicKey;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\ntype PriorVoterRaw = Readonly<{\n authorizedPubkey: Uint8Array;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\nexport type BlockTimestamp = Readonly<{\n slot: number;\n timestamp: number;\n}>;\n\ntype VoteAccountData = Readonly<{\n authorizedVoters: AuthorizedVoterRaw[];\n authorizedWithdrawer: Uint8Array;\n commission: number;\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n nodePubkey: Uint8Array;\n priorVoters: PriorVoters;\n rootSlot: number;\n rootSlotValid: number;\n votes: Lockout[];\n}>;\n\n/**\n * See https://github.com/solana-labs/solana/blob/8a12ed029cfa38d4a45400916c2463fb82bbec8c/programs/vote_api/src/vote_state.rs#L68-L88\n *\n * @internal\n */\nconst VoteAccountLayout = BufferLayout.struct([\n Layout.publicKey('nodePubkey'),\n Layout.publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n BufferLayout.nu64(), // votes.length\n BufferLayout.seq(\n BufferLayout.struct([\n BufferLayout.nu64('slot'),\n BufferLayout.u32('confirmationCount'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'votes',\n ),\n BufferLayout.u8('rootSlotValid'),\n BufferLayout.nu64('rootSlot'),\n BufferLayout.nu64(), // authorizedVoters.length\n BufferLayout.seq(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n Layout.publicKey('authorizedVoter'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'authorizedVoters',\n ),\n BufferLayout.struct(\n [\n BufferLayout.seq(\n BufferLayout.struct([\n Layout.publicKey('authorizedPubkey'),\n BufferLayout.nu64('epochOfLastAuthorizedSwitch'),\n BufferLayout.nu64('targetEpoch'),\n ]),\n 32,\n 'buf',\n ),\n BufferLayout.nu64('idx'),\n BufferLayout.u8('isEmpty'),\n ],\n 'priorVoters',\n ),\n BufferLayout.nu64(), // epochCredits.length\n BufferLayout.seq(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n BufferLayout.nu64('credits'),\n BufferLayout.nu64('prevCredits'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'epochCredits',\n ),\n BufferLayout.struct(\n [BufferLayout.nu64('slot'), BufferLayout.nu64('timestamp')],\n 'lastTimestamp',\n ),\n]);\n\ntype VoteAccountArgs = {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n};\n\n/**\n * VoteAccount class\n */\nexport class VoteAccount {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n\n /**\n * @internal\n */\n constructor(args: VoteAccountArgs) {\n this.nodePubkey = args.nodePubkey;\n this.authorizedWithdrawer = args.authorizedWithdrawer;\n this.commission = args.commission;\n this.rootSlot = args.rootSlot;\n this.votes = args.votes;\n this.authorizedVoters = args.authorizedVoters;\n this.priorVoters = args.priorVoters;\n this.epochCredits = args.epochCredits;\n this.lastTimestamp = args.lastTimestamp;\n }\n\n /**\n * Deserialize VoteAccount from the account data.\n *\n * @param buffer account data\n * @return VoteAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array,\n ): VoteAccount {\n const versionOffset = 4;\n const va = VoteAccountLayout.decode(toBuffer(buffer), versionOffset);\n\n let rootSlot: number | null = va.rootSlot;\n if (!va.rootSlotValid) {\n rootSlot = null;\n }\n\n return new VoteAccount({\n nodePubkey: new PublicKey(va.nodePubkey),\n authorizedWithdrawer: new PublicKey(va.authorizedWithdrawer),\n commission: va.commission,\n votes: va.votes,\n rootSlot,\n authorizedVoters: va.authorizedVoters.map(parseAuthorizedVoter),\n priorVoters: getPriorVoters(va.priorVoters),\n epochCredits: va.epochCredits,\n lastTimestamp: va.lastTimestamp,\n });\n }\n}\n\nfunction parseAuthorizedVoter({\n authorizedVoter,\n epoch,\n}: AuthorizedVoterRaw): AuthorizedVoter {\n return {\n epoch,\n authorizedVoter: new PublicKey(authorizedVoter),\n };\n}\n\nfunction parsePriorVoters({\n authorizedPubkey,\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n}: PriorVoterRaw): PriorVoter {\n return {\n authorizedPubkey: new PublicKey(authorizedPubkey),\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n };\n}\n\nfunction getPriorVoters({buf, idx, isEmpty}: PriorVoters): PriorVoter[] {\n if (isEmpty) {\n return [];\n }\n\n return [\n ...buf.slice(idx + 1).map(parsePriorVoters),\n ...buf.slice(0, idx).map(parsePriorVoters),\n ];\n}\n","const endpoint = {\n http: {\n devnet: 'http://api.devnet.solana.com',\n testnet: 'http://api.testnet.solana.com',\n 'mainnet-beta': 'http://api.mainnet-beta.solana.com/',\n },\n https: {\n devnet: 'https://api.devnet.solana.com',\n testnet: 'https://api.testnet.solana.com',\n 'mainnet-beta': 'https://api.mainnet-beta.solana.com/',\n },\n};\n\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet-beta';\n\n/**\n * Retrieves the RPC API URL for the specified cluster\n * @param {Cluster} [cluster=\"devnet\"] - The cluster name of the RPC API URL to use. Possible options: 'devnet' | 'testnet' | 'mainnet-beta'\n * @param {boolean} [tls=\"http\"] - Use TLS when connecting to cluster.\n *\n * @returns {string} URL string of the RPC endpoint\n */\nexport function clusterApiUrl(cluster?: Cluster, tls?: boolean): string {\n const key = tls === false ? 'http' : 'https';\n\n if (!cluster) {\n return endpoint[key]['devnet'];\n }\n\n const url = endpoint[key][cluster];\n if (!url) {\n throw new Error(`Unknown ${key} cluster: ${cluster}`);\n }\n return url;\n}\n","import type {Buffer} from 'buffer';\n\nimport {\n BlockheightBasedTransactionConfirmationStrategy,\n Connection,\n DurableNonceTransactionConfirmationStrategy,\n TransactionConfirmationStrategy,\n} from '../connection';\nimport type {TransactionSignature} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport {SendTransactionError} from '../errors';\n\n/**\n * Send and confirm a raw transaction\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Buffer} rawTransaction\n * @param {TransactionConfirmationStrategy} confirmationStrategy\n * @param {ConfirmOptions} [options]\n * @returns {Promise}\n */\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategy: TransactionConfirmationStrategy,\n options?: ConfirmOptions,\n): Promise;\n\n/**\n * @deprecated Calling `sendAndConfirmRawTransaction()` without a `confirmationStrategy`\n * is no longer supported and will be removed in a future version.\n */\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n options?: ConfirmOptions,\n): Promise;\n\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategyOrConfirmOptions:\n | TransactionConfirmationStrategy\n | ConfirmOptions\n | undefined,\n maybeConfirmOptions?: ConfirmOptions,\n): Promise {\n let confirmationStrategy: TransactionConfirmationStrategy | undefined;\n let options: ConfirmOptions | undefined;\n if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'lastValidBlockHeight',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as BlockheightBasedTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'nonceValue',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as DurableNonceTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else {\n options = confirmationStrategyOrConfirmOptions as\n | ConfirmOptions\n | undefined;\n }\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendRawTransaction(\n rawTransaction,\n sendOptions,\n );\n\n const commitment = options && options.commitment;\n const confirmationPromise = confirmationStrategy\n ? connection.confirmTransaction(confirmationStrategy, commitment)\n : connection.confirmTransaction(signature, commitment);\n const status = (await confirmationPromise).value;\n\n if (status.err) {\n if (signature != null) {\n throw new SendTransactionError({\n action: sendOptions?.skipPreflight ? 'send' : 'simulate',\n signature: signature,\n transactionMessage: `Status: (${JSON.stringify(status)})`,\n });\n }\n throw new Error(\n `Raw transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n","export * from './account';\nexport * from './blockhash';\nexport * from './bpf-loader-deprecated';\nexport * from './bpf-loader';\nexport * from './connection';\nexport * from './epoch-schedule';\nexport * from './errors';\nexport * from './fee-calculator';\nexport * from './keypair';\nexport * from './loader';\nexport * from './message';\nexport * from './nonce-account';\nexport * from './programs';\nexport * from './publickey';\nexport * from './transaction';\nexport * from './validator-info';\nexport * from './vote-account';\nexport * from './sysvar';\nexport * from './utils';\n\n/**\n * There are 1-billion lamports in one SOL\n */\nexport const LAMPORTS_PER_SOL = 1000000000;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaSwapProgram = void 0;\r\nconst SolanaSwapData_1 = require(\"./SolanaSwapData\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst createHash = require(\"create-hash\");\r\nconst programIdl = require(\"./programIdl.json\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst spl_token_1 = require(\"@solana/spl-token\");\r\nconst SolanaFees_1 = require(\"../base/modules/SolanaFees\");\r\nconst SolanaProgramBase_1 = require(\"../program/SolanaProgramBase\");\r\nconst SwapInit_1 = require(\"./modules/SwapInit\");\r\nconst SolanaDataAccount_1 = require(\"./modules/SolanaDataAccount\");\r\nconst SwapRefund_1 = require(\"./modules/SwapRefund\");\r\nconst SwapClaim_1 = require(\"./modules/SwapClaim\");\r\nconst SolanaLpVault_1 = require(\"./modules/SolanaLpVault\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst SolanaSigner_1 = require(\"../wallet/SolanaSigner\");\r\nconst SolanaKeypairWallet_1 = require(\"../wallet/SolanaKeypairWallet\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nconst SolanaTokens_1 = require(\"../base/modules/SolanaTokens\");\r\nconst BN = require(\"bn.js\");\r\nfunction toPublicKeyOrNull(str) {\r\n return str == null ? null : new web3_js_1.PublicKey(str);\r\n}\r\nclass SolanaSwapProgram extends SolanaProgramBase_1.SolanaProgramBase {\r\n constructor(connection, btcRelay, storage, programAddress, retryPolicy, solanaFeeEstimator = btcRelay.Fees || new SolanaFees_1.SolanaFees(connection)) {\r\n super(connection, programIdl, programAddress, retryPolicy, solanaFeeEstimator);\r\n ////////////////////////\r\n //// Constants\r\n this.ESCROW_STATE_RENT_EXEMPT = 2658720;\r\n ////////////////////////\r\n //// PDA accessors\r\n this.SwapVaultAuthority = this.pda(\"authority\");\r\n this.SwapVault = this.pda(\"vault\", (tokenAddress) => [tokenAddress.toBuffer()]);\r\n this.SwapUserVault = this.pda(\"uservault\", (publicKey, tokenAddress) => [publicKey.toBuffer(), tokenAddress.toBuffer()]);\r\n this.SwapEscrowState = this.pda(\"state\", (hash) => [hash]);\r\n ////////////////////////\r\n //// Timeouts\r\n this.chainId = \"SOLANA\";\r\n this.claimWithSecretTimeout = 45;\r\n this.claimWithTxDataTimeout = 120;\r\n this.refundTimeout = 45;\r\n this.claimGracePeriod = 10 * 60;\r\n this.refundGracePeriod = 10 * 60;\r\n this.authGracePeriod = 5 * 60;\r\n this.Init = new SwapInit_1.SwapInit(this);\r\n this.Refund = new SwapRefund_1.SwapRefund(this);\r\n this.Claim = new SwapClaim_1.SwapClaim(this, btcRelay);\r\n this.DataAccount = new SolanaDataAccount_1.SolanaDataAccount(this, storage);\r\n this.LpVault = new SolanaLpVault_1.SolanaLpVault(this);\r\n }\r\n async start() {\r\n await this.DataAccount.init();\r\n }\r\n getClaimableDeposits(signer) {\r\n return this.DataAccount.getDataAccountsInfo(new web3_js_1.PublicKey(signer));\r\n }\r\n claimDeposits(signer) {\r\n return this.DataAccount.sweepDataAccounts(signer);\r\n }\r\n ////////////////////////////////////////////\r\n //// Signatures\r\n preFetchForInitSignatureVerification(data) {\r\n return this.Init.preFetchForInitSignatureVerification(data);\r\n }\r\n preFetchBlockDataForSignatures() {\r\n return this.Init.preFetchBlockDataForSignatures();\r\n }\r\n getInitSignature(signer, swapData, authorizationTimeout, preFetchedBlockData, feeRate) {\r\n return this.Init.signSwapInitialization(signer, swapData, authorizationTimeout, preFetchedBlockData, feeRate);\r\n }\r\n isValidInitAuthorization(swapData, { timeout, prefix, signature }, feeRate, preFetchedData) {\r\n return this.Init.isSignatureValid(swapData, timeout, prefix, signature, feeRate, preFetchedData);\r\n }\r\n getInitAuthorizationExpiry(swapData, { timeout, prefix, signature }, preFetchedData) {\r\n return this.Init.getSignatureExpiry(timeout, signature, preFetchedData);\r\n }\r\n isInitAuthorizationExpired(swapData, { timeout, prefix, signature }) {\r\n return this.Init.isSignatureExpired(signature, timeout);\r\n }\r\n getRefundSignature(signer, swapData, authorizationTimeout) {\r\n return this.Refund.signSwapRefund(signer, swapData, authorizationTimeout);\r\n }\r\n isValidRefundAuthorization(swapData, { timeout, prefix, signature }) {\r\n return this.Refund.isSignatureValid(swapData, timeout, prefix, signature);\r\n }\r\n getDataSignature(signer, data) {\r\n return this.Signatures.getDataSignature(signer, data);\r\n }\r\n isValidDataSignature(data, signature, publicKey) {\r\n return this.Signatures.isValidDataSignature(data, signature, publicKey);\r\n }\r\n ////////////////////////////////////////////\r\n //// Swap data utils\r\n /**\r\n * Checks whether the claim is claimable by us, that means not expired, we are claimer & the swap is commited\r\n *\r\n * @param signer\r\n * @param data\r\n */\r\n async isClaimable(signer, data) {\r\n if (!data.isClaimer(signer))\r\n return false;\r\n if (await this.isExpired(signer, data))\r\n return false;\r\n return await this.isCommited(data);\r\n }\r\n /**\r\n * Checks whether a swap is commited, i.e. the swap still exists on-chain and was not claimed nor refunded\r\n *\r\n * @param swapData\r\n */\r\n async isCommited(swapData) {\r\n const paymentHash = buffer_1.Buffer.from(swapData.paymentHash, \"hex\");\r\n const account = await this.program.account.escrowState.fetchNullable(this.SwapEscrowState(paymentHash));\r\n if (account == null)\r\n return false;\r\n return swapData.correctPDA(account);\r\n }\r\n /**\r\n * Checks whether the swap is expired, takes into consideration possible on-chain time skew, therefore for claimer\r\n * the swap expires a bit sooner than it should've & for the offerer it expires a bit later\r\n *\r\n * @param signer\r\n * @param data\r\n */\r\n isExpired(signer, data) {\r\n let currentTimestamp = new BN(Math.floor(Date.now() / 1000));\r\n if (data.isClaimer(signer))\r\n currentTimestamp = currentTimestamp.add(new BN(this.claimGracePeriod));\r\n if (data.isOfferer(signer))\r\n currentTimestamp = currentTimestamp.sub(new BN(this.refundGracePeriod));\r\n return Promise.resolve(data.expiry.lt(currentTimestamp));\r\n }\r\n /**\r\n * Checks if the swap is refundable by us, checks if we are offerer, if the swap is already expired & if the swap\r\n * is still commited\r\n *\r\n * @param signer\r\n * @param data\r\n */\r\n async isRequestRefundable(signer, data) {\r\n //Swap can only be refunded by the offerer\r\n if (!data.isOfferer(signer))\r\n return false;\r\n if (!(await this.isExpired(signer, data)))\r\n return false;\r\n return await this.isCommited(data);\r\n }\r\n /**\r\n * Get the swap payment hash to be used for an on-chain swap, this just uses a sha256 hash of the values\r\n *\r\n * @param outputScript output script required to claim the swap\r\n * @param amount sats sent required to claim the swap\r\n * @param confirmations\r\n * @param nonce swap nonce uniquely identifying the transaction to prevent replay attacks\r\n */\r\n getHashForOnchain(outputScript, amount, confirmations, nonce) {\r\n nonce ?? (nonce = 0n);\r\n const paymentHash = createHash(\"sha256\").update(buffer_1.Buffer.concat([\r\n base_1.BigIntBufferUtils.toBuffer(nonce, \"le\", 8),\r\n base_1.BigIntBufferUtils.toBuffer(amount, \"le\", 8),\r\n outputScript\r\n ])).digest().toString(\"hex\");\r\n return buffer_1.Buffer.from((0, Utils_1.toClaimHash)(paymentHash, nonce, confirmations), \"hex\");\r\n }\r\n getHashForHtlc(swapHash) {\r\n return buffer_1.Buffer.from((0, Utils_1.toClaimHash)(swapHash.toString(\"hex\"), 0n, 0), \"hex\");\r\n }\r\n getHashForTxId(txId, confirmations) {\r\n return buffer_1.Buffer.from((0, Utils_1.toClaimHash)(buffer_1.Buffer.from(txId, \"hex\").reverse().toString(\"hex\"), 0n, confirmations), \"hex\");\r\n }\r\n ////////////////////////////////////////////\r\n //// Swap data getters\r\n /**\r\n * Gets the status of the specific swap, this also checks if we are offerer/claimer & checks for expiry (to see\r\n * if swap is refundable)\r\n *\r\n * @param signer\r\n * @param data\r\n */\r\n async getCommitStatus(signer, data) {\r\n const escrowStateKey = this.SwapEscrowState(buffer_1.Buffer.from(data.paymentHash, \"hex\"));\r\n const [escrowState, isExpired] = await Promise.all([\r\n this.program.account.escrowState.fetchNullable(escrowStateKey),\r\n this.isExpired(signer, data)\r\n ]);\r\n if (escrowState != null) {\r\n if (data.correctPDA(escrowState)) {\r\n if (data.isOfferer(signer) && isExpired)\r\n return base_1.SwapCommitStatus.REFUNDABLE;\r\n return base_1.SwapCommitStatus.COMMITED;\r\n }\r\n if (data.isOfferer(signer) && isExpired)\r\n return base_1.SwapCommitStatus.EXPIRED;\r\n return base_1.SwapCommitStatus.NOT_COMMITED;\r\n }\r\n //Check if paid or what\r\n const status = await this.Events.findInEvents(escrowStateKey, async (event) => {\r\n if (event.name === \"ClaimEvent\") {\r\n if (!event.data.sequence.eq(data.sequence))\r\n return null;\r\n return base_1.SwapCommitStatus.PAID;\r\n }\r\n if (event.name === \"RefundEvent\") {\r\n if (!event.data.sequence.eq(data.sequence))\r\n return null;\r\n if (isExpired)\r\n return base_1.SwapCommitStatus.EXPIRED;\r\n return base_1.SwapCommitStatus.NOT_COMMITED;\r\n }\r\n });\r\n if (status != null)\r\n return status;\r\n if (isExpired) {\r\n return base_1.SwapCommitStatus.EXPIRED;\r\n }\r\n return base_1.SwapCommitStatus.NOT_COMMITED;\r\n }\r\n /**\r\n * Checks the status of the specific payment hash\r\n *\r\n * @param claimHash\r\n */\r\n async getClaimHashStatus(claimHash) {\r\n const { paymentHash } = (0, Utils_1.fromClaimHash)(claimHash);\r\n const escrowStateKey = this.SwapEscrowState(buffer_1.Buffer.from(paymentHash, \"hex\"));\r\n const abortController = new AbortController();\r\n //Start fetching events before checking escrow PDA, this call is used when quoting, so saving 100ms here helps a lot!\r\n const eventsPromise = this.Events.findInEvents(escrowStateKey, async (event) => {\r\n if (event.name === \"ClaimEvent\")\r\n return base_1.SwapCommitStatus.PAID;\r\n if (event.name === \"RefundEvent\")\r\n return base_1.SwapCommitStatus.NOT_COMMITED;\r\n }, abortController.signal).catch(e => {\r\n abortController.abort(e);\r\n return null;\r\n });\r\n const escrowState = await this.program.account.escrowState.fetchNullable(escrowStateKey);\r\n abortController.signal.throwIfAborted();\r\n if (escrowState != null) {\r\n abortController.abort();\r\n return base_1.SwapCommitStatus.COMMITED;\r\n }\r\n //Check if paid or what\r\n const eventsStatus = await eventsPromise;\r\n abortController.signal.throwIfAborted();\r\n if (eventsStatus != null)\r\n return eventsStatus;\r\n return base_1.SwapCommitStatus.NOT_COMMITED;\r\n }\r\n /**\r\n * Returns the data committed for a specific payment hash, or null if no data is currently commited for\r\n * the specific swap\r\n *\r\n * @param claimHashHex\r\n */\r\n async getCommitedData(claimHashHex) {\r\n const { paymentHash } = (0, Utils_1.fromClaimHash)(claimHashHex);\r\n const paymentHashBuffer = buffer_1.Buffer.from(paymentHash, \"hex\");\r\n const account = await this.program.account.escrowState.fetchNullable(this.SwapEscrowState(paymentHashBuffer));\r\n if (account == null)\r\n return null;\r\n return SolanaSwapData_1.SolanaSwapData.fromEscrowState(account);\r\n }\r\n ////////////////////////////////////////////\r\n //// Swap data initializer\r\n createSwapData(type, offerer, claimer, token, amount, claimHash, sequence, expiry, payIn, payOut, securityDeposit, claimerBounty, depositToken) {\r\n if (depositToken != null) {\r\n if (!new web3_js_1.PublicKey(depositToken).equals(SolanaTokens_1.SolanaTokens.WSOL_ADDRESS))\r\n throw new Error(\"Only SOL supported as deposit token!\");\r\n }\r\n const tokenAddr = new web3_js_1.PublicKey(token);\r\n const offererKey = offerer == null ? null : new web3_js_1.PublicKey(offerer);\r\n const claimerKey = claimer == null ? null : new web3_js_1.PublicKey(claimer);\r\n const { paymentHash, nonce, confirmations } = (0, Utils_1.fromClaimHash)(claimHash);\r\n return Promise.resolve(new SolanaSwapData_1.SolanaSwapData(offererKey, claimerKey, tokenAddr, (0, Utils_1.toBN)(amount), paymentHash, (0, Utils_1.toBN)(sequence), (0, Utils_1.toBN)(expiry), nonce, confirmations, payOut, type == null ? null : SolanaSwapData_1.SolanaSwapData.typeToKind(type), payIn, offererKey == null ? null : payIn ? (0, spl_token_1.getAssociatedTokenAddressSync)(tokenAddr, offererKey) : web3_js_1.PublicKey.default, claimerKey == null ? null : payOut ? (0, spl_token_1.getAssociatedTokenAddressSync)(tokenAddr, claimerKey) : web3_js_1.PublicKey.default, (0, Utils_1.toBN)(securityDeposit), (0, Utils_1.toBN)(claimerBounty), null));\r\n }\r\n ////////////////////////////////////////////\r\n //// Utils\r\n async getBalance(signer, tokenAddress, inContract) {\r\n const token = new web3_js_1.PublicKey(tokenAddress);\r\n const publicKey = new web3_js_1.PublicKey(signer);\r\n if (inContract)\r\n return await this.getIntermediaryBalance(publicKey, token);\r\n let { balance } = await this.Tokens.getTokenBalance(publicKey, token);\r\n if (token.equals(SolanaTokens_1.SolanaTokens.WSOL_ADDRESS)) {\r\n const accountRentExemptCost = 1000000n;\r\n balance = balance - accountRentExemptCost;\r\n if (balance < 0n)\r\n balance = 0n;\r\n }\r\n this.logger.debug(\"getBalance(): token balance, token: \" + token.toBase58() + \" balance: \" + balance.toString(10));\r\n return balance;\r\n }\r\n getIntermediaryData(address, token) {\r\n return this.LpVault.getIntermediaryData(new web3_js_1.PublicKey(address), new web3_js_1.PublicKey(token));\r\n }\r\n getIntermediaryReputation(address, token) {\r\n return this.LpVault.getIntermediaryReputation(new web3_js_1.PublicKey(address), new web3_js_1.PublicKey(token));\r\n }\r\n getIntermediaryBalance(address, token) {\r\n return this.LpVault.getIntermediaryBalance(address, token);\r\n }\r\n isValidAddress(address) {\r\n return this.Addresses.isValidAddress(address);\r\n }\r\n getNativeCurrencyAddress() {\r\n return this.Tokens.getNativeCurrencyAddress().toString();\r\n }\r\n ////////////////////////////////////////////\r\n //// Transaction initializers\r\n async txsClaimWithSecret(signer, swapData, secret, checkExpiry, initAta, feeRate, skipAtaCheck) {\r\n return this.Claim.txsClaimWithSecret(typeof (signer) === \"string\" ? new web3_js_1.PublicKey(signer) : signer.getPublicKey(), swapData, secret, checkExpiry, initAta, feeRate, skipAtaCheck);\r\n }\r\n async txsClaimWithTxData(signer, swapData, tx, requiredConfirmations, vout, commitedHeader, synchronizer, initAta, feeRate, storageAccHolder) {\r\n if (swapData.confirmations !== requiredConfirmations)\r\n throw new Error(\"Invalid requiredConfirmations provided!\");\r\n return this.Claim.txsClaimWithTxData(typeof (signer) === \"string\" ? new web3_js_1.PublicKey(signer) : signer, swapData, tx, vout, commitedHeader, synchronizer, initAta, storageAccHolder, feeRate);\r\n }\r\n txsRefund(signer, swapData, check, initAta, feeRate) {\r\n if (!swapData.isOfferer(signer))\r\n throw new Error(\"Only offerer can refund on Solana\");\r\n return this.Refund.txsRefund(swapData, check, initAta, feeRate);\r\n }\r\n txsRefundWithAuthorization(signer, swapData, { timeout, prefix, signature }, check, initAta, feeRate) {\r\n if (!swapData.isOfferer(signer))\r\n throw new Error(\"Only offerer can refund on Solana\");\r\n return this.Refund.txsRefundWithAuthorization(swapData, timeout, prefix, signature, check, initAta, feeRate);\r\n }\r\n txsInit(swapData, { timeout, prefix, signature }, skipChecks, feeRate) {\r\n if (swapData.isPayIn()) {\r\n return this.Init.txsInitPayIn(swapData, timeout, prefix, signature, skipChecks, feeRate);\r\n }\r\n else {\r\n return this.Init.txsInit(swapData, timeout, prefix, signature, skipChecks, feeRate);\r\n }\r\n }\r\n txsWithdraw(signer, token, amount, feeRate) {\r\n return this.LpVault.txsWithdraw(new web3_js_1.PublicKey(signer), new web3_js_1.PublicKey(token), amount, feeRate);\r\n }\r\n txsDeposit(signer, token, amount, feeRate) {\r\n return this.LpVault.txsDeposit(new web3_js_1.PublicKey(signer), new web3_js_1.PublicKey(token), amount, feeRate);\r\n }\r\n txsTransfer(signer, token, amount, dstAddress, feeRate) {\r\n return this.Tokens.txsTransfer(new web3_js_1.PublicKey(signer), new web3_js_1.PublicKey(token), amount, new web3_js_1.PublicKey(dstAddress), feeRate);\r\n }\r\n ////////////////////////////////////////////\r\n //// Executors\r\n async claimWithSecret(signer, swapData, secret, checkExpiry, initAta, txOptions) {\r\n const result = await this.Claim.txsClaimWithSecret(signer.getPublicKey(), swapData, secret, checkExpiry, initAta, txOptions?.feeRate);\r\n const [signature] = await this.Transactions.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n return signature;\r\n }\r\n async claimWithTxData(signer, swapData, tx, requiredConfirmations, vout, commitedHeader, synchronizer, initAta, txOptions) {\r\n if (requiredConfirmations !== swapData.confirmations)\r\n throw new Error(\"Invalid requiredConfirmations provided!\");\r\n const data = {\r\n storageAcc: null\r\n };\r\n const txs = await this.Claim.txsClaimWithTxData(signer, swapData, tx, vout, commitedHeader, synchronizer, initAta, data, txOptions?.feeRate);\r\n if (txs === null)\r\n throw new Error(\"Btc relay not synchronized to required blockheight!\");\r\n //TODO: This doesn't return proper tx signature\r\n const [signature] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n await this.DataAccount.removeDataAccount(data.storageAcc);\r\n return signature;\r\n }\r\n async refund(signer, swapData, check, initAta, txOptions) {\r\n let result = await this.txsRefund(signer.getAddress(), swapData, check, initAta, txOptions?.feeRate);\r\n const [signature] = await this.Transactions.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n return signature;\r\n }\r\n async refundWithAuthorization(signer, swapData, signature, check, initAta, txOptions) {\r\n let result = await this.txsRefundWithAuthorization(signer.getAddress(), swapData, signature, check, initAta, txOptions?.feeRate);\r\n const [txSignature] = await this.Transactions.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n return txSignature;\r\n }\r\n async init(signer, swapData, signature, skipChecks, txOptions) {\r\n if (swapData.isPayIn()) {\r\n if (!signer.getPublicKey().equals(swapData.offerer))\r\n throw new Error(\"Invalid signer provided!\");\r\n }\r\n else {\r\n if (!signer.getPublicKey().equals(swapData.claimer))\r\n throw new Error(\"Invalid signer provided!\");\r\n }\r\n const result = await this.txsInit(swapData, signature, skipChecks, txOptions?.feeRate);\r\n const [txSignature] = await this.Transactions.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n return txSignature;\r\n }\r\n async initAndClaimWithSecret(signer, swapData, signature, secret, skipChecks, txOptions) {\r\n if (!signer.getPublicKey().equals(swapData.claimer))\r\n throw new Error(\"Invalid signer provided!\");\r\n const txsCommit = await this.txsInit(swapData, signature, skipChecks, txOptions?.feeRate);\r\n const txsClaim = await this.Claim.txsClaimWithSecret(signer.getPublicKey(), swapData, secret, true, false, txOptions?.feeRate, true);\r\n return await this.Transactions.sendAndConfirm(signer, txsCommit.concat(txsClaim), txOptions?.waitForConfirmation, txOptions?.abortSignal);\r\n }\r\n async withdraw(signer, token, amount, txOptions) {\r\n const txs = await this.LpVault.txsWithdraw(signer.getPublicKey(), new web3_js_1.PublicKey(token), amount, txOptions?.feeRate);\r\n const [txId] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);\r\n return txId;\r\n }\r\n async deposit(signer, token, amount, txOptions) {\r\n const txs = await this.LpVault.txsDeposit(signer.getPublicKey(), new web3_js_1.PublicKey(token), amount, txOptions?.feeRate);\r\n const [txId] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);\r\n return txId;\r\n }\r\n async transfer(signer, token, amount, dstAddress, txOptions) {\r\n const txs = await this.Tokens.txsTransfer(signer.getPublicKey(), new web3_js_1.PublicKey(token), amount, new web3_js_1.PublicKey(dstAddress), txOptions?.feeRate);\r\n const [txId] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);\r\n return txId;\r\n }\r\n ////////////////////////////////////////////\r\n //// Transactions\r\n sendAndConfirm(signer, txs, waitForConfirmation, abortSignal, parallel, onBeforePublish) {\r\n return this.Transactions.sendAndConfirm(signer, txs, waitForConfirmation, abortSignal, parallel, onBeforePublish);\r\n }\r\n serializeTx(tx) {\r\n return this.Transactions.serializeTx(tx);\r\n }\r\n deserializeTx(txData) {\r\n return this.Transactions.deserializeTx(txData);\r\n }\r\n getTxIdStatus(txId) {\r\n return this.Transactions.getTxIdStatus(txId);\r\n }\r\n getTxStatus(tx) {\r\n return this.Transactions.getTxStatus(tx);\r\n }\r\n ////////////////////////////////////////////\r\n //// Fees\r\n getInitPayInFeeRate(offerer, claimer, token, claimHash) {\r\n const paymentHash = claimHash == null ? null : (0, Utils_1.fromClaimHash)(claimHash).paymentHash;\r\n return this.Init.getInitPayInFeeRate(toPublicKeyOrNull(offerer), toPublicKeyOrNull(claimer), toPublicKeyOrNull(token), paymentHash);\r\n }\r\n getInitFeeRate(offerer, claimer, token, claimHash) {\r\n const paymentHash = claimHash == null ? null : (0, Utils_1.fromClaimHash)(claimHash).paymentHash;\r\n return this.Init.getInitFeeRate(toPublicKeyOrNull(offerer), toPublicKeyOrNull(claimer), toPublicKeyOrNull(token), paymentHash);\r\n }\r\n getRefundFeeRate(swapData) {\r\n return this.Refund.getRefundFeeRate(swapData);\r\n }\r\n getClaimFeeRate(signer, swapData) {\r\n return this.Claim.getClaimFeeRate(new web3_js_1.PublicKey(signer), swapData);\r\n }\r\n getClaimFee(signer, swapData, feeRate) {\r\n return this.Claim.getClaimFee(new web3_js_1.PublicKey(signer), swapData, feeRate);\r\n }\r\n getRawClaimFee(signer, swapData, feeRate) {\r\n return this.Claim.getRawClaimFee(new web3_js_1.PublicKey(signer), swapData, feeRate);\r\n }\r\n /**\r\n * Get the estimated solana fee of the commit transaction\r\n */\r\n getCommitFee(swapData, feeRate) {\r\n return this.Init.getInitFee(swapData, feeRate);\r\n }\r\n /**\r\n * Get the estimated solana fee of the commit transaction, without any deposits\r\n */\r\n getRawCommitFee(swapData, feeRate) {\r\n return this.Init.getRawInitFee(swapData, feeRate);\r\n }\r\n /**\r\n * Get the estimated solana transaction fee of the refund transaction\r\n */\r\n getRefundFee(swapData, feeRate) {\r\n return this.Refund.getRefundFee(swapData, feeRate);\r\n }\r\n /**\r\n * Get the estimated solana transaction fee of the refund transaction\r\n */\r\n getRawRefundFee(swapData, feeRate) {\r\n return this.Refund.getRawRefundFee(swapData, feeRate);\r\n }\r\n ///////////////////////////////////\r\n //// Callbacks & handlers\r\n offBeforeTxReplace(callback) {\r\n return true;\r\n }\r\n onBeforeTxReplace(callback) { }\r\n onBeforeTxSigned(callback) {\r\n this.Transactions.onBeforeTxSigned(callback);\r\n }\r\n offBeforeTxSigned(callback) {\r\n return this.Transactions.offBeforeTxSigned(callback);\r\n }\r\n onSendTransaction(callback) {\r\n this.Transactions.onSendTransaction(callback);\r\n }\r\n offSendTransaction(callback) {\r\n return this.Transactions.offSendTransaction(callback);\r\n }\r\n isValidToken(tokenIdentifier) {\r\n try {\r\n new web3_js_1.PublicKey(tokenIdentifier);\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n randomAddress() {\r\n return web3_js_1.Keypair.generate().publicKey.toString();\r\n }\r\n randomSigner() {\r\n const keypair = web3_js_1.Keypair.generate();\r\n const wallet = new SolanaKeypairWallet_1.SolanaKeypairWallet(keypair);\r\n return new SolanaSigner_1.SolanaSigner(wallet, keypair);\r\n }\r\n getExtraData(outputScript, amount, confirmations, nonce) {\r\n return createHash(\"sha256\").update(buffer_1.Buffer.concat([\r\n base_1.BigIntBufferUtils.toBuffer(amount, \"le\", 8),\r\n outputScript\r\n ])).digest();\r\n }\r\n}\r\nexports.SolanaSwapProgram = SolanaSwapProgram;\r\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport {\n createDisableRequiredMemoTransfersInstruction,\n createEnableRequiredMemoTransfersInstruction,\n} from './instructions.js';\n\n/**\n * Enable memo transfers on the given account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to modify\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function enableRequiredMemoTransfers(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n owner: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createEnableRequiredMemoTransfersInstruction(account, ownerPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Disable memo transfers on the given account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to modify\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function disableRequiredMemoTransfers(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n owner: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createDisableRequiredMemoTransfersInstruction(account, ownerPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { createCurve } from './_shortw_utils.js';\nimport { createHasher, isogenyMap } from './abstract/hash-to-curve.js';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport type { Hex, PrivKey } from './abstract/utils.js';\nimport { bytesToNumberBE, concatBytes, ensureBytes, numberToBytesBE } from './abstract/utils.js';\nimport { ProjPointType as PointType, mapToCurveSimpleSWU } from './abstract/weierstrass.js';\n\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a: bigint, b: bigint) => (a + b / _2n) / b;\n\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y: bigint): bigint {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fp.eql(Fp.sqr(root), y)) throw new Error('Cannot find square root');\n return root;\n}\n\nconst Fp = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\n\nexport const secp256k1 = createCurve(\n {\n a: BigInt(0), // equation params: a, b\n b: BigInt(7), // Seem to be rigid: bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975\n Fp, // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n\n n: secp256k1N, // Curve order, total count of valid points in the field\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1), // Cofactor\n lowS: true, // Allow only low-S signatures by default in sign() and verify()\n /**\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n */\n endo: {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k: bigint) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg) k1 = n - k1;\n if (k2neg) k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n },\n sha256\n);\n\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\nconst fe = (x: bigint) => typeof x === 'bigint' && _0n < x && x < secp256k1P;\nconst ge = (x: bigint) => typeof x === 'bigint' && _0n < x && x < secp256k1N;\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES: { [tag: string]: Uint8Array } = {};\nfunction taggedHash(tag: string, ...messages: Uint8Array[]): Uint8Array {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point: PointType) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n: bigint) => numberToBytesBE(n, 32);\nconst modP = (x: bigint) => mod(x, secp256k1P);\nconst modN = (x: bigint) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q: PointType, a: bigint, b: bigint) =>\n Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv: PrivKey) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x: bigint): PointType {\n if (!fe(x)) throw new Error('bad x: need 0 < x < p'); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n) y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args: Uint8Array[]): bigint {\n return modN(bytesToNumberBE(taggedHash('BIP0340/challenge', ...args)));\n}\n\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey: Hex): Uint8Array {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(\n message: Hex,\n privateKey: PrivKey,\n auxRand: Hex = randomBytes(32)\n): Uint8Array {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ bytesToNumberBE(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(bytesToNumberBE(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n) throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px)) throw new Error('sign: Invalid signature produced');\n return sig;\n}\n\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature: Hex, message: Hex, publicKey: Hex): boolean {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(bytesToNumberBE(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = bytesToNumberBE(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!fe(r)) return false;\n const s = bytesToNumberBE(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!ge(s)) return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r) return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n } catch (error) {\n return false;\n }\n}\n\nexport const schnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\n\nconst isoMap = /* @__PURE__ */ (() =>\n isogenyMap(\n Fp,\n [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n ].map((i) => i.map((j) => BigInt(j))) as [bigint[], bigint[], bigint[], bigint[]]\n ))();\nconst mapSWU = /* @__PURE__ */ (() =>\n mapToCurveSimpleSWU(Fp, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fp.create(BigInt('-11')),\n }))();\nconst htf = /* @__PURE__ */ (() =>\n createHasher(\n secp256k1.ProjectivePoint,\n (scalars: bigint[]) => {\n const { x, y } = mapSWU(Fp.create(scalars[0]));\n return isoMap(x, y);\n },\n {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n }\n ))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IntermediaryError = void 0;\r\n/**\r\n * An error or inconsistency in the intermediary's returned data, this will blacklist the intermediary\r\n */\r\nclass IntermediaryError extends Error {\r\n constructor(msg) {\r\n super(msg);\r\n // Set the prototype explicitly.\r\n Object.setPrototypeOf(this, IntermediaryError.prototype);\r\n }\r\n}\r\nexports.IntermediaryError = IntermediaryError;\r\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","import type { ConfirmOptions, Connection, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { NATIVE_MINT_2022, TOKEN_2022_PROGRAM_ID } from '../constants.js';\nimport { createCreateNativeMintInstruction } from '../instructions/createNativeMint.js';\n\n/**\n * Create native mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param nativeMint Native mint id associated with program\n */\nexport async function createNativeMint(\n connection: Connection,\n payer: Signer,\n confirmOptions?: ConfirmOptions,\n nativeMint = NATIVE_MINT_2022,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(\n createCreateNativeMintInstruction(payer.publicKey, nativeMint, programId)\n );\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport type { AccountState } from '../../state/account.js';\nimport {\n createInitializeDefaultAccountStateInstruction,\n createUpdateDefaultAccountStateInstruction,\n} from './instructions.js';\n\n/**\n * Initialize a default account state on a mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint to initialize with extension\n * @param state Account state with which to initialize new accounts\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function initializeDefaultAccountState(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n state: AccountState,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createInitializeDefaultAccountStateInstruction(mint, state, programId));\n\n return await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n}\n\n/**\n * Update the default account state on a mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint to modify\n * @param state New account state to set on created accounts\n * @param freezeAuthority Freeze authority of the mint\n * @param multiSigners Signing accounts if `freezeAuthority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function updateDefaultAccountState(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n state: AccountState,\n freezeAuthority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [freezeAuthorityPublicKey, signers] = getSigners(freezeAuthority, multiSigners);\n\n const transaction = new Transaction().add(\n createUpdateDefaultAccountStateInstruction(mint, state, freezeAuthorityPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_hourglass_top_outline = void 0;\nvar ic_hourglass_top_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": []\n }]\n }]\n }, {\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M6,2l0.01,6L10,12l-3.99,4.01L6,22h12v-6l-4-4l4-3.99V2H6z M16,16.5V20H8v-3.5l4-4L16,16.5z\"\n },\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M6,2l0.01,6L10,12l-3.99,4.01L6,22h12v-6l-4-4l4-3.99V2H6z M16,16.5V20H8v-3.5l4-4L16,16.5z\"\n },\n \"children\": []\n }]\n }]\n }]\n};\nexports.ic_hourglass_top_outline = ic_hourglass_top_outline;","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaProgramBase = void 0;\r\nconst anchor_1 = require(\"@coral-xyz/anchor\");\r\nconst SolanaFees_1 = require(\"../base/modules/SolanaFees\");\r\nconst SolanaBase_1 = require(\"../base/SolanaBase\");\r\nconst SolanaProgramEvents_1 = require(\"./modules/SolanaProgramEvents\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst createHash = require(\"create-hash\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst SolanaKeypairWallet_1 = require(\"../wallet/SolanaKeypairWallet\");\r\n/**\r\n * Base class providing program specific utilities\r\n */\r\nclass SolanaProgramBase extends SolanaBase_1.SolanaBase {\r\n constructor(connection, programIdl, programAddress, retryPolicy, solanaFeeEstimator = new SolanaFees_1.SolanaFees(connection)) {\r\n super(connection, retryPolicy, solanaFeeEstimator);\r\n this.program = new anchor_1.Program(programIdl, programAddress || programIdl.metadata.address, new anchor_1.AnchorProvider(connection, new SolanaKeypairWallet_1.SolanaKeypairWallet(web3_js_1.Keypair.generate()), {}));\r\n this.Events = new SolanaProgramEvents_1.SolanaProgramEvents(this);\r\n }\r\n pda(seed, func) {\r\n if (func == null) {\r\n return web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from(seed)], this.program.programId)[0];\r\n }\r\n return (...args) => {\r\n const res = func(...args);\r\n return web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from(seed)].concat(res), this.program.programId)[0];\r\n };\r\n }\r\n /**\r\n * Returns a function for deriving a dynamic deterministic keypair from dynamic arguments\r\n *\r\n * @param func function translating the function argument to Buffer[] to be used for deriving the keypair\r\n */\r\n keypair(func) {\r\n return (...args) => {\r\n const res = func(...args);\r\n const buff = createHash(\"sha256\").update(buffer_1.Buffer.concat(res)).digest();\r\n return web3_js_1.Keypair.fromSeed(buff);\r\n };\r\n }\r\n}\r\nexports.SolanaProgramBase = SolanaProgramBase;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapRefund = void 0;\r\nconst SolanaSwapModule_1 = require(\"../SolanaSwapModule\");\r\nconst createHash = require(\"create-hash\");\r\nconst tweetnacl_1 = require(\"tweetnacl\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst spl_token_1 = require(\"@solana/spl-token\");\r\nconst SolanaAction_1 = require(\"../../base/SolanaAction\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst SolanaTokens_1 = require(\"../../base/modules/SolanaTokens\");\r\nconst BN = require(\"bn.js\");\r\nclass SwapRefund extends SolanaSwapModule_1.SolanaSwapModule {\r\n /**\r\n * Action for generic Refund instruction\r\n *\r\n * @param swapData\r\n * @param refundAuthTimeout optional refund authorization timeout (should be 0 for refunding expired swaps)\r\n * @constructor\r\n * @private\r\n */\r\n async Refund(swapData, refundAuthTimeout) {\r\n const accounts = {\r\n offerer: swapData.offerer,\r\n claimer: swapData.claimer,\r\n escrowState: this.root.SwapEscrowState(buffer_1.Buffer.from(swapData.paymentHash, \"hex\")),\r\n claimerUserData: !swapData.payOut ? this.root.SwapUserVault(swapData.claimer, swapData.token) : null,\r\n ixSysvar: refundAuthTimeout != null ? web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY : null\r\n };\r\n const useTimeout = refundAuthTimeout != null ? refundAuthTimeout : 0n;\r\n if (swapData.isPayIn()) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(swapData.token, swapData.offerer);\r\n return new SolanaAction_1.SolanaAction(swapData.offerer, this.root, await this.program.methods\r\n .offererRefundPayIn((0, Utils_1.toBN)(useTimeout))\r\n .accounts({\r\n ...accounts,\r\n offererAta: ata,\r\n vault: this.root.SwapVault(swapData.token),\r\n vaultAuthority: this.root.SwapVaultAuthority,\r\n tokenProgram: spl_token_1.TOKEN_PROGRAM_ID\r\n })\r\n .instruction(), SwapRefund.CUCosts.REFUND_PAY_OUT);\r\n }\r\n else {\r\n return new SolanaAction_1.SolanaAction(swapData.offerer, this.root, await this.program.methods\r\n .offererRefund((0, Utils_1.toBN)(useTimeout))\r\n .accounts({\r\n ...accounts,\r\n offererUserData: this.root.SwapUserVault(swapData.offerer, swapData.token)\r\n })\r\n .instruction(), SwapRefund.CUCosts.REFUND);\r\n }\r\n }\r\n /**\r\n * Action for refunding with signature, adds the Ed25519 verify instruction\r\n *\r\n * @param swapData\r\n * @param timeout\r\n * @param prefix\r\n * @param signature\r\n * @constructor\r\n * @private\r\n */\r\n async RefundWithSignature(swapData, timeout, prefix, signature) {\r\n const action = new SolanaAction_1.SolanaAction(swapData.offerer, this.root, web3_js_1.Ed25519Program.createInstructionWithPublicKey({\r\n message: this.getRefundMessage(swapData, prefix, timeout),\r\n publicKey: swapData.claimer.toBuffer(),\r\n signature: signature\r\n }), 0, null, null, true);\r\n action.addAction(await this.Refund(swapData, BigInt(timeout)));\r\n return action;\r\n }\r\n /**\r\n * Gets the message to be signed as a refund authorization\r\n *\r\n * @param swapData\r\n * @param prefix\r\n * @param timeout\r\n * @private\r\n */\r\n getRefundMessage(swapData, prefix, timeout) {\r\n const messageBuffers = [\r\n buffer_1.Buffer.from(prefix, \"ascii\"),\r\n swapData.amount.toArrayLike(buffer_1.Buffer, \"le\", 8),\r\n swapData.expiry.toArrayLike(buffer_1.Buffer, \"le\", 8),\r\n swapData.sequence.toArrayLike(buffer_1.Buffer, \"le\", 8),\r\n buffer_1.Buffer.from(swapData.paymentHash, \"hex\"),\r\n new BN(timeout).toArrayLike(buffer_1.Buffer, \"le\", 8)\r\n ];\r\n return createHash(\"sha256\").update(buffer_1.Buffer.concat(messageBuffers)).digest();\r\n }\r\n /**\r\n * Checks whether we should unwrap the WSOL to SOL when refunding the swap\r\n *\r\n * @param swapData\r\n * @private\r\n */\r\n shouldUnwrap(swapData) {\r\n return swapData.isPayIn() &&\r\n swapData.token.equals(SolanaTokens_1.SolanaTokens.WSOL_ADDRESS) &&\r\n swapData.offerer.equals(swapData.offerer);\r\n }\r\n signSwapRefund(signer, swapData, authorizationTimeout) {\r\n if (signer.keypair == null)\r\n throw new Error(\"Unsupported\");\r\n if (!signer.getPublicKey().equals(swapData.claimer))\r\n throw new Error(\"Invalid signer, public key mismatch!\");\r\n const authPrefix = \"refund\";\r\n const authTimeout = Math.floor(Date.now() / 1000) + authorizationTimeout;\r\n const messageBuffer = this.getRefundMessage(swapData, authPrefix, authTimeout.toString(10));\r\n const signature = tweetnacl_1.sign.detached(messageBuffer, signer.keypair.secretKey);\r\n return Promise.resolve({\r\n prefix: authPrefix,\r\n timeout: authTimeout.toString(10),\r\n signature: buffer_1.Buffer.from(signature).toString(\"hex\")\r\n });\r\n }\r\n isSignatureValid(swapData, timeout, prefix, signature) {\r\n if (prefix !== \"refund\")\r\n throw new base_1.SignatureVerificationError(\"Invalid prefix\");\r\n const expiryTimestamp = BigInt(timeout);\r\n const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n const isExpired = (expiryTimestamp - currentTimestamp) < BigInt(this.root.authGracePeriod);\r\n if (isExpired)\r\n throw new base_1.SignatureVerificationError(\"Authorization expired!\");\r\n const signatureBuffer = buffer_1.Buffer.from(signature, \"hex\");\r\n const messageBuffer = this.getRefundMessage(swapData, prefix, timeout);\r\n if (!tweetnacl_1.sign.detached.verify(messageBuffer, signatureBuffer, swapData.claimer.toBuffer())) {\r\n throw new base_1.SignatureVerificationError(\"Invalid signature!\");\r\n }\r\n return Promise.resolve(messageBuffer);\r\n }\r\n /**\r\n * Creates transactions required for refunding timed out swap, also unwraps WSOL to SOL\r\n *\r\n * @param swapData swap data to refund\r\n * @param check whether to check if swap is already expired and refundable\r\n * @param initAta should initialize ATA if it doesn't exist\r\n * @param feeRate fee rate to be used for the transactions\r\n */\r\n async txsRefund(swapData, check, initAta, feeRate) {\r\n if (check && !await (0, Utils_1.tryWithRetries)(() => this.root.isRequestRefundable(swapData.offerer.toString(), swapData), this.retryPolicy)) {\r\n throw new base_1.SwapDataVerificationError(\"Not refundable yet!\");\r\n }\r\n const shouldInitAta = swapData.isPayIn() && !await this.root.Tokens.ataExists(swapData.offererAta);\r\n if (shouldInitAta && !initAta)\r\n throw new base_1.SwapDataVerificationError(\"ATA not initialized\");\r\n if (feeRate == null)\r\n feeRate = await this.root.getRefundFeeRate(swapData);\r\n const shouldUnwrap = this.shouldUnwrap(swapData);\r\n const action = new SolanaAction_1.SolanaAction(swapData.offerer, this.root);\r\n if (shouldInitAta) {\r\n const initAction = this.root.Tokens.InitAta(swapData.offerer, swapData.offerer, swapData.token, swapData.offererAta);\r\n if (initAction == null)\r\n throw new base_1.SwapDataVerificationError(\"Invalid claimer token account address\");\r\n action.addAction(initAction);\r\n }\r\n action.add(await this.Refund(swapData));\r\n if (shouldUnwrap)\r\n action.add(this.root.Tokens.Unwrap(swapData.offerer));\r\n this.logger.debug(\"txsRefund(): creating claim transaction, swap: \" + swapData.getClaimHash() +\r\n \" initializingAta: \" + shouldInitAta + \" unwrapping: \" + shouldUnwrap);\r\n return [await action.tx(feeRate)];\r\n }\r\n /**\r\n * Creates transactions required for refunding the swap with authorization signature, also unwraps WSOL to SOL\r\n *\r\n * @param swapData swap data to refund\r\n * @param timeout signature timeout\r\n * @param prefix signature prefix of the counterparty\r\n * @param signature signature of the counterparty\r\n * @param check whether to check if swap is committed before attempting refund\r\n * @param initAta should initialize ATA if it doesn't exist\r\n * @param feeRate fee rate to be used for the transactions\r\n */\r\n async txsRefundWithAuthorization(swapData, timeout, prefix, signature, check, initAta, feeRate) {\r\n if (check && !await (0, Utils_1.tryWithRetries)(() => this.root.isCommited(swapData), this.retryPolicy)) {\r\n throw new base_1.SwapDataVerificationError(\"Not correctly committed\");\r\n }\r\n await (0, Utils_1.tryWithRetries)(() => this.isSignatureValid(swapData, timeout, prefix, signature), this.retryPolicy, (e) => e instanceof base_1.SignatureVerificationError);\r\n const shouldInitAta = swapData.isPayIn() && !await this.root.Tokens.ataExists(swapData.offererAta);\r\n if (shouldInitAta && !initAta)\r\n throw new base_1.SwapDataVerificationError(\"ATA not initialized\");\r\n if (feeRate == null)\r\n feeRate = await this.root.getRefundFeeRate(swapData);\r\n console.log(\"[SolanaSwapProgram] txsRefundsWithAuthorization: feeRate: \", feeRate);\r\n const signatureBuffer = buffer_1.Buffer.from(signature, \"hex\");\r\n const shouldUnwrap = this.shouldUnwrap(swapData);\r\n const action = await this.RefundWithSignature(swapData, timeout, prefix, signatureBuffer);\r\n if (shouldInitAta) {\r\n const initAction = this.root.Tokens.InitAta(swapData.offerer, swapData.offerer, swapData.token, swapData.offererAta);\r\n if (initAction == null)\r\n throw new base_1.SwapDataVerificationError(\"Invalid claimer token account address\");\r\n action.addAction(initAction, 1); //Need to add it after the Ed25519 verify IX, but before the actual refund IX\r\n }\r\n if (shouldUnwrap)\r\n action.add(this.root.Tokens.Unwrap(swapData.offerer));\r\n this.logger.debug(\"txsRefundWithAuthorization(): creating claim transaction, swap: \" + swapData.getClaimHash() +\r\n \" initializingAta: \" + shouldInitAta + \" unwrapping: \" + shouldUnwrap +\r\n \" auth expiry: \" + timeout + \" signature: \" + signature);\r\n return [await action.tx(feeRate)];\r\n }\r\n getRefundFeeRate(swapData) {\r\n const accounts = [];\r\n if (swapData.payIn) {\r\n if (swapData.token != null)\r\n accounts.push(this.root.SwapVault(swapData.token));\r\n if (swapData.offerer != null)\r\n accounts.push(swapData.offerer);\r\n if (swapData.claimer != null)\r\n accounts.push(swapData.claimer);\r\n if (swapData.offererAta != null && !swapData.offererAta.equals(web3_js_1.PublicKey.default))\r\n accounts.push(swapData.offererAta);\r\n }\r\n else {\r\n if (swapData.offerer != null) {\r\n accounts.push(swapData.offerer);\r\n if (swapData.token != null)\r\n accounts.push(this.root.SwapUserVault(swapData.offerer, swapData.token));\r\n }\r\n if (swapData.claimer != null)\r\n accounts.push(swapData.claimer);\r\n }\r\n if (swapData.paymentHash != null)\r\n accounts.push(this.root.SwapEscrowState(buffer_1.Buffer.from(swapData.paymentHash, \"hex\")));\r\n return this.root.Fees.getFeeRate(accounts);\r\n }\r\n /**\r\n * Get the estimated solana transaction fee of the refund transaction, in the worst case scenario in case where the\r\n * ATA needs to be initialized again (i.e. adding the ATA rent exempt lamports to the fee)\r\n */\r\n async getRefundFee(swapData, feeRate) {\r\n return BigInt(swapData == null || swapData.payIn ? SolanaTokens_1.SolanaTokens.SPL_ATA_RENT_EXEMPT : 0) +\r\n await this.getRawRefundFee(swapData, feeRate);\r\n }\r\n /**\r\n * Get the estimated solana transaction fee of the refund transaction\r\n */\r\n async getRawRefundFee(swapData, feeRate) {\r\n if (swapData == null)\r\n return 10000n;\r\n feeRate = feeRate || await this.getRefundFeeRate(swapData);\r\n const computeBudget = swapData.payIn ? SwapRefund.CUCosts.REFUND_PAY_OUT : SwapRefund.CUCosts.REFUND;\r\n return 10000n + this.root.Fees.getPriorityFee(computeBudget, feeRate);\r\n }\r\n}\r\nexports.SwapRefund = SwapRefund;\r\nSwapRefund.CUCosts = {\r\n REFUND: 15000,\r\n REFUND_PAY_OUT: 50000\r\n};\r\n","import type { AccountMeta, Connection } from '@solana/web3.js';\nimport { TokenTransferHookAccountDataNotFound, TokenTransferHookInvalidSeed } from '../../errors.js';\n\ninterface Seed {\n data: Buffer;\n packedLength: number;\n}\n\nconst DISCRIMINATOR_SPAN = 1;\nconst LITERAL_LENGTH_SPAN = 1;\nconst INSTRUCTION_ARG_OFFSET_SPAN = 1;\nconst INSTRUCTION_ARG_LENGTH_SPAN = 1;\nconst ACCOUNT_KEY_INDEX_SPAN = 1;\nconst ACCOUNT_DATA_ACCOUNT_INDEX_SPAN = 1;\nconst ACCOUNT_DATA_OFFSET_SPAN = 1;\nconst ACCOUNT_DATA_LENGTH_SPAN = 1;\n\nfunction unpackSeedLiteral(seeds: Uint8Array): Seed {\n if (seeds.length < 1) {\n throw new TokenTransferHookInvalidSeed();\n }\n const [length, ...rest] = seeds;\n if (rest.length < length) {\n throw new TokenTransferHookInvalidSeed();\n }\n return {\n data: Buffer.from(rest.slice(0, length)),\n packedLength: DISCRIMINATOR_SPAN + LITERAL_LENGTH_SPAN + length,\n };\n}\n\nfunction unpackSeedInstructionArg(seeds: Uint8Array, instructionData: Buffer): Seed {\n if (seeds.length < 2) {\n throw new TokenTransferHookInvalidSeed();\n }\n const [index, length] = seeds;\n if (instructionData.length < length + index) {\n throw new TokenTransferHookInvalidSeed();\n }\n return {\n data: instructionData.subarray(index, index + length),\n packedLength: DISCRIMINATOR_SPAN + INSTRUCTION_ARG_OFFSET_SPAN + INSTRUCTION_ARG_LENGTH_SPAN,\n };\n}\n\nfunction unpackSeedAccountKey(seeds: Uint8Array, previousMetas: AccountMeta[]): Seed {\n if (seeds.length < 1) {\n throw new TokenTransferHookInvalidSeed();\n }\n const [index] = seeds;\n if (previousMetas.length <= index) {\n throw new TokenTransferHookInvalidSeed();\n }\n return {\n data: previousMetas[index].pubkey.toBuffer(),\n packedLength: DISCRIMINATOR_SPAN + ACCOUNT_KEY_INDEX_SPAN,\n };\n}\n\nasync function unpackSeedAccountData(\n seeds: Uint8Array,\n previousMetas: AccountMeta[],\n connection: Connection\n): Promise {\n if (seeds.length < 3) {\n throw new TokenTransferHookInvalidSeed();\n }\n const [accountIndex, dataIndex, length] = seeds;\n if (previousMetas.length <= accountIndex) {\n throw new TokenTransferHookInvalidSeed();\n }\n const accountInfo = await connection.getAccountInfo(previousMetas[accountIndex].pubkey);\n if (accountInfo == null) {\n throw new TokenTransferHookAccountDataNotFound();\n }\n if (accountInfo.data.length < dataIndex + length) {\n throw new TokenTransferHookInvalidSeed();\n }\n return {\n data: accountInfo.data.subarray(dataIndex, dataIndex + length),\n packedLength:\n DISCRIMINATOR_SPAN + ACCOUNT_DATA_ACCOUNT_INDEX_SPAN + ACCOUNT_DATA_OFFSET_SPAN + ACCOUNT_DATA_LENGTH_SPAN,\n };\n}\n\nasync function unpackFirstSeed(\n seeds: Uint8Array,\n previousMetas: AccountMeta[],\n instructionData: Buffer,\n connection: Connection\n): Promise {\n const [discriminator, ...rest] = seeds;\n const remaining = new Uint8Array(rest);\n switch (discriminator) {\n case 0:\n return null;\n case 1:\n return unpackSeedLiteral(remaining);\n case 2:\n return unpackSeedInstructionArg(remaining, instructionData);\n case 3:\n return unpackSeedAccountKey(remaining, previousMetas);\n case 4:\n return unpackSeedAccountData(remaining, previousMetas, connection);\n default:\n throw new TokenTransferHookInvalidSeed();\n }\n}\n\nexport async function unpackSeeds(\n seeds: Uint8Array,\n previousMetas: AccountMeta[],\n instructionData: Buffer,\n connection: Connection\n): Promise {\n const unpackedSeeds: Buffer[] = [];\n let i = 0;\n while (i < 32) {\n const seed = await unpackFirstSeed(seeds.slice(i), previousMetas, instructionData, connection);\n if (seed == null) {\n break;\n }\n unpackedSeeds.push(seed.data);\n i += seed.packedLength;\n }\n return unpackedSeeds;\n}\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface FreezeAccountInstructionData {\n instruction: TokenInstruction.FreezeAccount;\n}\n\n/** TODO: docs */\nexport const freezeAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a FreezeAccount instruction\n *\n * @param account Account to freeze\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createFreezeAccountInstruction(\n account: PublicKey,\n mint: PublicKey,\n authority: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(freezeAccountInstructionData.span);\n freezeAccountInstructionData.encode({ instruction: TokenInstruction.FreezeAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid FreezeAccount instruction */\nexport interface DecodedFreezeAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.FreezeAccount;\n };\n}\n\n/**\n * Decode a FreezeAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeFreezeAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedFreezeAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== freezeAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, authority, multiSigners },\n data,\n } = decodeFreezeAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.FreezeAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated FreezeAccount instruction */\nexport interface DecodedFreezeAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a FreezeAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeFreezeAccountInstructionUnchecked({\n programId,\n keys: [account, mint, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedFreezeAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data: freezeAccountInstructionData.decode(data),\n };\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3([u8('instruction'), u64('amount')]);\n\n/**\n * Construct a MintTo instruction\n *\n * @param mint Public key of the mint\n * @param destination Address of the token account to mint to\n * @param authority The mint authority\n * @param amount Amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createMintToInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: number | bigint,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(mintToInstructionData.span);\n mintToInstructionData.encode(\n {\n instruction: TokenInstruction.MintTo,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid MintTo instruction */\nexport interface DecodedMintToInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.MintTo;\n amount: bigint;\n };\n}\n\n/**\n * Decode a MintTo instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeMintToInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedMintToInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== mintToInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, multiSigners },\n data,\n } = decodeMintToInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.MintTo) throw new TokenInvalidInstructionTypeError();\n if (!mint || !destination || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated MintTo instruction */\nexport interface DecodedMintToInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a MintTo instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeMintToInstructionUnchecked({\n programId,\n keys: [mint, destination, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedMintToInstructionUnchecked {\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data: mintToInstructionData.decode(data),\n };\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { IField, validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n\nexport type AffinePoint = {\n x: T;\n y: T;\n} & { z?: never; t?: never };\n\nexport interface Group> {\n double(): T;\n negate(): T;\n add(other: T): T;\n subtract(other: T): T;\n equals(other: T): boolean;\n multiply(scalar: bigint): T;\n}\n\nexport type GroupConstructor = {\n BASE: T;\n ZERO: T;\n};\nexport type Mapper = (i: T[]) => T[];\n\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF>(c: GroupConstructor, bits: number) {\n const constTimeNegate = (condition: boolean, item: T): T => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W: number) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm: T, n: bigint) {\n let p = c.ZERO;\n let d: T = elm;\n while (n > _0n) {\n if (n & _1n) p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm: T, W: number): Group[] {\n const { windows, windowSize } = opts(W);\n const points: T[] = [];\n let p: T = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T } {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n\n let p = c.ZERO;\n let f = c.BASE;\n\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n\n // Shift number by W bits.\n n >>= shiftBy;\n\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n } else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n\n wNAFCached(P: T, precomputesMap: Map, n: bigint, transform: Mapper): { p: T; f: T } {\n // @ts-ignore\n const W: number = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W) as T[];\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\n\n// Generic BasicCurve interface: works even for polynomial fields (BLS): P, n, h would be ok.\n// Though generator can be different (Fp2 / Fp6 for BLS).\nexport type BasicCurve = {\n Fp: IField; // Field over which we'll do calculations (Fp)\n n: bigint; // Curve order, total count of valid points in the field\n nBitLength?: number; // bit length of curve order\n nByteLength?: number; // byte length of curve order\n h: bigint; // cofactor. we can assign default=1, but users will just ignore it w/o validation\n hEff?: bigint; // Number to multiply to clear cofactor\n Gx: T; // base point X coordinate\n Gy: T; // base point Y coordinate\n allowInfinityPoint?: boolean; // bls12-381 requires it. ZERO point is valid, but invalid pubkey\n};\n\nexport function validateBasic(curve: BasicCurve & T) {\n validateField(curve.Fp);\n validateObject(\n curve,\n {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n },\n {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n }\n );\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n } as const);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","import { struct, u8 } from '@solana/buffer-layout';\nimport type { PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { TokenUnsupportedInstructionError } from '../../errors.js';\nimport { addSigners } from '../../instructions/internal.js';\nimport { TokenInstruction } from '../../instructions/types.js';\nimport type { AccountState } from '../../state/account.js';\n\nexport enum DefaultAccountStateInstruction {\n Initialize = 0,\n Update = 1,\n}\n\n/** TODO: docs */\nexport interface DefaultAccountStateInstructionData {\n instruction: TokenInstruction.DefaultAccountStateExtension;\n defaultAccountStateInstruction: DefaultAccountStateInstruction;\n accountState: AccountState;\n}\n\n/** TODO: docs */\nexport const defaultAccountStateInstructionData = struct([\n u8('instruction'),\n u8('defaultAccountStateInstruction'),\n u8('accountState'),\n]);\n\n/**\n * Construct an InitializeDefaultAccountState instruction\n *\n * @param mint Mint to initialize\n * @param accountState Default account state to set on all new accounts\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeDefaultAccountStateInstruction(\n mint: PublicKey,\n accountState: AccountState,\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n const data = Buffer.alloc(defaultAccountStateInstructionData.span);\n defaultAccountStateInstructionData.encode(\n {\n instruction: TokenInstruction.DefaultAccountStateExtension,\n defaultAccountStateInstruction: DefaultAccountStateInstruction.Initialize,\n accountState,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/**\n * Construct an UpdateDefaultAccountState instruction\n *\n * @param mint Mint to update\n * @param accountState Default account state to set on all accounts\n * @param freezeAuthority The mint's freeze authority\n * @param signers The signer account(s) for a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createUpdateDefaultAccountStateInstruction(\n mint: PublicKey,\n accountState: AccountState,\n freezeAuthority: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n\n const keys = addSigners([{ pubkey: mint, isSigner: false, isWritable: true }], freezeAuthority, multiSigners);\n const data = Buffer.alloc(defaultAccountStateInstructionData.span);\n defaultAccountStateInstructionData.encode(\n {\n instruction: TokenInstruction.DefaultAccountStateExtension,\n defaultAccountStateInstruction: DefaultAccountStateInstruction.Update,\n accountState,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n",null,"\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MempoolBitcoinBlock = void 0;\r\nclass MempoolBitcoinBlock {\r\n constructor(obj) {\r\n this.id = obj.id;\r\n this.height = obj.height;\r\n this.version = obj.version;\r\n this.timestamp = obj.timestamp;\r\n this.tx_count = obj.tx_count;\r\n this.size = obj.size;\r\n this.weight = obj.weight;\r\n this.merkle_root = obj.merkle_root;\r\n this.previousblockhash = obj.previousblockhash;\r\n this.mediantime = obj.mediantime;\r\n this.nonce = obj.nonce;\r\n this.bits = obj.bits;\r\n this.difficulty = obj.difficulty;\r\n }\r\n getHeight() {\r\n return this.height;\r\n }\r\n getHash() {\r\n return this.id;\r\n }\r\n getMerkleRoot() {\r\n return this.merkle_root;\r\n }\r\n getNbits() {\r\n return this.bits;\r\n }\r\n getNonce() {\r\n return this.nonce;\r\n }\r\n getPrevBlockhash() {\r\n return this.previousblockhash;\r\n }\r\n getTimestamp() {\r\n return this.timestamp;\r\n }\r\n getVersion() {\r\n return this.version;\r\n }\r\n getChainWork() {\r\n throw new Error(\"Unsupported\");\r\n }\r\n}\r\nexports.MempoolBitcoinBlock = MempoolBitcoinBlock;\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__exportStar(require(\"./btcrelay/BtcRelay\"), exports);\r\n__exportStar(require(\"./btcrelay/rpc/BitcoinRpc\"), exports);\r\n__exportStar(require(\"./btcrelay/synchronizer/RelaySynchronizer\"), exports);\r\n__exportStar(require(\"./btcrelay/types/BtcBlock\"), exports);\r\n__exportStar(require(\"./btcrelay/types/BtcHeader\"), exports);\r\n__exportStar(require(\"./btcrelay/types/BtcStoredHeader\"), exports);\r\n__exportStar(require(\"./btcrelay/utils/StatePredictorUtils\"), exports);\r\n__exportStar(require(\"./events/ChainEvents\"), exports);\r\n__exportStar(require(\"./events/types/ClaimEvent\"), exports);\r\n__exportStar(require(\"./events/types/InitializeEvent\"), exports);\r\n__exportStar(require(\"./events/types/RefundEvent\"), exports);\r\n__exportStar(require(\"./events/types/SwapEvent\"), exports);\r\n__exportStar(require(\"./lockable/Lockable\"), exports);\r\n__exportStar(require(\"./storage/IStorageManager\"), exports);\r\n__exportStar(require(\"./storage/StorageObject\"), exports);\r\n__exportStar(require(\"./swaps/SwapContract\"), exports);\r\n__exportStar(require(\"./swaps/SwapData\"), exports);\r\n__exportStar(require(\"./swaps/ChainSwapType\"), exports);\r\n__exportStar(require(\"./swaps/SwapCommitStatus\"), exports);\r\n__exportStar(require(\"./errors/SignatureVerificationError\"), exports);\r\n__exportStar(require(\"./errors/CannotInitializeATAError\"), exports);\r\n__exportStar(require(\"./errors/SwapDataVerificationError\"), exports);\r\n__exportStar(require(\"./chains/ChainType\"), exports);\r\n__exportStar(require(\"./chains/ChainData\"), exports);\r\n__exportStar(require(\"./utils/BigIntBufferUtils\"), exports);\r\n__exportStar(require(\"./btc/BitcoinNetwork\"), exports);\r\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapInit = void 0;\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst SolanaAction_1 = require(\"../../base/SolanaAction\");\r\nconst spl_token_1 = require(\"@solana/spl-token\");\r\nconst SolanaSwapModule_1 = require(\"../SolanaSwapModule\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst SolanaTokens_1 = require(\"../../base/modules/SolanaTokens\");\r\nclass SwapInit extends SolanaSwapModule_1.SolanaSwapModule {\r\n constructor() {\r\n super(...arguments);\r\n this.SIGNATURE_SLOT_BUFFER = 20;\r\n this.SIGNATURE_PREFETCH_DATA_VALIDITY = 5000;\r\n }\r\n /**\r\n * bare Init action based on the data passed in swapData\r\n *\r\n * @param swapData\r\n * @param timeout\r\n * @private\r\n */\r\n async Init(swapData, timeout) {\r\n const claimerAta = (0, spl_token_1.getAssociatedTokenAddressSync)(swapData.token, swapData.claimer);\r\n const paymentHash = buffer_1.Buffer.from(swapData.paymentHash, \"hex\");\r\n const accounts = {\r\n claimer: swapData.claimer,\r\n offerer: swapData.offerer,\r\n escrowState: this.root.SwapEscrowState(paymentHash),\r\n mint: swapData.token,\r\n systemProgram: web3_js_1.SystemProgram.programId,\r\n claimerAta: swapData.payOut ? claimerAta : null,\r\n claimerUserData: !swapData.payOut ? this.root.SwapUserVault(swapData.claimer, swapData.token) : null\r\n };\r\n if (swapData.payIn) {\r\n const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(swapData.token, swapData.offerer);\r\n return new SolanaAction_1.SolanaAction(swapData.offerer, this.root, await this.program.methods\r\n .offererInitializePayIn(swapData.toSwapDataStruct(), [...buffer_1.Buffer.alloc(32, 0)], (0, Utils_1.toBN)(timeout))\r\n .accounts({\r\n ...accounts,\r\n offererAta: ata,\r\n vault: this.root.SwapVault(swapData.token),\r\n vaultAuthority: this.root.SwapVaultAuthority,\r\n tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,\r\n })\r\n .instruction(), SwapInit.CUCosts.INIT_PAY_IN);\r\n }\r\n else {\r\n return new SolanaAction_1.SolanaAction(swapData.claimer, this.root, await this.program.methods\r\n .offererInitialize(swapData.toSwapDataStruct(), swapData.securityDeposit, swapData.claimerBounty, [...(swapData.txoHash != null ? buffer_1.Buffer.from(swapData.txoHash, \"hex\") : buffer_1.Buffer.alloc(32, 0))], (0, Utils_1.toBN)(timeout))\r\n .accounts({\r\n ...accounts,\r\n offererUserData: this.root.SwapUserVault(swapData.offerer, swapData.token),\r\n })\r\n .instruction(), SwapInit.CUCosts.INIT);\r\n }\r\n }\r\n /**\r\n * InitPayIn action which includes SOL to WSOL wrapping if indicated by the fee rate\r\n *\r\n * @param swapData\r\n * @param timeout\r\n * @param feeRate\r\n * @constructor\r\n * @private\r\n */\r\n async InitPayIn(swapData, timeout, feeRate) {\r\n if (!swapData.isPayIn())\r\n throw new Error(\"Must be payIn==true\");\r\n const action = new SolanaAction_1.SolanaAction(swapData.offerer, this.root);\r\n if (this.shouldWrapOnInit(swapData, feeRate))\r\n action.addAction(this.Wrap(swapData, feeRate));\r\n action.addAction(await this.Init(swapData, timeout));\r\n return action;\r\n }\r\n /**\r\n * InitNotPayIn action with additional createAssociatedTokenAccountIdempotentInstruction instruction, such that\r\n * a recipient ATA is created if it doesn't exist\r\n *\r\n * @param swapData\r\n * @param timeout\r\n * @constructor\r\n * @private\r\n */\r\n async InitNotPayIn(swapData, timeout) {\r\n if (swapData.isPayIn())\r\n throw new Error(\"Must be payIn==false\");\r\n const action = new SolanaAction_1.SolanaAction(swapData.claimer, this.root);\r\n action.addIx((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(swapData.claimer, swapData.claimerAta, swapData.claimer, swapData.token));\r\n action.addAction(await this.Init(swapData, timeout));\r\n return action;\r\n }\r\n Wrap(swapData, feeRate) {\r\n const data = this.extractAtaDataFromFeeRate(feeRate);\r\n if (data == null)\r\n throw new Error(\"Tried to add wrap instruction, but feeRate malformed: \" + feeRate);\r\n return this.root.Tokens.Wrap(swapData.offerer, swapData.getAmount() - data.balance, data.initAta);\r\n }\r\n /**\r\n * Extracts data about SOL to WSOL wrapping from the fee rate, fee rate is used to convey this information from\r\n * the user to the intermediary, such that the intermediary creates valid signature for transaction including\r\n * the SOL to WSOL wrapping instructions\r\n *\r\n * @param feeRate\r\n * @private\r\n */\r\n extractAtaDataFromFeeRate(feeRate) {\r\n const hashArr = feeRate == null ? [] : feeRate.split(\"#\");\r\n if (hashArr.length <= 1)\r\n return null;\r\n const arr = hashArr[1].split(\";\");\r\n if (arr.length <= 1)\r\n return null;\r\n return {\r\n balance: BigInt(arr[1]),\r\n initAta: arr[0] === \"1\"\r\n };\r\n }\r\n /**\r\n * Checks whether a wrap instruction (SOL -> WSOL) should be a part of the signed init message\r\n *\r\n * @param swapData\r\n * @param feeRate\r\n * @private\r\n * @returns {boolean} returns true if wrap instruction should be added\r\n */\r\n shouldWrapOnInit(swapData, feeRate) {\r\n const data = this.extractAtaDataFromFeeRate(feeRate);\r\n if (data == null)\r\n return false;\r\n return data.balance < swapData.getAmount();\r\n }\r\n /**\r\n * Returns the transaction to be signed as an initialization signature from the intermediary, also adds\r\n * SOL to WSOL wrapping if indicated by the fee rate\r\n *\r\n * @param swapData\r\n * @param timeout\r\n * @param feeRate\r\n * @private\r\n */\r\n async getTxToSign(swapData, timeout, feeRate) {\r\n const action = swapData.isPayIn() ?\r\n await this.InitPayIn(swapData, BigInt(timeout), feeRate) :\r\n await this.InitNotPayIn(swapData, BigInt(timeout));\r\n const tx = (await action.tx(feeRate)).tx;\r\n return tx;\r\n }\r\n /**\r\n * Returns auth prefix to be used with a specific swap, payIn=true & payIn=false use different prefixes (these\r\n * actually have no meaning for the smart contract/solana program in the Solana case)\r\n *\r\n * @param swapData\r\n * @private\r\n */\r\n getAuthPrefix(swapData) {\r\n return swapData.isPayIn() ? \"claim_initialize\" : \"initialize\";\r\n }\r\n /**\r\n * Returns \"processed\" slot required for signature validation, uses preFetchedData if provided & valid\r\n *\r\n * @param preFetchedData\r\n * @private\r\n */\r\n getSlotForSignature(preFetchedData) {\r\n if (preFetchedData != null &&\r\n preFetchedData.latestSlot != null &&\r\n preFetchedData.latestSlot.timestamp > Date.now() - this.root.Slots.SLOT_CACHE_TIME) {\r\n const estimatedSlotsPassed = Math.floor((Date.now() - preFetchedData.latestSlot.timestamp) / this.root.SLOT_TIME);\r\n const estimatedCurrentSlot = preFetchedData.latestSlot.slot + estimatedSlotsPassed;\r\n this.logger.debug(\"getSlotForSignature(): slot: \" + preFetchedData.latestSlot.slot +\r\n \" estimated passed slots: \" + estimatedSlotsPassed + \" estimated current slot: \" + estimatedCurrentSlot);\r\n return Promise.resolve(estimatedCurrentSlot);\r\n }\r\n return this.root.Slots.getSlot(\"processed\");\r\n }\r\n /**\r\n * Returns blockhash required for signature validation, uses preFetchedData if provided & valid\r\n *\r\n * @param txSlot\r\n * @param preFetchedData\r\n * @private\r\n */\r\n getBlockhashForSignature(txSlot, preFetchedData) {\r\n if (preFetchedData != null &&\r\n preFetchedData.transactionSlot != null &&\r\n preFetchedData.transactionSlot.slot === txSlot) {\r\n return Promise.resolve(preFetchedData.transactionSlot.blockhash);\r\n }\r\n return this.root.Blocks.getParsedBlock(txSlot).then(val => val.blockhash);\r\n }\r\n /**\r\n * Pre-fetches slot & block based on priorly received SolanaPreFetchData, such that it can later be used\r\n * by signature verification\r\n *\r\n * @param data\r\n */\r\n async preFetchForInitSignatureVerification(data) {\r\n const [latestSlot, txBlock] = await Promise.all([\r\n this.root.Slots.getSlotAndTimestamp(\"processed\"),\r\n this.root.Blocks.getParsedBlock(data.slot)\r\n ]);\r\n return {\r\n latestSlot,\r\n transactionSlot: {\r\n slot: data.slot,\r\n blockhash: txBlock.blockhash\r\n }\r\n };\r\n }\r\n /**\r\n * Pre-fetches block data required for signing the init message by the LP, this can happen in parallel before\r\n * signing takes place making the quoting quicker\r\n */\r\n async preFetchBlockDataForSignatures() {\r\n const latestParsedBlock = await this.root.Blocks.findLatestParsedBlock(\"finalized\");\r\n return {\r\n block: latestParsedBlock.block,\r\n slot: latestParsedBlock.slot,\r\n timestamp: Date.now()\r\n };\r\n }\r\n /**\r\n * Signs swap initialization authorization, using data from preFetchedBlockData if provided & still valid (subject\r\n * to SIGNATURE_PREFETCH_DATA_VALIDITY)\r\n *\r\n * @param signer\r\n * @param swapData\r\n * @param authorizationTimeout\r\n * @param feeRate\r\n * @param preFetchedBlockData\r\n * @public\r\n */\r\n async signSwapInitialization(signer, swapData, authorizationTimeout, preFetchedBlockData, feeRate) {\r\n if (signer.keypair == null)\r\n throw new Error(\"Unsupported\");\r\n if (!signer.getPublicKey().equals(swapData.isPayIn() ? swapData.claimer : swapData.offerer))\r\n throw new Error(\"Invalid signer, wrong public key!\");\r\n if (preFetchedBlockData != null && Date.now() - preFetchedBlockData.timestamp > this.SIGNATURE_PREFETCH_DATA_VALIDITY)\r\n preFetchedBlockData = null;\r\n const { block: latestBlock, slot: latestSlot } = preFetchedBlockData || await this.root.Blocks.findLatestParsedBlock(\"finalized\");\r\n const authTimeout = Math.floor(Date.now() / 1000) + authorizationTimeout;\r\n const txToSign = await this.getTxToSign(swapData, authTimeout.toString(10), feeRate);\r\n txToSign.feePayer = swapData.isPayIn() ? swapData.offerer : swapData.claimer;\r\n txToSign.recentBlockhash = latestBlock.blockhash;\r\n txToSign.sign(signer.keypair);\r\n this.logger.debug(\"signSwapInitialization(): Signed tx: \", txToSign);\r\n const sig = txToSign.signatures.find(e => e.publicKey.equals(signer.getPublicKey()));\r\n return {\r\n prefix: this.getAuthPrefix(swapData),\r\n timeout: authTimeout.toString(10),\r\n signature: latestSlot + \";\" + sig.signature.toString(\"hex\")\r\n };\r\n }\r\n /**\r\n * Checks whether the provided signature data is valid, using preFetchedData if provided and still valid\r\n *\r\n * @param swapData\r\n * @param timeout\r\n * @param prefix\r\n * @param signature\r\n * @param feeRate\r\n * @param preFetchedData\r\n * @public\r\n */\r\n async isSignatureValid(swapData, timeout, prefix, signature, feeRate, preFetchedData) {\r\n const sender = swapData.isPayIn() ? swapData.offerer : swapData.claimer;\r\n const signer = swapData.isPayIn() ? swapData.claimer : swapData.offerer;\r\n if (!swapData.isPayIn() && await this.root.isExpired(sender.toString(), swapData)) {\r\n throw new base_1.SignatureVerificationError(\"Swap will expire too soon!\");\r\n }\r\n if (prefix !== this.getAuthPrefix(swapData))\r\n throw new base_1.SignatureVerificationError(\"Invalid prefix\");\r\n const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));\r\n const isExpired = (BigInt(timeout) - currentTimestamp) < BigInt(this.root.authGracePeriod);\r\n if (isExpired)\r\n throw new base_1.SignatureVerificationError(\"Authorization expired!\");\r\n const [transactionSlot, signatureString] = signature.split(\";\");\r\n const txSlot = parseInt(transactionSlot);\r\n const [latestSlot, blockhash] = await Promise.all([\r\n this.getSlotForSignature(preFetchedData),\r\n this.getBlockhashForSignature(txSlot, preFetchedData)\r\n ]);\r\n const lastValidTransactionSlot = txSlot + this.root.TX_SLOT_VALIDITY;\r\n const slotsLeft = lastValidTransactionSlot - latestSlot - this.SIGNATURE_SLOT_BUFFER;\r\n if (slotsLeft < 0)\r\n throw new base_1.SignatureVerificationError(\"Authorization expired!\");\r\n const txToSign = await this.getTxToSign(swapData, timeout, feeRate);\r\n txToSign.feePayer = sender;\r\n txToSign.recentBlockhash = blockhash;\r\n txToSign.addSignature(signer, buffer_1.Buffer.from(signatureString, \"hex\"));\r\n this.logger.debug(\"isSignatureValid(): Signed tx: \", txToSign);\r\n const valid = txToSign.verifySignatures(false);\r\n if (!valid)\r\n throw new base_1.SignatureVerificationError(\"Invalid signature!\");\r\n return buffer_1.Buffer.from(blockhash);\r\n }\r\n /**\r\n * Gets expiry of the provided signature data, this is a minimum of slot expiry & swap signature expiry\r\n *\r\n * @param timeout\r\n * @param signature\r\n * @param preFetchedData\r\n * @public\r\n */\r\n async getSignatureExpiry(timeout, signature, preFetchedData) {\r\n const [transactionSlotStr, signatureString] = signature.split(\";\");\r\n const txSlot = parseInt(transactionSlotStr);\r\n const latestSlot = await this.getSlotForSignature(preFetchedData);\r\n const lastValidTransactionSlot = txSlot + this.root.TX_SLOT_VALIDITY;\r\n const slotsLeft = lastValidTransactionSlot - latestSlot - this.SIGNATURE_SLOT_BUFFER;\r\n const now = Date.now();\r\n const slotExpiryTime = now + (slotsLeft * this.root.SLOT_TIME);\r\n const timeoutExpiryTime = (parseInt(timeout) - this.root.authGracePeriod) * 1000;\r\n const expiry = Math.min(slotExpiryTime, timeoutExpiryTime);\r\n if (expiry < now)\r\n return 0;\r\n return expiry;\r\n }\r\n /**\r\n * Checks whether signature is expired for good (uses \"finalized\" slot)\r\n *\r\n * @param signature\r\n * @param timeout\r\n * @public\r\n */\r\n async isSignatureExpired(signature, timeout) {\r\n const [transactionSlotStr, signatureString] = signature.split(\";\");\r\n const txSlot = parseInt(transactionSlotStr);\r\n const lastValidTransactionSlot = txSlot + this.root.TX_SLOT_VALIDITY;\r\n const latestSlot = await this.root.Slots.getSlot(\"finalized\");\r\n const slotsLeft = lastValidTransactionSlot - latestSlot + this.SIGNATURE_SLOT_BUFFER;\r\n if (slotsLeft < 0)\r\n return true;\r\n if ((parseInt(timeout) + this.root.authGracePeriod) * 1000 < Date.now())\r\n return true;\r\n return false;\r\n }\r\n /**\r\n * Creates init transaction (InitPayIn) with a valid signature from an LP, also adds a SOL to WSOL wrapping ix to\r\n * the init transaction (if indicated by the fee rate) or adds the wrapping in a separate transaction (if no\r\n * indication in the fee rate)\r\n *\r\n * @param swapData swap to initialize\r\n * @param timeout init signature timeout\r\n * @param prefix init signature prefix\r\n * @param signature init signature\r\n * @param skipChecks whether to skip signature validity checks\r\n * @param feeRate fee rate to use for the transaction\r\n */\r\n async txsInitPayIn(swapData, timeout, prefix, signature, skipChecks, feeRate) {\r\n if (!skipChecks) {\r\n const [_, payStatus] = await Promise.all([\r\n (0, Utils_1.tryWithRetries)(() => this.isSignatureValid(swapData, timeout, prefix, signature, feeRate), this.retryPolicy, (e) => e instanceof base_1.SignatureVerificationError),\r\n (0, Utils_1.tryWithRetries)(() => this.root.getClaimHashStatus(swapData.getClaimHash()), this.retryPolicy)\r\n ]);\r\n if (payStatus !== base_1.SwapCommitStatus.NOT_COMMITED)\r\n throw new base_1.SwapDataVerificationError(\"Invoice already being paid for or paid\");\r\n }\r\n const [slotNumber, signatureStr] = signature.split(\";\");\r\n const block = await (0, Utils_1.tryWithRetries)(() => this.root.Blocks.getParsedBlock(parseInt(slotNumber)), this.retryPolicy);\r\n const txs = [];\r\n let isWrapping = false;\r\n const isWrappedInSignedTx = feeRate != null && feeRate.split(\"#\").length > 1;\r\n if (!isWrappedInSignedTx && swapData.token.equals(SolanaTokens_1.SolanaTokens.WSOL_ADDRESS)) {\r\n const ataAcc = await (0, Utils_1.tryWithRetries)(() => this.root.Tokens.getATAOrNull(swapData.offererAta), this.retryPolicy);\r\n const balance = ataAcc == null ? 0n : ataAcc.amount;\r\n if (balance < swapData.getAmount()) {\r\n //Need to wrap more SOL to WSOL\r\n await this.root.Tokens.Wrap(swapData.offerer, swapData.getAmount() - balance, ataAcc == null)\r\n .addToTxs(txs, feeRate, block);\r\n isWrapping = true;\r\n }\r\n }\r\n const initTx = await (await this.InitPayIn(swapData, BigInt(timeout), feeRate)).tx(feeRate, block);\r\n initTx.tx.addSignature(swapData.claimer, buffer_1.Buffer.from(signatureStr, \"hex\"));\r\n txs.push(initTx);\r\n this.logger.debug(\"txsInitPayIn(): create swap init TX, swap: \" + swapData.getClaimHash() +\r\n \" wrapping client-side: \" + isWrapping + \" feerate: \" + feeRate);\r\n return txs;\r\n }\r\n /**\r\n * Creates init transactions (InitNotPayIn) with a valid signature from an intermediary\r\n *\r\n * @param swapData swap to initialize\r\n * @param timeout init signature timeout\r\n * @param prefix init signature prefix\r\n * @param signature init signature\r\n * @param skipChecks whether to skip signature validity checks\r\n * @param feeRate fee rate to use for the transaction\r\n */\r\n async txsInit(swapData, timeout, prefix, signature, skipChecks, feeRate) {\r\n if (!skipChecks) {\r\n await (0, Utils_1.tryWithRetries)(() => this.isSignatureValid(swapData, timeout, prefix, signature, feeRate), this.retryPolicy, (e) => e instanceof base_1.SignatureVerificationError);\r\n }\r\n const [slotNumber, signatureStr] = signature.split(\";\");\r\n const block = await (0, Utils_1.tryWithRetries)(() => this.root.Blocks.getParsedBlock(parseInt(slotNumber)), this.retryPolicy);\r\n const initTx = await (await this.InitNotPayIn(swapData, BigInt(timeout))).tx(feeRate, block);\r\n initTx.tx.addSignature(swapData.offerer, buffer_1.Buffer.from(signatureStr, \"hex\"));\r\n this.logger.debug(\"txsInit(): create swap init TX, swap: \" + swapData.getClaimHash() + \" feerate: \" + feeRate);\r\n return [initTx];\r\n }\r\n /**\r\n * Returns the fee rate to be used for a specific init transaction, also adding indication whether the WSOL ATA\r\n * should be initialized in the init transaction and/or current balance in the WSOL ATA\r\n *\r\n * @param offerer\r\n * @param claimer\r\n * @param token\r\n * @param paymentHash\r\n */\r\n async getInitPayInFeeRate(offerer, claimer, token, paymentHash) {\r\n const accounts = [];\r\n if (offerer != null)\r\n accounts.push(offerer);\r\n if (token != null) {\r\n accounts.push(this.root.SwapVault(token));\r\n if (offerer != null)\r\n accounts.push((0, spl_token_1.getAssociatedTokenAddressSync)(token, offerer));\r\n if (claimer != null)\r\n accounts.push(this.root.SwapUserVault(claimer, token));\r\n }\r\n if (paymentHash != null)\r\n accounts.push(this.root.SwapEscrowState(buffer_1.Buffer.from(paymentHash, \"hex\")));\r\n const shouldCheckWSOLAta = token != null && offerer != null && token.equals(SolanaTokens_1.SolanaTokens.WSOL_ADDRESS);\r\n let [feeRate, _account] = await Promise.all([\r\n this.root.Fees.getFeeRate(accounts),\r\n shouldCheckWSOLAta ?\r\n this.root.Tokens.getATAOrNull((0, spl_token_1.getAssociatedTokenAddressSync)(token, offerer)) :\r\n Promise.resolve(null)\r\n ]);\r\n if (shouldCheckWSOLAta) {\r\n const account = _account;\r\n const balance = account == null ? 0n : account.amount;\r\n //Add an indication about whether the ATA is initialized & balance it contains\r\n feeRate += \"#\" + (account != null ? \"0\" : \"1\") + \";\" + balance.toString(10);\r\n }\r\n this.logger.debug(\"getInitPayInFeeRate(): feerate computed: \" + feeRate);\r\n return feeRate;\r\n }\r\n /**\r\n * Returns the fee rate to be used for a specific init transaction\r\n *\r\n * @param offerer\r\n * @param claimer\r\n * @param token\r\n * @param paymentHash\r\n */\r\n getInitFeeRate(offerer, claimer, token, paymentHash) {\r\n const accounts = [];\r\n if (offerer != null && token != null)\r\n accounts.push(this.root.SwapUserVault(offerer, token));\r\n if (claimer != null)\r\n accounts.push(claimer);\r\n if (paymentHash != null)\r\n accounts.push(this.root.SwapEscrowState(buffer_1.Buffer.from(paymentHash, \"hex\")));\r\n return this.root.Fees.getFeeRate(accounts);\r\n }\r\n /**\r\n * Get the estimated solana fee of the init transaction, this includes the required deposit for creating swap PDA\r\n * and also deposit for ATAs\r\n */\r\n async getInitFee(swapData, feeRate) {\r\n if (swapData == null)\r\n return BigInt(this.root.ESCROW_STATE_RENT_EXEMPT) + await this.getRawInitFee(swapData, feeRate);\r\n feeRate = feeRate ||\r\n (swapData.payIn\r\n ? await this.getInitPayInFeeRate(swapData.offerer, swapData.claimer, swapData.token, swapData.paymentHash)\r\n : await this.getInitFeeRate(swapData.offerer, swapData.claimer, swapData.token, swapData.paymentHash));\r\n const [rawFee, initAta] = await Promise.all([\r\n this.getRawInitFee(swapData, feeRate),\r\n swapData != null && swapData.payOut ?\r\n this.root.Tokens.getATAOrNull((0, spl_token_1.getAssociatedTokenAddressSync)(swapData.token, swapData.claimer)).then(acc => acc == null) :\r\n Promise.resolve(null)\r\n ]);\r\n let resultingFee = BigInt(this.root.ESCROW_STATE_RENT_EXEMPT) + rawFee;\r\n if (initAta)\r\n resultingFee += BigInt(SolanaTokens_1.SolanaTokens.SPL_ATA_RENT_EXEMPT);\r\n if (swapData.payIn && this.shouldWrapOnInit(swapData, feeRate) && this.extractAtaDataFromFeeRate(feeRate).initAta) {\r\n resultingFee += BigInt(SolanaTokens_1.SolanaTokens.SPL_ATA_RENT_EXEMPT);\r\n }\r\n return resultingFee;\r\n }\r\n /**\r\n * Get the estimated solana fee of the init transaction, without the required deposit for creating swap PDA\r\n */\r\n async getRawInitFee(swapData, feeRate) {\r\n if (swapData == null)\r\n return 10000n;\r\n feeRate = feeRate ||\r\n (swapData.payIn\r\n ? await this.getInitPayInFeeRate(swapData.offerer, swapData.claimer, swapData.token, swapData.paymentHash)\r\n : await this.getInitFeeRate(swapData.offerer, swapData.claimer, swapData.token, swapData.paymentHash));\r\n let computeBudget = swapData.payIn ? SwapInit.CUCosts.INIT_PAY_IN : SwapInit.CUCosts.INIT;\r\n if (swapData.payIn && this.shouldWrapOnInit(swapData, feeRate)) {\r\n computeBudget += SolanaTokens_1.SolanaTokens.CUCosts.WRAP_SOL;\r\n const data = this.extractAtaDataFromFeeRate(feeRate);\r\n if (data.initAta)\r\n computeBudget += SolanaTokens_1.SolanaTokens.CUCosts.ATA_INIT;\r\n }\r\n const baseFee = swapData.payIn ? 10000n : 10000n + 5000n;\r\n return baseFee + this.root.Fees.getPriorityFee(computeBudget, feeRate);\r\n }\r\n}\r\nexports.SwapInit = SwapInit;\r\nSwapInit.CUCosts = {\r\n INIT: 90000,\r\n INIT_PAY_IN: 50000,\r\n};\r\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport {\n bitMask,\n bytesToNumberBE,\n bytesToNumberLE,\n ensureBytes,\n numberToBytesBE,\n numberToBytesLE,\n validateObject,\n} from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n\n// Calculates a modulo b\nexport function mod(a: bigint, b: bigint): bigint {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num: bigint, power: bigint, modulo: bigint): bigint {\n if (modulo <= _0n || power < _0n) throw new Error('Expected power/modulo > 0');\n if (modulo === _1n) return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n) res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x: bigint, power: bigint, modulo: bigint): bigint {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n\n// Inverses number over modulo\nexport function invert(number: bigint, modulo: bigint): bigint {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n) throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P: bigint) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n\n let Q: bigint, S: number, Z: bigint;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++);\n\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++);\n\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp: IField, n: T): T {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE)) throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO)) return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE)) break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\n\nexport function FpSqrt(P: bigint) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp: IField, n: T) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num: bigint, modulo: bigint) => (mod(num, modulo) & _1n) === _1n;\n\n// Field is not always over prime: for example, Fp2 has ORDER(q)=p^m\nexport interface IField {\n ORDER: bigint;\n BYTES: number;\n BITS: number;\n MASK: bigint;\n ZERO: T;\n ONE: T;\n // 1-arg\n create: (num: T) => T;\n isValid: (num: T) => boolean;\n is0: (num: T) => boolean;\n neg(num: T): T;\n inv(num: T): T;\n sqrt(num: T): T;\n sqr(num: T): T;\n // 2-args\n eql(lhs: T, rhs: T): boolean;\n add(lhs: T, rhs: T): T;\n sub(lhs: T, rhs: T): T;\n mul(lhs: T, rhs: T | bigint): T;\n pow(lhs: T, power: bigint): T;\n div(lhs: T, rhs: T | bigint): T;\n // N for NonNormalized (for now)\n addN(lhs: T, rhs: T): T;\n subN(lhs: T, rhs: T): T;\n mulN(lhs: T, rhs: T | bigint): T;\n sqrN(num: T): T;\n\n // Optional\n // Should be same as sgn0 function in\n // [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#section-4.1).\n // NOTE: sgn0 is 'negative in LE', which is same as odd. And negative in LE is kinda strange definition anyway.\n isOdd?(num: T): boolean; // Odd instead of even since we have it for Fp2\n // legendre?(num: T): T;\n pow(lhs: T, power: bigint): T;\n invertBatch: (lst: T[]) => T[];\n toBytes(num: T): Uint8Array;\n fromBytes(bytes: Uint8Array): T;\n // If c is False, CMOV returns a, otherwise it returns b.\n cmov(a: T, b: T, c: boolean): T;\n}\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n] as const;\nexport function validateField(field: IField) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n } as Record;\n const opts = FIELD_FIELDS.reduce((map, val: string) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n\n// Generic field functions\n\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f: IField, num: T, power: bigint): T {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n) throw new Error('Expected power > 0');\n if (power === _0n) return f.ONE;\n if (power === _1n) return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n) p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f: IField, nums: T[]): T[] {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\n\nexport function FpDiv(f: IField, lhs: T, rhs: T | bigint): T {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f: IField) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x: T): boolean => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n\n// CURVE.n lengths\nexport function nLength(n: bigint, nBitLength?: number) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n\ntype FpField = IField & Required, 'isOdd'>>;\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(\n ORDER: bigint,\n bitLen?: number,\n isLE = false,\n redef: Partial> = {}\n): Readonly {\n if (ORDER <= _0n) throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048) throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f: Readonly = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n } as FpField);\n return Object.freeze(f);\n}\n\nexport function FpSqrtOdd(Fp: IField, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\n\nexport function FpSqrtEven(Fp: IField, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(\n hash: string | Uint8Array,\n groupOrder: bigint,\n isLE = false\n): bigint {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder: bigint): number {\n if (typeof fieldOrder !== 'bigint') throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder: bigint): number {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE = false): Uint8Array {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n","/**\n * Main\n */\nexport * from './wallet';\nexport * from './account';\nexport * from './contract';\nexport * from './provider';\nexport * from './signer';\nexport * from './channel';\n\n// TODO: decide on final export style\nexport * from './types';\nexport * as types from './types';\n\n/**\n * Utils\n */\nexport * as constants from './constants';\nexport * as encode from './utils/encode';\nexport * as hash from './utils/hash';\nexport * as v3hash from './utils/hash/transactionHash/v3';\nexport * as v2hash from './utils/hash/transactionHash/v2';\nexport * as json from './utils/json';\nexport * as num from './utils/num';\nexport * as transaction from './utils/transaction';\nexport * as stark from './utils/stark';\nexport * as eth from './utils/eth';\nexport * as merkle from './utils/merkle';\nexport * as uint256 from './utils/uint256';\nexport * as shortString from './utils/shortString';\nexport * as typedData from './utils/typedData';\nexport * as ec from './utils/ec';\nexport * as starknetId from './utils/starknetId';\nexport * as provider from './utils/provider';\nexport * as selector from './utils/hash/selector';\nexport * as events from './utils/events';\nexport * from './utils/responseParser';\nexport * from './utils/cairoDataTypes/uint256';\nexport * from './utils/cairoDataTypes/uint512';\nexport * from './utils/address';\nexport * from './utils/url';\nexport * from './utils/calldata';\nexport * from './utils/calldata/enum';\nexport * from './utils/contract';\nexport * from './utils/transactionReceipt';\nexport * as wallet from './wallet/connect';\n\n/**\n * Deprecated\n */\n/* eslint-disable import/first */\nimport * as num from './utils/num';\n\n/** @deprecated prefer the 'num' naming */\nexport const number = num;\n","import { ETransactionVersion } from './types/api';\n\nexport { IS_BROWSER } from './utils/encode';\n\n/**\n * Cairo Felt support storing max 31 character\n */\nexport const TEXT_TO_FELT_MAX_LEN = 31;\n\n/**\n * Alternatively use directly from api specification\n * types.RPC.ETransactionVersion\n * For BN do BigInt(TRANSACTION_VERSION.*)\n */\nexport { ETransactionVersion as TRANSACTION_VERSION };\n\nexport const ZERO = 0n;\nexport const MASK_250 = 2n ** 250n - 1n; // 2 ** 250 - 1\nexport const API_VERSION = ZERO;\nexport const PRIME = 2n ** 251n + 17n * 2n ** 192n + 1n;\n\n// based on: https://github.com/starkware-libs/cairo-lang/blob/v0.12.3/src/starkware/starknet/common/storage.cairo#L3\nexport const MAX_STORAGE_ITEM_SIZE = 256n;\nexport const ADDR_BOUND = 2n ** 251n - MAX_STORAGE_ITEM_SIZE;\n\nconst range = (min: bigint, max: bigint) => ({ min, max }) as const;\n\nexport const RANGE_FELT = range(ZERO, PRIME - 1n);\nexport const RANGE_I128 = range(-(2n ** 127n), 2n ** 127n - 1n);\nexport const RANGE_U128 = range(ZERO, 2n ** 128n - 1n);\n\nexport enum BaseUrl {\n SN_MAIN = 'https://alpha-mainnet.starknet.io',\n SN_SEPOLIA = 'https://alpha-sepolia.starknet.io',\n}\n\nexport enum NetworkName {\n SN_MAIN = 'SN_MAIN',\n SN_SEPOLIA = 'SN_SEPOLIA',\n}\n\nexport enum StarknetChainId {\n SN_MAIN = '0x534e5f4d41494e', // encodeShortString('SN_MAIN'),\n SN_SEPOLIA = '0x534e5f5345504f4c4941', // encodeShortString('SN_SEPOLIA')\n}\n\nexport enum TransactionHashPrefix {\n DECLARE = '0x6465636c617265', // encodeShortString('declare'),\n DEPLOY = '0x6465706c6f79', // encodeShortString('deploy'),\n DEPLOY_ACCOUNT = '0x6465706c6f795f6163636f756e74', // encodeShortString('deploy_account'),\n INVOKE = '0x696e766f6b65', // encodeShortString('invoke'),\n L1_HANDLER = '0x6c315f68616e646c6572', // encodeShortString('l1_handler'),\n}\n\nexport const enum FeeMarginPercentage {\n L1_BOUND_MAX_AMOUNT = 50,\n L1_BOUND_MAX_PRICE_PER_UNIT = 50,\n MAX_FEE = 50,\n}\n\nexport const UDC = {\n ADDRESS: '0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf',\n ENTRYPOINT: 'deployContract',\n} as const;\n\nexport const RPC_DEFAULT_VERSION = 'v0_7';\n\nexport const RPC_NODES = {\n SN_MAIN: [\n `https://starknet-mainnet.public.blastapi.io/rpc/${RPC_DEFAULT_VERSION}`,\n `https://free-rpc.nethermind.io/mainnet-juno/${RPC_DEFAULT_VERSION}`,\n ],\n SN_SEPOLIA: [\n `https://starknet-sepolia.public.blastapi.io/rpc/${RPC_DEFAULT_VERSION}`,\n `https://free-rpc.nethermind.io/sepolia-juno/${RPC_DEFAULT_VERSION}`,\n ],\n} as const;\n","export * as JRPC from './jsonrpc';\n\nexport * as RPCSPEC06 from './rpcspec_0_6';\nexport * as RPCSPEC07 from 'starknet-types-07';\nexport * from 'starknet-types-07';\n","export type RequestBody = {\n id: number | string;\n jsonrpc: '2.0';\n method: string;\n params?: {};\n};\n\nexport type ResponseBody = {\n id: number | string;\n jsonrpc: '2.0';\n} & (SuccessResponseBody | ErrorResponseBody);\n\nexport type SuccessResponseBody = {\n result: unknown;\n};\n\nexport type ErrorResponseBody = {\n error: Error;\n};\n\nexport type Error = {\n code: number;\n message: string;\n data?: unknown;\n};\n","/**\n * version 0.6.0\n */\n\nexport { Methods } from './methods';\nexport { ABI } from './contract';\nexport * as Errors from './errors';\nexport * as SPEC from './components';\nexport * from './nonspec';\n","export interface FAILED_TO_RECEIVE_TXN {\n code: 1;\n message: 'Failed to write transaction';\n}\n\nexport interface NO_TRACE_AVAILABLE {\n code: 10;\n message: 'No trace available for transaction';\n data: {\n status: 'RECEIVED' | 'REJECTED';\n };\n}\n\nexport interface CONTRACT_NOT_FOUND {\n code: 20;\n message: 'Contract not found';\n}\n\nexport interface INVALID_MESSAGE_SELECTOR {\n code: 21;\n message: 'Invalid message selector';\n}\n\nexport interface INVALID_CALL_DATA {\n code: 22;\n message: 'Invalid call data';\n}\n\nexport interface BLOCK_NOT_FOUND {\n code: 24;\n message: 'Block not found';\n}\n\nexport interface INVALID_BLOCK_HASH {\n code: 26;\n message: 'Invalid block hash';\n}\n\nexport interface INVALID_TXN_INDEX {\n code: 27;\n message: 'Invalid transaction index in a block';\n}\n\nexport interface CLASS_HASH_NOT_FOUND {\n code: 28;\n message: 'Class hash not found';\n}\n\nexport interface TXN_HASH_NOT_FOUND {\n code: 29;\n message: 'Transaction hash not found';\n}\n\nexport interface PAGE_SIZE_TOO_BIG {\n code: 31;\n message: 'Requested page size is too big';\n}\n\nexport interface NO_BLOCKS {\n code: 32;\n message: 'There are no blocks';\n}\n\nexport interface INVALID_CONTINUATION_TOKEN {\n code: 33;\n message: 'The supplied continuation token is invalid or unknown';\n}\n\nexport interface TOO_MANY_KEYS_IN_FILTER {\n code: 34;\n message: 'Too many keys provided in a filter';\n}\n\nexport interface CONTRACT_ERROR {\n code: 40;\n message: 'Contract error';\n data: {\n revert_error: string;\n };\n}\n\nexport interface TRANSACTION_EXECUTION_ERROR {\n code: 41;\n message: 'Transaction execution error';\n data: {\n transaction_index: number;\n execution_error: string;\n };\n}\n\nexport interface CLASS_ALREADY_DECLARED {\n code: 51;\n message: 'Class already declared';\n}\n\nexport interface INVALID_TRANSACTION_NONCE {\n code: 52;\n message: 'Invalid transaction nonce';\n}\n\nexport interface INSUFFICIENT_MAX_FEE {\n code: 53;\n message: 'Max fee is smaller than the minimal transaction cost (validation plus fee transfer)';\n}\n\nexport interface INSUFFICIENT_ACCOUNT_BALANCE {\n code: 54;\n message: \"Account balance is smaller than the transaction's max_fee\";\n}\n\nexport interface VALIDATION_FAILURE {\n code: 55;\n message: 'Account validation failed';\n data: string;\n}\n\nexport interface COMPILATION_FAILED {\n code: 56;\n message: 'Compilation failed';\n}\n\nexport interface CONTRACT_CLASS_SIZE_IS_TOO_LARGE {\n code: 57;\n message: 'Contract class size it too large';\n}\n\nexport interface NON_ACCOUNT {\n code: 58;\n message: 'Sender address in not an account contract';\n}\n\nexport interface DUPLICATE_TX {\n code: 59;\n message: 'A transaction with the same hash already exists in the mempool';\n}\n\nexport interface COMPILED_CLASS_HASH_MISMATCH {\n code: 60;\n message: 'the compiled class hash did not match the one supplied in the transaction';\n}\n\nexport interface UNSUPPORTED_TX_VERSION {\n code: 61;\n message: 'the transaction version is not supported';\n}\n\nexport interface UNSUPPORTED_CONTRACT_CLASS_VERSION {\n code: 62;\n message: 'the contract class version is not supported';\n}\n\nexport interface UNEXPECTED_ERROR {\n code: 63;\n message: 'An unexpected error occurred';\n data: string;\n}\n","/**\n * PRIMITIVES\n */\n\n/**\n * A field element. represented by at most 63 hex digits\n * @pattern ^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,62})$\n */\nexport type FELT = string;\n/**\n * an ethereum address represented as 40 hex digits\n * @pattern ^0x[a-fA-F0-9]{40}$\n */\nexport type ETH_ADDRESS = string;\n/**\n * A storage key. Represented as up to 62 hex digits, 3 bits, and 5 leading zeroes.\n * @pattern ^0x0[0-7]{1}[a-fA-F0-9]{0,62}$\n */\nexport type STORAGE_KEY = string;\nexport type ADDRESS = FELT;\nexport type NUM_AS_HEX = string;\n/**\n * 64 bit integers, represented by hex string of length at most 16\n * \"pattern\": \"^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,15})$\"\n */\nexport type u64 = string;\n/**\n * 64 bit integers, represented by hex string of length at most 32\n * \"pattern\": \"^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,31})$\"\n */\nexport type u128 = string;\nexport type SIGNATURE = Array;\nexport type BLOCK_NUMBER = number;\nexport type BLOCK_HASH = FELT;\nexport type TXN_HASH = FELT;\nexport type CHAIN_ID = NUM_AS_HEX;\nexport type STRUCT_ABI_TYPE = 'struct';\nexport type EVENT_ABI_TYPE = 'event';\nexport type FUNCTION_ABI_TYPE = 'function' | 'l1_handler' | 'constructor';\n// Represents the type of an entry point.\nexport type ENTRY_POINT_TYPE = 'EXTERNAL' | 'L1_HANDLER' | 'CONSTRUCTOR';\n// Represents the type of a function call.\nexport type CALL_TYPE = 'DELEGATE' | 'LIBRARY_CALL' | 'CALL';\n// Represents the status of the transaction\nexport type TXN_STATUS = 'RECEIVED' | 'REJECTED' | 'ACCEPTED_ON_L2' | 'ACCEPTED_ON_L1';\n// Flags that indicate how to simulate a given transaction. By default, the sequencer behavior is replicated locally (enough funds are expected to be in the account, and the fee will be deducted from the balance before the simulation of the next transaction). To skip the fee charge, use the SKIP_FEE_CHARGE flag.\nexport type SIMULATION_FLAG = 'SKIP_VALIDATE' | 'SKIP_FEE_CHARGE';\n// Data availability mode\nexport type DA_MODE = 'L1' | 'L2';\nexport type TXN_TYPE = 'DECLARE' | 'DEPLOY' | 'DEPLOY_ACCOUNT' | 'INVOKE' | 'L1_HANDLER';\nexport type TXN_FINALITY_STATUS = 'ACCEPTED_ON_L2' | 'ACCEPTED_ON_L1';\nexport type TXN_EXECUTION_STATUS = 'SUCCEEDED' | 'REVERTED';\nexport type BLOCK_STATUS = 'PENDING' | 'ACCEPTED_ON_L2' | 'ACCEPTED_ON_L1' | 'REJECTED';\nexport type BLOCK_TAG = 'latest' | 'pending';\n\n/**\n * READ API\n */\n\nexport type EVENTS_CHUNK = {\n // Returns matching events\n events: EMITTED_EVENT[];\n // Use this token in a subsequent query to obtain the next page. Should not appear if there are no more pages.\n continuation_token?: string;\n};\n\nexport type RESULT_PAGE_REQUEST = {\n // The token returned from the previous query. If no token is provided the first page is returned.\n continuation_token?: string;\n // Chunk size\n chunk_size: number;\n};\n\nexport type EMITTED_EVENT = EVENT & {\n block_hash: BLOCK_HASH;\n block_number: BLOCK_NUMBER;\n transaction_hash: TXN_HASH;\n};\n\nexport type EVENT = {\n from_address: ADDRESS;\n} & EVENT_CONTENT;\n\nexport type EVENT_CONTENT = {\n keys: FELT[];\n data: FELT[];\n};\n\nexport type EVENT_FILTER = {\n from_block?: BLOCK_ID;\n to_block?: BLOCK_ID;\n address?: ADDRESS;\n keys?: FELT[][];\n};\n\nexport type BLOCK_ID =\n | {\n block_hash?: BLOCK_HASH;\n block_number?: BLOCK_NUMBER;\n }\n | BLOCK_TAG;\n\nexport type SYNC_STATUS = {\n starting_block_hash: BLOCK_HASH;\n starting_block_num: BLOCK_NUMBER;\n current_block_hash: BLOCK_HASH;\n current_block_num: BLOCK_NUMBER;\n highest_block_hash: BLOCK_HASH;\n highest_block_num: BLOCK_NUMBER;\n};\n\nexport type NEW_CLASSES = {\n class_hash: FELT;\n compiled_class_hash: FELT;\n};\n\nexport type REPLACED_CLASS = {\n class_hash: FELT;\n contract_address: FELT;\n};\n\nexport type NONCE_UPDATE = {\n contract_address: ADDRESS;\n nonce: FELT;\n};\n\nexport type STATE_DIFF = {\n storage_diffs: CONTRACT_STORAGE_DIFF_ITEM[];\n deprecated_declared_classes: FELT[];\n declared_classes: NEW_CLASSES[];\n deployed_contracts: DEPLOYED_CONTRACT_ITEM[];\n replaced_classes: REPLACED_CLASS[];\n nonces: NONCE_UPDATE[];\n};\n\nexport type PENDING_STATE_UPDATE = {\n old_root: FELT;\n state_diff: STATE_DIFF;\n block_hash: never; // diverge: this makes it distinct\n};\n\nexport type STATE_UPDATE = {\n block_hash: BLOCK_HASH;\n old_root: FELT;\n new_root: FELT;\n state_diff: STATE_DIFF;\n};\n\nexport type BLOCK_BODY_WITH_TX_HASHES = {\n transactions: TXN_HASH[];\n};\n\nexport type BLOCK_BODY_WITH_TXS = {\n transactions: (TXN & {\n transaction_hash: TXN_HASH;\n })[];\n};\n\nexport type BLOCK_HEADER = {\n block_hash: BLOCK_HASH;\n parent_hash: BLOCK_HASH;\n block_number: BLOCK_NUMBER;\n new_root: FELT;\n timestamp: number;\n sequencer_address: FELT;\n l1_gas_price: RESOURCE_PRICE;\n starknet_version: string;\n};\n\nexport type PENDING_BLOCK_HEADER = {\n parent_hash: BLOCK_HASH;\n timestamp: number;\n sequencer_address: FELT;\n l1_gas_price: RESOURCE_PRICE;\n starknet_version: string;\n};\n\nexport type BLOCK_WITH_TX_HASHES = { status: BLOCK_STATUS } & BLOCK_HEADER &\n BLOCK_BODY_WITH_TX_HASHES;\n\nexport type BLOCK_WITH_TXS = { status: BLOCK_STATUS } & BLOCK_HEADER & BLOCK_BODY_WITH_TXS;\n\nexport type PENDING_BLOCK_WITH_TX_HASHES = BLOCK_BODY_WITH_TX_HASHES & PENDING_BLOCK_HEADER;\n\nexport type PENDING_BLOCK_WITH_TXS = BLOCK_BODY_WITH_TXS & PENDING_BLOCK_HEADER;\n\nexport type DEPLOYED_CONTRACT_ITEM = {\n address: FELT;\n class_hash: FELT;\n};\n\nexport type CONTRACT_STORAGE_DIFF_ITEM = {\n // The contract address for which the storage changed (in FELT format)\n address: string;\n // The changes in the storage of the contract\n storage_entries: StorageDiffItem[];\n};\n\nexport type StorageDiffItem = {\n // The key of the changed value (in FELT format)\n key: string;\n // The new value applied to the given address (in FELT format)\n value: string;\n};\n\nexport type TXN = INVOKE_TXN | L1_HANDLER_TXN | DECLARE_TXN | DEPLOY_TXN | DEPLOY_ACCOUNT_TXN;\n\nexport type DECLARE_TXN = DECLARE_TXN_V0 | DECLARE_TXN_V1 | DECLARE_TXN_V2 | DECLARE_TXN_V3;\n\nexport type DECLARE_TXN_V0 = {\n type: 'DECLARE';\n sender_address: ADDRESS;\n max_fee: FELT;\n version: '0x0' | '0x100000000000000000000000000000000';\n signature: SIGNATURE;\n class_hash: FELT;\n};\n\nexport type DECLARE_TXN_V1 = {\n type: 'DECLARE';\n sender_address: ADDRESS;\n max_fee: FELT;\n version: '0x1' | '0x100000000000000000000000000000001';\n signature: SIGNATURE;\n nonce: FELT;\n class_hash: FELT;\n};\n\nexport type DECLARE_TXN_V2 = {\n type: 'DECLARE';\n sender_address: ADDRESS;\n compiled_class_hash: FELT;\n max_fee: FELT;\n version: '0x2' | '0x100000000000000000000000000000002';\n signature: SIGNATURE;\n nonce: FELT;\n class_hash: FELT;\n};\n\nexport type DECLARE_TXN_V3 = {\n type: 'DECLARE';\n sender_address: ADDRESS;\n compiled_class_hash: FELT;\n version: '0x3' | '0x100000000000000000000000000000003';\n signature: SIGNATURE;\n nonce: FELT;\n class_hash: FELT;\n // new...\n resource_bounds: RESOURCE_BOUNDS_MAPPING;\n tip: u64;\n paymaster_data: FELT[];\n account_deployment_data: FELT[];\n nonce_data_availability_mode: DA_MODE;\n fee_data_availability_mode: DA_MODE;\n};\n\nexport type BROADCASTED_TXN =\n | BROADCASTED_INVOKE_TXN\n | BROADCASTED_DECLARE_TXN\n | BROADCASTED_DEPLOY_ACCOUNT_TXN;\n\nexport type BROADCASTED_INVOKE_TXN = INVOKE_TXN;\n\nexport type BROADCASTED_DEPLOY_ACCOUNT_TXN = DEPLOY_ACCOUNT_TXN;\n\nexport type BROADCASTED_DECLARE_TXN =\n | BROADCASTED_DECLARE_TXN_V1\n | BROADCASTED_DECLARE_TXN_V2\n | BROADCASTED_DECLARE_TXN_V3;\n\nexport type BROADCASTED_DECLARE_TXN_V1 = {\n type: 'DECLARE';\n sender_address: ADDRESS;\n max_fee: FELT;\n // todo: check if working, prev i fixed it with NUM_AS_HEX\n version: '0x1' | '0x100000000000000000000000000000001';\n signature: SIGNATURE;\n nonce: FELT;\n contract_class: DEPRECATED_CONTRACT_CLASS;\n};\n\nexport type BROADCASTED_DECLARE_TXN_V2 = {\n type: 'DECLARE';\n sender_address: ADDRESS;\n compiled_class_hash: FELT;\n max_fee: FELT;\n version: '0x2' | '0x100000000000000000000000000000002';\n signature: SIGNATURE;\n nonce: FELT;\n contract_class: CONTRACT_CLASS;\n};\n\nexport type BROADCASTED_DECLARE_TXN_V3 = {\n type: 'DECLARE';\n sender_address: ADDRESS;\n compiled_class_hash: FELT;\n version: '0x3' | '0x100000000000000000000000000000003';\n signature: SIGNATURE;\n nonce: FELT;\n contract_class: CONTRACT_CLASS;\n // new...\n resource_bounds: RESOURCE_BOUNDS_MAPPING;\n tip: u64;\n paymaster_data: FELT[];\n account_deployment_data: FELT[];\n nonce_data_availability_mode: DA_MODE;\n fee_data_availability_mode: DA_MODE;\n};\n\nexport type DEPLOY_ACCOUNT_TXN = DEPLOY_ACCOUNT_TXN_V1 | DEPLOY_ACCOUNT_TXN_V3;\n\nexport type DEPLOY_ACCOUNT_TXN_V1 = {\n type: 'DEPLOY_ACCOUNT';\n max_fee: FELT;\n version: '0x1' | '0x100000000000000000000000000000001';\n signature: SIGNATURE;\n nonce: FELT;\n contract_address_salt: FELT;\n constructor_calldata: FELT[];\n class_hash: FELT;\n};\n\nexport type DEPLOY_ACCOUNT_TXN_V3 = {\n type: 'DEPLOY_ACCOUNT';\n version: '0x3' | '0x100000000000000000000000000000003';\n signature: SIGNATURE;\n nonce: FELT;\n contract_address_salt: FELT;\n constructor_calldata: FELT[];\n class_hash: FELT;\n resource_bounds: RESOURCE_BOUNDS_MAPPING;\n tip: u64;\n paymaster_data: FELT[];\n nonce_data_availability_mode: DA_MODE;\n fee_data_availability_mode: DA_MODE;\n};\n\nexport type DEPLOY_TXN = {\n type: 'DEPLOY';\n version: FELT;\n contract_address_salt: FELT;\n constructor_calldata: FELT[];\n class_hash: FELT;\n};\n\nexport type INVOKE_TXN = INVOKE_TXN_V0 | INVOKE_TXN_V1 | INVOKE_TXN_V3;\n\nexport type INVOKE_TXN_V0 = {\n type: 'INVOKE';\n max_fee: FELT;\n version: '0x0' | '0x100000000000000000000000000000000';\n signature: SIGNATURE;\n contract_address: ADDRESS;\n entry_point_selector: FELT;\n calldata: FELT[];\n};\n\nexport type INVOKE_TXN_V1 = {\n type: 'INVOKE';\n sender_address: ADDRESS;\n calldata: FELT[];\n max_fee: FELT;\n version: '0x1' | '0x100000000000000000000000000000001';\n signature: SIGNATURE;\n nonce: FELT;\n};\n\nexport type INVOKE_TXN_V3 = {\n type: 'INVOKE';\n sender_address: ADDRESS;\n calldata: FELT[];\n version: '0x3' | '0x100000000000000000000000000000003';\n signature: SIGNATURE;\n nonce: FELT;\n resource_bounds: RESOURCE_BOUNDS_MAPPING;\n tip: u64;\n paymaster_data: FELT[];\n account_deployment_data: FELT[];\n nonce_data_availability_mode: DA_MODE;\n fee_data_availability_mode: DA_MODE;\n};\n\nexport type L1_HANDLER_TXN = {\n version: FELT;\n type: 'L1_HANDLER';\n nonce: NUM_AS_HEX;\n} & FUNCTION_CALL;\n\nexport type COMMON_RECEIPT_PROPERTIES = {\n transaction_hash: TXN_HASH;\n actual_fee: FEE_PAYMENT;\n execution_status: TXN_EXECUTION_STATUS;\n finality_status: TXN_FINALITY_STATUS;\n block_hash: BLOCK_HASH;\n block_number: BLOCK_NUMBER;\n messages_sent: MSG_TO_L1[];\n revert_reason?: string;\n events: EVENT[];\n execution_resources: EXECUTION_RESOURCES;\n};\n\nexport type PENDING_COMMON_RECEIPT_PROPERTIES = {\n transaction_hash: TXN_HASH;\n actual_fee: FEE_PAYMENT;\n messages_sent: MSG_TO_L1[];\n events: EVENT[];\n revert_reason?: string;\n finality_status: 'ACCEPTED_ON_L2';\n execution_status: TXN_EXECUTION_STATUS;\n execution_resources: EXECUTION_RESOURCES;\n};\n\nexport type INVOKE_TXN_RECEIPT = {\n type: 'INVOKE';\n} & COMMON_RECEIPT_PROPERTIES;\n\nexport type PENDING_INVOKE_TXN_RECEIPT = {\n type: 'INVOKE';\n} & PENDING_COMMON_RECEIPT_PROPERTIES;\n\nexport type DECLARE_TXN_RECEIPT = {\n type: 'DECLARE';\n} & COMMON_RECEIPT_PROPERTIES;\n\nexport type PENDING_DECLARE_TXN_RECEIPT = {\n type: 'DECLARE';\n} & PENDING_COMMON_RECEIPT_PROPERTIES;\n\nexport type DEPLOY_ACCOUNT_TXN_RECEIPT = {\n type: 'DEPLOY_ACCOUNT';\n contract_address: FELT;\n} & COMMON_RECEIPT_PROPERTIES;\n\nexport type PENDING_DEPLOY_ACCOUNT_TXN_RECEIPT = {\n type: 'DEPLOY_ACCOUNT';\n contract_address: FELT;\n} & PENDING_COMMON_RECEIPT_PROPERTIES;\n\nexport type DEPLOY_TXN_RECEIPT = {\n type: 'DEPLOY';\n contract_address: FELT;\n} & COMMON_RECEIPT_PROPERTIES;\n\nexport type L1_HANDLER_TXN_RECEIPT = {\n type: 'L1_HANDLER';\n message_hash: NUM_AS_HEX;\n} & COMMON_RECEIPT_PROPERTIES;\n\nexport type PENDING_L1_HANDLER_TXN_RECEIPT = {\n type: 'L1_HANDLER';\n message_hash: NUM_AS_HEX;\n} & PENDING_COMMON_RECEIPT_PROPERTIES;\n\nexport type TXN_RECEIPT =\n | INVOKE_TXN_RECEIPT\n | L1_HANDLER_TXN_RECEIPT\n | DECLARE_TXN_RECEIPT\n | DEPLOY_TXN_RECEIPT\n | DEPLOY_ACCOUNT_TXN_RECEIPT;\n\nexport type PENDING_TXN_RECEIPT =\n | PENDING_INVOKE_TXN_RECEIPT\n | PENDING_L1_HANDLER_TXN_RECEIPT\n | PENDING_DECLARE_TXN_RECEIPT\n | PENDING_DEPLOY_ACCOUNT_TXN_RECEIPT;\n\nexport type MSG_TO_L1 = {\n from_address: FELT;\n to_address: FELT;\n payload: FELT[];\n};\n\nexport type MSG_FROM_L1 = {\n from_address: ETH_ADDRESS;\n to_address: ADDRESS;\n entry_point_selector: FELT;\n payload: FELT[];\n};\n\nexport type FUNCTION_CALL = {\n contract_address: ADDRESS;\n entry_point_selector: FELT;\n calldata: FELT[];\n};\n\nexport type CONTRACT_CLASS = {\n sierra_program: FELT[];\n contract_class_version: string;\n entry_points_by_type: {\n CONSTRUCTOR: SIERRA_ENTRY_POINT[];\n EXTERNAL: SIERRA_ENTRY_POINT[];\n L1_HANDLER: SIERRA_ENTRY_POINT[];\n };\n abi: string;\n};\n\nexport type DEPRECATED_CONTRACT_CLASS = {\n program: string;\n entry_points_by_type: {\n CONSTRUCTOR: DEPRECATED_CAIRO_ENTRY_POINT[];\n EXTERNAL: DEPRECATED_CAIRO_ENTRY_POINT[];\n L1_HANDLER: DEPRECATED_CAIRO_ENTRY_POINT[];\n };\n abi: CONTRACT_ABI;\n};\n\nexport type DEPRECATED_CAIRO_ENTRY_POINT = {\n offset: NUM_AS_HEX | number;\n selector: FELT;\n};\n\nexport type SIERRA_ENTRY_POINT = {\n selector: FELT;\n function_idx: number;\n};\n\nexport type CONTRACT_ABI = readonly CONTRACT_ABI_ENTRY[];\n\nexport type CONTRACT_ABI_ENTRY = {\n selector: FELT;\n input: string;\n output: string;\n};\n\nexport type STRUCT_ABI_ENTRY = {\n type: STRUCT_ABI_TYPE;\n name: string;\n size: number;\n members: STRUCT_MEMBER[];\n};\n\nexport type STRUCT_MEMBER = TYPED_PARAMETER & {\n offset: number;\n};\n\nexport type EVENT_ABI_ENTRY = {\n type: EVENT_ABI_TYPE;\n name: string;\n keys: TYPED_PARAMETER[];\n data: TYPED_PARAMETER[];\n};\n\nexport type FUNCTION_STATE_MUTABILITY = 'view';\n\nexport type FUNCTION_ABI_ENTRY = {\n type: FUNCTION_ABI_TYPE;\n name: string;\n inputs: TYPED_PARAMETER[];\n outputs: TYPED_PARAMETER[];\n stateMutability: FUNCTION_STATE_MUTABILITY;\n};\n\nexport type TYPED_PARAMETER = {\n name: string;\n type: string;\n};\n\nexport type SIMULATION_FLAG_FOR_ESTIMATE_FEE = 'SKIP_VALIDATE';\nexport type PRICE_UNIT = 'WEI' | 'FRI';\n\nexport type FEE_ESTIMATE = {\n gas_consumed: FELT;\n gas_price: FELT;\n overall_fee: FELT;\n unit: PRICE_UNIT;\n};\n\nexport type FEE_PAYMENT = {\n amount: FELT;\n unit: PRICE_UNIT;\n};\n\nexport type RESOURCE_BOUNDS_MAPPING = {\n l1_gas: RESOURCE_BOUNDS;\n l2_gas: RESOURCE_BOUNDS;\n};\n\nexport type RESOURCE_BOUNDS = {\n max_amount: u64;\n max_price_per_unit: u128;\n};\n\nexport type RESOURCE_PRICE = {\n price_in_fri: FELT;\n price_in_wei: FELT;\n};\n\nexport type EXECUTION_RESOURCES = {\n steps: number;\n memory_holes?: number;\n range_check_builtin_applications?: number;\n pedersen_builtin_applications?: number;\n poseidon_builtin_applications?: number;\n ec_op_builtin_applications?: number;\n ecdsa_builtin_applications?: number;\n bitwise_builtin_applications?: number;\n keccak_builtin_applications?: number;\n segment_arena_builtin?: number;\n};\n\n/**\n * TRACE API\n */\n\n// Represents a transaction trace including the execution details.\nexport type TRANSACTION_TRACE = {\n invoke_tx_trace?: INVOKE_TXN_TRACE;\n declare_tx_trace?: DECLARE_TXN_TRACE;\n deploy_account_tx_trace?: DEPLOY_ACCOUNT_TXN_TRACE;\n l1_handler_tx_trace?: L1_HANDLER_TXN_TRACE;\n};\n\n// Represents a transaction trace for an invoke transaction.\nexport type INVOKE_TXN_TRACE = {\n type: 'INVOKE';\n execute_invocation: FUNCTION_INVOCATION | { revert_reason: string };\n validate_invocation?: FUNCTION_INVOCATION;\n fee_transfer_invocation?: FUNCTION_INVOCATION;\n state_diff?: STATE_DIFF;\n};\n\n// Represents a transaction trace for a declare transaction.\nexport type DECLARE_TXN_TRACE = {\n type: 'DECLARE';\n validate_invocation?: FUNCTION_INVOCATION;\n fee_transfer_invocation?: FUNCTION_INVOCATION;\n state_diff?: STATE_DIFF;\n};\n\n// Represents a transaction trace for a deploy account transaction.\nexport type DEPLOY_ACCOUNT_TXN_TRACE = {\n type: 'DEPLOY_ACCOUNT';\n constructor_invocation: FUNCTION_INVOCATION;\n validate_invocation?: FUNCTION_INVOCATION;\n fee_transfer_invocation?: FUNCTION_INVOCATION;\n state_diff?: STATE_DIFF;\n};\n\n// Represents a transaction trace for an L1 handler transaction.\nexport type L1_HANDLER_TXN_TRACE = {\n type: 'L1_HANDLER';\n function_invocation: FUNCTION_INVOCATION;\n state_diff?: STATE_DIFF;\n};\n\n// Represents a nested function call.\nexport type NESTED_CALL = FUNCTION_INVOCATION;\n\n// Represents a function invocation along with its execution details.\nexport type FUNCTION_INVOCATION = FUNCTION_CALL & {\n caller_address: string;\n class_hash: string;\n entry_point_type: ENTRY_POINT_TYPE;\n call_type: CALL_TYPE;\n result: string[];\n calls: NESTED_CALL[];\n events: ORDERED_EVENT[];\n messages: ORDERED_MESSAGE[];\n execution_resources: EXECUTION_RESOURCES;\n};\n\n// Represents an ordered event alongside its order within the transaction.\nexport type ORDERED_EVENT = {\n order: number;\n event: EVENT;\n};\n\n// Represents an ordered message alongside its order within the transaction.\nexport type ORDERED_MESSAGE = {\n order: number;\n message: MSG_TO_L1;\n};\n","/**\n * Types that are not in spec but required for UX\n */\nimport {\n ADDRESS,\n BLOCK_HASH,\n BLOCK_NUMBER,\n BLOCK_WITH_TXS,\n BLOCK_WITH_TX_HASHES,\n BROADCASTED_TXN,\n CHAIN_ID,\n CONTRACT_CLASS,\n CONTRACT_STORAGE_DIFF_ITEM,\n DEPRECATED_CONTRACT_CLASS,\n EMITTED_EVENT,\n EVENT,\n EVENTS_CHUNK,\n EVENT_FILTER,\n FEE_ESTIMATE,\n FEE_PAYMENT,\n FELT,\n MSG_FROM_L1,\n NONCE_UPDATE,\n PENDING_BLOCK_WITH_TXS,\n PENDING_BLOCK_WITH_TX_HASHES,\n PENDING_STATE_UPDATE,\n PENDING_TXN_RECEIPT,\n PRICE_UNIT,\n REPLACED_CLASS,\n RESOURCE_BOUNDS_MAPPING,\n RESULT_PAGE_REQUEST,\n SIMULATION_FLAG,\n STATE_UPDATE,\n SYNC_STATUS,\n TRANSACTION_TRACE,\n TXN,\n TXN_EXECUTION_STATUS,\n TXN_HASH,\n TXN_RECEIPT,\n TXN_STATUS,\n} from './components';\n\n// METHOD RESPONSES\n// response starknet_getClass\nexport type ContractClass = CONTRACT_CLASS | DEPRECATED_CONTRACT_CLASS;\n// response starknet_simulateTransactions\nexport type SimulateTransaction = {\n transaction_trace: TRANSACTION_TRACE;\n fee_estimation: FEE_ESTIMATE;\n};\nexport type SimulateTransactionResponse = SimulateTransaction[];\n// response starknet_estimateFee\nexport type FeeEstimate = FEE_ESTIMATE;\n// response starknet_getTransactionByHash, starknet_getTransactionByBlockIdAndIndex\nexport type TransactionWithHash = TXN & { transaction_hash: TXN_HASH };\n// response starknet_blockHashAndNumber\nexport type BlockHashAndNumber = { block_hash: BLOCK_HASH; block_number: BLOCK_NUMBER };\n// response starknet_getBlockWithTxs\nexport type BlockWithTxs = BLOCK_WITH_TXS | PENDING_BLOCK_WITH_TXS;\n// response starknet_getBlockWithTxHashes\nexport type BlockWithTxHashes = BLOCK_WITH_TX_HASHES | PENDING_BLOCK_WITH_TX_HASHES;\n// response starknet_getStateUpdate\nexport type StateUpdate = STATE_UPDATE | PENDING_STATE_UPDATE;\n// response starknet_traceBlockTransactions\nexport type BlockTransactionsTraces = { transaction_hash: FELT; trace_root: TRANSACTION_TRACE }[];\n// response starknet_syncing\nexport type Syncing = false | SYNC_STATUS;\n// response starknet_getEvents\nexport type Events = EVENTS_CHUNK;\nexport type EmittedEvent = EMITTED_EVENT;\nexport type Event = EVENT;\n// response starknet_addInvokeTransaction\nexport type InvokedTransaction = { transaction_hash: TXN_HASH };\n// response starknet_addDeclareTransaction\nexport type DeclaredTransaction = { transaction_hash: TXN_HASH; class_hash: FELT };\n// response starknet_addDeployAccountTransaction\nexport type DeployedAccountTransaction = { transaction_hash: TXN_HASH; contract_address: FELT };\n\n// Nice Components names\nexport type ContractAddress = ADDRESS;\nexport type Felt = FELT;\nexport type Nonce = FELT;\nexport type TransactionHash = TXN_HASH;\nexport type TransactionTrace = TRANSACTION_TRACE;\nexport type BlockHash = BLOCK_HASH;\nexport type TransactionReceipt = TXN_RECEIPT | PENDING_TXN_RECEIPT;\nexport type Receipt = TXN_RECEIPT;\nexport type PendingReceipt = PENDING_TXN_RECEIPT;\nexport type EventFilter = EVENT_FILTER & RESULT_PAGE_REQUEST;\nexport type SimulationFlags = Array;\nexport type L1Message = MSG_FROM_L1;\nexport type BaseTransaction = BROADCASTED_TXN;\nexport type ChainId = CHAIN_ID;\nexport type Transaction = TXN;\nexport type TransactionStatus = {\n finality_status: TXN_STATUS;\n execution_status?: TXN_EXECUTION_STATUS;\n};\nexport type ResourceBounds = RESOURCE_BOUNDS_MAPPING;\nexport type FeePayment = FEE_PAYMENT;\nexport type PriceUnit = PRICE_UNIT;\n\n// Diff Than Seq\nexport type StorageDiffs = Array;\nexport type DeprecatedDeclaredClasses = Array;\nexport type NonceUpdates = NONCE_UPDATE[];\nexport type ReplacedClasses = REPLACED_CLASS[];\n\n// Enums Derived From Spec Types (require manual check for changes)\nexport enum ETransactionType {\n DECLARE = 'DECLARE',\n DEPLOY = 'DEPLOY',\n DEPLOY_ACCOUNT = 'DEPLOY_ACCOUNT',\n INVOKE = 'INVOKE',\n L1_HANDLER = 'L1_HANDLER',\n}\n\nexport enum ESimulationFlag {\n SKIP_VALIDATE = 'SKIP_VALIDATE',\n SKIP_FEE_CHARGE = 'SKIP_FEE_CHARGE',\n}\n\nexport enum ETransactionStatus {\n RECEIVED = 'RECEIVED',\n REJECTED = 'REJECTED',\n ACCEPTED_ON_L2 = 'ACCEPTED_ON_L2',\n ACCEPTED_ON_L1 = 'ACCEPTED_ON_L1',\n}\n\nexport enum ETransactionFinalityStatus {\n ACCEPTED_ON_L2 = 'ACCEPTED_ON_L2',\n ACCEPTED_ON_L1 = 'ACCEPTED_ON_L1',\n}\n\nexport enum ETransactionExecutionStatus {\n SUCCEEDED = 'SUCCEEDED',\n REVERTED = 'REVERTED',\n}\n\nexport enum EBlockTag {\n PENDING = 'pending',\n LATEST = 'latest',\n}\n\n// 'L1' | 'L2'\nexport enum EDataAvailabilityMode {\n L1 = 'L1',\n L2 = 'L2',\n}\n\n// 0 | 1\nexport enum EDAMode {\n L1,\n L2,\n}\n\n/**\n * V_ Transaction versions HexString\n * F_ Fee Transaction Versions HexString (2 ** 128 + TRANSACTION_VERSION)\n */\nexport enum ETransactionVersion {\n V0 = '0x0',\n V1 = '0x1',\n V2 = '0x2',\n V3 = '0x3',\n F0 = '0x100000000000000000000000000000000',\n F1 = '0x100000000000000000000000000000001',\n F2 = '0x100000000000000000000000000000002',\n F3 = '0x100000000000000000000000000000003',\n}\n\n/**\n * Old Transaction Versions\n */\nexport enum ETransactionVersion2 {\n V0 = '0x0',\n V1 = '0x1',\n V2 = '0x2',\n F0 = '0x100000000000000000000000000000000',\n F1 = '0x100000000000000000000000000000001',\n F2 = '0x100000000000000000000000000000002',\n}\n\n/**\n * V3 Transaction Versions\n */\nexport enum ETransactionVersion3 {\n V3 = '0x3',\n F3 = '0x100000000000000000000000000000003',\n}\n","import { base64 } from '@scure/base';\n\n/* eslint-disable no-param-reassign */\nexport const IS_BROWSER = typeof window !== 'undefined';\n\nconst STRING_ZERO = '0';\n\n/**\n * Some functions recreated from https://github.com/pedrouid/enc-utils/blob/master/src/index.ts\n * enc-utils is not a dependency to avoid using `Buffer` which only works in node and not browsers\n */\n\n/**\n * Convert array buffer to string\n *\n * *[internal usage]*\n *\n * @param {ArrayBuffer} array The ArrayBuffer to convert to string.\n * @returns {string} The converted string.\n *\n * @example\n * ```typescript\n * const buffer = new ArrayBuffer(5);\n * const view = new Uint8Array(buffer);\n * [72, 101, 108, 108, 111].forEach((x, idx) => view[idx] = x);\n * const result = encode.arrayBufferToString(buffer);\n * // result = \"Hello\"\n * ```\n */\nexport function arrayBufferToString(array: ArrayBuffer): string {\n return new Uint8Array(array).reduce((data, byte) => data + String.fromCharCode(byte), '');\n}\n\n/**\n * Convert utf8-string to Uint8Array\n *\n * *[internal usage]*\n *\n * @param {string} str The UTF-8 string to convert.\n * @returns {Uint8Array} The encoded Uint8Array.\n *\n * @example\n * ```typescript\n * const myString = 'Hi';\n * const result = encode.utf8ToArray(myString);\n * // result = Uint8Array(2) [ 72, 105 ]\n * ```\n */\nexport function utf8ToArray(str: string): Uint8Array {\n return new TextEncoder().encode(str);\n}\n\n/**\n * Convert utf8-string to Uint8Array\n *\n * @deprecated equivalent to 'utf8ToArray', alias will be removed\n */\nexport function stringToArrayBuffer(str: string): Uint8Array {\n return utf8ToArray(str);\n}\n\n/**\n * Convert string to array buffer (browser and node compatible)\n *\n * @param {string} a The Base64 encoded string to convert.\n * @returns {Uint8Array} The decoded Uint8Array.\n *\n * @example\n * ```typescript\n * const base64String = 'SGVsbG8='; // 'Hello' in Base64\n * const result = encode.atobUniversal(base64String);\n * // result = Uint8Array(5) [ 72, 101, 108, 108, 111 ]\n * ```\n */\nexport function atobUniversal(a: string): Uint8Array {\n return base64.decode(a);\n}\n\n/**\n * Convert array buffer to string (browser and node compatible)\n *\n * @param {ArrayBuffer} b The Array buffer.\n * @returns {string} The Base64 encoded string.\n *\n * @example\n * ```typescript\n * const buffer = new Uint8Array([72, 101, 108, 108, 111]); // Array with ASCII values for 'Hello'\n * const result = encode.btoaUniversal(buffer);\n * // result = \"SGVsbG8=\"\n * ```\n */\nexport function btoaUniversal(b: ArrayBuffer): string {\n return base64.encode(new Uint8Array(b));\n}\n\n/**\n * Convert array buffer to hex-string\n *\n * @param {Uint8Array} buffer The encoded Uint8Array.\n * @returns {string} The hex-string\n *\n * @example\n * ```typescript\n * const buffer = new Uint8Array([72, 101, 108, 108, 111]); // Array with ASCII values for 'Hello'\n * const result = encode.buf2hex(buffer);\n * // result = \"48656c6c6f\"\n * ```\n */\nexport function buf2hex(buffer: Uint8Array) {\n return buffer.reduce((r, x) => r + x.toString(16).padStart(2, '0'), '');\n}\n\n/**\n * Remove hex prefix '0x' from hex-string\n * @param hex hex-string\n * @returns {string} The hex-string\n *\n * @example\n * ```typescript\n * const hexStringWithPrefix = '0x48656c6c6f';\n * const result = encode.removeHexPrefix(hexStringWithPrefix);\n * // result: \"48656c6c6f\"\n * ```\n */\nexport function removeHexPrefix(hex: string): string {\n return hex.replace(/^0x/i, '');\n}\n\n/**\n * Add hex prefix '0x' to base16-string\n * @param hex base16-string\n * @returns {string} The hex-string\n *\n * @example\n * ```typescript\n * const plainHexString = '48656c6c6f';\n * const result = encode.addHexPrefix(plainHexString);\n * // result: \"0x48656c6c6f\"\n * ```\n */\nexport function addHexPrefix(hex: string): string {\n return `0x${removeHexPrefix(hex)}`;\n}\n\n/**\n * Prepend or append to string\n *\n * *[internal usage]*\n *\n * Pads a string to a certain length with a specific string.\n * The padding can be applied either to the left or the right of the input string.\n *\n * @param {string} str The string to pad.\n * @param {number} length The target length for the padded string.\n * @param {boolean} left Set to true to add padding to the left, false to add it to the right.\n * @param {string} [padding='0'] The string to use for padding. Defaults to '0'.\n * @returns {string} The padded string.\n *\n * @example\n * ```typescript\n * const myString = 'hello';\n * const result = padString(myString, 10, true);\n * // result = '00000hello'\n * ```\n */\nfunction padString(str: string, length: number, left: boolean, padding = STRING_ZERO): string {\n const diff = length - str.length;\n let result = str;\n if (diff > 0) {\n const pad = padding.repeat(diff);\n result = left ? pad + str : str + pad;\n }\n return result;\n}\n\n/**\n * Prepend string (default with '0')\n *\n * Pads a string to a certain length with a specific string.\n * The padding can be applied only to the left of the input string.\n *\n * @param {string} str The string to pad.\n * @param {number} length The target length for the padded string.\n * @param {string} [padding='0'] The string to use for padding. Defaults to '0'.\n * @returns {string} The padded string.\n *\n * @example\n * ```typescript\n * const myString = '1A3F';\n * const result = encode.padLeft(myString, 10);\n * // result: '0000001A3F'\n * ```\n */\nexport function padLeft(str: string, length: number, padding = STRING_ZERO): string {\n return padString(str, length, true, padding);\n}\n\n/**\n * Calculate byte length of string\n *\n * *[no internal usage]*\n *\n * Calculates the byte length of a string based on a specified byte size.\n * The function rounds up the byte count to the nearest multiple of the specified byte size.\n *\n * @param {string} str The string whose byte length is to be calculated.\n * @param {number} [byteSize='8'] The size of the byte block to round up to. Defaults to 8.\n * @returns {number} The calculated byte length, rounded to the nearest multiple of byteSize.\n *\n * @example\n * ```typescript\n * const myString = 'Hello';\n * const result = encode.calcByteLength(myString, 4);\n * // result = 8 (rounded up to the nearest multiple of 4)\n *\n * ```\n */\nexport function calcByteLength(str: string, byteSize = 8): number {\n const { length } = str;\n const remainder = length % byteSize;\n return remainder ? ((length - remainder) / byteSize) * byteSize + byteSize : length;\n}\n\n/**\n * Prepend '0' to string bytes\n *\n * *[no internal usage]*\n *\n *\n * * Prepends padding to the left of a string to ensure it matches a specific byte length.\n * The function uses a specified padding character and rounds up the string length to the nearest multiple of `byteSize`.\n *\n * @param {string} str The string to be padded.\n * @param {number} [byteSize='8'] The byte block size to which the string length should be rounded up. Defaults to 8.\n * @param {string} [padding='0'] The character to use for padding. Defaults to '0'.\n * @returns {string} The padded string.\n *\n * @example\n * ```typescript\n * const myString = '123';\n * const result = encode.sanitizeBytes(myString);\n * // result: '00000123' (padded to 8 characters)\n * ```\n */\nexport function sanitizeBytes(str: string, byteSize = 8, padding = STRING_ZERO): string {\n return padLeft(str, calcByteLength(str, byteSize), padding);\n}\n\n/**\n * Sanitizes a hex-string by removing any existing '0x' prefix, padding the string with '0' to ensure it has even length,\n * and then re-adding the '0x' prefix.\n *\n * *[no internal usage]*\n * @param hex hex-string\n * @returns format: hex-string\n *\n * @example\n * ```typescript\n * const unevenHex = '0x23abc';\n * const result = encode.sanitizeHex(unevenHex);\n * // result = '0x023abc' (padded to ensure even length)\n * ```\n */\nexport function sanitizeHex(hex: string): string {\n hex = removeHexPrefix(hex);\n hex = sanitizeBytes(hex, 2);\n if (hex) {\n hex = addHexPrefix(hex);\n }\n return hex;\n}\n\n/**\n * String transformation util\n *\n * Pascal case to screaming snake case\n *\n * @param {string} text The PascalCase string to convert.\n * @returns {string} The converted snake_case string in uppercase.\n *\n * @example\n * ```typescript\n * const pascalString = 'PascalCaseExample';\n * const result = encode.pascalToSnake(pascalString);\n * // result: 'PASCAL_CASE_EXAMPLE'\n * ```\n */\nexport const pascalToSnake = (text: string) =>\n /[a-z]/.test(text)\n ? text\n .split(/(?=[A-Z])/)\n .join('_')\n .toUpperCase()\n : text;\n","import { bytesToHex } from '@noble/curves/abstract/utils';\nimport { keccak_256 } from '@noble/hashes/sha3';\nimport type { SPEC } from 'starknet-types-07';\n\nimport { RPC06, RPC07, RpcChannel } from '../channel';\nimport {\n AccountInvocations,\n BigNumberish,\n Block,\n BlockIdentifier,\n BlockTag,\n Call,\n ContractClassResponse,\n ContractVersion,\n DeclareContractTransaction,\n DeployAccountContractTransaction,\n GetBlockResponse,\n GetTxReceiptResponseWithoutHelper,\n Invocation,\n InvocationsDetailsWithNonce,\n PendingBlock,\n PendingStateUpdate,\n RPC,\n RpcProviderOptions,\n StateUpdate,\n StateUpdateResponse,\n TransactionType,\n getContractVersionOptions,\n getEstimateFeeBulkOptions,\n getSimulateTransactionOptions,\n waitForTransactionOptions,\n} from '../types';\nimport type { TransactionWithHash } from '../types/provider/spec';\nimport assert from '../utils/assert';\nimport { getAbiContractVersion } from '../utils/calldata/cairo';\nimport { isSierra } from '../utils/contract';\nimport { addHexPrefix, removeHexPrefix } from '../utils/encode';\nimport { hexToBytes, toHex } from '../utils/num';\nimport { wait } from '../utils/provider';\nimport { RPCResponseParser } from '../utils/responseParser/rpc';\nimport { GetTransactionReceiptResponse, ReceiptTx } from '../utils/transactionReceipt';\nimport { LibraryError } from './errors';\nimport { ProviderInterface } from './interface';\n\nexport class RpcProvider implements ProviderInterface {\n public responseParser: RPCResponseParser;\n\n public channel: RPC07.RpcChannel | RPC06.RpcChannel;\n\n constructor(optionsOrProvider?: RpcProviderOptions | ProviderInterface | RpcProvider) {\n if (optionsOrProvider && 'channel' in optionsOrProvider) {\n this.channel = optionsOrProvider.channel;\n this.responseParser =\n 'responseParser' in optionsOrProvider\n ? optionsOrProvider.responseParser\n : new RPCResponseParser();\n } else {\n this.channel = new RpcChannel({ ...optionsOrProvider, waitMode: false });\n this.responseParser = new RPCResponseParser(optionsOrProvider?.feeMarginPercentage);\n }\n }\n\n public fetch(method: string, params?: object, id: string | number = 0) {\n return this.channel.fetch(method, params, id);\n }\n\n public async getChainId() {\n return this.channel.getChainId();\n }\n\n public async getSpecVersion() {\n return this.channel.getSpecVersion();\n }\n\n public async getNonceForAddress(\n contractAddress: BigNumberish,\n blockIdentifier?: BlockIdentifier\n ) {\n return this.channel.getNonceForAddress(contractAddress, blockIdentifier);\n }\n\n public async getBlock(): Promise;\n public async getBlock(blockIdentifier: 'pending'): Promise;\n public async getBlock(blockIdentifier: 'latest'): Promise;\n public async getBlock(blockIdentifier?: BlockIdentifier): Promise;\n public async getBlock(blockIdentifier?: BlockIdentifier) {\n return this.channel\n .getBlockWithTxHashes(blockIdentifier)\n .then(this.responseParser.parseGetBlockResponse);\n }\n\n /**\n * Get the most recent accepted block hash and number\n */\n public async getBlockLatestAccepted() {\n return this.channel.getBlockLatestAccepted();\n }\n\n /**\n * Get the most recent accepted block number\n * redundant use getBlockLatestAccepted();\n * @returns Number of the latest block\n */\n public async getBlockNumber() {\n return this.channel.getBlockNumber();\n }\n\n public async getBlockWithTxHashes(blockIdentifier?: BlockIdentifier) {\n return this.channel.getBlockWithTxHashes(blockIdentifier);\n }\n\n public async getBlockWithTxs(blockIdentifier?: BlockIdentifier) {\n return this.channel.getBlockWithTxs(blockIdentifier);\n }\n\n /**\n * Pause the execution of the script until a specified block is created.\n * @param {BlockIdentifier} blockIdentifier bloc number (BigNumberisk) or 'pending' or 'latest'.\n * Use of 'latest\" or of a block already created will generate no pause.\n * @param {number} [retryInterval] number of milliseconds between 2 requests to the node\n * @example\n * ```typescript\n * await myProvider.waitForBlock();\n * // wait the creation of the pending block\n * ```\n */\n public async waitForBlock(\n blockIdentifier: BlockIdentifier = 'pending',\n retryInterval: number = 5000\n ) {\n if (blockIdentifier === BlockTag.LATEST) return;\n const currentBlock = await this.getBlockNumber();\n const targetBlock =\n blockIdentifier === BlockTag.PENDING\n ? currentBlock + 1\n : Number(toHex(blockIdentifier as BigNumberish));\n if (targetBlock <= currentBlock) return;\n const { retries } = this.channel;\n let retriesCount = retries;\n let isTargetBlock: boolean = false;\n while (!isTargetBlock) {\n // eslint-disable-next-line no-await-in-loop\n const currBlock = await this.getBlockNumber();\n if (currBlock === targetBlock) {\n isTargetBlock = true;\n } else {\n // eslint-disable-next-line no-await-in-loop\n await wait(retryInterval);\n }\n retriesCount -= 1;\n if (retriesCount <= 0) {\n throw new Error(`waitForBlock() timed-out after ${retries} tries.`);\n }\n }\n }\n\n public async getL1GasPrice(blockIdentifier?: BlockIdentifier) {\n return this.channel\n .getBlockWithTxHashes(blockIdentifier)\n .then(this.responseParser.parseL1GasPriceResponse);\n }\n\n public async getL1MessageHash(l2TxHash: BigNumberish) {\n const transaction = (await this.channel.getTransactionByHash(l2TxHash)) as TransactionWithHash;\n assert(transaction.type === 'L1_HANDLER', 'This L2 transaction is not a L1 message.');\n const { calldata, contract_address, entry_point_selector, nonce } =\n transaction as SPEC.L1_HANDLER_TXN;\n const params = [\n calldata[0],\n contract_address,\n nonce,\n entry_point_selector,\n calldata.length - 1,\n ...calldata.slice(1),\n ];\n const myEncode = addHexPrefix(\n params.reduce(\n (res: string, par: BigNumberish) => res + removeHexPrefix(toHex(par)).padStart(64, '0'),\n ''\n )\n );\n return addHexPrefix(bytesToHex(keccak_256(hexToBytes(myEncode))));\n }\n\n public async getBlockWithReceipts(blockIdentifier?: BlockIdentifier) {\n if (this.channel instanceof RPC06.RpcChannel)\n throw new LibraryError('Unsupported method for RPC version');\n\n return this.channel.getBlockWithReceipts(blockIdentifier);\n }\n\n public getStateUpdate = this.getBlockStateUpdate;\n\n public async getBlockStateUpdate(): Promise;\n public async getBlockStateUpdate(blockIdentifier: 'pending'): Promise;\n public async getBlockStateUpdate(blockIdentifier: 'latest'): Promise;\n public async getBlockStateUpdate(blockIdentifier?: BlockIdentifier): Promise;\n public async getBlockStateUpdate(blockIdentifier?: BlockIdentifier) {\n return this.channel.getBlockStateUpdate(blockIdentifier);\n }\n\n public async getBlockTransactionsTraces(blockIdentifier?: BlockIdentifier) {\n return this.channel.getBlockTransactionsTraces(blockIdentifier);\n }\n\n public async getBlockTransactionCount(blockIdentifier?: BlockIdentifier) {\n return this.channel.getBlockTransactionCount(blockIdentifier);\n }\n\n /**\n * Return transactions from pending block\n * @deprecated Instead use getBlock(BlockTag.PENDING); (will be removed in next minor version)\n * Utility method, same result can be achieved using getBlockWithTxHashes(BlockTag.pending);\n */\n public async getPendingTransactions() {\n const { transactions } = await this.getBlockWithTxHashes(BlockTag.PENDING).then(\n this.responseParser.parseGetBlockResponse\n );\n return Promise.all(transactions.map((it: any) => this.getTransactionByHash(it)));\n }\n\n public async getTransaction(txHash: BigNumberish) {\n return this.channel.getTransactionByHash(txHash);\n }\n\n public async getTransactionByHash(txHash: BigNumberish) {\n return this.channel.getTransactionByHash(txHash);\n }\n\n public async getTransactionByBlockIdAndIndex(blockIdentifier: BlockIdentifier, index: number) {\n return this.channel.getTransactionByBlockIdAndIndex(blockIdentifier, index);\n }\n\n public async getTransactionReceipt(txHash: BigNumberish): Promise {\n const txReceiptWoHelper = await this.channel.getTransactionReceipt(txHash);\n const txReceiptWoHelperModified: GetTxReceiptResponseWithoutHelper =\n this.responseParser.parseTransactionReceipt(txReceiptWoHelper);\n return new ReceiptTx(txReceiptWoHelperModified) as GetTransactionReceiptResponse;\n }\n\n public async getTransactionTrace(txHash: BigNumberish) {\n return this.channel.getTransactionTrace(txHash);\n }\n\n /**\n * Get the status of a transaction\n */\n public async getTransactionStatus(transactionHash: BigNumberish) {\n return this.channel.getTransactionStatus(transactionHash);\n }\n\n /**\n * @param invocations AccountInvocations\n * @param options blockIdentifier and flags to skip validation and fee charge
\n * - blockIdentifier
\n * - skipValidate (default false)
\n * - skipFeeCharge (default true)
\n */\n public async getSimulateTransaction(\n invocations: AccountInvocations,\n options?: getSimulateTransactionOptions\n ) {\n // can't be named simulateTransaction because of argument conflict with account\n return this.channel\n .simulateTransaction(invocations, options)\n .then((r) => this.responseParser.parseSimulateTransactionResponse(r));\n }\n\n public async waitForTransaction(\n txHash: BigNumberish,\n options?: waitForTransactionOptions\n ): Promise {\n const receiptWoHelper = (await this.channel.waitForTransaction(\n txHash,\n options\n )) as GetTxReceiptResponseWithoutHelper;\n\n return new ReceiptTx(receiptWoHelper) as GetTransactionReceiptResponse;\n }\n\n public async getStorageAt(\n contractAddress: BigNumberish,\n key: BigNumberish,\n blockIdentifier?: BlockIdentifier\n ) {\n return this.channel.getStorageAt(contractAddress, key, blockIdentifier);\n }\n\n public async getClassHashAt(contractAddress: BigNumberish, blockIdentifier?: BlockIdentifier) {\n return this.channel.getClassHashAt(contractAddress, blockIdentifier);\n }\n\n public async getClassByHash(classHash: BigNumberish) {\n return this.getClass(classHash);\n }\n\n public async getClass(classHash: BigNumberish, blockIdentifier?: BlockIdentifier) {\n return this.channel\n .getClass(classHash, blockIdentifier)\n .then(this.responseParser.parseContractClassResponse);\n }\n\n public async getClassAt(contractAddress: BigNumberish, blockIdentifier?: BlockIdentifier) {\n return this.channel\n .getClassAt(contractAddress, blockIdentifier)\n .then(this.responseParser.parseContractClassResponse);\n }\n\n public async getContractVersion(\n contractAddress: BigNumberish,\n classHash?: undefined,\n options?: getContractVersionOptions\n ): Promise;\n public async getContractVersion(\n contractAddress: undefined,\n classHash: BigNumberish,\n options?: getContractVersionOptions\n ): Promise;\n\n public async getContractVersion(\n contractAddress?: BigNumberish,\n classHash?: BigNumberish,\n {\n blockIdentifier = this.channel.blockIdentifier,\n compiler = true,\n }: getContractVersionOptions = {}\n ): Promise {\n let contractClass: ContractClassResponse;\n if (contractAddress) {\n contractClass = await this.getClassAt(contractAddress, blockIdentifier);\n } else if (classHash) {\n contractClass = await this.getClass(classHash, blockIdentifier);\n } else {\n throw Error('getContractVersion require contractAddress or classHash');\n }\n\n if (isSierra(contractClass)) {\n if (compiler) {\n const abiTest = getAbiContractVersion(contractClass.abi);\n return { cairo: '1', compiler: abiTest.compiler };\n }\n return { cairo: '1', compiler: undefined };\n }\n return { cairo: '0', compiler: '0' };\n }\n\n /**\n * @deprecated use get*type*EstimateFee (will be refactored based on type after sequencer deprecation)\n */\n public async getEstimateFee(\n invocation: Invocation,\n invocationDetails: InvocationsDetailsWithNonce,\n blockIdentifier?: BlockIdentifier,\n skipValidate?: boolean\n ) {\n return this.getInvokeEstimateFee(invocation, invocationDetails, blockIdentifier, skipValidate);\n }\n\n public async getInvokeEstimateFee(\n invocation: Invocation,\n invocationDetails: InvocationsDetailsWithNonce,\n blockIdentifier?: BlockIdentifier,\n skipValidate?: boolean\n ) {\n return this.channel\n .getEstimateFee(\n [\n {\n type: TransactionType.INVOKE,\n ...invocation,\n ...invocationDetails,\n },\n ],\n { blockIdentifier, skipValidate }\n )\n .then((r) => this.responseParser.parseFeeEstimateResponse(r));\n }\n\n public async getDeclareEstimateFee(\n invocation: DeclareContractTransaction,\n details: InvocationsDetailsWithNonce,\n blockIdentifier?: BlockIdentifier,\n skipValidate?: boolean\n ) {\n return this.channel\n .getEstimateFee(\n [\n {\n type: TransactionType.DECLARE,\n ...invocation,\n ...details,\n },\n ],\n { blockIdentifier, skipValidate }\n )\n .then((r) => this.responseParser.parseFeeEstimateResponse(r));\n }\n\n public async getDeployAccountEstimateFee(\n invocation: DeployAccountContractTransaction,\n details: InvocationsDetailsWithNonce,\n blockIdentifier?: BlockIdentifier,\n skipValidate?: boolean\n ) {\n return this.channel\n .getEstimateFee(\n [\n {\n type: TransactionType.DEPLOY_ACCOUNT,\n ...invocation,\n ...details,\n },\n ],\n { blockIdentifier, skipValidate }\n )\n .then((r) => this.responseParser.parseFeeEstimateResponse(r));\n }\n\n public async getEstimateFeeBulk(\n invocations: AccountInvocations,\n options: getEstimateFeeBulkOptions\n ) {\n return this.channel\n .getEstimateFee(invocations, options)\n .then((r) => this.responseParser.parseFeeEstimateBulkResponse(r));\n }\n\n public async invokeFunction(\n functionInvocation: Invocation,\n details: InvocationsDetailsWithNonce\n ) {\n return this.channel.invoke(functionInvocation, details) as Promise;\n }\n\n public async declareContract(\n transaction: DeclareContractTransaction,\n details: InvocationsDetailsWithNonce\n ) {\n return this.channel.declare(transaction, details) as Promise;\n }\n\n public async deployAccountContract(\n transaction: DeployAccountContractTransaction,\n details: InvocationsDetailsWithNonce\n ) {\n return this.channel.deployAccount(\n transaction,\n details\n ) as Promise;\n }\n\n public async callContract(call: Call, blockIdentifier?: BlockIdentifier) {\n return this.channel.callContract(call, blockIdentifier);\n }\n\n /**\n * NEW: Estimate the fee for a message from L1\n * @param message Message From L1\n */\n public async estimateMessageFee(message: RPC.L1Message, blockIdentifier?: BlockIdentifier) {\n return this.channel.estimateMessageFee(message, blockIdentifier);\n }\n\n /**\n * Returns an object about the sync status, or false if the node is not synching\n * @returns Object with the stats data\n */\n public async getSyncingStats() {\n return this.channel.getSyncingStats();\n }\n\n /**\n * Returns all events matching the given filter\n * @returns events and the pagination of the events\n */\n public async getEvents(eventFilter: RPC.EventFilter) {\n return this.channel.getEvents(eventFilter);\n }\n}\n","import { NetworkName, StarknetChainId } from '../constants';\nimport { LibraryError } from '../provider/errors';\nimport {\n AccountInvocationItem,\n AccountInvocations,\n BigNumberish,\n BlockIdentifier,\n BlockTag,\n Call,\n DeclareContractTransaction,\n DeployAccountContractTransaction,\n Invocation,\n InvocationsDetailsWithNonce,\n RpcProviderOptions,\n TransactionType,\n getEstimateFeeBulkOptions,\n getSimulateTransactionOptions,\n waitForTransactionOptions,\n} from '../types';\nimport { JRPC, RPCSPEC06 as RPC } from '../types/api';\nimport { CallData } from '../utils/calldata';\nimport { isSierra } from '../utils/contract';\nimport { validateAndParseEthAddress } from '../utils/eth';\nimport fetch from '../utils/fetchPonyfill';\nimport { getSelector, getSelectorFromName } from '../utils/hash';\nimport { stringify } from '../utils/json';\nimport { getHexStringArray, toHex, toStorageKey } from '../utils/num';\nimport { Block, getDefaultNodeUrl, isV3Tx, isVersion, wait } from '../utils/provider';\nimport { decompressProgram, signatureToHexArray } from '../utils/stark';\nimport { getVersionsByType } from '../utils/transaction';\n\nconst defaultOptions = {\n headers: { 'Content-Type': 'application/json' },\n blockIdentifier: BlockTag.PENDING,\n retries: 200,\n};\n\nexport class RpcChannel {\n public nodeUrl: string;\n\n public headers: object;\n\n readonly retries: number;\n\n public requestId: number;\n\n readonly blockIdentifier: BlockIdentifier;\n\n private chainId?: StarknetChainId;\n\n private specVersion?: string;\n\n readonly waitMode: Boolean; // behave like web2 rpc and return when tx is processed\n\n constructor(optionsOrProvider?: RpcProviderOptions) {\n const { nodeUrl, retries, headers, blockIdentifier, chainId, specVersion, waitMode } =\n optionsOrProvider || {};\n if (Object.values(NetworkName).includes(nodeUrl as NetworkName)) {\n this.nodeUrl = getDefaultNodeUrl(nodeUrl as NetworkName, optionsOrProvider?.default);\n } else if (nodeUrl) {\n this.nodeUrl = nodeUrl;\n } else {\n this.nodeUrl = getDefaultNodeUrl(undefined, optionsOrProvider?.default);\n }\n this.retries = retries || defaultOptions.retries;\n this.headers = { ...defaultOptions.headers, ...headers };\n this.blockIdentifier = blockIdentifier || defaultOptions.blockIdentifier;\n this.chainId = chainId;\n this.specVersion = specVersion;\n this.waitMode = waitMode || false;\n this.requestId = 0;\n }\n\n public setChainId(chainId: StarknetChainId) {\n this.chainId = chainId;\n }\n\n public fetch(method: string, params?: object, id: string | number = 0) {\n const rpcRequestBody: JRPC.RequestBody = {\n id,\n jsonrpc: '2.0',\n method,\n ...(params && { params }),\n };\n return fetch(this.nodeUrl, {\n method: 'POST',\n body: stringify(rpcRequestBody),\n headers: this.headers as Record,\n });\n }\n\n protected errorHandler(method: string, params: any, rpcError?: JRPC.Error, otherError?: any) {\n if (rpcError) {\n const { code, message, data } = rpcError;\n throw new LibraryError(\n `RPC: ${method} with params ${stringify(params, null, 2)}\\n\n ${code}: ${message}: ${stringify(data)}`\n );\n }\n if (otherError instanceof LibraryError) {\n throw otherError;\n }\n if (otherError) {\n throw Error(otherError.message);\n }\n }\n\n protected async fetchEndpoint(\n method: T,\n params?: RPC.Methods[T]['params']\n ): Promise {\n try {\n const rawResult = await this.fetch(method, params, (this.requestId += 1));\n const { error, result } = await rawResult.json();\n this.errorHandler(method, params, error);\n return result as RPC.Methods[T]['result'];\n } catch (error: any) {\n this.errorHandler(method, params, error?.response?.data, error);\n throw error;\n }\n }\n\n public async getChainId() {\n this.chainId ??= (await this.fetchEndpoint('starknet_chainId')) as StarknetChainId;\n return this.chainId;\n }\n\n public async getSpecVersion() {\n this.specVersion ??= (await this.fetchEndpoint('starknet_specVersion')) as StarknetChainId;\n return this.specVersion;\n }\n\n public getNonceForAddress(\n contractAddress: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const contract_address = toHex(contractAddress);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getNonce', {\n contract_address,\n block_id,\n });\n }\n\n /**\n * Get the most recent accepted block hash and number\n */\n public getBlockLatestAccepted() {\n return this.fetchEndpoint('starknet_blockHashAndNumber');\n }\n\n /**\n * Get the most recent accepted block number\n * redundant use getBlockLatestAccepted();\n * @returns Number of the latest block\n */\n public getBlockNumber() {\n return this.fetchEndpoint('starknet_blockNumber');\n }\n\n public getBlockWithTxHashes(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getBlockWithTxHashes', { block_id });\n }\n\n public getBlockWithTxs(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getBlockWithTxs', { block_id });\n }\n\n public getBlockStateUpdate(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getStateUpdate', { block_id });\n }\n\n public getBlockTransactionsTraces(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_traceBlockTransactions', { block_id });\n }\n\n public getBlockTransactionCount(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getBlockTransactionCount', { block_id });\n }\n\n public getTransactionByHash(txHash: BigNumberish) {\n const transaction_hash = toHex(txHash);\n return this.fetchEndpoint('starknet_getTransactionByHash', {\n transaction_hash,\n });\n }\n\n public getTransactionByBlockIdAndIndex(blockIdentifier: BlockIdentifier, index: number) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getTransactionByBlockIdAndIndex', { block_id, index });\n }\n\n public getTransactionReceipt(txHash: BigNumberish) {\n const transaction_hash = toHex(txHash);\n return this.fetchEndpoint('starknet_getTransactionReceipt', { transaction_hash });\n }\n\n public getTransactionTrace(txHash: BigNumberish) {\n const transaction_hash = toHex(txHash);\n return this.fetchEndpoint('starknet_traceTransaction', { transaction_hash });\n }\n\n /**\n * Get the status of a transaction\n */\n public getTransactionStatus(transactionHash: BigNumberish) {\n const transaction_hash = toHex(transactionHash);\n return this.fetchEndpoint('starknet_getTransactionStatus', { transaction_hash });\n }\n\n /**\n * @param invocations AccountInvocations\n * @param simulateTransactionOptions blockIdentifier and flags to skip validation and fee charge
\n * - blockIdentifier
\n * - skipValidate (default false)
\n * - skipFeeCharge (default true)
\n */\n public simulateTransaction(\n invocations: AccountInvocations,\n simulateTransactionOptions: getSimulateTransactionOptions = {}\n ) {\n const {\n blockIdentifier = this.blockIdentifier,\n skipValidate = true,\n skipFeeCharge = true,\n } = simulateTransactionOptions;\n const block_id = new Block(blockIdentifier).identifier;\n const simulationFlags: RPC.ESimulationFlag[] = [];\n if (skipValidate) simulationFlags.push(RPC.ESimulationFlag.SKIP_VALIDATE);\n if (skipFeeCharge) simulationFlags.push(RPC.ESimulationFlag.SKIP_FEE_CHARGE);\n\n return this.fetchEndpoint('starknet_simulateTransactions', {\n block_id,\n transactions: invocations.map((it) => this.buildTransaction(it)),\n simulation_flags: simulationFlags,\n });\n }\n\n public async waitForTransaction(txHash: BigNumberish, options?: waitForTransactionOptions) {\n const transactionHash = toHex(txHash);\n let { retries } = this;\n let onchain = false;\n let isErrorState = false;\n const retryInterval = options?.retryInterval ?? 5000;\n const errorStates: any = options?.errorStates ?? [\n RPC.ETransactionStatus.REJECTED,\n // TODO: commented out to preserve the long-standing behavior of \"reverted\" not being treated as an error by default\n // should decide which behavior to keep in the future\n // RPC.ETransactionExecutionStatus.REVERTED,\n ];\n const successStates: any = options?.successStates ?? [\n RPC.ETransactionExecutionStatus.SUCCEEDED,\n RPC.ETransactionStatus.ACCEPTED_ON_L2,\n RPC.ETransactionStatus.ACCEPTED_ON_L1,\n ];\n\n let txStatus: RPC.TransactionStatus;\n while (!onchain) {\n // eslint-disable-next-line no-await-in-loop\n await wait(retryInterval);\n try {\n // eslint-disable-next-line no-await-in-loop\n txStatus = await this.getTransactionStatus(transactionHash);\n\n const executionStatus = txStatus.execution_status;\n const finalityStatus = txStatus.finality_status;\n\n if (!finalityStatus) {\n // Transaction is potentially NOT_RECEIVED or RPC not Synced yet\n // so we will retry '{ retries }' times\n const error = new Error('waiting for transaction status');\n throw error;\n }\n\n if (errorStates.includes(executionStatus) || errorStates.includes(finalityStatus)) {\n const message = `${executionStatus}: ${finalityStatus}`;\n const error = new Error(message) as Error & { response: RPC.TransactionStatus };\n error.response = txStatus;\n isErrorState = true;\n throw error;\n } else if (\n successStates.includes(executionStatus) ||\n successStates.includes(finalityStatus)\n ) {\n onchain = true;\n }\n } catch (error) {\n if (error instanceof Error && isErrorState) {\n throw error;\n }\n\n if (retries <= 0) {\n throw new Error(`waitForTransaction timed-out with retries ${this.retries}`);\n }\n }\n\n retries -= 1;\n }\n\n /**\n * For some nodes even though the transaction has executionStatus SUCCEEDED finalityStatus ACCEPTED_ON_L2, getTransactionReceipt returns \"Transaction hash not found\"\n * Retry until rpc is actually ready to work with txHash\n */\n let txReceipt = null;\n while (txReceipt === null) {\n try {\n // eslint-disable-next-line no-await-in-loop\n txReceipt = await this.getTransactionReceipt(transactionHash);\n } catch (error) {\n if (retries <= 0) {\n throw new Error(`waitForTransaction timed-out with retries ${this.retries}`);\n }\n }\n retries -= 1;\n // eslint-disable-next-line no-await-in-loop\n await wait(retryInterval);\n }\n return txReceipt as RPC.SPEC.TXN_RECEIPT;\n }\n\n public getStorageAt(\n contractAddress: BigNumberish,\n key: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const contract_address = toHex(contractAddress);\n const parsedKey = toStorageKey(key);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getStorageAt', {\n contract_address,\n key: parsedKey,\n block_id,\n });\n }\n\n public getClassHashAt(\n contractAddress: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const contract_address = toHex(contractAddress);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getClassHashAt', {\n block_id,\n contract_address,\n });\n }\n\n public getClass(\n classHash: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const class_hash = toHex(classHash);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getClass', {\n class_hash,\n block_id,\n });\n }\n\n public getClassAt(\n contractAddress: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const contract_address = toHex(contractAddress);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getClassAt', {\n block_id,\n contract_address,\n });\n }\n\n public async getEstimateFee(\n invocations: AccountInvocations,\n { blockIdentifier = this.blockIdentifier, skipValidate = true }: getEstimateFeeBulkOptions\n ) {\n const block_id = new Block(blockIdentifier).identifier;\n let flags = {};\n if (!isVersion('0.5', await this.getSpecVersion())) {\n flags = {\n simulation_flags: skipValidate ? [RPC.ESimulationFlag.SKIP_VALIDATE] : [],\n };\n } // else v(0.5) no flags\n\n return this.fetchEndpoint('starknet_estimateFee', {\n request: invocations.map((it) => this.buildTransaction(it, 'fee')),\n block_id,\n ...flags,\n });\n }\n\n public async invoke(functionInvocation: Invocation, details: InvocationsDetailsWithNonce) {\n let promise;\n if (!isV3Tx(details)) {\n // V1\n promise = this.fetchEndpoint('starknet_addInvokeTransaction', {\n invoke_transaction: {\n sender_address: functionInvocation.contractAddress,\n calldata: CallData.toHex(functionInvocation.calldata),\n type: RPC.ETransactionType.INVOKE,\n max_fee: toHex(details.maxFee || 0),\n version: RPC.ETransactionVersion.V1,\n signature: signatureToHexArray(functionInvocation.signature),\n nonce: toHex(details.nonce),\n },\n });\n } else {\n // V3\n promise = this.fetchEndpoint('starknet_addInvokeTransaction', {\n invoke_transaction: {\n type: RPC.ETransactionType.INVOKE,\n sender_address: functionInvocation.contractAddress,\n calldata: CallData.toHex(functionInvocation.calldata),\n version: RPC.ETransactionVersion.V3,\n signature: signatureToHexArray(functionInvocation.signature),\n nonce: toHex(details.nonce),\n resource_bounds: details.resourceBounds,\n tip: toHex(details.tip),\n paymaster_data: details.paymasterData.map((it) => toHex(it)),\n account_deployment_data: details.accountDeploymentData.map((it) => toHex(it)),\n nonce_data_availability_mode: details.nonceDataAvailabilityMode,\n fee_data_availability_mode: details.feeDataAvailabilityMode,\n },\n });\n }\n\n return this.waitMode ? this.waitForTransaction((await promise).transaction_hash) : promise;\n }\n\n public async declare(\n { contract, signature, senderAddress, compiledClassHash }: DeclareContractTransaction,\n details: InvocationsDetailsWithNonce\n ) {\n let promise;\n if (!isSierra(contract) && !isV3Tx(details)) {\n // V1 Cairo 0\n promise = this.fetchEndpoint('starknet_addDeclareTransaction', {\n declare_transaction: {\n type: RPC.ETransactionType.DECLARE,\n contract_class: {\n program: contract.program,\n entry_points_by_type: contract.entry_points_by_type,\n abi: contract.abi,\n },\n version: RPC.ETransactionVersion.V1,\n max_fee: toHex(details.maxFee || 0),\n signature: signatureToHexArray(signature),\n sender_address: senderAddress,\n nonce: toHex(details.nonce),\n },\n });\n } else if (isSierra(contract) && !isV3Tx(details)) {\n // V2 Cairo1\n promise = this.fetchEndpoint('starknet_addDeclareTransaction', {\n declare_transaction: {\n type: RPC.ETransactionType.DECLARE,\n contract_class: {\n sierra_program: decompressProgram(contract.sierra_program),\n contract_class_version: contract.contract_class_version,\n entry_points_by_type: contract.entry_points_by_type,\n abi: contract.abi,\n },\n compiled_class_hash: compiledClassHash || '',\n version: RPC.ETransactionVersion.V2,\n max_fee: toHex(details.maxFee || 0),\n signature: signatureToHexArray(signature),\n sender_address: senderAddress,\n nonce: toHex(details.nonce),\n },\n });\n } else if (isSierra(contract) && isV3Tx(details)) {\n // V3 Cairo1\n promise = this.fetchEndpoint('starknet_addDeclareTransaction', {\n declare_transaction: {\n type: RPC.ETransactionType.DECLARE,\n sender_address: senderAddress,\n compiled_class_hash: compiledClassHash || '',\n version: RPC.ETransactionVersion.V3,\n signature: signatureToHexArray(signature),\n nonce: toHex(details.nonce),\n contract_class: {\n sierra_program: decompressProgram(contract.sierra_program),\n contract_class_version: contract.contract_class_version,\n entry_points_by_type: contract.entry_points_by_type,\n abi: contract.abi,\n },\n resource_bounds: details.resourceBounds,\n tip: toHex(details.tip),\n paymaster_data: details.paymasterData.map((it) => toHex(it)),\n account_deployment_data: details.accountDeploymentData.map((it) => toHex(it)),\n nonce_data_availability_mode: details.nonceDataAvailabilityMode,\n fee_data_availability_mode: details.feeDataAvailabilityMode,\n },\n });\n } else {\n throw Error('declare unspotted parameters');\n }\n\n return this.waitMode ? this.waitForTransaction((await promise).transaction_hash) : promise;\n }\n\n public async deployAccount(\n { classHash, constructorCalldata, addressSalt, signature }: DeployAccountContractTransaction,\n details: InvocationsDetailsWithNonce\n ) {\n let promise;\n if (!isV3Tx(details)) {\n // v1\n promise = this.fetchEndpoint('starknet_addDeployAccountTransaction', {\n deploy_account_transaction: {\n constructor_calldata: CallData.toHex(constructorCalldata || []),\n class_hash: toHex(classHash),\n contract_address_salt: toHex(addressSalt || 0),\n type: RPC.ETransactionType.DEPLOY_ACCOUNT,\n max_fee: toHex(details.maxFee || 0),\n version: RPC.ETransactionVersion.V1,\n signature: signatureToHexArray(signature),\n nonce: toHex(details.nonce),\n },\n });\n } else {\n // v3\n promise = this.fetchEndpoint('starknet_addDeployAccountTransaction', {\n deploy_account_transaction: {\n type: RPC.ETransactionType.DEPLOY_ACCOUNT,\n version: RPC.ETransactionVersion.V3,\n signature: signatureToHexArray(signature),\n nonce: toHex(details.nonce),\n contract_address_salt: toHex(addressSalt || 0),\n constructor_calldata: CallData.toHex(constructorCalldata || []),\n class_hash: toHex(classHash),\n resource_bounds: details.resourceBounds,\n tip: toHex(details.tip),\n paymaster_data: details.paymasterData.map((it) => toHex(it)),\n nonce_data_availability_mode: details.nonceDataAvailabilityMode,\n fee_data_availability_mode: details.feeDataAvailabilityMode,\n },\n });\n }\n\n return this.waitMode ? this.waitForTransaction((await promise).transaction_hash) : promise;\n }\n\n public callContract(call: Call, blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_call', {\n request: {\n contract_address: call.contractAddress,\n entry_point_selector: getSelectorFromName(call.entrypoint),\n calldata: CallData.toHex(call.calldata),\n },\n block_id,\n });\n }\n\n /**\n * NEW: Estimate the fee for a message from L1\n * @param message Message From L1\n */\n public estimateMessageFee(\n message: RPC.L1Message,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const { from_address, to_address, entry_point_selector, payload } = message;\n const formattedMessage = {\n from_address: validateAndParseEthAddress(from_address),\n to_address: toHex(to_address),\n entry_point_selector: getSelector(entry_point_selector),\n payload: getHexStringArray(payload),\n };\n\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_estimateMessageFee', {\n message: formattedMessage,\n block_id,\n });\n }\n\n /**\n * Returns an object about the sync status, or false if the node is not synching\n * @returns Object with the stats data\n */\n public getSyncingStats() {\n return this.fetchEndpoint('starknet_syncing');\n }\n\n /**\n * Returns all events matching the given filter\n * @returns events and the pagination of the events\n */\n public getEvents(eventFilter: RPC.EventFilter) {\n return this.fetchEndpoint('starknet_getEvents', { filter: eventFilter });\n }\n\n public buildTransaction(\n invocation: AccountInvocationItem,\n versionType?: 'fee' | 'transaction'\n ): RPC.BaseTransaction {\n const defaultVersions = getVersionsByType(versionType);\n let details;\n\n if (!isV3Tx(invocation)) {\n // V0,V1,V2\n details = {\n signature: signatureToHexArray(invocation.signature),\n nonce: toHex(invocation.nonce),\n max_fee: toHex(invocation.maxFee || 0),\n };\n } else {\n // V3\n details = {\n signature: signatureToHexArray(invocation.signature),\n nonce: toHex(invocation.nonce),\n resource_bounds: invocation.resourceBounds,\n tip: toHex(invocation.tip),\n paymaster_data: invocation.paymasterData.map((it) => toHex(it)),\n nonce_data_availability_mode: invocation.nonceDataAvailabilityMode,\n fee_data_availability_mode: invocation.feeDataAvailabilityMode,\n account_deployment_data: invocation.accountDeploymentData.map((it) => toHex(it)),\n };\n }\n\n if (invocation.type === TransactionType.INVOKE) {\n return {\n // v0 v1 v3\n type: RPC.ETransactionType.INVOKE,\n sender_address: invocation.contractAddress,\n calldata: CallData.toHex(invocation.calldata),\n version: toHex(invocation.version || defaultVersions.v3),\n ...details,\n } as RPC.SPEC.BROADCASTED_INVOKE_TXN;\n }\n if (invocation.type === TransactionType.DECLARE) {\n if (!isSierra(invocation.contract)) {\n // Cairo 0 - v1\n return {\n type: invocation.type,\n contract_class: invocation.contract,\n sender_address: invocation.senderAddress,\n version: toHex(invocation.version || defaultVersions.v1),\n ...details,\n } as RPC.SPEC.BROADCASTED_DECLARE_TXN_V1;\n }\n return {\n // Cairo 1 - v2 v3\n type: invocation.type,\n contract_class: {\n ...invocation.contract,\n sierra_program: decompressProgram(invocation.contract.sierra_program),\n },\n compiled_class_hash: invocation.compiledClassHash || '',\n sender_address: invocation.senderAddress,\n version: toHex(invocation.version || defaultVersions.v3),\n ...details,\n } as RPC.SPEC.BROADCASTED_DECLARE_TXN;\n }\n if (invocation.type === TransactionType.DEPLOY_ACCOUNT) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { account_deployment_data, ...restDetails } = details;\n // v1 v3\n return {\n type: invocation.type,\n constructor_calldata: CallData.toHex(invocation.constructorCalldata || []),\n class_hash: toHex(invocation.classHash),\n contract_address_salt: toHex(invocation.addressSalt || 0),\n version: toHex(invocation.version || defaultVersions.v3) as RPC.SPEC.INVOKE_TXN['version'],\n ...restDetails,\n } as RPC.SPEC.BROADCASTED_DEPLOY_ACCOUNT_TXN;\n }\n throw Error('RPC buildTransaction received unknown TransactionType');\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nexport function fixStack(target: Error, fn: Function = target.constructor) {\n const { captureStackTrace } = Error as any;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n captureStackTrace && captureStackTrace(target, fn);\n}\n\nexport function fixProto(target: Error, prototype: {}) {\n const { setPrototypeOf } = Object as any;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions, no-proto, no-param-reassign\n setPrototypeOf ? setPrototypeOf(target, prototype) : ((target as any).__proto__ = prototype);\n}\n\n/* eslint-disable max-classes-per-file */\nexport class CustomError extends Error {\n name!: string;\n\n constructor(message?: string) {\n super(message);\n // set error name as constructor name, make it not enumerable to keep native Error behavior\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target#new.target_in_constructors\n // see https://github.com/adriengibrat/ts-custom-error/issues/30\n Object.defineProperty(this, 'name', {\n value: new.target.name,\n enumerable: false,\n configurable: true,\n });\n // fix the extended error prototype chain\n // because typescript __extends implementation can't\n // see https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n fixProto(this, new.target.prototype);\n // try to remove constructor from stack trace\n fixStack(this);\n }\n}\n\nexport class LibraryError extends CustomError {}\n\nexport class GatewayError extends LibraryError {\n constructor(\n message: string,\n public errorCode: string\n ) {\n super(message);\n }\n}\n\nexport class HttpError extends LibraryError {\n constructor(\n message: string,\n public errorCode: number\n ) {\n super(message);\n }\n}\n","export * from './account';\nexport * from './calldata';\nexport * from './contract';\nexport * from './lib';\nexport * from './provider';\nexport * from './signer';\nexport * from './typedData';\nexport * from './cairoEnum';\nexport * from './transactionReceipt';\n\nexport * as RPC from './api';\n","export enum ValidateType {\n DEPLOY = 'DEPLOY',\n CALL = 'CALL',\n INVOKE = 'INVOKE',\n}\n\nexport enum Uint {\n u8 = 'core::integer::u8',\n u16 = 'core::integer::u16',\n u32 = 'core::integer::u32',\n u64 = 'core::integer::u64',\n u128 = 'core::integer::u128',\n u256 = 'core::integer::u256', // This one is struct\n u512 = 'core::integer::u512', // This one is struct\n}\n\nexport enum Literal {\n ClassHash = 'core::starknet::class_hash::ClassHash',\n ContractAddress = 'core::starknet::contract_address::ContractAddress',\n Secp256k1Point = 'core::starknet::secp256k1::Secp256k1Point',\n}\n","import { LegacyCompiledContract, LegacyContractClass } from './legacy';\nimport { CompiledSierra, SierraContractClass } from './sierra';\n\n// Final types\n/**\n * format produced after compressing compiled contract\n *\n * CompressedCompiledContract\n */\nexport type ContractClass = LegacyContractClass | SierraContractClass;\n\n/**\n * format produced after compile .cairo to .json\n */\nexport type CompiledContract = LegacyCompiledContract | CompiledSierra;\n\n/**\n * Compressed or decompressed Cairo0 or Cairo1 Contract\n */\nexport type CairoContract = ContractClass | CompiledContract;\n\n// Basic elements\nexport enum EntryPointType {\n EXTERNAL = 'EXTERNAL',\n L1_HANDLER = 'L1_HANDLER',\n CONSTRUCTOR = 'CONSTRUCTOR',\n}\n\nexport * from './abi';\nexport * from './legacy';\nexport * from './sierra';\n","import { StarknetChainId } from '../../constants';\nimport { weierstrass } from '../../utils/ec';\nimport { EDataAvailabilityMode, ResourceBounds } from '../api';\nimport { CairoEnum } from '../cairoEnum';\nimport { CompiledContract, CompiledSierraCasm, ContractClass } from './contract';\n\nexport type WeierstrassSignatureType = weierstrass.SignatureType;\nexport type ArraySignatureType = string[];\nexport type Signature = ArraySignatureType | WeierstrassSignatureType;\n\nexport type BigNumberish = string | number | bigint;\n\nexport type ByteArray = {\n data: BigNumberish[];\n pending_word: BigNumberish;\n pending_word_len: BigNumberish;\n};\n\n/**\n * Compiled calldata ready to be sent\n *\n * decimal-string array\n */\nexport type Calldata = string[] & { readonly __compiled__?: true };\n\n/**\n * Represents an integer in the range [0, 2^256)\n */\nexport interface Uint256 {\n // The low 128 bits of the value\n low: BigNumberish;\n // The high 128 bits of the value\n high: BigNumberish;\n}\n\n/**\n * Represents an integer in the range [0, 2^256)\n */\nexport interface Uint512 {\n // The lowest 128 bits of the value\n limb0: BigNumberish;\n limb1: BigNumberish;\n limb2: BigNumberish;\n // The higher 128 bits of the value\n limb3: BigNumberish;\n}\n\n/**\n * BigNumberish array\n *\n * use CallData.compile() to convert to Calldata\n */\nexport type RawCalldata = BigNumberish[];\n\n/**\n * Hexadecimal-string array\n */\nexport type HexCalldata = string[];\n\nexport type AllowArray = T | T[];\n\nexport type OptionalPayload = { payload: T } | T;\n\nexport type RawArgs = RawArgsObject | RawArgsArray;\n\nexport type RawArgsObject = {\n [inputName: string]: MultiType | MultiType[] | RawArgs;\n};\n\nexport type RawArgsArray = Array;\n\nexport type MultiType = BigNumberish | Uint256 | object | boolean | CairoEnum;\n\nexport type UniversalDeployerContractPayload = {\n classHash: BigNumberish;\n salt?: string;\n unique?: boolean;\n constructorCalldata?: RawArgs;\n};\n\nexport type DeployAccountContractPayload = {\n classHash: string;\n constructorCalldata?: RawArgs;\n addressSalt?: BigNumberish;\n contractAddress?: string;\n};\n\nexport type DeployAccountContractTransaction = Omit<\n DeployAccountContractPayload,\n 'contractAddress'\n> & {\n signature?: Signature;\n};\n\nexport type DeclareContractPayload = {\n contract: CompiledContract | string;\n classHash?: string;\n casm?: CompiledSierraCasm;\n compiledClassHash?: string;\n};\n\nexport type CompleteDeclareContractPayload = {\n contract: CompiledContract | string;\n classHash: string;\n casm?: CompiledSierraCasm;\n compiledClassHash?: string;\n};\n\nexport type DeclareAndDeployContractPayload = Omit &\n DeclareContractPayload;\n\nexport type DeclareContractTransaction = {\n contract: ContractClass;\n senderAddress: string;\n signature?: Signature;\n compiledClassHash?: string;\n};\n\nexport type CallDetails = {\n contractAddress: string;\n calldata?: RawArgs | Calldata;\n entrypoint?: string;\n};\n\nexport type Invocation = CallDetails & { signature?: Signature };\n\nexport type Call = CallDetails & { entrypoint: string };\n\nexport type CairoVersion = '0' | '1' | undefined;\nexport type CompilerVersion = '0' | '1' | '2' | undefined;\n\nexport type InvocationsDetails = {\n nonce?: BigNumberish;\n maxFee?: BigNumberish;\n version?: BigNumberish;\n} & Partial;\n\nexport type V3TransactionDetails = {\n nonce: BigNumberish;\n version: BigNumberish;\n resourceBounds: ResourceBounds;\n tip: BigNumberish;\n paymasterData: BigNumberish[];\n accountDeploymentData: BigNumberish[];\n nonceDataAvailabilityMode: EDataAvailabilityMode;\n feeDataAvailabilityMode: EDataAvailabilityMode;\n};\n\n/**\n * Contain all additional details params\n */\nexport type Details = {\n nonce: BigNumberish;\n maxFee: BigNumberish;\n version: BigNumberish;\n chainId: StarknetChainId;\n};\n\nexport type InvocationsDetailsWithNonce =\n | (InvocationsDetails & { nonce: BigNumberish })\n | V3TransactionDetails;\n\nexport enum TransactionType {\n DECLARE = 'DECLARE',\n DEPLOY = 'DEPLOY',\n DEPLOY_ACCOUNT = 'DEPLOY_ACCOUNT',\n INVOKE = 'INVOKE_FUNCTION',\n}\n\n/**\n * new statuses are defined by props: finality_status and execution_status\n * to be #deprecated\n */\nexport enum TransactionStatus {\n NOT_RECEIVED = 'NOT_RECEIVED',\n RECEIVED = 'RECEIVED',\n ACCEPTED_ON_L2 = 'ACCEPTED_ON_L2',\n ACCEPTED_ON_L1 = 'ACCEPTED_ON_L1',\n REJECTED = 'REJECTED',\n REVERTED = 'REVERTED',\n}\n\nexport enum TransactionFinalityStatus {\n NOT_RECEIVED = 'NOT_RECEIVED',\n RECEIVED = 'RECEIVED',\n ACCEPTED_ON_L2 = 'ACCEPTED_ON_L2',\n ACCEPTED_ON_L1 = 'ACCEPTED_ON_L1',\n}\n\nexport enum TransactionExecutionStatus {\n REJECTED = 'REJECTED',\n REVERTED = 'REVERTED',\n SUCCEEDED = 'SUCCEEDED',\n}\n\nexport enum BlockStatus {\n PENDING = 'PENDING',\n ACCEPTED_ON_L1 = 'ACCEPTED_ON_L1',\n ACCEPTED_ON_L2 = 'ACCEPTED_ON_L2',\n REJECTED = 'REJECTED',\n}\n\nexport enum BlockTag {\n PENDING = 'pending',\n LATEST = 'latest',\n}\n\nexport type BlockNumber = BlockTag | null | number;\n\n/**\n * hex string and BigInt are detected as block hashes\n *\n * decimal string and number are detected as block numbers\n *\n * text string are detected as block tag\n *\n * null return 'pending' block tag\n */\nexport type BlockIdentifier = BlockNumber | BigNumberish;\n\n/**\n * items used by AccountInvocations\n */\nexport type AccountInvocationItem = (\n | ({ type: typeof TransactionType.DECLARE } & DeclareContractTransaction)\n | ({ type: typeof TransactionType.DEPLOY_ACCOUNT } & DeployAccountContractTransaction)\n | ({ type: typeof TransactionType.INVOKE } & Invocation)\n) &\n InvocationsDetailsWithNonce;\n\n/**\n * Complete invocations array with account details (internal type from account -> provider)\n */\nexport type AccountInvocations = AccountInvocationItem[];\n\n/**\n * Invocations array user provide to bulk method (simulate)\n */\nexport type Invocations = Array<\n | ({ type: typeof TransactionType.DECLARE } & OptionalPayload)\n | ({ type: typeof TransactionType.DEPLOY } & OptionalPayload<\n AllowArray\n >)\n | ({\n type: typeof TransactionType.DEPLOY_ACCOUNT;\n } & OptionalPayload)\n | ({ type: typeof TransactionType.INVOKE } & OptionalPayload>)\n>;\n\nexport type Tupled = { element: any; type: string };\n\nexport type Args = {\n [inputName: string]: BigNumberish | BigNumberish[] | ParsedStruct | ParsedStruct[];\n};\nexport type ParsedStruct = {\n [key: string]: BigNumberish | BigNumberish[] | ParsedStruct | Uint256;\n};\n\nexport type waitForTransactionOptions = {\n retryInterval?: number;\n successStates?: Array;\n errorStates?: Array;\n};\n\nexport type getSimulateTransactionOptions = {\n blockIdentifier?: BlockIdentifier;\n skipValidate?: boolean;\n skipExecute?: boolean;\n skipFeeCharge?: boolean;\n};\n\nexport type getContractVersionOptions = {\n blockIdentifier?: BlockIdentifier;\n compiler?: boolean;\n};\n\nexport type getEstimateFeeBulkOptions = {\n blockIdentifier?: BlockIdentifier;\n skipValidate?: boolean;\n};\n\nexport interface CallStruct {\n to: string;\n selector: string;\n calldata: string[];\n}\n\n/**\n * Represent Contract version\n */\nexport type ContractVersion = {\n /** version of the cairo language */\n cairo: CairoVersion;\n /** version of the cairo compiler used to compile the contract */\n compiler: CompilerVersion;\n};\n\nexport * from './contract';\n","// Reexport types from package\nexport {\n TypedDataRevision,\n type StarknetEnumType,\n type StarknetMerkleType,\n type StarknetType,\n type StarknetDomain,\n type TypedData,\n} from 'starknet-types-07';\n","/**\n * Asserts that the given condition is true, otherwise throws an error with an optional message.\n * @param {any} condition - The condition to check.\n * @param {string} [message] - The optional message to include in the error.\n * @throws {Error} Throws an error if the condition is false.\n * @example\n * ```typescript\n * const address = '0xa7ee790591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf';\n * assert(/^(0x)?[0-9a-fA-F]{64}$/.test(address), 'Invalid address format');\n * ```\n */\nexport default function assert(condition: boolean, message?: string): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failure');\n }\n}\n","import { hexToBytes as hexToBytesNoble } from '@noble/curves/abstract/utils';\n\nimport { BigNumberish } from '../types';\nimport assert from './assert';\nimport { addHexPrefix, removeHexPrefix } from './encode';\n\n/** @deprecated prefer importing from 'types' over 'num' */\nexport type { BigNumberish };\n\n/**\n * Test if string is hex-string\n *\n * @param hex hex-string\n * @returns {boolean} true if the input string is a hexadecimal string, false otherwise\n * @example\n * ```typescript\n * const hexString1 = \"0x2fd23d9182193775423497fc0c472e156c57c69e4089a1967fb288a2d84e914\";\n * const result1 = isHex(hexString1);\n * // result1 = true\n *\n * const hexString2 = \"2fd23d9182193775423497fc0c472e156c57c69e4089a1967fb288a2d84e914\";\n * const result2 = isHex(hexString2);\n * // result2 = false\n * ```\n */\nexport function isHex(hex: string): boolean {\n return /^0x[0-9a-f]*$/i.test(hex);\n}\n\n/**\n * Convert BigNumberish to bigint\n *\n * @param {BigNumberish} value value to convert\n * @returns {BigInt} converted value\n * @example\n * ```typescript\n * const str = '123';\n * const result = toBigInt(str);\n * // result = 123n\n * ```\n */\nexport function toBigInt(value: BigNumberish): bigint {\n return BigInt(value);\n}\n\n/**\n * Test if value is bigint\n *\n * @param value value to test\n * @returns {boolean} true if value is bigint, false otherwise\n * @example\n * ```typescript\n * isBigInt(10n); // true\n * isBigInt(BigInt('10')); // true\n * isBigInt(10); // false\n * isBigInt('10'); // false\n * isBigInt(null); // false\n * ```\n */\nexport function isBigInt(value: any): value is bigint {\n return typeof value === 'bigint';\n}\n\n/**\n * Convert BigNumberish to hex-string\n *\n * @param {BigNumberish} value value to convert\n * @returns {string} converted number in hex-string format\n * @example\n * ```typescript\n * toHex(100); // '0x64'\n * toHex('200'); // '0xc8'\n * ```\n */\nexport function toHex(value: BigNumberish): string {\n return addHexPrefix(toBigInt(value).toString(16));\n}\n\n/**\n * Alias of ToHex\n */\nexport const toHexString = toHex;\n\n/**\n * Convert BigNumberish to storage-key-string\n *\n * Same as toHex but conforming to the STORAGE_KEY pattern `^0x0[0-7]{1}[a-fA-F0-9]{0,62}$`.\n *\n * A storage key is represented as up to 62 hex digits, 3 bits, and 5 leading zeroes:\n * `0x0 + [0-7] + 62 hex = 0x + 64 hex`\n * @returns format: storage-key-string\n */\nexport function toStorageKey(number: BigNumberish): string {\n return addHexPrefix(toBigInt(number).toString(16).padStart(64, '0'));\n}\n\n/**\n * Convert hexadecimal string to decimal string\n *\n * @param {string} hex hex-string to convert\n * @returns {string} converted number in decimal string format\n * @example\n * ```typescript\n * hexToDecimalString('64'); // '100'\n * hexToDecimalString('c8'); // '200'\n * ```\n */\nexport function hexToDecimalString(hex: string): string {\n return BigInt(addHexPrefix(hex)).toString(10);\n}\n\n/**\n * Remove hex-string leading zeroes and lowercase it\n *\n * @param {string} hex hex-string\n * @returns {string} updated string in hex-string format\n * @example\n * ```typescript\n * cleanHex('0x00023AB'); // '0x23ab'\n * ```\n */\nexport function cleanHex(hex: string): string {\n return hex.toLowerCase().replace(/^(0x)0+/, '$1');\n}\n\n/**\n * Asserts input is equal to or greater then lowerBound and lower then upperBound.\n *\n * The `inputName` parameter is used in the assertion message.\n * @param input Value to check\n * @param lowerBound Lower bound value\n * @param upperBound Upper bound value\n * @param inputName Name of the input for error message\n * @throws Error if input is out of range\n * @example\n * ```typescript\n * const input1:BigNumberish = 10;\n * assertInRange(input1, 5, 20, 'value')\n *\n * const input2: BigNumberish = 25;\n * assertInRange(input2, 5, 20, 'value');\n * // throws Error: Message not signable, invalid value length.\n * ```\n */\nexport function assertInRange(\n input: BigNumberish,\n lowerBound: BigNumberish,\n upperBound: BigNumberish,\n inputName = ''\n) {\n const messageSuffix = inputName === '' ? 'invalid length' : `invalid ${inputName} length`;\n const inputBigInt = BigInt(input);\n const lowerBoundBigInt = BigInt(lowerBound);\n const upperBoundBigInt = BigInt(upperBound);\n\n assert(\n inputBigInt >= lowerBoundBigInt && inputBigInt <= upperBoundBigInt,\n `Message not signable, ${messageSuffix}.`\n );\n}\n\n/**\n * Convert BigNumberish array to decimal string array\n *\n * @param {BigNumberish[]} data array of big-numberish elements\n * @returns {string[]} array of decimal strings\n * @example\n * ```typescript\n * const data = [100, 200n];\n * const result = bigNumberishArrayToDecimalStringArray(data);\n * // result = ['100', '200']\n * ```\n */\nexport function bigNumberishArrayToDecimalStringArray(data: BigNumberish[]): string[] {\n return data.map((x) => toBigInt(x).toString(10));\n}\n\n/**\n * Convert BigNumberish array to hexadecimal string array\n *\n * @param {BigNumberish[]} data array of big-numberish elements\n * @returns array of hex-strings\n * @example\n * ```typescript\n * const data = [100, 200n];\n * const result = bigNumberishArrayToHexadecimalStringArray(data);\n * // result = ['0x64', '0xc8']\n * ```\n */\nexport function bigNumberishArrayToHexadecimalStringArray(data: BigNumberish[]): string[] {\n return data.map((x) => toHex(x));\n}\n\n/**\n * Test if string is a whole number (0, 1, 2, 3...)\n *\n * @param {string} str string to test\n * @returns {boolean}: true if string is a whole number, false otherwise\n * @example\n * ```typescript\n * isStringWholeNumber('100'); // true\n * isStringWholeNumber('10.0'); // false\n * isStringWholeNumber('test'); // false\n * ```\n */\nexport function isStringWholeNumber(str: string): boolean {\n return /^\\d+$/.test(str);\n}\n\n/**\n * Convert string to decimal string\n *\n * @param {string} str string to convert\n * @returns converted string in decimal format\n * @throws str needs to be a number string in hex or whole number format\n * @example\n * ```typescript\n * const result = getDecimalString(\"0x1a\");\n * // result = \"26\"\n *\n * const result2 = getDecimalString(\"Hello\");\n * // throws Error: \"Hello needs to be a hex-string or whole-number-string\"\n * ```\n */\nexport function getDecimalString(str: string) {\n if (isHex(str)) {\n return hexToDecimalString(str);\n }\n if (isStringWholeNumber(str)) {\n return str;\n }\n throw new Error(`${str} needs to be a hex-string or whole-number-string`);\n}\n\n/**\n * Convert string to hexadecimal string\n *\n * @param {string} str string to convert\n * @returns converted hex-string\n * @throws str needs to be a number string in hex or whole number format\n * @example\n * ```typescript\n * const result = getHexString(\"123\");\n * // result = \"0x7b\"\n *\n * const result2 = getHexString(\"Hello\");\n * // throws Error: Hello needs to be a hex-string or whole-number-string\n * ```\n */\nexport function getHexString(str: string) {\n if (isHex(str)) {\n return str;\n }\n if (isStringWholeNumber(str)) {\n return toHexString(str);\n }\n throw new Error(`${str} needs to be a hex-string or whole-number-string`);\n}\n\n/**\n * Convert string array to hex-string array\n *\n * @param {Array} array array of string elements\n * @returns array of converted elements in hex-string format\n * @example\n * ```typescript\n * const data = ['100', '200', '0xaa'];\n * const result = getHexStringArray(data);\n * // result = ['0x64', '0xc8', '0xaa']\n * ```\n */\nexport function getHexStringArray(array: Array) {\n return array.map(getHexString);\n}\n\n/**\n * Convert boolean to \"0\" or \"1\"\n *\n * @param value The boolean value to be converted.\n * @returns {boolean} Returns true if the value is a number, otherwise returns false.\n * @example\n * ```typescript\n * const result = toCairoBool(true);\n * // result =\"1\"\n *\n * const result2 = toCairoBool(false);\n * // result2 = \"0\"\n * ```\n */\nexport function toCairoBool(value: boolean): string {\n return (+value).toString();\n}\n\n/**\n * Convert hex-string to an array of Bytes (Uint8Array)\n *\n * @param {string} str hex-string\n * @returns {Uint8Array} array containing the converted elements\n * @throws str must be a hex-string\n * @example\n * ```typescript\n * let result;\n *\n * result = hexToBytes('0x64');\n * // result = [100]\n *\n * result = hexToBytes('test');\n * // throws Error: test needs to be a hex-string\n * ```\n */\nexport function hexToBytes(str: string): Uint8Array {\n if (!isHex(str)) throw new Error(`${str} needs to be a hex-string`);\n\n let adaptedValue: string = removeHexPrefix(str);\n if (adaptedValue.length % 2 !== 0) {\n adaptedValue = `0${adaptedValue}`;\n }\n return hexToBytesNoble(adaptedValue);\n}\n\n/**\n * Adds a percentage amount to the value\n *\n * @param number value to be modified\n * @param percent integer as percent ex. 50 for 50%\n * @returns {BigInt} modified value\n * @example\n * ```typescript\n * addPercent(100, 50); // 150n\n * addPercent(100, 100); // 200n\n * addPercent(200, 50); // 300n\n * addPercent(200, -50); // 100n\n * addPercent(200, -100); // 0n\n * addPercent(200, -150); // -100n\n * ```\n */\nexport function addPercent(number: BigNumberish, percent: number) {\n const bigIntNum = BigInt(number);\n return bigIntNum + (bigIntNum * BigInt(percent)) / 100n;\n}\n\n/**\n * Check if a value is a number.\n *\n * @param {unknown} value - The value to check.\n * @returns {boolean} Returns true if the value is a number, otherwise returns false.\n * @example\n * ```typescript\n * const result = isNumber(123);\n * // result = true\n *\n * const result2 = isNumber(\"123\");\n * // result2 = false\n * ```\n * @return {boolean} Returns true if the value is a number, otherwise returns false.\n */\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n\n/**\n * Checks if a given value is of boolean type.\n *\n * @param {unknown} value - The value to check.\n * @returns {boolean} - True if the value is of boolean type, false otherwise.\n * @example\n * ```typescript\n * const result = isBoolean(true);\n * // result = true\n *\n * const result2 = isBoolean(false);\n * // result2 = false\n * ```\n * @return {boolean} - True if the value is of boolean type, false otherwise.\n */\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n","import { keccak } from '@scure/starknet';\n\nimport { MASK_250 } from '../../constants';\nimport { BigNumberish } from '../../types';\nimport { addHexPrefix, removeHexPrefix, utf8ToArray } from '../encode';\nimport { hexToBytes, isHex, isStringWholeNumber, toHex, toHexString } from '../num';\n\n/**\n * Calculate the hex-string Keccak hash for a given BigNumberish\n *\n * @param value value to hash\n * @returns hex-string Keccak hash\n * @example\n * ```typescript\n * const result = keccakBn('0xabc');\n * // result = '0x11cf08aac85935e32397f410e48217a127b6855d41b1e3877eb4179c0904b77'\n * ```\n */\nexport function keccakBn(value: BigNumberish): string {\n const hexWithoutPrefix = removeHexPrefix(toHex(BigInt(value)));\n const evenHex = hexWithoutPrefix.length % 2 === 0 ? hexWithoutPrefix : `0${hexWithoutPrefix}`;\n return addHexPrefix(keccak(hexToBytes(addHexPrefix(evenHex))).toString(16));\n}\n\n/**\n * [internal]\n * Calculate hex-string Keccak hash for a given string\n *\n * String -> hex-string Keccak hash\n * @returns format: hex-string\n */\nfunction keccakHex(str: string): string {\n return addHexPrefix(keccak(utf8ToArray(str)).toString(16));\n}\n\n/**\n * Calculate the BigInt Starknet Keccak hash for a given string\n * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L38)\n *\n * @param str value to hash\n * @returns BigInt Keccak hash\n * @example\n * ```typescript\n * const result = starknetKeccak('test').toString();\n * // result = '61835310290161785288773114225739080147441215596947647498723774891619563096'\n * ```\n */\nexport function starknetKeccak(str: string): bigint {\n const hash = BigInt(keccakHex(str));\n // eslint-disable-next-line no-bitwise\n return hash & MASK_250;\n}\n\n/**\n * Calculate the hex-string selector for a given abi function name\n * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L46)\n *\n * @param funcName abi function name\n * @returns hex-string selector\n * @example\n * ```typescript\n * const result = getSelectorFromName('myFunction');\n * // result = '0xc14cfe23f3fa7ce7b1f8db7d7682305b1692293f71a61cc06637f0d8d8b6c8'\n * ```\n */\nexport function getSelectorFromName(funcName: string) {\n // sometimes BigInteger pads the hex string with zeros, which is not allowed in the starknet api\n return toHex(starknetKeccak(funcName));\n}\n\n/**\n * Calculate the hex-string selector from a given abi function name, decimal string or hex string\n *\n * @param value hex-string | dec-string | ascii-string\n * @returns hex-string selector\n * @example\n * ```typescript\n * const selector1: string = getSelector(\"myFunction\");\n * // selector1 = \"0xc14cfe23f3fa7ce7b1f8db7d7682305b1692293f71a61cc06637f0d8d8b6c8\"\n *\n * const selector2: string = getSelector(\"0x123abc\");\n * // selector2 = \"0x123abc\"\n *\n * const selector3: string = getSelector(\"123456\");\n * // selector3 = \"0x1e240\"\n * ```\n */\nexport function getSelector(value: string) {\n if (isHex(value)) {\n return value;\n }\n if (isStringWholeNumber(value)) {\n return toHexString(value);\n }\n return getSelectorFromName(value);\n}\n","import { TEXT_TO_FELT_MAX_LEN } from '../constants';\nimport { addHexPrefix, removeHexPrefix } from './encode';\nimport { isHex, isStringWholeNumber } from './num';\n\n/**\n * Test if string contains only ASCII characters (string can be ascii text)\n * @param {string} str The string to test\n * @returns {boolean} Returns true if the string contains only ASCII characters, otherwise false\n * @example\n * ```typescript\n * const result = shortString.isASCII(\"Hello, world!\");\n * // result = true\n * const result = shortString.isASCII(\"Hello, 世界!\");\n * // result = false\n * ```\n */\nexport function isASCII(str: string): boolean {\n // eslint-disable-next-line no-control-regex\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\n/**\n * Test if a string is a Cairo short string (string with less or equal 31 characters)\n * @param {string} str the string to test\n * @returns {boolean} Returns true if the string has less than or equal to 31 characters, otherwise false.\n * @example\n * ```typescript\n * const result = shortString.isShortString(\"Hello, world!\");\n * // result = true\n * ```\n */\nexport function isShortString(str: string): boolean {\n return str.length <= TEXT_TO_FELT_MAX_LEN;\n}\n\n/**\n * Test if string contains only numbers (string can be converted to decimal integer number)\n * @param {string} str the string to test.\n * @returns {boolean} Returns true if the string contains only numbers, otherwise false.\n * @example\n * ```typescript\n * const result = shortString.isDecimalString(\"12345\");\n * // result = true\n * const result = shortString.isDecimalString(\"12a45\");\n * // result = false\n * ```\n */\nexport function isDecimalString(str: string): boolean {\n return /^[0-9]*$/i.test(str);\n}\n\n/**\n * Checks if a given value is a string.\n * @param {unknown} value the value to be checked.\n * @return {boolean} returns true if the value is a string, false otherwise.\n * @example\n * ```typescript\n * const result = shortString.isString(\"12345\");\n * // result = true\n * ```\n */\nexport function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\n/**\n * Test if value is a pure string text, and not a hex string or number string\n * @param {any} val the value to test\n * @returns {boolean} returns true if the value is a free-form string text, otherwise false\n * @example\n * ```typescript\n * const result = shortString.isText(\"Hello, world!\");\n * // result = true\n * const result = shortString.isText(\"0x7aec92f706\");\n * // result = false\n * ```\n */\nexport function isText(val: any) {\n return isString(val) && !isHex(val) && !isStringWholeNumber(val);\n}\n\n/**\n * Test if value is short text\n * @param {any} val - The item to test\n * @returns {boolean} Returns true if the value is a short text (string has less or equal 31 characters), otherwise false\n * @example\n * ```typescript\n * const result = shortString.isShortText(\"Hello, world!\");\n * // result = true\n * ```\n */\nexport const isShortText = (val: any) => isText(val) && isShortString(val);\n\n/**\n * Test if value is long text\n * @param {any} val the value to test\n * @returns {boolean} returns true if the value is a long text(string has more than 31 characters), otherwise false.\n * @example\n * ```typescript\n * const result = shortString.isLongText(\"Hello, world! this is some random long string to enable you test isLongText function.\");\n * // result = true\n * ```\n */\nexport const isLongText = (val: any) => isText(val) && !isShortString(val);\n\n/**\n * Split long text (string greater than 31 characters) into short strings (string lesser or equal 31 characters)\n * @param {string} longStr the long text (string greater than 31 characters) to split\n * @returns {string[]} an array of short strings (string lesser or equal 31 characters).\n * @example\n * ```typescript\n * const result = shortString.splitLongString(\"Hello, world! we just testing splitLongString function.\");\n * // result = [ 'Hello, world! we just testing s', 'plitLongString function.' ]\n * ```\n */\nexport function splitLongString(longStr: string): string[] {\n const regex = RegExp(`[^]{1,${TEXT_TO_FELT_MAX_LEN}}`, 'g');\n return longStr.match(regex) || [];\n}\n\n/**\n * Convert an ASCII short string to a hexadecimal string.\n * @param {string} str short string (ASCII string, 31 characters max)\n * @returns {string} hex-string with 248 bits max\n * @example\n * ```typescript\n * const result = shortString.encodeShortString(\"uri/pict/t38.jpg\");\n * // result = \"0x7572692f706963742f7433382e6a7067\"\n * ```\n */\nexport function encodeShortString(str: string): string {\n if (!isASCII(str)) throw new Error(`${str} is not an ASCII string`);\n if (!isShortString(str)) throw new Error(`${str} is too long`);\n return addHexPrefix(str.replace(/./g, (char) => char.charCodeAt(0).toString(16)));\n}\n\n/**\n * Convert a hexadecimal or decimal string to an ASCII string.\n * @param {string} str representing a 248 bit max number (ex. \"0x1A4F64EA56\" or \"236942575435676423\")\n * @returns {string} short string; 31 characters max\n * @example\n * ```typescript\n * const result = shortString.decodeShortString(\"0x7572692f706963742f7433382e6a7067\");\n * // result = \"uri/pict/t38.jpg\"\n * ```\n */\nexport function decodeShortString(str: string): string {\n if (!isASCII(str)) throw new Error(`${str} is not an ASCII string`);\n if (isHex(str)) {\n return removeHexPrefix(str).replace(/.{2}/g, (hex) => String.fromCharCode(parseInt(hex, 16)));\n }\n if (isDecimalString(str)) {\n return decodeShortString('0X'.concat(BigInt(str).toString(16)));\n }\n throw new Error(`${str} is not Hex or decimal`);\n}\n","import { BigNumberish, ByteArray } from '../../types/lib';\nimport { toHex } from '../num';\nimport { decodeShortString, encodeShortString, splitLongString } from '../shortString';\n\n/**\n * convert a Cairo ByteArray to a JS string\n * @param myByteArray Cairo representation of a LongString\n * @returns a JS string\n * @example\n * ```typescript\n * const myByteArray = {\n * data: [],\n * pending_word: '0x414243444546474849',\n * pending_word_len: 9\n * }\n * const result: String = stringFromByteArray(myByteArray); // ABCDEFGHI\n * ```\n */\nexport function stringFromByteArray(myByteArray: ByteArray): string {\n const pending_word: string =\n BigInt(myByteArray.pending_word) === 0n\n ? ''\n : decodeShortString(toHex(myByteArray.pending_word));\n return (\n myByteArray.data.reduce((cumuledString, encodedString: BigNumberish) => {\n const add: string =\n BigInt(encodedString) === 0n ? '' : decodeShortString(toHex(encodedString));\n return cumuledString + add;\n }, '') + pending_word\n );\n}\n\n/**\n * convert a JS string to a Cairo ByteArray\n * @param targetString a JS string\n * @returns Cairo representation of a LongString\n * @example\n * ```typescript\n * const myByteArray: ByteArray = byteArrayFromString(\"ABCDEFGHI\");\n * ```\n * Result is :\n * {\n * data: [],\n * pending_word: '0x414243444546474849',\n * pending_word_len: 9\n * }\n */\nexport function byteArrayFromString(targetString: string): ByteArray {\n const shortStrings: string[] = splitLongString(targetString);\n const remainder: string = shortStrings[shortStrings.length - 1];\n const shortStringsEncoded: BigNumberish[] = shortStrings.map(encodeShortString);\n\n const [pendingWord, pendingWordLength] =\n remainder === undefined || remainder.length === 31\n ? ['0x00', 0]\n : [shortStringsEncoded.pop()!, remainder.length];\n\n return {\n data: shortStringsEncoded.length === 0 ? [] : shortStringsEncoded,\n pending_word: pendingWord,\n pending_word_len: pendingWordLength,\n };\n}\n","import {\n Abi,\n AbiEnums,\n AbiStructs,\n BigNumberish,\n ContractVersion,\n Literal,\n Uint,\n Uint256,\n Uint512,\n} from '../../types';\nimport { CairoFelt } from '../cairoDataTypes/felt';\nimport { CairoUint256 } from '../cairoDataTypes/uint256';\nimport { CairoUint512 } from '../cairoDataTypes/uint512';\n\n// Intended for internal usage, maybe should be exported somewhere else and not exported to utils\n/**\n * Checks if the given name ends with \"_len\".\n *\n * @param {string} name - The name to be checked.\n * @returns - True if the name ends with \"_len\", false otherwise.\n */\nexport const isLen = (name: string) => /_len$/.test(name);\n/**\n * Checks if a given type is felt.\n *\n * @param {string} type - The type to check.\n * @returns - True if the type is felt, false otherwise.\n */\nexport const isTypeFelt = (type: string) => type === 'felt' || type === 'core::felt252';\n/**\n * Checks if the given type is an array type.\n *\n * @param {string} type - The type to check.\n * @returns - `true` if the type is an array type, `false` otherwise.\n */\nexport const isTypeArray = (type: string) =>\n /\\*/.test(type) ||\n type.startsWith('core::array::Array::') ||\n type.startsWith('core::array::Span::');\n/**\n * Checks if the given type is a tuple type.\n *\n * @param {string} type - The type to be checked.\n * @returns - `true` if the type is a tuple type, otherwise `false`.\n */\nexport const isTypeTuple = (type: string) => /^\\(.*\\)$/i.test(type);\n/**\n * Checks whether a given type is a named tuple.\n *\n * @param {string} type - The type to be checked.\n * @returns - True if the type is a named tuple, false otherwise.\n */\nexport const isTypeNamedTuple = (type: string) => /\\(.*\\)/i.test(type) && type.includes(':');\n/**\n * Checks if a given type is a struct.\n *\n * @param {string} type - The type to check for existence.\n * @param {AbiStructs} structs - The collection of structs to search in.\n * @returns - True if the type exists in the structs, false otherwise.\n */\nexport const isTypeStruct = (type: string, structs: AbiStructs) => type in structs;\n/**\n * Checks if a given type is an enum.\n *\n * @param {string} type - The type to check.\n * @param {AbiEnums} enums - The enumeration to search in.\n * @returns - True if the type exists in the enumeration, otherwise false.\n */\nexport const isTypeEnum = (type: string, enums: AbiEnums) => type in enums;\n/**\n * Determines if the given type is an Option type.\n *\n * @param {string} type - The type to check.\n * @returns - True if the type is an Option type, false otherwise.\n */\nexport const isTypeOption = (type: string) => type.startsWith('core::option::Option::');\n/**\n * Checks whether a given type starts with 'core::result::Result::'.\n *\n * @param {string} type - The type to check.\n * @returns - True if the type starts with 'core::result::Result::', false otherwise.\n */\nexport const isTypeResult = (type: string) => type.startsWith('core::result::Result::');\n/**\n * Checks if the given value is a valid Uint type.\n *\n * @param {string} type - The value to check.\n * @returns - Returns true if the value is a valid Uint type, otherwise false.\n */\nexport const isTypeUint = (type: string) => Object.values(Uint).includes(type as Uint);\n// Legacy Export\n/**\n * Checks if the given type is `uint256`.\n *\n * @param {string} type - The type to be checked.\n * @returns - Returns true if the type is `uint256`, otherwise false.\n */\nexport const isTypeUint256 = (type: string) => CairoUint256.isAbiType(type);\n/**\n * Checks if the given type is a literal type.\n *\n * @param {string} type - The type to check.\n * @returns - True if the type is a literal type, false otherwise.\n */\nexport const isTypeLiteral = (type: string) => Object.values(Literal).includes(type as Literal);\n/**\n * Checks if the given type is a boolean type.\n *\n * @param {string} type - The type to be checked.\n * @returns - Returns true if the type is a boolean type, otherwise false.\n */\nexport const isTypeBool = (type: string) => type === 'core::bool';\n/**\n * Checks if the provided type is equal to 'core::starknet::contract_address::ContractAddress'.\n * @param {string} type - The type to be checked.\n * @returns - true if the type matches 'core::starknet::contract_address::ContractAddress', false otherwise.\n */\nexport const isTypeContractAddress = (type: string) =>\n type === 'core::starknet::contract_address::ContractAddress';\n/**\n * Determines if the given type is an Ethereum address type.\n *\n * @param {string} type - The type to check.\n * @returns - Returns true if the given type is 'core::starknet::eth_address::EthAddress', otherwise false.\n */\nexport const isTypeEthAddress = (type: string) =>\n type === 'core::starknet::eth_address::EthAddress';\n/**\n * Checks if the given type is 'core::bytes_31::bytes31'.\n *\n * @param {string} type - The type to check.\n * @returns - True if the type is 'core::bytes_31::bytes31', false otherwise.\n */\nexport const isTypeBytes31 = (type: string) => type === 'core::bytes_31::bytes31';\n/**\n * Checks if the given type is equal to the 'core::byte_array::ByteArray'.\n *\n * @param {string} type - The type to check.\n * @returns - True if the given type is equal to 'core::byte_array::ByteArray', false otherwise.\n */\nexport const isTypeByteArray = (type: string) => type === 'core::byte_array::ByteArray';\nexport const isTypeSecp256k1Point = (type: string) =>\n type === 'core::starknet::secp256k1::Secp256k1Point';\nexport const isCairo1Type = (type: string) => type.includes('::');\n/**\n * Retrieves the array type from the given type string.\n *\n * Works also for core::zeroable::NonZero type.\n * @param {string} type - The type string.\n * @returns - The array type.\n */\nexport const getArrayType = (type: string) => {\n if (isCairo1Type(type)) {\n return type.substring(type.indexOf('<') + 1, type.lastIndexOf('>'));\n }\n return type.replace('*', '');\n};\n\n/**\n * Test if an ABI comes from a Cairo 1 contract\n * @param abi representing the interface of a Cairo contract\n * @returns TRUE if it is an ABI from a Cairo1 contract\n * @example\n * ```typescript\n * const isCairo1: boolean = isCairo1Abi(myAbi: Abi);\n * ```\n */\nexport function isCairo1Abi(abi: Abi): boolean {\n const { cairo } = getAbiContractVersion(abi);\n if (cairo === undefined) {\n throw Error('Unable to determine Cairo version');\n }\n return cairo === '1';\n}\n\n/**\n * Checks if the given type is a NonZero type.\n *\n * @param {string} type The type to check.\n * @returns `true` if the type is NonZero type, `false` otherwise.\n * @example\n * ```typescript\n * const result = cairo.isTypeNonZero(\"core::zeroable::NonZero::\");\n * //result = true\n * ```\n */\nexport function isTypeNonZero(type: string): boolean {\n return type.startsWith('core::zeroable::NonZero::');\n}\n\n/**\n * Return ContractVersion (Abi version) based on Abi\n * or undefined for unknown version\n * @param abi\n * @returns string\n */\nexport function getAbiContractVersion(abi: Abi): ContractVersion {\n // determine by interface for \"Cairo 1.2\"\n if (abi.find((it) => it.type === 'interface')) {\n return { cairo: '1', compiler: '2' };\n }\n\n // determine by function io types \"Cairo 1.1\" or \"Cairo 0.0\"\n // find first function with inputs or outputs\n const testFunction = abi.find(\n (it) => it.type === 'function' && (it.inputs.length || it.outputs.length)\n );\n if (!testFunction) {\n return { cairo: undefined, compiler: undefined };\n }\n const io = testFunction.inputs.length ? testFunction.inputs : testFunction.outputs;\n if (isCairo1Type(io[0].type)) {\n return { cairo: '1', compiler: '1' };\n }\n return { cairo: '0', compiler: '0' };\n}\n\n/**\n * named tuple cairo type is described as js object {}\n * struct cairo type are described as js object {}\n * array cairo type are described as js array []\n */\n\n/**\n * Create Uint256 Cairo type (helper for common struct type)\n * @example\n * ```typescript\n * uint256('892349863487563453485768723498');\n * ```\n */\nexport const uint256 = (it: BigNumberish): Uint256 => {\n return new CairoUint256(it).toUint256DecimalString();\n};\n\n/**\n * Create Uint512 Cairo type (helper for common struct type)\n * @param it BigNumberish representation of a 512 bits unsigned number\n * @returns Uint512 struct\n * @example\n * ```typescript\n * uint512('345745685892349863487563453485768723498');\n * ```\n */\nexport const uint512 = (it: BigNumberish): Uint512 => {\n return new CairoUint512(it).toUint512DecimalString();\n};\n\n/**\n * Create unnamed tuple Cairo type (helper same as common struct type)\n * @example\n * ```typescript\n * tuple(1, '0x101', 16);\n * ```\n */\nexport const tuple = (\n ...args: (BigNumberish | object | boolean)[]\n): Record => ({ ...args });\n\n/**\n * Create felt Cairo type (cairo type helper)\n * @returns format: felt-string\n */\nexport function felt(it: BigNumberish): string {\n return CairoFelt(it);\n}\n","// TODO Convert to CairoFelt base on CairoUint256 and implement it in the codebase in the backward compatible manner\n\nimport { BigNumberish, isBigInt, isBoolean, isHex, isStringWholeNumber } from '../num';\nimport { encodeShortString, isShortString, isString, isText } from '../shortString';\n\n/**\n * Create felt Cairo type (cairo type helper)\n * @returns format: felt-string\n */\nexport function CairoFelt(it: BigNumberish): string {\n // BN or number\n if (isBigInt(it) || Number.isInteger(it)) {\n return it.toString();\n }\n\n // Handling strings\n if (isString(it)) {\n // Hex strings\n if (isHex(it)) {\n return BigInt(it).toString();\n }\n // Text strings that must be short\n if (isText(it)) {\n if (!isShortString(it)) {\n throw new Error(\n `${it} is a long string > 31 chars. Please split it into an array of short strings.`\n );\n }\n // Assuming encodeShortString returns a hex representation of the string\n return BigInt(encodeShortString(it)).toString();\n }\n // Whole numeric strings\n if (isStringWholeNumber(it)) {\n return it;\n }\n }\n // bool to felt\n if (isBoolean(it)) {\n return `${+it}`;\n }\n\n throw new Error(`${it} can't be computed by felt()`);\n}\n","/* eslint-disable no-bitwise */\n/**\n * Singular class handling cairo u256 data type\n */\n\nimport { BigNumberish, Uint256 } from '../../types';\nimport { addHexPrefix } from '../encode';\nimport { CairoFelt } from './felt';\n\nexport const UINT_128_MAX = (1n << 128n) - 1n;\nexport const UINT_256_MAX = (1n << 256n) - 1n;\nexport const UINT_256_MIN = 0n;\nexport const UINT_256_LOW_MAX = 340282366920938463463374607431768211455n;\nexport const UINT_256_HIGH_MAX = 340282366920938463463374607431768211455n;\nexport const UINT_256_LOW_MIN = 0n;\nexport const UINT_256_HIGH_MIN = 0n;\n\nexport class CairoUint256 {\n public low: bigint;\n\n public high: bigint;\n\n static abiSelector = 'core::integer::u256';\n\n /**\n * Default constructor (Lib usage)\n * @param bigNumberish BigNumberish value representing uin256\n */\n public constructor(bigNumberish: BigNumberish);\n /**\n * Direct props initialization (Api response)\n */\n public constructor(low: BigNumberish, high: BigNumberish);\n /**\n * Initialization from Uint256 object\n */\n public constructor(uint256: Uint256);\n\n public constructor(...arr: any[]) {\n if (typeof arr[0] === 'object' && arr.length === 1 && 'low' in arr[0] && 'high' in arr[0]) {\n const props = CairoUint256.validateProps(arr[0].low, arr[0].high);\n this.low = props.low;\n this.high = props.high;\n } else if (arr.length === 1) {\n const bigInt = CairoUint256.validate(arr[0]);\n this.low = bigInt & UINT_128_MAX;\n this.high = bigInt >> 128n;\n } else if (arr.length === 2) {\n const props = CairoUint256.validateProps(arr[0], arr[1]);\n this.low = props.low;\n this.high = props.high;\n } else {\n throw Error('Incorrect constructor parameters');\n }\n }\n\n /**\n * Validate if BigNumberish can be represented as Unit256\n */\n static validate(bigNumberish: BigNumberish) {\n const bigInt = BigInt(bigNumberish);\n if (bigInt < UINT_256_MIN) throw Error('bigNumberish is smaller than UINT_256_MIN');\n if (bigInt > UINT_256_MAX) throw new Error('bigNumberish is bigger than UINT_256_MAX');\n return bigInt;\n }\n\n /**\n * Validate if low and high can be represented as Unit256\n */\n static validateProps(low: BigNumberish, high: BigNumberish) {\n const bigIntLow = BigInt(low);\n const bigIntHigh = BigInt(high);\n if (bigIntLow < UINT_256_LOW_MIN || bigIntLow > UINT_256_LOW_MAX) {\n throw new Error('low is out of range UINT_256_LOW_MIN - UINT_256_LOW_MAX');\n }\n if (bigIntHigh < UINT_256_HIGH_MIN || bigIntHigh > UINT_256_HIGH_MAX) {\n throw new Error('high is out of range UINT_256_HIGH_MIN - UINT_256_HIGH_MAX');\n }\n return { low: bigIntLow, high: bigIntHigh };\n }\n\n /**\n * Check if BigNumberish can be represented as Unit256\n */\n static is(bigNumberish: BigNumberish) {\n try {\n CairoUint256.validate(bigNumberish);\n } catch (error) {\n return false;\n }\n return true;\n }\n\n /**\n * Check if provided abi type is this data type\n */\n static isAbiType(abiType: string) {\n return abiType === CairoUint256.abiSelector;\n }\n\n /**\n * Return bigint representation\n */\n toBigInt() {\n return (this.high << 128n) + this.low;\n }\n\n /**\n * Return Uint256 structure with HexString props\n * {low: HexString, high: HexString}\n */\n toUint256HexString() {\n return {\n low: addHexPrefix(this.low.toString(16)),\n high: addHexPrefix(this.high.toString(16)),\n };\n }\n\n /**\n * Return Uint256 structure with DecimalString props\n * {low: DecString, high: DecString}\n */\n toUint256DecimalString() {\n return {\n low: this.low.toString(10),\n high: this.high.toString(10),\n };\n }\n\n /**\n * Return api requests representation witch is felt array\n */\n toApiRequest() {\n return [CairoFelt(this.low), CairoFelt(this.high)];\n }\n}\n","/* eslint-disable no-bitwise */\n/**\n * Singular class handling cairo u512 data type\n */\n\nimport { BigNumberish, type Uint512 } from '../../types';\nimport { addHexPrefix } from '../encode';\nimport { CairoFelt } from './felt';\nimport { UINT_128_MAX } from './uint256';\n\nexport const UINT_512_MAX = (1n << 512n) - 1n;\nexport const UINT_512_MIN = 0n;\nexport const UINT_128_MIN = 0n;\n\nexport class CairoUint512 {\n public limb0: bigint;\n\n public limb1: bigint;\n\n public limb2: bigint;\n\n public limb3: bigint;\n\n static abiSelector = 'core::integer::u512';\n\n /**\n * Default constructor (Lib usage)\n * @param bigNumberish BigNumberish value representing u512\n */\n public constructor(bigNumberish: BigNumberish);\n /**\n * Direct props initialization (Api response)\n */\n public constructor(\n limb0: BigNumberish,\n limb1: BigNumberish,\n limb2: BigNumberish,\n limb3: BigNumberish\n );\n /**\n * Initialization from Uint512 object\n */\n public constructor(uint512: Uint512);\n\n public constructor(...arr: any[]) {\n if (\n typeof arr[0] === 'object' &&\n arr.length === 1 &&\n 'limb0' in arr[0] &&\n 'limb1' in arr[0] &&\n 'limb2' in arr[0] &&\n 'limb3' in arr[0]\n ) {\n const props = CairoUint512.validateProps(\n arr[0].limb0,\n arr[0].limb1,\n arr[0].limb2,\n arr[0].limb3\n );\n this.limb0 = props.limb0;\n this.limb1 = props.limb1;\n this.limb2 = props.limb2;\n this.limb3 = props.limb3;\n } else if (arr.length === 1) {\n const bigInt = CairoUint512.validate(arr[0]);\n this.limb0 = bigInt & UINT_128_MAX;\n this.limb1 = (bigInt & (UINT_128_MAX << 128n)) >> 128n;\n this.limb2 = (bigInt & (UINT_128_MAX << 256n)) >> 256n;\n this.limb3 = bigInt >> 384n;\n } else if (arr.length === 4) {\n const props = CairoUint512.validateProps(arr[0], arr[1], arr[2], arr[3]);\n this.limb0 = props.limb0;\n this.limb1 = props.limb1;\n this.limb2 = props.limb2;\n this.limb3 = props.limb3;\n } else {\n throw Error('Incorrect Uint512 constructor parameters');\n }\n }\n\n /**\n * Validate if BigNumberish can be represented as Uint512\n */\n static validate(bigNumberish: BigNumberish): bigint {\n const bigInt = BigInt(bigNumberish);\n if (bigInt < UINT_512_MIN) throw Error('bigNumberish is smaller than UINT_512_MIN.');\n if (bigInt > UINT_512_MAX) throw Error('bigNumberish is bigger than UINT_512_MAX.');\n return bigInt;\n }\n\n /**\n * Validate if limbs can be represented as Uint512\n */\n static validateProps(\n limb0: BigNumberish,\n limb1: BigNumberish,\n limb2: BigNumberish,\n limb3: BigNumberish\n ): { limb0: bigint; limb1: bigint; limb2: bigint; limb3: bigint } {\n const l0 = BigInt(limb0);\n const l1 = BigInt(limb1);\n const l2 = BigInt(limb2);\n const l3 = BigInt(limb3);\n [l0, l1, l2, l3].forEach((value: bigint, index) => {\n if (value < UINT_128_MIN || value > UINT_128_MAX) {\n throw Error(`limb${index} is not in the range of a u128 number`);\n }\n });\n return { limb0: l0, limb1: l1, limb2: l2, limb3: l3 };\n }\n\n /**\n * Check if BigNumberish can be represented as Uint512\n */\n static is(bigNumberish: BigNumberish): boolean {\n try {\n CairoUint512.validate(bigNumberish);\n } catch (error) {\n return false;\n }\n return true;\n }\n\n /**\n * Check if provided abi type is this data type\n */\n static isAbiType(abiType: string): boolean {\n return abiType === CairoUint512.abiSelector;\n }\n\n /**\n * Return bigint representation\n */\n toBigInt(): bigint {\n return (this.limb3 << 384n) + (this.limb2 << 256n) + (this.limb1 << 128n) + this.limb0;\n }\n\n /**\n * Return Uint512 structure with HexString props\n * limbx: HexString\n */\n toUint512HexString() {\n return {\n limb0: addHexPrefix(this.limb0.toString(16)),\n limb1: addHexPrefix(this.limb1.toString(16)),\n limb2: addHexPrefix(this.limb2.toString(16)),\n limb3: addHexPrefix(this.limb3.toString(16)),\n };\n }\n\n /**\n * Return Uint512 structure with DecimalString props\n * limbx DecString\n */\n toUint512DecimalString() {\n return {\n limb0: this.limb0.toString(10),\n limb1: this.limb1.toString(10),\n limb2: this.limb2.toString(10),\n limb3: this.limb3.toString(10),\n };\n }\n\n /**\n * Return api requests representation witch is felt array\n */\n toApiRequest(): string[] {\n // lower limb first : https://github.com/starkware-libs/cairo/blob/07484c52791b76abcc18fd86265756904557d0d2/corelib/src/test/integer_test.cairo#L767\n return [\n CairoFelt(this.limb0),\n CairoFelt(this.limb1),\n CairoFelt(this.limb2),\n CairoFelt(this.limb3),\n ];\n }\n}\n","export type CairoEnumRaw = {\n [key: string]: any;\n};\n\n/**\n * Class to handle Cairo custom Enum\n * @param enumContent object containing the variants and its content. Example :\n * {Success: 234, Warning: undefined, Error: undefined}.\n * Only one variant with a value, object, array.\n * @returns an instance representing a Cairo custom Enum.\n * @example\n * ```typescript\n * const myCairoEnum = new CairoCustomEnum( {Success: undefined, Warning: \"0x7f32ea\", Error: undefined})\n * ```\n */\nexport class CairoCustomEnum {\n /**\n * direct readonly access to variants of the Cairo Custom Enum.\n * @returns a value of type any\n * @example\n * ```typescript\n * const successValue = myCairoEnum.variant.Success;\n */\n readonly variant: CairoEnumRaw;\n\n /**\n * @param enumContent an object with the variants as keys and the content as value. Only one content shall be defined.\n */\n constructor(enumContent: CairoEnumRaw) {\n const variantsList = Object.values(enumContent);\n if (variantsList.length === 0) {\n throw new Error('This Enum must have at least 1 variant');\n }\n const nbActiveVariants = variantsList.filter(\n (content) => typeof content !== 'undefined'\n ).length;\n if (nbActiveVariants !== 1) {\n throw new Error('This Enum must have exactly one active variant');\n }\n this.variant = enumContent;\n }\n\n /**\n *\n * @returns the content of the valid variant of a Cairo custom Enum.\n */\n public unwrap(): any {\n const variants = Object.entries(this.variant);\n const activeVariant = variants.find((item) => typeof item[1] !== 'undefined');\n if (typeof activeVariant === 'undefined') {\n return undefined;\n }\n return activeVariant[1];\n }\n\n /**\n *\n * @returns the name of the valid variant of a Cairo custom Enum.\n */\n public activeVariant(): string {\n const variants = Object.entries(this.variant);\n const activeVariant = variants.find((item) => typeof item[1] !== 'undefined');\n if (typeof activeVariant === 'undefined') {\n return '';\n }\n return activeVariant[0];\n }\n}\n","export enum CairoOptionVariant {\n Some = 0,\n None = 1,\n}\n\n/**\n * Class to handle Cairo Option\n * @param variant CairoOptionVariant.Some or CairoOptionVariant.None\n * @param someContent value of type T.\n * @returns an instance representing a Cairo Option.\n * @example\n * ```typescript\n * const myOption = new CairoOption(CairoOptionVariant.Some, \"0x54dda8\");\n * ```\n */\nexport class CairoOption {\n readonly Some?: T;\n\n readonly None?: boolean;\n\n constructor(variant: CairoOptionVariant, someContent?: T) {\n if (!(variant in CairoOptionVariant)) {\n throw new Error('Wrong variant : should be CairoOptionVariant.Some or .None.');\n }\n if (variant === CairoOptionVariant.Some) {\n if (typeof someContent === 'undefined') {\n throw new Error(\n 'The creation of a Cairo Option with \"Some\" variant needs a content as input.'\n );\n }\n this.Some = someContent;\n this.None = undefined;\n } else {\n this.Some = undefined;\n this.None = true;\n }\n }\n\n /**\n *\n * @returns the content of the valid variant of a Cairo custom Enum.\n * If None, returns 'undefined'.\n */\n public unwrap(): T | undefined {\n if (this.None) {\n return undefined;\n }\n return this.Some;\n }\n\n /**\n *\n * @returns true if the valid variant is 'isSome'.\n */\n public isSome(): boolean {\n return !(typeof this.Some === 'undefined');\n }\n\n /**\n *\n * @returns true if the valid variant is 'isNone'.\n */\n public isNone(): boolean {\n return this.None === true;\n }\n}\n","export enum CairoResultVariant {\n Ok = 0,\n Err = 1,\n}\n\n/**\n * Class to handle Cairo Result\n * @param variant CairoResultVariant.Ok or CairoResultVariant.Err\n * @param resultContent value of type T or U.\n * @returns an instance representing a Cairo Result.\n * @example\n * ```typescript\n * const myOption = new CairoResult(CairoResultVariant.Ok, \"0x54dda8\");\n * ```\n */\nexport class CairoResult {\n readonly Ok?: T;\n\n readonly Err?: U;\n\n constructor(variant: CairoResultVariant, resultContent: T | U) {\n if (!(variant in CairoResultVariant)) {\n throw new Error('Wrong variant : should be CairoResultVariant.Ok or .Err.');\n }\n if (variant === CairoResultVariant.Ok) {\n this.Ok = resultContent as T;\n this.Err = undefined;\n } else {\n this.Ok = undefined;\n this.Err = resultContent as U;\n }\n }\n\n /**\n *\n * @returns the content of the valid variant of a Cairo Result.\n */\n public unwrap(): T | U {\n if (typeof this.Ok !== 'undefined') {\n return this.Ok;\n }\n if (typeof this.Err !== 'undefined') {\n return this.Err;\n }\n throw new Error('Both Result.Ok and .Err are undefined. Not authorized.');\n }\n\n /**\n *\n * @returns true if the valid variant is 'Ok'.\n */\n public isOk(): boolean {\n return !(typeof this.Ok === 'undefined');\n }\n\n /**\n *\n * @returns true if the valid variant is 'isErr'.\n */\n public isErr(): boolean {\n return !(typeof this.Err === 'undefined');\n }\n}\n","import { isBigInt } from '../num';\nimport { decodeShortString } from '../shortString';\n\nconst guard = {\n isBN: (data: Record, type: Record, key: string) => {\n if (!isBigInt(data[key]))\n throw new Error(\n `Data and formatter mismatch on ${key}:${type[key]}, expected response data ${key}:${\n data[key]\n } to be BN instead it is ${typeof data[key]}`\n );\n },\n unknown: (data: Record, type: Record, key: string) => {\n throw new Error(`Unhandled formatter type on ${key}:${type[key]} for data ${key}:${data[key]}`);\n },\n};\n\n/**\n * Formats the given data based on the provided type definition.\n *\n * @param {any} data - The data to be formatted.\n * @param {any} type - The type definition for the data.\n * @param {any} [sameType] - The same type definition to be used (optional).\n * @returns - The formatted data.\n */\nexport default function formatter(\n data: Record,\n type: Record,\n sameType?: any\n) {\n // match data element with type element\n return Object.entries(data).reduce(\n (acc, [key, value]: [any, any]) => {\n const elType = sameType ?? type[key];\n\n if (!(key in type) && !sameType) {\n // no type definition for element return original element\n acc[key] = value;\n return acc;\n }\n\n if (elType === 'string') {\n if (Array.isArray(data[key])) {\n // long string (felt*)\n const arrayStr = formatter(\n data[key],\n data[key].map((_: any) => elType)\n );\n acc[key] = Object.values(arrayStr).join('');\n return acc;\n }\n guard.isBN(data, type, key);\n acc[key] = decodeShortString(value);\n return acc;\n }\n if (elType === 'number') {\n guard.isBN(data, type, key);\n acc[key] = Number(value);\n return acc;\n }\n if (typeof elType === 'function') {\n acc[key] = elType(value);\n return acc;\n }\n if (Array.isArray(elType)) {\n const arrayObj = formatter(data[key], elType, elType[0]);\n acc[key] = Object.values(arrayObj);\n return acc;\n }\n if (typeof elType === 'object') {\n acc[key] = formatter(data[key], elType);\n return acc;\n }\n\n guard.unknown(data, type, key);\n return acc;\n },\n {} as Record\n );\n}\n","import { Abi, FunctionAbi } from '../../../types';\nimport { isLen } from '../cairo';\nimport { AbiParserInterface } from './interface';\n\nexport class AbiParser1 implements AbiParserInterface {\n abi: Abi;\n\n constructor(abi: Abi) {\n this.abi = abi;\n }\n\n /**\n * abi method inputs length without '_len' inputs\n * cairo 0 reducer\n * @param abiMethod FunctionAbi\n * @returns number\n */\n public methodInputsLength(abiMethod: FunctionAbi) {\n return abiMethod.inputs.reduce((acc, input) => (!isLen(input.name) ? acc + 1 : acc), 0);\n }\n\n /**\n * get method definition from abi\n * @param name string\n * @returns FunctionAbi | undefined\n */\n public getMethod(name: string): FunctionAbi | undefined {\n return this.abi.find((it) => it.name === name);\n }\n\n /**\n * Get Abi in legacy format\n * @returns Abi\n */\n public getLegacyFormat() {\n return this.abi;\n }\n}\n","import {\n Abi,\n FunctionAbi,\n AbiEvent,\n AbiStruct,\n InterfaceAbi,\n type LegacyEvent,\n} from '../../../types';\nimport { AbiParserInterface } from './interface';\n\nexport class AbiParser2 implements AbiParserInterface {\n abi: Abi;\n\n constructor(abi: Abi) {\n this.abi = abi;\n }\n\n /**\n * abi method inputs length\n * @param abiMethod FunctionAbi\n * @returns number\n */\n public methodInputsLength(abiMethod: FunctionAbi) {\n return abiMethod.inputs.length;\n }\n\n /**\n * get method definition from abi\n * @param name string\n * @returns FunctionAbi | undefined\n */\n public getMethod(name: string): FunctionAbi | undefined {\n const intf = this.abi.find(\n (it: FunctionAbi | AbiEvent | AbiStruct | InterfaceAbi) => it.type === 'interface'\n ) as InterfaceAbi;\n return intf.items.find((it) => it.name === name);\n }\n\n /**\n * Get Abi in legacy format\n * @returns Abi\n */\n public getLegacyFormat(): Abi {\n return this.abi.flatMap((e: FunctionAbi | LegacyEvent | AbiStruct | InterfaceAbi) => {\n if (e.type === 'interface') {\n return e.items;\n }\n return e;\n });\n }\n}\n","import { Abi, FunctionAbi, RawArgs } from '../../../types';\nimport { isCairo1Abi } from '../cairo';\nimport { AbiParserInterface } from './interface';\nimport { AbiParser1 } from './parser-0-1.1.0';\nimport { AbiParser2 } from './parser-2.0.0';\n\nexport function createAbiParser(abi: Abi): AbiParserInterface {\n const version = getAbiVersion(abi);\n if (version === 0 || version === 1) {\n return new AbiParser1(abi);\n }\n if (version === 2) {\n return new AbiParser2(abi);\n }\n throw Error(`Unsupported ABI version ${version}`);\n}\n\nexport function getAbiVersion(abi: Abi) {\n if (abi.find((it) => it.type === 'interface')) return 2;\n if (isCairo1Abi(abi)) return 1;\n return 0;\n}\n\nexport function isNoConstructorValid(\n method: string,\n argsCalldata: RawArgs,\n abiMethod?: FunctionAbi\n) {\n // No constructor in abi and validly empty args\n return method === 'constructor' && !abiMethod && !argsCalldata.length;\n}\n","/* eslint-disable no-plusplus */\nimport { isCairo1Type, isTypeNamedTuple } from './cairo';\n\nfunction parseNamedTuple(namedTuple: string): any {\n const name = namedTuple.substring(0, namedTuple.indexOf(':'));\n const type = namedTuple.substring(name.length + ':'.length);\n return { name, type };\n}\n\nfunction parseSubTuple(s: string) {\n if (!s.includes('(')) return { subTuple: [], result: s };\n const subTuple: string[] = [];\n let result = '';\n let i = 0;\n while (i < s.length) {\n if (s[i] === '(') {\n let counter = 1;\n const lBracket = i;\n i++;\n while (counter) {\n if (s[i] === ')') counter--;\n if (s[i] === '(') counter++;\n i++;\n }\n subTuple.push(s.substring(lBracket, i));\n result += ' ';\n i--;\n } else {\n result += s[i];\n }\n i++;\n }\n\n return {\n subTuple,\n result,\n };\n}\n\nfunction extractCairo0Tuple(type: string) {\n const cleanType = type.replace(/\\s/g, '').slice(1, -1); // remove first lvl () and spaces\n\n // Decompose subTuple\n const { subTuple, result } = parseSubTuple(cleanType);\n\n // Recompose subTuple\n let recomposed = result.split(',').map((it) => {\n return subTuple.length ? it.replace(' ', subTuple.shift() as string) : it;\n });\n\n // Parse named tuple\n if (isTypeNamedTuple(type)) {\n recomposed = recomposed.reduce((acc, it) => {\n return acc.concat(parseNamedTuple(it));\n }, []);\n }\n\n return recomposed;\n}\n\nfunction getClosureOffset(input: string, open: string, close: string): number {\n for (let i = 0, counter = 0; i < input.length; i++) {\n if (input[i] === open) {\n counter++;\n } else if (input[i] === close && --counter === 0) {\n return i;\n }\n }\n return Number.POSITIVE_INFINITY;\n}\n\nfunction extractCairo1Tuple(type: string): string[] {\n // un-named tuples support\n const input = type.slice(1, -1); // remove first lvl ()\n const result: string[] = [];\n\n let currentIndex: number = 0;\n let limitIndex: number;\n\n while (currentIndex < input.length) {\n switch (true) {\n // Tuple\n case input[currentIndex] === '(': {\n limitIndex = currentIndex + getClosureOffset(input.slice(currentIndex), '(', ')') + 1;\n break;\n }\n case input.startsWith('core::result::Result::<', currentIndex) ||\n input.startsWith('core::array::Array::<', currentIndex) ||\n input.startsWith('core::option::Option::<', currentIndex): {\n limitIndex = currentIndex + getClosureOffset(input.slice(currentIndex), '<', '>') + 1;\n break;\n }\n default: {\n const commaIndex = input.indexOf(',', currentIndex);\n limitIndex = commaIndex !== -1 ? commaIndex : Number.POSITIVE_INFINITY;\n }\n }\n\n result.push(input.slice(currentIndex, limitIndex));\n currentIndex = limitIndex + 2; // +2 to skip ', '\n }\n\n return result;\n}\n\n/**\n * Convert tuple string definition into object like definition\n * @param type tuple string definition\n * @returns object like tuple\n */\nexport default function extractTupleMemberTypes(type: string): (string | object)[] {\n if (isCairo1Type(type)) {\n return extractCairo1Tuple(type);\n }\n return extractCairo0Tuple(type);\n}\n","import { AbiEntry, AbiEnums, AbiStructs, CairoEnum, RawArgsObject } from '../../types';\nimport { CairoUint256 } from '../cairoDataTypes/uint256';\nimport { CairoUint512 } from '../cairoDataTypes/uint512';\nimport {\n getArrayType,\n isCairo1Type,\n isLen,\n isTypeArray,\n isTypeByteArray,\n isTypeEnum,\n isTypeEthAddress,\n isTypeNonZero,\n isTypeOption,\n isTypeResult,\n isTypeSecp256k1Point,\n isTypeStruct,\n isTypeTuple,\n} from './cairo';\nimport {\n CairoCustomEnum,\n CairoOption,\n CairoOptionVariant,\n CairoResult,\n CairoResultVariant,\n} from './enum';\nimport extractTupleMemberTypes from './tuple';\n\nimport { isString } from '../shortString';\n\nfunction errorU256(key: string) {\n return Error(\n `Your object includes the property : ${key}, containing an Uint256 object without the 'low' and 'high' keys.`\n );\n}\n\nfunction errorU512(key: string) {\n return Error(\n `Your object includes the property : ${key}, containing an Uint512 object without the 'limb0' to 'limb3' keys.`\n );\n}\n\nexport default function orderPropsByAbi(\n unorderedObject: RawArgsObject,\n abiOfObject: AbiEntry[],\n structs: AbiStructs,\n enums: AbiEnums\n): object {\n const orderInput = (unorderedItem: any, abiType: string): any => {\n if (isTypeArray(abiType)) {\n return orderArray(unorderedItem, abiType);\n }\n if (isTypeEnum(abiType, enums)) {\n const abiObj = enums[abiType];\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return orderEnum(unorderedItem, abiObj);\n }\n if (isTypeTuple(abiType)) {\n return orderTuple(unorderedItem, abiType);\n }\n if (isTypeEthAddress(abiType)) {\n return unorderedItem;\n }\n if (isTypeNonZero(abiType)) {\n return unorderedItem;\n }\n if (isTypeByteArray(abiType)) {\n return unorderedItem;\n }\n if (isTypeSecp256k1Point(abiType)) {\n return unorderedItem;\n }\n if (CairoUint256.isAbiType(abiType)) {\n const u256 = unorderedItem;\n if (typeof u256 !== 'object') {\n // BigNumberish --> just copy\n return u256;\n }\n if (!('low' in u256 && 'high' in u256)) {\n throw errorU256(abiType);\n }\n return { low: u256.low, high: u256.high };\n }\n if (CairoUint512.isAbiType(abiType)) {\n const u512 = unorderedItem;\n if (typeof u512 !== 'object') {\n // BigNumberish --> just copy\n return u512;\n }\n if (!['limb0', 'limb1', 'limb2', 'limb3'].every((key) => key in u512)) {\n throw errorU512(abiType);\n }\n return { limb0: u512.limb0, limb1: u512.limb1, limb2: u512.limb2, limb3: u512.limb3 };\n }\n if (isTypeStruct(abiType, structs)) {\n const abiOfStruct = structs[abiType].members;\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return orderStruct(unorderedItem, abiOfStruct);\n }\n // literals\n return unorderedItem;\n };\n\n const orderStruct = (unorderedObject2: RawArgsObject, abiObject: AbiEntry[]): object => {\n const orderedObject2 = abiObject.reduce((orderedObject, abiParam) => {\n const setProperty = (value?: any) =>\n Object.defineProperty(orderedObject, abiParam.name, {\n enumerable: true,\n value: value ?? unorderedObject2[abiParam.name],\n });\n\n if (unorderedObject2[abiParam.name] === 'undefined') {\n if (isCairo1Type(abiParam.type) || !isLen(abiParam.name)) {\n throw Error(`Your object needs a property with key : ${abiParam.name} .`);\n }\n }\n setProperty(orderInput(unorderedObject2[abiParam.name], abiParam.type));\n return orderedObject;\n }, {});\n return orderedObject2;\n };\n\n function orderArray(myArray: Array | string, abiParam: string): Array | string {\n const typeInArray = getArrayType(abiParam);\n if (isString(myArray)) {\n return myArray; // longstring\n }\n return myArray.map((myElem) => orderInput(myElem, typeInArray));\n }\n\n function orderTuple(unorderedObject2: RawArgsObject, abiParam: string): object {\n const typeList = extractTupleMemberTypes(abiParam);\n const orderedObject2 = typeList.reduce((orderedObject: object, abiTypeCairoX: any, index) => {\n const myObjKeys: string[] = Object.keys(unorderedObject2);\n const setProperty = (value?: any) =>\n Object.defineProperty(orderedObject, index.toString(), {\n enumerable: true,\n value: value ?? unorderedObject2[myObjKeys[index]],\n });\n const abiType: string = abiTypeCairoX?.type ? abiTypeCairoX.type : abiTypeCairoX; // Named tuple, or tuple\n setProperty(orderInput(unorderedObject2[myObjKeys[index]], abiType));\n return orderedObject;\n }, {});\n return orderedObject2;\n }\n\n const orderEnum = (unorderedObject2: CairoEnum, abiObject: AbiEntry): CairoEnum => {\n if (isTypeResult(abiObject.name)) {\n const unorderedResult = unorderedObject2 as CairoResult;\n const resultOkType: string = abiObject.name.substring(\n abiObject.name.indexOf('<') + 1,\n abiObject.name.lastIndexOf(',')\n );\n const resultErrType: string = abiObject.name.substring(\n abiObject.name.indexOf(',') + 1,\n abiObject.name.lastIndexOf('>')\n );\n if (unorderedResult.isOk()) {\n return new CairoResult(\n CairoResultVariant.Ok,\n orderInput(unorderedObject2.unwrap(), resultOkType)\n );\n }\n return new CairoResult(\n CairoResultVariant.Err,\n orderInput(unorderedObject2.unwrap(), resultErrType)\n );\n }\n if (isTypeOption(abiObject.name)) {\n const unorderedOption = unorderedObject2 as CairoOption;\n const resultSomeType: string = abiObject.name.substring(\n abiObject.name.indexOf('<') + 1,\n abiObject.name.lastIndexOf('>')\n );\n if (unorderedOption.isSome()) {\n return new CairoOption(\n CairoOptionVariant.Some,\n orderInput(unorderedOption.unwrap(), resultSomeType)\n );\n }\n // none(())\n return new CairoOption(CairoOptionVariant.None, {});\n }\n // custom Enum\n const unorderedCustomEnum = unorderedObject2 as CairoCustomEnum;\n const variants = Object.entries(unorderedCustomEnum.variant);\n const newEntries = variants.map((variant) => {\n if (typeof variant[1] === 'undefined') {\n return variant;\n }\n const variantType: string = abiObject.type.substring(\n abiObject.type.lastIndexOf('<') + 1,\n abiObject.type.lastIndexOf('>')\n );\n if (variantType === '()') {\n return variant;\n }\n return [variant[0], orderInput(unorderedCustomEnum.unwrap(), variantType)];\n });\n return new CairoCustomEnum(Object.fromEntries(newEntries));\n };\n\n // Order Call Parameters\n const finalOrderedObject = abiOfObject.reduce((orderedObject, abiParam) => {\n const setProperty = (value: any) =>\n Object.defineProperty(orderedObject, abiParam.name, {\n enumerable: true,\n value,\n });\n if (isLen(abiParam.name) && !isCairo1Type(abiParam.type)) {\n return orderedObject;\n }\n setProperty(orderInput(unorderedObject[abiParam.name], abiParam.type));\n return orderedObject;\n }, {});\n return finalOrderedObject;\n}\n","import {\n AbiEntry,\n AbiEnums,\n AbiStructs,\n AllowArray,\n BigNumberish,\n ByteArray,\n CairoEnum,\n ParsedStruct,\n Tupled,\n} from '../../types';\nimport { CairoUint256 } from '../cairoDataTypes/uint256';\nimport { CairoUint512 } from '../cairoDataTypes/uint512';\nimport { addHexPrefix, removeHexPrefix } from '../encode';\nimport { toHex } from '../num';\nimport { encodeShortString, isString, isText, splitLongString } from '../shortString';\nimport { byteArrayFromString } from './byteArray';\nimport {\n felt,\n getArrayType,\n isTypeArray,\n isTypeBytes31,\n isTypeEnum,\n isTypeNonZero,\n isTypeOption,\n isTypeResult,\n isTypeSecp256k1Point,\n isTypeStruct,\n isTypeTuple,\n uint256,\n} from './cairo';\nimport {\n CairoCustomEnum,\n CairoOption,\n CairoOptionVariant,\n CairoResult,\n CairoResultVariant,\n} from './enum';\nimport extractTupleMemberTypes from './tuple';\n\n/**\n * parse base types\n * @param type type from abi\n * @param val value provided\n * @returns string | string[]\n */\nfunction parseBaseTypes(type: string, val: BigNumberish): AllowArray {\n switch (true) {\n case CairoUint256.isAbiType(type):\n return new CairoUint256(val).toApiRequest();\n case CairoUint512.isAbiType(type):\n return new CairoUint512(val).toApiRequest();\n case isTypeBytes31(type):\n return encodeShortString(val.toString());\n case isTypeSecp256k1Point(type): {\n const pubKeyETH = removeHexPrefix(toHex(val)).padStart(128, '0');\n const pubKeyETHy = uint256(addHexPrefix(pubKeyETH.slice(-64)));\n const pubKeyETHx = uint256(addHexPrefix(pubKeyETH.slice(0, -64)));\n return [\n felt(pubKeyETHx.low),\n felt(pubKeyETHx.high),\n felt(pubKeyETHy.low),\n felt(pubKeyETHy.high),\n ];\n }\n default:\n return felt(val);\n }\n}\n\n/**\n * Parse tuple type string to array of known objects\n * @param element request element\n * @param typeStr tuple type string\n * @returns Tupled[]\n */\nfunction parseTuple(element: object, typeStr: string): Tupled[] {\n const memberTypes = extractTupleMemberTypes(typeStr);\n const elements = Object.values(element);\n\n if (elements.length !== memberTypes.length) {\n throw Error(\n `ParseTuple: provided and expected abi tuple size do not match.\n provided: ${elements} \n expected: ${memberTypes}`\n );\n }\n\n return memberTypes.map((it: any, dx: number) => {\n return {\n element: elements[dx],\n type: it.type ?? it,\n };\n });\n}\n\nfunction parseByteArray(element: string): string[] {\n const myByteArray: ByteArray = byteArrayFromString(element);\n return [\n myByteArray.data.length.toString(),\n ...myByteArray.data.map((bn) => bn.toString()),\n myByteArray.pending_word.toString(),\n myByteArray.pending_word_len.toString(),\n ];\n}\n\n/**\n * Deep parse of the object that has been passed to the method\n *\n * @param element - element that needs to be parsed\n * @param type - name of the method\n * @param structs - structs from abi\n * @param enums - enums from abi\n * @return {string | string[]} - parsed arguments in format that contract is expecting\n */\nfunction parseCalldataValue(\n element:\n | ParsedStruct\n | BigNumberish\n | BigNumberish[]\n | CairoOption\n | CairoResult\n | CairoEnum,\n type: string,\n structs: AbiStructs,\n enums: AbiEnums\n): string | string[] {\n if (element === undefined) {\n throw Error(`Missing parameter for type ${type}`);\n }\n\n // value is Array\n if (Array.isArray(element)) {\n const result: string[] = [];\n result.push(felt(element.length)); // Add length to array\n const arrayType = getArrayType(type);\n\n return element.reduce((acc, it) => {\n return acc.concat(parseCalldataValue(it, arrayType, structs, enums));\n }, result);\n }\n\n // checking if the passed element is struct\n if (structs[type] && structs[type].members.length) {\n if (CairoUint256.isAbiType(type)) {\n return new CairoUint256(element as any).toApiRequest();\n }\n if (CairoUint512.isAbiType(type)) {\n return new CairoUint512(element as any).toApiRequest();\n }\n if (type === 'core::starknet::eth_address::EthAddress')\n return parseBaseTypes(type, element as BigNumberish);\n\n if (type === 'core::byte_array::ByteArray') return parseByteArray(element as string);\n\n const { members } = structs[type];\n const subElement = element as any;\n\n return members.reduce((acc, it: AbiEntry) => {\n return acc.concat(parseCalldataValue(subElement[it.name], it.type, structs, enums));\n }, [] as string[]);\n }\n // check if abi element is tuple\n if (isTypeTuple(type)) {\n const tupled = parseTuple(element as object, type);\n\n return tupled.reduce((acc, it: Tupled) => {\n const parsedData = parseCalldataValue(it.element, it.type, structs, enums);\n return acc.concat(parsedData);\n }, [] as string[]);\n }\n // check if u256 C1v0\n if (CairoUint256.isAbiType(type)) {\n return new CairoUint256(element as any).toApiRequest();\n }\n // check if u512\n if (CairoUint512.isAbiType(type)) {\n return new CairoUint512(element as any).toApiRequest();\n }\n // check if Enum\n if (isTypeEnum(type, enums)) {\n const { variants } = enums[type];\n // Option Enum\n if (isTypeOption(type)) {\n const myOption = element as CairoOption;\n if (myOption.isSome()) {\n const listTypeVariant = variants.find((variant) => variant.name === 'Some');\n if (typeof listTypeVariant === 'undefined') {\n throw Error(`Error in abi : Option has no 'Some' variant.`);\n }\n const typeVariantSome = listTypeVariant.type;\n if (typeVariantSome === '()') {\n return CairoOptionVariant.Some.toString();\n }\n const parsedParameter = parseCalldataValue(\n myOption.unwrap(),\n typeVariantSome,\n structs,\n enums\n );\n if (Array.isArray(parsedParameter)) {\n return [CairoOptionVariant.Some.toString(), ...parsedParameter];\n }\n return [CairoOptionVariant.Some.toString(), parsedParameter];\n }\n return CairoOptionVariant.None.toString();\n }\n // Result Enum\n if (isTypeResult(type)) {\n const myResult = element as CairoResult;\n if (myResult.isOk()) {\n const listTypeVariant = variants.find((variant) => variant.name === 'Ok');\n if (typeof listTypeVariant === 'undefined') {\n throw Error(`Error in abi : Result has no 'Ok' variant.`);\n }\n const typeVariantOk = listTypeVariant.type;\n if (typeVariantOk === '()') {\n return CairoResultVariant.Ok.toString();\n }\n const parsedParameter = parseCalldataValue(\n myResult.unwrap(),\n typeVariantOk,\n structs,\n enums\n );\n if (Array.isArray(parsedParameter)) {\n return [CairoResultVariant.Ok.toString(), ...parsedParameter];\n }\n return [CairoResultVariant.Ok.toString(), parsedParameter];\n }\n // is Result::Err\n const listTypeVariant = variants.find((variant) => variant.name === 'Err');\n if (typeof listTypeVariant === 'undefined') {\n throw Error(`Error in abi : Result has no 'Err' variant.`);\n }\n const typeVariantErr = listTypeVariant.type;\n if (typeVariantErr === '()') {\n return CairoResultVariant.Err.toString();\n }\n const parsedParameter = parseCalldataValue(myResult.unwrap(), typeVariantErr, structs, enums);\n if (Array.isArray(parsedParameter)) {\n return [CairoResultVariant.Err.toString(), ...parsedParameter];\n }\n return [CairoResultVariant.Err.toString(), parsedParameter];\n }\n // Custom Enum\n const myEnum = element as CairoCustomEnum;\n const activeVariant: string = myEnum.activeVariant();\n const listTypeVariant = variants.find((variant) => variant.name === activeVariant);\n if (typeof listTypeVariant === 'undefined') {\n throw Error(`Not find in abi : Enum has no '${activeVariant}' variant.`);\n }\n const typeActiveVariant = listTypeVariant.type;\n const numActiveVariant = variants.findIndex((variant) => variant.name === activeVariant); // can not fail due to check of listTypeVariant\n if (typeActiveVariant === '()') {\n return numActiveVariant.toString();\n }\n const parsedParameter = parseCalldataValue(myEnum.unwrap(), typeActiveVariant, structs, enums);\n if (Array.isArray(parsedParameter)) {\n return [numActiveVariant.toString(), ...parsedParameter];\n }\n return [numActiveVariant.toString(), parsedParameter];\n }\n\n if (isTypeNonZero(type)) {\n return parseBaseTypes(getArrayType(type), element as BigNumberish);\n }\n\n if (typeof element === 'object') {\n throw Error(`Parameter ${element} do not align with abi parameter ${type}`);\n }\n return parseBaseTypes(type, element);\n}\n\n/**\n * Parse one field of the calldata by using input field from the abi for that method\n *\n * @param argsIterator - Iterator for value of the field\n * @param input - input(field) information from the abi that will be used to parse the data\n * @param structs - structs from abi\n * @param enums - enums from abi\n * @return {string | string[]} - parsed arguments in format that contract is expecting\n */\nexport function parseCalldataField(\n argsIterator: Iterator,\n input: AbiEntry,\n structs: AbiStructs,\n enums: AbiEnums\n): string | string[] {\n const { name, type } = input;\n let { value } = argsIterator.next();\n\n switch (true) {\n // Array\n case isTypeArray(type):\n if (!Array.isArray(value) && !isText(value)) {\n throw Error(`ABI expected parameter ${name} to be array or long string, got ${value}`);\n }\n if (isString(value)) {\n // long string match cairo felt*\n value = splitLongString(value);\n }\n return parseCalldataValue(value, input.type, structs, enums);\n case isTypeNonZero(type):\n return parseBaseTypes(getArrayType(type), value);\n case type === 'core::starknet::eth_address::EthAddress':\n return parseBaseTypes(type, value);\n // Struct or Tuple\n case isTypeStruct(type, structs) ||\n isTypeTuple(type) ||\n CairoUint256.isAbiType(type) ||\n CairoUint256.isAbiType(type):\n return parseCalldataValue(value as ParsedStruct | BigNumberish[], type, structs, enums);\n\n // Enums\n case isTypeEnum(type, enums):\n return parseCalldataValue(\n value as CairoOption | CairoResult | CairoEnum,\n type,\n structs,\n enums\n );\n\n // Felt or unhandled\n default:\n return parseBaseTypes(type, value);\n }\n}\n","/* eslint-disable no-case-declarations */\nimport {\n AbiEntry,\n AbiEnums,\n AbiStructs,\n Args,\n BigNumberish,\n ByteArray,\n CairoEnum,\n EventEntry,\n ParsedStruct,\n} from '../../types';\nimport { CairoUint256 } from '../cairoDataTypes/uint256';\nimport { CairoUint512 } from '../cairoDataTypes/uint512';\nimport { addHexPrefix, removeHexPrefix } from '../encode';\nimport { toHex } from '../num';\nimport { decodeShortString } from '../shortString';\nimport { stringFromByteArray } from './byteArray';\nimport {\n getArrayType,\n isCairo1Type,\n isLen,\n isTypeArray,\n isTypeBool,\n isTypeByteArray,\n isTypeEnum,\n isTypeNonZero,\n isTypeSecp256k1Point,\n isTypeTuple,\n} from './cairo';\nimport {\n CairoCustomEnum,\n CairoEnumRaw,\n CairoOption,\n CairoOptionVariant,\n CairoResult,\n CairoResultVariant,\n} from './enum';\nimport extractTupleMemberTypes from './tuple';\n\n/**\n * Parse base types\n * @param type type of element\n * @param it iterator\n * @returns bigint | boolean\n */\nfunction parseBaseTypes(type: string, it: Iterator) {\n let temp;\n switch (true) {\n case isTypeBool(type):\n temp = it.next().value;\n return Boolean(BigInt(temp));\n case CairoUint256.isAbiType(type):\n const low = it.next().value;\n const high = it.next().value;\n return new CairoUint256(low, high).toBigInt();\n case CairoUint512.isAbiType(type):\n const limb0 = it.next().value;\n const limb1 = it.next().value;\n const limb2 = it.next().value;\n const limb3 = it.next().value;\n return new CairoUint512(limb0, limb1, limb2, limb3).toBigInt();\n case type === 'core::starknet::eth_address::EthAddress':\n temp = it.next().value;\n return BigInt(temp);\n case type === 'core::bytes_31::bytes31':\n temp = it.next().value;\n return decodeShortString(temp);\n case isTypeSecp256k1Point(type):\n const xLow = removeHexPrefix(it.next().value).padStart(32, '0');\n const xHigh = removeHexPrefix(it.next().value).padStart(32, '0');\n const yLow = removeHexPrefix(it.next().value).padStart(32, '0');\n const yHigh = removeHexPrefix(it.next().value).padStart(32, '0');\n const pubK = BigInt(addHexPrefix(xHigh + xLow + yHigh + yLow));\n return pubK;\n default:\n temp = it.next().value;\n return BigInt(temp);\n }\n}\n\n/**\n * Parse of the response elements that are converted to Object (Struct) by using the abi\n *\n * @param responseIterator - iterator of the response\n * @param element - element of the field {name: string, type: string}\n * @param structs - structs from abi\n * @param enums\n * @return {any} - parsed arguments in format that contract is expecting\n */\nfunction parseResponseValue(\n responseIterator: Iterator,\n element: { name: string; type: string },\n structs?: AbiStructs,\n enums?: AbiEnums\n): BigNumberish | ParsedStruct | boolean | any[] | CairoEnum {\n if (element.type === '()') {\n return {};\n }\n // type uint256 struct (c1v2)\n if (CairoUint256.isAbiType(element.type)) {\n const low = responseIterator.next().value;\n const high = responseIterator.next().value;\n return new CairoUint256(low, high).toBigInt();\n }\n // type uint512 struct\n if (CairoUint512.isAbiType(element.type)) {\n const limb0 = responseIterator.next().value;\n const limb1 = responseIterator.next().value;\n const limb2 = responseIterator.next().value;\n const limb3 = responseIterator.next().value;\n return new CairoUint512(limb0, limb1, limb2, limb3).toBigInt();\n }\n // type C1 ByteArray struct, representing a LongString\n if (isTypeByteArray(element.type)) {\n const parsedBytes31Arr: BigNumberish[] = [];\n const bytes31ArrLen = BigInt(responseIterator.next().value);\n while (parsedBytes31Arr.length < bytes31ArrLen) {\n parsedBytes31Arr.push(toHex(responseIterator.next().value));\n }\n const pending_word = toHex(responseIterator.next().value);\n const pending_word_len = BigInt(responseIterator.next().value);\n const myByteArray: ByteArray = {\n data: parsedBytes31Arr,\n pending_word,\n pending_word_len,\n };\n return stringFromByteArray(myByteArray);\n }\n\n // type c1 array\n if (isTypeArray(element.type)) {\n // eslint-disable-next-line no-case-declarations\n const parsedDataArr: (BigNumberish | ParsedStruct | boolean | any[] | CairoEnum)[] = [];\n const el: AbiEntry = { name: '', type: getArrayType(element.type) };\n const len = BigInt(responseIterator.next().value); // get length\n while (parsedDataArr.length < len) {\n parsedDataArr.push(parseResponseValue(responseIterator, el, structs, enums));\n }\n return parsedDataArr;\n }\n\n // type NonZero\n if (isTypeNonZero(element.type)) {\n // eslint-disable-next-line no-case-declarations\n // const parsedDataArr: (BigNumberish | ParsedStruct | boolean | any[] | CairoEnum)[] = [];\n const el: AbiEntry = { name: '', type: getArrayType(element.type) };\n // parsedDataArr.push();\n return parseResponseValue(responseIterator, el, structs, enums);\n }\n\n // type struct\n if (structs && element.type in structs && structs[element.type]) {\n if (element.type === 'core::starknet::eth_address::EthAddress') {\n return parseBaseTypes(element.type, responseIterator);\n }\n return structs[element.type].members.reduce((acc, el) => {\n acc[el.name] = parseResponseValue(responseIterator, el, structs, enums);\n return acc;\n }, {} as any);\n }\n\n // type Enum (only CustomEnum)\n if (enums && element.type in enums && enums[element.type]) {\n const variantNum: number = Number(responseIterator.next().value); // get variant number\n const rawEnum = enums[element.type].variants.reduce((acc, variant, num) => {\n if (num === variantNum) {\n acc[variant.name] = parseResponseValue(\n responseIterator,\n { name: '', type: variant.type },\n structs,\n enums\n );\n return acc;\n }\n acc[variant.name] = undefined;\n return acc;\n }, {} as CairoEnumRaw);\n // Option\n if (element.type.startsWith('core::option::Option')) {\n const content = variantNum === CairoOptionVariant.Some ? rawEnum.Some : undefined;\n return new CairoOption(variantNum, content);\n }\n // Result\n if (element.type.startsWith('core::result::Result')) {\n let content: Object;\n if (variantNum === CairoResultVariant.Ok) {\n content = rawEnum.Ok;\n } else {\n content = rawEnum.Err;\n }\n return new CairoResult(variantNum, content);\n }\n // Cairo custom Enum\n const customEnum = new CairoCustomEnum(rawEnum);\n return customEnum;\n }\n\n // type tuple\n if (isTypeTuple(element.type)) {\n const memberTypes = extractTupleMemberTypes(element.type);\n return memberTypes.reduce((acc, it: any, idx) => {\n const name = it?.name ? it.name : idx;\n const type = it?.type ? it.type : it;\n const el = { name, type };\n acc[name] = parseResponseValue(responseIterator, el, structs, enums);\n return acc;\n }, {} as any);\n }\n\n // type c1 array\n if (isTypeArray(element.type)) {\n // eslint-disable-next-line no-case-declarations\n const parsedDataArr: (BigNumberish | ParsedStruct | boolean | any[] | CairoEnum)[] = [];\n const el = { name: '', type: getArrayType(element.type) };\n const len = BigInt(responseIterator.next().value); // get length\n while (parsedDataArr.length < len) {\n parsedDataArr.push(parseResponseValue(responseIterator, el, structs, enums));\n }\n return parsedDataArr;\n }\n\n // base type\n return parseBaseTypes(element.type, responseIterator);\n}\n\n/**\n * Parse elements of the response and structuring them into one field by using output property from the abi for that method\n *\n * @param responseIterator - iterator of the response\n * @param output - output(field) information from the abi that will be used to parse the data\n * @param structs - structs from abi\n * @param parsedResult\n * @return - parsed response corresponding to the abi structure of the field\n */\nexport default function responseParser(\n responseIterator: Iterator,\n output: AbiEntry | EventEntry,\n structs?: AbiStructs,\n enums?: AbiEnums,\n parsedResult?: Args | ParsedStruct\n): any {\n const { name, type } = output;\n let temp;\n\n switch (true) {\n case isLen(name):\n temp = responseIterator.next().value;\n return BigInt(temp);\n\n case (structs && type in structs) || isTypeTuple(type):\n return parseResponseValue(responseIterator, output, structs, enums);\n\n case enums && isTypeEnum(type, enums):\n return parseResponseValue(responseIterator, output, structs, enums);\n\n case isTypeArray(type):\n // C1 Array\n if (isCairo1Type(type)) {\n return parseResponseValue(responseIterator, output, structs, enums);\n }\n // C0 Array\n // eslint-disable-next-line no-case-declarations\n const parsedDataArr: (BigNumberish | ParsedStruct | boolean | any[] | CairoEnum)[] = [];\n if (parsedResult && parsedResult[`${name}_len`]) {\n const arrLen = parsedResult[`${name}_len`] as number;\n while (parsedDataArr.length < arrLen) {\n parsedDataArr.push(\n parseResponseValue(\n responseIterator,\n { name, type: output.type.replace('*', '') },\n structs,\n enums\n )\n );\n }\n }\n return parsedDataArr;\n\n case isTypeNonZero(type):\n return parseResponseValue(responseIterator, output, structs, enums);\n\n default:\n return parseBaseTypes(type, responseIterator);\n }\n}\n","/**\n * Validate cairo contract method arguments\n * Flow: Determine type from abi and than validate against parameter\n */\nimport {\n AbiEntry,\n AbiEnums,\n AbiStructs,\n BigNumberish,\n FunctionAbi,\n Literal,\n Uint,\n} from '../../types';\nimport assert from '../assert';\nimport { CairoUint256 } from '../cairoDataTypes/uint256';\nimport { CairoUint512 } from '../cairoDataTypes/uint512';\nimport { isBigInt, isBoolean, isHex, isNumber, toBigInt } from '../num';\nimport { isLongText, isString } from '../shortString';\nimport {\n getArrayType,\n isLen,\n isTypeArray,\n isTypeBool,\n isTypeByteArray,\n isTypeBytes31,\n isTypeEnum,\n isTypeFelt,\n isTypeLiteral,\n isTypeNonZero,\n isTypeOption,\n isTypeResult,\n isTypeStruct,\n isTypeTuple,\n isTypeUint,\n} from './cairo';\n\nconst validateFelt = (parameter: any, input: AbiEntry) => {\n assert(\n isString(parameter) || isNumber(parameter) || isBigInt(parameter),\n `Validate: arg ${input.name} should be a felt typed as (String, Number or BigInt)`\n );\n if (isString(parameter) && !isHex(parameter)) return; // shortstring\n const param = BigInt(parameter.toString(10));\n assert(\n // from : https://github.com/starkware-libs/starknet-specs/blob/29bab650be6b1847c92d4461d4c33008b5e50b1a/api/starknet_api_openrpc.json#L1266\n param >= 0n && param <= 2n ** 252n - 1n,\n `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0, 2^252-1]`\n );\n};\n\nconst validateBytes31 = (parameter: any, input: AbiEntry) => {\n assert(isString(parameter), `Validate: arg ${input.name} should be a string.`);\n assert(\n parameter.length < 32,\n `Validate: arg ${input.name} cairo typed ${input.type} should be a string of less than 32 characters.`\n );\n};\n\nconst validateByteArray = (parameter: any, input: AbiEntry) => {\n assert(isString(parameter), `Validate: arg ${input.name} should be a string.`);\n};\n\nconst validateUint = (parameter: any, input: AbiEntry) => {\n if (isNumber(parameter)) {\n assert(\n parameter <= Number.MAX_SAFE_INTEGER,\n `Validation: Parameter is to large to be typed as Number use (BigInt or String)`\n );\n }\n assert(\n isString(parameter) ||\n isNumber(parameter) ||\n isBigInt(parameter) ||\n (typeof parameter === 'object' && 'low' in parameter && 'high' in parameter) ||\n (typeof parameter === 'object' &&\n ['limb0', 'limb1', 'limb2', 'limb3'].every((key) => key in parameter)),\n `Validate: arg ${input.name} of cairo type ${\n input.type\n } should be type (String, Number or BigInt), but is ${typeof parameter} ${parameter}.`\n );\n let param: bigint;\n switch (input.type) {\n case Uint.u256:\n param = new CairoUint256(parameter).toBigInt();\n break;\n case Uint.u512:\n param = new CairoUint512(parameter).toBigInt();\n break;\n default:\n param = toBigInt(parameter);\n }\n switch (input.type) {\n case Uint.u8:\n assert(\n param >= 0n && param <= 255n,\n `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0 - 255]`\n );\n break;\n\n case Uint.u16:\n assert(\n param >= 0n && param <= 65535n,\n `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0, 65535]`\n );\n break;\n\n case Uint.u32:\n assert(\n param >= 0n && param <= 4294967295n,\n `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0, 4294967295]`\n );\n break;\n\n case Uint.u64:\n assert(\n param >= 0n && param <= 2n ** 64n - 1n,\n `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0, 2^64-1]`\n );\n break;\n\n case Uint.u128:\n assert(\n param >= 0n && param <= 2n ** 128n - 1n,\n `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0, 2^128-1]`\n );\n break;\n\n case Uint.u256:\n assert(\n param >= 0n && param <= 2n ** 256n - 1n,\n `Validate: arg ${input.name} is ${input.type} 0 - 2^256-1`\n );\n break;\n\n case Uint.u512:\n assert(CairoUint512.is(param), `Validate: arg ${input.name} is ${input.type} 0 - 2^512-1`);\n break;\n\n case Literal.ClassHash:\n assert(\n // from : https://github.com/starkware-libs/starknet-specs/blob/29bab650be6b1847c92d4461d4c33008b5e50b1a/api/starknet_api_openrpc.json#L1670\n param >= 0n && param <= 2n ** 252n - 1n,\n `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0, 2^252-1]`\n );\n break;\n\n case Literal.ContractAddress:\n assert(\n // from : https://github.com/starkware-libs/starknet-specs/blob/29bab650be6b1847c92d4461d4c33008b5e50b1a/api/starknet_api_openrpc.json#L1245\n param >= 0n && param <= 2n ** 252n - 1n,\n `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0, 2^252-1]`\n );\n break;\n case Literal.Secp256k1Point: {\n assert(\n param >= 0n && param <= 2n ** 512n - 1n,\n `Validate: arg ${input.name} must be ${input.type} : a 512 bits number.`\n );\n break;\n }\n\n default:\n break;\n }\n};\n\nconst validateBool = (parameter: any, input: AbiEntry) => {\n assert(\n isBoolean(parameter),\n `Validate: arg ${input.name} of cairo type ${input.type} should be type (Boolean)`\n );\n};\n\nconst validateStruct = (parameter: any, input: AbiEntry, structs: AbiStructs) => {\n // c1v2 uint256 or u512 in struct\n if (input.type === Uint.u256 || input.type === Uint.u512) {\n validateUint(parameter, input);\n return;\n }\n\n if (input.type === 'core::starknet::eth_address::EthAddress') {\n assert(\n typeof parameter !== 'object',\n `EthAddress type is waiting a BigNumberish. Got ${parameter}`\n );\n const param = BigInt(parameter.toString(10));\n assert(\n // from : https://github.com/starkware-libs/starknet-specs/blob/29bab650be6b1847c92d4461d4c33008b5e50b1a/api/starknet_api_openrpc.json#L1259\n param >= 0n && param <= 2n ** 160n - 1n,\n `Validate: arg ${input.name} cairo typed ${input.type} should be in range [0, 2^160-1]`\n );\n return;\n }\n\n assert(\n typeof parameter === 'object' && !Array.isArray(parameter),\n `Validate: arg ${input.name} is cairo type struct (${input.type}), and should be defined as js object (not array)`\n );\n\n // shallow struct validation, only first depth level\n structs[input.type].members.forEach(({ name }) => {\n assert(\n Object.keys(parameter).includes(name),\n `Validate: arg ${input.name} should have a property ${name}`\n );\n });\n};\n\nconst validateEnum = (parameter: any, input: AbiEntry) => {\n assert(\n typeof parameter === 'object' && !Array.isArray(parameter),\n `Validate: arg ${input.name} is cairo type Enum (${input.type}), and should be defined as js object (not array)`\n );\n const methodsKeys = Object.getOwnPropertyNames(Object.getPrototypeOf(parameter));\n const keys = [...Object.getOwnPropertyNames(parameter), ...methodsKeys];\n if (isTypeOption(input.type) && keys.includes('isSome') && keys.includes('isNone')) {\n return; // Option Enum\n }\n if (isTypeResult(input.type) && keys.includes('isOk') && keys.includes('isErr')) {\n return; // Result Enum\n }\n if (keys.includes('variant') && keys.includes('activeVariant')) {\n return; // Custom Enum\n }\n throw new Error(\n `Validate Enum: argument ${input.name}, type ${input.type}, value received ${parameter}, is not an Enum.`\n );\n};\n\nconst validateTuple = (parameter: any, input: AbiEntry) => {\n assert(\n typeof parameter === 'object' && !Array.isArray(parameter),\n `Validate: arg ${input.name} should be a tuple (defined as object)`\n );\n // todo: skip tuple structural validation for now\n};\n\nconst validateArray = (parameter: any, input: AbiEntry, structs: AbiStructs, enums: AbiEnums) => {\n const baseType = getArrayType(input.type);\n // Long text (special case when parameter is not an array but long text)\n if (isTypeFelt(baseType) && isLongText(parameter)) {\n return;\n }\n\n assert(Array.isArray(parameter), `Validate: arg ${input.name} should be an Array`);\n\n switch (true) {\n case isTypeFelt(baseType):\n parameter.forEach((param: BigNumberish) => validateFelt(param, input));\n break;\n case isTypeTuple(baseType):\n parameter.forEach((it: any) => validateTuple(it, { name: input.name, type: baseType }));\n break;\n\n case isTypeArray(baseType):\n parameter.forEach((param: BigNumberish) =>\n validateArray(param, { name: '', type: baseType }, structs, enums)\n );\n break;\n case isTypeStruct(baseType, structs):\n parameter.forEach((it: any) =>\n validateStruct(it, { name: input.name, type: baseType }, structs)\n );\n break;\n case isTypeEnum(baseType, enums):\n parameter.forEach((it: any) => validateEnum(it, { name: input.name, type: baseType }));\n break;\n case isTypeUint(baseType) || isTypeLiteral(baseType):\n parameter.forEach((param: BigNumberish) => validateUint(param, { name: '', type: baseType }));\n break;\n case isTypeBool(baseType):\n parameter.forEach((param: BigNumberish) => validateBool(param, input));\n break;\n default:\n throw new Error(\n `Validate Unhandled: argument ${input.name}, type ${input.type}, value ${parameter}`\n );\n }\n};\n\nconst validateNonZero = (parameter: any, input: AbiEntry) => {\n // Telegram : https://t.me/sncorestars/11902/45433\n // Author : Ori Ziv (08/apr/2024)\n // \"NonZero is only supported for purely numeric types (u*, i* and felt252) and EcPoint.\"\n //\n // As EcPoint do not includes trait Serde, it can't be seen in an ABI.\n // u512 is not compatible.\n // i* are not currently handled by Starknet.js (and core::zeroable::NonZero:: seems not to work in Cairo 2.6.3).\n // so, are authorized here : u8, u16, u32, u64, u128, u256 and felt252.\n\n const baseType = getArrayType(input.type);\n assert(\n (isTypeUint(baseType) && baseType !== CairoUint512.abiSelector) || isTypeFelt(baseType),\n `Validate: ${input.name} type is not authorized for NonZero type.`\n );\n switch (true) {\n case isTypeFelt(baseType):\n validateFelt(parameter, input);\n assert(\n BigInt(parameter.toString(10)) > 0,\n 'Validate: value 0 is not authorized in NonZero felt252 type.'\n );\n break;\n case isTypeUint(baseType):\n validateUint(parameter, { name: '', type: baseType });\n switch (input.type) {\n case Uint.u256:\n assert(\n new CairoUint256(parameter).toBigInt() > 0,\n 'Validate: value 0 is not authorized in NonZero uint256 type.'\n );\n break;\n default:\n assert(\n toBigInt(parameter) > 0,\n 'Validate: value 0 is not authorized in NonZero uint type.'\n );\n }\n break;\n default:\n throw new Error(\n `Validate Unhandled: argument ${input.name}, type ${input.type}, value ${parameter}`\n );\n }\n};\n\nexport default function validateFields(\n abiMethod: FunctionAbi,\n args: Array,\n structs: AbiStructs,\n enums: AbiEnums\n) {\n abiMethod.inputs.reduce((acc, input) => {\n const parameter = args[acc];\n\n switch (true) {\n case isLen(input.name):\n return acc;\n case isTypeFelt(input.type):\n validateFelt(parameter, input);\n break;\n case isTypeBytes31(input.type):\n validateBytes31(parameter, input);\n break;\n case isTypeUint(input.type) || isTypeLiteral(input.type):\n validateUint(parameter, input);\n break;\n case isTypeBool(input.type):\n validateBool(parameter, input);\n break;\n case isTypeByteArray(input.type):\n validateByteArray(parameter, input);\n break;\n case isTypeArray(input.type):\n validateArray(parameter, input, structs, enums);\n break;\n case isTypeStruct(input.type, structs):\n validateStruct(parameter, input, structs);\n break;\n case isTypeEnum(input.type, enums):\n validateEnum(parameter, input);\n break;\n case isTypeTuple(input.type):\n validateTuple(parameter, input);\n break;\n case isTypeNonZero(input.type):\n validateNonZero(parameter, input);\n break;\n default:\n throw new Error(\n `Validate Unhandled: argument ${input.name}, type ${input.type}, value ${parameter}`\n );\n }\n\n return acc + 1;\n }, 0);\n}\n","/* eslint-disable no-plusplus */\nimport {\n Abi,\n AbiEnums,\n AbiStructs,\n AllowArray,\n Args,\n ArgsOrCalldata,\n Calldata,\n FunctionAbi,\n HexCalldata,\n RawArgs,\n RawArgsArray,\n Result,\n ValidateType,\n} from '../../types';\nimport assert from '../assert';\nimport { isBigInt, toHex } from '../num';\nimport { getSelectorFromName } from '../hash/selector';\nimport { isLongText } from '../shortString';\nimport { byteArrayFromString } from './byteArray';\nimport { felt, isCairo1Type, isLen } from './cairo';\nimport {\n CairoCustomEnum,\n CairoOption,\n CairoOptionVariant,\n CairoResult,\n CairoResultVariant,\n} from './enum';\nimport formatter from './formatter';\nimport { createAbiParser, isNoConstructorValid } from './parser';\nimport { AbiParserInterface } from './parser/interface';\nimport orderPropsByAbi from './propertyOrder';\nimport { parseCalldataField } from './requestParser';\nimport responseParser from './responseParser';\nimport validateFields from './validate';\n\nexport * as cairo from './cairo';\nexport * as byteArray from './byteArray';\nexport { parseCalldataField } from './requestParser';\n\nexport class CallData {\n abi: Abi;\n\n parser: AbiParserInterface;\n\n protected readonly structs: AbiStructs;\n\n protected readonly enums: AbiEnums;\n\n constructor(abi: Abi) {\n this.structs = CallData.getAbiStruct(abi);\n this.enums = CallData.getAbiEnum(abi);\n this.parser = createAbiParser(abi);\n this.abi = this.parser.getLegacyFormat();\n }\n\n /**\n * Validate arguments passed to the method as corresponding to the ones in the abi\n * @param type ValidateType - type of the method\n * @param method string - name of the method\n * @param args ArgsOrCalldata - arguments that are passed to the method\n */\n public validate(type: ValidateType, method: string, args: ArgsOrCalldata = []) {\n // ensure provided method of type exists\n if (type !== ValidateType.DEPLOY) {\n const invocableFunctionNames = this.abi\n .filter((abi) => {\n if (abi.type !== 'function') return false;\n const isView = abi.stateMutability === 'view' || abi.state_mutability === 'view';\n return type === ValidateType.INVOKE ? !isView : isView;\n })\n .map((abi) => abi.name);\n assert(\n invocableFunctionNames.includes(method),\n `${type === ValidateType.INVOKE ? 'invocable' : 'viewable'} method not found in abi`\n );\n }\n\n // get requested method from abi\n const abiMethod = this.abi.find((abi) =>\n type === ValidateType.DEPLOY\n ? abi.name === method && abi.type === 'constructor'\n : abi.name === method && abi.type === 'function'\n ) as FunctionAbi;\n\n if (isNoConstructorValid(method, args, abiMethod)) {\n return;\n }\n\n // validate arguments length\n const inputsLength = this.parser.methodInputsLength(abiMethod);\n if (args.length !== inputsLength) {\n throw Error(\n `Invalid number of arguments, expected ${inputsLength} arguments, but got ${args.length}`\n );\n }\n\n // validate parameters\n validateFields(abiMethod, args, this.structs, this.enums);\n }\n\n /**\n * Compile contract callData with abi\n * Parse the calldata by using input fields from the abi for that method\n * @param method string - method name\n * @param argsCalldata RawArgs - arguments passed to the method. Can be an array of arguments (in the order of abi definition), or an object constructed in conformity with abi (in this case, the parameter can be in a wrong order).\n * @return Calldata - parsed arguments in format that contract is expecting\n * @example\n * ```typescript\n * const calldata = myCallData.compile(\"constructor\", [\"0x34a\", [1, 3n]]);\n * ```\n * ```typescript\n * const calldata2 = myCallData.compile(\"constructor\", {list:[1, 3n], balance:\"0x34\"}); // wrong order is valid\n * ```\n */\n public compile(method: string, argsCalldata: RawArgs): Calldata {\n const abiMethod = this.abi.find((abiFunction) => abiFunction.name === method) as FunctionAbi;\n\n if (isNoConstructorValid(method, argsCalldata, abiMethod)) {\n return [];\n }\n\n let args: RawArgsArray;\n if (Array.isArray(argsCalldata)) {\n args = argsCalldata;\n } else {\n // order the object\n const orderedObject = orderPropsByAbi(\n argsCalldata,\n abiMethod.inputs,\n this.structs,\n this.enums\n );\n args = Object.values(orderedObject);\n // // validate array elements to abi\n validateFields(abiMethod, args, this.structs, this.enums);\n }\n\n const argsIterator = args[Symbol.iterator]();\n\n const callArray = abiMethod.inputs.reduce(\n (acc, input) =>\n isLen(input.name) && !isCairo1Type(input.type)\n ? acc\n : acc.concat(parseCalldataField(argsIterator, input, this.structs, this.enums)),\n [] as Calldata\n );\n\n // add compiled property to array object\n Object.defineProperty(callArray, '__compiled__', {\n enumerable: false,\n writable: false,\n value: true,\n });\n return callArray;\n }\n\n /**\n * Compile contract callData without abi\n * @param rawArgs RawArgs representing cairo method arguments or string array of compiled data\n * @returns Calldata\n */\n static compile(rawArgs: RawArgs): Calldata {\n const createTree = (obj: object) => {\n const getEntries = (o: object, prefix = '.'): any => {\n const oe = Array.isArray(o) ? [o.length.toString(), ...o] : o;\n return Object.entries(oe).flatMap(([k, v]) => {\n let value = v;\n if (k === 'entrypoint') value = getSelectorFromName(value);\n else if (isLongText(value)) value = byteArrayFromString(value);\n const kk = Array.isArray(oe) && k === '0' ? '$$len' : k;\n if (isBigInt(value)) return [[`${prefix}${kk}`, felt(value)]];\n if (Object(value) === value) {\n const methodsKeys = Object.getOwnPropertyNames(Object.getPrototypeOf(value));\n const keys = [...Object.getOwnPropertyNames(value), ...methodsKeys];\n if (keys.includes('isSome') && keys.includes('isNone')) {\n // Option\n const myOption = value as CairoOption;\n const variantNb = myOption.isSome()\n ? CairoOptionVariant.Some\n : CairoOptionVariant.None;\n if (myOption.isSome())\n return getEntries({ 0: variantNb, 1: myOption.unwrap() }, `${prefix}${kk}.`);\n return [[`${prefix}${kk}`, felt(variantNb)]];\n }\n if (keys.includes('isOk') && keys.includes('isErr')) {\n // Result\n const myResult = value as CairoResult;\n const variantNb = myResult.isOk() ? CairoResultVariant.Ok : CairoResultVariant.Err;\n return getEntries({ 0: variantNb, 1: myResult.unwrap() }, `${prefix}${kk}.`);\n }\n if (keys.includes('variant') && keys.includes('activeVariant')) {\n // CustomEnum\n const myEnum = value as CairoCustomEnum;\n const activeVariant: string = myEnum.activeVariant();\n const listVariants = Object.keys(myEnum.variant);\n const activeVariantNb = listVariants.findIndex(\n (variant: any) => variant === activeVariant\n );\n if (\n typeof myEnum.unwrap() === 'object' &&\n Object.keys(myEnum.unwrap()).length === 0 // empty object : {}\n ) {\n return [[`${prefix}${kk}`, felt(activeVariantNb)]];\n }\n return getEntries({ 0: activeVariantNb, 1: myEnum.unwrap() }, `${prefix}${kk}.`);\n }\n // normal object\n return getEntries(value, `${prefix}${kk}.`);\n }\n return [[`${prefix}${kk}`, felt(value)]];\n });\n };\n const result = Object.fromEntries(getEntries(obj));\n return result;\n };\n\n let callTreeArray;\n if (!Array.isArray(rawArgs)) {\n // flatten structs, tuples, add array length. Process leafs as Felt\n const callTree = createTree(rawArgs);\n // convert to array\n callTreeArray = Object.values(callTree);\n } else {\n // already compiled data but modified or raw args provided as array, recompile it\n // recreate tree\n const callObj = { ...rawArgs };\n const callTree = createTree(callObj);\n callTreeArray = Object.values(callTree);\n }\n\n // add compiled property to array object\n Object.defineProperty(callTreeArray, '__compiled__', {\n enumerable: false,\n writable: false,\n value: true,\n });\n return callTreeArray;\n }\n\n /**\n * Parse elements of the response array and structuring them into response object\n * @param method string - method name\n * @param response string[] - response from the method\n * @return Result - parsed response corresponding to the abi\n */\n public parse(method: string, response: string[]): Result {\n const { outputs } = this.abi.find((abi) => abi.name === method) as FunctionAbi;\n const responseIterator = response.flat()[Symbol.iterator]();\n\n const parsed = outputs.flat().reduce((acc, output, idx) => {\n const propName = output.name ?? idx;\n acc[propName] = responseParser(responseIterator, output, this.structs, this.enums, acc);\n if (acc[propName] && acc[`${propName}_len`]) {\n delete acc[`${propName}_len`];\n }\n return acc;\n }, {} as Args);\n\n // Cairo1 avoid object.0 structure\n return Object.keys(parsed).length === 1 && 0 in parsed ? (parsed[0] as Result) : parsed;\n }\n\n /**\n * Format cairo method response data to native js values based on provided format schema\n * @param method string - cairo method name\n * @param response string[] - cairo method response\n * @param format object - formatter object schema\n * @returns Result - parsed and formatted response object\n */\n public format(method: string, response: string[], format: object): Result {\n const parsed = this.parse(method, response);\n return formatter(parsed as Record, format);\n }\n\n /**\n * Helper to extract structs from abi\n * @param abi Abi\n * @returns AbiStructs - structs from abi\n */\n static getAbiStruct(abi: Abi): AbiStructs {\n return abi\n .filter((abiEntry) => abiEntry.type === 'struct')\n .reduce(\n (acc, abiEntry) => ({\n ...acc,\n [abiEntry.name]: abiEntry,\n }),\n {}\n );\n }\n\n /**\n * Helper to extract enums from abi\n * @param abi Abi\n * @returns AbiEnums - enums from abi\n */\n static getAbiEnum(abi: Abi): AbiEnums {\n const fullEnumList = abi\n .filter((abiEntry) => abiEntry.type === 'enum')\n .reduce(\n (acc, abiEntry) => ({\n ...acc,\n [abiEntry.name]: abiEntry,\n }),\n {}\n );\n delete fullEnumList['core::bool'];\n return fullEnumList;\n }\n\n /**\n * Helper: Compile HexCalldata | RawCalldata | RawArgs\n * @param rawCalldata HexCalldata | RawCalldata | RawArgs\n * @returns Calldata\n */\n static toCalldata(rawCalldata: RawArgs = []): Calldata {\n return CallData.compile(rawCalldata);\n }\n\n /**\n * Helper: Convert raw to HexCalldata\n * @param raw HexCalldata | RawCalldata | RawArgs\n * @returns HexCalldata\n */\n static toHex(raw: RawArgs = []): HexCalldata {\n const calldata = CallData.compile(raw);\n return calldata.map((it) => toHex(it));\n }\n\n /**\n * Parse the elements of a contract response and structure them into one or several Result.\n * In Cairo 0, arrays are not supported.\n * @param typeCairo string or string[] - Cairo type name, ex : \"hello::hello::UserData\"\n * @param response string[] - serialized data corresponding to typeCairo.\n * @return Result or Result[] - parsed response corresponding to typeData.\n * @example\n * const res2=helloCallData.decodeParameters(\"hello::hello::UserData\",[\"0x123456\",\"0x1\"]);\n * result = { address: 1193046n, is_claimed: true }\n */\n public decodeParameters(typeCairo: AllowArray, response: string[]): AllowArray {\n const typeCairoArray = Array.isArray(typeCairo) ? typeCairo : [typeCairo];\n const responseIterator = response.flat()[Symbol.iterator]();\n const decodedArray = typeCairoArray.map(\n (typeParam) =>\n responseParser(\n responseIterator,\n { name: '', type: typeParam },\n this.structs,\n this.enums\n ) as Result\n );\n return decodedArray.length === 1 ? decodedArray[0] : decodedArray;\n }\n}\n","/**\n * Hashes Exports\n */\nexport * as poseidon from '@noble/curves/abstract/poseidon';\nexport * from './selector'; // Preserve legacy export structure\n\nexport * from './transactionHash';\nexport * from './classHash';\n","/**\n * Calculate Hashes for v0 - v2 transactions\n */\n\n/* eslint-disable no-param-reassign */\n/* eslint-disable import/extensions */\nimport { StarknetChainId, TransactionHashPrefix } from '../../../constants';\nimport { BigNumberish, RawCalldata } from '../../../types';\nimport { starkCurve } from '../../ec';\nimport { toBigInt } from '../../num';\n\n/**\n * Compute pedersen hash from data\n * @returns format: hex-string - pedersen hash\n */\nexport function computeHashOnElements(data: BigNumberish[]): string {\n return [...data, data.length]\n .reduce((x: BigNumberish, y: BigNumberish) => starkCurve.pedersen(toBigInt(x), toBigInt(y)), 0)\n .toString();\n}\n\n/**\n * Calculate transaction pedersen hash for common properties\n *\n * Following implementation is based on this python [implementation #](https://github.com/starkware-libs/cairo-lang/blob/b614d1867c64f3fb2cf4a4879348cfcf87c3a5a7/src/starkware/starknet/core/os/transaction_hash/transaction_hash.py)\n * @returns format: hex-string\n */\nexport function calculateTransactionHashCommon(\n txHashPrefix: TransactionHashPrefix,\n version: BigNumberish,\n contractAddress: BigNumberish,\n entryPointSelector: BigNumberish,\n calldata: RawCalldata,\n maxFee: BigNumberish,\n chainId: StarknetChainId,\n additionalData: BigNumberish[] = []\n): string {\n const calldataHash = computeHashOnElements(calldata);\n const dataToHash = [\n txHashPrefix,\n version,\n contractAddress,\n entryPointSelector,\n calldataHash,\n maxFee,\n chainId,\n ...additionalData,\n ];\n return computeHashOnElements(dataToHash);\n}\n\n/**\n * Calculate declare transaction hash\n * @param classHash hex-string\n * @param compiledClassHash hex-string\n * @returns format: hex-string\n */\nexport function calculateDeclareTransactionHash(\n classHash: string,\n senderAddress: BigNumberish,\n version: BigNumberish,\n maxFee: BigNumberish,\n chainId: StarknetChainId,\n nonce: BigNumberish,\n compiledClassHash?: string\n): string {\n return calculateTransactionHashCommon(\n TransactionHashPrefix.DECLARE,\n version,\n senderAddress,\n 0,\n [classHash],\n maxFee,\n chainId,\n [nonce, ...(compiledClassHash ? [compiledClassHash] : [])]\n );\n}\n\n/**\n * Calculate deploy_account transaction hash\n * @returns format: hex-string\n */\nexport function calculateDeployAccountTransactionHash(\n contractAddress: BigNumberish,\n classHash: BigNumberish,\n constructorCalldata: RawCalldata,\n salt: BigNumberish,\n version: BigNumberish,\n maxFee: BigNumberish,\n chainId: StarknetChainId,\n nonce: BigNumberish\n) {\n const calldata = [classHash, salt, ...constructorCalldata];\n\n return calculateTransactionHashCommon(\n TransactionHashPrefix.DEPLOY_ACCOUNT,\n version,\n contractAddress,\n 0,\n calldata,\n maxFee,\n chainId,\n [nonce]\n );\n}\n\n/**\n * Calculate invoke transaction hash\n * @returns format: hex-string\n */\nexport function calculateTransactionHash(\n contractAddress: BigNumberish,\n version: BigNumberish,\n calldata: RawCalldata,\n maxFee: BigNumberish,\n chainId: StarknetChainId,\n nonce: BigNumberish\n): string {\n return calculateTransactionHashCommon(\n TransactionHashPrefix.INVOKE,\n version,\n contractAddress,\n 0,\n calldata,\n maxFee,\n chainId,\n [nonce]\n );\n}\n","// TODO rename\nexport * as starkCurve from '@scure/starknet';\nexport * as weierstrass from '@noble/curves/abstract/weierstrass';\n","/**\n * Calculate Hashes for v3 transactions\n */\n\nimport { poseidonHashMany } from '@scure/starknet';\n\nimport { StarknetChainId, TransactionHashPrefix } from '../../../constants';\nimport { BigNumberish, Calldata } from '../../../types';\nimport { EDAMode, ResourceBounds } from '../../../types/api';\nimport { toHex } from '../../num';\nimport { encodeShortString } from '../../shortString';\n\nconst AToBI = (array: BigNumberish[]) => array.map((it: BigNumberish) => BigInt(it));\n\n/* eslint-disable no-bitwise */\nconst DATA_AVAILABILITY_MODE_BITS = 32n;\nconst MAX_AMOUNT_BITS = 64n;\nconst MAX_PRICE_PER_UNIT_BITS = 128n;\nconst RESOURCE_VALUE_OFFSET = MAX_AMOUNT_BITS + MAX_PRICE_PER_UNIT_BITS;\nconst L1_GAS_NAME = BigInt(encodeShortString('L1_GAS'));\nconst L2_GAS_NAME = BigInt(encodeShortString('L2_GAS'));\n\nexport function hashDAMode(nonceDAMode: BigNumberish, feeDAMode: BigNumberish) {\n return (BigInt(nonceDAMode) << DATA_AVAILABILITY_MODE_BITS) + BigInt(feeDAMode);\n}\n\nexport function hashFeeField(tip: BigNumberish, bounds: ResourceBounds) {\n const L1Bound =\n (L1_GAS_NAME << RESOURCE_VALUE_OFFSET) +\n (BigInt(bounds.l1_gas.max_amount) << MAX_PRICE_PER_UNIT_BITS) +\n BigInt(bounds.l1_gas.max_price_per_unit);\n\n const L2Bound =\n (L2_GAS_NAME << RESOURCE_VALUE_OFFSET) +\n (BigInt(bounds.l2_gas.max_amount) << MAX_PRICE_PER_UNIT_BITS) +\n BigInt(bounds.l2_gas.max_price_per_unit);\n\n return poseidonHashMany([BigInt(tip), L1Bound, L2Bound]);\n}\n\nexport function calculateTransactionHashCommon(\n txHashPrefix: TransactionHashPrefix,\n version: BigNumberish,\n senderAddress: BigNumberish,\n chainId: StarknetChainId,\n nonce: BigNumberish,\n tip: BigNumberish,\n paymasterData: BigNumberish[],\n nonceDataAvailabilityMode: EDAMode,\n feeDataAvailabilityMode: EDAMode,\n resourceBounds: ResourceBounds,\n additionalData: BigNumberish[] = []\n): string {\n const feeFieldHash = hashFeeField(tip, resourceBounds);\n const dAModeHash = hashDAMode(nonceDataAvailabilityMode, feeDataAvailabilityMode);\n const dataToHash = AToBI([\n txHashPrefix,\n version,\n senderAddress,\n feeFieldHash,\n poseidonHashMany(AToBI(paymasterData)),\n chainId,\n nonce,\n dAModeHash,\n ...AToBI(additionalData),\n ]);\n return toHex(poseidonHashMany(dataToHash));\n}\n\n/**\n * Calculate v3 deploy_account transaction hash\n * @returns format: hex-string\n */\nexport function calculateDeployAccountTransactionHash(\n contractAddress: BigNumberish,\n classHash: BigNumberish,\n compiledConstructorCalldata: Calldata,\n salt: BigNumberish,\n version: BigNumberish,\n chainId: StarknetChainId,\n nonce: BigNumberish,\n nonceDataAvailabilityMode: EDAMode,\n feeDataAvailabilityMode: EDAMode,\n resourceBounds: ResourceBounds,\n tip: BigNumberish,\n paymasterData: BigNumberish[]\n) {\n return calculateTransactionHashCommon(\n TransactionHashPrefix.DEPLOY_ACCOUNT,\n version,\n contractAddress,\n chainId,\n nonce,\n tip,\n paymasterData,\n nonceDataAvailabilityMode,\n feeDataAvailabilityMode,\n resourceBounds,\n [poseidonHashMany(AToBI(compiledConstructorCalldata)), classHash, salt]\n );\n}\n\n/**\n * Calculate v3 declare transaction hash\n * @returns format: hex-string\n */\nexport function calculateDeclareTransactionHash(\n classHash: string,\n compiledClassHash: string,\n senderAddress: BigNumberish,\n version: BigNumberish,\n chainId: StarknetChainId,\n nonce: BigNumberish,\n accountDeploymentData: BigNumberish[],\n nonceDataAvailabilityMode: EDAMode,\n feeDataAvailabilityMode: EDAMode,\n resourceBounds: ResourceBounds,\n tip: BigNumberish,\n paymasterData: BigNumberish[]\n): string {\n return calculateTransactionHashCommon(\n TransactionHashPrefix.DECLARE,\n version,\n senderAddress,\n chainId,\n nonce,\n tip,\n AToBI(paymasterData),\n nonceDataAvailabilityMode,\n feeDataAvailabilityMode,\n resourceBounds,\n [poseidonHashMany(AToBI(accountDeploymentData)), classHash, compiledClassHash]\n );\n}\n\n/**\n * Calculate v3 invoke transaction hash\n * @returns format: hex-string\n */\nexport function calculateInvokeTransactionHash(\n senderAddress: BigNumberish,\n version: BigNumberish,\n compiledCalldata: Calldata,\n chainId: StarknetChainId,\n nonce: BigNumberish,\n accountDeploymentData: BigNumberish[],\n nonceDataAvailabilityMode: EDAMode,\n feeDataAvailabilityMode: EDAMode,\n resourceBounds: ResourceBounds,\n tip: BigNumberish,\n paymasterData: BigNumberish[]\n): string {\n return calculateTransactionHashCommon(\n TransactionHashPrefix.INVOKE,\n version,\n senderAddress,\n chainId,\n nonce,\n tip,\n paymasterData,\n nonceDataAvailabilityMode,\n feeDataAvailabilityMode,\n resourceBounds,\n [poseidonHashMany(AToBI(accountDeploymentData)), poseidonHashMany(AToBI(compiledCalldata))]\n );\n}\n","/**\n * Transaction Hash based on Transaction Version\n */\n\nimport { StarknetChainId } from '../../../constants';\nimport { BigNumberish, Calldata } from '../../../types';\nimport {\n EDAMode,\n ETransactionVersion,\n ETransactionVersion2,\n ETransactionVersion3,\n ResourceBounds,\n} from '../../../types/api';\nimport {\n calculateDeclareTransactionHash as v2calculateDeclareTransactionHash,\n calculateDeployAccountTransactionHash as v2calculateDeployAccountTransactionHash,\n calculateTransactionHash as v2calculateInvokeTransactionHash,\n} from './v2';\nimport {\n calculateDeclareTransactionHash as v3calculateDeclareTransactionHash,\n calculateDeployAccountTransactionHash as v3calculateDeployAccountTransactionHash,\n calculateInvokeTransactionHash as v3calculateInvokeTransactionHash,\n} from './v3';\n\n/*\n * INVOKE TX HASH\n */\n\ntype Version = typeof ETransactionVersion.V3 | typeof ETransactionVersion.F3;\n\nfunction isV3InvokeTx(args: CalcInvokeTxHashArgs): args is CalcV3InvokeTxHashArgs {\n return [ETransactionVersion.V3, ETransactionVersion.F3].includes(args.version as Version);\n}\n\ntype CalcV2InvokeTxHashArgs = {\n senderAddress: BigNumberish;\n version: `${ETransactionVersion2}`;\n compiledCalldata: Calldata;\n maxFee: BigNumberish;\n chainId: StarknetChainId;\n nonce: BigNumberish;\n};\n\ntype CalcV3InvokeTxHashArgs = {\n senderAddress: BigNumberish;\n version: `${ETransactionVersion3}`;\n compiledCalldata: Calldata;\n chainId: StarknetChainId;\n nonce: BigNumberish;\n accountDeploymentData: BigNumberish[];\n nonceDataAvailabilityMode: EDAMode;\n feeDataAvailabilityMode: EDAMode;\n resourceBounds: ResourceBounds;\n tip: BigNumberish;\n paymasterData: BigNumberish[];\n};\n\ntype CalcInvokeTxHashArgs = CalcV2InvokeTxHashArgs | CalcV3InvokeTxHashArgs;\n\nexport function calculateInvokeTransactionHash(args: CalcInvokeTxHashArgs) {\n if (isV3InvokeTx(args)) {\n return v3calculateInvokeTransactionHash(\n args.senderAddress,\n args.version,\n args.compiledCalldata,\n args.chainId,\n args.nonce,\n args.accountDeploymentData,\n args.nonceDataAvailabilityMode,\n args.feeDataAvailabilityMode,\n args.resourceBounds,\n args.tip,\n args.paymasterData\n );\n }\n return v2calculateInvokeTransactionHash(\n args.senderAddress,\n args.version,\n args.compiledCalldata,\n args.maxFee,\n args.chainId,\n args.nonce\n );\n}\n\n/*\n * DECLARE TX HASH\n */\nfunction isV3DeclareTx(args: CalcDeclareTxHashArgs): args is CalcV3DeclareTxHashArgs {\n return [ETransactionVersion.V3, ETransactionVersion.F3].includes(args.version as Version);\n}\n\ntype CalcV2DeclareTxHashArgs = {\n classHash: string;\n senderAddress: BigNumberish;\n version: `${ETransactionVersion2}`;\n maxFee: BigNumberish;\n chainId: StarknetChainId;\n nonce: BigNumberish;\n compiledClassHash?: string;\n};\n\ntype CalcV3DeclareTxHashArgs = {\n classHash: string;\n compiledClassHash: string;\n senderAddress: BigNumberish;\n version: `${ETransactionVersion3}`;\n chainId: StarknetChainId;\n nonce: BigNumberish;\n accountDeploymentData: BigNumberish[];\n nonceDataAvailabilityMode: EDAMode;\n feeDataAvailabilityMode: EDAMode;\n resourceBounds: ResourceBounds;\n tip: BigNumberish;\n paymasterData: BigNumberish[];\n};\n\ntype CalcDeclareTxHashArgs = CalcV2DeclareTxHashArgs | CalcV3DeclareTxHashArgs;\n\nexport function calculateDeclareTransactionHash(args: CalcDeclareTxHashArgs) {\n if (isV3DeclareTx(args)) {\n return v3calculateDeclareTransactionHash(\n args.classHash,\n args.compiledClassHash,\n args.senderAddress,\n args.version,\n args.chainId,\n args.nonce,\n args.accountDeploymentData,\n args.nonceDataAvailabilityMode,\n args.feeDataAvailabilityMode,\n args.resourceBounds,\n args.tip,\n args.paymasterData\n );\n }\n\n return v2calculateDeclareTransactionHash(\n args.classHash,\n args.senderAddress,\n args.version,\n args.maxFee,\n args.chainId,\n args.nonce,\n args.compiledClassHash\n );\n}\n\n/*\n * DEPLOY ACCOUNT TX HASH\n */\n\nfunction isV3DeployAccountTx(\n args: CalcDeployAccountTxHashArgs\n): args is CalcV3DeployAccountTxHashArgs {\n return [ETransactionVersion.V3, ETransactionVersion.F3].includes(args.version as Version);\n}\n\ntype CalcV2DeployAccountTxHashArgs = {\n contractAddress: BigNumberish;\n classHash: BigNumberish;\n constructorCalldata: Calldata;\n salt: BigNumberish;\n version: `${ETransactionVersion2}`;\n maxFee: BigNumberish;\n chainId: StarknetChainId;\n nonce: BigNumberish;\n};\n\ntype CalcV3DeployAccountTxHashArgs = {\n contractAddress: BigNumberish;\n classHash: BigNumberish;\n compiledConstructorCalldata: Calldata;\n salt: BigNumberish;\n version: `${ETransactionVersion3}`;\n chainId: StarknetChainId;\n nonce: BigNumberish;\n nonceDataAvailabilityMode: EDAMode;\n feeDataAvailabilityMode: EDAMode;\n resourceBounds: ResourceBounds;\n tip: BigNumberish;\n paymasterData: BigNumberish[];\n};\n\ntype CalcDeployAccountTxHashArgs = CalcV2DeployAccountTxHashArgs | CalcV3DeployAccountTxHashArgs;\n\nexport function calculateDeployAccountTransactionHash(args: CalcDeployAccountTxHashArgs) {\n if (isV3DeployAccountTx(args)) {\n return v3calculateDeployAccountTransactionHash(\n args.contractAddress,\n args.classHash,\n args.compiledConstructorCalldata,\n args.salt,\n args.version,\n args.chainId,\n args.nonce,\n args.nonceDataAvailabilityMode,\n args.feeDataAvailabilityMode,\n args.resourceBounds,\n args.tip,\n args.paymasterData\n );\n }\n\n return v2calculateDeployAccountTransactionHash(\n args.contractAddress,\n args.classHash,\n args.constructorCalldata,\n args.salt,\n args.version,\n args.maxFee,\n args.chainId,\n args.nonce\n );\n}\n","/**\n * Class Hash\n */\n\nimport { poseidonHashMany } from '@scure/starknet';\n\nimport { ADDR_BOUND, API_VERSION } from '../../constants';\nimport {\n BigNumberish,\n Builtins,\n CompiledContract,\n CompiledSierra,\n CompiledSierraCasm,\n ContractEntryPointFields,\n LegacyCompiledContract,\n RawArgs,\n SierraContractEntryPointFields,\n} from '../../types';\nimport { CallData } from '../calldata';\nimport { felt } from '../calldata/cairo';\nimport { starkCurve } from '../ec';\nimport { addHexPrefix, utf8ToArray } from '../encode';\nimport { parse, stringify } from '../json';\nimport { toHex } from '../num';\nimport { encodeShortString, isString } from '../shortString';\n\nexport function computePedersenHash(a: BigNumberish, b: BigNumberish): string {\n return starkCurve.pedersen(BigInt(a), BigInt(b));\n}\n\nexport function computePoseidonHash(a: BigNumberish, b: BigNumberish): string {\n return toHex(starkCurve.poseidonHash(BigInt(a), BigInt(b)));\n}\n\n/**\n * Compute Pedersen hash from data\n *\n * @param {BigNumberish[]} data Array of data to compute Pedersen hash on\n * @returns {string} hex-string of Pedersen hash\n *\n * @example\n * ```typescript\n * const result = hash.computeHashOnElements(['0xabc', '0x123', '0xabc123'])\n * // result = 0x148141e8f7db29d005a0187669a56f0790d7e8c2c5b2d780e4d8b9e436a5521\n * ```\n */\nexport function computeHashOnElements(data: BigNumberish[]): string {\n return [...data, data.length]\n .reduce((x: BigNumberish, y: BigNumberish) => starkCurve.pedersen(BigInt(x), BigInt(y)), 0)\n .toString();\n}\n\nexport const computePedersenHashOnElements = computeHashOnElements;\n\nexport function computePoseidonHashOnElements(data: BigNumberish[]) {\n return toHex(poseidonHashMany(data.map((x) => BigInt(x))));\n}\n\n/**\n * Calculate contract address from class hash\n *\n * @param {BigNumberish} salt Salt to be used for hashing\n * @param {BigNumberish} classHash Class hash of contract to generate address for\n * @param {RawArgs} constructorCalldata Call data for contract constructor\n * @param {BigNumberish} deployerAddress Address of contract deployer\n * @returns {string} hex-string\n * @example\n * ```typescript\n * const result = hash.calculateContractAddressFromHash(1234, 0x1cf4fe5d37868d25524cdacb89518d88bf217a9240a1e6fde71cc22c429e0e3, [1234, true, false], 0x052fb1a9ab0db3c4f81d70fea6a2f6e55f57c709a46089b25eeec0e959db3695);\n * // result = 0x5fb03d3a88d8e474976932f927ff6a9e332e06ed36642ea3e8c7e38bf010f76\n * ```\n */\nexport function calculateContractAddressFromHash(\n salt: BigNumberish,\n classHash: BigNumberish,\n constructorCalldata: RawArgs,\n deployerAddress: BigNumberish\n): string {\n const compiledCalldata = CallData.compile(constructorCalldata);\n const constructorCalldataHash = computeHashOnElements(compiledCalldata);\n\n const CONTRACT_ADDRESS_PREFIX = felt('0x535441524b4e45545f434f4e54524143545f41444452455353'); // Equivalent to 'STARKNET_CONTRACT_ADDRESS'\n\n const hash = computeHashOnElements([\n CONTRACT_ADDRESS_PREFIX,\n deployerAddress,\n salt,\n classHash,\n constructorCalldataHash,\n ]);\n return toHex(BigInt(hash) % ADDR_BOUND);\n}\n\nfunction nullSkipReplacer(key: string, value: any) {\n if (key === 'attributes' || key === 'accessible_scopes') {\n return Array.isArray(value) && value.length === 0 ? undefined : value;\n }\n\n if (key === 'debug_info') {\n return null;\n }\n\n return value === null ? undefined : value;\n}\n\n/**\n * Format json-string without spaces to conform starknet json-string\n * @param {string} json json-string without spaces\n * @returns {string} json-string with additional spaces after `:` and `,`\n * @example\n * ```typescript\n * const result = hash.formatSpaces(\"{'onchain':true,'isStarknet':true}\");\n * // result = \"{'onchain': true, 'isStarknet': true}\"\n * ```\n */\nexport function formatSpaces(json: string): string {\n let insideQuotes = false;\n const newString = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const char of json) {\n if (char === '\"' && (newString.length > 0 && newString.slice(-1)[0] === '\\\\') === false) {\n insideQuotes = !insideQuotes;\n }\n if (insideQuotes) {\n newString.push(char);\n } else {\n // eslint-disable-next-line no-nested-ternary\n newString.push(char === ':' ? ': ' : char === ',' ? ', ' : char);\n }\n }\n return newString.join('');\n}\n\n/**\n * Compute hinted class hash for legacy compiled contract (Cairo 0)\n * @param {LegacyCompiledContract} compiledContract\n * @returns {string} hex-string\n * @example\n * ```typescript\n * const compiledCairo0 = json.parse(fs.readFileSync(\"./cairo0contract.json\").toString(\"ascii\"));\n * const result=hash.computeHintedClassHash(compiledCairo0);\n * // result = \"0x293eabb06955c0a1e55557014675aa4e7a1fd69896147382b29b2b6b166a2ac\"\n * ``` */\nexport function computeHintedClassHash(compiledContract: LegacyCompiledContract): string {\n const { abi, program } = compiledContract;\n const contractClass = { abi, program };\n const serializedJson = formatSpaces(stringify(contractClass, nullSkipReplacer));\n return addHexPrefix(starkCurve.keccak(utf8ToArray(serializedJson)).toString(16));\n}\n\n/**\n * Computes the class hash for legacy compiled contract (Cairo 0)\n * @param {LegacyCompiledContract | string} contract legacy compiled contract content\n * @returns {string} hex-string of class hash\n * @example\n * ```typescript\n * const compiledCairo0 = json.parse(fs.readFileSync(\"./cairo0contract.json\").toString(\"ascii\"));\n * const result=hash.computeLegacyContractClassHash(compiledCairo0);\n * // result = \"0x4a5cae61fa8312b0a3d0c44658b403d3e4197be80027fd5020ffcdf0c803331\"\n * ```\n */\nexport function computeLegacyContractClassHash(contract: LegacyCompiledContract | string) {\n const compiledContract = isString(contract)\n ? (parse(contract) as LegacyCompiledContract)\n : contract;\n\n const apiVersion = toHex(API_VERSION);\n\n const externalEntryPointsHash = computeHashOnElements(\n compiledContract.entry_points_by_type.EXTERNAL.flatMap((e) => [e.selector, e.offset])\n );\n\n const l1HandlerEntryPointsHash = computeHashOnElements(\n compiledContract.entry_points_by_type.L1_HANDLER.flatMap((e) => [e.selector, e.offset])\n );\n\n const constructorEntryPointHash = computeHashOnElements(\n compiledContract.entry_points_by_type.CONSTRUCTOR.flatMap((e) => [e.selector, e.offset])\n );\n\n const builtinsHash = computeHashOnElements(\n compiledContract.program.builtins.map((s) => encodeShortString(s))\n );\n\n const hintedClassHash = computeHintedClassHash(compiledContract);\n\n const dataHash = computeHashOnElements(compiledContract.program.data);\n\n return computeHashOnElements([\n apiVersion,\n externalEntryPointsHash,\n l1HandlerEntryPointsHash,\n constructorEntryPointHash,\n builtinsHash,\n hintedClassHash,\n dataHash,\n ]);\n}\n\n// Cairo 1 Contract Hashes\n\nfunction hashBuiltins(builtins: Builtins) {\n return poseidonHashMany(\n builtins.flatMap((it: any) => {\n return BigInt(encodeShortString(it));\n })\n );\n}\n\nfunction hashEntryPoint(data: ContractEntryPointFields[]) {\n const base = data.flatMap((it: any) => {\n return [BigInt(it.selector), BigInt(it.offset), hashBuiltins(it.builtins)];\n });\n return poseidonHashMany(base);\n}\n\n/**\n * Compute hash of the bytecode for Sierra v1.5.0 onwards (Cairo 2.6.0)\n * Each segment is Poseidon hashed.\n * The global hash is : 1 + PoseidonHash(len0, h0, len1, h1, ...)\n * @param {CompiledSierraCasm} casm compiled Sierra CASM file content.\n * @returns {bigint} the bytecode hash as bigint.\n * @example\n * ```typescript\n * const compiledCasm = json.parse(fs.readFileSync(\"./contractC260.casm.json\").toString(\"ascii\"));\n * const result = hash.hashByteCodeSegments(compiledCasm);\n * // result = 80499149343908132326491548897246987792410240503053732367044713070598981699n\n * ```\n */\nexport function hashByteCodeSegments(casm: CompiledSierraCasm): bigint {\n const byteCode: bigint[] = casm.bytecode.map((n) => BigInt(n));\n const bytecodeSegmentLengths: number[] = casm.bytecode_segment_lengths ?? [];\n let segmentStart = 0;\n const hashLeaves = bytecodeSegmentLengths.flatMap((len) => {\n const segment = byteCode.slice(segmentStart, (segmentStart += len));\n return [BigInt(len), poseidonHashMany(segment)];\n });\n return 1n + poseidonHashMany(hashLeaves);\n}\n\n/**\n * Compute compiled class hash for contract (Cairo 1)\n * @param {CompiledSierraCasm} casm Cairo 1 compiled contract content\n * @returns {string} hex-string of class hash\n * @example \n * ```typescript\n * const compiledCasm = json.parse(fs.readFileSync(\"./cairo260.casm.json\").toString(\"ascii\"));\n * const result = hash.computeCompiledClassHash(compiledCasm);\n * // result = \"0x4087905743b4fa2b3affc1fc71333f1390c8c5d1e8ea47d6ba70786de3fc01a\"\n```\n */\nexport function computeCompiledClassHash(casm: CompiledSierraCasm): string {\n const COMPILED_CLASS_VERSION = 'COMPILED_CLASS_V1';\n\n // Hash compiled class version\n const compiledClassVersion = BigInt(encodeShortString(COMPILED_CLASS_VERSION));\n\n // Hash external entry points.\n const externalEntryPointsHash = hashEntryPoint(casm.entry_points_by_type.EXTERNAL);\n\n // Hash L1 handler entry points.\n const l1Handlers = hashEntryPoint(casm.entry_points_by_type.L1_HANDLER);\n\n // Hash constructor entry points.\n const constructor = hashEntryPoint(casm.entry_points_by_type.CONSTRUCTOR);\n\n // Hash bytecode.\n const bytecode = casm.bytecode_segment_lengths\n ? hashByteCodeSegments(casm)\n : poseidonHashMany(casm.bytecode.map((it: string) => BigInt(it)));\n\n return toHex(\n poseidonHashMany([\n compiledClassVersion,\n externalEntryPointsHash,\n l1Handlers,\n constructor,\n bytecode,\n ])\n );\n}\n\nfunction hashEntryPointSierra(data: SierraContractEntryPointFields[]) {\n const base = data.flatMap((it: any) => {\n return [BigInt(it.selector), BigInt(it.function_idx)];\n });\n return poseidonHashMany(base);\n}\n\nfunction hashAbi(sierra: CompiledSierra) {\n const indentString = formatSpaces(stringify(sierra.abi, null));\n return BigInt(addHexPrefix(starkCurve.keccak(utf8ToArray(indentString)).toString(16)));\n}\n\n/**\n * Compute sierra contract class hash (Cairo 1)\n * @param {CompiledSierra} sierra Cairo 1 Sierra contract content\n * @returns {string} hex-string of class hash\n * @example \n * ```typescript\n * const compiledSierra = json.parse(fs.readFileSync(\"./cairo260.sierra.json\").toString(\"ascii\"));\n * const result = hash.computeSierraContractClassHash(compiledSierra);\n * // result = \"0x67b6b4f02baded46f02feeed58c4f78e26c55364e59874d8abfd3532d85f1ba\"\n```\n */\nexport function computeSierraContractClassHash(sierra: CompiledSierra): string {\n const CONTRACT_CLASS_VERSION = 'CONTRACT_CLASS_V0.1.0';\n\n // Hash class version\n const compiledClassVersion = BigInt(encodeShortString(CONTRACT_CLASS_VERSION));\n\n // Hash external entry points.\n const externalEntryPointsHash = hashEntryPointSierra(sierra.entry_points_by_type.EXTERNAL);\n\n // Hash L1 handler entry points.\n const l1Handlers = hashEntryPointSierra(sierra.entry_points_by_type.L1_HANDLER);\n\n // Hash constructor entry points.\n const constructor = hashEntryPointSierra(sierra.entry_points_by_type.CONSTRUCTOR);\n\n // Hash abi_hash.\n const abiHash = hashAbi(sierra);\n\n // Hash Sierra program.\n const sierraProgram = poseidonHashMany(sierra.sierra_program.map((it: string) => BigInt(it)));\n\n return toHex(\n poseidonHashMany([\n compiledClassVersion,\n externalEntryPointsHash,\n l1Handlers,\n constructor,\n abiHash,\n sierraProgram,\n ])\n );\n}\n\n/**\n * Compute ClassHash (sierra or legacy) based on provided contract\n * @param {CompiledContract | string} contract Cairo 1 contract content\n * @returns {string} hex-string of class hash\n * @example \n * ```typescript\n * const compiledSierra = json.parse(fs.readFileSync(\"./cairo260.sierra.json\").toString(\"ascii\"));\n * const result = hash.computeContractClassHash(compiledSierra);\n * // result = \"0x67b6b4f02baded46f02feeed58c4f78e26c55364e59874d8abfd3532d85f1ba\"\n```\n */\nexport function computeContractClassHash(contract: CompiledContract | string): string {\n const compiledContract = isString(contract) ? parse(contract) : contract;\n\n if ('sierra_program' in compiledContract) {\n return computeSierraContractClassHash(compiledContract as CompiledSierra);\n }\n\n return computeLegacyContractClassHash(compiledContract as LegacyCompiledContract);\n}\n","import * as json from 'lossless-json';\n\n/**\n * Helper to convert string to number or bigint based on size\n */\nconst parseIntAsNumberOrBigInt = (str: string) => {\n if (!json.isInteger(str)) return parseFloat(str);\n const num = parseInt(str, 10);\n return Number.isSafeInteger(num) ? num : BigInt(str);\n};\n\n/**\n * Convert JSON string to JSON object\n *\n * NOTE: the String() wrapping is used so the behavior conforms to JSON.parse()\n * which can accept simple data types but is not represented in the default typing\n *\n * @param str JSON string\n * @return {object} Parsed json object\n * @example\n * ```typescript\n * const str = '[123, 12.3, 11223344556677889900]';\n * const result = parse(str);\n * // result = [123, 12.3, 11223344556677890048n]\n * ```\n */\nexport const parse = (str: string): any =>\n json.parse(String(str), undefined, parseIntAsNumberOrBigInt);\n\n/**\n * Convert JSON string to JSON object with all numbers as bigint\n * @param str JSON string\n * @return {object} Parsed json object\n * @example\n * ```typescript\n * const str = '[123, 12.3, 1234567890]';\n * const result = parseAlwaysAsBig(str);\n * // result = [123n, 12.3, 1234567890n]\n * ```\n */\nexport const parseAlwaysAsBig = (str: string): any =>\n json.parse(String(str), undefined, json.parseNumberAndBigInt);\n\n/**\n * Convert JSON object to JSON string\n *\n * NOTE: the not-null assertion is used so the return type conforms to JSON.stringify()\n * which can also return undefined but is not represented in the default typing\n *\n * @param value JSON object\n * @param [replacer] Function that alters the behavior of the stringification process\n * @param [space] Used to insert white space into the output JSON string\n * @param [numberStringifiers] Function used to stringify numbers (returning undefined will delete the property from the object)\n * @return {string} JSON string\n * @example\n * ```typescript\n * const value = [123, 12.3, 1234567890];\n * const result = stringify(value);\n * // result = '[123,12.3,1234567890]'\n * ```\n */\nexport const stringify = (\n value: unknown,\n replacer?: any,\n space?: string | number | undefined,\n numberStringifiers?: json.NumberStringifier[] | undefined\n): string => json.stringify(value, replacer, space, numberStringifiers)!;\n\n/** @deprecated equivalent to 'stringify', alias will be removed */\nexport const stringifyAlwaysAsBig = stringify;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { SPEC } from 'starknet-types-07';\nimport { getStarkKey, utils } from '@scure/starknet';\nimport { gzip, ungzip } from 'pako';\n\nimport { ZERO, FeeMarginPercentage } from '../constants';\nimport {\n ArraySignatureType,\n BigNumberish,\n CompressedProgram,\n Program,\n Signature,\n UniversalDetails,\n} from '../types';\nimport { EDAMode, EDataAvailabilityMode, ETransactionVersion, ResourceBounds } from '../types/api';\nimport { FeeEstimate } from '../types/provider';\nimport { addHexPrefix, arrayBufferToString, atobUniversal, btoaUniversal } from './encode';\nimport { parse, stringify } from './json';\nimport {\n addPercent,\n bigNumberishArrayToDecimalStringArray,\n bigNumberishArrayToHexadecimalStringArray,\n isBigInt,\n toHex,\n} from './num';\nimport { isString } from './shortString';\n\n/**\n * Compress compiled Cairo 0 program\n *\n * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/services/api/gateway/transaction.py#L54-L58)\n * @param {Program | string} jsonProgram Representing the compiled Cairo 0 program\n * @return {CompressedProgram} Compressed Cairo 0 program\n * @example\n * ```typescript\n * const contractCairo0 = json.parse(fs.readFileSync(\"./cairo0contract.json\").toString(\"ascii\"));\n * const result = stark.compressProgram(contractCairo0);\n * // result = \"H4sIAAAAAAAAA+1dC4/bOJL+K4aBu01me7r5EEUyixzQk/TuB...\"\n * ```\n */\nexport function compressProgram(jsonProgram: Program | string): CompressedProgram {\n const stringified = isString(jsonProgram) ? jsonProgram : stringify(jsonProgram);\n const compressedProgram = gzip(stringified);\n return btoaUniversal(compressedProgram);\n}\n\n/**\n * Decompress compressed compiled Cairo 0 program\n * @param {CompressedProgram} base64 Compressed Cairo 0 program\n * @returns {Object | CompressedProgram} Parsed decompressed compiled Cairo 0 program\n * @example\n * ```typescript\n * const contractCairo0 = json.parse(fs.readFileSync(\"./cairo0contract.json\").toString(\"ascii\"));\n * const compressedCairo0 = stark.compressProgram(contractCairo0);\n * const result = stark.decompressProgram(compressedCairo0);\n * // result = {\n * // abi: [\n * // {\n * // inputs: [Array],\n * // name: 'increase_balance',\n * // outputs: [],\n * // type: 'function'\n * // }\n * // ],\n * // entry_points_by_type: { CONSTRUCTOR: [], EXTERNAL: [ [Object], [Object] ], L1_HANDLER: [] },\n * // program: {\n * // attributes: [],\n * // builtins: [ 'pedersen', 'range_check' ],\n * // compiler_version: '0.10.2',\n * // data: [\n * // '0x480680017fff8000',\n * // ...\n * ```\n */\nexport function decompressProgram(base64: CompressedProgram) {\n if (Array.isArray(base64)) return base64;\n const decompressed = arrayBufferToString(ungzip(atobUniversal(base64)));\n return parse(decompressed);\n}\n\n/**\n * Random Address based on random keyPair\n * @returns {string} an hex string of a random Starknet address\n * @example\n * ```typescript\n * const result = stark.randomAddress();\n * // result = \"0x51fc8126a13cd5ddb29a71ca399cb1e814f086f5af1b502d7151c14929554f\"\n * ```\n */\nexport function randomAddress(): string {\n const randomKeyPair = utils.randomPrivateKey();\n return getStarkKey(randomKeyPair);\n}\n\n/**\n * Lowercase and hex prefix string\n *\n * @deprecated Not used internally, naming is confusing based on functionality\n */\nexport function makeAddress(input: string): string {\n return addHexPrefix(input).toLowerCase();\n}\n\n/**\n * Format Signature to standard type (hex array)\n * @param {Signature} [sig]\n * @returns {ArraySignatureType} Custom hex string array\n * @throws {Error} if sig not defined, or wrong format\n * @example\n * ```typescript\n * const signature = ec.starkCurve.sign(\"0x12de34\", \"0x3487123eac\");\n * const result = stark.formatSignature(signature);\n * // result = ['0xba8eecee2d69c417e8c6a20cf331c821f716b58ba9e47166c7476afdb38997',\n * // '0x69ef7438c94104839a6e2aa2385482a77399d2f46e894ae4f50ab6d69239d1c']\n * ```\n */\nexport function formatSignature(sig?: Signature): ArraySignatureType {\n if (!sig) throw Error('formatSignature: provided signature is undefined');\n if (Array.isArray(sig)) {\n return sig.map((it) => toHex(it));\n }\n try {\n const { r, s } = sig;\n return [toHex(r), toHex(s)];\n } catch (e) {\n throw new Error('Signature need to be weierstrass.SignatureType or an array for custom');\n }\n}\n\n/**\n * Format Signature to decimal string array\n * @param {Signature} [sig]\n * @returns {ArraySignatureType} Custom hex string array\n * @throws {Error} if sig not defined, or wrong format\n * @example\n * ```typescript\n * const signature = ec.starkCurve.sign(\"0x12de34\", \"0x3487123eac\");\n * const result = stark.signatureToDecimalArray(signature);\n * // result = ['329619989660444495690615805546674399714973829707166906185976654753023887767',\n * // '2994745480203297689255012826403147585778741462125743754529207781488706428188']\n * ```\n */\nexport function signatureToDecimalArray(sig?: Signature): ArraySignatureType {\n return bigNumberishArrayToDecimalStringArray(formatSignature(sig));\n}\n\n/**\n * Format Signature to hex string array\n * @param {Signature} [sig]\n * @returns {ArraySignatureType} Custom hex string array\n * @throws {Error} if sig not defined, or wrong format\n * @example\n * ```typescript\n * const signature = ec.starkCurve.sign(\"0x12de34\", \"0x3487123eac\");\n * const result = stark.signatureToHexArray(signature);\n * // result = ['0xba8eecee2d69c417e8c6a20cf331c821f716b58ba9e47166c7476afdb38997',\n * // '0x69ef7438c94104839a6e2aa2385482a77399d2f46e894ae4f50ab6d69239d1c']\n * ```\n */\nexport function signatureToHexArray(sig?: Signature): ArraySignatureType {\n return bigNumberishArrayToHexadecimalStringArray(formatSignature(sig));\n}\n\n/**\n * Convert estimated fee to max fee including a margin\n * @param {BigNumberish} estimatedFee - The estimated fee\n * @param {number} [overhead = feeMarginPercentage.MAX_FEE] - The overhead added to the gas\n * @returns {bigint} The maximum fee with the margin\n * @example\n * ```typescript\n * const result = stark.estimatedFeeToMaxFee(\"8982300000000\", 50);\n * // result = \"13473450000000n\"\n * ```\n */\nexport function estimatedFeeToMaxFee(\n estimatedFee: BigNumberish,\n overhead: number = FeeMarginPercentage.MAX_FEE\n): bigint {\n return addPercent(estimatedFee, overhead);\n}\n\n/**\n * Calculates the maximum resource bounds for fee estimation.\n *\n * @param {FeeEstimate | 0n} estimate The estimate for the fee. If a BigInt is provided, the returned bounds will be set to '0x0'.\n * @param {number} [amountOverhead = feeMarginPercentage.L1_BOUND_MAX_AMOUNT] - The percentage overhead added to the gas consumed or overall fee amount.\n * @param {number} [priceOverhead = feeMarginPercentage.L1_BOUND_MAX_PRICE_PER_UNIT] The percentage overhead added to the gas price per unit.\n * @returns {ResourceBounds} The maximum resource bounds for fee estimation.\n * @throws {Error} If the estimate object is undefined or does not have the required properties.\n * @example\n * ```typescript\n * const feeEstimated: FeeEstimate = {\n gas_consumed: \"0x3456a\",\n gas_price: \"0xa45567567567ae4\",\n overall_fee: \"0x2198F463A77A899A5668\",\n unit: \"WEI\"\n};\nconst result = stark.estimateFeeToBounds(feeEstimated, 70, 50);\n * // result = {\n * // l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' },\n * // l1_gas: { max_amount: '0x58f9a', max_price_per_unit: '0xf6801b01b01b856' }\n * // }\n * ```\n */\nexport function estimateFeeToBounds(\n estimate: FeeEstimate | 0n,\n amountOverhead: number = FeeMarginPercentage.L1_BOUND_MAX_AMOUNT,\n priceOverhead: number = FeeMarginPercentage.L1_BOUND_MAX_PRICE_PER_UNIT\n): ResourceBounds {\n if (isBigInt(estimate)) {\n return {\n l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' },\n l1_gas: { max_amount: '0x0', max_price_per_unit: '0x0' },\n };\n }\n\n if (typeof estimate.gas_consumed === 'undefined' || typeof estimate.gas_price === 'undefined') {\n throw Error('estimateFeeToBounds: estimate is undefined');\n }\n\n const maxUnits =\n estimate.data_gas_consumed !== undefined && estimate.data_gas_price !== undefined // RPC v0.7\n ? toHex(addPercent(BigInt(estimate.overall_fee) / BigInt(estimate.gas_price), amountOverhead))\n : toHex(addPercent(estimate.gas_consumed, amountOverhead));\n const maxUnitPrice = toHex(addPercent(estimate.gas_price, priceOverhead));\n return {\n l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' },\n l1_gas: { max_amount: maxUnits, max_price_per_unit: maxUnitPrice },\n };\n}\n\n/**\n * Converts the data availability mode from EDataAvailabilityMode to EDAMode.\n *\n * @param {EDataAvailabilityMode} dam The data availability mode to be converted.\n * @return {EDAMode} The converted data availability mode.\n * @throws {Error} If the data availability mode is not a valid value.\n * @example\n * ```typescript\n * const result = stark.intDAM(RPC.EDataAvailabilityMode.L1);\n * // result = 0\n * ```\n */\nexport function intDAM(dam: EDataAvailabilityMode): EDAMode {\n if (dam === EDataAvailabilityMode.L1) return EDAMode.L1;\n if (dam === EDataAvailabilityMode.L2) return EDAMode.L2;\n throw Error('EDAM conversion');\n}\n\n/**\n * Convert to ETransactionVersion or throw an error.\n * Return providedVersion is specified else return defaultVersion\n * @param {BigNumberish} defaultVersion default estimate transaction version\n * @param {BigNumberish} [providedVersion] estimate transaction version\n * @returns {ETransactionVersion} if providedVersion is not provided, returns the default estimate version, else return the provided version\n * @throws {Error} if estimate transaction version or default estimate transaction version is unknown\n * @example\n * ```typescript\n * const result = stark.toTransactionVersion(\"0x100000000000000000000000000000003\", stark.toFeeVersion(2));\n * // result = \"0x100000000000000000000000000000002\"\n * ```\n */\nexport function toTransactionVersion(\n defaultVersion: BigNumberish,\n providedVersion?: BigNumberish\n): ETransactionVersion {\n const providedVersion0xs = providedVersion ? toHex(providedVersion) : undefined;\n const defaultVersion0xs = toHex(defaultVersion);\n\n if (providedVersion && !Object.values(ETransactionVersion).includes(providedVersion0xs as any)) {\n throw Error(`providedVersion ${providedVersion} is not ETransactionVersion`);\n }\n if (!Object.values(ETransactionVersion).includes(defaultVersion0xs as any)) {\n throw Error(`defaultVersion ${defaultVersion} is not ETransactionVersion`);\n }\n\n return (providedVersion ? providedVersion0xs : defaultVersion0xs) as ETransactionVersion;\n}\n\n/**\n * Convert Transaction version to Fee version or throw an error\n * @param {BigNumberish} [providedVersion] 0..3 number representing the transaction version\n * @returns {ETransactionVersion} the fee estimation version corresponding to the transaction version provided\n * @throws {Error} if the transaction version is unknown\n * @example\n * ```typescript\n * const result = stark.toFeeVersion(2);\n * // result = \"0x100000000000000000000000000000002\"\n * ```\n */\nexport function toFeeVersion(providedVersion?: BigNumberish) {\n if (!providedVersion) return undefined;\n const version = toHex(providedVersion);\n\n if (version === ETransactionVersion.V0) return ETransactionVersion.F0;\n if (version === ETransactionVersion.V1) return ETransactionVersion.F1;\n if (version === ETransactionVersion.V2) return ETransactionVersion.F2;\n if (version === ETransactionVersion.V3) return ETransactionVersion.F3;\n\n throw Error(`toFeeVersion: ${version} is not supported`);\n}\n\n/**\n * Return provided or default v3 tx details\n * @param {UniversalDetails} details details of the transaction\n * @return {} an object including the V3 transaction details.\n * @example\n * ```typescript\n * const detail: UniversalDetails = { tip: 3456n };\n * const result = stark.v3Details(detail);\n * // result = {\n * // tip: 3456n,\n * // paymasterData: [],\n * // accountDeploymentData: [],\n * // nonceDataAvailabilityMode: 'L1',\n * // feeDataAvailabilityMode: 'L1',\n * // resourceBounds: {\n * // l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' },\n * // l1_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }\n * // }\n * // }\n * ```\n */\nexport function v3Details(details: UniversalDetails) {\n return {\n tip: details.tip || 0,\n paymasterData: details.paymasterData || [],\n accountDeploymentData: details.accountDeploymentData || [],\n nonceDataAvailabilityMode: details.nonceDataAvailabilityMode || EDataAvailabilityMode.L1,\n feeDataAvailabilityMode: details.feeDataAvailabilityMode || EDataAvailabilityMode.L1,\n resourceBounds: details.resourceBounds ?? estimateFeeToBounds(ZERO),\n };\n}\n\n/**\n * It will reduce V2 to V1, else (V3) stay the same\n * F2 -> F1\n * V2 -> V1\n * F3 -> F3\n * V3 -> V3\n * @param {ETransactionVersion} providedVersion\n * @returns {ETransactionVersion} if v2 then returns v1. if v3 then return v3\n * @example\n * ```typescript\n * const result = stark.reduceV2(constants.TRANSACTION_VERSION.V2);\n * // result = \"0x1\"\n * ```\n */\nexport function reduceV2(providedVersion: ETransactionVersion): ETransactionVersion {\n if (providedVersion === ETransactionVersion.F2) return ETransactionVersion.F1;\n if (providedVersion === ETransactionVersion.V2) return ETransactionVersion.V1;\n return providedVersion;\n}\n","import { ContractClassResponse } from '../types';\nimport {\n CairoContract,\n CompiledSierra,\n LegacyCompiledContract,\n LegacyContractClass,\n SierraContractClass,\n} from '../types/lib/contract/index';\nimport { CompleteDeclareContractPayload, DeclareContractPayload } from '../types/lib/index';\nimport { computeCompiledClassHash, computeContractClassHash } from './hash';\nimport { parse } from './json';\nimport { decompressProgram } from './stark';\n\nimport { isString } from './shortString';\n\n/**\n * Checks if a given contract is in Sierra (Safe Intermediate Representation) format.\n *\n * @param {CairoContract | string} contract - The contract to check. Can be either a CairoContract object or a string representation of the contract.\n * @return {boolean} - Returns true if the contract is a Sierra contract, otherwise false.\n * @example\n * ```typescript\n * const result = isSierra(contract);\n * // result = true | false\n * ```\n */\nexport function isSierra(\n contract: CairoContract | string\n): contract is SierraContractClass | CompiledSierra {\n const compiledContract = isString(contract) ? parse(contract) : contract;\n return 'sierra_program' in compiledContract;\n}\n\n/**\n * Extracts contract hashes from `DeclareContractPayload`.\n *\n * @param {DeclareContractPayload} payload - The payload containing contract information.\n * @return {CompleteDeclareContractPayload} - The `CompleteDeclareContractPayload` with extracted contract hashes.\n * @throws {Error} - If extraction of compiledClassHash or classHash fails.\n * @example\n * ```typescript\n * const result = extractContractHashes(contract);\n * // result = {\n * // contract: ...,\n * // classHash: ...,\n * // casm: ...,\n * // compiledClassHash: ...,\n * // }\n * ```\n */\nexport function extractContractHashes(\n payload: DeclareContractPayload\n): CompleteDeclareContractPayload {\n const response = { ...payload } as CompleteDeclareContractPayload;\n\n if (isSierra(payload.contract)) {\n if (!payload.compiledClassHash && payload.casm) {\n response.compiledClassHash = computeCompiledClassHash(payload.casm);\n }\n if (!response.compiledClassHash)\n throw new Error(\n 'Extract compiledClassHash failed, provide (CairoAssembly).casm file or compiledClassHash'\n );\n }\n\n response.classHash = payload.classHash ?? computeContractClassHash(payload.contract);\n if (!response.classHash)\n throw new Error('Extract classHash failed, provide (CompiledContract).json file or classHash');\n\n return response;\n}\n\n/**\n * Helper to redeclare response Cairo0 contract\n */\nexport function contractClassResponseToLegacyCompiledContract(ccr: ContractClassResponse) {\n if (isSierra(ccr)) {\n throw Error('ContractClassResponse need to be LegacyContractClass (cairo0 response class)');\n }\n const contract = ccr as LegacyContractClass;\n return { ...contract, program: decompressProgram(contract.program) } as LegacyCompiledContract;\n}\n","import { secp256k1 } from '@noble/curves/secp256k1';\n\nimport { addHexPrefix, buf2hex, removeHexPrefix, sanitizeHex } from './encode';\nimport type { BigNumberish } from '../types';\nimport { assertInRange, toHex } from './num';\nimport { ZERO } from '../constants';\nimport assert from './assert';\n\n/**\n * Get random Ethereum private Key.\n * @returns an Hex string\n * @example\n * ```typescript\n * const myPK: string = randomAddress()\n * // result = \"0xf04e69ac152fba37c02929c2ae78c9a481461dda42dbc6c6e286be6eb2a8ab83\"\n * ```\n */\nexport function ethRandomPrivateKey(): string {\n return sanitizeHex(buf2hex(secp256k1.utils.randomPrivateKey()));\n}\n\n/**\n * Get a string formatted for an Ethereum address, without uppercase characters.\n * @param {BigNumberish} address Address of an Ethereum account.\n * @returns an Hex string coded on 20 bytes\n * @example\n * ```typescript\n * const myEthAddress: string = validateAndParseEthAddress(\"0x8359E4B0152ed5A731162D3c7B0D8D56edB165\")\n * // result = \"0x008359e4b0152ed5a731162d3c7b0d8d56edb165\"\n * ```\n */\nexport function validateAndParseEthAddress(address: BigNumberish): string {\n assertInRange(address, ZERO, 2n ** 160n - 1n, 'Ethereum Address ');\n const result = addHexPrefix(removeHexPrefix(toHex(address)).padStart(40, '0'));\n assert(Boolean(result.match(/^(0x)?[0-9a-f]{40}$/)), 'Invalid Ethereum Address Format');\n return result;\n}\n","// the ts-ignore suppresses an esm to cjs import error that is resolved with entry point resolution\n// @ts-ignore\nimport makeFetchCookie from 'fetch-cookie';\nimport isomorphicFetch from 'isomorphic-fetch';\n\nexport default (typeof window !== 'undefined' && window.fetch) || // use buildin fetch in browser if available\n (typeof global !== 'undefined' && makeFetchCookie(global.fetch)) || // use buildin fetch in node, react-native and service worker if available\n isomorphicFetch; // ponyfill fetch in node and browsers that don't have it\n","import { NetworkName, RPC_NODES } from '../constants';\nimport {\n BlockIdentifier,\n BlockTag,\n CompiledContract,\n CompiledSierra,\n ContractClass,\n GetBlockResponse,\n InvocationsDetailsWithNonce,\n LegacyContractClass,\n PendingBlock,\n PendingStateUpdate,\n SierraContractClass,\n StateUpdateResponse,\n V3TransactionDetails,\n} from '../types';\nimport { ETransactionVersion } from '../types/api';\nimport { isSierra } from './contract';\nimport { formatSpaces } from './hash';\nimport { parse, stringify } from './json';\nimport { isBigInt, isHex, isNumber, toHex } from './num';\nimport { isDecimalString, isString } from './shortString';\nimport { compressProgram } from './stark';\nimport type { GetTransactionReceiptResponse } from './transactionReceipt';\n\n/**\n * Helper - Async Sleep for 'delay' time\n *\n * @param {number} delay - Number of milliseconds to delay\n * @returns {Promise}\n * @example\n * ```typescript\n * await provider.wait(1000) // 1000 milliseconds == 1 second\n * ```\n */\nexport function wait(delay: number): Promise {\n return new Promise((res) => {\n setTimeout(res, delay);\n });\n}\n\n/**\n * Create Sierra compressed Contract Class from a given Compiled Sierra\n *\n * CompiledSierra -> SierraContractClass\n * \n * @param {CompiledSierra} contract sierra code from the Cairo compiler\n * @returns {SierraContractClass} compressed Sierra\n * @example\n * ```typescript\n * const result = provider.createSierraContractClass({\n \"sierra_program\": [\n \"0x1\",\n \"0x4\",\n \"0x0\",\n \"0x2\",\n \"0x4\",\n \"0x1\",\n \"0x3b4\",\n \"0x4c\",\n \"0x65\",\n \"0x52616e6765436865636b\",...})\n * // result = {sierra_program: 'H4sIAAAAAAAAA6x9WZbsrI7uVGqd53qgb8ZynwzYY7jDv5JAAmxHZuQ+96yq/L0jIzEINZ8axP/5j/q/+j//+z/wH9f/o/p/zPbh+Iot49+u9v8G3//rTdDhDDF4Z0MKPthQ+m+S2v6n1S//638VvdXW2PQ6RvxuDG+jiybCXKJ7Hef6ZRi9E+Q89WmKLilfqbrsL6PUCf8...}\n * ```\n */\nexport function createSierraContractClass(contract: CompiledSierra): SierraContractClass {\n const result = { ...contract } as any;\n delete result.sierra_program_debug_info;\n result.abi = formatSpaces(stringify(contract.abi));\n result.sierra_program = formatSpaces(stringify(contract.sierra_program));\n result.sierra_program = compressProgram(result.sierra_program);\n return result;\n}\n\n/**\n * Create a compressed contract from a given compiled Cairo 0 & 1 contract or a string.\n * @param {CompiledContract | string} contract - Compiled Cairo 0 or Cairo 1 contract, or string\n * @returns {ContractClass} Cairo 0 or Cairo 1 compressed contract\n * @example\n * ```typescript\n * const result = provider.parseContract({\n \"sierra_program\": [\n \"0x1\",\n \"0x4\",\n \"0x0\",\n \"0x2\",\n \"0x4\",\n \"0x1\",\n \"0x3b4\",\n \"0x4c\",\n \"0x65\",\n \"0x52616e6765436865636b\",...})\n * // result = {sierra_program: 'H4sIAAAAAAAAA6x9WZbsrI7uVGqd53qgb8ZynwzYY7jDv5JAAmxHZuQ+96yq/L0jIzEINZ8axP/5j/q/+j//+z/wH9f/o/p/zPbh+Iot49+u9v8G3//rTdDhDDF4Z0MKPthQ+m+S2v6n1S//638VvdXW2PQ6RvxuDG+jiybCXKJ7Hef6ZRi9E+Q89WmKLilfqbrsL6PUCf8...}\n * ```\n */\nexport function parseContract(contract: CompiledContract | string): ContractClass {\n const parsedContract = isString(contract) ? (parse(contract) as CompiledContract) : contract;\n\n if (!isSierra(contract)) {\n return {\n ...parsedContract,\n ...('program' in parsedContract && { program: compressProgram(parsedContract.program) }),\n } as LegacyContractClass;\n }\n\n return createSierraContractClass(parsedContract as CompiledSierra);\n}\n\n/**\n * Return randomly select available public node\n * @param {NetworkName} networkName NetworkName\n * @param {boolean} mute mute public node warning\n * @returns {string} default node url\n * @example\n * ```typescript\n * const result= provider.getDefaultNodeUrl(constants.NetworkName.SN_MAIN,false);\n * // console : \"Using default public node url, please provide nodeUrl in provider options!\"\n * // result = \"https://starknet-mainnet.public.blastapi.io/rpc/v0_7\"\n * ```\n */\nexport const getDefaultNodeUrl = (networkName?: NetworkName, mute: boolean = false): string => {\n if (!mute) {\n // eslint-disable-next-line no-console\n console.warn('Using default public node url, please provide nodeUrl in provider options!');\n }\n const nodes = RPC_NODES[networkName ?? NetworkName.SN_SEPOLIA];\n const randIdx = Math.floor(Math.random() * nodes.length);\n return nodes[randIdx];\n};\n\nexport const validBlockTags = Object.values(BlockTag);\n\n/**\n * This class is formatting the identifier of a block.\n *\n * hex string and BigInt are detected as block hashes. identifier return { block_hash: hash }\n *\n * decimal string and number are detected as block numbers. identifier return { block_number: number }\n *\n * text string are detected as block tag. identifier return tag\n *\n * null is detected as 'pending' block tag. identifier return 'pending'\n * @example\n * ```typescript\n * const result = new provider.Block(null).identifier;\n * // result = \"pending\"\n * ```\n */\nexport class Block {\n /**\n * @param {BlockIdentifier} hash if not null, contains the block hash\n */\n hash: BlockIdentifier = null;\n\n /**\n * @param {BlockIdentifier} number if not null, contains the block number\n */\n number: BlockIdentifier = null;\n\n /**\n * @param {BlockIdentifier} tag if not null, contains \"pending\" or \"latest\"\n */\n tag: BlockIdentifier = null;\n\n private setIdentifier(__identifier: BlockIdentifier): void {\n if (isString(__identifier)) {\n if (isDecimalString(__identifier)) {\n this.number = parseInt(__identifier, 10);\n } else if (isHex(__identifier)) {\n this.hash = __identifier;\n } else if (validBlockTags.includes(__identifier as BlockTag)) {\n this.tag = __identifier;\n } else {\n throw TypeError(`Block identifier unmanaged: ${__identifier}`);\n }\n } else if (isBigInt(__identifier)) {\n this.hash = toHex(__identifier);\n } else if (isNumber(__identifier)) {\n this.number = __identifier;\n } else {\n this.tag = BlockTag.PENDING;\n }\n\n if (isNumber(this.number) && this.number < 0) {\n throw TypeError(`Block number (${this.number}) can't be negative`);\n }\n }\n\n /**\n * Create a Block instance\n * @param {BlockIdentifier} _identifier hex string and BigInt are detected as block hashes.\n * decimal string and number are detected as block numbers.\n * text string are detected as block tag.\n * null is considered as a 'pending' block tag.\n */\n constructor(_identifier: BlockIdentifier) {\n this.setIdentifier(_identifier);\n }\n\n // TODO: fix any\n /**\n * @returns {any} the identifier as a string\n * @example\n * ```typescript\n * const result = new provider.Block(123456n).queryIdentifier;\n * // result = \"blockHash=0x1e240\"\n * ```\n */\n get queryIdentifier(): any {\n if (this.number !== null) {\n return `blockNumber=${this.number}`;\n }\n\n if (this.hash !== null) {\n return `blockHash=${this.hash}`;\n }\n\n return `blockNumber=${this.tag}`;\n }\n\n // TODO: fix any\n /**\n * @returns {any} the identifier as an object\n * @example\n * ```typescript\n * const result = new provider.Block(56789).identifier;\n * // result = { block_number: 56789 }\n * ```\n */\n get identifier(): any {\n if (this.number !== null) {\n return { block_number: this.number };\n }\n\n if (this.hash !== null) {\n return { block_hash: this.hash };\n }\n\n return this.tag;\n }\n\n /**\n * change the identifier of an existing Block instance\n * @example\n * ```typescript\n * const myBlock = new provider.Block(\"latest\");\n * myBlock.identifier =\"0x3456789abc\";\n * const result = myBlock.identifier;\n * // result = { block_hash: '0x3456789abc' }\n * ```\n */\n set identifier(_identifier: BlockIdentifier) {\n this.setIdentifier(_identifier);\n }\n\n valueOf = () => this.number;\n\n toString = () => this.hash;\n}\n\n/**\n * Check if the given transaction details is a V3 transaction.\n *\n * @param {InvocationsDetailsWithNonce} details The transaction details to be checked.\n * @return {boolean} Returns true if the transaction is a V3 transaction, otherwise false.\n * @example\n * ```typescript\n * const invocation: InvocationsDetailsWithNonce = {\n * nonce: 1,\n * version: 3,\n * maxFee: 10 ** 15,\n * feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1,\n * tip: 10 ** 13,\n * paymasterData: [],\n * resourceBounds: {\n * l1_gas: { max_amount: num.toHex(10 ** 14), max_price_per_unit: num.toHex(50) },\n * l2_gas: { max_amount: num.toHex(0), max_price_per_unit: num.toHex(0) }}};\n * const result = provider.isV3Tx(invocation);\n * // result = true\n * ```\n */\nexport function isV3Tx(details: InvocationsDetailsWithNonce): details is V3TransactionDetails {\n const version = details.version ? toHex(details.version) : ETransactionVersion.V3;\n return version === ETransactionVersion.V3 || version === ETransactionVersion.F3;\n}\n\n/**\n * Determines if the given response matches the specified version.\n *\n * @param {('0.5' | '0.6' | '0.7')} version The version to compare against the response.\n * @param {string} response The response to check against the version.\n * @returns {boolean} True if the response matches the version, false otherwise.\n * @example\n * ``` typescript\n * const result = provider.isVersion(\"0.7\",\"0_7\");\n * // result = false\n * ```\n */\nexport function isVersion(version: '0.5' | '0.6' | '0.7', response: string): boolean {\n const [majorS, minorS] = version.split('.');\n const [majorR, minorR] = response.split('.');\n\n return majorS === majorR && minorS === minorR;\n}\n\n/**\n * Guard Pending Block\n * @param {GetBlockResponse} response answer of myProvider.getBlock()\n * @return {boolean} true if block is the pending block\n * @example\n * ```typescript\n * const block = await myProvider.getBlock(\"pending\");\n * const result = provider.isPendingBlock(block);\n * // result = true\n * ```\n */\nexport function isPendingBlock(response: GetBlockResponse): response is PendingBlock {\n return response.status === 'PENDING';\n}\n\n/**\n * Guard Pending Transaction\n * @param {GetTransactionReceiptResponse} response transaction Receipt\n * @return {boolean} true if the transaction is part of the pending block\n * @example\n * ```typescript\n * const block = await myProvider.getBlockWithTxs(\"pending\");\n * const txR = await myProvider.getTransactionReceipt(block.transactions[0].transaction_hash);\n * const result = provider.isPendingTransaction(txR);\n * // result = true\n * ```\n */\nexport function isPendingTransaction(response: GetTransactionReceiptResponse): boolean {\n return !('block_hash' in response);\n}\n\n/**\n * Guard Pending State Update\n * @param {StateUpdateResponse} response State of a block\n * @return {boolean} true if the block is pending\n * @example\n * ```typescript\n * const state: StateUpdateResponse = await myProvider.getStateUpdate(\"pending\");\n * const result = provider.isPendingStateUpdate(state);\n * // result = true\n * ```\n */\nexport function isPendingStateUpdate(\n response: StateUpdateResponse\n): response is PendingStateUpdate {\n return !('block_hash' in response);\n}\n","import { UDC } from '../constants';\nimport {\n BigNumberish,\n CairoVersion,\n Call,\n CallStruct,\n Calldata,\n ParsedStruct,\n RawArgs,\n UniversalDeployerContractPayload,\n} from '../types';\nimport { ETransactionVersion } from '../types/api';\nimport { CallData } from './calldata';\nimport { starkCurve } from './ec';\nimport { calculateContractAddressFromHash, getSelectorFromName } from './hash';\nimport { toBigInt, toCairoBool } from './num';\nimport { randomAddress } from './stark';\n\n/**\n * Transforms a list of Calls, each with their own calldata, into\n * two arrays: one with the entry points, and one with the concatenated calldata\n * @param {Call[]} calls the list of calls to transform.\n * @returns {callArray: ParsedStruct[], calldata: BigNumberish[]} An object containing two arrays: callArray and calldata.\n * @example\n * ```typescript\n * const calls: Call[] = [\n * \t{\n * \t\tcontractAddress: \"0x1234567890123456789012345678901234567890\",\n * \t\tentrypoint: \"functionName\",\n * \t\tcalldata: [1,2,3]\n * \t},\n * \t{\n * \t\tcontractAddress: \"0x0987654321098765432109876543210987654321\",\n * \t\tentrypoint: \"anotherFunction\",\n * \t\tcalldata: [4,5,6]\n * \t}\n * ];\n * const result = transaction.transformCallsToMulticallArrays(calls);\n * // result = {\n * // callArray: [\n * // { to: \"0x1234567890123456789012345678901234567890\", selector: \"1234567890\",\n * // data_offset: \"0\", data_len: \"3\" },\n * // { to: \"0x0987654321098765432109876543210987654321\", selector: \"1234567890\",\n * // data_offset: \"0987654321\", data_offset: \"3\", data_len: \"3\"}\n * // ], calldata: [1, 2, 3, 4, 5, 6]\n * // }\n * ```\n */\nexport const transformCallsToMulticallArrays = (calls: Call[]) => {\n const callArray: ParsedStruct[] = [];\n const calldata: BigNumberish[] = [];\n calls.forEach((call) => {\n const data = CallData.compile(call.calldata || []);\n callArray.push({\n to: toBigInt(call.contractAddress).toString(10),\n selector: toBigInt(getSelectorFromName(call.entrypoint)).toString(10),\n data_offset: calldata.length.toString(),\n data_len: data.length.toString(),\n });\n calldata.push(...data);\n });\n return {\n callArray,\n calldata: CallData.compile({ calldata }),\n };\n};\n\n/**\n * Transforms a list of calls into the Cairo 0 `__execute__` calldata.\n * @param {Call[]} calls the list of calls to transform\n * @returns {Calldata} the Cairo 0 `__execute__` calldata\n * @example\n * ```typescript\n * const calls: Call[] = [\n * \t{\n * \t\tcontractAddress: \"0x1234567890123456789012345678901234567890\",\n * \t\tentrypoint: \"functionName\",\n * \t\tcalldata: [1, 2, 3]\n * \t},\n * \t{\n * \t\tcontractAddress: \"0x0987654321098765432109876543210987654321\",\n * \t\tentrypoint: \"anotherFunction\",\n * \t\tcalldata: [4, 5, 6]\n * \t}\n * ];\n * const result = transaction.fromCallsToExecuteCalldata(calls);\n * // result = ['2', '103929005307130220006098923584552504982110632080',\n * // '784552248838722632831848474045274978537388011177294206940059575485454596699', '0',\n * // '3', '54400338722927882010739357306608455014511100705',\n * // '836430224577382061379420368022192503799782058803937958828224424676927281484',\n * // '3', '3', '6', '1', '2', '3', '4', '5', '6']\n * ```\n */\nexport const fromCallsToExecuteCalldata = (calls: Call[]) => {\n const { callArray, calldata } = transformCallsToMulticallArrays(calls);\n const compiledCalls = CallData.compile({ callArray });\n return [...compiledCalls, ...calldata] as Calldata;\n};\n\n/**\n * Transforms a list of calls into the Cairo 0 `__execute__` calldata including nonce.\n * @deprecated\n */\nexport const fromCallsToExecuteCalldataWithNonce = (calls: Call[], nonce: BigNumberish) => {\n return [...fromCallsToExecuteCalldata(calls), toBigInt(nonce).toString()] as Calldata;\n};\n\n/**\n * Format Data inside Calls\n * @deprecated Not required for getting execute Calldata\n */\nexport const transformCallsToMulticallArrays_cairo1 = (calls: Call[]) => {\n const callArray = calls.map((call) => ({\n to: toBigInt(call.contractAddress).toString(10),\n selector: toBigInt(getSelectorFromName(call.entrypoint)).toString(10),\n calldata: CallData.compile(call.calldata || []),\n }));\n return callArray;\n};\n\n/**\n * Transforms a list of calls into the Cairo 1 `__execute__` calldata.\n * @param {Call[]} calls the list of calls to transform.\n * @returns {Calldata} the Cairo 1 `__execute__` calldata.\n * @example\n * ```typescript\n * const calls: Call[] = [\n * \t{\n * \t\tcontractAddress: \"0x1234567890123456789012345678901234567890\",\n * \t\tentrypoint: \"functionName\",\n * \t\tcalldata: [1, 2, 3]\n * \t},\n * \t{\n * \t\tcontractAddress: \"0x0987654321098765432109876543210987654321\",\n * \t\tentrypoint: \"anotherFunction\",\n * \t\tcalldata: [4, 5, 6]\n * \t}\n * ];\n * const result = transaction.fromCallsToExecuteCalldata_cairo1(calls);\n * // result = ['2', '103929005307130220006098923584552504982110632080',\n * // '784552248838722632831848474045274978537388011177294206940059575485454596699',\n * // '3', '1', '2', '3', '54400338722927882010739357306608455014511100705',\n * // '836430224577382061379420368022192503799782058803937958828224424676927281484',\n * // '3', '4', '5', '6']\n * ```\n */\nexport const fromCallsToExecuteCalldata_cairo1 = (calls: Call[]) => {\n // ensure property order\n const orderCalls = calls.map((call) => ({\n contractAddress: call.contractAddress,\n entrypoint: call.entrypoint,\n calldata:\n Array.isArray(call.calldata) && '__compiled__' in call.calldata\n ? call.calldata // Calldata type\n : CallData.compile(call.calldata as RawArgs), // RawArgsObject | RawArgsArray type\n }));\n\n return CallData.compile({ orderCalls });\n};\n\n/**\n * Create `__execute__` Calldata from Calls based on Cairo versions.\n * @param {Call[]} calls the list of calls to transform\n * @param {CairoVersion} cairoVersion the Cairo version\n * @returns {Calldata} the `__execute__` calldata.\n * @example\n * ```typescript\n * const calls: Call[] = [\n * \t{\n * \t\tcontractAddress: \"0x1234567890123456789012345678901234567890\",\n * \t\tentrypoint: \"functionName\",\n * \t\tcalldata: [1, 2, 3]\n * \t},\n * \t{\n * \t\tcontractAddress: \"0x0987654321098765432109876543210987654321\",\n * \t\tentrypoint: \"anotherFunction\",\n * \t\tcalldata: [4, 5, 6]\n * \t}\n * ];\n * const result = transaction.getExecuteCalldata(calls, '1');\n * // result = ['2', '103929005307130220006098923584552504982110632080',\n * // '784552248838722632831848474045274978537388011177294206940059575485454596699',\n * // '3', '1', '2', '3', '54400338722927882010739357306608455014511100705',\n * // '836430224577382061379420368022192503799782058803937958828224424676927281484',\n * // '3', '4', '5', '6']\n * ```\n */\nexport const getExecuteCalldata = (calls: Call[], cairoVersion: CairoVersion = '0') => {\n if (cairoVersion === '1') {\n return fromCallsToExecuteCalldata_cairo1(calls);\n }\n return fromCallsToExecuteCalldata(calls);\n};\n\n/**\n * Builds a UDCCall object.\n *\n * @param {UniversalDeployerContractPayload | UniversalDeployerContractPayload[]} payload the payload data for the UDCCall. Can be a single payload object or an array of payload objects.\n * @param {string} address the address to be used in the UDCCall\n * @returns { calls: Call[], addresses: string[] } the UDCCall object containing an array of calls and an array of addresses.\n * @example\n * ```typescript\n * const payload: UniversalDeployerContractPayload = {\n * classHash: \"0x1234567890123456789012345678901234567890\",\n * salt: \"0x0987654321098765432109876543210987654321\",\n * unique:true,\n * constructorCalldata: [1, 2, 3]\n * };\n * const address = \"0xABCDEF1234567890ABCDEF1234567890ABCDEF12\";\n * const result = transaction.buildUDCCall(payload, address);\n * // result = {\n * // \tcalls: [\n * //\t\t\t{\n * //\t\t\tcontractAddress: \"0xABCDEF1234567890ABCDEF1234567890ABCDEF12\",\n * //\t\t\tentrypoint: \"functionName\",\n * //\t\t\tcalldata: [classHash, salt, true, 3, 1, 2, 3]\n * //\t\t}],\n * //\taddresses: [\"0x6fD084B56a7EDc5C06B3eB40f97Ae5A0C707A865\"]\n * // }\n * ```\n */\nexport function buildUDCCall(\n payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[],\n address: string\n) {\n const params = [].concat(payload as []).map((it) => {\n const {\n classHash,\n salt,\n unique = true,\n constructorCalldata = [],\n } = it as UniversalDeployerContractPayload;\n\n const compiledConstructorCallData = CallData.compile(constructorCalldata);\n const deploySalt = salt ?? randomAddress();\n\n return {\n call: {\n contractAddress: UDC.ADDRESS,\n entrypoint: UDC.ENTRYPOINT,\n calldata: [\n classHash,\n deploySalt,\n toCairoBool(unique),\n compiledConstructorCallData.length,\n ...compiledConstructorCallData,\n ],\n },\n address: calculateContractAddressFromHash(\n unique ? starkCurve.pedersen(address, deploySalt) : deploySalt,\n classHash,\n compiledConstructorCallData,\n unique ? UDC.ADDRESS : 0\n ),\n };\n });\n\n return {\n calls: params.map((it) => it.call),\n addresses: params.map((it) => it.address),\n };\n}\n\n/**\n * Return transaction versions based on version type, default version type is 'transaction'.\n * @param {'fee' | 'transaction'} [versionType] the type of version (\"fee\" or \"transaction\")\n * @returns {v1: ETransactionVersion, v2: ETransactionVersion, v3: ETransactionVersion} an object containing the transaction versions.\n * @example\n * ```typescript\n * const result = transaction.getVersionsByType('fee');\n * // result = {\n * // v1: '0x100000000000000000000000000000001',\n * // v2: '0x100000000000000000000000000000002',\n * // v3: '0x100000000000000000000000000000003'\n * // }\n * ```\n */\nexport function getVersionsByType(versionType?: 'fee' | 'transaction') {\n return versionType === 'fee'\n ? {\n v1: ETransactionVersion.F1,\n v2: ETransactionVersion.F2,\n v3: ETransactionVersion.F3,\n }\n : { v1: ETransactionVersion.V1, v2: ETransactionVersion.V2, v3: ETransactionVersion.V3 };\n}\n","import { NetworkName, StarknetChainId } from '../constants';\nimport { LibraryError } from '../provider/errors';\nimport {\n AccountInvocationItem,\n AccountInvocations,\n BigNumberish,\n BlockIdentifier,\n BlockTag,\n Call,\n DeclareContractTransaction,\n DeployAccountContractTransaction,\n Invocation,\n InvocationsDetailsWithNonce,\n RpcProviderOptions,\n TransactionType,\n getEstimateFeeBulkOptions,\n getSimulateTransactionOptions,\n waitForTransactionOptions,\n} from '../types';\nimport { JRPC, RPCSPEC07 as RPC } from '../types/api';\nimport { CallData } from '../utils/calldata';\nimport { isSierra } from '../utils/contract';\nimport { validateAndParseEthAddress } from '../utils/eth';\nimport fetch from '../utils/fetchPonyfill';\nimport { getSelector, getSelectorFromName } from '../utils/hash';\nimport { stringify } from '../utils/json';\nimport { getHexStringArray, toHex, toStorageKey } from '../utils/num';\nimport { Block, getDefaultNodeUrl, isV3Tx, isVersion, wait } from '../utils/provider';\nimport { decompressProgram, signatureToHexArray } from '../utils/stark';\nimport { getVersionsByType } from '../utils/transaction';\n\nconst defaultOptions = {\n headers: { 'Content-Type': 'application/json' },\n blockIdentifier: BlockTag.PENDING,\n retries: 200,\n};\n\nexport class RpcChannel {\n public nodeUrl: string;\n\n public headers: object;\n\n readonly retries: number;\n\n public requestId: number;\n\n readonly blockIdentifier: BlockIdentifier;\n\n private chainId?: StarknetChainId;\n\n private specVersion?: string;\n\n private transactionRetryIntervalFallback?: number;\n\n readonly waitMode: Boolean; // behave like web2 rpc and return when tx is processed\n\n constructor(optionsOrProvider?: RpcProviderOptions) {\n const {\n nodeUrl,\n retries,\n headers,\n blockIdentifier,\n chainId,\n specVersion,\n waitMode,\n transactionRetryIntervalFallback,\n } = optionsOrProvider || {};\n if (Object.values(NetworkName).includes(nodeUrl as NetworkName)) {\n this.nodeUrl = getDefaultNodeUrl(nodeUrl as NetworkName, optionsOrProvider?.default);\n } else if (nodeUrl) {\n this.nodeUrl = nodeUrl;\n } else {\n this.nodeUrl = getDefaultNodeUrl(undefined, optionsOrProvider?.default);\n }\n this.retries = retries || defaultOptions.retries;\n this.headers = { ...defaultOptions.headers, ...headers };\n this.blockIdentifier = blockIdentifier || defaultOptions.blockIdentifier;\n this.chainId = chainId;\n this.specVersion = specVersion;\n this.waitMode = waitMode || false;\n this.requestId = 0;\n this.transactionRetryIntervalFallback = transactionRetryIntervalFallback;\n }\n\n private get transactionRetryIntervalDefault() {\n return this.transactionRetryIntervalFallback ?? 5000;\n }\n\n public setChainId(chainId: StarknetChainId) {\n this.chainId = chainId;\n }\n\n public fetch(method: string, params?: object, id: string | number = 0) {\n const rpcRequestBody: JRPC.RequestBody = {\n id,\n jsonrpc: '2.0',\n method,\n ...(params && { params }),\n };\n return fetch(this.nodeUrl, {\n method: 'POST',\n body: stringify(rpcRequestBody),\n headers: this.headers as Record,\n });\n }\n\n protected errorHandler(method: string, params: any, rpcError?: JRPC.Error, otherError?: any) {\n if (rpcError) {\n const { code, message, data } = rpcError;\n throw new LibraryError(\n `RPC: ${method} with params ${stringify(params, null, 2)}\\n \n ${code}: ${message}: ${stringify(data)}`\n );\n }\n if (otherError instanceof LibraryError) {\n throw otherError;\n }\n if (otherError) {\n throw Error(otherError.message);\n }\n }\n\n protected async fetchEndpoint(\n method: T,\n params?: RPC.Methods[T]['params']\n ): Promise {\n try {\n const rawResult = await this.fetch(method, params, (this.requestId += 1));\n const { error, result } = await rawResult.json();\n this.errorHandler(method, params, error);\n return result as RPC.Methods[T]['result'];\n } catch (error: any) {\n this.errorHandler(method, params, error?.response?.data, error);\n throw error;\n }\n }\n\n public async getChainId() {\n this.chainId ??= (await this.fetchEndpoint('starknet_chainId')) as StarknetChainId;\n return this.chainId;\n }\n\n public async getSpecVersion() {\n this.specVersion ??= (await this.fetchEndpoint('starknet_specVersion')) as StarknetChainId;\n return this.specVersion;\n }\n\n public getNonceForAddress(\n contractAddress: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const contract_address = toHex(contractAddress);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getNonce', {\n contract_address,\n block_id,\n });\n }\n\n /**\n * Get the most recent accepted block hash and number\n */\n public getBlockLatestAccepted() {\n return this.fetchEndpoint('starknet_blockHashAndNumber');\n }\n\n /**\n * Get the most recent accepted block number\n * redundant use getBlockLatestAccepted();\n * @returns Number of the latest block\n */\n public getBlockNumber() {\n return this.fetchEndpoint('starknet_blockNumber');\n }\n\n public getBlockWithTxHashes(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getBlockWithTxHashes', { block_id });\n }\n\n public getBlockWithTxs(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getBlockWithTxs', { block_id });\n }\n\n public getBlockWithReceipts(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getBlockWithReceipts', { block_id });\n }\n\n public getBlockStateUpdate(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getStateUpdate', { block_id });\n }\n\n public getBlockTransactionsTraces(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_traceBlockTransactions', { block_id });\n }\n\n public getBlockTransactionCount(blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getBlockTransactionCount', { block_id });\n }\n\n public getTransactionByHash(txHash: BigNumberish) {\n const transaction_hash = toHex(txHash);\n return this.fetchEndpoint('starknet_getTransactionByHash', {\n transaction_hash,\n });\n }\n\n public getTransactionByBlockIdAndIndex(blockIdentifier: BlockIdentifier, index: number) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getTransactionByBlockIdAndIndex', { block_id, index });\n }\n\n public getTransactionReceipt(txHash: BigNumberish) {\n const transaction_hash = toHex(txHash);\n return this.fetchEndpoint('starknet_getTransactionReceipt', { transaction_hash });\n }\n\n public getTransactionTrace(txHash: BigNumberish) {\n const transaction_hash = toHex(txHash);\n return this.fetchEndpoint('starknet_traceTransaction', { transaction_hash });\n }\n\n /**\n * Get the status of a transaction\n */\n public getTransactionStatus(transactionHash: BigNumberish) {\n const transaction_hash = toHex(transactionHash);\n return this.fetchEndpoint('starknet_getTransactionStatus', { transaction_hash });\n }\n\n /**\n * @param invocations AccountInvocations\n * @param simulateTransactionOptions blockIdentifier and flags to skip validation and fee charge
\n * - blockIdentifier
\n * - skipValidate (default false)
\n * - skipFeeCharge (default true)
\n */\n public simulateTransaction(\n invocations: AccountInvocations,\n simulateTransactionOptions: getSimulateTransactionOptions = {}\n ) {\n const {\n blockIdentifier = this.blockIdentifier,\n skipValidate = true,\n skipFeeCharge = true,\n } = simulateTransactionOptions;\n const block_id = new Block(blockIdentifier).identifier;\n const simulationFlags: RPC.ESimulationFlag[] = [];\n if (skipValidate) simulationFlags.push(RPC.ESimulationFlag.SKIP_VALIDATE);\n if (skipFeeCharge) simulationFlags.push(RPC.ESimulationFlag.SKIP_FEE_CHARGE);\n\n return this.fetchEndpoint('starknet_simulateTransactions', {\n block_id,\n transactions: invocations.map((it) => this.buildTransaction(it)),\n simulation_flags: simulationFlags,\n });\n }\n\n public async waitForTransaction(txHash: BigNumberish, options?: waitForTransactionOptions) {\n const transactionHash = toHex(txHash);\n let { retries } = this;\n let onchain = false;\n let isErrorState = false;\n const retryInterval = options?.retryInterval ?? this.transactionRetryIntervalDefault;\n const errorStates: any = options?.errorStates ?? [\n RPC.ETransactionStatus.REJECTED,\n // TODO: commented out to preserve the long-standing behavior of \"reverted\" not being treated as an error by default\n // should decide which behavior to keep in the future\n // RPC.ETransactionExecutionStatus.REVERTED,\n ];\n const successStates: any = options?.successStates ?? [\n RPC.ETransactionExecutionStatus.SUCCEEDED,\n RPC.ETransactionStatus.ACCEPTED_ON_L2,\n RPC.ETransactionStatus.ACCEPTED_ON_L1,\n ];\n\n let txStatus: RPC.TransactionStatus;\n while (!onchain) {\n // eslint-disable-next-line no-await-in-loop\n await wait(retryInterval);\n try {\n // eslint-disable-next-line no-await-in-loop\n txStatus = await this.getTransactionStatus(transactionHash);\n\n const executionStatus = txStatus.execution_status;\n const finalityStatus = txStatus.finality_status;\n\n if (!finalityStatus) {\n // Transaction is potentially NOT_RECEIVED or RPC not Synced yet\n // so we will retry '{ retries }' times\n const error = new Error('waiting for transaction status');\n throw error;\n }\n\n if (errorStates.includes(executionStatus) || errorStates.includes(finalityStatus)) {\n const message = `${executionStatus}: ${finalityStatus}`;\n const error = new Error(message) as Error & { response: RPC.TransactionStatus };\n error.response = txStatus;\n isErrorState = true;\n throw error;\n } else if (\n successStates.includes(executionStatus) ||\n successStates.includes(finalityStatus)\n ) {\n onchain = true;\n }\n } catch (error) {\n if (error instanceof Error && isErrorState) {\n throw error;\n }\n\n if (retries <= 0) {\n throw new Error(`waitForTransaction timed-out with retries ${this.retries}`);\n }\n }\n\n retries -= 1;\n }\n\n /**\n * For some nodes even though the transaction has executionStatus SUCCEEDED finalityStatus ACCEPTED_ON_L2, getTransactionReceipt returns \"Transaction hash not found\"\n * Retry until rpc is actually ready to work with txHash\n */\n let txReceipt = null;\n while (txReceipt === null) {\n try {\n // eslint-disable-next-line no-await-in-loop\n txReceipt = await this.getTransactionReceipt(transactionHash);\n } catch (error) {\n if (retries <= 0) {\n throw new Error(`waitForTransaction timed-out with retries ${this.retries}`);\n }\n }\n retries -= 1;\n // eslint-disable-next-line no-await-in-loop\n await wait(retryInterval);\n }\n return txReceipt as RPC.SPEC.TXN_RECEIPT;\n }\n\n public getStorageAt(\n contractAddress: BigNumberish,\n key: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const contract_address = toHex(contractAddress);\n const parsedKey = toStorageKey(key);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getStorageAt', {\n contract_address,\n key: parsedKey,\n block_id,\n });\n }\n\n public getClassHashAt(\n contractAddress: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const contract_address = toHex(contractAddress);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getClassHashAt', {\n block_id,\n contract_address,\n });\n }\n\n public getClass(\n classHash: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const class_hash = toHex(classHash);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getClass', {\n class_hash,\n block_id,\n });\n }\n\n public getClassAt(\n contractAddress: BigNumberish,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const contract_address = toHex(contractAddress);\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_getClassAt', {\n block_id,\n contract_address,\n });\n }\n\n public async getEstimateFee(\n invocations: AccountInvocations,\n { blockIdentifier = this.blockIdentifier, skipValidate = true }: getEstimateFeeBulkOptions\n ) {\n const block_id = new Block(blockIdentifier).identifier;\n let flags = {};\n if (!isVersion('0.5', await this.getSpecVersion())) {\n flags = {\n simulation_flags: skipValidate ? [RPC.ESimulationFlag.SKIP_VALIDATE] : [],\n };\n } // else v(0.5) no flags\n\n return this.fetchEndpoint('starknet_estimateFee', {\n request: invocations.map((it) => this.buildTransaction(it, 'fee')),\n block_id,\n ...flags,\n });\n }\n\n public async invoke(functionInvocation: Invocation, details: InvocationsDetailsWithNonce) {\n let promise;\n if (!isV3Tx(details)) {\n // V1\n promise = this.fetchEndpoint('starknet_addInvokeTransaction', {\n invoke_transaction: {\n sender_address: functionInvocation.contractAddress,\n calldata: CallData.toHex(functionInvocation.calldata),\n type: RPC.ETransactionType.INVOKE,\n max_fee: toHex(details.maxFee || 0),\n version: RPC.ETransactionVersion.V1,\n signature: signatureToHexArray(functionInvocation.signature),\n nonce: toHex(details.nonce),\n },\n });\n } else {\n // V3\n promise = this.fetchEndpoint('starknet_addInvokeTransaction', {\n invoke_transaction: {\n type: RPC.ETransactionType.INVOKE,\n sender_address: functionInvocation.contractAddress,\n calldata: CallData.toHex(functionInvocation.calldata),\n version: RPC.ETransactionVersion.V3,\n signature: signatureToHexArray(functionInvocation.signature),\n nonce: toHex(details.nonce),\n resource_bounds: details.resourceBounds,\n tip: toHex(details.tip),\n paymaster_data: details.paymasterData.map((it) => toHex(it)),\n account_deployment_data: details.accountDeploymentData.map((it) => toHex(it)),\n nonce_data_availability_mode: details.nonceDataAvailabilityMode,\n fee_data_availability_mode: details.feeDataAvailabilityMode,\n },\n });\n }\n\n return this.waitMode ? this.waitForTransaction((await promise).transaction_hash) : promise;\n }\n\n public async declare(\n { contract, signature, senderAddress, compiledClassHash }: DeclareContractTransaction,\n details: InvocationsDetailsWithNonce\n ) {\n let promise;\n if (!isSierra(contract) && !isV3Tx(details)) {\n // V1 Cairo 0\n promise = this.fetchEndpoint('starknet_addDeclareTransaction', {\n declare_transaction: {\n type: RPC.ETransactionType.DECLARE,\n contract_class: {\n program: contract.program,\n entry_points_by_type: contract.entry_points_by_type,\n abi: contract.abi,\n },\n version: RPC.ETransactionVersion.V1,\n max_fee: toHex(details.maxFee || 0),\n signature: signatureToHexArray(signature),\n sender_address: senderAddress,\n nonce: toHex(details.nonce),\n },\n });\n } else if (isSierra(contract) && !isV3Tx(details)) {\n // V2 Cairo1\n promise = this.fetchEndpoint('starknet_addDeclareTransaction', {\n declare_transaction: {\n type: RPC.ETransactionType.DECLARE,\n contract_class: {\n sierra_program: decompressProgram(contract.sierra_program),\n contract_class_version: contract.contract_class_version,\n entry_points_by_type: contract.entry_points_by_type,\n abi: contract.abi,\n },\n compiled_class_hash: compiledClassHash || '',\n version: RPC.ETransactionVersion.V2,\n max_fee: toHex(details.maxFee || 0),\n signature: signatureToHexArray(signature),\n sender_address: senderAddress,\n nonce: toHex(details.nonce),\n },\n });\n } else if (isSierra(contract) && isV3Tx(details)) {\n // V3 Cairo1\n promise = this.fetchEndpoint('starknet_addDeclareTransaction', {\n declare_transaction: {\n type: RPC.ETransactionType.DECLARE,\n sender_address: senderAddress,\n compiled_class_hash: compiledClassHash || '',\n version: RPC.ETransactionVersion.V3,\n signature: signatureToHexArray(signature),\n nonce: toHex(details.nonce),\n contract_class: {\n sierra_program: decompressProgram(contract.sierra_program),\n contract_class_version: contract.contract_class_version,\n entry_points_by_type: contract.entry_points_by_type,\n abi: contract.abi,\n },\n resource_bounds: details.resourceBounds,\n tip: toHex(details.tip),\n paymaster_data: details.paymasterData.map((it) => toHex(it)),\n account_deployment_data: details.accountDeploymentData.map((it) => toHex(it)),\n nonce_data_availability_mode: details.nonceDataAvailabilityMode,\n fee_data_availability_mode: details.feeDataAvailabilityMode,\n },\n });\n } else {\n throw Error('declare unspotted parameters');\n }\n\n return this.waitMode ? this.waitForTransaction((await promise).transaction_hash) : promise;\n }\n\n public async deployAccount(\n { classHash, constructorCalldata, addressSalt, signature }: DeployAccountContractTransaction,\n details: InvocationsDetailsWithNonce\n ) {\n let promise;\n if (!isV3Tx(details)) {\n // v1\n promise = this.fetchEndpoint('starknet_addDeployAccountTransaction', {\n deploy_account_transaction: {\n constructor_calldata: CallData.toHex(constructorCalldata || []),\n class_hash: toHex(classHash),\n contract_address_salt: toHex(addressSalt || 0),\n type: RPC.ETransactionType.DEPLOY_ACCOUNT,\n max_fee: toHex(details.maxFee || 0),\n version: RPC.ETransactionVersion.V1,\n signature: signatureToHexArray(signature),\n nonce: toHex(details.nonce),\n },\n });\n } else {\n // v3\n promise = this.fetchEndpoint('starknet_addDeployAccountTransaction', {\n deploy_account_transaction: {\n type: RPC.ETransactionType.DEPLOY_ACCOUNT,\n version: RPC.ETransactionVersion.V3,\n signature: signatureToHexArray(signature),\n nonce: toHex(details.nonce),\n contract_address_salt: toHex(addressSalt || 0),\n constructor_calldata: CallData.toHex(constructorCalldata || []),\n class_hash: toHex(classHash),\n resource_bounds: details.resourceBounds,\n tip: toHex(details.tip),\n paymaster_data: details.paymasterData.map((it) => toHex(it)),\n nonce_data_availability_mode: details.nonceDataAvailabilityMode,\n fee_data_availability_mode: details.feeDataAvailabilityMode,\n },\n });\n }\n\n return this.waitMode ? this.waitForTransaction((await promise).transaction_hash) : promise;\n }\n\n public callContract(call: Call, blockIdentifier: BlockIdentifier = this.blockIdentifier) {\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_call', {\n request: {\n contract_address: call.contractAddress,\n entry_point_selector: getSelectorFromName(call.entrypoint),\n calldata: CallData.toHex(call.calldata),\n },\n block_id,\n });\n }\n\n /**\n * NEW: Estimate the fee for a message from L1\n * @param message Message From L1\n */\n public estimateMessageFee(\n message: RPC.L1Message,\n blockIdentifier: BlockIdentifier = this.blockIdentifier\n ) {\n const { from_address, to_address, entry_point_selector, payload } = message;\n const formattedMessage = {\n from_address: validateAndParseEthAddress(from_address),\n to_address: toHex(to_address),\n entry_point_selector: getSelector(entry_point_selector),\n payload: getHexStringArray(payload),\n };\n\n const block_id = new Block(blockIdentifier).identifier;\n return this.fetchEndpoint('starknet_estimateMessageFee', {\n message: formattedMessage,\n block_id,\n });\n }\n\n /**\n * Returns an object about the sync status, or false if the node is not synching\n * @returns Object with the stats data\n */\n public getSyncingStats() {\n return this.fetchEndpoint('starknet_syncing');\n }\n\n /**\n * Returns all events matching the given filter\n * @returns events and the pagination of the events\n */\n public getEvents(eventFilter: RPC.EventFilter) {\n return this.fetchEndpoint('starknet_getEvents', { filter: eventFilter });\n }\n\n public buildTransaction(\n invocation: AccountInvocationItem,\n versionType?: 'fee' | 'transaction'\n ): RPC.BaseTransaction {\n const defaultVersions = getVersionsByType(versionType);\n let details;\n\n if (!isV3Tx(invocation)) {\n // V0,V1,V2\n details = {\n signature: signatureToHexArray(invocation.signature),\n nonce: toHex(invocation.nonce),\n max_fee: toHex(invocation.maxFee || 0),\n };\n } else {\n // V3\n details = {\n signature: signatureToHexArray(invocation.signature),\n nonce: toHex(invocation.nonce),\n resource_bounds: invocation.resourceBounds,\n tip: toHex(invocation.tip),\n paymaster_data: invocation.paymasterData.map((it) => toHex(it)),\n nonce_data_availability_mode: invocation.nonceDataAvailabilityMode,\n fee_data_availability_mode: invocation.feeDataAvailabilityMode,\n account_deployment_data: invocation.accountDeploymentData.map((it) => toHex(it)),\n };\n }\n\n if (invocation.type === TransactionType.INVOKE) {\n return {\n // v0 v1 v3\n type: RPC.ETransactionType.INVOKE,\n sender_address: invocation.contractAddress,\n calldata: CallData.toHex(invocation.calldata),\n version: toHex(invocation.version || defaultVersions.v3),\n ...details,\n } as RPC.SPEC.BROADCASTED_INVOKE_TXN;\n }\n if (invocation.type === TransactionType.DECLARE) {\n if (!isSierra(invocation.contract)) {\n // Cairo 0 - v1\n return {\n type: invocation.type,\n contract_class: invocation.contract,\n sender_address: invocation.senderAddress,\n version: toHex(invocation.version || defaultVersions.v1),\n ...details,\n } as RPC.SPEC.BROADCASTED_DECLARE_TXN_V1;\n }\n return {\n // Cairo 1 - v2 v3\n type: invocation.type,\n contract_class: {\n ...invocation.contract,\n sierra_program: decompressProgram(invocation.contract.sierra_program),\n },\n compiled_class_hash: invocation.compiledClassHash || '',\n sender_address: invocation.senderAddress,\n version: toHex(invocation.version || defaultVersions.v3),\n ...details,\n } as RPC.SPEC.BROADCASTED_DECLARE_TXN;\n }\n if (invocation.type === TransactionType.DEPLOY_ACCOUNT) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { account_deployment_data, ...restDetails } = details;\n // v1 v3\n return {\n type: invocation.type,\n constructor_calldata: CallData.toHex(invocation.constructorCalldata || []),\n class_hash: toHex(invocation.classHash),\n contract_address_salt: toHex(invocation.addressSalt || 0),\n version: toHex(invocation.version || defaultVersions.v3) as RPC.SPEC.INVOKE_TXN['version'],\n ...restDetails,\n } as RPC.SPEC.BROADCASTED_DEPLOY_ACCOUNT_TXN;\n }\n throw Error('RPC buildTransaction received unknown TransactionType');\n }\n}\n","/**\n * Map RPC Response to common interface response\n * Intersection (sequencer response ∩ (∪ rpc responses))\n */\nimport type {\n BlockWithTxHashes,\n ContractClassPayload,\n ContractClassResponse,\n EstimateFeeResponse,\n EstimateFeeResponseBulk,\n FeeEstimate,\n GetBlockResponse,\n GetTxReceiptResponseWithoutHelper,\n RpcProviderOptions,\n SimulateTransactionResponse,\n SimulatedTransaction,\n TransactionReceipt,\n} from '../../types/provider';\nimport { toBigInt } from '../num';\nimport { isString } from '../shortString';\nimport { estimateFeeToBounds, estimatedFeeToMaxFee } from '../stark';\nimport { ResponseParser } from './interface';\n\nexport class RPCResponseParser\n implements\n Omit<\n ResponseParser,\n | 'parseDeclareContractResponse'\n | 'parseDeployContractResponse'\n | 'parseInvokeFunctionResponse'\n | 'parseGetTransactionReceiptResponse'\n | 'parseGetTransactionResponse'\n | 'parseCallContractResponse'\n >\n{\n private margin: RpcProviderOptions['feeMarginPercentage'];\n\n constructor(margin?: RpcProviderOptions['feeMarginPercentage']) {\n this.margin = margin;\n }\n\n private estimatedFeeToMaxFee(estimatedFee: Parameters[0]) {\n return estimatedFeeToMaxFee(estimatedFee, this.margin?.maxFee);\n }\n\n private estimateFeeToBounds(estimate: Parameters[0]) {\n return estimateFeeToBounds(\n estimate,\n this.margin?.l1BoundMaxAmount,\n this.margin?.l1BoundMaxPricePerUnit\n );\n }\n\n public parseGetBlockResponse(res: BlockWithTxHashes): GetBlockResponse {\n return { status: 'PENDING', ...res } as GetBlockResponse;\n }\n\n public parseTransactionReceipt(res: TransactionReceipt): GetTxReceiptResponseWithoutHelper {\n // HOTFIX RPC 0.5 to align with RPC 0.6\n // This case is RPC 0.5. It can be only v2 thx with FRI units\n if ('actual_fee' in res && isString(res.actual_fee)) {\n return {\n ...(res as GetTxReceiptResponseWithoutHelper),\n actual_fee: {\n amount: res.actual_fee,\n unit: 'FRI',\n },\n } as GetTxReceiptResponseWithoutHelper;\n }\n\n return res as GetTxReceiptResponseWithoutHelper;\n }\n\n public parseFeeEstimateResponse(res: FeeEstimate[]): EstimateFeeResponse {\n const val = res[0];\n return {\n overall_fee: toBigInt(val.overall_fee),\n gas_consumed: toBigInt(val.gas_consumed),\n gas_price: toBigInt(val.gas_price),\n unit: val.unit,\n suggestedMaxFee: this.estimatedFeeToMaxFee(val.overall_fee),\n resourceBounds: this.estimateFeeToBounds(val),\n data_gas_consumed: val.data_gas_consumed ? toBigInt(val.data_gas_consumed) : 0n,\n data_gas_price: val.data_gas_price ? toBigInt(val.data_gas_price) : 0n,\n };\n }\n\n public parseFeeEstimateBulkResponse(res: FeeEstimate[]): EstimateFeeResponseBulk {\n return res.map((val) => ({\n overall_fee: toBigInt(val.overall_fee),\n gas_consumed: toBigInt(val.gas_consumed),\n gas_price: toBigInt(val.gas_price),\n unit: val.unit,\n suggestedMaxFee: this.estimatedFeeToMaxFee(val.overall_fee),\n resourceBounds: this.estimateFeeToBounds(val),\n data_gas_consumed: val.data_gas_consumed ? toBigInt(val.data_gas_consumed) : 0n,\n data_gas_price: val.data_gas_price ? toBigInt(val.data_gas_price) : 0n,\n }));\n }\n\n public parseSimulateTransactionResponse(\n // TODO: revisit\n // set as 'any' to avoid a mapped type circular recursion error stemming from\n // merging src/types/api/rpcspec*/components/FUNCTION_INVOCATION.calls\n //\n // res: SimulateTransactionResponse\n res: any\n ): SimulateTransactionResponse {\n return res.map((it: SimulatedTransaction) => {\n return {\n ...it,\n suggestedMaxFee: this.estimatedFeeToMaxFee(it.fee_estimation.overall_fee),\n resourceBounds: this.estimateFeeToBounds(it.fee_estimation),\n };\n });\n }\n\n public parseContractClassResponse(res: ContractClassPayload): ContractClassResponse {\n return {\n ...(res as ContractClassResponse),\n abi: isString(res.abi) ? JSON.parse(res.abi) : res.abi,\n };\n }\n\n public parseL1GasPriceResponse(res: BlockWithTxHashes): string {\n return res.l1_gas_price.price_in_wei;\n }\n}\n","/* eslint-disable no-nested-ternary */\nimport {\n GetTxReceiptResponseWithoutHelper,\n RejectedTransactionReceiptResponse,\n RevertedTransactionReceiptResponse,\n SuccessfulTransactionReceiptResponse,\n TransactionExecutionStatus,\n} from '../types';\nimport type {\n TransactionReceiptCallbacks,\n TransactionReceiptCallbacksDefault,\n TransactionReceiptStatus,\n TransactionReceiptUtilityInterface,\n TransactionReceiptValue,\n} from '../types/transactionReceipt';\n\n/**\n * Utility that analyses transaction receipt response and provides helpers to process it\n * @example\n * ```typescript\n * const responseTx = new ReceiptTx(receipt);\n * responseTx.match({\n * success: (txR: SuccessfulTransactionReceiptResponse) => { },\n * rejected: (txR: RejectedTransactionReceiptResponse) => { },\n * reverted: (txR: RevertedTransactionReceiptResponse) => { },\n * error: (err: Error) => { },\n * });\n * responseTx.match({\n * success: (txR: SuccessfulTransactionReceiptResponse) => { },\n * _: () => { },\n * }\n * ```\n */\nexport class ReceiptTx implements TransactionReceiptUtilityInterface {\n public readonly statusReceipt: TransactionReceiptStatus;\n\n public readonly value: TransactionReceiptValue;\n\n constructor(receipt: GetTxReceiptResponseWithoutHelper) {\n [this.statusReceipt, this.value] = ReceiptTx.isSuccess(receipt)\n ? ['success', receipt]\n : ReceiptTx.isReverted(receipt)\n ? ['reverted', receipt]\n : ReceiptTx.isRejected(receipt)\n ? ['rejected', receipt]\n : ['error', new Error('Unknown response type')];\n // eslint-disable-next-line no-restricted-syntax\n for (const [key] of Object.entries(this)) {\n Object.defineProperty(this, key, {\n enumerable: false,\n });\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(receipt)) {\n Object.defineProperty(this, key, {\n enumerable: true,\n writable: false,\n value,\n });\n }\n }\n\n match(callbacks: TransactionReceiptCallbacks) {\n if (this.statusReceipt in callbacks) {\n return callbacks[this.statusReceipt]!(this.value as any);\n }\n return (callbacks as TransactionReceiptCallbacksDefault)._();\n }\n\n isSuccess(): this is SuccessfulTransactionReceiptResponse {\n return this.statusReceipt === 'success';\n }\n\n isReverted(): this is RevertedTransactionReceiptResponse {\n return this.statusReceipt === 'reverted';\n }\n\n isRejected(): this is RejectedTransactionReceiptResponse {\n return this.statusReceipt === 'rejected';\n }\n\n isError() {\n return this.statusReceipt === 'error';\n }\n\n static isSuccess(\n transactionReceipt: GetTxReceiptResponseWithoutHelper\n ): transactionReceipt is SuccessfulTransactionReceiptResponse {\n return (\n (transactionReceipt as SuccessfulTransactionReceiptResponse).execution_status ===\n TransactionExecutionStatus.SUCCEEDED\n );\n }\n\n static isReverted(\n transactionReceipt: GetTxReceiptResponseWithoutHelper\n ): transactionReceipt is RevertedTransactionReceiptResponse {\n return (\n (transactionReceipt as RevertedTransactionReceiptResponse).execution_status ===\n TransactionExecutionStatus.REVERTED\n );\n }\n\n static isRejected(\n transactionReceipt: GetTxReceiptResponseWithoutHelper\n ): transactionReceipt is RejectedTransactionReceiptResponse {\n return (\n (transactionReceipt as RejectedTransactionReceiptResponse).status ===\n TransactionExecutionStatus.REJECTED\n );\n }\n}\n\nexport type GetTransactionReceiptResponse = GetTxReceiptResponseWithoutHelper & ReceiptTx;\n","/* eslint-disable max-classes-per-file */\nimport { Mixin } from 'ts-mixer';\n\nimport { RpcProvider as BaseRpcProvider } from '../rpc';\nimport { StarknetId } from './starknetId';\n\nexport class RpcProvider extends Mixin(BaseRpcProvider, StarknetId) {}\n","import { StarknetChainId, ZERO } from '../constants';\nimport { BigNumberish } from '../types';\nimport { tuple } from './calldata/cairo';\nimport { CairoCustomEnum } from './calldata/enum/CairoCustomEnum';\n/* eslint-disable no-param-reassign */\n\nconst basicAlphabet = 'abcdefghijklmnopqrstuvwxyz0123456789-';\nconst basicSizePlusOne = BigInt(basicAlphabet.length + 1);\nconst bigAlphabet = '这来';\nconst basicAlphabetSize = BigInt(basicAlphabet.length);\nconst bigAlphabetSize = BigInt(bigAlphabet.length);\nconst bigAlphabetSizePlusOne = BigInt(bigAlphabet.length + 1);\n\nfunction extractStars(str: string): [string, number] {\n let k = 0;\n while (str.endsWith(bigAlphabet[bigAlphabet.length - 1])) {\n str = str.substring(0, str.length - 1);\n k += 1;\n }\n return [str, k];\n}\n\n/**\n * Decodes an array of BigInts into a string using the given algorithm.\n * @param {bigint[]} encoded The encoded array of BigInts.\n * @return {string} The decoded string.\n * @example\n * ```typescript\n * const result = starknetId.useDecoded([3015206943634620n]);\n * // result = \"starknetjs.stark\"\n * ```\n */\nexport function useDecoded(encoded: bigint[]): string {\n let decoded = '';\n\n encoded.forEach((subdomain) => {\n while (subdomain !== ZERO) {\n const code = subdomain % basicSizePlusOne;\n subdomain /= basicSizePlusOne;\n if (code === BigInt(basicAlphabet.length)) {\n const nextSubdomain = subdomain / bigAlphabetSizePlusOne;\n if (nextSubdomain === ZERO) {\n const code2 = subdomain % bigAlphabetSizePlusOne;\n subdomain = nextSubdomain;\n if (code2 === ZERO) decoded += basicAlphabet[0];\n else decoded += bigAlphabet[Number(code2) - 1];\n } else {\n const code2 = subdomain % bigAlphabetSize;\n decoded += bigAlphabet[Number(code2)];\n subdomain /= bigAlphabetSize;\n }\n } else decoded += basicAlphabet[Number(code)];\n }\n\n const [str, k] = extractStars(decoded);\n if (k)\n decoded =\n str +\n (k % 2 === 0\n ? bigAlphabet[bigAlphabet.length - 1].repeat(k / 2 - 1) +\n bigAlphabet[0] +\n basicAlphabet[1]\n : bigAlphabet[bigAlphabet.length - 1].repeat((k - 1) / 2 + 1));\n decoded += '.';\n });\n\n if (!decoded) {\n return decoded;\n }\n\n return decoded.concat('stark');\n}\n\n/**\n * Encodes a string into a bigint value.\n *\n * @param {string} decoded The string to be encoded.\n * @returns {bigint} The encoded bigint value.\n * @example\n * ```typescript\n * const result = starknetId.useEncoded(\"starknet.js\");\n * // result = 3015206943634620n\n * ```\n */\nexport function useEncoded(decoded: string): bigint {\n let encoded = BigInt(0);\n let multiplier = BigInt(1);\n\n if (decoded.endsWith(bigAlphabet[0] + basicAlphabet[1])) {\n const [str, k] = extractStars(decoded.substring(0, decoded.length - 2));\n decoded = str + bigAlphabet[bigAlphabet.length - 1].repeat(2 * (k + 1));\n } else {\n const [str, k] = extractStars(decoded);\n if (k) decoded = str + bigAlphabet[bigAlphabet.length - 1].repeat(1 + 2 * (k - 1));\n }\n\n for (let i = 0; i < decoded.length; i += 1) {\n const char = decoded[i];\n const index = basicAlphabet.indexOf(char);\n const bnIndex = BigInt(basicAlphabet.indexOf(char));\n\n if (index !== -1) {\n // add encoded + multiplier * index\n if (i === decoded.length - 1 && decoded[i] === basicAlphabet[0]) {\n encoded += multiplier * basicAlphabetSize;\n multiplier *= basicSizePlusOne;\n // add 0\n multiplier *= basicSizePlusOne;\n } else {\n encoded += multiplier * bnIndex;\n multiplier *= basicSizePlusOne;\n }\n } else if (bigAlphabet.indexOf(char) !== -1) {\n // add encoded + multiplier * (basicAlphabetSize)\n encoded += multiplier * basicAlphabetSize;\n multiplier *= basicSizePlusOne;\n // add encoded + multiplier * index\n const newid = (i === decoded.length - 1 ? 1 : 0) + bigAlphabet.indexOf(char);\n encoded += multiplier * BigInt(newid);\n multiplier *= bigAlphabetSize;\n }\n }\n\n return encoded;\n}\n\nexport enum StarknetIdContract {\n MAINNET = '0x6ac597f8116f886fa1c97a23fa4e08299975ecaf6b598873ca6792b9bbfb678',\n TESTNET_SEPOLIA = '0x154bc2e1af9260b9e66af0e9c46fc757ff893b3ff6a85718a810baf1474',\n}\n\n/**\n * Returns the Starknet ID contract address based on the provided chain ID.\n *\n * @param {StarknetChainId} chainId The chain ID of the Starknet network.\n * @return {string} The Starknet ID contract address.\n * @throws {Error} Throws an error if the Starknet ID contract is not deployed on the network.\n * @example\n * ```typescript\n * const result = starknetId.getStarknetIdContract(constants.StarknetChainId.SN_SEPOLIA);\n * // result = \"0x154bc2e1af9260b9e66af0e9c46fc757ff893b3ff6a85718a810baf1474\"\n * ```\n */\nexport function getStarknetIdContract(chainId: StarknetChainId): string {\n switch (chainId) {\n case StarknetChainId.SN_MAIN:\n return StarknetIdContract.MAINNET;\n\n case StarknetChainId.SN_SEPOLIA:\n return StarknetIdContract.TESTNET_SEPOLIA;\n\n default:\n throw new Error('Starknet.id is not yet deployed on this network');\n }\n}\n\nexport enum StarknetIdIdentityContract {\n MAINNET = '0x05dbdedc203e92749e2e746e2d40a768d966bd243df04a6b712e222bc040a9af',\n TESTNET_SEPOLIA = '0x3697660a0981d734780731949ecb2b4a38d6a58fc41629ed611e8defda',\n}\n\n/**\n * Returns the Starknet ID identity contract address for the given chain ID.\n *\n * @param {StarknetChainId} chainId The chain ID for the specified network.\n *\n * @return {string} The Starknet ID identity contract address for the specified network.\n *\n * @throws {Error} If the Starknet ID verifier contract is not deployed on the network.\n * @example\n * ```typescript\n * const result = starknetId.getStarknetIdIdentityContract(constants.StarknetChainId.SN_SEPOLIA);\n * // result = \"0x3697660a0981d734780731949ecb2b4a38d6a58fc41629ed611e8defda\"\n * ```\n */\nexport function getStarknetIdIdentityContract(chainId: StarknetChainId): string {\n switch (chainId) {\n case StarknetChainId.SN_MAIN:\n return StarknetIdIdentityContract.MAINNET;\n\n case StarknetChainId.SN_SEPOLIA:\n return StarknetIdIdentityContract.TESTNET_SEPOLIA;\n\n default:\n throw new Error('Starknet.id verifier contract is not yet deployed on this network');\n }\n}\n\nexport const StarknetIdMulticallContract =\n '0x034ffb8f4452df7a613a0210824d6414dbadcddce6c6e19bf4ddc9e22ce5f970';\n\n/**\n * Returns the Starknet.id multicall contract address based on the provided chainId.\n *\n * @param {StarknetChainId} chainId - The chainId of the network.\n * @return {string} - The address of the Starknet.id multicall contract.\n * @throws {Error} - If the Starknet.id multicall contract is not deployed on the network.\n * @example\n * ```typescript\n * const result = starknetId.getStarknetIdMulticallContract(constants.StarknetChainId.SN_SEPOLIA);\n * // result = \"0x034ffb8f4452df7a613a0210824d6414dbadcddce6c6e19bf4ddc9e22ce5f970\"\n * ```\n */\nexport function getStarknetIdMulticallContract(chainId: StarknetChainId): string {\n switch (chainId) {\n case StarknetChainId.SN_MAIN:\n return StarknetIdMulticallContract;\n\n case StarknetChainId.SN_SEPOLIA:\n return StarknetIdMulticallContract;\n\n default:\n throw new Error('Starknet.id multicall contract is not yet deployed on this network');\n }\n}\n\nexport enum StarknetIdVerifierContract {\n MAINNET = '0x07d14dfd8ee95b41fce179170d88ba1f0d5a512e13aeb232f19cfeec0a88f8bf',\n TESTNET_SEPOLIA = '0x60B94fEDe525f815AE5E8377A463e121C787cCCf3a36358Aa9B18c12c4D566',\n}\n\n/**\n * Returns the address of the Starknet ID Verifier contract based on the specified chain ID.\n *\n * @param {StarknetChainId} chainId - The ID of the Starknet chain.\n * @return {string} - The address of the Starknet ID Verifier contract.\n * @throws {Error} - If the Starknet ID Verifier contract is not deployed on the specified network.\n * @example\n * ```typescript\n * const result = starknetId.getStarknetIdVerifierContract(constants.StarknetChainId.SN_SEPOLIA);\n * // result = \"0x60B94fEDe525f815AE5E8377A463e121C787cCCf3a36358Aa9B18c12c4D566\"\n * ```\n */\nexport function getStarknetIdVerifierContract(chainId: StarknetChainId): string {\n switch (chainId) {\n case StarknetChainId.SN_MAIN:\n return StarknetIdVerifierContract.MAINNET;\n\n case StarknetChainId.SN_SEPOLIA:\n return StarknetIdVerifierContract.TESTNET_SEPOLIA;\n\n default:\n throw new Error('Starknet.id verifier contract is not yet deployed on this network');\n }\n}\n\nexport enum StarknetIdPfpContract {\n MAINNET = '0x070aaa20ec4a46da57c932d9fd89ca5e6bb9ca3188d3df361a32306aff7d59c7',\n TESTNET_SEPOLIA = '0x9e7bdb8dabd02ea8cfc23b1d1c5278e46490f193f87516ed5ff2dfec02',\n}\n\n/**\n * Retrieves the contract address of the Starknet.id profile picture verifier contract based on the given chain ID.\n *\n * @param {StarknetChainId} chainId - The chain ID of the network.\n * @returns {string} - The contract address of the Starknet.id profile picture verifier contract.\n * @throws {Error} - Throws an error if the Starknet.id profile picture verifier contract is not yet deployed on the network.\n * @example\n * ```typescript\n * const result = starknetId.getStarknetIdPfpContract(constants.StarknetChainId.SN_SEPOLIA);\n * // result = \"0x9e7bdb8dabd02ea8cfc23b1d1c5278e46490f193f87516ed5ff2dfec02\"\n * ```\n */\nexport function getStarknetIdPfpContract(chainId: StarknetChainId): string {\n switch (chainId) {\n case StarknetChainId.SN_MAIN:\n return StarknetIdPfpContract.MAINNET;\n\n case StarknetChainId.SN_SEPOLIA:\n return StarknetIdPfpContract.TESTNET_SEPOLIA;\n\n default:\n throw new Error(\n 'Starknet.id profile picture verifier contract is not yet deployed on this network'\n );\n }\n}\n\nexport enum StarknetIdPopContract {\n MAINNET = '0x0293eb2ba9862f762bd3036586d5755a782bd22e6f5028320f1d0405fd47bff4',\n TESTNET_SEPOLIA = '0x15ae88ae054caa74090b89025c1595683f12edf7a4ed2ad0274de3e1d4a',\n}\n\n/**\n * Retrieves the Starknet ID Proof of Personhood (IdPop) verifier contract address for the given chain ID.\n *\n * @param {StarknetChainId} chainId - The chain ID of the Starknet network.\n * @return {string} - The Starknet ID Pop contract address.\n * @throws {Error} - If the Starknet ID Pop contract is not deployed on the specified network.\n * @example\n * ```typescript\n * const result = starknetId.getStarknetIdPopContract(constants.StarknetChainId.SN_SEPOLIA);\n * // result = \"0x15ae88ae054caa74090b89025c1595683f12edf7a4ed2ad0274de3e1d4a\"\n * ```\n */\nexport function getStarknetIdPopContract(chainId: StarknetChainId): string {\n switch (chainId) {\n case StarknetChainId.SN_MAIN:\n return StarknetIdPopContract.MAINNET;\n\n case StarknetChainId.SN_SEPOLIA:\n return StarknetIdPopContract.TESTNET_SEPOLIA;\n\n default:\n throw new Error(\n 'Starknet.id proof of personhood verifier contract is not yet deployed on this network'\n );\n }\n}\n\n/**\n * Returns a CairoCustomEnum object.\n *\n * Functions to build CairoCustomEnum for multiCall contracts\n * @param {Object} [staticEx] An optional object defining the \"Static\" value of the CairoCustomEnum.\n * @param {number[]} [ifEqual] An optional array defining the \"IfEqual\" value of the CairoCustomEnum.\n * @param {number[]} [ifNotEqual] An optional array defining the \"IfNotEqual\" value of the CairoCustomEnum.\n * @return {CairoCustomEnum} - The created CairoCustomEnum object.\n * @example\n * ```typescript\n * const result: CairoCustomEnum = starknetId.execution(undefined, [1, 2, 3], undefined);\n * // result = CairoCustomEnum {\n * // variant: {\n * // Static: undefined,\n * // IfEqual: { '0': 1, '1': 2, '2': 3 },\n * // IfNotEqual: undefined\n * // }\n * // }\n * ```\n */\nexport function execution(\n staticEx: {} | undefined,\n ifEqual: number[] | undefined = undefined,\n ifNotEqual: number[] | undefined = undefined\n): CairoCustomEnum {\n return new CairoCustomEnum({\n Static: staticEx,\n IfEqual: ifEqual ? tuple(ifEqual[0], ifEqual[1], ifEqual[2]) : undefined,\n IfNotEqual: ifNotEqual ? tuple(ifNotEqual[0], ifNotEqual[1], ifNotEqual[2]) : undefined,\n });\n}\n\n/**\n * Creates a new instance of CairoCustomEnum.\n *\n * @param {BigNumberish} [hardcoded] The hardcoded value for the CairoCustomEnum.\n * @param {number[]} [reference] The reference array for the CairoCustomEnum.\n * @returns {CairoCustomEnum} The new instance of CairoCustomEnum.\n * @example\n * ```typescript\n * const result: CairoCustomEnum = starknetId.dynamicFelt(undefined, [1, 2]);\n * // result = CairoCustomEnum {\n * // variant: { Hardcoded: undefined, Reference: { '0': 1, '1': 2 } }\n * // }\n * ```\n */\nexport function dynamicFelt(\n hardcoded: BigNumberish | undefined,\n reference: number[] | undefined = undefined\n): CairoCustomEnum {\n return new CairoCustomEnum({\n Hardcoded: hardcoded,\n Reference: reference ? tuple(reference[0], reference[1]) : undefined,\n });\n}\n\n/**\n * Creates a new instance of CairoCustomEnum with the given parameters.\n * @param {BigNumberish} [hardcoded] The hardcoded value.\n * @param {BigNumberish[]} [reference] The reference value (optional).\n * @param {BigNumberish[]} [arrayReference] The array reference value (optional).\n * @return {CairoCustomEnum} The new instance of CairoCustomEnum.\n * @example\n * ```typescript\n * const result: CairoCustomEnum = starknetId.dynamicCallData(undefined, [1, 2], undefined);\n * // result = CairoCustomEnum {\n * // variant: {\n * // Hardcoded: undefined,\n * // Reference: { '0': 1, '1': 2 },\n * // ArrayReference: undefined\n * // }\n * // }\n * ```\n */\nexport function dynamicCallData(\n hardcoded: BigNumberish | undefined,\n reference: BigNumberish[] | undefined = undefined,\n arrayReference: BigNumberish[] | undefined = undefined\n): CairoCustomEnum {\n return new CairoCustomEnum({\n Hardcoded: hardcoded,\n Reference: reference ? tuple(reference[0], reference[1]) : undefined,\n ArrayReference: arrayReference ? tuple(arrayReference[0], arrayReference[1]) : undefined,\n });\n}\n","import { BigNumberish, RawArgsArray, StarkProfile } from '../../types';\nimport { CallData } from '../../utils/calldata';\nimport { getSelectorFromName } from '../../utils/hash';\nimport { decodeShortString, encodeShortString } from '../../utils/shortString';\nimport {\n dynamicCallData,\n dynamicFelt,\n execution,\n getStarknetIdContract,\n getStarknetIdIdentityContract,\n getStarknetIdMulticallContract,\n getStarknetIdPfpContract,\n getStarknetIdPopContract,\n getStarknetIdVerifierContract,\n useDecoded,\n useEncoded,\n} from '../../utils/starknetId';\nimport type { ProviderInterface } from '..';\n\nexport class StarknetId {\n async getStarkName(address: BigNumberish, StarknetIdContract?: string) {\n return StarknetId.getStarkName(\n // After Mixin, this is ProviderInterface\n (this) as ProviderInterface,\n address,\n StarknetIdContract\n );\n }\n\n public async getAddressFromStarkName(name: string, StarknetIdContract?: string): Promise {\n return StarknetId.getAddressFromStarkName(\n // After Mixin, this is ProviderInterface\n (this) as ProviderInterface,\n name,\n StarknetIdContract\n );\n }\n\n async getStarkProfile(\n address: BigNumberish,\n StarknetIdContract?: string,\n StarknetIdIdentityContract?: string,\n StarknetIdVerifierContract?: string,\n StarknetIdPfpContract?: string,\n StarknetIdPopContract?: string,\n StarknetIdMulticallContract?: string\n ) {\n return StarknetId.getStarkProfile(\n // After Mixin, this is ProviderInterface\n (this) as ProviderInterface,\n address,\n StarknetIdContract,\n StarknetIdIdentityContract,\n StarknetIdVerifierContract,\n StarknetIdPfpContract,\n StarknetIdPopContract,\n StarknetIdMulticallContract\n );\n }\n\n static async getStarkName(\n provider: ProviderInterface,\n address: BigNumberish,\n StarknetIdContract?: string\n ): Promise {\n const chainId = await provider.getChainId();\n const contract = StarknetIdContract ?? getStarknetIdContract(chainId);\n\n try {\n const hexDomain = await provider.callContract({\n contractAddress: contract,\n entrypoint: 'address_to_domain',\n calldata: CallData.compile({\n address,\n hint: [],\n }),\n });\n const decimalDomain = hexDomain.map((element) => BigInt(element)).slice(1);\n\n const stringDomain = useDecoded(decimalDomain);\n\n if (!stringDomain) {\n throw Error('Starkname not found');\n }\n\n return stringDomain;\n } catch (e) {\n if (e instanceof Error && e.message === 'Starkname not found') {\n throw e;\n }\n throw Error('Could not get stark name');\n }\n }\n\n static async getAddressFromStarkName(\n provider: ProviderInterface,\n name: string,\n StarknetIdContract?: string\n ): Promise {\n const chainId = await provider.getChainId();\n const contract = StarknetIdContract ?? getStarknetIdContract(chainId);\n\n try {\n const encodedDomain = name\n .replace('.stark', '')\n .split('.')\n .map((part) => useEncoded(part).toString(10));\n\n const addressData = await provider.callContract({\n contractAddress: contract,\n entrypoint: 'domain_to_address',\n calldata: CallData.compile({ domain: encodedDomain, hint: [] }),\n });\n\n return addressData[0];\n } catch {\n throw Error('Could not get address from stark name');\n }\n }\n\n static async getStarkProfile(\n provider: ProviderInterface,\n address: BigNumberish,\n StarknetIdContract?: string,\n StarknetIdIdentityContract?: string,\n StarknetIdVerifierContract?: string,\n StarknetIdPfpContract?: string,\n StarknetIdPopContract?: string,\n StarknetIdMulticallContract?: string\n ): Promise {\n const chainId = await provider.getChainId();\n const contract = StarknetIdContract ?? getStarknetIdContract(chainId);\n const identityContract = StarknetIdIdentityContract ?? getStarknetIdIdentityContract(chainId);\n const verifierContract = StarknetIdVerifierContract ?? getStarknetIdVerifierContract(chainId);\n const pfpContract = StarknetIdPfpContract ?? getStarknetIdPfpContract(chainId);\n const popContract = StarknetIdPopContract ?? getStarknetIdPopContract(chainId);\n const multicallAddress = StarknetIdMulticallContract ?? getStarknetIdMulticallContract(chainId);\n\n try {\n const calls: RawArgsArray = [\n {\n execution: execution({}),\n to: dynamicCallData(contract),\n selector: dynamicCallData(getSelectorFromName('address_to_domain')),\n calldata: [dynamicCallData(address), dynamicCallData('0')],\n },\n {\n execution: execution({}),\n to: dynamicFelt(contract),\n selector: dynamicFelt(getSelectorFromName('domain_to_id')),\n calldata: [dynamicCallData(undefined, undefined, [0, 0])],\n },\n {\n execution: execution({}),\n to: dynamicFelt(identityContract),\n selector: dynamicFelt(getSelectorFromName('get_verifier_data')),\n calldata: [\n dynamicCallData(undefined, [1, 0]),\n dynamicCallData(encodeShortString('twitter')),\n dynamicCallData(verifierContract),\n dynamicCallData('0'),\n ],\n },\n {\n execution: execution({}),\n to: dynamicFelt(identityContract),\n selector: dynamicFelt(getSelectorFromName('get_verifier_data')),\n calldata: [\n dynamicCallData(undefined, [1, 0]),\n dynamicCallData(encodeShortString('github')),\n dynamicCallData(verifierContract),\n dynamicCallData('0'),\n ],\n },\n {\n execution: execution({}),\n to: dynamicFelt(identityContract),\n selector: dynamicFelt(getSelectorFromName('get_verifier_data')),\n calldata: [\n dynamicCallData(undefined, [1, 0]),\n dynamicCallData(encodeShortString('discord')),\n dynamicCallData(verifierContract),\n dynamicCallData('0'),\n ],\n },\n {\n execution: execution({}),\n to: dynamicFelt(identityContract),\n selector: dynamicFelt(getSelectorFromName('get_verifier_data')),\n calldata: [\n dynamicCallData(undefined, [1, 0]),\n dynamicCallData(encodeShortString('proof_of_personhood')),\n dynamicCallData(popContract),\n dynamicCallData('0'),\n ],\n },\n // PFP\n {\n execution: execution({}),\n to: dynamicFelt(identityContract),\n selector: dynamicFelt(getSelectorFromName('get_verifier_data')),\n calldata: [\n dynamicCallData(undefined, [1, 0]),\n dynamicCallData(encodeShortString('nft_pp_contract')),\n dynamicCallData(pfpContract),\n dynamicCallData('0'),\n ],\n },\n {\n execution: execution({}),\n to: dynamicFelt(identityContract),\n selector: dynamicFelt(getSelectorFromName('get_extended_verifier_data')),\n calldata: [\n dynamicCallData(undefined, [1, 0]),\n dynamicCallData(encodeShortString('nft_pp_id')),\n dynamicCallData('2'),\n dynamicCallData(pfpContract),\n dynamicCallData('0'),\n ],\n },\n {\n execution: execution(undefined, undefined, [6, 0, 0]),\n to: dynamicFelt(undefined, [6, 0]),\n selector: dynamicFelt(getSelectorFromName('tokenURI')),\n calldata: [dynamicCallData(undefined, [7, 1]), dynamicCallData(undefined, [7, 2])],\n },\n ];\n\n const data = await provider.callContract({\n contractAddress: multicallAddress,\n entrypoint: 'aggregate',\n calldata: CallData.compile({\n calls,\n }),\n });\n\n if (Array.isArray(data)) {\n // Format data\n const size = parseInt(data[0], 16);\n const finalArray: string[][] = [];\n let index = 1;\n for (let i = 0; i < size; i += 1) {\n if (index < data.length) {\n const subArraySize = parseInt(data[index], 16);\n index += 1;\n\n const subArray = data.slice(index, index + subArraySize);\n finalArray.push(subArray);\n\n index += subArraySize;\n } else {\n break;\n }\n }\n\n const name = useDecoded(finalArray[0].slice(1).map((hexString) => BigInt(hexString)));\n\n const twitter =\n finalArray[2][0] !== '0x0' ? BigInt(finalArray[2][0]).toString() : undefined;\n const github = finalArray[3][0] !== '0x0' ? BigInt(finalArray[3][0]).toString() : undefined;\n const discord =\n finalArray[4][0] !== '0x0' ? BigInt(finalArray[4][0]).toString() : undefined;\n const proofOfPersonhood = finalArray[5][0] === '0x1'; // 10\n\n const profilePictureMetadata =\n data[0] === '0x9'\n ? finalArray[8]\n .slice(1)\n .map((val: string) => decodeShortString(val))\n .join('')\n : undefined;\n\n const profilePicture =\n profilePictureMetadata ||\n `https://starknet.id/api/identicons/${BigInt(finalArray[1][0]).toString()}`;\n\n return {\n name,\n twitter,\n github,\n discord,\n proofOfPersonhood,\n profilePicture,\n };\n }\n throw Error('Error while calling aggregate function');\n } catch (e) {\n if (e instanceof Error) {\n throw e;\n }\n throw Error('Could not get user stark profile data from address');\n }\n }\n}\n","import { RPC06, RPC07 } from '../channel';\nimport { StarknetChainId } from '../constants';\nimport type {\n AccountInvocations,\n BigNumberish,\n Block,\n BlockIdentifier,\n Call,\n CallContractResponse,\n ContractClassResponse,\n ContractVersion,\n DeclareContractResponse,\n DeclareContractTransaction,\n DeployAccountContractPayload,\n DeployAccountContractTransaction,\n DeployContractResponse,\n EstimateFeeResponse,\n EstimateFeeResponseBulk,\n GetBlockResponse,\n GetTransactionResponse,\n Invocation,\n InvocationsDetailsWithNonce,\n InvokeFunctionResponse,\n Nonce,\n PendingBlock,\n SimulateTransactionResponse,\n StateUpdateResponse,\n Storage,\n getContractVersionOptions,\n getEstimateFeeBulkOptions,\n getSimulateTransactionOptions,\n waitForTransactionOptions,\n} from '../types';\nimport type { GetTransactionReceiptResponse } from '../utils/transactionReceipt';\n\nexport abstract class ProviderInterface {\n public abstract channel: RPC07.RpcChannel | RPC06.RpcChannel;\n\n /**\n * Gets the Starknet chain Id\n *\n * @returns the chain Id\n */\n public abstract getChainId(): Promise;\n\n /**\n * Calls a function on the Starknet contract.\n *\n * @param call transaction to be called\n * @param blockIdentifier block identifier\n * @returns the result of the function on the smart contract.\n */\n public abstract callContract(\n call: Call,\n blockIdentifier?: BlockIdentifier\n ): Promise;\n\n /**\n * Gets the block information\n *\n * @param blockIdentifier block identifier\n * @returns the block object\n */\n public abstract getBlock(blockIdentifier?: 'pending'): Promise;\n public abstract getBlock(blockIdentifier: 'latest'): Promise;\n public abstract getBlock(blockIdentifier: BlockIdentifier): Promise;\n\n /**\n * Gets the contract class of the deployed contract.\n *\n * @param contractAddress - contract address\n * @param blockIdentifier - block identifier\n * @returns Contract class of compiled contract\n */\n public abstract getClassAt(\n contractAddress: string,\n blockIdentifier?: BlockIdentifier\n ): Promise;\n\n /**\n * Gets the price of l1 gas in the block\n *\n * @param blockIdentifier block identifier\n * @returns gas price of the block\n */\n public abstract getL1GasPrice(blockIdentifier: BlockIdentifier): Promise;\n\n /**\n * Get L1 message hash from L2 transaction hash\n * @param {BigNumberish} l2TxHash L2 transaction hash\n * @returns {string} Hex string of L1 message hash\n * @example\n * In Sepolia Testnet :\n * ```typescript\n * const result = provider.getL1MessageHash('0x28dfc05eb4f261b37ddad451ff22f1d08d4e3c24dc646af0ec69fa20e096819');\n * // result = '0x55b3f8b6e607fffd9b4d843dfe8f9b5c05822cd94fcad8797deb01d77805532a'\n * ```\n */\n public abstract getL1MessageHash(l2TxHash: BigNumberish): Promise;\n\n /**\n * Returns the contract class hash in the given block for the contract deployed at the given address\n *\n * @param contractAddress - contract address\n * @param blockIdentifier - block identifier\n * @returns Class hash\n */\n public abstract getClassHashAt(\n contractAddress: string,\n blockIdentifier?: BlockIdentifier\n ): Promise;\n\n /**\n * Returns the contract class deployed under the given class hash.\n *\n * @param classHash - class hash\n * @returns Contract class of compiled contract\n */\n public abstract getClassByHash(classHash: string): Promise;\n\n /**\n * Returns the nonce associated with the given address in the given block\n *\n * @param contractAddress - contract address\n * @returns the hex nonce\n */\n public abstract getNonceForAddress(\n contractAddress: string,\n blockIdentifier?: BlockIdentifier\n ): Promise;\n\n /**\n * Get the value of the storage (contract's variable) at the given address and key\n *\n * @param contractAddress\n * @param key - from getStorageVarAddress('') (WIP)\n * @param blockIdentifier - block identifier\n * @returns the value of the storage variable\n */\n public abstract getStorageAt(\n contractAddress: string,\n key: BigNumberish,\n blockIdentifier?: BlockIdentifier\n ): Promise;\n\n /**\n * Gets the transaction information from a tx id.\n *\n * @param transactionHash\n * @returns the transaction object \\{ transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? \\}\n */\n public abstract getTransaction(transactionHash: BigNumberish): Promise;\n\n /**\n * Gets the transaction receipt from a tx hash.\n *\n * @param transactionHash\n * @returns the transaction receipt object\n */\n public abstract getTransactionReceipt(\n transactionHash: BigNumberish\n ): Promise;\n\n /**\n * Deploys a given compiled Account contract (json) to starknet\n *\n * @param payload payload to be deployed containing:\n * - compiled contract code\n * - constructor calldata\n * - address salt\n * @returns a confirmation of sending a transaction on the starknet contract\n */\n public abstract deployAccountContract(\n payload: DeployAccountContractPayload,\n details: InvocationsDetailsWithNonce\n ): Promise;\n\n /**\n * Invokes a function on starknet\n * @deprecated This method won't be supported as soon as fees are mandatory. Should not be used outside of Account class\n *\n * @param invocation the invocation object containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param details - optional details containing:\n * - nonce - optional nonce\n * - version - optional version\n * - maxFee - optional maxFee\n * @returns response from addTransaction\n */\n public abstract invokeFunction(\n invocation: Invocation,\n details: InvocationsDetailsWithNonce\n ): Promise;\n\n /**\n * Declares a given compiled contract (json) to starknet\n * @param transaction transaction payload to be deployed containing:\n * - compiled contract code\n * - sender address\n * - signature\n * @param details Invocation Details containing:\n * - nonce\n * - optional version\n * - optional maxFee\n * @returns a confirmation of sending a transaction on the starknet contract\n */\n public abstract declareContract(\n transaction: DeclareContractTransaction,\n details: InvocationsDetailsWithNonce\n ): Promise;\n\n /**\n * Estimates the fee for a given INVOKE transaction\n * @deprecated Please use getInvokeEstimateFee or getDeclareEstimateFee instead. Should not be used outside of Account class\n *\n * @param invocation the invocation object containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param details - optional details containing:\n * - nonce - optional nonce\n * - version - optional version\n * @param blockIdentifier - (optional) block identifier\n * @param skipValidate - (optional) skip cairo __validate__ method\n * @returns the estimated fee\n */\n public abstract getEstimateFee(\n invocation: Invocation,\n details: InvocationsDetailsWithNonce,\n blockIdentifier?: BlockIdentifier,\n skipValidate?: boolean\n ): Promise;\n\n /**\n * Estimates the fee for a given INVOKE transaction\n *\n * @param invocation the invocation object containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param details - optional details containing:\n * - nonce - optional nonce\n * - version - optional version\n * @param blockIdentifier - (optional) block identifier\n * @param skipValidate - (optional) skip cairo __validate__ method\n * @returns the estimated fee\n */\n public abstract getInvokeEstimateFee(\n invocation: Invocation,\n details: InvocationsDetailsWithNonce,\n blockIdentifier?: BlockIdentifier,\n skipValidate?: boolean\n ): Promise;\n\n /**\n * Estimates the fee for a given DECLARE transaction\n *\n * @param transaction transaction payload to be declared containing:\n * - compiled contract code\n * - sender address\n * - signature - (defaults to []) the signature\n * @param details - optional details containing:\n * - nonce\n * - version - optional version\n * - optional maxFee\n * @param blockIdentifier - (optional) block identifier\n * @param skipValidate - (optional) skip cairo __validate__ method\n * @returns the estimated fee\n */\n public abstract getDeclareEstimateFee(\n transaction: DeclareContractTransaction,\n details: InvocationsDetailsWithNonce,\n blockIdentifier?: BlockIdentifier,\n skipValidate?: boolean\n ): Promise;\n\n /**\n * Estimates the fee for a given DEPLOY_ACCOUNT transaction\n *\n * @param transaction transaction payload to be deployed containing:\n * - classHash\n * - constructorCalldata\n * - addressSalt\n * - signature - (defaults to []) the signature\n * @param details - optional details containing:\n * - nonce\n * - version - optional version\n * - optional maxFee\n * @param blockIdentifier - (optional) block identifier\n * @param skipValidate - (optional) skip cairo __validate__ method\n * @returns the estimated fee\n */\n public abstract getDeployAccountEstimateFee(\n transaction: DeployAccountContractTransaction,\n details: InvocationsDetailsWithNonce,\n blockIdentifier?: BlockIdentifier,\n skipValidate?: boolean\n ): Promise;\n\n /**\n * Estimates the fee for a list of INVOKE transaction\n *\n * @param invocations AccountInvocations - Complete invocations array with account details\n * @param options getEstimateFeeBulkOptions\n * - (optional) blockIdentifier - BlockIdentifier\n * @returns the estimated fee\n */\n public abstract getEstimateFeeBulk(\n invocations: AccountInvocations,\n options?: getEstimateFeeBulkOptions\n ): Promise;\n\n /**\n * Wait for the transaction to be accepted\n * @param txHash - transaction hash\n * @param options waitForTransactionOptions\n * - (optional) retryInterval: number | undefined;\n * - (optional) successStates: TransactionStatus[] | undefined;\n * @return GetTransactionReceiptResponse\n */\n public abstract waitForTransaction(\n txHash: BigNumberish,\n options?: waitForTransactionOptions\n ): Promise;\n\n /**\n * Simulates the transaction and returns the transaction trace and estimated fee.\n *\n * @param invocations AccountInvocations - Complete invocations array with account details\n * @param options - getSimulateTransactionOptions\n * - (optional) blockIdentifier - block identifier\n * - (optional) skipValidate - skip cairo __validate__ method\n * - (optional) skipExecute - skip cairo __execute__ method\n * @returns an array of transaction trace and estimated fee\n */\n public abstract getSimulateTransaction(\n invocations: AccountInvocations,\n options?: getSimulateTransactionOptions\n ): Promise;\n\n /**\n * Gets the state changes in a specific block (result of executing the requested block)\n *\n * @param blockIdentifier - block identifier\n * @returns StateUpdateResponse\n */\n public abstract getStateUpdate(blockIdentifier?: BlockIdentifier): Promise;\n\n /**\n * Gets the contract version from the provided address\n * @param contractAddress string\n * @param classHash undefined\n * @param options - getContractVersionOptions\n * - (optional) compiler - (default true) extract compiler version using type tactic from abi\n * - (optional) blockIdentifier - block identifier\n */\n public abstract getContractVersion(\n contractAddress: string,\n classHash?: undefined,\n options?: getContractVersionOptions\n ): Promise;\n\n /**\n * Gets the contract version from the provided address\n * @param contractAddress undefined\n * @param classHash\n * @param options - getContractVersionOptions\n * - (optional) compiler - (default true) extract compiler version using type tactic from abi\n * - (optional) blockIdentifier - block identifier\n */\n public abstract getContractVersion(\n contractAddress: undefined,\n classHash: string,\n options?: getContractVersionOptions\n ): Promise;\n}\n","import { RpcProvider } from './rpc';\n\nexport { RpcProvider as Provider } from './extensions/default'; // backward-compatibility\nexport * from './errors';\nexport * from './interface';\nexport * from './extensions/default';\n\nexport const defaultProvider = new RpcProvider({ default: true });\n","import {\n Call,\n DeclareSignerDetails,\n DeployAccountSignerDetails,\n InvocationsSignerDetails,\n Signature,\n TypedData,\n} from '../types';\n\nexport abstract class SignerInterface {\n /**\n * Method to get the public key of the signer\n *\n * @returns {string} hex-string\n * @example\n * ```typescript\n * const mySigner = new Signer(\"0x123\");\n * const result = await mySigner.getPubKey();\n * // result = \"0x566d69d8c99f62bc71118399bab25c1f03719463eab8d6a444cd11ece131616\"\n * ```\n */\n public abstract getPubKey(): Promise;\n\n /**\n * Signs a JSON object for off-chain usage with the private key and returns the signature.\n * This adds a message prefix so it can't be interchanged with transactions\n *\n * @param {TypedData} typedData JSON object to be signed\n * @param {string} accountAddress Hex string of the account's address\n * @returns {Promise} the signature of the message\n * @example\n * ```typescript\n * const mySigner = new Signer(\"0x123\");\n * const myTypedData: TypedData = {\n * domain: {name: \"Example DApp\",\n * chainId: constants.StarknetChainId.SN_SEPOLIA,\n * version: \"0.0.3\"},\n * types: {StarkNetDomain: [\n * { name: \"name\", type: \"string\" },\n * { name: \"chainId\", type: \"felt\" },\n * { name: \"version\", type: \"string\" }],\n * Message: [{ name: \"message\", type: \"felt\" }]},\n * primaryType: \"Message\", message: {message: \"1234\"}};\n * const result = await mySigner.signMessage(myTypedData,\"0x5d08a4e9188429da4e993c9bf25aafe5cd491ee2b501505d4d059f0c938f82d\");\n * // result = Signature {r: 684915484701699003335398790608214855489903651271362390249153620883122231253n,\n * // s: 1399150959912500412309102776989465580949387575375484933432871778355496929189n, recovery: 1}\n * ```\n\n */\n public abstract signMessage(typedData: TypedData, accountAddress: string): Promise;\n\n /**\n * Signs transactions with the private key and returns the signature\n *\n * @param {Call[]} transactions array of Call objects\n * @param {InvocationsSignerDetails} transactionsDetail InvocationsSignerDetails object\n * @returns {Promise} the signature of the transaction\n * @example\n * ```typescript\n * const mySigner = new Signer(\"0x123\");\n * const calls: Call[] = [{\n * contractAddress: \"0x1234567890123456789012345678901234567890\",\n * entrypoint: \"functionName\",\n * calldata: [1, 2, 3]\n * }];\n * const transactionsDetail: InvocationsSignerDetails = {\n * walletAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',\n * chainId: constants.StarknetChainId.SN_MAIN,\n * cairoVersion: \"1\",\n * maxFee: '0x1234567890abcdef',\n * version: \"0x0\", nonce: 1};\n * const result = await mySigner.signTransaction(calls, transactionsDetail);\n * // result = Signature {r: 304910226421970384958146916800275294114105560641204815169249090836676768876n,\n * // s: 1072798866000813654190523783606274062837012608648308896325315895472901074693n, recovery: 0}\n * ```\n */\n public abstract signTransaction(\n transactions: Call[],\n transactionsDetail: InvocationsSignerDetails\n ): Promise;\n\n /**\n * Signs a DEPLOY_ACCOUNT transaction with the private key and returns the signature\n *\n * @param {DeployAccountSignerDetails} transaction to deploy an account contract\n * @returns {Promise} the signature of the transaction to deploy an account\n * @example\n * ```typescript\n * const mySigner = new Signer(\"0x123\");\n * const myDeployAcc: DeployAccountSignerDetails = {\n * contractAddress: \"0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641\",\n * version: \"0x2\", chainId: constants.StarknetChainId.SN_SEPOLIA,\n * classHash: \"0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4\",\n * constructorCalldata: [1, 2],addressSalt: 1234,\n * nonce: 45, maxFee: 10 ** 15, tip: 0, paymasterData: [],accountDeploymentData: [],\n * nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1,\n * feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1,\n * resourceBounds: stark.estimateFeeToBounds(constants.ZERO),\n * }\n * const result = await mySigner.signDeployAccountTransaction(myDeployAcc);\n * // result = Signature {r: 2871311234341436528393212130310036951068553852419934781736214693308640202748n,\n * // s: 1746271646048888422437132495446973163454853863041370993384284773665861377605n, recovery: 1}\n * ```\n */\n public abstract signDeployAccountTransaction(\n transaction: DeployAccountSignerDetails\n ): Promise;\n\n /**\n * Signs a DECLARE transaction with the private key and returns the signature\n *\n * @param {DeclareSignerDetails} transaction to declare a class\n * @returns {Promise} the signature of the transaction to declare a class\n * @example\n * ```typescript\n * const mySigner = new Signer(\"0x123\");\n * const myDeclare: DeclareSignerDetails = {\n * version: \"0x2\", chainId: constants.StarknetChainId.SN_SEPOLIA,\n * senderAddress: \"0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641\",\n * classHash: \"0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4\",\n * nonce: 45, maxFee: 10 ** 15, tip: 0, paymasterData: [], accountDeploymentData: [],\n * nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1,\n * feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1,\n * resourceBounds: stark.estimateFeeToBounds(constants.ZERO),\n}\n * const result = await mySigner.signDeclareTransaction(myDeclare);\n * // result = Signature {r: 2432056944313955951711774394836075930010416436707488863728289188289211995670n,\n * // s: 3407649393310177489888603098175002856596469926897298636282244411990343146307n, recovery: 1}\n * ```\n */\n public abstract signDeclareTransaction(transaction: DeclareSignerDetails): Promise;\n}\n","/* eslint-disable no-param-reassign */\nimport { PRIME, RANGE_FELT, RANGE_I128, RANGE_U128 } from '../constants';\nimport {\n BigNumberish,\n TypedDataRevision as Revision,\n StarknetEnumType,\n StarknetMerkleType,\n StarknetType,\n TypedData,\n} from '../types';\nimport assert from './assert';\nimport { byteArrayFromString } from './calldata/byteArray';\nimport {\n computePedersenHash,\n computePedersenHashOnElements,\n computePoseidonHash,\n computePoseidonHashOnElements,\n getSelectorFromName,\n} from './hash';\nimport { MerkleTree } from './merkle';\nimport { isHex, toHex } from './num';\nimport { encodeShortString, isString } from './shortString';\n\n/** @deprecated prefer importing from 'types' over 'typedData' */\nexport * from '../types/typedData';\n\ninterface Context {\n parent?: string;\n key?: string;\n}\n\ninterface Configuration {\n domain: string;\n hashMethod: (data: BigNumberish[]) => string;\n hashMerkleMethod: (a: BigNumberish, b: BigNumberish) => string;\n escapeTypeString: (s: string) => string;\n presetTypes: TypedData['types'];\n}\n\nconst presetTypes: TypedData['types'] = {\n u256: JSON.parse('[{ \"name\": \"low\", \"type\": \"u128\" }, { \"name\": \"high\", \"type\": \"u128\" }]'),\n TokenAmount: JSON.parse(\n '[{ \"name\": \"token_address\", \"type\": \"ContractAddress\" }, { \"name\": \"amount\", \"type\": \"u256\" }]'\n ),\n NftId: JSON.parse(\n '[{ \"name\": \"collection_address\", \"type\": \"ContractAddress\" }, { \"name\": \"token_id\", \"type\": \"u256\" }]'\n ),\n};\n\nconst revisionConfiguration: Record = {\n [Revision.ACTIVE]: {\n domain: 'StarknetDomain',\n hashMethod: computePoseidonHashOnElements,\n hashMerkleMethod: computePoseidonHash,\n escapeTypeString: (s) => `\"${s}\"`,\n presetTypes,\n },\n [Revision.LEGACY]: {\n domain: 'StarkNetDomain',\n hashMethod: computePedersenHashOnElements,\n hashMerkleMethod: computePedersenHash,\n escapeTypeString: (s) => s,\n presetTypes: {},\n },\n};\n\nfunction assertRange(data: unknown, type: string, { min, max }: { min: bigint; max: bigint }) {\n const value = BigInt(data as string);\n assert(value >= min && value <= max, `${value} (${type}) is out of bounds [${min}, ${max}]`);\n}\n\nfunction identifyRevision({ types, domain }: TypedData) {\n if (revisionConfiguration[Revision.ACTIVE].domain in types && domain.revision === Revision.ACTIVE)\n return Revision.ACTIVE;\n\n if (\n revisionConfiguration[Revision.LEGACY].domain in types &&\n (domain.revision ?? Revision.LEGACY) === Revision.LEGACY\n )\n return Revision.LEGACY;\n\n return undefined;\n}\n\nfunction getHex(value: BigNumberish): string {\n try {\n return toHex(value);\n } catch (e) {\n if (isString(value)) {\n return toHex(encodeShortString(value));\n }\n throw new Error(`Invalid BigNumberish: ${value}`);\n }\n}\n\n/**\n * Validates that `data` matches the EIP-712 JSON schema.\n */\nfunction validateTypedData(data: unknown): data is TypedData {\n const typedData = data as TypedData;\n return Boolean(\n typedData.message && typedData.primaryType && typedData.types && identifyRevision(typedData)\n );\n}\n\n/**\n * Prepares the selector for use.\n *\n * @param {string} selector - The selector to be prepared.\n * @returns {string} The prepared selector.\n */\nexport function prepareSelector(selector: string): string {\n return isHex(selector) ? selector : getSelectorFromName(selector);\n}\n\n/**\n * Checks if the given Starknet type is a Merkle tree type.\n *\n * @param {StarknetType} type - The StarkNet type to check.\n *\n * @returns {boolean} - True if the type is a Merkle tree type, false otherwise.\n */\nexport function isMerkleTreeType(type: StarknetType): type is StarknetMerkleType {\n return type.type === 'merkletree';\n}\n\n/**\n * Get the dependencies of a struct type. If a struct has the same dependency multiple times, it's only included once\n * in the resulting array.\n */\nexport function getDependencies(\n types: TypedData['types'],\n type: string,\n dependencies: string[] = [],\n contains: string = '',\n revision: Revision = Revision.LEGACY\n): string[] {\n // Include pointers (struct arrays)\n if (type[type.length - 1] === '*') {\n type = type.slice(0, -1);\n } else if (revision === Revision.ACTIVE) {\n // enum base\n if (type === 'enum') {\n type = contains;\n }\n // enum element types\n else if (type.match(/^\\(.*\\)$/)) {\n type = type.slice(1, -1);\n }\n }\n\n if (dependencies.includes(type) || !types[type]) {\n return dependencies;\n }\n\n return [\n type,\n ...(types[type] as StarknetEnumType[]).reduce(\n (previous, t) => [\n ...previous,\n ...getDependencies(types, t.type, previous, t.contains, revision).filter(\n (dependency) => !previous.includes(dependency)\n ),\n ],\n []\n ),\n ];\n}\n\nfunction getMerkleTreeType(types: TypedData['types'], ctx: Context) {\n if (ctx.parent && ctx.key) {\n const parentType = types[ctx.parent];\n const merkleType = parentType.find((t) => t.name === ctx.key)!;\n const isMerkleTree = isMerkleTreeType(merkleType);\n if (!isMerkleTree) {\n throw new Error(`${ctx.key} is not a merkle tree`);\n }\n if (merkleType.contains.endsWith('*')) {\n throw new Error(`Merkle tree contain property must not be an array but was given ${ctx.key}`);\n }\n return merkleType.contains;\n }\n return 'raw';\n}\n\n/**\n * Encode a type to a string. All dependent types are alphabetically sorted.\n */\nexport function encodeType(\n types: TypedData['types'],\n type: string,\n revision: Revision = Revision.LEGACY\n): string {\n const allTypes =\n revision === Revision.ACTIVE\n ? { ...types, ...revisionConfiguration[revision].presetTypes }\n : types;\n const [primary, ...dependencies] = getDependencies(\n allTypes,\n type,\n undefined,\n undefined,\n revision\n );\n const newTypes = !primary ? [] : [primary, ...dependencies.sort()];\n\n const esc = revisionConfiguration[revision].escapeTypeString;\n\n return newTypes\n .map((dependency) => {\n const dependencyElements = allTypes[dependency].map((t) => {\n const targetType =\n t.type === 'enum' && revision === Revision.ACTIVE\n ? (t as StarknetEnumType).contains\n : t.type;\n // parentheses handling for enum variant types\n const typeString = targetType.match(/^\\(.*\\)$/)\n ? `(${targetType\n .slice(1, -1)\n .split(',')\n .map((e) => (e ? esc(e) : e))\n .join(',')})`\n : esc(targetType);\n return `${esc(t.name)}:${typeString}`;\n });\n return `${esc(dependency)}(${dependencyElements})`;\n })\n .join('');\n}\n\n/**\n * Get a type string as hash.\n */\nexport function getTypeHash(\n types: TypedData['types'],\n type: string,\n revision: Revision = Revision.LEGACY\n): string {\n return getSelectorFromName(encodeType(types, type, revision));\n}\n\n/**\n * Encodes a single value to an ABI serialisable string, number or Buffer. Returns the data as tuple, which consists of\n * an array of ABI compatible types, and an array of corresponding values.\n */\nexport function encodeValue(\n types: TypedData['types'],\n type: string,\n data: unknown,\n ctx: Context = {},\n revision: Revision = Revision.LEGACY\n): [string, string] {\n if (types[type]) {\n return [type, getStructHash(types, type, data as TypedData['message'], revision)];\n }\n\n if (revisionConfiguration[revision].presetTypes[type]) {\n return [\n type,\n getStructHash(\n revisionConfiguration[revision].presetTypes,\n type,\n data as TypedData['message'],\n revision\n ),\n ];\n }\n\n if (type.endsWith('*')) {\n const hashes: string[] = (data as Array).map(\n (entry) => encodeValue(types, type.slice(0, -1), entry, undefined, revision)[1]\n );\n return [type, revisionConfiguration[revision].hashMethod(hashes)];\n }\n\n switch (type) {\n case 'enum': {\n if (revision === Revision.ACTIVE) {\n const [variantKey, variantData] = Object.entries(data as TypedData['message'])[0];\n\n const parentType = types[ctx.parent as string][0] as StarknetEnumType;\n const enumType = types[parentType.contains];\n const variantType = enumType.find((t) => t.name === variantKey) as StarknetType;\n const variantIndex = enumType.indexOf(variantType);\n\n const encodedSubtypes = variantType.type\n .slice(1, -1)\n .split(',')\n .map((subtype, index) => {\n if (!subtype) return subtype;\n const subtypeData = (variantData as unknown[])[index];\n return encodeValue(types, subtype, subtypeData, undefined, revision)[1];\n });\n return [\n type,\n revisionConfiguration[revision].hashMethod([variantIndex, ...encodedSubtypes]),\n ];\n } // else fall through to default\n return [type, getHex(data as string)];\n }\n case 'merkletree': {\n const merkleTreeType = getMerkleTreeType(types, ctx);\n const structHashes: string[] = (data as Array).map((struct) => {\n return encodeValue(types, merkleTreeType, struct, undefined, revision)[1];\n });\n const { root } = new MerkleTree(\n structHashes as string[],\n revisionConfiguration[revision].hashMerkleMethod\n );\n return ['felt', root];\n }\n case 'selector': {\n return ['felt', prepareSelector(data as string)];\n }\n case 'string': {\n if (revision === Revision.ACTIVE) {\n const byteArray = byteArrayFromString(data as string);\n const elements = [\n byteArray.data.length,\n ...byteArray.data,\n byteArray.pending_word,\n byteArray.pending_word_len,\n ];\n return [type, revisionConfiguration[revision].hashMethod(elements)];\n } // else fall through to default\n return [type, getHex(data as string)];\n }\n case 'i128': {\n if (revision === Revision.ACTIVE) {\n const value = BigInt(data as string);\n assertRange(value, type, RANGE_I128);\n return [type, getHex(value < 0n ? PRIME + value : value)];\n } // else fall through to default\n return [type, getHex(data as string)];\n }\n case 'timestamp':\n case 'u128': {\n if (revision === Revision.ACTIVE) {\n assertRange(data, type, RANGE_U128);\n } // else fall through to default\n return [type, getHex(data as string)];\n }\n case 'felt':\n case 'shortstring': {\n // TODO: should 'shortstring' diverge into directly using encodeShortString()?\n if (revision === Revision.ACTIVE) {\n assertRange(getHex(data as string), type, RANGE_FELT);\n } // else fall through to default\n return [type, getHex(data as string)];\n }\n case 'ClassHash':\n case 'ContractAddress': {\n if (revision === Revision.ACTIVE) {\n assertRange(data, type, RANGE_FELT);\n } // else fall through to default\n return [type, getHex(data as string)];\n }\n case 'bool': {\n if (revision === Revision.ACTIVE) {\n assert(typeof data === 'boolean', `Type mismatch for ${type} ${data}`);\n } // else fall through to default\n return [type, getHex(data as string)];\n }\n default: {\n if (revision === Revision.ACTIVE) {\n throw new Error(`Unsupported type: ${type}`);\n }\n return [type, getHex(data as string)];\n }\n }\n}\n\n/**\n * Encode the data to an ABI encoded Buffer. The data should be a key -> value object with all the required values.\n * All dependent types are automatically encoded.\n */\nexport function encodeData(\n types: T['types'],\n type: string,\n data: T['message'],\n revision: Revision = Revision.LEGACY\n) {\n const targetType = types[type] ?? revisionConfiguration[revision].presetTypes[type];\n const [returnTypes, values] = targetType.reduce<[string[], string[]]>(\n ([ts, vs], field) => {\n if (\n data[field.name as keyof T['message']] === undefined ||\n (data[field.name as keyof T['message']] === null && field.type !== 'enum')\n ) {\n throw new Error(`Cannot encode data: missing data for '${field.name}'`);\n }\n\n const value = data[field.name as keyof T['message']];\n const ctx = { parent: type, key: field.name };\n const [t, encodedValue] = encodeValue(types, field.type, value, ctx, revision);\n\n return [\n [...ts, t],\n [...vs, encodedValue],\n ];\n },\n [['felt'], [getTypeHash(types, type, revision)]]\n );\n\n return [returnTypes, values];\n}\n\n/**\n * Get encoded data as a hash. The data should be a key -> value object with all the required values.\n * All dependent types are automatically encoded.\n */\nexport function getStructHash(\n types: T['types'],\n type: string,\n data: T['message'],\n revision: Revision = Revision.LEGACY\n) {\n return revisionConfiguration[revision].hashMethod(encodeData(types, type, data, revision)[1]);\n}\n\n/**\n * Get the SNIP-12 encoded message to sign, from the typedData object.\n */\nexport function getMessageHash(typedData: TypedData, account: BigNumberish): string {\n if (!validateTypedData(typedData)) {\n throw new Error('Typed data does not match JSON schema');\n }\n\n const revision = identifyRevision(typedData) as Revision;\n const { domain, hashMethod } = revisionConfiguration[revision];\n\n const message = [\n encodeShortString('StarkNet Message'),\n getStructHash(typedData.types, domain, typedData.domain, revision),\n account,\n getStructHash(typedData.types, typedData.primaryType, typedData.message, revision),\n ];\n\n return hashMethod(message);\n}\n","import { BigNumberish } from '../types';\nimport { computePedersenHash } from './hash';\n\nexport class MerkleTree {\n public leaves: string[];\n\n public branches: string[][] = [];\n\n public root: string;\n\n public hashMethod: (a: BigNumberish, b: BigNumberish) => string;\n\n /**\n * Create a Merkle tree\n *\n * @param leafHashes hex-string array\n * @param hashMethod hash method to use, default: Pedersen\n * @returns created Merkle tree\n * @example\n * ```typescript\n * const leaves = ['0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7'];\n * const tree = new MerkleTree(leaves);\n * // tree = {\n * // branches: [['0x5bb9440e2...', '0x262697b88...', ...], ['0x38118a340...', ...], ...],\n * // leaves: ['0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7'],\n * // root: '0x7f748c75e5bdb7ae28013f076b8ab650c4e01d3530c6e5ab665f9f1accbe7d4',\n * // hashMethod: [Function computePedersenHash],\n * // }\n * ```\n */\n constructor(\n leafHashes: string[],\n hashMethod: (a: BigNumberish, b: BigNumberish) => string = computePedersenHash\n ) {\n this.hashMethod = hashMethod;\n this.leaves = leafHashes;\n this.root = this.build(leafHashes);\n }\n\n /** @ignore */\n private build(leaves: string[]): string {\n if (leaves.length === 1) {\n return leaves[0];\n }\n if (leaves.length !== this.leaves.length) {\n this.branches.push(leaves);\n }\n const newLeaves: string[] = [];\n for (let i = 0; i < leaves.length; i += 2) {\n if (i + 1 === leaves.length) {\n newLeaves.push(MerkleTree.hash(leaves[i], '0x0', this.hashMethod));\n } else {\n newLeaves.push(MerkleTree.hash(leaves[i], leaves[i + 1], this.hashMethod));\n }\n }\n return this.build(newLeaves);\n }\n\n /**\n * Calculate hash from ordered a and b, Pedersen hash default\n *\n * @param a first value\n * @param b second value\n * @param hashMethod hash method to use, default: Pedersen\n * @returns result of the hash function\n * @example\n * ```typescript\n * const result1 = MerkleTree.hash('0xabc', '0xdef');\n * // result1 = '0x484f029da7914ada038b1adf67fc83632364a3ebc2cd9349b41ab61626d9e82'\n *\n * const customHashMethod = (a, b) => `custom_${a}_${b}`;\n * const result2 = MerkleTree.hash('0xabc', '0xdef', customHashMethod);\n * // result2 = 'custom_2748_3567'\n * ```\n */\n static hash(\n a: BigNumberish,\n b: BigNumberish,\n hashMethod: (a: BigNumberish, b: BigNumberish) => string = computePedersenHash\n ) {\n const [aSorted, bSorted] = [BigInt(a), BigInt(b)].sort((x, y) => (x >= y ? 1 : -1));\n return hashMethod(aSorted, bSorted);\n }\n\n /**\n * Calculates the merkle membership proof path\n *\n * @param leaf hex-string\n * @param branch hex-string array\n * @param hashPath hex-string array\n * @returns collection of merkle proof hex-string hashes\n * @example\n * ```typescript\n * const leaves = ['0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7'];\n * const tree = new MerkleTree(leaves);\n * const result = tree.getProof('0x3');\n * // result = [\n * // '0x4',\n * // '0x5bb9440e27889a364bcb678b1f679ecd1347acdedcbf36e83494f857cc58026',\n * // '0x8c0e46dd2df9aaf3a8ebfbc25408a582ad7fa7171f0698ddbbc5130b4b4e60',\n * // ]\n * ```\n */\n public getProof(leaf: string, branch = this.leaves, hashPath: string[] = []): string[] {\n const index = branch.indexOf(leaf);\n if (index === -1) {\n throw new Error('leaf not found');\n }\n if (branch.length === 1) {\n return hashPath;\n }\n const isLeft = index % 2 === 0;\n const neededBranch = (isLeft ? branch[index + 1] : branch[index - 1]) ?? '0x0';\n const newHashPath = [...hashPath, neededBranch];\n const currentBranchLevelIndex =\n this.leaves.length === branch.length\n ? -1\n : this.branches.findIndex((b) => b.length === branch.length);\n const nextBranch = this.branches[currentBranchLevelIndex + 1] ?? [this.root];\n return this.getProof(\n MerkleTree.hash(isLeft ? leaf : neededBranch, isLeft ? neededBranch : leaf, this.hashMethod),\n nextBranch,\n newHashPath\n );\n }\n}\n\n/**\n * Tests a Merkle tree path\n *\n * @param root hex-string\n * @param leaf hex-string\n * @param path hex-string array\n * @param hashMethod hash method to use, default: Pedersen\n * @returns true if the path is valid, false otherwise\n * @example\n * ```typescript\n * const leaves = ['0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7'];\n * const tree = new MerkleTree(leaves);\n * const result = proofMerklePath(tree.root, '0x3', [\n * '0x4',\n * '0x5bb9440e27889a364bcb678b1f679ecd1347acdedcbf36e83494f857cc58026',\n * '0x8c0e46dd2df9aaf3a8ebfbc25408a582ad7fa7171f0698ddbbc5130b4b4e60',\n * ]);\n * // result = true\n * ```\n */\nexport function proofMerklePath(\n root: string,\n leaf: string,\n path: string[],\n hashMethod: (a: BigNumberish, b: BigNumberish) => string = computePedersenHash\n): boolean {\n if (path.length === 0) {\n return root === leaf;\n }\n const [next, ...rest] = path;\n return proofMerklePath(root, MerkleTree.hash(leaf, next, hashMethod), rest, hashMethod);\n}\n","import {\n Call,\n DeclareSignerDetails,\n DeployAccountSignerDetails,\n InvocationsSignerDetails,\n Signature,\n TypedData,\n V2DeclareSignerDetails,\n V2DeployAccountSignerDetails,\n V2InvocationsSignerDetails,\n V3DeclareSignerDetails,\n V3DeployAccountSignerDetails,\n V3InvocationsSignerDetails,\n} from '../types';\nimport { ETransactionVersion2, ETransactionVersion3 } from '../types/api';\nimport { CallData } from '../utils/calldata';\nimport { starkCurve } from '../utils/ec';\nimport { buf2hex } from '../utils/encode';\nimport {\n calculateDeclareTransactionHash,\n calculateDeployAccountTransactionHash,\n calculateInvokeTransactionHash,\n} from '../utils/hash';\nimport { toHex } from '../utils/num';\nimport { intDAM } from '../utils/stark';\nimport { getExecuteCalldata } from '../utils/transaction';\nimport { getMessageHash } from '../utils/typedData';\nimport { SignerInterface } from './interface';\n\nexport class Signer implements SignerInterface {\n protected pk: Uint8Array | string;\n\n constructor(pk: Uint8Array | string = starkCurve.utils.randomPrivateKey()) {\n this.pk = pk instanceof Uint8Array ? buf2hex(pk) : toHex(pk);\n }\n\n public async getPubKey(): Promise {\n return starkCurve.getStarkKey(this.pk);\n }\n\n public async signMessage(typedData: TypedData, accountAddress: string): Promise {\n const msgHash = getMessageHash(typedData, accountAddress);\n return this.signRaw(msgHash);\n }\n\n public async signTransaction(\n transactions: Call[],\n details: InvocationsSignerDetails\n ): Promise {\n const compiledCalldata = getExecuteCalldata(transactions, details.cairoVersion);\n let msgHash;\n\n // TODO: How to do generic union discriminator for all like this\n if (Object.values(ETransactionVersion2).includes(details.version as any)) {\n const det = details as V2InvocationsSignerDetails;\n msgHash = calculateInvokeTransactionHash({\n ...det,\n senderAddress: det.walletAddress,\n compiledCalldata,\n version: det.version,\n });\n } else if (Object.values(ETransactionVersion3).includes(details.version as any)) {\n const det = details as V3InvocationsSignerDetails;\n msgHash = calculateInvokeTransactionHash({\n ...det,\n senderAddress: det.walletAddress,\n compiledCalldata,\n version: det.version,\n nonceDataAvailabilityMode: intDAM(det.nonceDataAvailabilityMode),\n feeDataAvailabilityMode: intDAM(det.feeDataAvailabilityMode),\n });\n } else {\n throw Error('unsupported signTransaction version');\n }\n\n return this.signRaw(msgHash as string);\n }\n\n public async signDeployAccountTransaction(\n details: DeployAccountSignerDetails\n ): Promise {\n const compiledConstructorCalldata = CallData.compile(details.constructorCalldata);\n /* const version = BigInt(details.version).toString(); */\n let msgHash;\n\n if (Object.values(ETransactionVersion2).includes(details.version as any)) {\n const det = details as V2DeployAccountSignerDetails;\n msgHash = calculateDeployAccountTransactionHash({\n ...det,\n salt: det.addressSalt,\n constructorCalldata: compiledConstructorCalldata,\n version: det.version,\n });\n } else if (Object.values(ETransactionVersion3).includes(details.version as any)) {\n const det = details as V3DeployAccountSignerDetails;\n msgHash = calculateDeployAccountTransactionHash({\n ...det,\n salt: det.addressSalt,\n compiledConstructorCalldata,\n version: det.version,\n nonceDataAvailabilityMode: intDAM(det.nonceDataAvailabilityMode),\n feeDataAvailabilityMode: intDAM(det.feeDataAvailabilityMode),\n });\n } else {\n throw Error('unsupported signDeployAccountTransaction version');\n }\n\n return this.signRaw(msgHash as string);\n }\n\n public async signDeclareTransaction(\n // contractClass: ContractClass, // Should be used once class hash is present in ContractClass\n details: DeclareSignerDetails\n ): Promise {\n let msgHash;\n\n if (Object.values(ETransactionVersion2).includes(details.version as any)) {\n const det = details as V2DeclareSignerDetails;\n msgHash = calculateDeclareTransactionHash({\n ...det,\n version: det.version,\n });\n } else if (Object.values(ETransactionVersion3).includes(details.version as any)) {\n const det = details as V3DeclareSignerDetails;\n msgHash = calculateDeclareTransactionHash({\n ...det,\n version: det.version,\n nonceDataAvailabilityMode: intDAM(det.nonceDataAvailabilityMode),\n feeDataAvailabilityMode: intDAM(det.feeDataAvailabilityMode),\n });\n } else {\n throw Error('unsupported signDeclareTransaction version');\n }\n\n return this.signRaw(msgHash as string);\n }\n\n protected async signRaw(msgHash: string): Promise {\n return starkCurve.sign(msgHash, this.pk);\n }\n}\n","import type { RecoveredSignatureType } from '@noble/curves/abstract/weierstrass';\nimport { secp256k1 } from '@noble/curves/secp256k1';\n\nimport {\n ArraySignatureType,\n Call,\n DeclareSignerDetails,\n DeployAccountSignerDetails,\n InvocationsSignerDetails,\n Signature,\n TypedData,\n Uint256,\n V2DeclareSignerDetails,\n V2DeployAccountSignerDetails,\n V2InvocationsSignerDetails,\n V3DeclareSignerDetails,\n V3DeployAccountSignerDetails,\n V3InvocationsSignerDetails,\n} from '../types';\nimport { ETransactionVersion2, ETransactionVersion3 } from '../types/api';\nimport { CallData } from '../utils/calldata';\nimport { addHexPrefix, buf2hex, removeHexPrefix, sanitizeHex } from '../utils/encode';\nimport { ethRandomPrivateKey } from '../utils/eth';\nimport {\n calculateDeclareTransactionHash,\n calculateDeployAccountTransactionHash,\n calculateInvokeTransactionHash,\n} from '../utils/hash';\nimport { toHex } from '../utils/num';\nimport { intDAM } from '../utils/stark';\nimport { getExecuteCalldata } from '../utils/transaction';\nimport { getMessageHash } from '../utils/typedData';\nimport { bnToUint256 } from '../utils/uint256';\nimport { SignerInterface } from './interface';\n\n/**\n * Signer for accounts using Ethereum signature\n */\nexport class EthSigner implements SignerInterface {\n protected pk: string; // hex string without 0x and with an odd number of characters\n\n constructor(pk: Uint8Array | string = ethRandomPrivateKey()) {\n this.pk =\n pk instanceof Uint8Array\n ? buf2hex(pk).padStart(64, '0')\n : removeHexPrefix(toHex(pk)).padStart(64, '0');\n }\n\n /**\n * provides the Ethereum full public key (without parity prefix)\n * @returns an hex string : 64 first characters are Point X coordinate. 64 last characters are Point Y coordinate.\n */\n public async getPubKey(): Promise {\n return addHexPrefix(\n buf2hex(secp256k1.getPublicKey(this.pk, false)).padStart(130, '0').slice(2)\n );\n }\n\n public async signMessage(typedData: TypedData, accountAddress: string): Promise {\n const msgHash = getMessageHash(typedData, accountAddress);\n const signature: RecoveredSignatureType = secp256k1.sign(\n removeHexPrefix(sanitizeHex(msgHash)),\n this.pk\n );\n return this.formatEthSignature(signature);\n }\n\n public async signTransaction(\n transactions: Call[],\n details: InvocationsSignerDetails\n ): Promise {\n const compiledCalldata = getExecuteCalldata(transactions, details.cairoVersion);\n let msgHash;\n\n // TODO: How to do generic union discriminator for all like this\n if (Object.values(ETransactionVersion2).includes(details.version as any)) {\n const det = details as V2InvocationsSignerDetails;\n msgHash = calculateInvokeTransactionHash({\n ...det,\n senderAddress: det.walletAddress,\n compiledCalldata,\n version: det.version,\n });\n } else if (Object.values(ETransactionVersion3).includes(details.version as any)) {\n const det = details as V3InvocationsSignerDetails;\n msgHash = calculateInvokeTransactionHash({\n ...det,\n senderAddress: det.walletAddress,\n compiledCalldata,\n version: det.version,\n nonceDataAvailabilityMode: intDAM(det.nonceDataAvailabilityMode),\n feeDataAvailabilityMode: intDAM(det.feeDataAvailabilityMode),\n });\n } else {\n throw Error('unsupported signTransaction version');\n }\n const signature: RecoveredSignatureType = secp256k1.sign(\n removeHexPrefix(sanitizeHex(msgHash)),\n this.pk\n );\n return this.formatEthSignature(signature);\n }\n\n public async signDeployAccountTransaction(\n details: DeployAccountSignerDetails\n ): Promise {\n const compiledConstructorCalldata = CallData.compile(details.constructorCalldata);\n /* const version = BigInt(details.version).toString(); */\n let msgHash;\n\n if (Object.values(ETransactionVersion2).includes(details.version as any)) {\n const det = details as V2DeployAccountSignerDetails;\n msgHash = calculateDeployAccountTransactionHash({\n ...det,\n salt: det.addressSalt,\n constructorCalldata: compiledConstructorCalldata,\n version: det.version,\n });\n } else if (Object.values(ETransactionVersion3).includes(details.version as any)) {\n const det = details as V3DeployAccountSignerDetails;\n msgHash = calculateDeployAccountTransactionHash({\n ...det,\n salt: det.addressSalt,\n compiledConstructorCalldata,\n version: det.version,\n nonceDataAvailabilityMode: intDAM(det.nonceDataAvailabilityMode),\n feeDataAvailabilityMode: intDAM(det.feeDataAvailabilityMode),\n });\n } else {\n throw Error('unsupported signDeployAccountTransaction version');\n }\n const signature: RecoveredSignatureType = secp256k1.sign(\n removeHexPrefix(sanitizeHex(msgHash)),\n this.pk\n );\n return this.formatEthSignature(signature);\n }\n\n public async signDeclareTransaction(\n // contractClass: ContractClass, // Should be used once class hash is present in ContractClass\n details: DeclareSignerDetails\n ): Promise {\n let msgHash;\n\n if (Object.values(ETransactionVersion2).includes(details.version as any)) {\n const det = details as V2DeclareSignerDetails;\n msgHash = calculateDeclareTransactionHash({\n ...det,\n version: det.version,\n });\n } else if (Object.values(ETransactionVersion3).includes(details.version as any)) {\n const det = details as V3DeclareSignerDetails;\n msgHash = calculateDeclareTransactionHash({\n ...det,\n version: det.version,\n nonceDataAvailabilityMode: intDAM(det.nonceDataAvailabilityMode),\n feeDataAvailabilityMode: intDAM(det.feeDataAvailabilityMode),\n });\n } else {\n throw Error('unsupported signDeclareTransaction version');\n }\n\n const signature: RecoveredSignatureType = secp256k1.sign(\n removeHexPrefix(sanitizeHex(msgHash)),\n this.pk\n );\n return this.formatEthSignature(signature);\n }\n\n /**\n * Serialize the signature in conformity with starknet::eth_signature::Signature\n * @param ethSignature secp256k1 signature from Noble curves library\n * @return an array of felts, representing a Cairo Eth Signature.\n */\n protected formatEthSignature(ethSignature: RecoveredSignatureType): ArraySignatureType {\n const r: Uint256 = bnToUint256(ethSignature.r);\n const s: Uint256 = bnToUint256(ethSignature.s);\n return [\n toHex(r.low),\n toHex(r.high),\n toHex(s.low),\n toHex(s.high),\n toHex(ethSignature.recovery),\n ] as ArraySignatureType;\n }\n}\n","/* eslint-disable no-bitwise */\nimport { BigNumberish, Uint256 } from '../types';\nimport { CairoUint256, UINT_128_MAX, UINT_256_MAX } from './cairoDataTypes/uint256';\n\n/**\n * @deprecated Legacy support Export\n */\nexport { UINT_128_MAX, UINT_256_MAX };\n\n/**\n * Convert Uint256 to bigint\n * Legacy support Export\n * @param {Uint256} uint256 Uint256 value to convert to bigint\n * @returns {bigint} BigInt representation of the input Uint256\n * @example\n * ```typescript\n * const uint256Value: Uint256 = {low: 1234567890, high: 1};\n * const result = uint256.uint256ToBN(uint256Value);\n * // result = 340282366920938463463374607433002779346n\n * ```\n */\nexport function uint256ToBN(uint256: Uint256): bigint {\n return new CairoUint256(uint256).toBigInt();\n}\n\n/**\n * Test BigNumberish is in the range[0, 2**256-1]\n * Legacy support Export\n * @param {BigNumberish} bn value to test\n * @returns {boolean} True if the input value is in the range[0, 2**256-1], false otherwise\n * @example\n * ```typescript\n * const result = uint256.isUint256(12345n);\n * // result = true\n * const result1 = uint256.isUint256(-1);\n * // result1 = false\n * ```\n */\nexport function isUint256(bn: BigNumberish): boolean {\n return CairoUint256.is(bn);\n}\n\n/**\n * Convert BigNumberish (string | number | bigint) to Uint256\n * Legacy support Export\n * @param {BigNumberish} bn value to convert to Uint256\n * @returns {Uint256} Uint256 object representing the BigNumberish value\n * @example\n * ```typescript\n * const result = uint256.bnToUint256(1000000000n);\n * // result = {\"low\": \"0x3b9aca00\", \"high\": \"0x0\"}\n * ```\n */\nexport function bnToUint256(bn: BigNumberish): Uint256 {\n return new CairoUint256(bn).toUint256HexString();\n}\n","import { UDC } from '../../constants';\nimport {\n Abi,\n AbiEnums,\n AbiEvents,\n AbiStructs,\n CairoEvent,\n AbiEvent,\n LegacyEvent,\n ParsedEvent,\n ParsedEvents,\n RPC,\n type CairoEventDefinition,\n type CairoEventVariant,\n type InvokeTransactionReceiptResponse,\n type AbiEntry,\n} from '../../types';\nimport assert from '../assert';\nimport { isCairo1Abi } from '../calldata/cairo';\nimport responseParser from '../calldata/responseParser';\nimport { starkCurve } from '../ec';\nimport { addHexPrefix, utf8ToArray } from '../encode';\nimport { cleanHex } from '../num';\n\n/**\n * Check if an ABI entry is related to events.\n * @param {AbiEntry} object an Abi entry\n * @returns {boolean} true if this Abi Entry is related to an event\n * @example\n * ```typescript\n * // use of a transaction receipt\n * ```\n */\nexport function isAbiEvent(object: AbiEntry): boolean {\n return object.type === 'event';\n}\n\n/**\n * Retrieves the events from the given Cairo 0 ABI.\n * @param {Abi} abi - The Cairo 0 ABI to extract events from.\n * @return {AbiEvents} - An object containing the hashes and the definition of the events.\n * @example\n * ```typescript\n * const result = events.getCairo0AbiEvents(abi0);\n * // result = {\n '0x35ea10b06d74221d24a134672e9f776a3088ba6b9829e53b9a10abd8817a211': {\n data: [{ name: 'admin_requester', type: 'felt' }, { name: 'new_requester', type: 'felt' }],\n keys: [],\n name: 'AddAdmin',\n type: 'event'\n }\n * ```\n */\nfunction getCairo0AbiEvents(abi: Abi) {\n return abi\n .filter((abiEntry) => abiEntry.type === 'event')\n .reduce((acc, abiEntry) => {\n const entryName = abiEntry.name;\n const abiEntryMod = { ...abiEntry };\n abiEntryMod.name = entryName;\n return {\n ...acc,\n [addHexPrefix(starkCurve.keccak(utf8ToArray(entryName)).toString(16))]: abiEntryMod,\n };\n }, {});\n}\n\n/**\n * Retrieves the events from the given Cairo 1 ABI.\n *\n * Is able to handle events nested in Cairo components.\n * @param {Abi} abi - The Cairo 1 ABI to extract events from.\n * @return {AbiEvents} - An object containing the hashes and the definition of the events.\n * @example\n * ```typescript\n * const result = events.getCairo1AbiEvents(abi1);\n * // result = {\n * // '0x22ea134d4126804c60797e633195f8c9aa5fd6d1567e299f4961d0e96f373ee': \n * // { '0x34e55c1cd55f1338241b50d352f0e91c7e4ffad0e4271d64eb347589ebdfd16': {\n * // kind: 'struct', type: 'event',\n * // name: 'ka::ExComponent::ex_logic_component::Mint',\n \n * // members: [{\n * // name: 'spender',\n * // type: 'core::starknet::contract_address::ContractAddress',\n * // kind: 'key'},\n * // { name: 'value', type: 'core::integer::u256', kind: 'data' }]},\n * // ...\n * ```\n */\nfunction getCairo1AbiEvents(abi: Abi) {\n const abiEventsStructs = abi.filter((obj) => isAbiEvent(obj) && obj.kind === 'struct');\n const abiEventsEnums = abi.filter((obj) => isAbiEvent(obj) && obj.kind === 'enum');\n const abiEventsData: AbiEvents = abiEventsStructs.reduce((acc: CairoEvent, event: CairoEvent) => {\n let nameList: string[] = [];\n let { name } = event;\n let flat: boolean = false;\n const findName = (variant: CairoEventVariant) => variant.type === name;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const eventEnum = abiEventsEnums.find((eventE) => eventE.variants.some(findName));\n if (typeof eventEnum === 'undefined') break;\n const variant = eventEnum.variants.find(findName);\n nameList.unshift(variant.name);\n if (variant.kind === 'flat') flat = true;\n name = eventEnum.name;\n }\n if (nameList.length === 0) {\n throw new Error('inconsistency in ABI events definition.');\n }\n if (flat) nameList = [nameList[nameList.length - 1]];\n const final = nameList.pop();\n let result: AbiEvents = {\n [addHexPrefix(starkCurve.keccak(utf8ToArray(final!)).toString(16))]: event,\n };\n while (nameList.length > 0) {\n result = {\n [addHexPrefix(starkCurve.keccak(utf8ToArray(nameList.pop()!)).toString(16))]: result,\n };\n }\n result = { ...result };\n return mergeAbiEvents(acc, result);\n }, {});\n return abiEventsData;\n}\n\n/**\n * Retrieves the events from the given ABI (from Cairo 0 or Cairo 1 contract).\n *\n * Is able to handle Cairo 1 events nested in Cairo components.\n * @param {Abi} abi - The ABI to extract events from.\n * @return {AbiEvents} - An object containing the hashes and the definition of the events.\n * @example\n * ```typescript\n * const result = events.getAbiEvents(abi);\n * // result = {\n * // '0x22ea134d4126804c60797e633195f8c9aa5fd6d1567e299f4961d0e96f373ee': \n * // { '0x34e55c1cd55f1338241b50d352f0e91c7e4ffad0e4271d64eb347589ebdfd16': {\n * // kind: 'struct', type: 'event',\n * // name: 'ka::ExComponent::ex_logic_component::Mint',\n \n * // members: [{\n * // name: 'spender',\n * // type: 'core::starknet::contract_address::ContractAddress',\n * // kind: 'key'},\n * // { name: 'value', type: 'core::integer::u256', kind: 'data' }]},\n * // ...\n * ```\n */\nexport function getAbiEvents(abi: Abi): AbiEvents {\n return isCairo1Abi(abi) ? getCairo1AbiEvents(abi) : getCairo0AbiEvents(abi);\n}\n\n/**\n * Checks if a given value is an object (Object or Array)\n * @param {any} item the tested item\n * @returns {boolean}\n * @example\n * ```typescript\n * const result = events.isObject({event: \"pending\"});\n * // result = true\n * ```\n */\nexport function isObject(item: any): boolean {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\n/**\n * internal function to deep merge 2 event description objects\n */\nfunction mergeAbiEvents(target: any, source: any): Object {\n const output = { ...target };\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!(key in target)) Object.assign(output, { [key]: source[key] });\n else output[key] = mergeAbiEvents(target[key], source[key]);\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n}\n\n/**\n * Parse raw events and structure them into response object based on a contract structs and defined events\n * @param {RPC.Event[]} providerReceivedEvents Array of raw events\n * @param {AbiEvents} abiEvents Events defined in the abi\n * @param {AbiStructs} abiStructs Structs defined in the abi\n * @param {AbiEnums} abiEnums Enums defined in the abi\n * @returns {ParsedEvents} parsed events corresponding to the abi\n * @example\n * ```typescript\n * const abiEvents = events.getAbiEvents(sierra.abi);\n * const abiStructs = CallData.getAbiStruct(sierra.abi);\n * const abiEnums = CallData.getAbiEnum(sierra.abi);\n * const result = events.parseEvents(myEvents, abiEvents, abiStructs, abiEnums);\n * // result = [{test::ExCh::ex_ch::Trade: {\n maker: 7548613724711489396448209137n,\n taker: 6435850562375218974960297344n,\n router_maker: 0n,\n }}]\n * ```\n */\nexport function parseEvents(\n providerReceivedEvents: RPC.Event[],\n abiEvents: AbiEvents,\n abiStructs: AbiStructs,\n abiEnums: AbiEnums\n): ParsedEvents {\n const ret = providerReceivedEvents.flat().reduce((acc, recEvent: RPC.Event) => {\n let abiEvent: AbiEvent | AbiEvents = abiEvents[recEvent.keys.shift() ?? 0];\n if (!abiEvent) {\n return acc;\n }\n while (!abiEvent.name) {\n const hashName = recEvent.keys.shift();\n assert(!!hashName, 'Not enough data in \"key\" property of this event.');\n abiEvent = (abiEvent as AbiEvents)[hashName];\n }\n // Create our final event object\n const parsedEvent: ParsedEvent = {};\n parsedEvent[abiEvent.name as string] = {};\n // Remove the event's name hashed from the keys array\n const keysIter = recEvent.keys[Symbol.iterator]();\n const dataIter = recEvent.data[Symbol.iterator]();\n\n const abiEventKeys =\n (abiEvent as CairoEventDefinition).members?.filter((it) => it.kind === 'key') ||\n (abiEvent as LegacyEvent).keys;\n const abiEventData =\n (abiEvent as CairoEventDefinition).members?.filter((it) => it.kind === 'data') ||\n (abiEvent as LegacyEvent).data;\n\n abiEventKeys.forEach((key) => {\n parsedEvent[abiEvent.name as string][key.name] = responseParser(\n keysIter,\n key,\n abiStructs,\n abiEnums,\n parsedEvent[abiEvent.name as string]\n );\n });\n\n abiEventData.forEach((data) => {\n parsedEvent[abiEvent.name as string][data.name] = responseParser(\n dataIter,\n data,\n abiStructs,\n abiEnums,\n parsedEvent[abiEvent.name as string]\n );\n });\n acc.push(parsedEvent);\n return acc;\n }, [] as ParsedEvents);\n return ret;\n}\n\n/**\n * Parse Transaction Receipt Event from UDC invoke transaction and\n * create DeployContractResponse compatible response with addition of the UDC Event data\n *\n * @returns DeployContractResponse | UDC Event Response data\n */\nexport function parseUDCEvent(txReceipt: InvokeTransactionReceiptResponse) {\n if (!txReceipt.events) {\n throw new Error('UDC emitted event is empty');\n }\n const event = txReceipt.events.find(\n (it: any) => cleanHex(it.from_address) === cleanHex(UDC.ADDRESS)\n ) || {\n data: [],\n };\n return {\n transaction_hash: txReceipt.transaction_hash,\n contract_address: event.data[0],\n address: event.data[0],\n deployer: event.data[1],\n unique: event.data[2],\n classHash: event.data[3],\n calldata_len: event.data[4],\n calldata: event.data.slice(5, 5 + parseInt(event.data[4], 16)),\n salt: event.data[event.data.length - 1],\n };\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { SPEC } from 'starknet-types-07';\nimport { UDC, ZERO } from '../constants';\nimport { Provider, ProviderInterface } from '../provider';\nimport { Signer, SignerInterface } from '../signer';\nimport {\n Abi,\n AccountInvocations,\n AccountInvocationsFactoryDetails,\n AllowArray,\n BigNumberish,\n BlockIdentifier,\n CairoVersion,\n Call,\n DeclareAndDeployContractPayload,\n DeclareContractPayload,\n DeclareContractResponse,\n DeclareContractTransaction,\n DeclareDeployUDCResponse,\n DeployAccountContractPayload,\n DeployAccountContractTransaction,\n DeployContractResponse,\n DeployContractUDCResponse,\n DeployTransactionReceiptResponse,\n EstimateFee,\n EstimateFeeAction,\n EstimateFeeBulk,\n Invocation,\n Invocations,\n InvocationsSignerDetails,\n InvokeFunctionResponse,\n MultiDeployContractResponse,\n Nonce,\n ProviderOptions,\n Signature,\n SimulateTransactionDetails,\n SimulateTransactionResponse,\n TransactionType,\n TypedData,\n UniversalDeployerContractPayload,\n UniversalDetails,\n} from '../types';\nimport { ETransactionVersion, ETransactionVersion3, ResourceBounds } from '../types/api';\nimport { CallData } from '../utils/calldata';\nimport { extractContractHashes, isSierra } from '../utils/contract';\nimport { parseUDCEvent } from '../utils/events';\nimport { calculateContractAddressFromHash } from '../utils/hash';\nimport { toBigInt, toCairoBool } from '../utils/num';\nimport { parseContract } from '../utils/provider';\nimport { isString } from '../utils/shortString';\nimport {\n estimateFeeToBounds,\n formatSignature,\n reduceV2,\n toFeeVersion,\n toTransactionVersion,\n v3Details,\n} from '../utils/stark';\nimport { buildUDCCall, getExecuteCalldata } from '../utils/transaction';\nimport { getMessageHash } from '../utils/typedData';\nimport { AccountInterface } from './interface';\n\nexport class Account extends Provider implements AccountInterface {\n public signer: SignerInterface;\n\n public address: string;\n\n public cairoVersion: CairoVersion;\n\n readonly transactionVersion: typeof ETransactionVersion.V2 | typeof ETransactionVersion.V3;\n\n constructor(\n providerOrOptions: ProviderOptions | ProviderInterface,\n address: string,\n pkOrSigner: Uint8Array | string | SignerInterface,\n cairoVersion?: CairoVersion,\n transactionVersion:\n | typeof ETransactionVersion.V2\n | typeof ETransactionVersion.V3 = ETransactionVersion.V2 // TODO: Discuss this, set to v2 for backward compatibility\n ) {\n super(providerOrOptions);\n this.address = address.toLowerCase();\n this.signer =\n isString(pkOrSigner) || pkOrSigner instanceof Uint8Array\n ? new Signer(pkOrSigner)\n : pkOrSigner;\n\n if (cairoVersion) {\n this.cairoVersion = cairoVersion.toString() as CairoVersion;\n }\n this.transactionVersion = transactionVersion;\n }\n\n // provided version or contract based preferred transactionVersion\n protected getPreferredVersion(type12: ETransactionVersion, type3: ETransactionVersion) {\n if (this.transactionVersion === ETransactionVersion.V3) return type3;\n if (this.transactionVersion === ETransactionVersion.V2) return type12;\n\n return ETransactionVersion.V3;\n }\n\n public async getNonce(blockIdentifier?: BlockIdentifier): Promise {\n return super.getNonceForAddress(this.address, blockIdentifier);\n }\n\n protected async getNonceSafe(nonce?: BigNumberish) {\n // Patch DEPLOY_ACCOUNT: RPC getNonce for non-existing address will result in error\n try {\n return toBigInt(nonce ?? (await this.getNonce()));\n } catch (error) {\n return 0n;\n }\n }\n\n /**\n * Retrieves the Cairo version from the network and sets `cairoVersion` if not already set in the constructor.\n * @param classHash if provided detects Cairo version from classHash, otherwise from the account address\n */\n public async getCairoVersion(classHash?: string) {\n if (!this.cairoVersion) {\n const { cairo } = classHash\n ? await super.getContractVersion(undefined, classHash)\n : await super.getContractVersion(this.address);\n this.cairoVersion = cairo;\n }\n return this.cairoVersion;\n }\n\n public async estimateFee(\n calls: AllowArray,\n estimateFeeDetails: UniversalDetails = {}\n ): Promise {\n return this.estimateInvokeFee(calls, estimateFeeDetails);\n }\n\n public async estimateInvokeFee(\n calls: AllowArray,\n details: UniversalDetails = {}\n ): Promise {\n const {\n nonce: providedNonce,\n blockIdentifier,\n version: providedVersion,\n skipValidate = true,\n } = details;\n\n const transactions = Array.isArray(calls) ? calls : [calls];\n const nonce = toBigInt(providedNonce ?? (await this.getNonce()));\n const version = toTransactionVersion(\n this.getPreferredVersion(ETransactionVersion.F1, ETransactionVersion.F3),\n toFeeVersion(providedVersion)\n );\n const chainId = await this.getChainId();\n\n const signerDetails: InvocationsSignerDetails = {\n ...v3Details(details),\n walletAddress: this.address,\n nonce,\n maxFee: ZERO,\n version,\n chainId,\n cairoVersion: await this.getCairoVersion(),\n skipValidate,\n };\n\n const invocation = await this.buildInvocation(transactions, signerDetails);\n return super.getInvokeEstimateFee(\n { ...invocation },\n { ...v3Details(details), version, nonce },\n blockIdentifier,\n details.skipValidate\n );\n }\n\n public async estimateDeclareFee(\n payload: DeclareContractPayload,\n details: UniversalDetails = {}\n ): Promise {\n const {\n blockIdentifier,\n nonce: providedNonce,\n version: providedVersion,\n skipValidate = true,\n } = details;\n const nonce = toBigInt(providedNonce ?? (await this.getNonce()));\n const version = toTransactionVersion(\n !isSierra(payload.contract)\n ? ETransactionVersion.F1\n : this.getPreferredVersion(ETransactionVersion.F2, ETransactionVersion.F3),\n toFeeVersion(providedVersion)\n );\n const chainId = await this.getChainId();\n\n const declareContractTransaction = await this.buildDeclarePayload(payload, {\n ...v3Details(details),\n nonce,\n chainId,\n version,\n walletAddress: this.address,\n maxFee: ZERO,\n cairoVersion: undefined, // unused parameter\n skipValidate,\n });\n\n return super.getDeclareEstimateFee(\n declareContractTransaction,\n { ...v3Details(details), version, nonce },\n blockIdentifier,\n details.skipValidate\n );\n }\n\n public async estimateAccountDeployFee(\n {\n classHash,\n addressSalt = 0,\n constructorCalldata = [],\n contractAddress,\n }: DeployAccountContractPayload,\n details: UniversalDetails = {}\n ): Promise {\n const { blockIdentifier, version: providedVersion, skipValidate = true } = details;\n const version = toTransactionVersion(\n this.getPreferredVersion(ETransactionVersion.F1, ETransactionVersion.F3),\n toFeeVersion(providedVersion)\n ); // TODO: Can Cairo0 be deployed with F3 ?\n const nonce = ZERO; // DEPLOY_ACCOUNT transaction will have a nonce zero as it is the first transaction in the account\n const chainId = await this.getChainId();\n\n const payload = await this.buildAccountDeployPayload(\n { classHash, addressSalt, constructorCalldata, contractAddress },\n {\n ...v3Details(details),\n nonce,\n chainId,\n version,\n walletAddress: this.address, // unused parameter\n maxFee: ZERO,\n cairoVersion: undefined, // unused parameter,\n skipValidate,\n }\n );\n\n return super.getDeployAccountEstimateFee(\n { ...payload },\n { ...v3Details(details), version, nonce },\n blockIdentifier,\n details.skipValidate\n );\n }\n\n public async estimateDeployFee(\n payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[],\n details: UniversalDetails = {}\n ): Promise {\n const calls = this.buildUDCContractPayload(payload);\n return this.estimateInvokeFee(calls, details);\n }\n\n public async estimateFeeBulk(\n invocations: Invocations,\n details: UniversalDetails = {}\n ): Promise {\n const { nonce, blockIdentifier, version, skipValidate } = details;\n const accountInvocations = await this.accountInvocationsFactory(invocations, {\n ...v3Details(details),\n versions: [\n ETransactionVersion.F1, // non-sierra\n toTransactionVersion(\n this.getPreferredVersion(ETransactionVersion.F2, ETransactionVersion.F3),\n version\n ), // sierra\n ],\n nonce,\n blockIdentifier,\n skipValidate,\n });\n\n return super.getEstimateFeeBulk(accountInvocations, {\n blockIdentifier,\n skipValidate,\n });\n }\n\n public async simulateTransaction(\n invocations: Invocations,\n details: SimulateTransactionDetails = {}\n ): Promise {\n const { nonce, blockIdentifier, skipValidate = true, skipExecute, version } = details;\n const accountInvocations = await this.accountInvocationsFactory(invocations, {\n ...v3Details(details),\n versions: [\n ETransactionVersion.V1, // non-sierra\n toTransactionVersion(\n this.getPreferredVersion(ETransactionVersion.V2, ETransactionVersion.V3),\n version\n ),\n ],\n nonce,\n blockIdentifier,\n skipValidate,\n });\n\n return super.getSimulateTransaction(accountInvocations, {\n blockIdentifier,\n skipValidate,\n skipExecute,\n });\n }\n\n public async execute(\n transactions: AllowArray,\n transactionsDetail?: UniversalDetails\n ): Promise;\n public async execute(\n transactions: AllowArray,\n abis?: Abi[],\n transactionsDetail?: UniversalDetails\n ): Promise;\n public async execute(\n transactions: AllowArray,\n arg2?: Abi[] | UniversalDetails,\n transactionsDetail: UniversalDetails = {}\n ): Promise {\n const details = arg2 === undefined || Array.isArray(arg2) ? transactionsDetail : arg2;\n const calls = Array.isArray(transactions) ? transactions : [transactions];\n const nonce = toBigInt(details.nonce ?? (await this.getNonce()));\n const version = toTransactionVersion(\n this.getPreferredVersion(ETransactionVersion.V1, ETransactionVersion.V3), // TODO: does this depend on cairo version ?\n details.version\n );\n\n const estimate = await this.getUniversalSuggestedFee(\n version,\n { type: TransactionType.INVOKE, payload: transactions },\n {\n ...details,\n version,\n }\n );\n\n const chainId = await this.getChainId();\n\n const signerDetails: InvocationsSignerDetails = {\n ...v3Details(details),\n resourceBounds: estimate.resourceBounds,\n walletAddress: this.address,\n nonce,\n maxFee: estimate.maxFee,\n version,\n chainId,\n cairoVersion: await this.getCairoVersion(),\n };\n\n const signature = await this.signer.signTransaction(calls, signerDetails);\n\n const calldata = getExecuteCalldata(calls, await this.getCairoVersion());\n\n return this.invokeFunction(\n { contractAddress: this.address, calldata, signature },\n {\n ...v3Details(details),\n resourceBounds: estimate.resourceBounds,\n nonce,\n maxFee: estimate.maxFee,\n version,\n }\n );\n }\n\n /**\n * First check if contract is already declared, if not declare it\n * If contract already declared returned transaction_hash is ''.\n * Method will pass even if contract is already declared\n * @param transactionsDetail (optional)\n */\n public async declareIfNot(\n payload: DeclareContractPayload,\n transactionsDetail: UniversalDetails = {}\n ): Promise {\n const declareContractPayload = extractContractHashes(payload);\n try {\n await this.getClassByHash(declareContractPayload.classHash);\n } catch (error) {\n return this.declare(payload, transactionsDetail);\n }\n return {\n transaction_hash: '',\n class_hash: declareContractPayload.classHash,\n };\n }\n\n public async declare(\n payload: DeclareContractPayload,\n details: UniversalDetails = {}\n ): Promise {\n const declareContractPayload = extractContractHashes(payload);\n const { nonce, version: providedVersion } = details;\n const version = toTransactionVersion(\n !isSierra(payload.contract)\n ? ETransactionVersion.V1\n : this.getPreferredVersion(ETransactionVersion.V2, ETransactionVersion.V3),\n providedVersion\n );\n\n const estimate = await this.getUniversalSuggestedFee(\n version,\n {\n type: TransactionType.DECLARE,\n payload: declareContractPayload,\n },\n {\n ...details,\n version,\n }\n );\n\n const declareDetails: InvocationsSignerDetails = {\n ...v3Details(details),\n resourceBounds: estimate.resourceBounds,\n maxFee: estimate.maxFee,\n nonce: toBigInt(nonce ?? (await this.getNonce())),\n version,\n chainId: await this.getChainId(),\n walletAddress: this.address,\n cairoVersion: undefined,\n };\n\n const declareContractTransaction = await this.buildDeclarePayload(\n declareContractPayload,\n declareDetails\n );\n\n return this.declareContract(declareContractTransaction, declareDetails);\n }\n\n public async deploy(\n payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[],\n details: UniversalDetails = {}\n ): Promise {\n const { calls, addresses } = buildUDCCall(payload, this.address);\n const invokeResponse = await this.execute(calls, undefined, details);\n\n return {\n ...invokeResponse,\n contract_address: addresses,\n };\n }\n\n public async deployContract(\n payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[],\n details: UniversalDetails = {}\n ): Promise {\n const deployTx = await this.deploy(payload, details);\n const txReceipt = await this.waitForTransaction(deployTx.transaction_hash);\n return parseUDCEvent(txReceipt as unknown as DeployTransactionReceiptResponse);\n }\n\n public async declareAndDeploy(\n payload: DeclareAndDeployContractPayload,\n details: UniversalDetails = {}\n ): Promise {\n const { constructorCalldata, salt, unique } = payload;\n let declare = await this.declareIfNot(payload, details);\n if (declare.transaction_hash !== '') {\n const tx = await this.waitForTransaction(declare.transaction_hash);\n declare = { ...declare, ...tx };\n }\n const deploy = await this.deployContract(\n { classHash: declare.class_hash, salt, unique, constructorCalldata },\n details\n );\n return { declare: { ...declare }, deploy };\n }\n\n public deploySelf = this.deployAccount;\n\n public async deployAccount(\n {\n classHash,\n constructorCalldata = [],\n addressSalt = 0,\n contractAddress: providedContractAddress,\n }: DeployAccountContractPayload,\n details: UniversalDetails = {}\n ): Promise {\n const version = toTransactionVersion(\n this.getPreferredVersion(ETransactionVersion.V1, ETransactionVersion.V3),\n details.version\n );\n const nonce = ZERO; // DEPLOY_ACCOUNT transaction will have a nonce zero as it is the first transaction in the account\n const chainId = await this.getChainId();\n\n const compiledCalldata = CallData.compile(constructorCalldata);\n const contractAddress =\n providedContractAddress ??\n calculateContractAddressFromHash(addressSalt, classHash, compiledCalldata, 0);\n\n const estimate = await this.getUniversalSuggestedFee(\n version,\n {\n type: TransactionType.DEPLOY_ACCOUNT,\n payload: {\n classHash,\n constructorCalldata: compiledCalldata,\n addressSalt,\n contractAddress,\n },\n },\n details\n );\n\n const signature = await this.signer.signDeployAccountTransaction({\n ...v3Details(details),\n classHash,\n constructorCalldata: compiledCalldata,\n contractAddress,\n addressSalt,\n chainId,\n resourceBounds: estimate.resourceBounds,\n maxFee: estimate.maxFee,\n version,\n nonce,\n });\n\n return this.deployAccountContract(\n { classHash, addressSalt, constructorCalldata, signature },\n {\n ...v3Details(details),\n nonce,\n resourceBounds: estimate.resourceBounds,\n maxFee: estimate.maxFee,\n version,\n }\n );\n }\n\n public async signMessage(typedData: TypedData): Promise {\n return this.signer.signMessage(typedData, this.address);\n }\n\n public async hashMessage(typedData: TypedData): Promise {\n return getMessageHash(typedData, this.address);\n }\n\n public async verifyMessageHash(\n hash: BigNumberish,\n signature: Signature,\n signatureVerificationFunctionName?: string,\n signatureVerificationResponse?: { okResponse: string[]; nokResponse: string[]; error: string[] }\n ): Promise {\n // HOTFIX: Accounts should conform to SNIP-6\n // (https://github.com/starknet-io/SNIPs/blob/f6998f779ee2157d5e1dea36042b08062093b3c5/SNIPS/snip-6.md?plain=1#L61),\n // but they don't always conform. Also, the SNIP doesn't standardize the response if the signature isn't valid.\n const knownSigVerificationFName = signatureVerificationFunctionName\n ? [signatureVerificationFunctionName]\n : ['isValidSignature', 'is_valid_signature'];\n const knownSignatureResponse = signatureVerificationResponse || {\n okResponse: [\n // any non-nok response is true\n ],\n nokResponse: [\n '0x0', // Devnet\n '0x00', // OpenZeppelin 0.7.0 to 0.9.0 invalid signature\n ],\n error: [\n 'argent/invalid-signature', // ArgentX 0.3.0 to 0.3.1\n 'is invalid, with respect to the public key', // OpenZeppelin until 0.6.1, Braavos 0.0.11\n 'INVALID_SIG', // Braavos 1.0.0\n ],\n };\n let error: any;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const SigVerificationFName of knownSigVerificationFName) {\n try {\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.callContract({\n contractAddress: this.address,\n entrypoint: SigVerificationFName,\n calldata: CallData.compile({\n hash: toBigInt(hash).toString(),\n signature: formatSignature(signature),\n }),\n });\n // Response NOK Signature\n if (knownSignatureResponse.nokResponse.includes(resp[0].toString())) {\n return false;\n }\n // Response OK Signature\n // Empty okResponse assume all non-nok responses are valid signatures\n // OpenZeppelin 0.7.0 to 0.9.0, ArgentX 0.3.0 to 0.3.1 & Braavos Cairo 0.0.11 to 1.0.0 valid signature\n if (\n knownSignatureResponse.okResponse.length === 0 ||\n knownSignatureResponse.okResponse.includes(resp[0].toString())\n ) {\n return true;\n }\n throw Error('signatureVerificationResponse Error: response is not part of known responses');\n } catch (err) {\n // Known NOK Errors\n if (\n knownSignatureResponse.error.some((errMessage) =>\n (err as Error).message.includes(errMessage)\n )\n ) {\n return false;\n }\n // Unknown Error\n error = err;\n }\n }\n\n throw Error(`Signature verification Error: ${error}`);\n }\n\n public async verifyMessage(\n typedData: TypedData,\n signature: Signature,\n signatureVerificationFunctionName?: string,\n signatureVerificationResponse?: { okResponse: string[]; nokResponse: string[]; error: string[] }\n ): Promise {\n const hash = await this.hashMessage(typedData);\n return this.verifyMessageHash(\n hash,\n signature,\n signatureVerificationFunctionName,\n signatureVerificationResponse\n );\n }\n\n /*\n * Support methods\n */\n\n protected async getUniversalSuggestedFee(\n version: ETransactionVersion,\n { type, payload }: EstimateFeeAction,\n details: UniversalDetails\n ) {\n let maxFee: BigNumberish = 0;\n let resourceBounds: ResourceBounds = estimateFeeToBounds(ZERO);\n if (version === ETransactionVersion.V3) {\n resourceBounds =\n details.resourceBounds ??\n (await this.getSuggestedFee({ type, payload } as any, details)).resourceBounds;\n } else {\n maxFee =\n details.maxFee ??\n (await this.getSuggestedFee({ type, payload } as any, details)).suggestedMaxFee;\n }\n\n return {\n maxFee,\n resourceBounds,\n };\n }\n\n public async getSuggestedFee({ type, payload }: EstimateFeeAction, details: UniversalDetails) {\n let feeEstimate: EstimateFee;\n\n switch (type) {\n case TransactionType.INVOKE:\n feeEstimate = await this.estimateInvokeFee(payload, details);\n break;\n\n case TransactionType.DECLARE:\n feeEstimate = await this.estimateDeclareFee(payload, details);\n break;\n\n case TransactionType.DEPLOY_ACCOUNT:\n feeEstimate = await this.estimateAccountDeployFee(payload, details);\n break;\n\n case TransactionType.DEPLOY:\n feeEstimate = await this.estimateDeployFee(payload, details);\n break;\n\n default:\n feeEstimate = {\n gas_consumed: 0n,\n gas_price: 0n,\n overall_fee: ZERO,\n unit: 'FRI',\n suggestedMaxFee: ZERO,\n resourceBounds: estimateFeeToBounds(ZERO),\n data_gas_consumed: 0n,\n data_gas_price: 0n,\n };\n break;\n }\n\n return feeEstimate;\n }\n\n public async buildInvocation(\n call: Array,\n details: InvocationsSignerDetails\n ): Promise {\n const calldata = getExecuteCalldata(call, await this.getCairoVersion());\n const signature = !details.skipValidate ? await this.signer.signTransaction(call, details) : [];\n\n return {\n ...v3Details(details),\n contractAddress: this.address,\n calldata,\n signature,\n };\n }\n\n public async buildDeclarePayload(\n payload: DeclareContractPayload,\n details: InvocationsSignerDetails\n ): Promise {\n const { classHash, contract, compiledClassHash } = extractContractHashes(payload);\n const compressedCompiledContract = parseContract(contract);\n\n if (\n typeof compiledClassHash === 'undefined' &&\n (details.version === ETransactionVersion3.F3 || details.version === ETransactionVersion3.V3)\n ) {\n throw Error('V3 Transaction work with Cairo1 Contracts and require compiledClassHash');\n }\n\n const signature = !details.skipValidate\n ? await this.signer.signDeclareTransaction({\n ...details,\n ...v3Details(details),\n classHash,\n compiledClassHash: compiledClassHash as string, // TODO: TS, cast because optional for v2 and required for v3, thrown if not present\n senderAddress: details.walletAddress,\n })\n : [];\n\n return {\n senderAddress: details.walletAddress,\n signature,\n contract: compressedCompiledContract,\n compiledClassHash,\n };\n }\n\n public async buildAccountDeployPayload(\n {\n classHash,\n addressSalt = 0,\n constructorCalldata = [],\n contractAddress: providedContractAddress,\n }: DeployAccountContractPayload,\n details: InvocationsSignerDetails\n ): Promise {\n const compiledCalldata = CallData.compile(constructorCalldata);\n const contractAddress =\n providedContractAddress ??\n calculateContractAddressFromHash(addressSalt, classHash, compiledCalldata, 0);\n\n const signature = !details.skipValidate\n ? await this.signer.signDeployAccountTransaction({\n ...details,\n ...v3Details(details),\n classHash,\n contractAddress,\n addressSalt,\n constructorCalldata: compiledCalldata,\n })\n : [];\n\n return {\n ...v3Details(details),\n classHash,\n addressSalt,\n constructorCalldata: compiledCalldata,\n signature,\n };\n }\n\n public buildUDCContractPayload(\n payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[]\n ): Call[] {\n const calls = [].concat(payload as []).map((it) => {\n const {\n classHash,\n salt = '0',\n unique = true,\n constructorCalldata = [],\n } = it as UniversalDeployerContractPayload;\n const compiledConstructorCallData = CallData.compile(constructorCalldata);\n\n return {\n contractAddress: UDC.ADDRESS,\n entrypoint: UDC.ENTRYPOINT,\n calldata: [\n classHash,\n salt,\n toCairoBool(unique),\n compiledConstructorCallData.length,\n ...compiledConstructorCallData,\n ],\n };\n });\n return calls;\n }\n\n public async accountInvocationsFactory(\n invocations: Invocations,\n details: AccountInvocationsFactoryDetails\n ) {\n const { nonce, blockIdentifier, skipValidate = true } = details;\n const safeNonce = await this.getNonceSafe(nonce);\n const chainId = await this.getChainId();\n const versions = details.versions.map((it) => toTransactionVersion(it));\n\n // BULK ACTION FROM NEW ACCOUNT START WITH DEPLOY_ACCOUNT\n const tx0Payload: any = 'payload' in invocations[0] ? invocations[0].payload : invocations[0];\n const cairoVersion =\n invocations[0].type === TransactionType.DEPLOY_ACCOUNT\n ? await this.getCairoVersion(tx0Payload.classHash)\n : await this.getCairoVersion();\n\n return Promise.all(\n ([] as Invocations).concat(invocations).map(async (transaction, index: number) => {\n const txPayload: any = 'payload' in transaction ? transaction.payload : transaction;\n const signerDetails = {\n ...v3Details(details),\n walletAddress: this.address,\n nonce: toBigInt(Number(safeNonce) + index),\n maxFee: ZERO,\n chainId,\n cairoVersion,\n version: '' as ETransactionVersion,\n skipValidate,\n };\n const common = {\n type: transaction.type,\n nonce: toBigInt(Number(safeNonce) + index),\n blockIdentifier,\n version: '' as ETransactionVersion,\n };\n\n if (transaction.type === TransactionType.INVOKE) {\n // 1 or 3\n const versionX = reduceV2(versions[1]);\n signerDetails.version = versionX;\n common.version = versionX;\n\n const payload = await this.buildInvocation(\n ([] as Call[]).concat(txPayload),\n signerDetails\n );\n return {\n ...common,\n ...payload,\n };\n }\n if (transaction.type === TransactionType.DEPLOY) {\n // 1 or 3\n const versionX = reduceV2(versions[1]);\n signerDetails.version = versionX;\n common.version = versionX;\n\n const calls = this.buildUDCContractPayload(txPayload);\n const payload = await this.buildInvocation(calls, signerDetails);\n return {\n ...common,\n ...payload,\n type: TransactionType.INVOKE,\n };\n }\n if (transaction.type === TransactionType.DECLARE) {\n // 1 (Cairo0) or 2 or 3\n const versionX = !isSierra(txPayload.contract) ? versions[0] : versions[1];\n signerDetails.version = versionX;\n common.version = versionX;\n\n const payload = await this.buildDeclarePayload(txPayload, signerDetails);\n return {\n ...common,\n ...payload,\n };\n }\n if (transaction.type === TransactionType.DEPLOY_ACCOUNT) {\n // 1 or 3\n const versionX = reduceV2(versions[1]);\n signerDetails.version = versionX;\n common.version = versionX;\n\n const payload = await this.buildAccountDeployPayload(txPayload, signerDetails);\n return {\n ...common,\n ...payload,\n };\n }\n throw Error(`accountInvocationsFactory: unsupported transaction type: ${transaction}`);\n })\n ) as Promise;\n }\n\n public async getStarkName(\n address: BigNumberish = this.address, // default to the wallet address\n StarknetIdContract?: string\n ): Promise {\n return super.getStarkName(address, StarknetIdContract);\n }\n}\n","import { ProviderInterface } from '../provider';\nimport { SignerInterface } from '../signer';\nimport {\n Abi,\n AllowArray,\n BigNumberish,\n BlockIdentifier,\n CairoVersion,\n Call,\n DeclareAndDeployContractPayload,\n DeclareContractPayload,\n DeclareContractResponse,\n DeclareDeployUDCResponse,\n DeployAccountContractPayload,\n DeployContractResponse,\n DeployContractUDCResponse,\n EstimateFee,\n EstimateFeeAction,\n EstimateFeeDetails,\n EstimateFeeResponse,\n EstimateFeeResponseBulk,\n Invocations,\n InvocationsDetails,\n InvokeFunctionResponse,\n MultiDeployContractResponse,\n Nonce,\n Signature,\n SimulateTransactionDetails,\n SimulateTransactionResponse,\n TypedData,\n UniversalDeployerContractPayload,\n} from '../types';\n\nexport abstract class AccountInterface extends ProviderInterface {\n public abstract address: string;\n\n public abstract signer: SignerInterface;\n\n public abstract cairoVersion: CairoVersion;\n\n /**\n * Estimate Fee for executing an INVOKE transaction on starknet\n *\n * @param calls the invocation object containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata? - (defaults to []) the calldata\n *\n * @param estimateFeeDetails -\n * - blockIdentifier?\n * - nonce? = 0\n * - skipValidate? - default true\n * - tip? - prioritize order of transactions in the mempool.\n * - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction)\n * - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337)\n * - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei\n *\n * @returns response from estimate_fee\n */\n public abstract estimateInvokeFee(\n calls: AllowArray,\n estimateFeeDetails?: EstimateFeeDetails\n ): Promise;\n\n /**\n * Estimate Fee for executing a DECLARE transaction on starknet\n *\n * @param contractPayload the payload object containing:\n * - contract - the compiled contract to be declared\n * - casm? - compiled cairo assembly. Cairo1(casm or compiledClassHash are required)\n * - classHash? - the class hash of the compiled contract. Precalculate for faster execution.\n * - compiledClassHash?: class hash of the cairo assembly. Cairo1(casm or compiledClassHash are required)\n *\n * @param estimateFeeDetails -\n * - blockIdentifier?\n * - nonce? = 0\n * - skipValidate? - default true\n * - tip? - prioritize order of transactions in the mempool.\n * - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction)\n * - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337)\n * - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei\n *\n * @returns response from estimate_fee\n */\n public abstract estimateDeclareFee(\n contractPayload: DeclareContractPayload,\n estimateFeeDetails?: EstimateFeeDetails\n ): Promise;\n\n /**\n * Estimate Fee for executing a DEPLOY_ACCOUNT transaction on starknet\n *\n * @param contractPayload -\n * - classHash - the class hash of the compiled contract.\n * - constructorCalldata? - constructor data;\n * - contractAddress? - future account contract address. Precalculate for faster execution.\n * - addressSalt? - salt used for calculation of the contractAddress. Required if contractAddress is provided.\n *\n * @param estimateFeeDetails -\n * - blockIdentifier?\n * - nonce? = 0\n * - skipValidate? - default true\n * - tip? - prioritize order of transactions in the mempool.\n * - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337)\n * - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei\n *\n * @returns response from estimate_fee\n */\n public abstract estimateAccountDeployFee(\n contractPayload: DeployAccountContractPayload,\n estimateFeeDetails?: EstimateFeeDetails\n ): Promise;\n\n /**\n * Estimate Fee for executing a UDC DEPLOY transaction on starknet\n * This is different from the normal DEPLOY transaction as it goes through the Universal Deployer Contract (UDC)\n \n * @param deployContractPayload array or singular\n * - classHash: computed class hash of compiled contract\n * - salt: address salt\n * - unique: bool if true ensure unique salt\n * - constructorCalldata: constructor calldata\n * \n * @param estimateFeeDetails -\n * - blockIdentifier?\n * - nonce?\n * - skipValidate? - default true\n * - tip? - prioritize order of transactions in the mempool.\n * - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction)\n * - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337)\n * - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei\n */\n public abstract estimateDeployFee(\n deployContractPayload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[],\n estimateFeeDetails?: EstimateFeeDetails\n ): Promise;\n\n /**\n * Estimate Fee for executing a list of transactions on starknet\n * Contract must be deployed for fee estimation to be possible\n *\n * @param invocations array of transaction object containing :\n * - type - the type of transaction : 'DECLARE' | (multi)'DEPLOY' | (multi)'INVOKE_FUNCTION' | 'DEPLOY_ACCOUNT'\n * - payload - the payload of the transaction\n *\n * @param details -\n * - blockIdentifier?\n * - nonce?\n * - skipValidate? - default true\n * - tip? - prioritize order of transactions in the mempool.\n * - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction)\n * - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337)\n * - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition)\n * - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei\n *\n * @returns response from estimate_fee\n */\n public abstract estimateFeeBulk(\n invocations: Invocations,\n details?: EstimateFeeDetails\n ): Promise;\n\n /**\n * Gets Suggested Max Fee based on the transaction type\n *\n * @param {EstimateFeeAction} estimateFeeAction\n * @param {EstimateFeeDetails} details\n * @returns EstimateFee (...response, resourceBounds, suggestedMaxFee)\n */\n public abstract getSuggestedFee(\n estimateFeeAction: EstimateFeeAction,\n details: EstimateFeeDetails\n ): Promise;\n\n /**\n * Simulates an array of transaction and returns an array of transaction trace and estimated fee.\n *\n * @param invocations Invocations containing:\n * - type - transaction type: DECLARE, (multi)DEPLOY, DEPLOY_ACCOUNT, (multi)INVOKE_FUNCTION\n * @param details SimulateTransactionDetails\n *\n * @returns response from simulate_transaction\n */\n public abstract simulateTransaction(\n invocations: Invocations,\n details?: SimulateTransactionDetails\n ): Promise;\n\n /**\n * Invoke execute function in account contract\n *\n * @param transactions the invocation object or an array of them, containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param {InvocationsDetails} transactionsDetail Additional optional parameters for the transaction\n *\n * @returns response from addTransaction\n */\n public abstract execute(\n transactions: AllowArray,\n transactionsDetail?: InvocationsDetails\n ): Promise;\n /**\n * @deprecated\n * @param transactions the invocation object or an array of them, containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param abis (optional) the abi of the contract for better displaying\n * @param {InvocationsDetails} transactionsDetail Additional optional parameters for the transaction\n * * @returns response from addTransaction\n */\n public abstract execute(\n transactions: AllowArray,\n abis?: Abi[],\n transactionsDetail?: InvocationsDetails\n ): Promise;\n\n /**\n * Declares a given compiled contract (json) to starknet\n *\n * @param contractPayload transaction payload to be deployed containing:\n * - contract: compiled contract code\n * - (optional) classHash: computed class hash of compiled contract. Pre-compute it for faster execution.\n * - (required for Cairo1 without compiledClassHash) casm: CompiledContract | string;\n * - (optional for Cairo1 with casm) compiledClassHash: compiled class hash from casm. Pre-compute it for faster execution.\n * @param transactionsDetail - InvocationsDetails\n *\n * @returns a confirmation of sending a transaction on the starknet contract\n */\n public abstract declare(\n contractPayload: DeclareContractPayload,\n transactionsDetail?: InvocationsDetails\n ): Promise;\n\n /**\n * Deploys a declared contract to starknet - using Universal Deployer Contract (UDC)\n * support multicall\n *\n * @param payload -\n * - classHash: computed class hash of compiled contract\n * - [constructorCalldata] contract constructor calldata\n * - [salt=pseudorandom] deploy address salt\n * - [unique=true] ensure unique salt\n * @param details - InvocationsDetails\n *\n * @returns\n * - contract_address[]\n * - transaction_hash\n */\n public abstract deploy(\n payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[],\n details?: InvocationsDetails\n ): Promise;\n\n /**\n * Simplify deploy simulating old DeployContract with same response + UDC specific response\n * Internal wait for L2 transaction, support multicall\n *\n * @param payload -\n * - classHash: computed class hash of compiled contract\n * - [constructorCalldata] contract constructor calldata\n * - [salt=pseudorandom] deploy address salt\n * - [unique=true] ensure unique salt\n * @param details - InvocationsDetails\n *\n * @returns\n * - contract_address\n * - transaction_hash\n * - address\n * - deployer\n * - unique\n * - classHash\n * - calldata_len\n * - calldata\n * - salt\n */\n public abstract deployContract(\n payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[],\n details?: InvocationsDetails\n ): Promise;\n\n /**\n * Declares and Deploy a given compiled contract (json) to starknet using UDC\n * Internal wait for L2 transaction, do not support multicall\n * Method will pass even if contract is already declared (internal using DeclareIfNot)\n *\n * @param payload\n * - contract: compiled contract code\n * - [casm=cairo1]: CairoAssembly | undefined;\n * - [compiledClassHash]: string | undefined;\n * - [classHash]: computed class hash of compiled contract\n * - [constructorCalldata] contract constructor calldata\n * - [salt=pseudorandom] deploy address salt\n * - [unique=true] ensure unique salt\n * @param details - InvocationsDetails\n *\n * @returns\n * - declare\n * - transaction_hash\n * - deploy\n * - contract_address\n * - transaction_hash\n * - address\n * - deployer\n * - unique\n * - classHash\n * - calldata_len\n * - calldata\n * - salt\n */\n public abstract declareAndDeploy(\n payload: DeclareAndDeployContractPayload,\n details?: InvocationsDetails\n ): Promise;\n\n /**\n * Deploy the account on Starknet\n *\n * @param contractPayload transaction payload to be deployed containing:\n * - classHash: computed class hash of compiled contract\n * - optional constructor calldata\n * - optional address salt\n * - optional contractAddress\n * @param transactionsDetail - InvocationsDetails\n *\n * @returns a confirmation of sending a transaction on the starknet contract\n */\n public abstract deployAccount(\n contractPayload: DeployAccountContractPayload,\n transactionsDetail?: InvocationsDetails\n ): Promise;\n\n /**\n * Signs a TypedData object for off-chain usage with the Starknet private key and returns the signature\n * This adds a message prefix so it can't be interchanged with transactions\n *\n * @param typedData - TypedData object to be signed\n * @returns the signature of the TypedData object\n * @throws {Error} if typedData is not a valid TypedData\n */\n public abstract signMessage(typedData: TypedData): Promise;\n\n /**\n * Hash a TypedData object with Pedersen hash and return the hash\n * This adds a message prefix so it can't be interchanged with transactions\n *\n * @param typedData - TypedData object to be hashed\n * @returns the hash of the TypedData object\n * @throws {Error} if typedData is not a valid TypedData\n */\n public abstract hashMessage(typedData: TypedData): Promise;\n\n /**\n * Verify a signature of a TypedData object\n *\n * @param typedData - TypedData object to be verified\n * @param signature - signature of the TypedData object\n * @returns true if the signature is valid, false otherwise\n * @throws {Error} if typedData is not a valid TypedData or the signature is not a valid signature\n */\n public abstract verifyMessage(typedData: TypedData, signature: Signature): Promise;\n\n /**\n * Verify a signature of a given hash\n * @warning This method is not recommended, use verifyMessage instead\n *\n * @param hash - hash to be verified\n * @param signature - signature of the hash\n * @returns true if the signature is valid, false otherwise\n * @throws {Error} if the signature is not a valid signature\n */\n public abstract verifyMessageHash(hash: BigNumberish, signature: Signature): Promise;\n\n /**\n * Gets the nonce of the account with respect to a specific block\n *\n * @param {BlockIdentifier} blockIdentifier - optional blockIdentifier. Defaults to 'pending'\n * @returns nonce of the account\n */\n public abstract getNonce(blockIdentifier?: BlockIdentifier): Promise;\n}\n","import {\n type WatchAssetParameters,\n type AccountChangeEventHandler,\n type AddDeclareTransactionParameters,\n type AddInvokeTransactionParameters,\n type AddStarknetChainParameters,\n type NetworkChangeEventHandler,\n type ChainId,\n type StarknetWindowObject,\n type TypedData,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type SPEC,\n} from 'starknet-types-07';\n\n/**\n * Request Permission for wallet account, return addresses that are allowed by user\n * @param {boolean} [silent_mode=false] false: request user interaction allowance. true: return only pre-allowed\n * @returns allowed accounts addresses\n */\nexport function requestAccounts(swo: StarknetWindowObject, silent_mode = false) {\n return swo.request({\n type: 'wallet_requestAccounts',\n params: {\n silent_mode,\n },\n });\n}\n\n/**\n * Request Permission for wallet account\n * @returns allowed accounts addresses\n */\nexport function getPermissions(swo: StarknetWindowObject) {\n return swo.request({ type: 'wallet_getPermissions' });\n}\n\n/**\n * Request adding ERC20 Token to Wallet List\n * @param asset WatchAssetParameters\n * @returns boolean\n */\nexport function watchAsset(swo: StarknetWindowObject, asset: WatchAssetParameters) {\n return swo.request({\n type: 'wallet_watchAsset',\n params: asset,\n });\n}\n\n/**\n * Request adding custom Starknet chain\n * @param chain AddStarknetChainParameters\n * @returns boolean\n */\nexport function addStarknetChain(swo: StarknetWindowObject, chain: AddStarknetChainParameters) {\n // TODO: This should set custom RPC endpoint ?\n return swo.request({\n type: 'wallet_addStarknetChain',\n params: chain,\n });\n}\n\n/**\n * Request Wallet Network change\n * @param chainId StarknetChainId\n * @returns boolean\n */\nexport function switchStarknetChain(swo: StarknetWindowObject, chainId: ChainId) {\n return swo.request({\n type: 'wallet_switchStarknetChain',\n params: {\n chainId,\n },\n });\n}\n\n/**\n * Request the current chain ID from the wallet.\n * @returns The current Starknet chain ID.\n */\nexport function requestChainId(swo: StarknetWindowObject) {\n return swo.request({ type: 'wallet_requestChainId' });\n}\n\n/**\n * Get deployment data for a contract.\n * @returns The deployment data result.\n */\nexport function deploymentData(swo: StarknetWindowObject) {\n return swo.request({ type: 'wallet_deploymentData' }); // TODO: test\n}\n\n/**\n * Add an invoke transaction to the wallet.\n * @param params The parameters required for the invoke transaction.\n * @returns The result of adding the invoke transaction.\n */\nexport function addInvokeTransaction(\n swo: StarknetWindowObject,\n params: AddInvokeTransactionParameters\n) {\n return swo.request({\n type: 'wallet_addInvokeTransaction',\n params,\n });\n}\n\n/**\n * Add a declare transaction to the wallet.\n * @param params The parameters required for the declare transaction.\n * @returns The result of adding the declare transaction.\n */\nexport function addDeclareTransaction(\n swo: StarknetWindowObject,\n params: AddDeclareTransactionParameters\n) {\n return swo.request({\n type: 'wallet_addDeclareTransaction',\n params,\n });\n}\n\n/**\n * Sign typed data using the wallet.\n * @param swo the starknet (wallet) window object to request the signature.\n * @param typedData The typed data to sign.\n * @returns An array of signatures as strings.\n */\nexport function signMessage(swo: StarknetWindowObject, typedData: TypedData) {\n return swo.request({\n type: 'wallet_signTypedData',\n params: typedData,\n });\n}\n\n/**\n * Get the list of supported specifications.\n * @returns An array of supported specification strings.\n */\nexport function supportedSpecs(swo: StarknetWindowObject) {\n return swo.request({ type: 'wallet_supportedSpecs' });\n}\n\n/**\n * Attaches an event handler function to the \"accountsChanged\" event of a StarknetWindowObject.\n * When the accounts are changed, the specified callback function will be called.\n *\n * @param {StarknetWindowObject} swo - The StarknetWindowObject to attach the event handler to.\n * @param {AccountChangeEventHandler} callback - The function to be called when the accounts are changed.\n * It will receive the changed accounts as a parameter.\n * @returns {void}\n */\nexport function onAccountChange(\n swo: StarknetWindowObject,\n callback: AccountChangeEventHandler\n): void {\n swo.on('accountsChanged', callback);\n}\n\n/**\n * Register a callback function to be called when the network is changed.\n *\n * @param {StarknetWindowObject} swo - The StarknetWindowObject instance.\n * @param {NetworkChangeEventHandler} callback - The callback function to be called when the network is changed.\n * @return {void}\n */\nexport function onNetworkChanged(\n swo: StarknetWindowObject,\n callback: NetworkChangeEventHandler\n): void {\n swo.on('networkChanged', callback);\n}\n","import {\n type AccountChangeEventHandler,\n type AddStarknetChainParameters,\n type NetworkChangeEventHandler,\n type WatchAssetParameters,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type SPEC,\n} from 'starknet-types-07';\n\nimport { Account, AccountInterface } from '../account';\nimport { ProviderInterface } from '../provider';\nimport {\n AllowArray,\n CairoVersion,\n Call,\n CompiledSierra,\n DeclareContractPayload,\n MultiDeployContractResponse,\n ProviderOptions,\n TypedData,\n UniversalDeployerContractPayload,\n} from '../types';\nimport { extractContractHashes } from '../utils/contract';\nimport { stringify } from '../utils/json';\nimport { buildUDCCall } from '../utils/transaction';\nimport {\n addDeclareTransaction,\n addInvokeTransaction,\n addStarknetChain,\n getPermissions,\n onAccountChange,\n onNetworkChanged,\n requestAccounts,\n signMessage,\n switchStarknetChain,\n watchAsset,\n} from './connect';\nimport { StarknetWalletProvider } from './types';\nimport { StarknetChainId } from '../constants';\n\n// Represent 'Selected Active' Account inside Connected Wallet\nexport class WalletAccount extends Account implements AccountInterface {\n public address: string = '';\n\n public walletProvider: StarknetWalletProvider;\n\n constructor(\n providerOrOptions: ProviderOptions | ProviderInterface,\n walletProvider: StarknetWalletProvider,\n cairoVersion?: CairoVersion\n ) {\n super(providerOrOptions, '', '', cairoVersion); // At this point unknown address\n this.walletProvider = walletProvider;\n\n // Update Address on change\n this.walletProvider.on('accountsChanged', (res) => {\n if (!res) return;\n this.address = res[0].toLowerCase();\n });\n\n // Update Channel chainId on Network change\n this.walletProvider.on('networkChanged', (res) => {\n if (!res) return;\n // Determine is it better to set chainId or replace channel with new one\n // At the moment channel is stateless but it could change\n this.channel.setChainId(res as StarknetChainId);\n });\n\n // Get and Set Address !!! Post constructor initial empty string\n walletProvider\n .request({\n type: 'wallet_requestAccounts',\n params: {\n silent_mode: false,\n },\n })\n .then((res) => {\n this.address = res[0].toLowerCase();\n });\n }\n\n /**\n * WALLET EVENTS\n */\n public onAccountChange(callback: AccountChangeEventHandler) {\n onAccountChange(this.walletProvider, callback);\n }\n\n public onNetworkChanged(callback: NetworkChangeEventHandler) {\n onNetworkChanged(this.walletProvider, callback);\n }\n\n /**\n * WALLET SPECIFIC METHODS\n */\n public requestAccounts(silentMode = false) {\n return requestAccounts(this.walletProvider, silentMode);\n }\n\n public getPermissions() {\n return getPermissions(this.walletProvider);\n }\n\n public switchStarknetChain(chainId: StarknetChainId) {\n return switchStarknetChain(this.walletProvider, chainId);\n }\n\n public watchAsset(asset: WatchAssetParameters) {\n return watchAsset(this.walletProvider, asset);\n }\n\n public addStarknetChain(chain: AddStarknetChainParameters) {\n return addStarknetChain(this.walletProvider, chain);\n }\n\n /**\n * ACCOUNT METHODS\n */\n override execute(calls: AllowArray) {\n const txCalls = [].concat(calls as any).map((it) => {\n const { contractAddress, entrypoint, calldata } = it;\n return {\n contract_address: contractAddress,\n entry_point: entrypoint,\n calldata,\n };\n });\n\n const params = {\n calls: txCalls,\n };\n\n return addInvokeTransaction(this.walletProvider, params);\n }\n\n override declare(payload: DeclareContractPayload) {\n const declareContractPayload = extractContractHashes(payload);\n\n // DISCUSS: HOTFIX: Adapt Abi format\n const pContract = payload.contract as CompiledSierra;\n const cairo1Contract = {\n ...pContract,\n abi: stringify(pContract.abi),\n };\n\n // Check FIx\n if (!declareContractPayload.compiledClassHash) {\n throw Error('compiledClassHash is required');\n }\n\n const params = {\n compiled_class_hash: declareContractPayload.compiledClassHash,\n contract_class: cairo1Contract,\n };\n\n return addDeclareTransaction(this.walletProvider, params);\n }\n\n override async deploy(\n payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[]\n ): Promise {\n const { calls, addresses } = buildUDCCall(payload, this.address);\n const invokeResponse = await this.execute(calls);\n\n return {\n ...invokeResponse,\n contract_address: addresses,\n };\n }\n\n override signMessage(typedData: TypedData) {\n return signMessage(this.walletProvider, typedData);\n }\n\n // TODO: MISSING ESTIMATES\n}\n","import type { Abi as AbiKanabi, TypedContract as AbiWanTypedContract } from 'abi-wan-kanabi';\n\nimport { AccountInterface } from '../account';\nimport { ProviderInterface, defaultProvider } from '../provider';\nimport {\n Abi,\n AbiEvents,\n ArgsOrCalldata,\n ArgsOrCalldataWithOptions,\n AsyncContractFunction,\n Call,\n CallOptions,\n Calldata,\n ContractFunction,\n ContractOptions,\n EstimateFeeResponse,\n FunctionAbi,\n InvokeFunctionResponse,\n InvokeOptions,\n InvokeTransactionReceiptResponse,\n ParsedEvents,\n RawArgs,\n Result,\n AbiStruct,\n ValidateType,\n} from '../types';\nimport assert from '../utils/assert';\nimport { CallData, cairo } from '../utils/calldata';\nimport { createAbiParser } from '../utils/calldata/parser';\nimport { getAbiEvents, parseEvents as parseRawEvents } from '../utils/events/index';\nimport { cleanHex } from '../utils/num';\nimport { ContractInterface } from './interface';\nimport type { GetTransactionReceiptResponse } from '../utils/transactionReceipt';\n\nexport type TypedContractV2 = AbiWanTypedContract & Contract;\n\nexport const splitArgsAndOptions = (args: ArgsOrCalldataWithOptions) => {\n const options = [\n 'blockIdentifier',\n 'parseRequest',\n 'parseResponse',\n 'formatResponse',\n 'maxFee',\n 'nonce',\n 'signature',\n 'addressSalt',\n ];\n const lastArg = args[args.length - 1];\n if (typeof lastArg === 'object' && options.some((x) => x in lastArg)) {\n return { args: args as ArgsOrCalldata, options: args.pop() as ContractOptions };\n }\n return { args: args as ArgsOrCalldata };\n};\n\n/**\n * Adds call methods to the contract\n */\nfunction buildCall(contract: Contract, functionAbi: FunctionAbi): AsyncContractFunction {\n return async function (...args: ArgsOrCalldataWithOptions): Promise {\n const params = splitArgsAndOptions(args);\n return contract.call(functionAbi.name, params.args, {\n parseRequest: true,\n parseResponse: true,\n ...params.options,\n });\n };\n}\n\n/**\n * Adds invoke methods to the contract\n */\nfunction buildInvoke(contract: Contract, functionAbi: FunctionAbi): AsyncContractFunction {\n return async function (...args: Array): Promise {\n const params = splitArgsAndOptions(args);\n return contract.invoke(functionAbi.name, params.args, {\n parseRequest: true,\n ...params.options,\n });\n };\n}\n\n/**\n * Adds call/invoke methods to the contract\n */\nfunction buildDefault(contract: Contract, functionAbi: FunctionAbi): AsyncContractFunction {\n if (functionAbi.stateMutability === 'view' || functionAbi.state_mutability === 'view') {\n return buildCall(contract, functionAbi);\n }\n return buildInvoke(contract, functionAbi);\n}\n\n/**\n * Adds populate for methods to the contract\n */\nfunction buildPopulate(contract: Contract, functionAbi: FunctionAbi): ContractFunction {\n return function (...args: Array): any {\n return contract.populate(functionAbi.name, args);\n };\n}\n\n/**\n * Adds estimateFee for methods to the contract\n */\nfunction buildEstimate(contract: Contract, functionAbi: FunctionAbi): ContractFunction {\n return function (...args: Array): any {\n return contract.estimate(functionAbi.name, args);\n };\n}\n\nexport function getCalldata(args: RawArgs, callback: Function): Calldata {\n // Check if Calldata in args or args[0] else compile\n if (Array.isArray(args) && '__compiled__' in args) return args as Calldata;\n if (Array.isArray(args) && Array.isArray(args[0]) && '__compiled__' in args[0])\n return args[0] as Calldata;\n return callback();\n}\n\nexport class Contract implements ContractInterface {\n abi: Abi;\n\n address: string;\n\n providerOrAccount: ProviderInterface | AccountInterface;\n\n deployTransactionHash?: string;\n\n protected readonly structs: { [name: string]: AbiStruct };\n\n protected readonly events: AbiEvents;\n\n readonly functions!: { [name: string]: AsyncContractFunction };\n\n readonly callStatic!: { [name: string]: AsyncContractFunction };\n\n readonly populateTransaction!: { [name: string]: ContractFunction };\n\n readonly estimateFee!: { [name: string]: ContractFunction };\n\n readonly [key: string]: AsyncContractFunction | any;\n\n private callData: CallData;\n\n /**\n * Contract class to handle contract methods\n *\n * @param abi - Abi of the contract object\n * @param address (optional) - address to connect to\n * @param providerOrAccount (optional) - Provider or Account to attach to\n */\n constructor(\n abi: Abi,\n address: string,\n providerOrAccount: ProviderInterface | AccountInterface = defaultProvider\n ) {\n this.address = address && address.toLowerCase();\n this.providerOrAccount = providerOrAccount;\n this.callData = new CallData(abi);\n this.structs = CallData.getAbiStruct(abi);\n this.events = getAbiEvents(abi);\n const parser = createAbiParser(abi);\n this.abi = parser.getLegacyFormat();\n\n const options = { enumerable: true, value: {}, writable: false };\n Object.defineProperties(this, {\n functions: { enumerable: true, value: {}, writable: false },\n callStatic: { enumerable: true, value: {}, writable: false },\n populateTransaction: { enumerable: true, value: {}, writable: false },\n estimateFee: { enumerable: true, value: {}, writable: false },\n });\n this.abi.forEach((abiElement) => {\n if (abiElement.type !== 'function') return;\n const signature = abiElement.name;\n if (!this[signature]) {\n Object.defineProperty(this, signature, {\n ...options,\n value: buildDefault(this, abiElement),\n });\n }\n if (!this.functions[signature]) {\n Object.defineProperty(this.functions, signature, {\n ...options,\n value: buildDefault(this, abiElement),\n });\n }\n if (!this.callStatic[signature]) {\n Object.defineProperty(this.callStatic, signature, {\n ...options,\n value: buildCall(this, abiElement),\n });\n }\n if (!this.populateTransaction[signature]) {\n Object.defineProperty(this.populateTransaction, signature, {\n ...options,\n value: buildPopulate(this, abiElement),\n });\n }\n if (!this.estimateFee[signature]) {\n Object.defineProperty(this.estimateFee, signature, {\n ...options,\n value: buildEstimate(this, abiElement),\n });\n }\n });\n }\n\n public attach(address: string): void {\n this.address = address;\n }\n\n public connect(providerOrAccount: ProviderInterface | AccountInterface) {\n this.providerOrAccount = providerOrAccount;\n }\n\n public async deployed(): Promise {\n if (this.deployTransactionHash) {\n await this.providerOrAccount.waitForTransaction(this.deployTransactionHash);\n this.deployTransactionHash = undefined;\n }\n return this;\n }\n\n public async call(\n method: string,\n args: ArgsOrCalldata = [],\n {\n parseRequest = true,\n parseResponse = true,\n formatResponse = undefined,\n blockIdentifier = undefined,\n }: CallOptions = {}\n ): Promise {\n assert(this.address !== null, 'contract is not connected to an address');\n\n const calldata = getCalldata(args, () => {\n if (parseRequest) {\n this.callData.validate(ValidateType.CALL, method, args);\n return this.callData.compile(method, args);\n }\n // eslint-disable-next-line no-console\n console.warn('Call skipped parsing but provided rawArgs, possible malfunction request');\n return args;\n });\n\n return this.providerOrAccount\n .callContract(\n {\n contractAddress: this.address,\n calldata,\n entrypoint: method,\n },\n blockIdentifier\n )\n .then((it) => {\n if (!parseResponse) {\n return it;\n }\n if (formatResponse) {\n return this.callData.format(method, it, formatResponse);\n }\n return this.callData.parse(method, it);\n });\n }\n\n public invoke(\n method: string,\n args: ArgsOrCalldata = [],\n { parseRequest = true, maxFee, nonce, signature }: InvokeOptions = {}\n ): Promise {\n assert(this.address !== null, 'contract is not connected to an address');\n\n const calldata = getCalldata(args, () => {\n if (parseRequest) {\n this.callData.validate(ValidateType.INVOKE, method, args);\n return this.callData.compile(method, args);\n }\n // eslint-disable-next-line no-console\n console.warn('Invoke skipped parsing but provided rawArgs, possible malfunction request');\n return args;\n });\n\n const invocation = {\n contractAddress: this.address,\n calldata,\n entrypoint: method,\n };\n if ('execute' in this.providerOrAccount) {\n return this.providerOrAccount.execute(invocation, undefined, {\n maxFee,\n nonce,\n });\n }\n\n if (!nonce) throw new Error(`Nonce is required when invoking a function without an account`);\n // eslint-disable-next-line no-console\n console.warn(`Invoking ${method} without an account. This will not work on a public node.`);\n\n return this.providerOrAccount.invokeFunction(\n {\n ...invocation,\n signature,\n },\n {\n nonce,\n }\n );\n }\n\n public async estimate(method: string, args: ArgsOrCalldata = []): Promise {\n assert(this.address !== null, 'contract is not connected to an address');\n\n if (!getCalldata(args, () => false)) {\n this.callData.validate(ValidateType.INVOKE, method, args);\n }\n\n const invocation = this.populate(method, args);\n if ('estimateInvokeFee' in this.providerOrAccount) {\n return this.providerOrAccount.estimateInvokeFee(invocation);\n }\n throw Error('Contract must be connected to the account contract to estimate');\n }\n\n public populate(method: string, args: RawArgs = []): Call {\n const calldata: Calldata = getCalldata(args, () => this.callData.compile(method, args));\n return {\n contractAddress: this.address,\n entrypoint: method,\n calldata,\n };\n }\n\n public parseEvents(receipt: GetTransactionReceiptResponse): ParsedEvents {\n return parseRawEvents(\n (receipt as InvokeTransactionReceiptResponse).events?.filter(\n (event) => cleanHex(event.from_address) === cleanHex(this.address),\n []\n ) || [],\n this.events,\n this.structs,\n CallData.getAbiEnum(this.abi)\n );\n }\n\n public isCairo1(): boolean {\n return cairo.isCairo1Abi(this.abi);\n }\n\n public async getVersion() {\n return this.providerOrAccount.getContractVersion(this.address);\n }\n\n public typedv2(tAbi: TAbi): TypedContractV2 {\n return this as unknown as TypedContractV2;\n }\n}\n","import type { Abi as AbiKanabi, TypedContract as AbiWanTypedContract } from 'abi-wan-kanabi';\n\nimport { AccountInterface } from '../account';\nimport { ProviderInterface } from '../provider';\nimport {\n Abi,\n ArgsOrCalldata,\n AsyncContractFunction,\n BigNumberish,\n BlockIdentifier,\n CallOptions,\n Calldata,\n ContractFunction,\n ContractVersion,\n EstimateFeeResponse,\n Invocation,\n InvokeFunctionResponse,\n InvokeOptions,\n ParsedEvents,\n RawArgs,\n Result,\n Uint256,\n} from '../types';\nimport { CairoCustomEnum } from '../utils/calldata/enum/CairoCustomEnum';\nimport { CairoOption } from '../utils/calldata/enum/CairoOption';\nimport { CairoResult } from '../utils/calldata/enum/CairoResult';\nimport type { GetTransactionReceiptResponse } from '../utils/transactionReceipt';\n\ndeclare module 'abi-wan-kanabi' {\n export interface Config {\n FeltType: BigNumberish;\n U256Type: number | bigint | Uint256;\n U512Type: BigNumberish;\n Secp256k1PointType: BigNumberish;\n Option: CairoOption;\n Tuple: Record;\n Result: CairoResult;\n Enum: CairoCustomEnum;\n Calldata: RawArgs | Calldata;\n CallOptions: CallOptions;\n InvokeOptions: InvokeOptions;\n InvokeFunctionResponse: InvokeFunctionResponse;\n }\n}\n\ntype TypedContractV2 = AbiWanTypedContract & ContractInterface;\n\nexport abstract class ContractInterface {\n public abstract abi: Abi;\n\n public abstract address: string;\n\n public abstract providerOrAccount: ProviderInterface | AccountInterface;\n\n public abstract deployTransactionHash?: string;\n\n readonly functions!: { [name: string]: AsyncContractFunction };\n\n readonly callStatic!: { [name: string]: AsyncContractFunction };\n\n readonly populateTransaction!: { [name: string]: ContractFunction };\n\n readonly estimateFee!: { [name: string]: ContractFunction };\n\n readonly [key: string]: AsyncContractFunction | any;\n\n /**\n * Saves the address of the contract deployed on network that will be used for interaction\n *\n * @param address - address of the contract\n */\n public abstract attach(address: string): void;\n\n /**\n * Attaches to new Provider or Account\n *\n * @param providerOrAccount - new Provider or Account to attach to\n */\n public abstract connect(providerOrAccount: ProviderInterface | AccountInterface): void;\n\n /**\n * Resolves when contract is deployed on the network or when no deployment transaction is found\n *\n * @returns Promise that resolves when contract is deployed on the network or when no deployment transaction is found\n * @throws When deployment fails\n */\n public abstract deployed(): Promise;\n\n /**\n * Calls a method on a contract\n *\n * @param method name of the method\n * @param args Array of the arguments for the call\n * @param options optional blockIdentifier\n * @returns Result of the call as an array with key value pars\n */\n public abstract call(\n method: string,\n args?: ArgsOrCalldata,\n options?: CallOptions\n ): Promise;\n\n /**\n * Invokes a method on a contract\n *\n * @param method name of the method\n * @param args Array of the arguments for the invoke or Calldata\n * @param options\n * @returns Add Transaction Response\n */\n public abstract invoke(\n method: string,\n args?: ArgsOrCalldata,\n options?: InvokeOptions\n ): Promise;\n\n /**\n * Estimates a method on a contract\n *\n * @param method name of the method\n * @param args Array of the arguments for the call or Calldata\n * @param options optional blockIdentifier\n */\n public abstract estimate(\n method: string,\n args?: ArgsOrCalldata,\n options?: {\n blockIdentifier?: BlockIdentifier;\n }\n ): Promise;\n\n /**\n * Calls a method on a contract\n *\n * @param method name of the method\n * @param args Array of the arguments for the call or Calldata\n * @returns Invocation object\n */\n public abstract populate(method: string, args?: ArgsOrCalldata): Invocation;\n\n /**\n * Parse contract events of a GetTransactionReceiptResponse received from waitForTransaction. Based on contract's abi\n *\n * @param receipt transaction receipt\n * @returns Events parsed\n */\n public abstract parseEvents(receipt: GetTransactionReceiptResponse): ParsedEvents;\n\n /**\n * tells if the contract comes from a Cairo 1 contract\n *\n * @returns TRUE if the contract comes from a Cairo1 contract\n * @example\n * ```typescript\n * const isCairo1: boolean = myContract.isCairo1();\n * ```\n */\n public abstract isCairo1(): boolean;\n\n /**\n * Retrieves the version of the contract (cairo version & compiler version)\n */\n public abstract getVersion(): Promise;\n\n /**\n * Returns a typed instance of ContractV2 based on the supplied ABI.\n *\n * @param {TAbi} tAbi - The ABI (Abstract Binary Interface) of the ContractV2.\n * @return {TypedContractV2} - A typed instance of ContractV2.\n */\n public abstract typedv2(tAbi: TAbi): TypedContractV2;\n}\n","import { AccountInterface } from '../account';\nimport {\n Abi,\n ArgsOrCalldataWithOptions,\n CairoAssembly,\n CompiledContract,\n ValidateType,\n} from '../types';\nimport assert from '../utils/assert';\nimport { CallData } from '../utils/calldata';\nimport { Contract, getCalldata, splitArgsAndOptions } from './default';\n\nexport type ContractFactoryParams = {\n compiledContract: CompiledContract;\n account: any;\n casm?: CairoAssembly;\n classHash?: string;\n compiledClassHash?: string;\n abi?: Abi;\n};\n\nexport class ContractFactory {\n compiledContract: CompiledContract;\n\n account: AccountInterface;\n\n abi: Abi;\n\n classHash?: string;\n\n casm?: CairoAssembly;\n\n compiledClassHash?: string;\n\n private CallData: CallData;\n\n /**\n * @param params CFParams\n * - compiledContract: CompiledContract;\n * - account: AccountInterface;\n * - casm?: CairoAssembly;\n * - classHash?: string;\n * - compiledClassHash?: string;\n * - abi?: Abi;\n */\n constructor(params: ContractFactoryParams) {\n this.compiledContract = params.compiledContract;\n this.account = params.account;\n this.casm = params.casm;\n this.abi = params.abi ?? params.compiledContract.abi;\n this.classHash = params.classHash;\n this.compiledClassHash = params.compiledClassHash;\n this.CallData = new CallData(this.abi);\n }\n\n /**\n * Deploys contract and returns new instance of the Contract\n *\n * If contract is not declared it will first declare it, and then deploy\n */\n public async deploy(...args: ArgsOrCalldataWithOptions): Promise {\n const { args: param, options = { parseRequest: true } } = splitArgsAndOptions(args);\n\n const constructorCalldata = getCalldata(param, () => {\n if (options.parseRequest) {\n this.CallData.validate(ValidateType.DEPLOY, 'constructor', param);\n return this.CallData.compile('constructor', param);\n }\n // eslint-disable-next-line no-console\n console.warn('Call skipped parsing but provided rawArgs, possible malfunction request');\n return param;\n });\n\n const {\n deploy: { contract_address, transaction_hash },\n } = await this.account.declareAndDeploy({\n contract: this.compiledContract,\n casm: this.casm,\n classHash: this.classHash,\n compiledClassHash: this.compiledClassHash,\n constructorCalldata,\n salt: options.addressSalt,\n });\n assert(Boolean(contract_address), 'Deployment of the contract failed');\n\n const contractInstance = new Contract(\n this.compiledContract.abi,\n contract_address!,\n this.account\n );\n contractInstance.deployTransactionHash = transaction_hash;\n\n return contractInstance;\n }\n\n /**\n * Attaches to new Account\n *\n * @param account - new Account to attach to\n */\n connect(account: AccountInterface): ContractFactory {\n this.account = account;\n return this;\n }\n\n /**\n * Attaches current abi and account to the new address\n */\n attach(address: string): Contract {\n return new Contract(this.abi, address, this.account);\n }\n\n // ethers.js' getDeployTransaction can't be supported as it requires the account or signer to return a signed transaction which is not possible with the current implementation\n}\n","import {\n BlockWithTxHashes,\n FeeEstimate,\n CallContractResponse,\n DeclareContractResponse,\n DeployContractResponse,\n EstimateFeeResponse,\n GetBlockResponse,\n GetTransactionResponse,\n InvokeFunctionResponse,\n SimulateTransactionResponse,\n} from '../../types';\nimport type { GetTransactionReceiptResponse } from '../transactionReceipt';\n\nexport abstract class ResponseParser {\n abstract parseGetBlockResponse(res: BlockWithTxHashes): GetBlockResponse;\n\n abstract parseGetTransactionResponse(res: any): GetTransactionResponse;\n\n abstract parseGetTransactionReceiptResponse(res: any): GetTransactionReceiptResponse;\n\n abstract parseFeeEstimateResponse(res: FeeEstimate[]): EstimateFeeResponse;\n\n abstract parseCallContractResponse(res: any): CallContractResponse;\n\n abstract parseInvokeFunctionResponse(res: any): InvokeFunctionResponse;\n\n abstract parseDeployContractResponse(res: any): DeployContractResponse;\n\n abstract parseDeclareContractResponse(res: any): DeclareContractResponse;\n\n abstract parseSimulateTransactionResponse(res: any): SimulateTransactionResponse;\n}\n","/* eslint-disable no-bitwise */\nimport { hexToBytes } from '@noble/curves/abstract/utils';\n\nimport { ADDR_BOUND, ZERO } from '../constants';\nimport { BigNumberish } from '../types';\nimport { addHexPrefix, removeHexPrefix } from './encode';\nimport { keccakBn } from './hash';\nimport { assertInRange, toHex } from './num';\n\n/**\n * Format a hex number to '0x' and 64 characters, adding leading zeros if necessary.\n *\n * @param {BigNumberish} address\n * @returns {string} Hex string : 0x followed by 64 characters. No upper case characters in the response.\n * @example\n * ```typescript\n * const address = \"0x90591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf\";\n * const result = addAddressPadding(address);\n * // result = \"0x0000090591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf\"\n * ```\n */\nexport function addAddressPadding(address: BigNumberish): string {\n const hex = toHex(addHexPrefix(address.toString()));\n const padded = removeHexPrefix(hex).padStart(64, '0');\n return addHexPrefix(padded);\n}\n\n/**\n * Check the validity of a Starknet address, and format it as a hex number : '0x' and 64 characters, adding leading zeros if necessary.\n *\n * @param {BigNumberish} address\n * @returns {string} Hex string : 0x followed by 64 characters. No upper case characters in the response.\n * @throws address argument must be a valid address inside the address range bound\n * @example\n * ```typescript\n * const address = \"0x90591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf\";\n * const result = validateAndParseAddress(address);\n * // result = \"0x0000090591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf\"\n * ```\n */\nexport function validateAndParseAddress(address: BigNumberish): string {\n const result = addAddressPadding(address);\n\n if (!result.match(/^(0x)?[0-9a-fA-F]{64}$/)) {\n throw new Error('Invalid Address Format');\n }\n\n assertInRange(result, ZERO, ADDR_BOUND - 1n, 'Starknet Address');\n\n return result;\n}\n\n/**\n * Convert an address to her checksum representation which uses a specific pattern of uppercase and lowercase letters within\n * a given address to reduce the risk of errors introduced from typing an address or cut and paste issues.\n * @param {BigNumberish} address\n * @returns {string} Hex string : 0x followed by 64 characters. Mix of uppercase and lowercase\n * @example\n * ```typescript\n * const address = \"0x90591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf\";\n * const result = getChecksumAddress(address);\n * // result = \"0x0000090591D9fA3EfC87067d95a643f8455E0b8190eb8Cb7bFd39e4fb7571fDF\"\n * ```\n */\n// from https://github.com/ethers-io/ethers.js/blob/fc1e006575d59792fa97b4efb9ea2f8cca1944cf/packages/address/src.ts/index.ts#L12\nexport function getChecksumAddress(address: BigNumberish): string {\n const chars = removeHexPrefix(validateAndParseAddress(address)).toLowerCase().split('');\n const hex = removeHexPrefix(keccakBn(address));\n const hashed = hexToBytes(hex.padStart(64, '0'));\n\n for (let i = 0; i < chars.length; i += 2) {\n if (hashed[i >> 1] >> 4 >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return addHexPrefix(chars.join(''));\n}\n\n/**\n * If the casing of an address is mixed, it is a Checksum Address, which uses a specific pattern of uppercase and lowercase letters within\n * a given address to reduce the risk of errors introduced from typing an address or cut and paste issues.\n *\n * @param address string\n * @returns true if the ChecksumAddress is valid\n * @example\n * ```typescript\n * const address = \"0x0000090591D9fA3EfC87067d95a643f8455E0b8190eb8Cb7bFd39e4fb7571fDF\";\n * const result = validateChecksumAddress(address);\n * // result = true\n * ```\n */\nexport function validateChecksumAddress(address: string): boolean {\n return getChecksumAddress(address) === address;\n}\n","import urljoin from 'url-join';\n\n/**\n * Inspired from https://github.com/segmentio/is-url\n */\n\n/**\n * RegExps.\n * A URL must match #1 and then at least one of #2/#3.\n * Use two levels of REs to avoid REDOS.\n */\nconst protocolAndDomainRE = /^(?:\\w+:)?\\/\\/(\\S+)$/;\n\nconst localhostDomainRE = /^localhost[:?\\d]*(?:[^:?\\d]\\S*)?$/;\nconst nonLocalhostDomainRE = /^[^\\s.]+\\.\\S{2,}$/;\n\n/**\n * Loosely validate a URL `string`.\n *\n * @param {string} s - The URL to check for\n * @return {boolean} `true` if url is valid, `false` otherwise\n * @example\n * ```typescript\n * const s = \"https://starknetjs.com/docs\";\n * const result = isUrl(s);\n * // result == true\n */\nexport function isUrl(s?: string): boolean {\n if (!s) {\n return false;\n }\n\n if (typeof s !== 'string') {\n return false;\n }\n\n const match = s.match(protocolAndDomainRE);\n if (!match) {\n return false;\n }\n\n const everythingAfterProtocol = match[1];\n if (!everythingAfterProtocol) {\n return false;\n }\n\n if (\n localhostDomainRE.test(everythingAfterProtocol) ||\n nonLocalhostDomainRE.test(everythingAfterProtocol)\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Builds a URL using the provided base URL, default path, and optional URL or path.\n *\n * @param {string} baseUrl - The base URL of the URL being built.\n * @param {string} defaultPath - The default path to use if no URL or path is provided.\n * @param {string} [urlOrPath] - The optional URL or path to append to the base URL.\n * @return {string} The built URL.\n * @example\n * ```typescript\n * const baseUrl = \"https://starknetjs.com\";\n * const defaultPath = \"/\";\n * const urlOrPath = \"/docs\";\n * const result = buildUrl(baseUrl, defaultPath, urlOrPath);\n *\n * result = \"https://starknetjs.com/docs\"\n */\nexport function buildUrl(baseUrl: string, defaultPath: string, urlOrPath?: string) {\n return isUrl(urlOrPath) ? urlOrPath! : urljoin(baseUrl, urlOrPath ?? defaultPath);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaBtcHeader = void 0;\r\nconst buffer_1 = require(\"buffer\");\r\nclass SolanaBtcHeader {\r\n constructor(obj) {\r\n this.version = obj.version;\r\n this.reversedPrevBlockhash = obj.reversedPrevBlockhash;\r\n this.merkleRoot = obj.merkleRoot;\r\n this.timestamp = obj.timestamp;\r\n this.nbits = obj.nbits;\r\n this.nonce = obj.nonce;\r\n this.hash = obj.hash;\r\n }\r\n getMerkleRoot() {\r\n return buffer_1.Buffer.from(this.merkleRoot);\r\n }\r\n getNbits() {\r\n return this.nbits;\r\n }\r\n getNonce() {\r\n return this.nonce;\r\n }\r\n getReversedPrevBlockhash() {\r\n return buffer_1.Buffer.from(this.reversedPrevBlockhash);\r\n }\r\n getTimestamp() {\r\n return this.timestamp;\r\n }\r\n getVersion() {\r\n return this.version;\r\n }\r\n}\r\nexports.SolanaBtcHeader = SolanaBtcHeader;\r\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ''\n\n const path =\n ''\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { IField, validateField, nLength } from './modular.js';\nimport { validateObject } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n\nexport type AffinePoint = {\n x: T;\n y: T;\n} & { z?: never; t?: never };\n\nexport interface Group> {\n double(): T;\n negate(): T;\n add(other: T): T;\n subtract(other: T): T;\n equals(other: T): boolean;\n multiply(scalar: bigint): T;\n}\n\nexport type GroupConstructor = {\n BASE: T;\n ZERO: T;\n};\nexport type Mapper = (i: T[]) => T[];\n\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF>(c: GroupConstructor, bits: number) {\n const constTimeNegate = (condition: boolean, item: T): T => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const opts = (W: number) => {\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm: T, n: bigint) {\n let p = c.ZERO;\n let d: T = elm;\n while (n > _0n) {\n if (n & _1n) p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm: T, W: number): Group[] {\n const { windows, windowSize } = opts(W);\n const points: T[] = [];\n let p: T = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T } {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n\n let p = c.ZERO;\n let f = c.BASE;\n\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n\n // Shift number by W bits.\n n >>= shiftBy;\n\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n } else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n\n wNAFCached(P: T, precomputesMap: Map, n: bigint, transform: Mapper): { p: T; f: T } {\n // @ts-ignore\n const W: number = P._WINDOW_SIZE || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = precomputesMap.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W) as T[];\n if (W !== 1) {\n precomputesMap.set(P, transform(comp));\n }\n }\n return this.wNAF(W, comp, n);\n },\n };\n}\n\n// Generic BasicCurve interface: works even for polynomial fields (BLS): P, n, h would be ok.\n// Though generator can be different (Fp2 / Fp6 for BLS).\nexport type BasicCurve = {\n Fp: IField; // Field over which we'll do calculations (Fp)\n n: bigint; // Curve order, total count of valid points in the field\n nBitLength?: number; // bit length of curve order\n nByteLength?: number; // byte length of curve order\n h: bigint; // cofactor. we can assign default=1, but users will just ignore it w/o validation\n hEff?: bigint; // Number to multiply to clear cofactor\n Gx: T; // base point X coordinate\n Gy: T; // base point Y coordinate\n allowInfinityPoint?: boolean; // bls12-381 requires it. ZERO point is valid, but invalid pubkey\n};\n\nexport function validateBasic(curve: BasicCurve & T) {\n validateField(curve.Fp);\n validateObject(\n curve,\n {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n },\n {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n }\n );\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n } as const);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapperWithSigner = void 0;\r\nconst SwapWithSigner_1 = require(\"./SwapWithSigner\");\r\nclass SwapperWithSigner {\r\n get prices() {\r\n return this.swapper.prices;\r\n }\r\n get intermediaryDiscovery() {\r\n return this.swapper.intermediaryDiscovery;\r\n }\r\n get mempoolApi() {\r\n return this.swapper.mempoolApi;\r\n }\r\n get bitcoinRpc() {\r\n return this.swapper.bitcoinRpc;\r\n }\r\n get bitcoinNetwork() {\r\n return this.swapper.bitcoinNetwork;\r\n }\r\n constructor(swapper, signer) {\r\n this.swapper = swapper;\r\n this.signer = signer;\r\n }\r\n /**\r\n * Returns true if string is a valid bitcoin address\r\n *\r\n * @param addr\r\n */\r\n isValidBitcoinAddress(addr) {\r\n return this.swapper.isValidBitcoinAddress(addr);\r\n }\r\n /**\r\n * Returns true if string is a valid BOLT11 bitcoin lightning invoice WITH AMOUNT\r\n *\r\n * @param lnpr\r\n */\r\n isValidLightningInvoice(lnpr) {\r\n return this.swapper.isValidLightningInvoice(lnpr);\r\n }\r\n /**\r\n * Returns true if string is a valid LNURL (no checking on type is performed)\r\n *\r\n * @param lnurl\r\n */\r\n isValidLNURL(lnurl) {\r\n return this.swapper.isValidLNURL(lnurl);\r\n }\r\n /**\r\n * Returns type and data about an LNURL\r\n *\r\n * @param lnurl\r\n * @param shouldRetry\r\n */\r\n getLNURLTypeAndData(lnurl, shouldRetry) {\r\n return this.swapper.getLNURLTypeAndData(lnurl, shouldRetry);\r\n }\r\n /**\r\n * Returns satoshi value of BOLT11 bitcoin lightning invoice WITH AMOUNT\r\n *\r\n * @param lnpr\r\n */\r\n getLightningInvoiceValue(lnpr) {\r\n return this.swapper.getLightningInvoiceValue(lnpr);\r\n }\r\n /**\r\n * Returns swap bounds (minimums & maximums) for different swap types & tokens\r\n */\r\n getSwapBounds() {\r\n return this.swapper.getSwapBounds();\r\n }\r\n /**\r\n * Returns maximum possible swap amount\r\n *\r\n * @param type Type of the swap\r\n * @param token Token of the swap\r\n */\r\n getMaximum(type, token) {\r\n return this.swapper.getMaximum(type, token);\r\n }\r\n /**\r\n * Returns minimum possible swap amount\r\n *\r\n * @param type Type of swap\r\n * @param token Token of the swap\r\n */\r\n getMinimum(type, token) {\r\n return this.swapper.getMinimum(type, token);\r\n }\r\n /**\r\n * Returns a set of supported tokens by all the intermediaries offering a specific swap service\r\n *\r\n * @param swapType Swap service type to check supported tokens for\r\n */\r\n getSupportedTokens(swapType) {\r\n return this.swapper.getSupportedTokens(swapType);\r\n }\r\n /**\r\n * Returns the set of supported tokens by all the intermediaries we know of offering a specific swapType service\r\n *\r\n * @param swapType Specific swap type for which to obtain supported tokens\r\n */\r\n getSupportedTokenAddresses(swapType) {\r\n return this.swapper.getSupportedTokenAddresses(swapType);\r\n }\r\n createToBTCSwap(tokenAddress, address, amount, confirmationTarget, confirmations, exactIn, additionalParams) {\r\n return this.swapper.createToBTCSwap(this.signer.getAddress(), tokenAddress, address, amount, confirmationTarget, confirmations, exactIn, additionalParams)\r\n .then(swap => (0, SwapWithSigner_1.wrapSwapWithSigner)(swap, this.signer));\r\n }\r\n createToBTCLNSwap(tokenAddress, paymentRequest, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, additionalParams) {\r\n return this.swapper.createToBTCLNSwap(this.signer.getAddress(), tokenAddress, paymentRequest, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, additionalParams)\r\n .then(swap => (0, SwapWithSigner_1.wrapSwapWithSigner)(swap, this.signer));\r\n }\r\n createToBTCLNSwapViaLNURL(tokenAddress, lnurlPay, amount, comment, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, exactIn, additionalParams) {\r\n return this.swapper.createToBTCLNSwapViaLNURL(this.signer.getAddress(), tokenAddress, lnurlPay, amount, comment, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, exactIn, additionalParams)\r\n .then(swap => (0, SwapWithSigner_1.wrapSwapWithSigner)(swap, this.signer));\r\n }\r\n createFromBTCSwap(tokenAddress, amount, exactOut, additionalParams) {\r\n return this.swapper.createFromBTCSwap(this.signer.getAddress(), tokenAddress, amount, exactOut, additionalParams)\r\n .then(swap => (0, SwapWithSigner_1.wrapSwapWithSigner)(swap, this.signer));\r\n }\r\n createFromBTCLNSwap(tokenAddress, amount, exactOut, descriptionHash, additionalParams) {\r\n return this.swapper.createFromBTCLNSwap(this.signer.getAddress(), tokenAddress, amount, exactOut, descriptionHash, additionalParams)\r\n .then(swap => (0, SwapWithSigner_1.wrapSwapWithSigner)(swap, this.signer));\r\n }\r\n createFromBTCLNSwapViaLNURL(tokenAddress, lnurl, amount, exactOut, additionalParams) {\r\n return this.swapper.createFromBTCLNSwapViaLNURL(this.signer.getAddress(), tokenAddress, lnurl, amount, exactOut, additionalParams)\r\n .then(swap => (0, SwapWithSigner_1.wrapSwapWithSigner)(swap, this.signer));\r\n }\r\n createTrustedLNForGasSwap(amount, trustedIntermediaryUrl) {\r\n return this.swapper.createTrustedLNForGasSwap(this.signer.getAddress(), amount, trustedIntermediaryUrl);\r\n }\r\n /**\r\n * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)\r\n * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and\r\n * invoice's pre-set amount is used instead.\r\n *\r\n * @param srcToken Source token of the swap, user pays this token\r\n * @param dstToken Destination token of the swap, user receives this token\r\n * @param amount Amount of the swap\r\n * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)\r\n * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or\r\n * LNURL-withdrawal to withdraw money from\r\n */\r\n create(srcToken, dstToken, amount, exactIn, addressLnurlLightningInvoice) {\r\n return this.swapper.create(this.signer.getAddress(), srcToken, dstToken, amount, exactIn, addressLnurlLightningInvoice)\r\n .then(swap => (0, SwapWithSigner_1.wrapSwapWithSigner)(swap, this.signer));\r\n }\r\n /**\r\n * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address\r\n */\r\n getAllSwaps() {\r\n return this.swapper.getAllSwaps(this.signer.getAddress());\r\n }\r\n /**\r\n * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address\r\n */\r\n getActionableSwaps() {\r\n return this.swapper.getActionableSwaps(this.signer.getAddress());\r\n }\r\n /**\r\n * Returns swaps that are refundable for the specific chain, optionally also for a specific signer's address\r\n */\r\n getRefundableSwaps() {\r\n return this.swapper.getRefundableSwaps(this.signer.getAddress());\r\n }\r\n /**\r\n * Returns swap with a specific id (identifier) on a specific chain and optionally with a signer\r\n */\r\n getSwapById(id) {\r\n return this.swapper.getSwapById(id, this.signer.getAddress());\r\n }\r\n /**\r\n * Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes\r\n */\r\n async _syncSwaps() {\r\n return this.swapper._syncSwaps(this.signer.getAddress());\r\n }\r\n /**\r\n * Returns the token balance of the wallet\r\n */\r\n getBalance(token) {\r\n return this.swapper.getBalance(this.signer.getAddress(), token);\r\n }\r\n /**\r\n * Returns the maximum spendable balance of the wallet, deducting the fee needed to initiate a swap for native balances\r\n */\r\n getSpendableBalance(token, feeMultiplier) {\r\n return this.swapper.getSpendableBalance(this.signer.getAddress(), token, feeMultiplier);\r\n }\r\n /**\r\n * Returns the native token balance of the wallet\r\n */\r\n getNativeBalance() {\r\n return this.swapper.getNativeBalance(this.signer.getAddress());\r\n }\r\n /**\r\n * Returns the address of the native token of the chain\r\n */\r\n getNativeToken() {\r\n return this.swapper.getNativeToken();\r\n }\r\n /**\r\n * Returns the address of the native token's address of the chain\r\n */\r\n getNativeTokenAddress() {\r\n return this.swapper.getNativeTokenAddress();\r\n }\r\n}\r\nexports.SwapperWithSigner = SwapperWithSigner;\r\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createTransferInstruction } from '../instructions/transfer.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Transfer tokens from one account to another\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param source Source account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function transfer(\n connection: Connection,\n payer: Signer,\n source: PublicKey,\n destination: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createTransferInstruction(source, destination, ownerPublicKey, amount, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","import { blob, Layout } from '@solana/buffer-layout';\nimport { PublicKey } from '@solana/web3.js';\nimport { encodeDecode } from './base';\n\nexport const publicKey = (property?: string): Layout => {\n const layout = blob(32, property);\n const { encode, decode } = encodeDecode(layout);\n\n const publicKeyLayout = layout as Layout as Layout;\n\n publicKeyLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return new PublicKey(src);\n };\n\n publicKeyLayout.encode = (publicKey: PublicKey, buffer: Buffer, offset: number) => {\n const src = publicKey.toBuffer();\n return encode(src, buffer, offset);\n };\n\n return publicKeyLayout;\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetEvents = void 0;\r\nconst StarknetModule_1 = require(\"../StarknetModule\");\r\nclass StarknetEvents extends StarknetModule_1.StarknetModule {\r\n constructor() {\r\n super(...arguments);\r\n this.EVENTS_LIMIT = 100;\r\n this.FORWARD_BLOCK_RANGE = 2000;\r\n }\r\n /**\r\n * Returns the all the events occuring in a block range as identified by the contract and keys\r\n *\r\n * @param contract\r\n * @param keys\r\n * @param startBlock\r\n * @param endBlock\r\n * @param abortSignal\r\n */\r\n async getBlockEvents(contract, keys, startBlock, endBlock = startBlock, abortSignal) {\r\n const events = [];\r\n let result = null;\r\n while (result == null || result?.continuation_token != null) {\r\n result = await this.root.provider.getEvents({\r\n address: contract,\r\n from_block: startBlock == null ? \"pending\" : { block_number: startBlock },\r\n to_block: endBlock == null ? \"pending\" : { block_number: endBlock },\r\n keys,\r\n chunk_size: this.EVENTS_LIMIT,\r\n continuation_token: result?.continuation_token\r\n });\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n events.push(...result.events);\r\n }\r\n return events;\r\n }\r\n /**\r\n * Runs a search backwards in time, processing events from a specific contract and keys\r\n *\r\n * @param contract\r\n * @param keys\r\n * @param processor called for every batch of returned signatures, should return a value if the correct signature\r\n * was found, or null if the search should continue\r\n * @param abortSignal\r\n */\r\n async findInEvents(contract, keys, processor, abortSignal) {\r\n const latestBlockNumber = await this.provider.getBlockNumber();\r\n for (let blockNumber = latestBlockNumber; blockNumber >= 0; blockNumber -= this.FORWARD_BLOCK_RANGE) {\r\n const eventsResult = await this.getBlockEvents(contract, keys, Math.max(blockNumber - this.FORWARD_BLOCK_RANGE, 0), blockNumber === latestBlockNumber ? null : blockNumber, abortSignal);\r\n const result = await processor(eventsResult.reverse());\r\n if (result != null)\r\n return result;\r\n }\r\n return null;\r\n }\r\n /**\r\n * Runs a search forwards in time, processing events from a specific contract and keys\r\n *\r\n * @param contract\r\n * @param keys\r\n * @param processor called for every batch of returned signatures, should return a value if the correct signature\r\n * was found, or null if the search should continue\r\n * @param abortSignal\r\n * @param logFetchLimit\r\n */\r\n async findInEventsForward(contract, keys, processor, abortSignal, logFetchLimit) {\r\n if (logFetchLimit == null || logFetchLimit > this.EVENTS_LIMIT)\r\n logFetchLimit = this.EVENTS_LIMIT;\r\n let eventsResult = null;\r\n while (eventsResult == null || eventsResult?.continuation_token != null) {\r\n eventsResult = await this.root.provider.getEvents({\r\n address: contract,\r\n to_block: \"latest\",\r\n keys,\r\n chunk_size: logFetchLimit ?? this.EVENTS_LIMIT,\r\n continuation_token: eventsResult?.continuation_token\r\n });\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n const result = await processor(eventsResult.events);\r\n if (result != null)\r\n return result;\r\n }\r\n return null;\r\n }\r\n}\r\nexports.StarknetEvents = StarknetEvents;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ParamDecoder = void 0;\r\nconst buffer_1 = require(\"buffer\");\r\nclass ParamDecoder {\r\n constructor() {\r\n this.frameHeader = null;\r\n this.frameData = [];\r\n this.frameDataLength = 0;\r\n this.closed = false;\r\n this.params = {};\r\n }\r\n /**\r\n * Called when a frame is fully ready such that it can be parsed\r\n *\r\n * @param data Frame data\r\n * @private\r\n */\r\n onFrameRead(data) {\r\n const obj = JSON.parse(data.toString());\r\n for (let key in obj) {\r\n if (this.params[key] == null) {\r\n this.params[key] = {\r\n promise: Promise.resolve(obj[key]),\r\n resolve: null,\r\n reject: null\r\n };\r\n }\r\n else {\r\n if (this.params[key].resolve != null) {\r\n this.params[key].resolve(obj[key]);\r\n this.params[key].resolve = null;\r\n this.params[key].reject = null;\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Called when data is read from the underlying source\r\n *\r\n * @param data Data that has been read from the underlying source\r\n * @protected\r\n */\r\n onData(data) {\r\n let leavesBuffer = data;\r\n while (leavesBuffer != null && leavesBuffer.length > 0) {\r\n if (this.frameHeader == null) {\r\n if (leavesBuffer.length <= 4) {\r\n this.frameHeader = leavesBuffer;\r\n leavesBuffer = null;\r\n }\r\n else {\r\n this.frameHeader = leavesBuffer.subarray(0, 4);\r\n leavesBuffer = leavesBuffer.subarray(4);\r\n }\r\n }\r\n else if (this.frameHeader.length < 4) {\r\n const requiredLen = 4 - this.frameHeader.length;\r\n if (leavesBuffer.length <= requiredLen) {\r\n this.frameHeader = buffer_1.Buffer.concat([this.frameHeader, leavesBuffer]);\r\n leavesBuffer = null;\r\n }\r\n else {\r\n this.frameHeader = buffer_1.Buffer.concat([this.frameHeader, leavesBuffer.subarray(0, requiredLen)]);\r\n leavesBuffer = leavesBuffer.subarray(requiredLen);\r\n }\r\n }\r\n if (leavesBuffer == null)\r\n continue;\r\n if (this.frameHeader == null || this.frameHeader.length < 4)\r\n continue;\r\n const frameLength = this.frameHeader.readUint32LE();\r\n const requiredLen = frameLength - this.frameDataLength;\r\n if (leavesBuffer.length <= requiredLen) {\r\n this.frameData.push(leavesBuffer);\r\n this.frameDataLength += leavesBuffer.length;\r\n leavesBuffer = null;\r\n }\r\n else {\r\n this.frameData.push(leavesBuffer.subarray(0, requiredLen));\r\n this.frameDataLength += requiredLen;\r\n leavesBuffer = leavesBuffer.subarray(requiredLen);\r\n }\r\n if (frameLength === this.frameDataLength) {\r\n //Message read success\r\n this.onFrameRead(buffer_1.Buffer.concat(this.frameData));\r\n this.frameHeader = null;\r\n this.frameData = [];\r\n this.frameDataLength = 0;\r\n }\r\n }\r\n }\r\n /**\r\n * Called when the underlying source ends/closes/cancels\r\n * @protected\r\n */\r\n onEnd() {\r\n for (let key in this.params) {\r\n if (this.params[key].reject != null) {\r\n this.params[key].reject(new Error(\"EOF before field seen!\"));\r\n }\r\n }\r\n this.closed = true;\r\n }\r\n /**\r\n * Called when an error happens with the underlying stream\r\n *\r\n * @param e Error\r\n * @protected\r\n */\r\n onError(e) {\r\n for (let key in this.params) {\r\n if (this.params[key].reject != null) {\r\n this.params[key].reject(e);\r\n }\r\n }\r\n this.closed = true;\r\n }\r\n getParam(key) {\r\n if (this.params[key] == null) {\r\n if (this.closed)\r\n return Promise.reject(new Error(\"Stream already closed without param received!\"));\r\n let resolve;\r\n let reject;\r\n const promise = new Promise((_resolve, _reject) => {\r\n resolve = _resolve;\r\n reject = _reject;\r\n });\r\n this.params[key] = {\r\n resolve,\r\n reject,\r\n promise\r\n };\r\n }\r\n return this.params[key].promise;\r\n }\r\n}\r\nexports.ParamDecoder = ParamDecoder;\r\n","import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport type { AccountInfo, Commitment, Connection, PublicKey } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenAccountNotFoundError,\n TokenInvalidAccountError,\n TokenInvalidAccountOwnerError,\n TokenInvalidAccountSizeError,\n} from '../errors.js';\nimport { ACCOUNT_TYPE_SIZE, AccountType } from '../extensions/accountType.js';\nimport type { ExtensionType } from '../extensions/extensionType.js';\nimport { getAccountLen } from '../extensions/extensionType.js';\nimport { MULTISIG_SIZE } from './multisig.js';\n\n/** Information about a token account */\nexport interface Account {\n /** Address of the account */\n address: PublicKey;\n /** Mint associated with the account */\n mint: PublicKey;\n /** Owner of the account */\n owner: PublicKey;\n /** Number of tokens the account holds */\n amount: bigint;\n /** Authority that can transfer tokens from the account */\n delegate: PublicKey | null;\n /** Number of tokens the delegate is authorized to transfer */\n delegatedAmount: bigint;\n /** True if the account is initialized */\n isInitialized: boolean;\n /** True if the account is frozen */\n isFrozen: boolean;\n /** True if the account is a native token account */\n isNative: boolean;\n /**\n * If the account is a native token account, it must be rent-exempt. The rent-exempt reserve is the amount that must\n * remain in the balance until the account is closed.\n */\n rentExemptReserve: bigint | null;\n /** Optional authority to close the account */\n closeAuthority: PublicKey | null;\n tlvData: Buffer;\n}\n\n/** Token account state as stored by the program */\nexport enum AccountState {\n Uninitialized = 0,\n Initialized = 1,\n Frozen = 2,\n}\n\n/** Token account as stored by the program */\nexport interface RawAccount {\n mint: PublicKey;\n owner: PublicKey;\n amount: bigint;\n delegateOption: 1 | 0;\n delegate: PublicKey;\n state: AccountState;\n isNativeOption: 1 | 0;\n isNative: bigint;\n delegatedAmount: bigint;\n closeAuthorityOption: 1 | 0;\n closeAuthority: PublicKey;\n}\n\n/** Buffer layout for de/serializing a token account */\nexport const AccountLayout = struct([\n publicKey('mint'),\n publicKey('owner'),\n u64('amount'),\n u32('delegateOption'),\n publicKey('delegate'),\n u8('state'),\n u32('isNativeOption'),\n u64('isNative'),\n u64('delegatedAmount'),\n u32('closeAuthorityOption'),\n publicKey('closeAuthority'),\n]);\n\n/** Byte length of a token account */\nexport const ACCOUNT_SIZE = AccountLayout.span;\n\n/**\n * Retrieve information about a token account\n *\n * @param connection Connection to use\n * @param address Token account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getAccount(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackAccount(address, info, programId);\n}\n\n/**\n * Retrieve information about multiple token accounts in a single RPC call\n *\n * @param connection Connection to use\n * @param addresses Token accounts\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getMultipleAccounts(\n connection: Connection,\n addresses: PublicKey[],\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const infos = await connection.getMultipleAccountsInfo(addresses, commitment);\n return addresses.map((address, i) => unpackAccount(address, infos[i], programId));\n}\n\n/** Get the minimum lamport balance for a base token account to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccount(\n connection: Connection,\n commitment?: Commitment\n): Promise {\n return await getMinimumBalanceForRentExemptAccountWithExtensions(connection, [], commitment);\n}\n\n/** Get the minimum lamport balance for a rent-exempt token account with extensions\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccountWithExtensions(\n connection: Connection,\n extensions: ExtensionType[],\n commitment?: Commitment\n): Promise {\n const accountLen = getAccountLen(extensions);\n return await connection.getMinimumBalanceForRentExemption(accountLen, commitment);\n}\n\n/**\n * Unpack a token account\n *\n * @param address Token account\n * @param info Token account data\n * @param programId SPL Token program account\n *\n * @return Unpacked token account\n */\nexport function unpackAccount(\n address: PublicKey,\n info: AccountInfo | null,\n programId = TOKEN_PROGRAM_ID\n): Account {\n if (!info) throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId)) throw new TokenInvalidAccountOwnerError();\n if (info.data.length < ACCOUNT_SIZE) throw new TokenInvalidAccountSizeError();\n\n const rawAccount = AccountLayout.decode(info.data.slice(0, ACCOUNT_SIZE));\n let tlvData = Buffer.alloc(0);\n if (info.data.length > ACCOUNT_SIZE) {\n if (info.data.length === MULTISIG_SIZE) throw new TokenInvalidAccountSizeError();\n if (info.data[ACCOUNT_SIZE] != AccountType.Account) throw new TokenInvalidAccountError();\n tlvData = info.data.slice(ACCOUNT_SIZE + ACCOUNT_TYPE_SIZE);\n }\n\n return {\n address,\n mint: rawAccount.mint,\n owner: rawAccount.owner,\n amount: rawAccount.amount,\n delegate: rawAccount.delegateOption ? rawAccount.delegate : null,\n delegatedAmount: rawAccount.delegatedAmount,\n isInitialized: rawAccount.state !== AccountState.Uninitialized,\n isFrozen: rawAccount.state === AccountState.Frozen,\n isNative: !!rawAccount.isNativeOption,\n rentExemptReserve: rawAccount.isNativeOption ? rawAccount.isNative : null,\n closeAuthority: rawAccount.closeAuthorityOption ? rawAccount.closeAuthority : null,\n tlvData,\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatDate = formatDate;\n/**\n * Format a {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date | Date} into\n * the {@link https://www.rfc-editor.org/rfc/rfc2616#section-3.3.1 | preferred Internet standard format}\n * defined in {@link https://www.rfc-editor.org/rfc/rfc822#section-5 | RFC822} and\n * updated in {@link https://www.rfc-editor.org/rfc/rfc1123#page-55 | RFC1123}.\n *\n * @example\n * ```\n * formatDate(new Date(0)) === 'Thu, 01 Jan 1970 00:00:00 GMT`\n * ```\n *\n * @param date - the date value to format\n * @public\n */\nfunction formatDate(date) {\n return date.toUTCString();\n}\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bech32m = exports.bech32 = void 0;\nconst ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';\nconst ALPHABET_MAP = {};\nfor (let z = 0; z < ALPHABET.length; z++) {\n const x = ALPHABET.charAt(z);\n ALPHABET_MAP[x] = z;\n}\nfunction polymodStep(pre) {\n const b = pre >> 25;\n return (((pre & 0x1ffffff) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3));\n}\nfunction prefixChk(prefix) {\n let chk = 1;\n for (let i = 0; i < prefix.length; ++i) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n return 'Invalid prefix (' + prefix + ')';\n chk = polymodStep(chk) ^ (c >> 5);\n }\n chk = polymodStep(chk);\n for (let i = 0; i < prefix.length; ++i) {\n const v = prefix.charCodeAt(i);\n chk = polymodStep(chk) ^ (v & 0x1f);\n }\n return chk;\n}\nfunction convert(data, inBits, outBits, pad) {\n let value = 0;\n let bits = 0;\n const maxV = (1 << outBits) - 1;\n const result = [];\n for (let i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i];\n bits += inBits;\n while (bits >= outBits) {\n bits -= outBits;\n result.push((value >> bits) & maxV);\n }\n }\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV);\n }\n }\n else {\n if (bits >= inBits)\n return 'Excess padding';\n if ((value << (outBits - bits)) & maxV)\n return 'Non-zero padding';\n }\n return result;\n}\nfunction toWords(bytes) {\n return convert(bytes, 8, 5, true);\n}\nfunction fromWordsUnsafe(words) {\n const res = convert(words, 5, 8, false);\n if (Array.isArray(res))\n return res;\n}\nfunction fromWords(words) {\n const res = convert(words, 5, 8, false);\n if (Array.isArray(res))\n return res;\n throw new Error(res);\n}\nfunction getLibraryFromEncoding(encoding) {\n let ENCODING_CONST;\n if (encoding === 'bech32') {\n ENCODING_CONST = 1;\n }\n else {\n ENCODING_CONST = 0x2bc830a3;\n }\n function encode(prefix, words, LIMIT) {\n LIMIT = LIMIT || 90;\n if (prefix.length + 7 + words.length > LIMIT)\n throw new TypeError('Exceeds length limit');\n prefix = prefix.toLowerCase();\n // determine chk mod\n let chk = prefixChk(prefix);\n if (typeof chk === 'string')\n throw new Error(chk);\n let result = prefix + '1';\n for (let i = 0; i < words.length; ++i) {\n const x = words[i];\n if (x >> 5 !== 0)\n throw new Error('Non 5-bit word');\n chk = polymodStep(chk) ^ x;\n result += ALPHABET.charAt(x);\n }\n for (let i = 0; i < 6; ++i) {\n chk = polymodStep(chk);\n }\n chk ^= ENCODING_CONST;\n for (let i = 0; i < 6; ++i) {\n const v = (chk >> ((5 - i) * 5)) & 0x1f;\n result += ALPHABET.charAt(v);\n }\n return result;\n }\n function __decode(str, LIMIT) {\n LIMIT = LIMIT || 90;\n if (str.length < 8)\n return str + ' too short';\n if (str.length > LIMIT)\n return 'Exceeds length limit';\n // don't allow mixed case\n const lowered = str.toLowerCase();\n const uppered = str.toUpperCase();\n if (str !== lowered && str !== uppered)\n return 'Mixed-case string ' + str;\n str = lowered;\n const split = str.lastIndexOf('1');\n if (split === -1)\n return 'No separator character for ' + str;\n if (split === 0)\n return 'Missing prefix for ' + str;\n const prefix = str.slice(0, split);\n const wordChars = str.slice(split + 1);\n if (wordChars.length < 6)\n return 'Data too short';\n let chk = prefixChk(prefix);\n if (typeof chk === 'string')\n return chk;\n const words = [];\n for (let i = 0; i < wordChars.length; ++i) {\n const c = wordChars.charAt(i);\n const v = ALPHABET_MAP[c];\n if (v === undefined)\n return 'Unknown character ' + c;\n chk = polymodStep(chk) ^ v;\n // not in the checksum?\n if (i + 6 >= wordChars.length)\n continue;\n words.push(v);\n }\n if (chk !== ENCODING_CONST)\n return 'Invalid checksum for ' + str;\n return { prefix, words };\n }\n function decodeUnsafe(str, LIMIT) {\n const res = __decode(str, LIMIT);\n if (typeof res === 'object')\n return res;\n }\n function decode(str, LIMIT) {\n const res = __decode(str, LIMIT);\n if (typeof res === 'object')\n return res;\n throw new Error(res);\n }\n return {\n decodeUnsafe,\n decode,\n encode,\n toWords,\n fromWordsUnsafe,\n fromWords,\n };\n}\nexports.bech32 = getLibraryFromEncoding('bech32');\nexports.bech32m = getLibraryFromEncoding('bech32m');\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.timeoutSignal = exports.fromHumanReadableString = exports.toHumanReadableString = void 0;\r\nconst sdk_lib_1 = require(\"@atomiqlabs/sdk-lib\");\r\nfunction toHumanReadableString(amount, currencySpec) {\r\n if (amount == null)\r\n return null;\r\n return (0, sdk_lib_1.toDecimal)(amount, currencySpec.decimals, undefined, currencySpec.displayDecimals);\r\n}\r\nexports.toHumanReadableString = toHumanReadableString;\r\nfunction fromHumanReadableString(amount, currencySpec) {\r\n if (amount === \"\" || amount == null)\r\n return null;\r\n return (0, sdk_lib_1.fromDecimal)(amount, currencySpec.decimals);\r\n}\r\nexports.fromHumanReadableString = fromHumanReadableString;\r\n/**\r\n * Returns an abort signal that aborts after a specified timeout in milliseconds\r\n *\r\n * @param timeout Milliseconds to wait\r\n * @param abortReason Abort with this abort reason\r\n * @param abortSignal Abort signal to extend\r\n */\r\nfunction timeoutSignal(timeout, abortReason, abortSignal) {\r\n if (timeout == null)\r\n return abortSignal;\r\n const abortController = new AbortController();\r\n const timeoutHandle = setTimeout(() => abortController.abort(abortReason || new Error(\"Timed out\")), timeout);\r\n if (abortSignal != null) {\r\n abortSignal.addEventListener(\"abort\", () => {\r\n clearTimeout(timeoutHandle);\r\n abortController.abort(abortSignal.reason);\r\n });\r\n }\r\n return abortController.signal;\r\n}\r\nexports.timeoutSignal = timeoutSignal;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapCommitStatus = void 0;\r\nvar SwapCommitStatus;\r\n(function (SwapCommitStatus) {\r\n SwapCommitStatus[SwapCommitStatus[\"EXPIRED\"] = 0] = \"EXPIRED\";\r\n SwapCommitStatus[SwapCommitStatus[\"NOT_COMMITED\"] = 1] = \"NOT_COMMITED\";\r\n SwapCommitStatus[SwapCommitStatus[\"COMMITED\"] = 2] = \"COMMITED\";\r\n SwapCommitStatus[SwapCommitStatus[\"PAID\"] = 3] = \"PAID\";\r\n SwapCommitStatus[SwapCommitStatus[\"REFUNDABLE\"] = 4] = \"REFUNDABLE\";\r\n})(SwapCommitStatus = exports.SwapCommitStatus || (exports.SwapCommitStatus = {}));\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaKeypairWallet = void 0;\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nclass SolanaKeypairWallet {\r\n constructor(payer) {\r\n this.payer = payer;\r\n }\r\n get publicKey() {\r\n return this.payer.publicKey;\r\n }\r\n signAllTransactions(txs) {\r\n txs.forEach((tx) => {\r\n if (tx instanceof web3_js_1.Transaction) {\r\n tx.partialSign(this.payer);\r\n }\r\n else if (tx instanceof web3_js_1.VersionedTransaction) {\r\n tx.sign([this.payer]);\r\n }\r\n });\r\n return Promise.resolve(txs);\r\n }\r\n signTransaction(tx) {\r\n if (tx instanceof web3_js_1.Transaction) {\r\n tx.partialSign(this.payer);\r\n }\r\n else if (tx instanceof web3_js_1.VersionedTransaction) {\r\n tx.sign([this.payer]);\r\n }\r\n return Promise.resolve(tx);\r\n }\r\n}\r\nexports.SolanaKeypairWallet = SolanaKeypairWallet;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface TransferCheckedInstructionData {\n instruction: TokenInstruction.TransferChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const transferCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct a TransferChecked instruction\n *\n * @param source Source account\n * @param mint Mint account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferCheckedInstruction(\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(transferCheckedInstructionData.span);\n transferCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.TransferChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid TransferChecked instruction */\nexport interface DecodedTransferCheckedInstruction {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n mint: AccountMeta;\n destination: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.TransferChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a TransferChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedTransferCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { source, mint, destination, owner, multiSigners },\n data,\n } = decodeTransferCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.TransferChecked) throw new TokenInvalidInstructionTypeError();\n if (!source || !mint || !destination || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated TransferChecked instruction */\nexport interface DecodedTransferCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n source: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a TransferChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferCheckedInstructionUnchecked({\n programId,\n keys: [source, mint, destination, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedTransferCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n owner,\n multiSigners,\n },\n data: transferCheckedInstructionData.decode(data),\n };\n}\n","export * from './actions.js';\nexport * from './instructions.js';\nexport * from './seeds.js';\nexport * from './state.js';\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Intermediary = void 0;\r\nconst SwapType_1 = require(\"../swaps/SwapType\");\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nclass Intermediary {\r\n constructor(url, addresses, services, reputation = {}) {\r\n this.reputation = {};\r\n this.liquidity = {};\r\n this.url = url;\r\n this.addresses = addresses;\r\n this.services = services;\r\n this.reputation = reputation;\r\n }\r\n /**\r\n * Returns tokens supported by the intermediary, optionally constrained to the specific swap types\r\n *\r\n * @param chainIdentifier\r\n * @param swapTypesArr\r\n * @private\r\n */\r\n getSupportedTokens(chainIdentifier, swapTypesArr = [\r\n SwapType_1.SwapType.TO_BTC,\r\n SwapType_1.SwapType.TO_BTCLN,\r\n SwapType_1.SwapType.FROM_BTC,\r\n SwapType_1.SwapType.FROM_BTCLN\r\n ]) {\r\n const swapTypes = new Set(swapTypesArr);\r\n let tokens = new Set();\r\n swapTypes.forEach((swapType) => {\r\n if (this.services[swapType] != null &&\r\n this.services[swapType].chainTokens != null &&\r\n this.services[swapType].chainTokens[chainIdentifier] != null)\r\n this.services[swapType].chainTokens[chainIdentifier].forEach(token => tokens.add(token));\r\n });\r\n return tokens;\r\n }\r\n /**\r\n * Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token\r\n *\r\n * @param chainIdentifier\r\n * @param swapContract\r\n * @param tokens\r\n * @param abortSignal\r\n */\r\n async getReputation(chainIdentifier, swapContract, tokens, abortSignal) {\r\n const checkReputationTokens = tokens == null ?\r\n this.getSupportedTokens(chainIdentifier, [SwapType_1.SwapType.TO_BTC, SwapType_1.SwapType.TO_BTCLN]) :\r\n new Set(tokens);\r\n const promises = [];\r\n const reputation = {};\r\n for (let token of checkReputationTokens) {\r\n promises.push((0, Utils_1.tryWithRetries)(() => swapContract.getIntermediaryReputation(this.getAddress(chainIdentifier), token), null, null, abortSignal).then(result => {\r\n reputation[token] = result;\r\n }));\r\n }\r\n await Promise.all(promises);\r\n this.reputation ??= {};\r\n this.reputation[chainIdentifier] ??= {};\r\n for (let key in reputation) {\r\n this.reputation[chainIdentifier][key] = reputation[key];\r\n }\r\n return reputation;\r\n }\r\n /**\r\n * Fetches, returns and saves the liquidity of the intermediaryfor a specific token\r\n *\r\n * @param chainIdentifier\r\n * @param swapContract\r\n * @param token\r\n * @param abortSignal\r\n */\r\n async getLiquidity(chainIdentifier, swapContract, token, abortSignal) {\r\n const result = await (0, Utils_1.tryWithRetries)(() => swapContract.getBalance(this.getAddress(chainIdentifier), token, true), null, null, abortSignal);\r\n this.liquidity ??= {};\r\n this.liquidity[chainIdentifier] ??= {};\r\n this.liquidity[chainIdentifier][token] = result;\r\n return result;\r\n }\r\n supportsChain(chainIdentifier) {\r\n if (this.addresses[chainIdentifier] == null)\r\n return false;\r\n return this.getSupportedTokens(chainIdentifier).size !== 0;\r\n }\r\n getAddress(chainIdentifier) {\r\n return this.addresses[chainIdentifier];\r\n }\r\n}\r\nexports.Intermediary = Intermediary;\r\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nmodule.exports = adler32;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MemoryCookieStore = void 0;\nconst pathMatch_1 = require(\"./pathMatch\");\nconst permuteDomain_1 = require(\"./permuteDomain\");\nconst store_1 = require(\"./store\");\nconst utils_1 = require(\"./utils\");\n/**\n * An in-memory {@link Store} implementation for {@link CookieJar}. This is the default implementation used by\n * {@link CookieJar} and supports both async and sync operations. Also supports serialization, getAllCookies, and removeAllCookies.\n * @public\n */\nclass MemoryCookieStore extends store_1.Store {\n /**\n * Create a new {@link MemoryCookieStore}.\n */\n constructor() {\n super();\n this.synchronous = true;\n this.idx = Object.create(null);\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n findCookie(domain, path, key, callback) {\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n if (domain == null || path == null || key == null) {\n return promiseCallback.resolve(undefined);\n }\n const result = this.idx[domain]?.[path]?.[key];\n return promiseCallback.resolve(result);\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n findCookies(domain, path, allowSpecialUseDomain = false, callback) {\n if (typeof allowSpecialUseDomain === 'function') {\n callback = allowSpecialUseDomain;\n // TODO: It's weird that `allowSpecialUseDomain` defaults to false with no callback,\n // but true with a callback. This is legacy behavior from v4.\n allowSpecialUseDomain = true;\n }\n const results = [];\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n if (!domain) {\n return promiseCallback.resolve([]);\n }\n let pathMatcher;\n if (!path) {\n // null means \"all paths\"\n pathMatcher = function matchAll(domainIndex) {\n for (const curPath in domainIndex) {\n const pathIndex = domainIndex[curPath];\n for (const key in pathIndex) {\n const value = pathIndex[key];\n if (value) {\n results.push(value);\n }\n }\n }\n };\n }\n else {\n pathMatcher = function matchRFC(domainIndex) {\n //NOTE: we should use path-match algorithm from S5.1.4 here\n //(see : https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/canonical_cookie.cc#L299)\n for (const cookiePath in domainIndex) {\n if ((0, pathMatch_1.pathMatch)(path, cookiePath)) {\n const pathIndex = domainIndex[cookiePath];\n for (const key in pathIndex) {\n const value = pathIndex[key];\n if (value) {\n results.push(value);\n }\n }\n }\n }\n };\n }\n const domains = (0, permuteDomain_1.permuteDomain)(domain, allowSpecialUseDomain) || [domain];\n const idx = this.idx;\n domains.forEach((curDomain) => {\n const domainIndex = idx[curDomain];\n if (!domainIndex) {\n return;\n }\n pathMatcher(domainIndex);\n });\n return promiseCallback.resolve(results);\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n putCookie(cookie, callback) {\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n const { domain, path, key } = cookie;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (domain == null || path == null || key == null) {\n return promiseCallback.resolve(undefined);\n }\n const domainEntry = this.idx[domain] ??\n Object.create(null);\n this.idx[domain] = domainEntry;\n const pathEntry = domainEntry[path] ??\n Object.create(null);\n domainEntry[path] = pathEntry;\n pathEntry[key] = cookie;\n return promiseCallback.resolve(undefined);\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n updateCookie(_oldCookie, newCookie, callback) {\n // updateCookie() may avoid updating cookies that are identical. For example,\n // lastAccessed may not be important to some stores and an equality\n // comparison could exclude that field.\n // Don't return a value when using a callback, so that the return type is truly \"void\"\n if (callback)\n this.putCookie(newCookie, callback);\n else\n return this.putCookie(newCookie);\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n removeCookie(domain, path, key, callback) {\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n delete this.idx[domain]?.[path]?.[key];\n return promiseCallback.resolve(undefined);\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n removeCookies(domain, path, callback) {\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n const domainEntry = this.idx[domain];\n if (domainEntry) {\n if (path) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete domainEntry[path];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.idx[domain];\n }\n }\n return promiseCallback.resolve(undefined);\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n removeAllCookies(callback) {\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n this.idx = Object.create(null);\n return promiseCallback.resolve(undefined);\n }\n /**\n * @internal No doc because this is an overload that supports the implementation\n */\n getAllCookies(callback) {\n const promiseCallback = (0, utils_1.createPromiseCallback)(callback);\n const cookies = [];\n const idx = this.idx;\n const domains = Object.keys(idx);\n domains.forEach((domain) => {\n const domainEntry = idx[domain] ?? {};\n const paths = Object.keys(domainEntry);\n paths.forEach((path) => {\n const pathEntry = domainEntry[path] ?? {};\n const keys = Object.keys(pathEntry);\n keys.forEach((key) => {\n const keyEntry = pathEntry[key];\n if (keyEntry != null) {\n cookies.push(keyEntry);\n }\n });\n });\n });\n // Sort by creationIndex so deserializing retains the creation order.\n // When implementing your own store, this SHOULD retain the order too\n cookies.sort((a, b) => {\n return (a.creationIndex || 0) - (b.creationIndex || 0);\n });\n return promiseCallback.resolve(cookies);\n }\n}\nexports.MemoryCookieStore = MemoryCookieStore;\n","/** Base class for errors */\nexport abstract class TokenError extends Error {\n constructor(message?: string) {\n super(message);\n }\n}\n\n/** Thrown if an account is not found at the expected address */\nexport class TokenAccountNotFoundError extends TokenError {\n name = 'TokenAccountNotFoundError';\n}\n\n/** Thrown if a program state account is not a valid Account */\nexport class TokenInvalidAccountError extends TokenError {\n name = 'TokenInvalidAccountError';\n}\n\n/** Thrown if a program state account does not contain valid data */\nexport class TokenInvalidAccountDataError extends TokenError {\n name = 'TokenInvalidAccountDataError';\n}\n\n/** Thrown if a program state account is not owned by the expected token program */\nexport class TokenInvalidAccountOwnerError extends TokenError {\n name = 'TokenInvalidAccountOwnerError';\n}\n\n/** Thrown if the byte length of an program state account doesn't match the expected size */\nexport class TokenInvalidAccountSizeError extends TokenError {\n name = 'TokenInvalidAccountSizeError';\n}\n\n/** Thrown if the mint of a token account doesn't match the expected mint */\nexport class TokenInvalidMintError extends TokenError {\n name = 'TokenInvalidMintError';\n}\n\n/** Thrown if the owner of a token account doesn't match the expected owner */\nexport class TokenInvalidOwnerError extends TokenError {\n name = 'TokenInvalidOwnerError';\n}\n\n/** Thrown if the owner of a token account is a PDA (Program Derived Address) */\nexport class TokenOwnerOffCurveError extends TokenError {\n name = 'TokenOwnerOffCurveError';\n}\n\n/** Thrown if an instruction's program is invalid */\nexport class TokenInvalidInstructionProgramError extends TokenError {\n name = 'TokenInvalidInstructionProgramError';\n}\n\n/** Thrown if an instruction's keys are invalid */\nexport class TokenInvalidInstructionKeysError extends TokenError {\n name = 'TokenInvalidInstructionKeysError';\n}\n\n/** Thrown if an instruction's data is invalid */\nexport class TokenInvalidInstructionDataError extends TokenError {\n name = 'TokenInvalidInstructionDataError';\n}\n\n/** Thrown if an instruction's type is invalid */\nexport class TokenInvalidInstructionTypeError extends TokenError {\n name = 'TokenInvalidInstructionTypeError';\n}\n\n/** Thrown if the program does not support the desired instruction */\nexport class TokenUnsupportedInstructionError extends TokenError {\n name = 'TokenUnsupportedInstructionError';\n}\n\n/** Thrown if the transfer hook extra accounts contains an invalid account index */\nexport class TokenTransferHookAccountNotFound extends TokenError {\n name = 'TokenTransferHookAccountNotFound';\n}\n\n/** Thrown if the transfer hook extra accounts contains an invalid seed */\nexport class TokenTransferHookInvalidSeed extends TokenError {\n name = 'TokenTransferHookInvalidSeed';\n}\n\n/** Thrown if account data required by an extra account meta seed config could not be fetched */\nexport class TokenTransferHookAccountDataNotFound extends TokenError {\n name = 'TokenTransferHookAccountDataNotFound';\n}\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = require('./trees');\nconst adler32 = require('./adler32');\nconst crc32 = require('./crc32');\nconst msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_PARTIAL_FLUSH, Z_FULL_FLUSH, Z_FINISH, Z_BLOCK,\n Z_OK, Z_STREAM_END, Z_STREAM_ERROR, Z_DATA_ERROR, Z_BUF_ERROR,\n Z_DEFAULT_COMPRESSION,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY,\n Z_UNKNOWN,\n Z_DEFLATED\n} = require('./constants');\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES = 30;\n/* number of distance codes */\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42; /* zlib header -> BUSY_STATE */\n//#ifdef GZIP\nconst GZIP_STATE = 57; /* gzip header -> BUSY_STATE | EXTRA_STATE */\n//#endif\nconst EXTRA_STATE = 69; /* gzip extra block -> NAME_STATE */\nconst NAME_STATE = 73; /* gzip file name -> COMMENT_STATE */\nconst COMMENT_STATE = 91; /* gzip comment -> HCRC_STATE */\nconst HCRC_STATE = 103; /* gzip header CRC -> BUSY_STATE */\nconst BUSY_STATE = 113; /* deflate -> FINISH_STATE */\nconst FINISH_STATE = 666; /* stream complete */\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = msg[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) * 2) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n/* ===========================================================================\n * Slide the hash table when sliding the window down (could be avoided with 32\n * bit values at the expense of memory usage). We slide even when level == 0 to\n * keep the hash table consistent if we switch back to level > 0 later.\n */\nconst slide_hash = (s) => {\n let n, m;\n let p;\n let wsize = s.w_size;\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= wsize ? m - wsize : 0);\n } while (--n);\n n = wsize;\n//#ifndef FASTEST\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= wsize ? m - wsize : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n//#endif\n};\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output, except for\n * some deflate_stored() output, goes through this function so some\n * applications may wish to modify it to avoid allocating a large\n * strm->next_out buffer and copying into it. (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let n, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n slide_hash(s);\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n *\n * In case deflateParams() is used to later switch to a non-zero compression\n * level, s->matches (otherwise unused when storing) keeps track of the number\n * of hash table slides to perform. If s->matches is 1, then one hash table\n * slide will be done when switching. If s->matches is 2, the maximum value\n * allowed here, then the hash table will be cleared, since two or more slides\n * is the same as a clear.\n *\n * deflate_stored() is written to minimize the number of times an input byte is\n * copied. It is most efficient with large input and output buffers, which\n * maximizes the opportunites to have a single copy from next_in to next_out.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Smallest worthy block size when not flushing or finishing. By default\n * this is 32K. This can be as small as 507 bytes for memLevel == 1. For\n * large input and output buffers, the stored block size will be larger.\n */\n let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;\n\n /* Copy as many min_block or larger stored blocks directly to next_out as\n * possible. If flushing, copy the remaining available input to next_out as\n * stored blocks, if there is enough space.\n */\n let len, left, have, last = 0;\n let used = s.strm.avail_in;\n do {\n /* Set len to the maximum size block that we can copy directly with the\n * available input data and output space. Set left to how much of that\n * would be copied from what's left in the window.\n */\n len = 65535/* MAX_STORED */; /* maximum deflate stored block length */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n if (s.strm.avail_out < have) { /* need room for header */\n break;\n }\n /* maximum stored block length that will fit in avail_out: */\n have = s.strm.avail_out - have;\n left = s.strstart - s.block_start; /* bytes left in window */\n if (len > left + s.strm.avail_in) {\n len = left + s.strm.avail_in; /* limit len to the input */\n }\n if (len > have) {\n len = have; /* limit len to the output */\n }\n\n /* If the stored block would be less than min_block in length, or if\n * unable to copy all of the available input when flushing, then try\n * copying to the window and the pending buffer instead. Also don't\n * write an empty block when flushing -- deflate() does that.\n */\n if (len < min_block && ((len === 0 && flush !== Z_FINISH) ||\n flush === Z_NO_FLUSH ||\n len !== left + s.strm.avail_in)) {\n break;\n }\n\n /* Make a dummy stored block in pending to get the header bytes,\n * including any pending bits. This also updates the debugging counts.\n */\n last = flush === Z_FINISH && len === left + s.strm.avail_in ? 1 : 0;\n _tr_stored_block(s, 0, 0, last);\n\n /* Replace the lengths in the dummy stored block with len. */\n s.pending_buf[s.pending - 4] = len;\n s.pending_buf[s.pending - 3] = len >> 8;\n s.pending_buf[s.pending - 2] = ~len;\n s.pending_buf[s.pending - 1] = ~len >> 8;\n\n /* Write the stored block header bytes. */\n flush_pending(s.strm);\n\n//#ifdef ZLIB_DEBUG\n// /* Update debugging counts for the data about to be copied. */\n// s->compressed_len += len << 3;\n// s->bits_sent += len << 3;\n//#endif\n\n /* Copy uncompressed bytes from the window to next_out. */\n if (left) {\n if (left > len) {\n left = len;\n }\n //zmemcpy(s->strm->next_out, s->window + s->block_start, left);\n s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);\n s.strm.next_out += left;\n s.strm.avail_out -= left;\n s.strm.total_out += left;\n s.block_start += left;\n len -= left;\n }\n\n /* Copy uncompressed bytes directly from next_in to next_out, updating\n * the check value.\n */\n if (len) {\n read_buf(s.strm, s.strm.output, s.strm.next_out, len);\n s.strm.next_out += len;\n s.strm.avail_out -= len;\n s.strm.total_out += len;\n }\n } while (last === 0);\n\n /* Update the sliding window with the last s->w_size bytes of the copied\n * data, or append all of the copied data to the existing window if less\n * than s->w_size bytes were copied. Also update the number of bytes to\n * insert in the hash tables, in the event that deflateParams() switches to\n * a non-zero compression level.\n */\n used -= s.strm.avail_in; /* number of input bytes directly copied */\n if (used) {\n /* If any input was used, then no unused input remains in the window,\n * therefore s->block_start == s->strstart.\n */\n if (used >= s.w_size) { /* supplant the previous history */\n s.matches = 2; /* clear hash */\n //zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);\n s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);\n s.strstart = s.w_size;\n s.insert = s.strstart;\n }\n else {\n if (s.window_size - s.strstart <= used) {\n /* Slide the window down. */\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n //zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);\n s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);\n s.strstart += used;\n s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;\n }\n s.block_start = s.strstart;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* If the last block was written to next_out, then done. */\n if (last) {\n return BS_FINISH_DONE;\n }\n\n /* If flushing and all input has been consumed, then done. */\n if (flush !== Z_NO_FLUSH && flush !== Z_FINISH &&\n s.strm.avail_in === 0 && s.strstart === s.block_start) {\n return BS_BLOCK_DONE;\n }\n\n /* Fill the window with any remaining input. */\n have = s.window_size - s.strstart;\n if (s.strm.avail_in > have && s.block_start >= s.w_size) {\n /* Slide the window down. */\n s.block_start -= s.w_size;\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n have += s.w_size; /* more space now */\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n if (have > s.strm.avail_in) {\n have = s.strm.avail_in;\n }\n if (have) {\n read_buf(s.strm, s.window, s.strstart, have);\n s.strstart += have;\n s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* There was not enough avail_out to write a complete worthy or flushed\n * stored block to next_out. Write a stored block to pending instead, if we\n * have enough input for a worthy block, or if flushing and there is enough\n * room for the remaining input as a stored block in the pending buffer.\n */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n /* maximum stored block length that will fit in pending: */\n have = s.pending_buf_size - have > 65535/* MAX_STORED */ ? 65535/* MAX_STORED */ : s.pending_buf_size - have;\n min_block = have > s.w_size ? s.w_size : have;\n left = s.strstart - s.block_start;\n if (left >= min_block ||\n ((left || flush === Z_FINISH) && flush !== Z_NO_FLUSH &&\n s.strm.avail_in === 0 && left <= have)) {\n len = left > have ? have : left;\n last = flush === Z_FINISH && s.strm.avail_in === 0 &&\n len === left ? 1 : 0;\n _tr_stored_block(s, s.block_start, len, last);\n s.block_start += len;\n flush_pending(s.strm);\n }\n\n /* We've done all we can with the available input and output. */\n return last ? BS_FINISH_STARTED : BS_NEED_MORE;\n};\n\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.sym_buf = 0; /* buffer for distances and literals/lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.sym_next = 0; /* running index in sym_buf */\n this.sym_end = 0; /* symbol table full when sym_next reaches this */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\n/* =========================================================================\n * Check for a valid deflate stream state. Return 0 if ok, 1 if not.\n */\nconst deflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const s = strm.state;\n if (!s || s.strm !== strm || (s.status !== INIT_STATE &&\n//#ifdef GZIP\n s.status !== GZIP_STATE &&\n//#endif\n s.status !== EXTRA_STATE &&\n s.status !== NAME_STATE &&\n s.status !== COMMENT_STATE &&\n s.status !== HCRC_STATE &&\n s.status !== BUSY_STATE &&\n s.status !== FINISH_STATE)) {\n return 1;\n }\n return 0;\n};\n\n\nconst deflateResetKeep = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status =\n//#ifdef GZIP\n s.wrap === 2 ? GZIP_STATE :\n//#endif\n s.wrap ? INIT_STATE : BUSY_STATE;\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = -2;\n _tr_init(s);\n return Z_OK;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (deflateStateCheck(strm) || strm.state.wrap !== 2) {\n return Z_STREAM_ERROR;\n }\n strm.state.gzhead = head;\n return Z_OK;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED || (windowBits === 8 && wrap !== 1)) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n s.status = INIT_STATE; /* to pass state test in deflateReset() */\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n /* We overlay pending_buf and sym_buf. This works since the average size\n * for length/distance pairs over any compressed block is assured to be 31\n * bits or less.\n *\n * Analysis: The longest fixed codes are a length code of 8 bits plus 5\n * extra bits, for lengths 131 to 257. The longest fixed distance codes are\n * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest\n * possible fixed-codes length/distance pair is then 31 bits total.\n *\n * sym_buf starts one-fourth of the way into pending_buf. So there are\n * three bytes in sym_buf for every four bytes in pending_buf. Each symbol\n * in sym_buf is three bytes -- two for the distance and one for the\n * literal/length. As each symbol is consumed, the pointer to the next\n * sym_buf value to read moves forward three bytes. From that symbol, up to\n * 31 bits are written to pending_buf. The closest the written pending_buf\n * bits gets to the next sym_buf symbol to read is just before the last\n * code is written. At that time, 31*(n-2) bits have been written, just\n * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at\n * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1\n * symbols are written.) The closest the writing gets to what is unread is\n * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and\n * can range from 128 to 32768.\n *\n * Therefore, at a minimum, there are 142 bits of space between what is\n * written and what is read in the overlain buffers, so the symbols cannot\n * be overwritten by the compressed data. That space is actually 139 bits,\n * due to the three-bit fixed-code block header.\n *\n * That covers the case where either Z_FIXED is specified, forcing fixed\n * codes, or when the use of fixed codes is chosen, because that choice\n * results in a smaller compressed block than dynamic codes. That latter\n * condition then assures that the above analysis also covers all dynamic\n * blocks. A dynamic-code block will only be chosen to be emitted if it has\n * fewer bits than a fixed-code block would for the same set of symbols.\n * Therefore its average symbol length is assured to be less than 31. So\n * the compressed data for a dynamic block also cannot overwrite the\n * symbols from which it is being constructed.\n */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->sym_buf = s->pending_buf + s->lit_bufsize;\n s.sym_buf = s.lit_bufsize;\n\n //s->sym_end = (s->lit_bufsize - 1) * 3;\n s.sym_end = (s.lit_bufsize - 1) * 3;\n /* We avoid equality with lit_bufsize*3 because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n};\n\n\n/* ========================================================================= */\nconst deflate = (strm, flush) => {\n\n if (deflateStateCheck(strm) || flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (strm.avail_in !== 0 && !strm.input) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Write the header */\n if (s.status === INIT_STATE && s.wrap === 0) {\n s.status = BUSY_STATE;\n }\n if (s.status === INIT_STATE) {\n /* zlib header */\n let header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n }\n//#ifdef GZIP\n if (s.status === GZIP_STATE) {\n /* gzip header */\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let left = (s.gzhead.extra.length & 0xffff) - s.gzindex;\n while (s.pending + left > s.pending_buf_size) {\n let copy = s.pending_buf_size - s.pending;\n // zmemcpy(s.pending_buf + s.pending,\n // s.gzhead.extra + s.gzindex, copy);\n s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);\n s.pending = s.pending_buf_size;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex += copy;\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n beg = 0;\n left -= copy;\n }\n // JS specific: s.gzhead.extra may be TypedArray or Array for backward compatibility\n // TypedArray.slice and TypedArray.from don't exist in IE10-IE11\n let gzhead_extra = new Uint8Array(s.gzhead.extra);\n // zmemcpy(s->pending_buf + s->pending,\n // s->gzhead->extra + s->gzindex, left);\n s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);\n s.pending += left;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = NAME_STATE;\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = COMMENT_STATE;\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n }\n s.status = HCRC_STATE;\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n }\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n }\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n }\n//#endif\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n let bstate = s.level === 0 ? deflate_stored(s, flush) :\n s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :\n s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush);\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR;\n }\n\n const status = strm.state.status;\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n};\n\n\nmodule.exports.deflateInit = deflateInit;\nmodule.exports.deflateInit2 = deflateInit2;\nmodule.exports.deflateReset = deflateReset;\nmodule.exports.deflateResetKeep = deflateResetKeep;\nmodule.exports.deflateSetHeader = deflateSetHeader;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateEnd = deflateEnd;\nmodule.exports.deflateSetDictionary = deflateSetDictionary;\nmodule.exports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateGetDictionary = deflateGetDictionary;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaEvents = void 0;\r\nconst SolanaModule_1 = require(\"../SolanaModule\");\r\nclass SolanaEvents extends SolanaModule_1.SolanaModule {\r\n constructor() {\r\n super(...arguments);\r\n this.LOG_FETCH_LIMIT = 500;\r\n }\r\n /**\r\n * Gets the signatures for a given topicKey public key, if lastProcessedSignature is specified, it fetches only\r\n * the signatures before this signature\r\n *\r\n * @param topicKey\r\n * @param logFetchLimit\r\n * @param lastProcessedSignature\r\n * @private\r\n */\r\n getSignatures(topicKey, logFetchLimit, lastProcessedSignature) {\r\n if (lastProcessedSignature == null) {\r\n return this.connection.getSignaturesForAddress(topicKey, {\r\n limit: logFetchLimit,\r\n }, \"confirmed\");\r\n }\r\n else {\r\n return this.connection.getSignaturesForAddress(topicKey, {\r\n before: lastProcessedSignature,\r\n limit: logFetchLimit\r\n }, \"confirmed\");\r\n }\r\n }\r\n /**\r\n * Runs a search backwards in time, processing transaction signatures for a specific topic public key\r\n *\r\n * @param topicKey\r\n * @param processor called for every batch of returned signatures, should return a value if the correct signature\r\n * was found, or null if the search should continue\r\n * @param abortSignal\r\n * @param logFetchLimit\r\n */\r\n async findInSignatures(topicKey, processor, abortSignal, logFetchLimit) {\r\n if (logFetchLimit == null || logFetchLimit > this.LOG_FETCH_LIMIT)\r\n logFetchLimit = this.LOG_FETCH_LIMIT;\r\n let signatures = null;\r\n while (signatures == null || signatures.length > 0) {\r\n signatures = await this.getSignatures(topicKey, logFetchLimit, signatures != null ? signatures[signatures.length - 1].signature : null);\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n const result = await processor(signatures);\r\n if (result != null)\r\n return result;\r\n if (signatures.length < logFetchLimit)\r\n break;\r\n }\r\n return null;\r\n }\r\n}\r\nexports.SolanaEvents = SolanaEvents;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n",null,"\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaInitializer = exports.initializeSolana = void 0;\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nconst SolanaFees_1 = require(\"./base/modules/SolanaFees\");\r\nconst SolanaBtcRelay_1 = require(\"./btcrelay/SolanaBtcRelay\");\r\nconst SolanaChains_1 = require(\"./SolanaChains\");\r\nconst SolanaSwapProgram_1 = require(\"./swaps/SolanaSwapProgram\");\r\nconst SolanaChainEventsBrowser_1 = require(\"./events/SolanaChainEventsBrowser\");\r\nconst SolanaSwapData_1 = require(\"./swaps/SolanaSwapData\");\r\nconst chainId = \"SOLANA\";\r\nconst SolanaAssets = {\r\n WBTC: {\r\n address: \"3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh\",\r\n decimals: 8\r\n },\r\n USDC: {\r\n address: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\r\n decimals: 6\r\n },\r\n USDT: {\r\n address: \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\r\n decimals: 6\r\n },\r\n SOL: {\r\n address: \"So11111111111111111111111111111111111111112\",\r\n decimals: 9\r\n },\r\n BONK: {\r\n address: \"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263\",\r\n decimals: 5\r\n }\r\n};\r\nfunction initializeSolana(options, bitcoinRpc, network, storageCtor) {\r\n const connection = typeof (options.rpcUrl) === \"string\" ?\r\n new web3_js_1.Connection(options.rpcUrl) :\r\n options.rpcUrl;\r\n const Fees = options.fees ?? new SolanaFees_1.SolanaFees(connection, 200000, 4, 100);\r\n const btcRelay = new SolanaBtcRelay_1.SolanaBtcRelay(connection, bitcoinRpc, options.btcRelayContract ?? SolanaChains_1.SolanaChains[network].addresses.btcRelayContract, Fees);\r\n const swapContract = new SolanaSwapProgram_1.SolanaSwapProgram(connection, btcRelay, options.dataAccountStorage || storageCtor(\"solAccounts\"), options.swapContract ?? SolanaChains_1.SolanaChains[network].addresses.swapContract, options.retryPolicy ?? { transactionResendInterval: 1000 }, Fees);\r\n const chainEvents = new SolanaChainEventsBrowser_1.SolanaChainEventsBrowser(connection, swapContract);\r\n return {\r\n chainId,\r\n btcRelay,\r\n swapContract,\r\n chainEvents,\r\n swapDataConstructor: SolanaSwapData_1.SolanaSwapData,\r\n //These are defined here to keep the data from old SolLightning-sdk, not needed for other chains\r\n storagePrefix: \"SOLv4-\" + network + \"-\"\r\n };\r\n}\r\nexports.initializeSolana = initializeSolana;\r\nexports.SolanaInitializer = {\r\n chainId,\r\n chainType: null,\r\n initializer: initializeSolana,\r\n tokens: SolanaAssets,\r\n options: null\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InitializeEvent = void 0;\r\nconst SwapEvent_1 = require(\"./SwapEvent\");\r\nclass InitializeEvent extends SwapEvent_1.SwapEvent {\r\n constructor(escrowHash, swapType, swapData) {\r\n super(escrowHash);\r\n this.swapType = swapType;\r\n this.swapData = swapData;\r\n }\r\n}\r\nexports.InitializeEvent = InitializeEvent;\r\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetBtcHeader = void 0;\r\nconst buffer_1 = require(\"buffer\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst createHash = require(\"create-hash\");\r\nclass StarknetBtcHeader {\r\n constructor(obj) {\r\n this.reversed_version = Number(obj.reversed_version);\r\n this.previous_blockhash = obj.previous_blockhash.map(val => Number(val));\r\n this.merkle_root = obj.merkle_root.map(val => Number(val));\r\n this.reversed_timestamp = Number(obj.reversed_timestamp);\r\n this.nbits = Number(obj.nbits);\r\n this.nonce = Number(obj.nonce);\r\n this.hash = obj.hash;\r\n }\r\n getMerkleRoot() {\r\n return (0, Utils_1.u32ArrayToBuffer)(this.merkle_root);\r\n }\r\n getNbits() {\r\n return (0, Utils_1.u32ReverseEndianness)(this.nbits);\r\n }\r\n getNonce() {\r\n return (0, Utils_1.u32ReverseEndianness)(this.nonce);\r\n }\r\n getReversedPrevBlockhash() {\r\n return (0, Utils_1.u32ArrayToBuffer)(this.previous_blockhash);\r\n }\r\n getTimestamp() {\r\n return (0, Utils_1.u32ReverseEndianness)(this.reversed_timestamp);\r\n }\r\n getVersion() {\r\n return (0, Utils_1.u32ReverseEndianness)(this.reversed_version);\r\n }\r\n getHash() {\r\n if (this.hash != null)\r\n return this.hash;\r\n const buffer = buffer_1.Buffer.alloc(80);\r\n buffer.writeUInt32BE(this.reversed_version);\r\n (0, Utils_1.u32ArrayToBuffer)(this.previous_blockhash).copy(buffer, 4);\r\n (0, Utils_1.u32ArrayToBuffer)(this.merkle_root).copy(buffer, 36);\r\n buffer.writeUInt32BE(this.reversed_timestamp, 68);\r\n buffer.writeUInt32BE(this.nbits, 72);\r\n buffer.writeUInt32BE(this.nonce, 76);\r\n return createHash(\"sha256\").update(createHash(\"sha256\").update(buffer).digest()).digest();\r\n }\r\n serialize() {\r\n return [\r\n this.reversed_version,\r\n ...this.previous_blockhash,\r\n ...this.merkle_root,\r\n this.reversed_timestamp,\r\n this.nbits,\r\n this.nonce\r\n ];\r\n }\r\n static fromSerializedFeltArray(span) {\r\n const reversed_version = (0, Utils_1.toHex)(span.shift());\r\n const previous_blockhash = span.splice(0, 8).map(Utils_1.toHex);\r\n const merkle_root = span.splice(0, 8).map(Utils_1.toHex);\r\n const reversed_timestamp = (0, Utils_1.toHex)(span.shift());\r\n const nbits = (0, Utils_1.toHex)(span.shift());\r\n const nonce = (0, Utils_1.toHex)(span.shift());\r\n return new StarknetBtcHeader({\r\n reversed_version,\r\n previous_blockhash,\r\n merkle_root,\r\n reversed_timestamp,\r\n nbits,\r\n nonce\r\n });\r\n }\r\n}\r\nexports.StarknetBtcHeader = StarknetBtcHeader;\r\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, Signer } from '@solana/web3.js';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** Authority types defined by the program */\nexport enum AuthorityType {\n MintTokens = 0,\n FreezeAccount = 1,\n AccountOwner = 2,\n CloseAccount = 3,\n TransferFeeConfig = 4,\n WithheldWithdraw = 5,\n CloseMint = 6,\n InterestRate = 7,\n PermanentDelegate = 8,\n ConfidentialTransferMint = 9,\n TransferHookProgramId = 10,\n ConfidentialTransferFeeConfig = 11,\n MetadataPointer = 12,\n}\n\n/** TODO: docs */\nexport interface SetAuthorityInstructionData {\n instruction: TokenInstruction.SetAuthority;\n authorityType: AuthorityType;\n newAuthorityOption: 1 | 0;\n newAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const setAuthorityInstructionData = struct([\n u8('instruction'),\n u8('authorityType'),\n u8('newAuthorityOption'),\n publicKey('newAuthority'),\n]);\n\n/**\n * Construct a SetAuthority instruction\n *\n * @param account Address of the token account\n * @param currentAuthority Current authority of the specified type\n * @param authorityType Type of authority to set\n * @param newAuthority New authority of the account\n * @param multiSigners Signing accounts if `currentAuthority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createSetAuthorityInstruction(\n account: PublicKey,\n currentAuthority: PublicKey,\n authorityType: AuthorityType,\n newAuthority: PublicKey | null,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], currentAuthority, multiSigners);\n\n const data = Buffer.alloc(setAuthorityInstructionData.span);\n setAuthorityInstructionData.encode(\n {\n instruction: TokenInstruction.SetAuthority,\n authorityType,\n newAuthorityOption: newAuthority ? 1 : 0,\n newAuthority: newAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid SetAuthority instruction */\nexport interface DecodedSetAuthorityInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n currentAuthority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.SetAuthority;\n authorityType: AuthorityType;\n newAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode a SetAuthority instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeSetAuthorityInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedSetAuthorityInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== setAuthorityInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, currentAuthority, multiSigners },\n data,\n } = decodeSetAuthorityInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.SetAuthority) throw new TokenInvalidInstructionTypeError();\n if (!account || !currentAuthority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n currentAuthority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated SetAuthority instruction */\nexport interface DecodedSetAuthorityInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n currentAuthority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n authorityType: AuthorityType;\n newAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode a SetAuthority instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeSetAuthorityInstructionUnchecked({\n programId,\n keys: [account, currentAuthority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedSetAuthorityInstructionUnchecked {\n const { instruction, authorityType, newAuthorityOption, newAuthority } = setAuthorityInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n account,\n currentAuthority,\n multiSigners,\n },\n data: {\n instruction,\n authorityType,\n newAuthority: newAuthorityOption ? newAuthority : null,\n },\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ParamEncoder = void 0;\r\nconst buffer_1 = require(\"buffer\");\r\nclass ParamEncoder {\r\n constructor(write, end) {\r\n this.writeFN = write;\r\n this.endFN = end;\r\n }\r\n /**\r\n * Write a set of parameters to the underlying sink\r\n *\r\n * @param data\r\n */\r\n writeParams(data) {\r\n const serialized = buffer_1.Buffer.from(JSON.stringify(data));\r\n const frameLengthBuffer = buffer_1.Buffer.alloc(4);\r\n frameLengthBuffer.writeUint32LE(serialized.length);\r\n return this.writeFN(buffer_1.Buffer.concat([\r\n frameLengthBuffer,\r\n serialized\r\n ]));\r\n }\r\n /**\r\n * Cancels the underlying sink and encoder\r\n */\r\n end() {\r\n return this.endFN();\r\n }\r\n}\r\nexports.ParamEncoder = ParamEncoder;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaAddresses = void 0;\r\nconst SolanaModule_1 = require(\"../SolanaModule\");\r\nconst web3_js_1 = require(\"@solana/web3.js\");\r\nclass SolanaAddresses extends SolanaModule_1.SolanaModule {\r\n ///////////////////\r\n //// Address utils\r\n /**\r\n * Checks whether an address is a valid Solana address (base58 encoded ed25519 public key)\r\n *\r\n * @param address\r\n */\r\n isValidAddress(address) {\r\n try {\r\n return web3_js_1.PublicKey.isOnCurve(address);\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n}\r\nexports.SolanaAddresses = SolanaAddresses;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_flash_on_outline = void 0;\nvar ic_flash_on_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M7 2v11h3v9l7-12h-4l3-8z\"\n },\n \"children\": []\n }]\n};\nexports.ic_flash_on_outline = ic_flash_on_outline;","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SignatureVerificationError = void 0;\r\nclass SignatureVerificationError extends Error {\r\n constructor(msg) {\r\n super(msg);\r\n // Set the prototype explicitly.\r\n Object.setPrototypeOf(this, SignatureVerificationError.prototype);\r\n }\r\n}\r\nexports.SignatureVerificationError = SignatureVerificationError;\r\n","export * from './associatedTokenAccount.js';\nexport * from './decode.js';\nexport * from './types.js';\n\nexport * from './initializeMint.js'; // 0\nexport * from './initializeAccount.js'; // 1\nexport * from './initializeMultisig.js'; // 2\nexport * from './transfer.js'; // 3\nexport * from './approve.js'; // 4\nexport * from './revoke.js'; // 5\nexport * from './setAuthority.js'; // 6\nexport * from './mintTo.js'; // 7\nexport * from './burn.js'; // 8\nexport * from './closeAccount.js'; // 9\nexport * from './freezeAccount.js'; // 10\nexport * from './thawAccount.js'; // 11\nexport * from './transferChecked.js'; // 12\nexport * from './approveChecked.js'; // 13\nexport * from './mintToChecked.js'; // 14\nexport * from './burnChecked.js'; // 15\nexport * from './initializeAccount2.js'; // 16\nexport * from './syncNative.js'; // 17\nexport * from './initializeAccount3.js'; // 18\nexport * from './initializeMultisig2.js'; // 19\nexport * from './initializeMint2.js'; // 20\nexport * from './initializeImmutableOwner.js'; // 22\nexport * from './amountToUiAmount.js'; // 23\nexport * from './uiAmountToAmount.js'; // 24\nexport * from './initializeMintCloseAuthority.js'; // 25\nexport * from './reallocate.js'; // 29\nexport * from './createNativeMint.js'; // 31\nexport * from './initializeNonTransferableMint.js'; // 32\nexport * from './initializePermanentDelegate.js'; // 35\n","/**\n * Special language-specific overrides.\n *\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n *\n * @type {Object}\n */\nvar LANGUAGES = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n '\\u0130': '\\u0069',\n '\\u0049': '\\u0131',\n '\\u0049\\u0307': '\\u0069'\n }\n },\n az: {\n regexp: /[\\u0130]/g,\n map: {\n '\\u0130': '\\u0069',\n '\\u0049': '\\u0131',\n '\\u0049\\u0307': '\\u0069'\n }\n },\n lt: {\n regexp: /[\\u0049\\u004A\\u012E\\u00CC\\u00CD\\u0128]/g,\n map: {\n '\\u0049': '\\u0069\\u0307',\n '\\u004A': '\\u006A\\u0307',\n '\\u012E': '\\u012F\\u0307',\n '\\u00CC': '\\u0069\\u0307\\u0300',\n '\\u00CD': '\\u0069\\u0307\\u0301',\n '\\u0128': '\\u0069\\u0307\\u0303'\n }\n }\n}\n\n/**\n * Lowercase a string.\n *\n * @param {String} str\n * @return {String}\n */\nmodule.exports = function (str, locale) {\n var lang = LANGUAGES[locale]\n\n str = str == null ? '' : String(str)\n\n if (lang) {\n str = str.replace(lang.regexp, function (m) { return lang.map[m] })\n }\n\n return str.toLowerCase()\n}\n","import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { createDisableCpiGuardInstruction, createEnableCpiGuardInstruction } from './instructions.js';\n\n/**\n * Enable CPI Guard on the given account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to modify\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function enableCpiGuard(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n owner: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createEnableCpiGuardInstruction(account, ownerPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Disable CPI Guard on the given account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to modify\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function disableCpiGuard(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n owner: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createDisableCpiGuardInstruction(account, ownerPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\n/**\n * The version of `tough-cookie`\n * @public\n */\nexports.version = '5.1.2';\n","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface MintToCheckedInstructionData {\n instruction: TokenInstruction.MintToChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const mintToCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct a MintToChecked instruction\n *\n * @param mint Public key of the mint\n * @param destination Address of the token account to mint to\n * @param authority The mint authority\n * @param amount Amount to mint\n * @param decimals Number of decimals in amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createMintToCheckedInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(mintToCheckedInstructionData.span);\n mintToCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.MintToChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid MintToChecked instruction */\nexport interface DecodedMintToCheckedInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.MintToChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a MintToChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeMintToCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedMintToCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== mintToCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, multiSigners },\n data,\n } = decodeMintToCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.MintToChecked) throw new TokenInvalidInstructionTypeError();\n if (!mint || !destination || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated MintToChecked instruction */\nexport interface DecodedMintToCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a MintToChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeMintToCheckedInstructionUnchecked({\n programId,\n keys: [mint, destination, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedMintToCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data: mintToCheckedInstructionData.decode(data),\n };\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaProgramEvents = void 0;\r\nconst SolanaEvents_1 = require(\"../../base/modules/SolanaEvents\");\r\nconst anchor_1 = require(\"@coral-xyz/anchor\");\r\nclass SolanaProgramEvents extends SolanaEvents_1.SolanaEvents {\r\n constructor(root) {\r\n super(root);\r\n this.root = root;\r\n this.programCoder = new anchor_1.BorshCoder(root.program.idl);\r\n this.eventParser = new anchor_1.EventParser(root.program.programId, this.programCoder);\r\n this.nameMappedInstructions = {};\r\n for (let ix of root.program.idl.instructions) {\r\n this.nameMappedInstructions[ix.name] = ix;\r\n }\r\n }\r\n /**\r\n * Gets events from specific transaction as specified by signature, events are ordered from newest to oldest\r\n *\r\n * @param signature\r\n * @private\r\n */\r\n async getEvents(signature) {\r\n const tx = await this.connection.getTransaction(signature, {\r\n commitment: \"confirmed\",\r\n maxSupportedTransactionVersion: 0\r\n });\r\n if (tx.meta.err)\r\n return [];\r\n const events = this.parseLogs(tx.meta.logMessages);\r\n events.reverse();\r\n return events;\r\n }\r\n /**\r\n * Runs a search backwards in time, processing the events for a specific topic public key\r\n *\r\n * @param topicKey\r\n * @param processor called for every event, should return a value if the correct event was found, or null\r\n * if the search should continue\r\n * @param abortSignal\r\n * @param logBatchSize how many signatures should be fetched in one getSignaturesForAddress call\r\n */\r\n findInEvents(topicKey, processor, abortSignal, logBatchSize) {\r\n return this.findInSignatures(topicKey, async (signatures) => {\r\n for (let data of signatures) {\r\n for (let event of await this.getEvents(data.signature)) {\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n const result = await processor(event);\r\n if (result != null)\r\n return result;\r\n }\r\n }\r\n }, abortSignal, logBatchSize);\r\n }\r\n /**\r\n * Decodes the instructions for this program from the transaction, leaves null in the returned instructions array\r\n * for every instruction that doesn't correspond to this program (as those are impossible to parse)\r\n *\r\n * @param transactionMessage\r\n */\r\n decodeInstructions(transactionMessage) {\r\n const instructions = [];\r\n for (let _ix of transactionMessage.instructions) {\r\n if (!_ix.programId.equals(this.root.program.programId)) {\r\n instructions.push(null);\r\n continue;\r\n }\r\n const ix = _ix;\r\n if (ix.data == null)\r\n continue;\r\n const parsedIx = this.programCoder.instruction.decode(ix.data, 'base58');\r\n const accountsData = this.nameMappedInstructions[parsedIx.name];\r\n let accounts;\r\n if (accountsData != null && accountsData.accounts != null) {\r\n accounts = {};\r\n for (let i = 0; i < accountsData.accounts.length; i++) {\r\n accounts[accountsData.accounts[i].name] = ix.accounts[i];\r\n }\r\n }\r\n instructions.push({\r\n name: parsedIx.name,\r\n data: parsedIx.data,\r\n accounts: accounts\r\n });\r\n }\r\n return instructions;\r\n }\r\n /**\r\n * Parses program event related to this program from transaction logs\r\n *\r\n * @param logs\r\n */\r\n parseLogs(logs) {\r\n const eventsGenerator = this.eventParser.parseLogs(logs);\r\n const events = [];\r\n for (let log of eventsGenerator) {\r\n events.push(log);\r\n }\r\n return events;\r\n }\r\n}\r\nexports.SolanaProgramEvents = SolanaProgramEvents;\r\n",null,"import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey, u64 } from '@solana/buffer-layout-utils';\nimport type { AccountInfo, Commitment, Connection } from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n TokenInvalidAccountSizeError,\n TokenInvalidMintError,\n TokenOwnerOffCurveError,\n} from '../errors.js';\nimport { ACCOUNT_TYPE_SIZE, AccountType } from '../extensions/accountType.js';\nimport type { ExtensionType } from '../extensions/extensionType.js';\nimport { getMintLen } from '../extensions/extensionType.js';\nimport { ACCOUNT_SIZE } from './account.js';\nimport { MULTISIG_SIZE } from './multisig.js';\n\n/** Information about a mint */\nexport interface Mint {\n /** Address of the mint */\n address: PublicKey;\n /**\n * Optional authority used to mint new tokens. The mint authority may only be provided during mint creation.\n * If no mint authority is present then the mint has a fixed supply and no further tokens may be minted.\n */\n mintAuthority: PublicKey | null;\n /** Total supply of tokens */\n supply: bigint;\n /** Number of base 10 digits to the right of the decimal place */\n decimals: number;\n /** Is this mint initialized */\n isInitialized: boolean;\n /** Optional authority to freeze token accounts */\n freezeAuthority: PublicKey | null;\n /** Additional data for extension */\n tlvData: Buffer;\n}\n\n/** Mint as stored by the program */\nexport interface RawMint {\n mintAuthorityOption: 1 | 0;\n mintAuthority: PublicKey;\n supply: bigint;\n decimals: number;\n isInitialized: boolean;\n freezeAuthorityOption: 1 | 0;\n freezeAuthority: PublicKey;\n}\n\n/** Buffer layout for de/serializing a mint */\nexport const MintLayout = struct([\n u32('mintAuthorityOption'),\n publicKey('mintAuthority'),\n u64('supply'),\n u8('decimals'),\n bool('isInitialized'),\n u32('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n\n/** Byte length of a mint */\nexport const MINT_SIZE = MintLayout.span;\n\n/**\n * Retrieve information about a mint\n *\n * @param connection Connection to use\n * @param address Mint account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Mint information\n */\nexport async function getMint(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackMint(address, info, programId);\n}\n\n/**\n * Unpack a mint\n *\n * @param address Mint account\n * @param info Mint account data\n * @param programId SPL Token program account\n *\n * @return Unpacked mint\n */\nexport function unpackMint(address: PublicKey, info: AccountInfo | null, programId = TOKEN_PROGRAM_ID): Mint {\n if (!info) throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId)) throw new TokenInvalidAccountOwnerError();\n if (info.data.length < MINT_SIZE) throw new TokenInvalidAccountSizeError();\n\n const rawMint = MintLayout.decode(info.data.slice(0, MINT_SIZE));\n let tlvData = Buffer.alloc(0);\n if (info.data.length > MINT_SIZE) {\n if (info.data.length <= ACCOUNT_SIZE) throw new TokenInvalidAccountSizeError();\n if (info.data.length === MULTISIG_SIZE) throw new TokenInvalidAccountSizeError();\n if (info.data[ACCOUNT_SIZE] != AccountType.Mint) throw new TokenInvalidMintError();\n tlvData = info.data.slice(ACCOUNT_SIZE + ACCOUNT_TYPE_SIZE);\n }\n\n return {\n address,\n mintAuthority: rawMint.mintAuthorityOption ? rawMint.mintAuthority : null,\n supply: rawMint.supply,\n decimals: rawMint.decimals,\n isInitialized: rawMint.isInitialized,\n freezeAuthority: rawMint.freezeAuthorityOption ? rawMint.freezeAuthority : null,\n tlvData,\n };\n}\n\n/** Get the minimum lamport balance for a mint to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMint(\n connection: Connection,\n commitment?: Commitment\n): Promise {\n return await getMinimumBalanceForRentExemptMintWithExtensions(connection, [], commitment);\n}\n\n/** Get the minimum lamport balance for a rent-exempt mint with extensions\n *\n * @param connection Connection to use\n * @param extensions Extension types included in the mint\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMintWithExtensions(\n connection: Connection,\n extensions: ExtensionType[],\n commitment?: Commitment\n): Promise {\n const mintLen = getMintLen(extensions);\n return await connection.getMinimumBalanceForRentExemption(mintLen, commitment);\n}\n\n/**\n * Async version of getAssociatedTokenAddressSync\n * For backwards compatibility\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Promise containing the address of the associated token account\n */\nexport async function getAssociatedTokenAddress(\n mint: PublicKey,\n owner: PublicKey,\n allowOwnerOffCurve = false,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new TokenOwnerOffCurveError();\n\n const [address] = await PublicKey.findProgramAddress(\n [owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],\n associatedTokenProgramId\n );\n\n return address;\n}\n\n/**\n * Get the address of the associated token account for a given mint and owner\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the associated token account\n */\nexport function getAssociatedTokenAddressSync(\n mint: PublicKey,\n owner: PublicKey,\n allowOwnerOffCurve = false,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): PublicKey {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new TokenOwnerOffCurveError();\n\n const [address] = PublicKey.findProgramAddressSync(\n [owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],\n associatedTokenProgramId\n );\n\n return address;\n}\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IntermediaryDiscovery = exports.SwapHandlerType = void 0;\r\nconst Intermediary_1 = require(\"./Intermediary\");\r\nconst SwapType_1 = require(\"../swaps/SwapType\");\r\nconst events_1 = require(\"events\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nconst IntermediaryAPI_1 = require(\"./IntermediaryAPI\");\r\nvar SwapHandlerType;\r\n(function (SwapHandlerType) {\r\n SwapHandlerType[\"TO_BTC\"] = \"TO_BTC\";\r\n SwapHandlerType[\"FROM_BTC\"] = \"FROM_BTC\";\r\n SwapHandlerType[\"TO_BTCLN\"] = \"TO_BTCLN\";\r\n SwapHandlerType[\"FROM_BTCLN\"] = \"FROM_BTCLN\";\r\n SwapHandlerType[\"FROM_BTC_TRUSTED\"] = \"FROM_BTC_TRUSTED\";\r\n SwapHandlerType[\"FROM_BTCLN_TRUSTED\"] = \"FROM_BTCLN_TRUSTED\";\r\n})(SwapHandlerType = exports.SwapHandlerType || (exports.SwapHandlerType = {}));\r\n/**\r\n * Converts SwapHandlerType (represented as string & used in REST API communication with intermediaries) to regular\r\n * SwapType\r\n *\r\n * @param swapHandlerType\r\n */\r\nfunction swapHandlerTypeToSwapType(swapHandlerType) {\r\n switch (swapHandlerType) {\r\n case SwapHandlerType.FROM_BTC:\r\n return SwapType_1.SwapType.FROM_BTC;\r\n case SwapHandlerType.TO_BTC:\r\n return SwapType_1.SwapType.TO_BTC;\r\n case SwapHandlerType.FROM_BTCLN:\r\n return SwapType_1.SwapType.FROM_BTCLN;\r\n case SwapHandlerType.TO_BTCLN:\r\n return SwapType_1.SwapType.TO_BTCLN;\r\n case SwapHandlerType.FROM_BTC_TRUSTED:\r\n return SwapType_1.SwapType.TRUSTED_FROM_BTC;\r\n case SwapHandlerType.FROM_BTCLN_TRUSTED:\r\n return SwapType_1.SwapType.TRUSTED_FROM_BTCLN;\r\n }\r\n}\r\n/**\r\n * A default intermediary comparator, only takes to announced fee into consideration\r\n *\r\n * @param swapType\r\n * @param tokenAddress\r\n * @param swapAmount\r\n */\r\nfunction getIntermediaryComparator(swapType, tokenAddress, swapAmount) {\r\n if (swapType === SwapType_1.SwapType.TO_BTC) {\r\n //TODO: Also take reputation into account\r\n }\r\n return (a, b) => {\r\n if (swapAmount == null) {\r\n return a.services[swapType].swapFeePPM - b.services[swapType].swapFeePPM;\r\n }\r\n else {\r\n const feeA = BigInt(a.services[swapType].swapBaseFee) + (swapAmount * BigInt(a.services[swapType].swapFeePPM) / 1000000n);\r\n const feeB = BigInt(b.services[swapType].swapBaseFee) + (swapAmount * BigInt(b.services[swapType].swapFeePPM) / 1000000n);\r\n return feeA - feeB > 0n ? 1 : feeA === feeB ? 0 : -1;\r\n }\r\n };\r\n}\r\nconst logger = (0, Utils_1.getLogger)(\"IntermediaryDiscovery: \");\r\nconst REGISTRY_URL = \"https://api.github.com/repos/adambor/SolLightning-registry/contents/registry.json?ref=main\";\r\n//To allow for legacy responses from not-yet updated LPs\r\nconst DEFAULT_CHAIN = \"SOLANA\";\r\nclass IntermediaryDiscovery extends events_1.EventEmitter {\r\n constructor(swapContracts, registryUrl = REGISTRY_URL, nodeUrls, httpRequestTimeout) {\r\n super();\r\n this.intermediaries = [];\r\n this.swapContracts = swapContracts;\r\n this.registryUrl = registryUrl;\r\n this.overrideNodeUrls = nodeUrls;\r\n this.httpRequestTimeout = httpRequestTimeout;\r\n }\r\n /**\r\n * Fetches the URLs of swap intermediaries from registry or from a pre-defined array of node urls\r\n *\r\n * @param abortSignal\r\n */\r\n async getIntermediaryUrls(abortSignal) {\r\n if (this.overrideNodeUrls != null && this.overrideNodeUrls.length > 0) {\r\n return this.overrideNodeUrls;\r\n }\r\n const response = await (0, Utils_1.httpGet)(this.registryUrl, this.httpRequestTimeout, abortSignal);\r\n const content = response.content.replace(new RegExp(\"\\\\n\", \"g\"), \"\");\r\n return JSON.parse(buffer_1.Buffer.from(content, \"base64\").toString());\r\n }\r\n /**\r\n * Returns data as reported by a specific node (as identified by its URL)\r\n *\r\n * @param url\r\n * @param abortSignal\r\n */\r\n async getNodeInfo(url, abortSignal) {\r\n const response = await IntermediaryAPI_1.IntermediaryAPI.getIntermediaryInfo(url);\r\n //Handle legacy responses\r\n if (response.chains == null)\r\n response.chains = {\r\n [DEFAULT_CHAIN]: { address: response.address, signature: response.signature }\r\n };\r\n const addresses = {};\r\n for (let chain in response.chains) {\r\n if (this.swapContracts[chain] != null) {\r\n const { signature, address } = response.chains[chain];\r\n await this.swapContracts[chain].isValidDataSignature(buffer_1.Buffer.from(response.envelope), signature, address);\r\n addresses[chain] = address;\r\n }\r\n }\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n //Handle legacy responses\r\n const info = JSON.parse(response.envelope);\r\n for (let swapType in info.services) {\r\n const serviceData = info.services[swapType];\r\n if (serviceData.chainTokens == null)\r\n serviceData.chainTokens = {\r\n [DEFAULT_CHAIN]: serviceData.tokens\r\n };\r\n }\r\n return {\r\n addresses,\r\n info\r\n };\r\n }\r\n async loadIntermediary(url, abortSignal) {\r\n try {\r\n const nodeInfo = await this.getNodeInfo(url, abortSignal);\r\n const services = {};\r\n for (let key in nodeInfo.info.services) {\r\n services[swapHandlerTypeToSwapType(key)] = nodeInfo.info.services[key];\r\n }\r\n return new Intermediary_1.Intermediary(url, nodeInfo.addresses, services);\r\n }\r\n catch (e) {\r\n logger.error(\"fetchIntermediaries(): Error contacting intermediary \" + url + \": \", e);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Fetches data about all intermediaries in the network, pinging every one of them and ensuring they are online\r\n *\r\n * @param abortSignal\r\n * @private\r\n * @throws {Error} When no online intermediary was found\r\n */\r\n async fetchIntermediaries(abortSignal) {\r\n const urls = await this.getIntermediaryUrls(abortSignal);\r\n logger.debug(\"fetchIntermediaries(): Pinging intermediaries: \", urls.join());\r\n const promises = urls.map(url => this.loadIntermediary(url, abortSignal));\r\n const activeNodes = (await Promise.all(promises)).filter(intermediary => intermediary != null);\r\n if (activeNodes.length === 0)\r\n throw new Error(\"No online intermediary found!\");\r\n return activeNodes;\r\n }\r\n /**\r\n * Returns the intermediary at the provided URL, either from the already fetched list of LPs or fetches the data on-demand\r\n *\r\n * @param url\r\n */\r\n getIntermediary(url) {\r\n const foundLp = this.intermediaries.find(lp => lp.url === url);\r\n if (foundLp != null)\r\n return Promise.resolve(foundLp);\r\n return this.loadIntermediary(url);\r\n }\r\n /**\r\n * Reloads the saves a list of intermediaries\r\n * @param abortSignal\r\n */\r\n async reloadIntermediaries(abortSignal) {\r\n const fetchedIntermediaries = await (0, Utils_1.tryWithRetries)(() => this.fetchIntermediaries(abortSignal), null, null, abortSignal);\r\n this.intermediaries = fetchedIntermediaries;\r\n this.emit(\"added\", fetchedIntermediaries);\r\n logger.info(\"reloadIntermediaries(): Using active intermediaries: \", fetchedIntermediaries.map(lp => lp.url).join());\r\n }\r\n /**\r\n * Initializes the discovery by fetching/reloading intermediaries\r\n *\r\n * @param abortSignal\r\n */\r\n init(abortSignal) {\r\n logger.info(\"init(): Initializing with registryUrl: \" + this.registryUrl + \" intermediary array: \" + (this.overrideNodeUrls || []).join());\r\n return this.reloadIntermediaries(abortSignal);\r\n }\r\n getMultichainSwapBounds() {\r\n const bounds = {};\r\n this.intermediaries.forEach(intermediary => {\r\n for (let swapType in intermediary.services) {\r\n const swapService = intermediary.services[swapType];\r\n bounds[swapType] ??= {};\r\n const multichainBounds = bounds[swapType];\r\n for (let chainId in swapService.chainTokens) {\r\n multichainBounds[chainId] ??= {};\r\n const tokenBounds = multichainBounds[chainId];\r\n for (let token of swapService.chainTokens[chainId]) {\r\n const tokenMinMax = tokenBounds[token];\r\n if (tokenMinMax == null) {\r\n tokenBounds[token] = {\r\n min: BigInt(swapService.min),\r\n max: BigInt(swapService.max)\r\n };\r\n }\r\n else {\r\n tokenMinMax.min = (0, Utils_1.bigIntMin)(tokenMinMax.min, BigInt(swapService.min));\r\n tokenMinMax.max = (0, Utils_1.bigIntMax)(tokenMinMax.max, BigInt(swapService.max));\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return bounds;\r\n }\r\n /**\r\n * Returns aggregate swap bounds (in sats - BTC) as indicated by the intermediaries\r\n */\r\n getSwapBounds(chainIdentifier) {\r\n const bounds = {};\r\n this.intermediaries.forEach(intermediary => {\r\n for (let swapType in intermediary.services) {\r\n const swapService = intermediary.services[swapType];\r\n if (bounds[swapType] == null)\r\n bounds[swapType] = {};\r\n const tokenBounds = bounds[swapType];\r\n if (swapService.chainTokens != null && swapService.chainTokens[chainIdentifier] != null) {\r\n for (let token of swapService.chainTokens[chainIdentifier]) {\r\n const tokenMinMax = tokenBounds[token];\r\n if (tokenMinMax == null) {\r\n tokenBounds[token] = {\r\n min: BigInt(swapService.min),\r\n max: BigInt(swapService.max)\r\n };\r\n }\r\n else {\r\n tokenMinMax.min = (0, Utils_1.bigIntMin)(tokenMinMax.min, BigInt(swapService.min));\r\n tokenMinMax.max = (0, Utils_1.bigIntMax)(tokenMinMax.max, BigInt(swapService.max));\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return bounds;\r\n }\r\n /**\r\n * Returns the aggregate swap minimum (in sats - BTC) for a specific swap type & token\r\n * as indicated by the intermediaries\r\n *\r\n * @param chainIdentifier\r\n * @param swapType\r\n * @param token\r\n */\r\n getSwapMinimum(chainIdentifier, swapType, token) {\r\n const tokenStr = token.toString();\r\n return this.intermediaries.reduce((prevMin, intermediary) => {\r\n const swapService = intermediary.services[swapType];\r\n if (swapService != null &&\r\n swapService.chainTokens != null &&\r\n swapService.chainTokens[chainIdentifier] != null &&\r\n swapService.chainTokens[chainIdentifier].includes(tokenStr))\r\n return prevMin == null ? swapService.min : Math.min(prevMin, swapService.min);\r\n return prevMin;\r\n }, null);\r\n }\r\n /**\r\n * Returns the aggregate swap maximum (in sats - BTC) for a specific swap type & token\r\n * as indicated by the intermediaries\r\n *\r\n * @param chainIdentifier\r\n * @param swapType\r\n * @param token\r\n */\r\n getSwapMaximum(chainIdentifier, swapType, token) {\r\n const tokenStr = token.toString();\r\n return this.intermediaries.reduce((prevMax, intermediary) => {\r\n const swapService = intermediary.services[swapType];\r\n if (swapService != null &&\r\n swapService.chainTokens != null &&\r\n swapService.chainTokens[chainIdentifier] != null &&\r\n swapService.chainTokens[chainIdentifier].includes(tokenStr))\r\n return prevMax == null ? swapService.max : Math.max(prevMax, swapService.max);\r\n return prevMax;\r\n }, null);\r\n }\r\n /**\r\n * Returns swap candidates for a specific swap type & token address\r\n *\r\n * @param chainIdentifier\r\n * @param swapType\r\n * @param tokenAddress\r\n * @param amount Amount to be swapped in sats - BTC\r\n * @param count How many intermediaries to return at most\r\n */\r\n getSwapCandidates(chainIdentifier, swapType, tokenAddress, amount, count) {\r\n const candidates = this.intermediaries.filter(e => {\r\n const swapService = e.services[swapType];\r\n if (swapService == null)\r\n return false;\r\n if (amount != null && amount < BigInt(swapService.min))\r\n return false;\r\n if (amount != null && amount > BigInt(swapService.max))\r\n return false;\r\n if (swapService.chainTokens == null)\r\n return false;\r\n if (swapService.chainTokens[chainIdentifier] == null)\r\n return false;\r\n if (!swapService.chainTokens[chainIdentifier].includes(tokenAddress.toString()))\r\n return false;\r\n return true;\r\n });\r\n candidates.sort(getIntermediaryComparator(swapType, tokenAddress, amount));\r\n if (count == null) {\r\n return candidates;\r\n }\r\n else {\r\n return candidates.slice(0, count);\r\n }\r\n }\r\n /**\r\n * Removes a specific intermediary from the list of active intermediaries (used for blacklisting)\r\n *\r\n * @param intermediary\r\n */\r\n removeIntermediary(intermediary) {\r\n const index = this.intermediaries.indexOf(intermediary);\r\n if (index >= 0) {\r\n logger.info(\"removeIntermediary(): Removing intermediary: \" + intermediary.url);\r\n this.intermediaries.splice(index, 1);\r\n this.emit(\"removed\", [intermediary]);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nexports.IntermediaryDiscovery = IntermediaryDiscovery;\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_play_circle_outline = void 0;\nvar ic_play_circle_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M10 16.5l6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n },\n \"children\": []\n }]\n};\nexports.ic_play_circle_outline = ic_play_circle_outline;",null,"\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LnForGasWrapper = void 0;\r\nconst LnForGasSwap_1 = require(\"./LnForGasSwap\");\r\nconst ISwapWrapper_1 = require(\"../../ISwapWrapper\");\r\nconst TrustedIntermediaryAPI_1 = require(\"../../../intermediaries/TrustedIntermediaryAPI\");\r\nconst bolt11_1 = require(\"@atomiqlabs/bolt11\");\r\nconst IntermediaryError_1 = require(\"../../../errors/IntermediaryError\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nclass LnForGasWrapper extends ISwapWrapper_1.ISwapWrapper {\r\n constructor() {\r\n super(...arguments);\r\n this.TYPE = SwapType_1.SwapType.TRUSTED_FROM_BTCLN;\r\n this.swapDeserializer = LnForGasSwap_1.LnForGasSwap;\r\n this.pendingSwapStates = [LnForGasSwap_1.LnForGasSwapState.PR_CREATED];\r\n this.tickSwapState = null;\r\n }\r\n /**\r\n * Returns a newly created swap, receiving 'amount' on lightning network\r\n *\r\n * @param signer\r\n * @param amount Amount you wish to receive in base units (satoshis)\r\n * @param lpOrUrl Intermediary/Counterparty swap service Intermediary object or raw url\r\n */\r\n async create(signer, amount, lpOrUrl) {\r\n if (!this.isInitialized)\r\n throw new Error(\"Not initialized, call init() first!\");\r\n const lpUrl = typeof (lpOrUrl) === \"string\" ? lpOrUrl : lpOrUrl.url;\r\n const token = this.contract.getNativeCurrencyAddress();\r\n const resp = await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.initTrustedFromBTCLN(this.chainIdentifier, lpUrl, {\r\n address: signer,\r\n amount,\r\n token\r\n }, this.options.getRequestTimeout);\r\n const decodedPr = (0, bolt11_1.decode)(resp.pr);\r\n const amountIn = (BigInt(decodedPr.millisatoshis) + 999n) / 1000n;\r\n if (resp.total !== amount)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid total returned\");\r\n const pricingInfo = await this.verifyReturnedPrice(typeof (lpOrUrl) === \"string\" ?\r\n { swapFeePPM: 10000, swapBaseFee: 10 } :\r\n lpOrUrl.services[SwapType_1.SwapType.TRUSTED_FROM_BTCLN], false, amountIn, amount, this.contract.getNativeCurrencyAddress(), resp);\r\n const quote = new LnForGasSwap_1.LnForGasSwap(this, {\r\n pr: resp.pr,\r\n outputAmount: resp.total,\r\n recipient: signer,\r\n pricingInfo,\r\n url: lpUrl,\r\n expiry: decodedPr.timeExpireDate * 1000,\r\n swapFee: resp.swapFee,\r\n feeRate: \"\",\r\n token,\r\n exactIn: false\r\n });\r\n await quote._save();\r\n return quote;\r\n }\r\n}\r\nexports.LnForGasWrapper = LnForGasWrapper;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OutOfBoundsError = exports.RequestError = void 0;\r\n/**\r\n * An error returned by the intermediary in a http response\r\n */\r\nclass RequestError extends Error {\r\n constructor(msg, httpCode) {\r\n try {\r\n const parsed = JSON.parse(msg);\r\n if (parsed.msg != null)\r\n msg = parsed.msg;\r\n }\r\n catch (e) { }\r\n super(msg);\r\n // Set the prototype explicitly.\r\n Object.setPrototypeOf(this, RequestError.prototype);\r\n this.httpCode = httpCode;\r\n }\r\n static parse(msg, httpCode) {\r\n try {\r\n const parsed = JSON.parse(msg);\r\n msg = parsed.msg;\r\n if (parsed.code === 20003 || parsed.code === 20004) {\r\n return new OutOfBoundsError(parsed.msg, httpCode, BigInt(parsed.data.min), BigInt(parsed.data.max));\r\n }\r\n }\r\n catch (e) { }\r\n return new RequestError(msg, httpCode);\r\n }\r\n}\r\nexports.RequestError = RequestError;\r\n/**\r\n * An error indicating out of bounds (amount too high or too low) on swap initialization\r\n */\r\nclass OutOfBoundsError extends RequestError {\r\n constructor(msg, httpCode, min, max) {\r\n super(msg, httpCode);\r\n this.max = max;\r\n this.min = min;\r\n Object.setPrototypeOf(this, OutOfBoundsError.prototype);\r\n }\r\n}\r\nexports.OutOfBoundsError = OutOfBoundsError;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToBTCSwap = exports.isToBTCSwapInit = void 0;\r\nconst IToBTCSwap_1 = require(\"../IToBTCSwap\");\r\nconst SwapType_1 = require(\"../../SwapType\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst IntermediaryError_1 = require(\"../../../errors/IntermediaryError\");\r\nconst Tokens_1 = require(\"../../Tokens\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nfunction isToBTCSwapInit(obj) {\r\n return typeof (obj.address) === \"string\" &&\r\n typeof (obj.amount) === \"bigint\" &&\r\n typeof (obj.confirmationTarget) === \"number\" &&\r\n typeof (obj.satsPerVByte) === \"number\" &&\r\n (0, IToBTCSwap_1.isIToBTCSwapInit)(obj);\r\n}\r\nexports.isToBTCSwapInit = isToBTCSwapInit;\r\nclass ToBTCSwap extends IToBTCSwap_1.IToBTCSwap {\r\n constructor(wrapper, initOrObject) {\r\n if (isToBTCSwapInit(initOrObject))\r\n initOrObject.url += \"/tobtc\";\r\n super(wrapper, initOrObject);\r\n this.outputToken = Tokens_1.BitcoinTokens.BTC;\r\n this.TYPE = SwapType_1.SwapType.TO_BTC;\r\n if (!isToBTCSwapInit(initOrObject)) {\r\n this.address = initOrObject.address;\r\n this.amount = BigInt(initOrObject.amount);\r\n this.confirmationTarget = initOrObject.confirmationTarget;\r\n this.satsPerVByte = initOrObject.satsPerVByte;\r\n this.txId = initOrObject.txId;\r\n this.requiredConfirmations = initOrObject.requiredConfirmations ?? this.data.getConfirmationsHint();\r\n this.nonce = (initOrObject.nonce == null ? null : BigInt(initOrObject.nonce)) ?? this.data.getNonceHint();\r\n }\r\n this.logger = (0, Utils_1.getLogger)(\"ToBTC(\" + this.getIdentifierHashString() + \"): \");\r\n this.tryCalculateSwapFee();\r\n }\r\n async _setPaymentResult(result, check = false) {\r\n if (result == null)\r\n return false;\r\n if (result.txId == null)\r\n throw new IntermediaryError_1.IntermediaryError(\"No btc txId returned!\");\r\n if (check) {\r\n const btcTx = await this.wrapper.btcRpc.getTransaction(result.txId);\r\n if (btcTx == null)\r\n return false;\r\n const foundVout = btcTx.outs.find(vout => this.data.getClaimHash() === this.wrapper.contract.getHashForOnchain(buffer_1.Buffer.from(vout.scriptPubKey.hex, \"hex\"), BigInt(vout.value), this.requiredConfirmations, this.nonce).toString(\"hex\"));\r\n if (foundVout == null)\r\n throw new IntermediaryError_1.IntermediaryError(\"Invalid btc txId returned\");\r\n }\r\n this.txId = result.txId;\r\n return true;\r\n }\r\n //////////////////////////////\r\n //// Amounts & fees\r\n getOutput() {\r\n return (0, Tokens_1.toTokenAmount)(this.amount, this.outputToken, this.wrapper.prices);\r\n }\r\n //////////////////////////////\r\n //// Getters & utils\r\n getOutputTxId() {\r\n return this.txId;\r\n }\r\n /**\r\n * Returns fee rate of the bitcoin transaction in sats/vB\r\n */\r\n getBitcoinFeeRate() {\r\n return this.satsPerVByte;\r\n }\r\n /**\r\n * Returns the bitcoin address where the BTC will be sent to\r\n */\r\n getBitcoinAddress() {\r\n return this.address;\r\n }\r\n /**\r\n * Returns the transaction ID of the transaction sending the BTC\r\n */\r\n getBitcoinTxId() {\r\n return this.txId;\r\n }\r\n getRecipient() {\r\n return this.address;\r\n }\r\n //////////////////////////////\r\n //// Storage\r\n serialize() {\r\n return {\r\n ...super.serialize(),\r\n address: this.address,\r\n amount: this.amount.toString(10),\r\n confirmationTarget: this.confirmationTarget,\r\n satsPerVByte: this.satsPerVByte,\r\n nonce: this.nonce == null ? null : this.nonce.toString(10),\r\n requiredConfirmations: this.requiredConfirmations,\r\n txId: this.txId\r\n };\r\n }\r\n}\r\nexports.ToBTCSwap = ToBTCSwap;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RefundEvent = void 0;\r\nconst SwapEvent_1 = require(\"./SwapEvent\");\r\nclass RefundEvent extends SwapEvent_1.SwapEvent {\r\n}\r\nexports.RefundEvent = RefundEvent;\r\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolanaSlots = void 0;\r\nconst SolanaModule_1 = require(\"../SolanaModule\");\r\nclass SolanaSlots extends SolanaModule_1.SolanaModule {\r\n constructor() {\r\n super(...arguments);\r\n this.SLOT_CACHE_SLOTS = 12;\r\n this.SLOT_CACHE_TIME = this.SLOT_CACHE_SLOTS * this.root.SLOT_TIME;\r\n this.slotCache = {};\r\n }\r\n /**\r\n * Initiates fetch of a given slot & saves it to cache\r\n *\r\n * @param commitment\r\n * @private\r\n */\r\n fetchAndSaveSlot(commitment) {\r\n const slotPromise = this.connection.getSlot(commitment);\r\n const timestamp = Date.now();\r\n this.slotCache[commitment] = {\r\n slot: slotPromise,\r\n timestamp\r\n };\r\n slotPromise.catch(e => {\r\n if (this.slotCache[commitment] != null && this.slotCache[commitment].slot === slotPromise)\r\n delete this.slotCache[commitment];\r\n throw e;\r\n });\r\n return {\r\n slot: slotPromise,\r\n timestamp\r\n };\r\n }\r\n ///////////////////\r\n //// Slots\r\n /**\r\n * Gets the latest slot for a given commitment, with the timestamp of when that slot was actually retrieved from\r\n * the RPC (useful for when slots are cached), does no estimation on the current slot number based on cached value\r\n *\r\n * @param commitment\r\n */\r\n async getSlotAndTimestamp(commitment) {\r\n let cachedSlotData = this.slotCache[commitment];\r\n if (cachedSlotData == null || Date.now() - cachedSlotData.timestamp > this.SLOT_CACHE_TIME) {\r\n cachedSlotData = this.fetchAndSaveSlot(commitment);\r\n }\r\n return {\r\n slot: await cachedSlotData.slot,\r\n timestamp: cachedSlotData.timestamp\r\n };\r\n }\r\n /**\r\n * Gets the slot for a given commitment, uses slot cache & tries to estimate current slot based on the cached\r\n * value, cache has relatively short expiry of just 12 slots (4.8 seconds)\r\n *\r\n * @param commitment\r\n */\r\n async getSlot(commitment) {\r\n let cachedSlotData = this.slotCache[commitment];\r\n if (cachedSlotData != null && Date.now() - cachedSlotData.timestamp < this.SLOT_CACHE_TIME) {\r\n return (await cachedSlotData.slot) + Math.floor((Date.now() - cachedSlotData.timestamp) / this.root.SLOT_TIME);\r\n }\r\n cachedSlotData = this.fetchAndSaveSlot(commitment);\r\n return await cachedSlotData.slot;\r\n }\r\n}\r\nexports.SolanaSlots = SolanaSlots;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Swapper = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst ToBTCLNWrapper_1 = require(\"./tobtc/ln/ToBTCLNWrapper\");\r\nconst ToBTCWrapper_1 = require(\"./tobtc/onchain/ToBTCWrapper\");\r\nconst FromBTCLNWrapper_1 = require(\"./frombtc/ln/FromBTCLNWrapper\");\r\nconst FromBTCWrapper_1 = require(\"./frombtc/onchain/FromBTCWrapper\");\r\nconst IntermediaryDiscovery_1 = require(\"../intermediaries/IntermediaryDiscovery\");\r\nconst bolt11_1 = require(\"@atomiqlabs/bolt11\");\r\nconst IntermediaryError_1 = require(\"../errors/IntermediaryError\");\r\nconst SwapType_1 = require(\"./SwapType\");\r\nconst MempoolBtcRelaySynchronizer_1 = require(\"../btc/mempool/synchronizer/MempoolBtcRelaySynchronizer\");\r\nconst LnForGasWrapper_1 = require(\"./swapforgas/ln/LnForGasWrapper\");\r\nconst events_1 = require(\"events\");\r\nconst LNURL_1 = require(\"../utils/LNURL\");\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nconst RequestError_1 = require(\"../errors/RequestError\");\r\nconst SwapperWithChain_1 = require(\"./SwapperWithChain\");\r\nconst OnchainForGasWrapper_1 = require(\"./swapforgas/onchain/OnchainForGasWrapper\");\r\nconst randomBytes = require(\"randombytes\");\r\nconst utils_1 = require(\"@scure/btc-signer/utils\");\r\nconst btc_signer_1 = require(\"@scure/btc-signer\");\r\nconst IndexedDBUnifiedStorage_1 = require(\"../browser-storage/IndexedDBUnifiedStorage\");\r\nconst UnifiedSwapStorage_1 = require(\"./UnifiedSwapStorage\");\r\nconst UnifiedSwapEventListener_1 = require(\"../events/UnifiedSwapEventListener\");\r\nclass Swapper extends events_1.EventEmitter {\r\n constructor(bitcoinRpc, chainsData, pricing, tokens, options) {\r\n super();\r\n this.logger = (0, Utils_1.getLogger)(this.constructor.name + \": \");\r\n const storagePrefix = options?.storagePrefix ?? \"atomiq-\";\r\n options.bitcoinNetwork = options.bitcoinNetwork == null ? base_1.BitcoinNetwork.TESTNET : options.bitcoinNetwork;\r\n options.swapStorage ??= (name) => new IndexedDBUnifiedStorage_1.IndexedDBUnifiedStorage(name);\r\n this._bitcoinNetwork = options.bitcoinNetwork;\r\n this.bitcoinNetwork = options.bitcoinNetwork === base_1.BitcoinNetwork.MAINNET ? utils_1.NETWORK :\r\n options.bitcoinNetwork === base_1.BitcoinNetwork.TESTNET ? utils_1.TEST_NETWORK : null;\r\n this.prices = pricing;\r\n this.bitcoinRpc = bitcoinRpc;\r\n this.mempoolApi = bitcoinRpc.api;\r\n this.tokens = {};\r\n for (let tokenData of tokens) {\r\n for (let chainId in tokenData.chains) {\r\n const chainData = tokenData.chains[chainId];\r\n this.tokens[chainId] ??= {};\r\n this.tokens[chainId][chainData.address] = {\r\n chain: \"SC\",\r\n chainId,\r\n ticker: tokenData.ticker,\r\n name: tokenData.name,\r\n decimals: chainData.decimals,\r\n address: chainData.address\r\n };\r\n }\r\n }\r\n this.swapStateListener = (swap) => {\r\n this.emit(\"swapState\", swap);\r\n };\r\n this.chains = (0, Utils_1.objectMap)(chainsData, (chainData, key) => {\r\n const { swapContract, chainEvents, btcRelay } = chainData;\r\n const synchronizer = new MempoolBtcRelaySynchronizer_1.MempoolBtcRelaySynchronizer(btcRelay, bitcoinRpc);\r\n const storageHandler = options.swapStorage(storagePrefix + chainData.chainId);\r\n const unifiedSwapStorage = new UnifiedSwapStorage_1.UnifiedSwapStorage(storageHandler);\r\n const unifiedChainEvents = new UnifiedSwapEventListener_1.UnifiedSwapEventListener(unifiedSwapStorage, chainEvents);\r\n const wrappers = {};\r\n wrappers[SwapType_1.SwapType.TO_BTCLN] = new ToBTCLNWrapper_1.ToBTCLNWrapper(key, unifiedSwapStorage, unifiedChainEvents, swapContract, pricing, tokens, chainData.swapDataConstructor, {\r\n getRequestTimeout: options.getRequestTimeout,\r\n postRequestTimeout: options.postRequestTimeout,\r\n });\r\n wrappers[SwapType_1.SwapType.TO_BTC] = new ToBTCWrapper_1.ToBTCWrapper(key, unifiedSwapStorage, unifiedChainEvents, swapContract, pricing, tokens, chainData.swapDataConstructor, this.bitcoinRpc, {\r\n getRequestTimeout: options.getRequestTimeout,\r\n postRequestTimeout: options.postRequestTimeout,\r\n bitcoinNetwork: this.bitcoinNetwork\r\n });\r\n wrappers[SwapType_1.SwapType.FROM_BTCLN] = new FromBTCLNWrapper_1.FromBTCLNWrapper(key, unifiedSwapStorage, unifiedChainEvents, swapContract, pricing, tokens, chainData.swapDataConstructor, bitcoinRpc, {\r\n getRequestTimeout: options.getRequestTimeout,\r\n postRequestTimeout: options.postRequestTimeout\r\n });\r\n wrappers[SwapType_1.SwapType.FROM_BTC] = new FromBTCWrapper_1.FromBTCWrapper(key, unifiedSwapStorage, unifiedChainEvents, swapContract, pricing, tokens, chainData.swapDataConstructor, btcRelay, synchronizer, this.bitcoinRpc, {\r\n getRequestTimeout: options.getRequestTimeout,\r\n postRequestTimeout: options.postRequestTimeout,\r\n bitcoinNetwork: this.bitcoinNetwork\r\n });\r\n wrappers[SwapType_1.SwapType.TRUSTED_FROM_BTCLN] = new LnForGasWrapper_1.LnForGasWrapper(key, unifiedSwapStorage, unifiedChainEvents, swapContract, pricing, tokens, chainData.swapDataConstructor, {\r\n getRequestTimeout: options.getRequestTimeout,\r\n postRequestTimeout: options.postRequestTimeout\r\n });\r\n wrappers[SwapType_1.SwapType.TRUSTED_FROM_BTC] = new OnchainForGasWrapper_1.OnchainForGasWrapper(key, unifiedSwapStorage, unifiedChainEvents, swapContract, pricing, tokens, chainData.swapDataConstructor, bitcoinRpc, {\r\n getRequestTimeout: options.getRequestTimeout,\r\n postRequestTimeout: options.postRequestTimeout\r\n });\r\n Object.keys(wrappers).forEach(key => wrappers[key].events.on(\"swapState\", this.swapStateListener));\r\n const reviver = (val) => {\r\n const wrapper = wrappers[val.type];\r\n if (wrapper == null)\r\n return null;\r\n return new wrapper.swapDeserializer(wrapper, val);\r\n };\r\n return {\r\n chainEvents,\r\n swapContract,\r\n btcRelay,\r\n synchronizer,\r\n wrappers,\r\n unifiedChainEvents,\r\n unifiedSwapStorage,\r\n reviver\r\n };\r\n });\r\n const contracts = (0, Utils_1.objectMap)(chainsData, (data) => data.swapContract);\r\n if (options.intermediaryUrl != null) {\r\n this.intermediaryDiscovery = new IntermediaryDiscovery_1.IntermediaryDiscovery(contracts, options.registryUrl, Array.isArray(options.intermediaryUrl) ? options.intermediaryUrl : [options.intermediaryUrl], options.getRequestTimeout);\r\n }\r\n else {\r\n this.intermediaryDiscovery = new IntermediaryDiscovery_1.IntermediaryDiscovery(contracts, options.registryUrl, null, options.getRequestTimeout);\r\n }\r\n this.intermediaryDiscovery.on(\"removed\", (intermediaries) => {\r\n this.emit(\"lpsRemoved\", intermediaries);\r\n });\r\n this.intermediaryDiscovery.on(\"added\", (intermediaries) => {\r\n this.emit(\"lpsAdded\", intermediaries);\r\n });\r\n this.options = options;\r\n }\r\n /**\r\n * Returns true if string is a valid BOLT11 bitcoin lightning invoice\r\n *\r\n * @param lnpr\r\n */\r\n isLightningInvoice(lnpr) {\r\n try {\r\n (0, bolt11_1.decode)(lnpr);\r\n return true;\r\n }\r\n catch (e) { }\r\n return false;\r\n }\r\n /**\r\n * Returns true if string is a valid bitcoin address\r\n *\r\n * @param addr\r\n */\r\n isValidBitcoinAddress(addr) {\r\n try {\r\n (0, btc_signer_1.Address)(this.bitcoinNetwork).decode(addr);\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Returns true if string is a valid BOLT11 bitcoin lightning invoice WITH AMOUNT\r\n *\r\n * @param lnpr\r\n */\r\n isValidLightningInvoice(lnpr) {\r\n try {\r\n const parsed = (0, bolt11_1.decode)(lnpr);\r\n if (parsed.millisatoshis != null)\r\n return true;\r\n }\r\n catch (e) { }\r\n return false;\r\n }\r\n /**\r\n * Returns true if string is a valid LNURL (no checking on type is performed)\r\n *\r\n * @param lnurl\r\n */\r\n isValidLNURL(lnurl) {\r\n return LNURL_1.LNURL.isLNURL(lnurl);\r\n }\r\n /**\r\n * Returns type and data about an LNURL\r\n *\r\n * @param lnurl\r\n * @param shouldRetry\r\n */\r\n getLNURLTypeAndData(lnurl, shouldRetry) {\r\n return LNURL_1.LNURL.getLNURLType(lnurl, shouldRetry);\r\n }\r\n /**\r\n * Returns satoshi value of BOLT11 bitcoin lightning invoice WITH AMOUNT\r\n *\r\n * @param lnpr\r\n */\r\n getLightningInvoiceValue(lnpr) {\r\n const parsed = (0, bolt11_1.decode)(lnpr);\r\n if (parsed.millisatoshis != null)\r\n return (BigInt(parsed.millisatoshis) + 999n) / 1000n;\r\n return null;\r\n }\r\n /**\r\n * Returns swap bounds (minimums & maximums) for different swap types & tokens\r\n */\r\n getSwapBounds(chainIdentifier) {\r\n if (this.intermediaryDiscovery != null) {\r\n if (chainIdentifier == null) {\r\n return this.intermediaryDiscovery.getMultichainSwapBounds();\r\n }\r\n else {\r\n return this.intermediaryDiscovery.getSwapBounds(chainIdentifier);\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Returns maximum possible swap amount\r\n *\r\n * @param chainIdentifier\r\n * @param type Type of the swap\r\n * @param token Token of the swap\r\n */\r\n getMaximum(chainIdentifier, type, token) {\r\n if (this.intermediaryDiscovery != null) {\r\n const max = this.intermediaryDiscovery.getSwapMaximum(chainIdentifier, type, token);\r\n if (max != null)\r\n return BigInt(max);\r\n }\r\n return 0n;\r\n }\r\n /**\r\n * Returns minimum possible swap amount\r\n *\r\n * @param chainIdentifier\r\n * @param type Type of swap\r\n * @param token Token of the swap\r\n */\r\n getMinimum(chainIdentifier, type, token) {\r\n if (this.intermediaryDiscovery != null) {\r\n const min = this.intermediaryDiscovery.getSwapMinimum(chainIdentifier, type, token);\r\n if (min != null)\r\n return BigInt(min);\r\n }\r\n return 0n;\r\n }\r\n /**\r\n * Initializes the swap storage and loads existing swaps, needs to be called before any other action\r\n */\r\n async init() {\r\n this.logger.info(\"init(): Intializing swapper: \", this);\r\n for (let chainIdentifier in this.chains) {\r\n const { swapContract, unifiedChainEvents, unifiedSwapStorage, wrappers, reviver } = this.chains[chainIdentifier];\r\n await swapContract.start();\r\n this.logger.info(\"init(): Intialized swap contract: \" + chainIdentifier);\r\n await unifiedSwapStorage.init();\r\n if (unifiedSwapStorage.storage instanceof IndexedDBUnifiedStorage_1.IndexedDBUnifiedStorage) {\r\n //Try to migrate the data here\r\n const storagePrefix = chainIdentifier === \"SOLANA\" ?\r\n \"SOLv4-\" + this._bitcoinNetwork + \"-Swaps-\" :\r\n \"atomiqsdk-\" + this._bitcoinNetwork + chainIdentifier + \"-Swaps-\";\r\n await unifiedSwapStorage.storage.tryMigrate([\r\n [storagePrefix + \"FromBTC\", SwapType_1.SwapType.FROM_BTC],\r\n [storagePrefix + \"FromBTCLN\", SwapType_1.SwapType.FROM_BTCLN],\r\n [storagePrefix + \"ToBTC\", SwapType_1.SwapType.TO_BTC],\r\n [storagePrefix + \"ToBTCLN\", SwapType_1.SwapType.TO_BTCLN]\r\n ], (obj) => {\r\n const swap = reviver(obj);\r\n if (swap.randomNonce == null) {\r\n const oldIdentifierHash = swap.getIdentifierHashString();\r\n swap.randomNonce = randomBytes(16).toString(\"hex\");\r\n const newIdentifierHash = swap.getIdentifierHashString();\r\n this.logger.info(\"init(): Found older swap version without randomNonce, replacing, old hash: \" + oldIdentifierHash +\r\n \" new hash: \" + newIdentifierHash);\r\n }\r\n return swap;\r\n });\r\n }\r\n if (!this.options.noEvents)\r\n await unifiedChainEvents.start();\r\n this.logger.info(\"init(): Intialized events: \" + chainIdentifier);\r\n for (let key in wrappers) {\r\n this.logger.info(\"init(): Initializing \" + SwapType_1.SwapType[key] + \": \" + chainIdentifier);\r\n await wrappers[key].init(this.options.noTimers, this.options.dontCheckPastSwaps);\r\n }\r\n }\r\n this.logger.info(\"init(): Initializing intermediary discovery\");\r\n if (!this.options.dontFetchLPs)\r\n await this.intermediaryDiscovery.init();\r\n if (this.options.defaultTrustedIntermediaryUrl != null) {\r\n this.defaultTrustedIntermediary = await this.intermediaryDiscovery.getIntermediary(this.options.defaultTrustedIntermediaryUrl);\r\n }\r\n }\r\n /**\r\n * Stops listening for onchain events and closes this Swapper instance\r\n */\r\n async stop() {\r\n for (let chainIdentifier in this.chains) {\r\n const { wrappers } = this.chains[chainIdentifier];\r\n for (let key in wrappers) {\r\n wrappers[key].off(\"swapState\", this.swapStateListener);\r\n await wrappers[key].stop();\r\n }\r\n }\r\n }\r\n /**\r\n * Returns a set of supported tokens by all the intermediaries offering a specific swap service\r\n *\r\n * @param swapType Swap service type to check supported tokens for\r\n */\r\n getSupportedTokens(swapType) {\r\n const tokens = [];\r\n this.intermediaryDiscovery.intermediaries.forEach(lp => {\r\n if (lp.services[swapType] == null)\r\n return;\r\n if (lp.services[swapType].chainTokens == null)\r\n return;\r\n for (let chainId in lp.services[swapType].chainTokens) {\r\n for (let tokenAddress of lp.services[swapType].chainTokens[chainId]) {\r\n const token = this.tokens?.[chainId]?.[tokenAddress];\r\n if (token != null)\r\n tokens.push(token);\r\n }\r\n }\r\n });\r\n return tokens;\r\n }\r\n /**\r\n * Returns the set of supported token addresses by all the intermediaries we know of offering a specific swapType service\r\n *\r\n * @param chainIdentifier\r\n * @param swapType Specific swap type for which to obtain supported tokens\r\n */\r\n getSupportedTokenAddresses(chainIdentifier, swapType) {\r\n const set = new Set();\r\n this.intermediaryDiscovery.intermediaries.forEach(lp => {\r\n if (lp.services[swapType] == null)\r\n return;\r\n if (lp.services[swapType].chainTokens == null || lp.services[swapType].chainTokens[chainIdentifier] == null)\r\n return;\r\n lp.services[swapType].chainTokens[chainIdentifier].forEach(token => set.add(token));\r\n });\r\n return set;\r\n }\r\n /**\r\n * Creates swap & handles intermediary, quote selection\r\n *\r\n * @param chainIdentifier\r\n * @param create Callback to create the\r\n * @param amountData Amount data as passed to the function\r\n * @param swapType Swap type of the execution\r\n * @param maxWaitTimeMS Maximum waiting time after the first intermediary returns the quote\r\n * @private\r\n * @throws {Error} when no intermediary was found\r\n * @throws {Error} if the chain with the provided identifier cannot be found\r\n */\r\n async createSwap(chainIdentifier, create, amountData, swapType, maxWaitTimeMS = 2000) {\r\n if (this.chains[chainIdentifier] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainIdentifier);\r\n let candidates;\r\n const inBtc = swapType === SwapType_1.SwapType.TO_BTCLN || swapType === SwapType_1.SwapType.TO_BTC ? !amountData.exactIn : amountData.exactIn;\r\n if (!inBtc) {\r\n //Get candidates not based on the amount\r\n candidates = this.intermediaryDiscovery.getSwapCandidates(chainIdentifier, swapType, amountData.token);\r\n }\r\n else {\r\n candidates = this.intermediaryDiscovery.getSwapCandidates(chainIdentifier, swapType, amountData.token, amountData.amount);\r\n }\r\n if (candidates.length === 0) {\r\n this.logger.warn(\"createSwap(): No valid intermediary found, reloading intermediary database...\");\r\n await this.intermediaryDiscovery.reloadIntermediaries();\r\n if (!inBtc) {\r\n //Get candidates not based on the amount\r\n candidates = this.intermediaryDiscovery.getSwapCandidates(chainIdentifier, swapType, amountData.token);\r\n }\r\n else {\r\n candidates = this.intermediaryDiscovery.getSwapCandidates(chainIdentifier, swapType, amountData.token, amountData.amount);\r\n }\r\n if (candidates.length === 0)\r\n throw new Error(\"No intermediary found!\");\r\n }\r\n const abortController = new AbortController();\r\n this.logger.debug(\"createSwap() Swap candidates: \", candidates.map(lp => lp.url).join());\r\n const quotePromises = await create(candidates, abortController.signal, this.chains[chainIdentifier]);\r\n const quotes = await new Promise((resolve, reject) => {\r\n let min;\r\n let max;\r\n let error;\r\n let numResolved = 0;\r\n let quotes = [];\r\n let timeout;\r\n quotePromises.forEach(data => {\r\n data.quote.then(quote => {\r\n if (numResolved === 0) {\r\n timeout = setTimeout(() => {\r\n abortController.abort(new Error(\"Timed out waiting for quote!\"));\r\n resolve(quotes);\r\n }, maxWaitTimeMS);\r\n }\r\n numResolved++;\r\n quotes.push({\r\n quote,\r\n intermediary: data.intermediary\r\n });\r\n if (numResolved === quotePromises.length) {\r\n clearTimeout(timeout);\r\n resolve(quotes);\r\n return;\r\n }\r\n }).catch(e => {\r\n numResolved++;\r\n if (e instanceof IntermediaryError_1.IntermediaryError) {\r\n //Blacklist that node\r\n this.intermediaryDiscovery.removeIntermediary(data.intermediary);\r\n }\r\n if (e instanceof RequestError_1.OutOfBoundsError) {\r\n if (min == null || max == null) {\r\n min = e.min;\r\n max = e.max;\r\n }\r\n else {\r\n min = (0, Utils_1.bigIntMin)(min, e.min);\r\n max = (0, Utils_1.bigIntMax)(max, e.max);\r\n }\r\n }\r\n this.logger.error(\"createSwap(): Intermediary \" + data.intermediary.url + \" error: \", e);\r\n error = e;\r\n if (numResolved === quotePromises.length) {\r\n if (timeout != null)\r\n clearTimeout(timeout);\r\n if (quotes.length > 0) {\r\n resolve(quotes);\r\n return;\r\n }\r\n if (min != null && max != null) {\r\n reject(new RequestError_1.OutOfBoundsError(\"Out of bounds\", 400, min, max));\r\n return;\r\n }\r\n reject(error);\r\n }\r\n });\r\n });\r\n });\r\n //TODO: Intermediary's reputation is not taken into account!\r\n quotes.sort((a, b) => {\r\n if (amountData.exactIn) {\r\n //Compare outputs\r\n return (0, Utils_1.bigIntCompare)(b.quote.getOutput().rawAmount, a.quote.getOutput().rawAmount);\r\n }\r\n else {\r\n //Compare inputs\r\n return (0, Utils_1.bigIntCompare)(a.quote.getOutput().rawAmount, b.quote.getOutput().rawAmount);\r\n }\r\n });\r\n this.logger.debug(\"createSwap(): Sorted quotes, best price to worst: \", quotes);\r\n return quotes[0].quote;\r\n }\r\n /**\r\n * Creates To BTC swap\r\n *\r\n * @param chainIdentifier\r\n * @param signer\r\n * @param tokenAddress Token address to pay with\r\n * @param address Recipient's bitcoin address\r\n * @param amount Amount to send in satoshis (bitcoin's smallest denomination)\r\n * @param confirmationTarget How soon should the transaction be confirmed (determines the fee)\r\n * @param confirmations How many confirmations must the intermediary wait to claim the funds\r\n * @param exactIn Whether to use exact in instead of exact out\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n */\r\n createToBTCSwap(chainIdentifier, signer, tokenAddress, address, amount, confirmationTarget, confirmations, exactIn, additionalParams = this.options.defaultAdditionalParameters) {\r\n if (confirmationTarget == null)\r\n confirmationTarget = 3;\r\n if (confirmations == null)\r\n confirmations = 2;\r\n const amountData = {\r\n amount,\r\n token: tokenAddress,\r\n exactIn\r\n };\r\n return this.createSwap(chainIdentifier, (candidates, abortSignal, chain) => Promise.resolve(chain.wrappers[SwapType_1.SwapType.TO_BTC].create(signer, address, amountData, candidates, {\r\n confirmationTarget,\r\n confirmations\r\n }, additionalParams, abortSignal)), amountData, SwapType_1.SwapType.TO_BTC);\r\n }\r\n /**\r\n * Creates To BTCLN swap\r\n *\r\n * @param chainIdentifier\r\n * @param signer\r\n * @param tokenAddress Token address to pay with\r\n * @param paymentRequest BOLT11 lightning network invoice to be paid (needs to have a fixed amount)\r\n * @param expirySeconds For how long to lock your funds (higher expiry means higher probability of payment success)\r\n * @param maxRoutingBaseFee Maximum routing fee to use - base fee (higher routing fee means higher probability of payment success)\r\n * @param maxRoutingPPM Maximum routing fee to use - proportional fee in PPM (higher routing fee means higher probability of payment success)\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n */\r\n async createToBTCLNSwap(chainIdentifier, signer, tokenAddress, paymentRequest, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, additionalParams = this.options.defaultAdditionalParameters) {\r\n const parsedPR = (0, bolt11_1.decode)(paymentRequest);\r\n const amountData = {\r\n amount: (BigInt(parsedPR.millisatoshis) + 999n) / 1000n,\r\n token: tokenAddress,\r\n exactIn: false\r\n };\r\n expirySeconds ??= 5 * 24 * 3600;\r\n return this.createSwap(chainIdentifier, (candidates, abortSignal, chain) => chain.wrappers[SwapType_1.SwapType.TO_BTCLN].create(signer, paymentRequest, amountData, candidates, {\r\n expirySeconds,\r\n maxRoutingPPM,\r\n maxRoutingBaseFee\r\n }, additionalParams, abortSignal), amountData, SwapType_1.SwapType.TO_BTCLN);\r\n }\r\n /**\r\n * Creates To BTCLN swap via LNURL-pay\r\n *\r\n * @param chainIdentifier\r\n * @param signer\r\n * @param tokenAddress Token address to pay with\r\n * @param lnurlPay LNURL-pay link to use for the payment\r\n * @param amount Amount to be paid in sats\r\n * @param comment Optional comment for the payment\r\n * @param expirySeconds For how long to lock your funds (higher expiry means higher probability of payment success)\r\n * @param maxRoutingBaseFee Maximum routing fee to use - base fee (higher routing fee means higher probability of payment success)\r\n * @param maxRoutingPPM Maximum routing fee to use - proportional fee in PPM (higher routing fee means higher probability of payment success)\r\n * @param exactIn Whether to do an exact in swap instead of exact out\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n */\r\n async createToBTCLNSwapViaLNURL(chainIdentifier, signer, tokenAddress, lnurlPay, amount, comment, expirySeconds, maxRoutingBaseFee, maxRoutingPPM, exactIn, additionalParams = this.options.defaultAdditionalParameters) {\r\n const amountData = {\r\n amount,\r\n token: tokenAddress,\r\n exactIn\r\n };\r\n expirySeconds ??= 5 * 24 * 3600;\r\n return this.createSwap(chainIdentifier, (candidates, abortSignal, chain) => chain.wrappers[SwapType_1.SwapType.TO_BTCLN].createViaLNURL(signer, typeof (lnurlPay) === \"string\" ? lnurlPay : lnurlPay.params, amountData, candidates, {\r\n expirySeconds,\r\n comment,\r\n maxRoutingBaseFee,\r\n maxRoutingPPM\r\n }, additionalParams, abortSignal), amountData, SwapType_1.SwapType.TO_BTCLN);\r\n }\r\n /**\r\n * Creates From BTC swap\r\n *\r\n * @param chainIdentifier\r\n * @param signer\r\n * @param tokenAddress Token address to receive\r\n * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)\r\n * @param exactOut Whether to use a exact out instead of exact in\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n */\r\n async createFromBTCSwap(chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams = this.options.defaultAdditionalParameters) {\r\n const amountData = {\r\n amount,\r\n token: tokenAddress,\r\n exactIn: !exactOut\r\n };\r\n return this.createSwap(chainIdentifier, (candidates, abortSignal, chain) => Promise.resolve(chain.wrappers[SwapType_1.SwapType.FROM_BTC].create(signer, amountData, candidates, null, additionalParams, abortSignal)), amountData, SwapType_1.SwapType.FROM_BTC);\r\n }\r\n /**\r\n * Creates From BTCLN swap\r\n *\r\n * @param chainIdentifier\r\n * @param signer\r\n * @param tokenAddress Token address to receive\r\n * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)\r\n * @param exactOut Whether to use exact out instead of exact in\r\n * @param descriptionHash Description hash for ln invoice\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n */\r\n async createFromBTCLNSwap(chainIdentifier, signer, tokenAddress, amount, exactOut, descriptionHash, additionalParams = this.options.defaultAdditionalParameters) {\r\n const amountData = {\r\n amount,\r\n token: tokenAddress,\r\n exactIn: !exactOut\r\n };\r\n return this.createSwap(chainIdentifier, (candidates, abortSignal, chain) => Promise.resolve(chain.wrappers[SwapType_1.SwapType.FROM_BTCLN].create(signer, amountData, candidates, {\r\n descriptionHash\r\n }, additionalParams, abortSignal)), amountData, SwapType_1.SwapType.FROM_BTCLN);\r\n }\r\n /**\r\n * Creates From BTCLN swap, withdrawing from LNURL-withdraw\r\n *\r\n * @param chainIdentifier\r\n * @param signer\r\n * @param tokenAddress Token address to receive\r\n * @param lnurl LNURL-withdraw to pull the funds from\r\n * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)\r\n * @param exactOut Whether to use exact out instead of exact in\r\n * @param additionalParams Additional parameters sent to the LP when creating the swap\r\n */\r\n async createFromBTCLNSwapViaLNURL(chainIdentifier, signer, tokenAddress, lnurl, amount, exactOut, additionalParams = this.options.defaultAdditionalParameters) {\r\n const amountData = {\r\n amount,\r\n token: tokenAddress,\r\n exactIn: !exactOut\r\n };\r\n return this.createSwap(chainIdentifier, (candidates, abortSignal, chain) => chain.wrappers[SwapType_1.SwapType.FROM_BTCLN].createViaLNURL(signer, typeof (lnurl) === \"string\" ? lnurl : lnurl.params, amountData, candidates, additionalParams, abortSignal), amountData, SwapType_1.SwapType.FROM_BTCLN);\r\n }\r\n /**\r\n * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)\r\n * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and\r\n * invoice's pre-set amount is used instead.\r\n *\r\n * @param signer\r\n * @param srcToken Source token of the swap, user pays this token\r\n * @param dstToken Destination token of the swap, user receives this token\r\n * @param amount Amount of the swap\r\n * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)\r\n * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or\r\n * LNURL-withdrawal to withdraw money from\r\n */\r\n create(signer, srcToken, dstToken, amount, exactIn, addressLnurlLightningInvoice) {\r\n if (srcToken.chain === \"BTC\") {\r\n if (dstToken.chain === \"SC\") {\r\n if (srcToken.lightning) {\r\n if (addressLnurlLightningInvoice != null) {\r\n if (typeof (addressLnurlLightningInvoice) !== \"string\" && !(0, LNURL_1.isLNURLWithdraw)(addressLnurlLightningInvoice))\r\n throw new Error(\"LNURL must be a string or LNURLWithdraw object!\");\r\n return this.createFromBTCLNSwapViaLNURL(dstToken.chainId, signer, dstToken.address, addressLnurlLightningInvoice, amount, !exactIn);\r\n }\r\n else {\r\n return this.createFromBTCLNSwap(dstToken.chainId, signer, dstToken.address, amount, !exactIn);\r\n }\r\n }\r\n else {\r\n return this.createFromBTCSwap(dstToken.chainId, signer, dstToken.address, amount, !exactIn);\r\n }\r\n }\r\n }\r\n else {\r\n if (dstToken.chain === \"BTC\") {\r\n if (dstToken.lightning) {\r\n if (typeof (addressLnurlLightningInvoice) !== \"string\" && !(0, LNURL_1.isLNURLPay)(addressLnurlLightningInvoice))\r\n throw new Error(\"Destination LNURL link/lightning invoice must be a string or LNURLPay object!\");\r\n if ((0, LNURL_1.isLNURLPay)(addressLnurlLightningInvoice) || this.isValidLNURL(addressLnurlLightningInvoice)) {\r\n return this.createToBTCLNSwapViaLNURL(srcToken.chainId, signer, srcToken.address, addressLnurlLightningInvoice, amount, null, null, null, null, exactIn);\r\n }\r\n else if (this.isLightningInvoice(addressLnurlLightningInvoice)) {\r\n if (!this.isValidLightningInvoice(addressLnurlLightningInvoice))\r\n throw new Error(\"Invalid lightning invoice specified, lightning invoice MUST contain pre-set amount!\");\r\n if (exactIn)\r\n throw new Error(\"Only exact out swaps are possible with lightning invoices, use LNURL links for exact in lightning swaps!\");\r\n return this.createToBTCLNSwap(srcToken.chainId, signer, srcToken.address, addressLnurlLightningInvoice);\r\n }\r\n else {\r\n throw new Error(\"Supplied parameter is not LNURL link nor lightning invoice (bolt11)!\");\r\n }\r\n }\r\n else {\r\n if (typeof (addressLnurlLightningInvoice) !== \"string\")\r\n throw new Error(\"Destination bitcoin address must be a string!\");\r\n return this.createToBTCSwap(srcToken.chainId, signer, srcToken.address, addressLnurlLightningInvoice, amount, null, null, exactIn);\r\n }\r\n }\r\n }\r\n throw new Error(\"Unsupported swap type\");\r\n }\r\n /**\r\n * Creates trusted LN for Gas swap\r\n *\r\n * @param chainId\r\n * @param signer\r\n * @param amount Amount of native token to receive, in base units\r\n * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default\r\n * @throws {Error} If no trusted intermediary specified\r\n */\r\n createTrustedLNForGasSwap(chainId, signer, amount, trustedIntermediaryOrUrl) {\r\n if (this.chains[chainId] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainId);\r\n const useUrl = trustedIntermediaryOrUrl ?? this.defaultTrustedIntermediary ?? this.options.defaultTrustedIntermediaryUrl;\r\n if (useUrl == null)\r\n throw new Error(\"No trusted intermediary specified!\");\r\n return this.chains[chainId].wrappers[SwapType_1.SwapType.TRUSTED_FROM_BTCLN].create(signer, amount, useUrl);\r\n }\r\n /**\r\n * Creates trusted BTC on-chain for Gas swap\r\n *\r\n * @param chainId\r\n * @param signer\r\n * @param amount Amount of native token to receive, in base units\r\n * @param refundAddress Bitcoin refund address, in case the swap fails\r\n * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default\r\n * @throws {Error} If no trusted intermediary specified\r\n */\r\n createTrustedOnchainForGasSwap(chainId, signer, amount, refundAddress, trustedIntermediaryOrUrl) {\r\n if (this.chains[chainId] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainId);\r\n const useUrl = trustedIntermediaryOrUrl ?? this.defaultTrustedIntermediary ?? this.options.defaultTrustedIntermediaryUrl;\r\n if (useUrl == null)\r\n throw new Error(\"No trusted intermediary specified!\");\r\n return this.chains[chainId].wrappers[SwapType_1.SwapType.TRUSTED_FROM_BTC].create(signer, amount, useUrl, refundAddress);\r\n }\r\n async getAllSwaps(chainId, signer) {\r\n const queryParams = [];\r\n if (signer != null)\r\n queryParams.push({ key: \"intiator\", value: signer });\r\n if (chainId == null) {\r\n const res = await Promise.all(Object.keys(this.chains).map((chainId) => {\r\n const { unifiedSwapStorage, reviver } = this.chains[chainId];\r\n return unifiedSwapStorage.query([queryParams], reviver);\r\n }));\r\n return res.flat();\r\n }\r\n else {\r\n const { unifiedSwapStorage, reviver } = this.chains[chainId];\r\n return await unifiedSwapStorage.query([queryParams], reviver);\r\n }\r\n }\r\n async getActionableSwaps(chainId, signer) {\r\n if (chainId == null) {\r\n const res = await Promise.all(Object.keys(this.chains).map((chainId) => {\r\n const { unifiedSwapStorage, reviver, wrappers } = this.chains[chainId];\r\n const queryParams = [];\r\n for (let key in wrappers) {\r\n const wrapper = wrappers[key];\r\n const swapTypeQueryParams = [{ key: \"type\", value: wrapper.TYPE }];\r\n if (signer != null)\r\n swapTypeQueryParams.push({ key: \"intiator\", value: signer });\r\n swapTypeQueryParams.push({ key: \"state\", value: wrapper.pendingSwapStates });\r\n queryParams.push(swapTypeQueryParams);\r\n }\r\n return unifiedSwapStorage.query(queryParams, reviver);\r\n }));\r\n return res.flat().filter(swap => swap.isActionable());\r\n }\r\n else {\r\n const { unifiedSwapStorage, reviver, wrappers } = this.chains[chainId];\r\n const queryParams = [];\r\n for (let key in wrappers) {\r\n const wrapper = wrappers[key];\r\n const swapTypeQueryParams = [{ key: \"type\", value: wrapper.TYPE }];\r\n if (signer != null)\r\n swapTypeQueryParams.push({ key: \"intiator\", value: signer });\r\n swapTypeQueryParams.push({ key: \"state\", value: wrapper.pendingSwapStates });\r\n queryParams.push(swapTypeQueryParams);\r\n }\r\n return (await unifiedSwapStorage.query(queryParams, reviver)).filter(swap => swap.isActionable());\r\n }\r\n }\r\n async getRefundableSwaps(chainId, signer) {\r\n if (chainId == null) {\r\n const res = await Promise.all(Object.keys(this.chains).map((chainId) => {\r\n const { unifiedSwapStorage, reviver, wrappers } = this.chains[chainId];\r\n const queryParams = [];\r\n for (let wrapper of [wrappers[SwapType_1.SwapType.TO_BTCLN], wrappers[SwapType_1.SwapType.TO_BTC]]) {\r\n const swapTypeQueryParams = [{ key: \"type\", value: wrapper.TYPE }];\r\n if (signer != null)\r\n swapTypeQueryParams.push({ key: \"intiator\", value: signer });\r\n swapTypeQueryParams.push({ key: \"state\", value: wrapper.pendingSwapStates });\r\n queryParams.push(swapTypeQueryParams);\r\n }\r\n return unifiedSwapStorage.query(queryParams, reviver);\r\n }));\r\n return res.flat().filter(swap => swap.isRefundable());\r\n }\r\n else {\r\n const { unifiedSwapStorage, reviver, wrappers } = this.chains[chainId];\r\n const queryParams = [];\r\n for (let wrapper of [wrappers[SwapType_1.SwapType.TO_BTCLN], wrappers[SwapType_1.SwapType.TO_BTC]]) {\r\n const swapTypeQueryParams = [{ key: \"type\", value: wrapper.TYPE }];\r\n if (signer != null)\r\n swapTypeQueryParams.push({ key: \"intiator\", value: signer });\r\n swapTypeQueryParams.push({ key: \"state\", value: wrapper.pendingSwapStates });\r\n queryParams.push(swapTypeQueryParams);\r\n }\r\n const result = await unifiedSwapStorage.query(queryParams, reviver);\r\n return result.filter(swap => swap.isRefundable());\r\n }\r\n }\r\n async getSwapById(id, chainId, signer) {\r\n const queryParams = [];\r\n if (signer != null)\r\n queryParams.push({ key: \"intiator\", value: signer });\r\n queryParams.push({ key: \"id\", value: id });\r\n if (chainId == null) {\r\n const res = await Promise.all(Object.keys(this.chains).map((chainId) => {\r\n const { unifiedSwapStorage, reviver } = this.chains[chainId];\r\n return unifiedSwapStorage.query([queryParams], reviver);\r\n }));\r\n return res.flat()[0];\r\n }\r\n else {\r\n const { unifiedSwapStorage, reviver } = this.chains[chainId];\r\n return (await unifiedSwapStorage.query([queryParams], reviver))[0];\r\n }\r\n }\r\n /**\r\n * Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes\r\n *\r\n * @param chainId\r\n * @param signer\r\n */\r\n async _syncSwaps(chainId, signer) {\r\n if (chainId == null) {\r\n await Promise.all(Object.keys(this.chains).map(async (chainId) => {\r\n const { unifiedSwapStorage, reviver, wrappers } = this.chains[chainId];\r\n const queryParams = [];\r\n for (let key in wrappers) {\r\n const wrapper = wrappers[key];\r\n const swapTypeQueryParams = [{ key: \"type\", value: wrapper.TYPE }];\r\n if (signer != null)\r\n swapTypeQueryParams.push({ key: \"intiator\", value: signer });\r\n swapTypeQueryParams.push({ key: \"state\", value: wrapper.pendingSwapStates });\r\n queryParams.push(swapTypeQueryParams);\r\n }\r\n const swaps = await unifiedSwapStorage.query(queryParams, reviver);\r\n const changedSwaps = [];\r\n for (let swap of swaps) {\r\n const swapChanged = await swap._sync(false).catch(e => this.logger.error(\"_syncSwaps(): Error in swap: \" + swap.getIdentifierHashString(), e));\r\n if (swapChanged)\r\n changedSwaps.push(swap);\r\n }\r\n await unifiedSwapStorage.saveAll(changedSwaps);\r\n }));\r\n }\r\n else {\r\n const { unifiedSwapStorage, reviver, wrappers } = this.chains[chainId];\r\n const queryParams = [];\r\n for (let key in wrappers) {\r\n const wrapper = wrappers[key];\r\n const swapTypeQueryParams = [{ key: \"type\", value: wrapper.TYPE }];\r\n if (signer != null)\r\n swapTypeQueryParams.push({ key: \"intiator\", value: signer });\r\n swapTypeQueryParams.push({ key: \"state\", value: wrapper.pendingSwapStates });\r\n queryParams.push(swapTypeQueryParams);\r\n }\r\n const swaps = await unifiedSwapStorage.query(queryParams, reviver);\r\n const changedSwaps = [];\r\n for (let swap of swaps) {\r\n const swapChanged = await swap._sync(false).catch(e => this.logger.error(\"_syncSwaps(): Error in swap: \" + swap.getIdentifierHashString(), e));\r\n if (swapChanged)\r\n changedSwaps.push(swap);\r\n }\r\n await unifiedSwapStorage.saveAll(changedSwaps);\r\n }\r\n }\r\n /**\r\n * Returns the token balance of the wallet\r\n */\r\n getBalance(chainIdentifierOrSigner, signerOrToken, token) {\r\n let chainIdentifier;\r\n let signer;\r\n if (typeof (signerOrToken) === \"string\") {\r\n chainIdentifier = chainIdentifierOrSigner;\r\n signer = signerOrToken;\r\n }\r\n else {\r\n chainIdentifier = signerOrToken.chainId;\r\n token = signerOrToken.address;\r\n signer = chainIdentifierOrSigner;\r\n }\r\n if (this.chains[chainIdentifier] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainIdentifier);\r\n return this.chains[chainIdentifier].swapContract.getBalance(signer, token, false);\r\n }\r\n /**\r\n * Returns the maximum spendable balance of the wallet, deducting the fee needed to initiate a swap for native balances\r\n */\r\n async getSpendableBalance(chainIdentifierOrSigner, signerOrToken, tokenOrFeeMultiplier, feeMultiplier) {\r\n let chainIdentifier;\r\n let signer;\r\n let token;\r\n if (typeof (signerOrToken) === \"string\") {\r\n chainIdentifier = chainIdentifierOrSigner;\r\n signer = signerOrToken;\r\n token = tokenOrFeeMultiplier;\r\n }\r\n else {\r\n chainIdentifier = signerOrToken.chainId;\r\n token = signerOrToken.address;\r\n signer = chainIdentifierOrSigner;\r\n feeMultiplier = tokenOrFeeMultiplier;\r\n }\r\n if (this.chains[chainIdentifier] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainIdentifier);\r\n const swapContract = this.chains[chainIdentifier].swapContract;\r\n if (swapContract.getNativeCurrencyAddress() !== token)\r\n return await this.getBalance(chainIdentifier, signer, token);\r\n let [balance, commitFee] = await Promise.all([\r\n this.getBalance(chainIdentifier, signer, token),\r\n swapContract.getCommitFee(\r\n //Use large amount, such that the fee for wrapping more tokens is always included!\r\n await swapContract.createSwapData(base_1.ChainSwapType.HTLC, signer, null, token, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn, swapContract.getHashForHtlc(randomBytes(32)).toString(\"hex\"), base_1.BigIntBufferUtils.fromBuffer(randomBytes(8)), BigInt(Math.floor(Date.now() / 1000)), true, false, base_1.BigIntBufferUtils.fromBuffer(randomBytes(2)), base_1.BigIntBufferUtils.fromBuffer(randomBytes(2))))\r\n ]);\r\n if (feeMultiplier != null) {\r\n commitFee = commitFee * (BigInt(Math.floor(feeMultiplier * 1000000))) / 1000000n;\r\n }\r\n return (0, Utils_1.bigIntMax)(balance - commitFee, 0n);\r\n }\r\n /**\r\n * Returns the native token balance of the wallet\r\n */\r\n getNativeBalance(chainIdentifier, signer) {\r\n if (this.chains[chainIdentifier] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainIdentifier);\r\n return this.chains[chainIdentifier].swapContract.getBalance(signer, this.getNativeTokenAddress(chainIdentifier), false);\r\n }\r\n /**\r\n * Returns the address of the native token's address of the chain\r\n */\r\n getNativeTokenAddress(chainIdentifier) {\r\n if (this.chains[chainIdentifier] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainIdentifier);\r\n return this.chains[chainIdentifier].swapContract.getNativeCurrencyAddress();\r\n }\r\n /**\r\n * Returns the address of the native currency of the chain\r\n */\r\n getNativeToken(chainIdentifier) {\r\n if (this.chains[chainIdentifier] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainIdentifier);\r\n return this.tokens[chainIdentifier][this.chains[chainIdentifier].swapContract.getNativeCurrencyAddress()];\r\n }\r\n withChain(chainIdentifier) {\r\n if (this.chains[chainIdentifier] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainIdentifier);\r\n return new SwapperWithChain_1.SwapperWithChain(this, chainIdentifier);\r\n }\r\n randomSigner(chainIdentifier) {\r\n if (this.chains[chainIdentifier] == null)\r\n throw new Error(\"Invalid chain identifier! Unknown chain: \" + chainIdentifier);\r\n return this.chains[chainIdentifier].swapContract.randomSigner();\r\n }\r\n getChains() {\r\n return Object.keys(this.chains);\r\n }\r\n}\r\nexports.Swapper = Swapper;\r\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","/* eslint-disable no-prototype-builtins */\nvar g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {}\n\nvar support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type)\n var encoding = match ? match[1] : 'utf-8'\n reader.readAsText(blob, encoding)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._noBody = true;\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n try {\n headers.append(key, value)\n } catch (error) {\n console.warn('Response ' + error.message)\n }\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 200, statusText: ''})\n response.ok = false\n response.status = 0\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = g.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name))\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value)\n }\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!g.fetch) {\n g.fetch = fetch\n g.Headers = Headers\n g.Request = Request\n g.Response = Response\n}\n",null,"/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nexport type Hex = Uint8Array | string; // hex strings are accepted for simplicity\nexport type PrivKey = Hex | bigint; // bigints are accepted to ease learning curve\nexport type CHash = {\n (message: Uint8Array | string): Uint8Array;\n blockLen: number;\n outputLen: number;\n create(opts?: { dkLen?: number }): any; // For shake\n};\nexport type FHash = (message: Uint8Array | string) => Uint8Array;\n\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\nexport function abytes(item: unknown): void {\n if (!isBytes(item)) throw new Error('Uint8Array expected');\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\nexport function numberToHexUnpadded(num: number | bigint): string {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\n\nexport function hexToNumber(hex: string): bigint {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes: Uint8Array): bigint {\n abytes(bytes);\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\n\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n: number | bigint, len: number): Uint8Array {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n: number | bigint): Uint8Array {\n return hexToBytes(numberToHexUnpadded(n));\n}\n\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title: string, hex: Hex, expectedLength?: number): Uint8Array {\n let res: Uint8Array;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n } catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n } else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n } else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a: Uint8Array, b: Uint8Array) {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n return diff === 0;\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n// Bit operations\n\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n: bigint) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1);\n return len;\n}\n\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n: bigint, pos: number) {\n return (n >> BigInt(pos)) & _1n;\n}\n\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n: bigint, pos: number, value: boolean) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n: number) => (_2n << BigInt(n - 1)) - _1n;\n\n// DRBG\n\nconst u8n = (data?: any) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr: any) => Uint8Array.from(arr); // another shortcut\ntype Pred = (v: Uint8Array) => T | undefined;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(\n hashLen: number,\n qByteLen: number,\n hmacFn: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array\n): (seed: Uint8Array, predicate: Pred) => T {\n if (typeof hashLen !== 'number' || hashLen < 2) throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2) throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function') throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b: Uint8Array[]) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0) return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000) throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out: Uint8Array[] = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed: Uint8Array, pred: Pred): T => {\n reset();\n reseed(seed); // Steps D-G\n let res: T | undefined = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen()))) reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n\n// Validating curves and fields\n\nconst validatorFns = {\n bigint: (val: any) => typeof val === 'bigint',\n function: (val: any) => typeof val === 'function',\n boolean: (val: any) => typeof val === 'boolean',\n string: (val: any) => typeof val === 'string',\n stringOrUint8Array: (val: any) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val: any) => Number.isSafeInteger(val),\n array: (val: any) => Array.isArray(val),\n field: (val: any, object: any) => (object as any).Fp.isValid(val),\n hash: (val: any) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n} as const;\ntype Validator = keyof typeof validatorFns;\ntype ValMap> = { [K in keyof T]?: Validator };\n// type Record = { [P in K]: T; }\n\nexport function validateObject>(\n object: T,\n validators: ValMap,\n optValidators: ValMap = {}\n) {\n const checkField = (fieldName: keyof T, type: Validator, isOptional: boolean) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n\n const val = object[fieldName as keyof typeof object];\n if (isOptional && val === undefined) return;\n if (!checkVal(val, object)) {\n throw new Error(\n `Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`\n );\n }\n };\n for (const [fieldName, type] of Object.entries(validators)) checkField(fieldName, type!, false);\n for (const [fieldName, type] of Object.entries(optValidators)) checkField(fieldName, type!, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n",null,"\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeUnchecked = exports.deserialize = exports.serialize = exports.BinaryReader = exports.BinaryWriter = exports.BorshError = exports.baseDecode = exports.baseEncode = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bs58_1 = __importDefault(require(\"bs58\"));\n// TODO: Make sure this polyfill not included when not required\nconst encoding = __importStar(require(\"text-encoding-utf-8\"));\nconst ResolvedTextDecoder = typeof TextDecoder !== \"function\" ? encoding.TextDecoder : TextDecoder;\nconst textDecoder = new ResolvedTextDecoder(\"utf-8\", { fatal: true });\nfunction baseEncode(value) {\n if (typeof value === \"string\") {\n value = Buffer.from(value, \"utf8\");\n }\n return bs58_1.default.encode(Buffer.from(value));\n}\nexports.baseEncode = baseEncode;\nfunction baseDecode(value) {\n return Buffer.from(bs58_1.default.decode(value));\n}\nexports.baseDecode = baseDecode;\nconst INITIAL_LENGTH = 1024;\nclass BorshError extends Error {\n constructor(message) {\n super(message);\n this.fieldPath = [];\n this.originalMessage = message;\n }\n addToFieldPath(fieldName) {\n this.fieldPath.splice(0, 0, fieldName);\n // NOTE: Modifying message directly as jest doesn't use .toString()\n this.message = this.originalMessage + \": \" + this.fieldPath.join(\".\");\n }\n}\nexports.BorshError = BorshError;\n/// Binary encoder.\nclass BinaryWriter {\n constructor() {\n this.buf = Buffer.alloc(INITIAL_LENGTH);\n this.length = 0;\n }\n maybeResize() {\n if (this.buf.length < 16 + this.length) {\n this.buf = Buffer.concat([this.buf, Buffer.alloc(INITIAL_LENGTH)]);\n }\n }\n writeU8(value) {\n this.maybeResize();\n this.buf.writeUInt8(value, this.length);\n this.length += 1;\n }\n writeU16(value) {\n this.maybeResize();\n this.buf.writeUInt16LE(value, this.length);\n this.length += 2;\n }\n writeU32(value) {\n this.maybeResize();\n this.buf.writeUInt32LE(value, this.length);\n this.length += 4;\n }\n writeU64(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 8)));\n }\n writeU128(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 16)));\n }\n writeU256(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 32)));\n }\n writeU512(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 64)));\n }\n writeBuffer(buffer) {\n // Buffer.from is needed as this.buf.subarray can return plain Uint8Array in browser\n this.buf = Buffer.concat([\n Buffer.from(this.buf.subarray(0, this.length)),\n buffer,\n Buffer.alloc(INITIAL_LENGTH),\n ]);\n this.length += buffer.length;\n }\n writeString(str) {\n this.maybeResize();\n const b = Buffer.from(str, \"utf8\");\n this.writeU32(b.length);\n this.writeBuffer(b);\n }\n writeFixedArray(array) {\n this.writeBuffer(Buffer.from(array));\n }\n writeArray(array, fn) {\n this.maybeResize();\n this.writeU32(array.length);\n for (const elem of array) {\n this.maybeResize();\n fn(elem);\n }\n }\n toArray() {\n return this.buf.subarray(0, this.length);\n }\n}\nexports.BinaryWriter = BinaryWriter;\nfunction handlingRangeError(target, propertyKey, propertyDescriptor) {\n const originalMethod = propertyDescriptor.value;\n propertyDescriptor.value = function (...args) {\n try {\n return originalMethod.apply(this, args);\n }\n catch (e) {\n if (e instanceof RangeError) {\n const code = e.code;\n if ([\"ERR_BUFFER_OUT_OF_BOUNDS\", \"ERR_OUT_OF_RANGE\"].indexOf(code) >= 0) {\n throw new BorshError(\"Reached the end of buffer when deserializing\");\n }\n }\n throw e;\n }\n };\n}\nclass BinaryReader {\n constructor(buf) {\n this.buf = buf;\n this.offset = 0;\n }\n readU8() {\n const value = this.buf.readUInt8(this.offset);\n this.offset += 1;\n return value;\n }\n readU16() {\n const value = this.buf.readUInt16LE(this.offset);\n this.offset += 2;\n return value;\n }\n readU32() {\n const value = this.buf.readUInt32LE(this.offset);\n this.offset += 4;\n return value;\n }\n readU64() {\n const buf = this.readBuffer(8);\n return new bn_js_1.default(buf, \"le\");\n }\n readU128() {\n const buf = this.readBuffer(16);\n return new bn_js_1.default(buf, \"le\");\n }\n readU256() {\n const buf = this.readBuffer(32);\n return new bn_js_1.default(buf, \"le\");\n }\n readU512() {\n const buf = this.readBuffer(64);\n return new bn_js_1.default(buf, \"le\");\n }\n readBuffer(len) {\n if (this.offset + len > this.buf.length) {\n throw new BorshError(`Expected buffer length ${len} isn't within bounds`);\n }\n const result = this.buf.slice(this.offset, this.offset + len);\n this.offset += len;\n return result;\n }\n readString() {\n const len = this.readU32();\n const buf = this.readBuffer(len);\n try {\n // NOTE: Using TextDecoder to fail on invalid UTF-8\n return textDecoder.decode(buf);\n }\n catch (e) {\n throw new BorshError(`Error decoding UTF-8 string: ${e}`);\n }\n }\n readFixedArray(len) {\n return new Uint8Array(this.readBuffer(len));\n }\n readArray(fn) {\n const len = this.readU32();\n const result = Array();\n for (let i = 0; i < len; ++i) {\n result.push(fn());\n }\n return result;\n }\n}\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU8\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU16\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU32\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU64\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU128\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU256\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU512\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readString\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readFixedArray\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readArray\", null);\nexports.BinaryReader = BinaryReader;\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nfunction serializeField(schema, fieldName, value, fieldType, writer) {\n try {\n // TODO: Handle missing values properly (make sure they never result in just skipped write)\n if (typeof fieldType === \"string\") {\n writer[`write${capitalizeFirstLetter(fieldType)}`](value);\n }\n else if (fieldType instanceof Array) {\n if (typeof fieldType[0] === \"number\") {\n if (value.length !== fieldType[0]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[0]}, but got ${value.length} bytes`);\n }\n writer.writeFixedArray(value);\n }\n else if (fieldType.length === 2 && typeof fieldType[1] === \"number\") {\n if (value.length !== fieldType[1]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[1]}, but got ${value.length} bytes`);\n }\n for (let i = 0; i < fieldType[1]; i++) {\n serializeField(schema, null, value[i], fieldType[0], writer);\n }\n }\n else {\n writer.writeArray(value, (item) => {\n serializeField(schema, fieldName, item, fieldType[0], writer);\n });\n }\n }\n else if (fieldType.kind !== undefined) {\n switch (fieldType.kind) {\n case \"option\": {\n if (value === null || value === undefined) {\n writer.writeU8(0);\n }\n else {\n writer.writeU8(1);\n serializeField(schema, fieldName, value, fieldType.type, writer);\n }\n break;\n }\n case \"map\": {\n writer.writeU32(value.size);\n value.forEach((val, key) => {\n serializeField(schema, fieldName, key, fieldType.key, writer);\n serializeField(schema, fieldName, val, fieldType.value, writer);\n });\n break;\n }\n default:\n throw new BorshError(`FieldType ${fieldType} unrecognized`);\n }\n }\n else {\n serializeStruct(schema, value, writer);\n }\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction serializeStruct(schema, obj, writer) {\n if (typeof obj.borshSerialize === \"function\") {\n obj.borshSerialize(writer);\n return;\n }\n const structSchema = schema.get(obj.constructor);\n if (!structSchema) {\n throw new BorshError(`Class ${obj.constructor.name} is missing in schema`);\n }\n if (structSchema.kind === \"struct\") {\n structSchema.fields.map(([fieldName, fieldType]) => {\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n });\n }\n else if (structSchema.kind === \"enum\") {\n const name = obj[structSchema.field];\n for (let idx = 0; idx < structSchema.values.length; ++idx) {\n const [fieldName, fieldType] = structSchema.values[idx];\n if (fieldName === name) {\n writer.writeU8(idx);\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n break;\n }\n }\n }\n else {\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${obj.constructor.name}`);\n }\n}\n/// Serialize given object using schema of the form:\n/// { class_name -> [ [field_name, field_type], .. ], .. }\nfunction serialize(schema, obj, Writer = BinaryWriter) {\n const writer = new Writer();\n serializeStruct(schema, obj, writer);\n return writer.toArray();\n}\nexports.serialize = serialize;\nfunction deserializeField(schema, fieldName, fieldType, reader) {\n try {\n if (typeof fieldType === \"string\") {\n return reader[`read${capitalizeFirstLetter(fieldType)}`]();\n }\n if (fieldType instanceof Array) {\n if (typeof fieldType[0] === \"number\") {\n return reader.readFixedArray(fieldType[0]);\n }\n else if (typeof fieldType[1] === \"number\") {\n const arr = [];\n for (let i = 0; i < fieldType[1]; i++) {\n arr.push(deserializeField(schema, null, fieldType[0], reader));\n }\n return arr;\n }\n else {\n return reader.readArray(() => deserializeField(schema, fieldName, fieldType[0], reader));\n }\n }\n if (fieldType.kind === \"option\") {\n const option = reader.readU8();\n if (option) {\n return deserializeField(schema, fieldName, fieldType.type, reader);\n }\n return undefined;\n }\n if (fieldType.kind === \"map\") {\n let map = new Map();\n const length = reader.readU32();\n for (let i = 0; i < length; i++) {\n const key = deserializeField(schema, fieldName, fieldType.key, reader);\n const val = deserializeField(schema, fieldName, fieldType.value, reader);\n map.set(key, val);\n }\n return map;\n }\n return deserializeStruct(schema, fieldType, reader);\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction deserializeStruct(schema, classType, reader) {\n if (typeof classType.borshDeserialize === \"function\") {\n return classType.borshDeserialize(reader);\n }\n const structSchema = schema.get(classType);\n if (!structSchema) {\n throw new BorshError(`Class ${classType.name} is missing in schema`);\n }\n if (structSchema.kind === \"struct\") {\n const result = {};\n for (const [fieldName, fieldType] of schema.get(classType).fields) {\n result[fieldName] = deserializeField(schema, fieldName, fieldType, reader);\n }\n return new classType(result);\n }\n if (structSchema.kind === \"enum\") {\n const idx = reader.readU8();\n if (idx >= structSchema.values.length) {\n throw new BorshError(`Enum index: ${idx} is out of range`);\n }\n const [fieldName, fieldType] = structSchema.values[idx];\n const fieldValue = deserializeField(schema, fieldName, fieldType, reader);\n return new classType({ [fieldName]: fieldValue });\n }\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${classType.constructor.name}`);\n}\n/// Deserializes object from bytes using schema.\nfunction deserialize(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n const result = deserializeStruct(schema, classType, reader);\n if (reader.offset < buffer.length) {\n throw new BorshError(`Unexpected ${buffer.length - reader.offset} bytes after deserialized data`);\n }\n return result;\n}\nexports.deserialize = deserialize;\n/// Deserializes object from bytes using schema, without checking the length read\nfunction deserializeUnchecked(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n return deserializeStruct(schema, classType, reader);\n}\nexports.deserializeUnchecked = deserializeUnchecked;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapTypeEnum = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nclass SwapTypeEnum {\r\n static toChainSwapType(data) {\r\n const text = Object.keys(data)[0];\r\n if (text === \"htlc\")\r\n return base_1.ChainSwapType.HTLC;\r\n if (text === \"chain\")\r\n return base_1.ChainSwapType.CHAIN;\r\n if (text === \"chainNonced\")\r\n return base_1.ChainSwapType.CHAIN_NONCED;\r\n if (text === \"chainTxhash\")\r\n return base_1.ChainSwapType.CHAIN_TXID;\r\n return null;\r\n }\r\n static toNumber(data) {\r\n const text = Object.keys(data)[0];\r\n if (text === \"htlc\")\r\n return 0;\r\n if (text === \"chain\")\r\n return 1;\r\n if (text === \"chainNonced\")\r\n return 2;\r\n if (text === \"chainTxhash\")\r\n return 3;\r\n return null;\r\n }\r\n static fromNumber(kind) {\r\n if (kind === 0)\r\n return { htlc: null };\r\n if (kind === 1)\r\n return { chain: null };\r\n if (kind === 2)\r\n return { chainNonced: null };\r\n if (kind === 3)\r\n return { chainTxhash: null };\r\n }\r\n}\r\nexports.SwapTypeEnum = SwapTypeEnum;\r\n;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CoinGeckoPriceProvider = void 0;\r\nconst HttpPriceProvider_1 = require(\"./abstract/HttpPriceProvider\");\r\nconst Utils_1 = require(\"../../utils/Utils\");\r\nclass CoinGeckoPriceProvider extends HttpPriceProvider_1.HttpPriceProvider {\r\n constructor(coinsMap, url = \"https://api.coingecko.com/api/v3\", httpRequestTimeout) {\r\n super(coinsMap, url, httpRequestTimeout);\r\n }\r\n async fetchPrice(token, abortSignal) {\r\n let response = await (0, Utils_1.httpGet)(this.url + \"/simple/price?ids=\" + token.coinId + \"&vs_currencies=sats&precision=6\", this.httpRequestTimeout, abortSignal);\r\n return BigInt(response[token.coinId].sats * 1000000);\r\n }\r\n async fetchUsdPrice(abortSignal) {\r\n let response = await (0, Utils_1.httpGet)(this.url + \"/simple/price?ids=bitcoin&vs_currencies=usd&precision=9\", this.httpRequestTimeout, abortSignal);\r\n return response[\"bitcoin\"].usd / 100000000;\r\n }\r\n}\r\nexports.CoinGeckoPriceProvider = CoinGeckoPriceProvider;\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_hourglass_empty_outline = void 0;\nvar ic_hourglass_empty_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M0 0h24v24H0V0z\",\n \"fill\": \"none\"\n },\n \"children\": []\n }, {\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5l-4-4V4h8v3.5l-4 4z\"\n },\n \"children\": []\n }]\n};\nexports.ic_hourglass_empty_outline = ic_hourglass_empty_outline;","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface AmountToUiAmountInstructionData {\n instruction: TokenInstruction.AmountToUiAmount;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const amountToUiAmountInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n]);\n\n/**\n * Construct a AmountToUiAmount instruction\n *\n * @param mint Public key of the mint\n * @param amount Amount of tokens to be converted to UiAmount\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAmountToUiAmountInstruction(\n mint: PublicKey,\n amount: number | bigint,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [{ pubkey: mint, isSigner: false, isWritable: false }];\n\n const data = Buffer.alloc(amountToUiAmountInstructionData.span);\n amountToUiAmountInstructionData.encode(\n {\n instruction: TokenInstruction.AmountToUiAmount,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid AmountToUiAmount instruction */\nexport interface DecodedAmountToUiAmountInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.AmountToUiAmount;\n amount: bigint;\n };\n}\n\n/**\n * Decode a AmountToUiAmount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeAmountToUiAmountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedAmountToUiAmountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== amountToUiAmountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeAmountToUiAmountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.AmountToUiAmount) throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated AmountToUiAmount instruction */\nexport interface DecodedAmountToUiAmountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a AmountToUiAmount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeAmountToUiAmountInstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedAmountToUiAmountInstructionUnchecked {\n return {\n programId,\n keys: {\n mint,\n },\n data: amountToUiAmountInstructionData.decode(data),\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bitcoin = void 0;\nvar bitcoin = {\n \"viewBox\": \"0 0 1280 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M1167 640q18 182-131 258 117 28 175 103t45 214q-7 71-32.5 125t-64.5 89-97 58.5-121.5 34.5-145.5 15v255h-154v-251q-80 0-122-1v252h-154v-255q-18 0-54-0.5t-55-0.5h-200l31-183h111q50 0 58-51v-402h16q-6-1-16-1v-287q-13-68-89-68h-111v-164l212 1q64 0 97-1v-252h154v247q82-2 122-2v-245h154v252q79 7 140 22.5t113 45 82.5 78 36.5 114.5zM952 1185q0-36-15-64t-37-46-57.5-30.5-65.5-18.5-74-9-69-3-64.5 1-47.5 1v338q8 0 37 0.5t48 0.5 53-1.5 58.5-4 57-8.5 55.5-14 47.5-21 39.5-30 24.5-40 9.5-51zM881 709q0-33-12.5-58.5t-30.5-42-48-28-55-16.5-61.5-8-58-2.5-54 1-39.5 0.5v307q5 0 34.5 0.5t46.5 0 50-2 55-5.5 51.5-11 48.5-18.5 37-27 27-38.5 9-51z\"\n }\n }]\n};\nexports.bitcoin = bitcoin;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ic_verified_outline = void 0;\nvar ic_verified_outline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": [{\n \"name\": \"rect\",\n \"attribs\": {\n \"fill\": \"none\",\n \"height\": \"24\",\n \"width\": \"24\"\n },\n \"children\": []\n }]\n }]\n }, {\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"g\",\n \"attribs\": {},\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M23,11.99l-2.44-2.79l0.34-3.69l-3.61-0.82L15.4,1.5L12,2.96L8.6,1.5L6.71,4.69L3.1,5.5L3.44,9.2L1,11.99l2.44,2.79 l-0.34,3.7l3.61,0.82L8.6,22.5l3.4-1.47l3.4,1.46l1.89-3.19l3.61-0.82l-0.34-3.69L23,11.99z M19.05,13.47l-0.56,0.65l0.08,0.85 l0.18,1.95l-1.9,0.43l-0.84,0.19l-0.44,0.74l-0.99,1.68l-1.78-0.77L12,18.85l-0.79,0.34l-1.78,0.77l-0.99-1.67l-0.44-0.74 l-0.84-0.19l-1.9-0.43l0.18-1.96l0.08-0.85l-0.56-0.65l-1.29-1.47l1.29-1.48l0.56-0.65L5.43,9.01L5.25,7.07l1.9-0.43l0.84-0.19 l0.44-0.74l0.99-1.68l1.78,0.77L12,5.14l0.79-0.34l1.78-0.77l0.99,1.68l0.44,0.74l0.84,0.19l1.9,0.43l-0.18,1.95l-0.08,0.85 l0.56,0.65l1.29,1.47L19.05,13.47z\"\n },\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M23,11.99l-2.44-2.79l0.34-3.69l-3.61-0.82L15.4,1.5L12,2.96L8.6,1.5L6.71,4.69L3.1,5.5L3.44,9.2L1,11.99l2.44,2.79 l-0.34,3.7l3.61,0.82L8.6,22.5l3.4-1.47l3.4,1.46l1.89-3.19l3.61-0.82l-0.34-3.69L23,11.99z M19.05,13.47l-0.56,0.65l0.08,0.85 l0.18,1.95l-1.9,0.43l-0.84,0.19l-0.44,0.74l-0.99,1.68l-1.78-0.77L12,18.85l-0.79,0.34l-1.78,0.77l-0.99-1.67l-0.44-0.74 l-0.84-0.19l-1.9-0.43l0.18-1.96l0.08-0.85l-0.56-0.65l-1.29-1.47l1.29-1.48l0.56-0.65L5.43,9.01L5.25,7.07l1.9-0.43l0.84-0.19 l0.44-0.74l0.99-1.68l1.78,0.77L12,5.14l0.79-0.34l1.78-0.77l0.99,1.68l0.44,0.74l0.84,0.19l1.9,0.43l-0.18,1.95l-0.08,0.85 l0.56,0.65l1.29,1.47L19.05,13.47z\"\n },\n \"children\": []\n }]\n }, {\n \"name\": \"polygon\",\n \"attribs\": {\n \"points\": \"10.09,13.75 7.77,11.42 6.29,12.91 10.09,16.72 17.43,9.36 15.95,7.87\"\n },\n \"children\": [{\n \"name\": \"polygon\",\n \"attribs\": {\n \"points\": \"10.09,13.75 7.77,11.42 6.29,12.91 10.09,16.72 17.43,9.36 15.95,7.87\"\n },\n \"children\": []\n }]\n }]\n }]\n }]\n }]\n};\nexports.ic_verified_outline = ic_verified_outline;","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass, CurveType } from './abstract/weierstrass.js';\nimport { CHash } from './abstract/utils.js';\n\n// connects noble-curves to noble-hashes\nexport function getHash(hash: CHash) {\n return {\n hash,\n hmac: (key: Uint8Array, ...msgs: Uint8Array[]) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\n// Same API as @noble/hashes, with ability to create curve with custom hash\ntype CurveDef = Readonly>;\nexport function createCurve(curveDef: CurveDef, defHash: CHash) {\n const create = (hash: CHash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\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// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ISwap = exports.isISwapInit = void 0;\r\nconst SwapType_1 = require(\"./SwapType\");\r\nconst events_1 = require(\"events\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst ISwapPrice_1 = require(\"../prices/abstract/ISwapPrice\");\r\nconst Utils_1 = require(\"../utils/Utils\");\r\nconst Tokens_1 = require(\"./Tokens\");\r\nconst SwapDirection_1 = require(\"./SwapDirection\");\r\nconst randomBytes = require(\"randombytes\");\r\nfunction isISwapInit(obj) {\r\n return typeof obj === 'object' &&\r\n obj != null &&\r\n (0, ISwapPrice_1.isPriceInfoType)(obj.pricingInfo) &&\r\n typeof obj.url === 'string' &&\r\n typeof obj.expiry === 'number' &&\r\n typeof (obj.swapFee) === \"bigint\" &&\r\n (obj.swapFeeBtc == null || typeof (obj.swapFeeBtc) === \"bigint\") &&\r\n obj.feeRate != null &&\r\n (obj.signatureData == null || (typeof (obj.signatureData) === 'object' &&\r\n typeof (obj.signatureData.prefix) === \"string\" &&\r\n typeof (obj.signatureData.timeout) === \"string\" &&\r\n typeof (obj.signatureData.signature) === \"string\")) &&\r\n (obj.data == null || typeof obj.data === 'object') &&\r\n (typeof obj.exactIn === 'boolean');\r\n}\r\nexports.isISwapInit = isISwapInit;\r\nclass ISwap {\r\n constructor(wrapper, swapInitOrObj) {\r\n this.currentVersion = 1;\r\n this.initiated = false;\r\n /**\r\n * Event emitter emitting \"swapState\" event when swap's state changes\r\n */\r\n this.events = new events_1.EventEmitter();\r\n this.chainIdentifier = wrapper.chainIdentifier;\r\n this.wrapper = wrapper;\r\n if (isISwapInit(swapInitOrObj)) {\r\n Object.assign(this, swapInitOrObj);\r\n this.version = this.currentVersion;\r\n this.createdAt = Date.now();\r\n this.randomNonce = randomBytes(16).toString(\"hex\");\r\n }\r\n else {\r\n this.expiry = swapInitOrObj.expiry;\r\n this.url = swapInitOrObj.url;\r\n this.state = swapInitOrObj.state;\r\n this.pricingInfo = {\r\n isValid: swapInitOrObj._isValid,\r\n differencePPM: swapInitOrObj._differencePPM == null ? null : BigInt(swapInitOrObj._differencePPM),\r\n satsBaseFee: swapInitOrObj._satsBaseFee == null ? null : BigInt(swapInitOrObj._satsBaseFee),\r\n feePPM: swapInitOrObj._feePPM == null ? null : BigInt(swapInitOrObj._feePPM),\r\n realPriceUSatPerToken: swapInitOrObj._realPriceUSatPerToken == null ? null : BigInt(swapInitOrObj._realPriceUSatPerToken),\r\n swapPriceUSatPerToken: swapInitOrObj._swapPriceUSatPerToken == null ? null : BigInt(swapInitOrObj._swapPriceUSatPerToken),\r\n };\r\n this.data = swapInitOrObj.data != null ? new wrapper.swapDataDeserializer(swapInitOrObj.data) : null;\r\n this.swapFee = swapInitOrObj.swapFee == null ? null : BigInt(swapInitOrObj.swapFee);\r\n this.swapFeeBtc = swapInitOrObj.swapFeeBtc == null ? null : BigInt(swapInitOrObj.swapFeeBtc);\r\n this.signatureData = swapInitOrObj.signature == null ? null : {\r\n prefix: swapInitOrObj.prefix,\r\n timeout: swapInitOrObj.timeout,\r\n signature: swapInitOrObj.signature\r\n };\r\n this.feeRate = swapInitOrObj.feeRate;\r\n this.commitTxId = swapInitOrObj.commitTxId;\r\n this.claimTxId = swapInitOrObj.claimTxId;\r\n this.refundTxId = swapInitOrObj.refundTxId;\r\n this.version = swapInitOrObj.version;\r\n this.initiated = swapInitOrObj.initiated;\r\n this.exactIn = swapInitOrObj.exactIn;\r\n this.createdAt = swapInitOrObj.createdAt ?? swapInitOrObj.expiry;\r\n this.randomNonce = swapInitOrObj.randomNonce;\r\n }\r\n if (this.version !== this.currentVersion) {\r\n this.upgradeVersion();\r\n }\r\n if (this.initiated == null)\r\n this.initiated = true;\r\n }\r\n /**\r\n * Periodically checks for init signature's expiry\r\n *\r\n * @param abortSignal\r\n * @param interval How often to check (in seconds), default to 5s\r\n * @protected\r\n */\r\n async watchdogWaitTillSignatureExpiry(abortSignal, interval = 5) {\r\n let expired = false;\r\n while (!expired) {\r\n await (0, Utils_1.timeoutPromise)(interval * 1000, abortSignal);\r\n try {\r\n expired = await this.wrapper.contract.isInitAuthorizationExpired(this.data, this.signatureData);\r\n }\r\n catch (e) {\r\n this.logger.error(\"watchdogWaitTillSignatureExpiry(): Error when checking signature expiry: \", e);\r\n }\r\n }\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n }\r\n /**\r\n * Periodically checks the chain to see whether the swap is committed\r\n *\r\n * @param abortSignal\r\n * @param interval How often to check (in seconds), default to 5s\r\n * @protected\r\n */\r\n async watchdogWaitTillCommited(abortSignal, interval = 5) {\r\n let status = base_1.SwapCommitStatus.NOT_COMMITED;\r\n while (status === base_1.SwapCommitStatus.NOT_COMMITED) {\r\n await (0, Utils_1.timeoutPromise)(interval * 1000, abortSignal);\r\n try {\r\n status = await this.wrapper.contract.getCommitStatus(this.getInitiator(), this.data);\r\n if (status === base_1.SwapCommitStatus.NOT_COMMITED &&\r\n await this.wrapper.contract.isInitAuthorizationExpired(this.data, this.signatureData))\r\n return false;\r\n }\r\n catch (e) {\r\n this.logger.error(\"watchdogWaitTillCommited(): Error when fetching commit status or signature expiry: \", e);\r\n }\r\n }\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n return true;\r\n }\r\n /**\r\n * Periodically checks the chain to see whether the swap was finished (claimed or refunded)\r\n *\r\n * @param abortSignal\r\n * @param interval How often to check (in seconds), default to 5s\r\n * @protected\r\n */\r\n async watchdogWaitTillResult(abortSignal, interval = 5) {\r\n let status = base_1.SwapCommitStatus.COMMITED;\r\n while (status === base_1.SwapCommitStatus.COMMITED || status === base_1.SwapCommitStatus.REFUNDABLE) {\r\n await (0, Utils_1.timeoutPromise)(interval * 1000, abortSignal);\r\n try {\r\n status = await this.wrapper.contract.getCommitStatus(this.getInitiator(), this.data);\r\n }\r\n catch (e) {\r\n this.logger.error(\"watchdogWaitTillResult(): Error when fetching commit status: \", e);\r\n }\r\n }\r\n if (abortSignal != null)\r\n abortSignal.throwIfAborted();\r\n return status;\r\n }\r\n /**\r\n * Waits till the swap reaches a specific state\r\n *\r\n * @param targetState The state to wait for\r\n * @param type Whether to wait for the state exactly or also to a state with a higher number\r\n * @param abortSignal\r\n * @protected\r\n */\r\n waitTillState(targetState, type = \"eq\", abortSignal) {\r\n return new Promise((resolve, reject) => {\r\n let listener;\r\n listener = (swap) => {\r\n if (type === \"eq\" ? swap.state === targetState : type === \"gte\" ? swap.state >= targetState : swap.state != targetState) {\r\n resolve();\r\n this.events.removeListener(\"swapState\", listener);\r\n }\r\n };\r\n this.events.on(\"swapState\", listener);\r\n if (abortSignal != null)\r\n abortSignal.addEventListener(\"abort\", () => {\r\n this.events.removeListener(\"swapState\", listener);\r\n reject(abortSignal.reason);\r\n });\r\n });\r\n }\r\n //////////////////////////////\r\n //// Pricing\r\n /**\r\n * Checks if the pricing for the swap is valid, according to max allowed price difference set in the ISwapPrice\r\n */\r\n hasValidPrice() {\r\n return this.pricingInfo == null ? null : this.pricingInfo.isValid;\r\n }\r\n /**\r\n * Returns the price difference between offered price and current market price in PPM (parts per million)\r\n */\r\n getPriceDifferencePPM() {\r\n return this.pricingInfo == null ? null : this.pricingInfo.differencePPM;\r\n }\r\n /**\r\n * Returns the price difference between offered price and current market price as a decimal number\r\n */\r\n getPriceDifferencePct() {\r\n return this.pricingInfo == null ? null : this.pricingInfo.differencePPM == null ? null : Number(this.pricingInfo.differencePPM) / 1000000;\r\n }\r\n /**\r\n * Returns the escrow hash - i.e. hash of the escrow data\r\n */\r\n getEscrowHash() {\r\n return this.data?.getEscrowHash();\r\n }\r\n /**\r\n * Returns the claim data hash - i.e. hash passed to the claim handler\r\n */\r\n getClaimHash() {\r\n return this.data?.getClaimHash();\r\n }\r\n /**\r\n * Returns the identification hash of the swap, usually claim data hash, but can be overriden, e.g. for\r\n * lightning swaps the identifier hash is used instead of claim data hash\r\n */\r\n getIdentifierHash() {\r\n const claimHashBuffer = buffer_1.Buffer.from(this.getClaimHash(), \"hex\");\r\n if (this.randomNonce == null)\r\n return claimHashBuffer;\r\n return buffer_1.Buffer.concat([claimHashBuffer, buffer_1.Buffer.from(this.randomNonce, \"hex\")]);\r\n }\r\n /**\r\n * Returns the identification hash of the swap, usually claim data hash, but can be overriden, e.g. for\r\n * lightning swaps the identifier hash is used instead of claim data hash\r\n */\r\n getIdentifierHashString() {\r\n const paymentHash = this.getIdentifierHash();\r\n if (paymentHash == null)\r\n return null;\r\n return paymentHash.toString(\"hex\");\r\n }\r\n /**\r\n * Returns the ID of the swap, as used in the storage and getSwapById function\r\n */\r\n getId() {\r\n return this.getIdentifierHashString();\r\n }\r\n /**\r\n * Returns quote expiry in UNIX millis\r\n */\r\n getExpiry() {\r\n return this.expiry;\r\n }\r\n /**\r\n * Returns the type of the swap\r\n */\r\n getType() {\r\n return this.TYPE;\r\n }\r\n /**\r\n * Returns the direction of the swap\r\n */\r\n getDirection() {\r\n return this.TYPE === SwapType_1.SwapType.FROM_BTCLN || this.TYPE === SwapType_1.SwapType.FROM_BTC ? SwapDirection_1.SwapDirection.FROM_BTC : SwapDirection_1.SwapDirection.TO_BTC;\r\n }\r\n /**\r\n * Returns the current state of the swap\r\n */\r\n getState() {\r\n return this.state;\r\n }\r\n /**\r\n * @param signer Signer to check with this swap's initiator\r\n * @throws {Error} When signer's address doesn't match with the swap's initiator one\r\n */\r\n checkSigner(signer) {\r\n if ((typeof (signer) === \"string\" ? signer : signer.getAddress()) !== this.getInitiator())\r\n throw new Error(\"Invalid signer provided!\");\r\n }\r\n /**\r\n * Checks if the swap's quote is still valid\r\n */\r\n async isQuoteValid() {\r\n try {\r\n await (0, Utils_1.tryWithRetries)(() => this.wrapper.contract.isValidInitAuthorization(this.data, this.signatureData, this.feeRate), null, base_1.SignatureVerificationError);\r\n return true;\r\n }\r\n catch (e) {\r\n if (e instanceof base_1.SignatureVerificationError) {\r\n return false;\r\n }\r\n }\r\n }\r\n isInitiated() {\r\n return this.initiated;\r\n }\r\n //////////////////////////////\r\n //// Amounts & fees\r\n /**\r\n * Get the estimated smart chain fee of the commit transaction\r\n */\r\n getCommitFee() {\r\n return this.wrapper.contract.getCommitFee(this.data, this.feeRate);\r\n }\r\n /**\r\n * Returns total fee for the swap, the fee is represented in source currency & destination currency, but is\r\n * paid only once\r\n */\r\n getFee() {\r\n return this.getSwapFee();\r\n }\r\n /**\r\n * Returns the transaction fee paid on the smart chain\r\n */\r\n async getSmartChainNetworkFee() {\r\n const swapContract = this.wrapper.contract;\r\n return (0, Tokens_1.toTokenAmount)(await (swapContract.getRawCommitFee != null ?\r\n swapContract.getRawCommitFee(this.data, this.feeRate) :\r\n swapContract.getCommitFee(this.data, this.feeRate)), this.wrapper.getNativeToken(), this.wrapper.prices);\r\n }\r\n //////////////////////////////\r\n //// Storage\r\n serialize() {\r\n if (this.pricingInfo == null)\r\n return {};\r\n return {\r\n id: this.getIdentifierHashString(),\r\n type: this.getType(),\r\n escrowHash: this.getEscrowHash(),\r\n initiator: this.getInitiator(),\r\n _isValid: this.pricingInfo.isValid,\r\n _differencePPM: this.pricingInfo.differencePPM == null ? null : this.pricingInfo.differencePPM.toString(10),\r\n _satsBaseFee: this.pricingInfo.satsBaseFee == null ? null : this.pricingInfo.satsBaseFee.toString(10),\r\n _feePPM: this.pricingInfo.feePPM == null ? null : this.pricingInfo.feePPM.toString(10),\r\n _realPriceUSatPerToken: this.pricingInfo.realPriceUSatPerToken == null ? null : this.pricingInfo.realPriceUSatPerToken.toString(10),\r\n _swapPriceUSatPerToken: this.pricingInfo.swapPriceUSatPerToken == null ? null : this.pricingInfo.swapPriceUSatPerToken.toString(10),\r\n state: this.state,\r\n url: this.url,\r\n data: this.data != null ? this.data.serialize() : null,\r\n swapFee: this.swapFee == null ? null : this.swapFee.toString(10),\r\n swapFeeBtc: this.swapFeeBtc == null ? null : this.swapFeeBtc.toString(10),\r\n prefix: this.signatureData?.prefix,\r\n timeout: this.signatureData?.timeout,\r\n signature: this.signatureData?.signature,\r\n feeRate: this.feeRate == null ? null : this.feeRate.toString(),\r\n commitTxId: this.commitTxId,\r\n claimTxId: this.claimTxId,\r\n refundTxId: this.refundTxId,\r\n expiry: this.expiry,\r\n version: this.version,\r\n initiated: this.initiated,\r\n exactIn: this.exactIn,\r\n createdAt: this.createdAt,\r\n randomNonce: this.randomNonce\r\n };\r\n }\r\n _save() {\r\n if (this.isQuoteExpired()) {\r\n return this.wrapper.removeSwapData(this);\r\n }\r\n else {\r\n return this.wrapper.saveSwapData(this);\r\n }\r\n }\r\n async _saveAndEmit(state) {\r\n if (state != null)\r\n this.state = state;\r\n await this._save();\r\n this._emitEvent();\r\n }\r\n //////////////////////////////\r\n //// Events\r\n _emitEvent() {\r\n this.wrapper.events.emit(\"swapState\", this);\r\n this.events.emit(\"swapState\", this);\r\n }\r\n}\r\nexports.ISwap = ISwap;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwapDataVerificationError = void 0;\r\nclass SwapDataVerificationError extends Error {\r\n constructor(msg) {\r\n super(msg);\r\n // Set the prototype explicitly.\r\n Object.setPrototypeOf(this, SwapDataVerificationError.prototype);\r\n }\r\n}\r\nexports.SwapDataVerificationError = SwapDataVerificationError;\r\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","import { seq, struct, u16, u8 } from '@solana/buffer-layout';\nimport type { PublicKey, Signer } from '@solana/web3.js';\nimport { SystemProgram, TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../constants.js';\nimport { TokenUnsupportedInstructionError } from '../errors.js';\nimport type { ExtensionType } from '../extensions/extensionType.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface ReallocateInstructionData {\n instruction: TokenInstruction.Reallocate;\n extensionTypes: ExtensionType[];\n}\n\n/**\n * Construct a Reallocate instruction\n *\n * @param account Address of the token account\n * @param payer Address paying for the reallocation\n * @param extensionTypes Extensions to reallocate for\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createReallocateInstruction(\n account: PublicKey,\n payer: PublicKey,\n extensionTypes: ExtensionType[],\n owner: PublicKey,\n multiSigners: (Signer | PublicKey)[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const baseKeys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n ];\n const keys = addSigners(baseKeys, owner, multiSigners);\n\n const reallocateInstructionData = struct([\n u8('instruction'),\n seq(u16(), extensionTypes.length, 'extensionTypes'),\n ]);\n const data = Buffer.alloc(reallocateInstructionData.span);\n reallocateInstructionData.encode({ instruction: TokenInstruction.Reallocate, extensionTypes }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport {\n bitMask,\n numberToBytesBE,\n numberToBytesLE,\n bytesToNumberBE,\n bytesToNumberLE,\n ensureBytes,\n validateObject,\n} from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n\n// Calculates a modulo b\nexport function mod(a: bigint, b: bigint): bigint {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num: bigint, power: bigint, modulo: bigint): bigint {\n if (modulo <= _0n || power < _0n) throw new Error('Expected power/modulo > 0');\n if (modulo === _1n) return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n) res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x: bigint, power: bigint, modulo: bigint): bigint {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n\n// Inverses number over modulo\nexport function invert(number: bigint, modulo: bigint): bigint {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n) throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P: bigint) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n\n let Q: bigint, S: number, Z: bigint;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++);\n\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++);\n\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp: IField, n: T): T {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE)) throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO)) return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE)) break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\n\nexport function FpSqrt(P: bigint) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4(Fp: IField, n: T) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8(Fp: IField, n: T) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num: bigint, modulo: bigint) => (mod(num, modulo) & _1n) === _1n;\n\n// Field is not always over prime: for example, Fp2 has ORDER(q)=p^m\nexport interface IField {\n ORDER: bigint;\n BYTES: number;\n BITS: number;\n MASK: bigint;\n ZERO: T;\n ONE: T;\n // 1-arg\n create: (num: T) => T;\n isValid: (num: T) => boolean;\n is0: (num: T) => boolean;\n neg(num: T): T;\n inv(num: T): T;\n sqrt(num: T): T;\n sqr(num: T): T;\n // 2-args\n eql(lhs: T, rhs: T): boolean;\n add(lhs: T, rhs: T): T;\n sub(lhs: T, rhs: T): T;\n mul(lhs: T, rhs: T | bigint): T;\n pow(lhs: T, power: bigint): T;\n div(lhs: T, rhs: T | bigint): T;\n // N for NonNormalized (for now)\n addN(lhs: T, rhs: T): T;\n subN(lhs: T, rhs: T): T;\n mulN(lhs: T, rhs: T | bigint): T;\n sqrN(num: T): T;\n\n // Optional\n // Should be same as sgn0 function in\n // [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#section-4.1).\n // NOTE: sgn0 is 'negative in LE', which is same as odd. And negative in LE is kinda strange definition anyway.\n isOdd?(num: T): boolean; // Odd instead of even since we have it for Fp2\n // legendre?(num: T): T;\n pow(lhs: T, power: bigint): T;\n invertBatch: (lst: T[]) => T[];\n toBytes(num: T): Uint8Array;\n fromBytes(bytes: Uint8Array): T;\n // If c is False, CMOV returns a, otherwise it returns b.\n cmov(a: T, b: T, c: boolean): T;\n}\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n] as const;\nexport function validateField(field: IField) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n } as Record;\n const opts = FIELD_FIELDS.reduce((map, val: string) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n\n// Generic field functions\n\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(f: IField, num: T, power: bigint): T {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n) throw new Error('Expected power > 0');\n if (power === _0n) return f.ONE;\n if (power === _1n) return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n) p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch(f: IField, nums: T[]): T[] {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\n\nexport function FpDiv(f: IField, lhs: T, rhs: T | bigint): T {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(f: IField) {\n const legendreConst = (f.ORDER - _1n) / _2n; // Integer arithmetic\n return (x: T): boolean => {\n const p = f.pow(x, legendreConst);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n\n// CURVE.n lengths\nexport function nLength(n: bigint, nBitLength?: number) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n\ntype FpField = IField & Required, 'isOdd'>>;\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(\n ORDER: bigint,\n bitLen?: number,\n isLE = false,\n redef: Partial> = {}\n): Readonly {\n if (ORDER <= _0n) throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048) throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f: Readonly = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n } as FpField);\n return Object.freeze(f);\n}\n\nexport function FpSqrtOdd(Fp: IField, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\n\nexport function FpSqrtEven(Fp: IField, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(\n hash: string | Uint8Array,\n groupOrder: bigint,\n isLE = false\n): bigint {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder: bigint): number {\n if (typeof fieldOrder !== 'bigint') throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder: bigint): number {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE = false): Uint8Array {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetBtcStoredHeader = void 0;\r\nconst base_1 = require(\"@atomiqlabs/base\");\r\nconst StarknetBtcHeader_1 = require(\"./StarknetBtcHeader\");\r\nconst buffer_1 = require(\"buffer\");\r\nconst starknet_1 = require(\"starknet\");\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nclass StarknetBtcStoredHeader {\r\n constructor(obj) {\r\n this.blockheader = obj.blockheader instanceof StarknetBtcHeader_1.StarknetBtcHeader ? obj.blockheader : new StarknetBtcHeader_1.StarknetBtcHeader(obj.blockheader);\r\n this.block_hash = obj.block_hash.map(val => Number(val));\r\n this.chain_work = (0, Utils_1.isUint256)(obj.chain_work) ? obj.chain_work : starknet_1.cairo.uint256(obj.chain_work);\r\n this.block_height = Number(obj.block_height);\r\n this.last_diff_adjustment = Number(obj.last_diff_adjustment);\r\n this.prev_block_timestamps = obj.prev_block_timestamps.map(val => Number(val));\r\n }\r\n getBlockheight() {\r\n return this.block_height;\r\n }\r\n getChainWork() {\r\n return (0, Utils_1.bigNumberishToBuffer)(this.chain_work, 32);\r\n }\r\n getHeader() {\r\n return this.blockheader;\r\n }\r\n getLastDiffAdjustment() {\r\n return this.last_diff_adjustment;\r\n }\r\n getPrevBlockTimestamps() {\r\n return this.prev_block_timestamps;\r\n }\r\n getBlockHash() {\r\n return (0, Utils_1.u32ArrayToBuffer)(this.block_hash).reverse();\r\n }\r\n /**\r\n * Computes prevBlockTimestamps for a next block, shifting the old block timestamps to the left & appending\r\n * this block's timestamp to the end\r\n *\r\n * @private\r\n */\r\n computeNextBlockTimestamps() {\r\n const prevBlockTimestamps = [...this.prev_block_timestamps];\r\n for (let i = 1; i < 10; i++) {\r\n prevBlockTimestamps[i - 1] = prevBlockTimestamps[i];\r\n }\r\n prevBlockTimestamps[9] = this.blockheader.getTimestamp();\r\n return prevBlockTimestamps;\r\n }\r\n /**\r\n * Computes total chain work after a new header with \"nbits\" is added to the chain\r\n *\r\n * @param nbits\r\n * @private\r\n */\r\n computeNextChainWork(nbits) {\r\n const chainWork = [...this.getChainWork()];\r\n base_1.StatePredictorUtils.addInPlace(chainWork, [...base_1.StatePredictorUtils.getChainwork(nbits)]);\r\n return buffer_1.Buffer.from(chainWork);\r\n }\r\n /**\r\n * Computes lastDiffAdjustment, this changes only once every DIFF_ADJUSTMENT_PERIOD blocks\r\n *\r\n * @param headerTimestamp\r\n * @private\r\n */\r\n computeNextLastDiffAdjustment(headerTimestamp) {\r\n const blockheight = this.block_height + 1;\r\n let lastDiffAdjustment = this.last_diff_adjustment;\r\n if (blockheight % base_1.StatePredictorUtils.DIFF_ADJUSTMENT_PERIOD === 0) {\r\n lastDiffAdjustment = headerTimestamp;\r\n }\r\n return lastDiffAdjustment;\r\n }\r\n computeNext(header) {\r\n return new StarknetBtcStoredHeader({\r\n chain_work: \"0x\" + this.computeNextChainWork(header.getNbits()).toString(\"hex\"),\r\n prev_block_timestamps: this.computeNextBlockTimestamps(),\r\n block_height: this.block_height + 1,\r\n last_diff_adjustment: this.computeNextLastDiffAdjustment(header.getTimestamp()),\r\n block_hash: (0, Utils_1.bufferToU32Array)(header.getHash()),\r\n blockheader: header\r\n });\r\n }\r\n serialize() {\r\n return [\r\n ...this.blockheader.serialize(),\r\n ...this.block_hash,\r\n this.chain_work.low,\r\n this.chain_work.high,\r\n this.block_height,\r\n this.last_diff_adjustment,\r\n ...this.prev_block_timestamps\r\n ];\r\n }\r\n static fromSerializedFeltArray(span) {\r\n const blockheader = StarknetBtcHeader_1.StarknetBtcHeader.fromSerializedFeltArray(span);\r\n const block_hash = span.splice(0, 8).map(Utils_1.toHex);\r\n const chain_work = { low: span.shift(), high: span.shift() };\r\n const block_height = (0, Utils_1.toHex)(span.shift());\r\n const last_diff_adjustment = (0, Utils_1.toHex)(span.shift());\r\n const prev_block_timestamps = span.splice(0, 10).map(Utils_1.toHex);\r\n return new StarknetBtcStoredHeader({\r\n blockheader,\r\n block_hash,\r\n chain_work,\r\n block_height,\r\n last_diff_adjustment,\r\n prev_block_timestamps\r\n });\r\n }\r\n}\r\nexports.StarknetBtcStoredHeader = StarknetBtcStoredHeader;\r\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarknetLpVault = void 0;\r\nconst Utils_1 = require(\"../../../utils/Utils\");\r\nconst StarknetSwapModule_1 = require(\"../StarknetSwapModule\");\r\nconst StarknetAction_1 = require(\"../../base/StarknetAction\");\r\nconst starknet_1 = require(\"starknet\");\r\nclass StarknetLpVault extends StarknetSwapModule_1.StarknetSwapModule {\r\n /**\r\n * Action for withdrawing funds from the LP vault\r\n *\r\n * @param signer\r\n * @param token\r\n * @param amount\r\n * @constructor\r\n * @private\r\n */\r\n Withdraw(signer, token, amount) {\r\n return new StarknetAction_1.StarknetAction(signer, this.root, this.contract.populateTransaction.withdraw(token, starknet_1.cairo.uint256(amount), signer), StarknetLpVault.GasCosts.WITHDRAW);\r\n }\r\n /**\r\n * Action for depositing funds to the LP vault\r\n *\r\n * @param signer\r\n * @param token\r\n * @param amount\r\n * @constructor\r\n * @private\r\n */\r\n Deposit(signer, token, amount) {\r\n return new StarknetAction_1.StarknetAction(signer, this.root, this.contract.populateTransaction.deposit(token, starknet_1.cairo.uint256(amount)), StarknetLpVault.GasCosts.WITHDRAW);\r\n }\r\n /**\r\n * Returns intermediary's reputation & vault balance for a specific token\r\n *\r\n * @param address\r\n * @param token\r\n */\r\n async getIntermediaryData(address, token) {\r\n const [balance, reputation] = await Promise.all([\r\n this.getIntermediaryBalance(address, token),\r\n this.getIntermediaryReputation(address, token)\r\n ]);\r\n return { balance, reputation };\r\n }\r\n /**\r\n * Returns intermediary's reputation for a specific token\r\n *\r\n * @param address\r\n * @param token\r\n */\r\n async getIntermediaryReputation(address, token) {\r\n const filter = Object.keys(this.root.claimHandlersByAddress).map(claimHandler => starknet_1.cairo.tuple(address, token, claimHandler));\r\n const rawReputation = await this.provider.callContract(this.contract.populateTransaction.get_reputation(filter));\r\n const length = (0, Utils_1.toBigInt)(rawReputation.shift());\r\n if (Number(length) !== filter.length)\r\n throw new Error(\"getIntermediaryReputation(): Invalid response length\");\r\n const result = {};\r\n Object.keys(this.root.claimHandlersByAddress).forEach((address) => {\r\n const handler = this.root.claimHandlersByAddress[address];\r\n result[handler.getType()] = {\r\n successVolume: (0, Utils_1.toBigInt)({ low: rawReputation.shift(), high: rawReputation.shift() }),\r\n successCount: (0, Utils_1.toBigInt)(rawReputation.shift()),\r\n coopCloseVolume: (0, Utils_1.toBigInt)({ low: rawReputation.shift(), high: rawReputation.shift() }),\r\n coopCloseCount: (0, Utils_1.toBigInt)(rawReputation.shift()),\r\n failVolume: (0, Utils_1.toBigInt)({ low: rawReputation.shift(), high: rawReputation.shift() }),\r\n failCount: (0, Utils_1.toBigInt)(rawReputation.shift()),\r\n };\r\n });\r\n return result;\r\n }\r\n /**\r\n * Returns the balance of the token an intermediary has in his LP vault\r\n *\r\n * @param address\r\n * @param token\r\n */\r\n async getIntermediaryBalance(address, token) {\r\n const balance = (0, Utils_1.toBigInt)((await this.contract.get_balance([starknet_1.cairo.tuple(address, token)]))[0]);\r\n this.logger.debug(\"getIntermediaryBalance(): token LP balance fetched, token: \" + token.toString() +\r\n \" address: \" + address + \" amount: \" + (balance == null ? \"null\" : balance.toString()));\r\n return balance;\r\n }\r\n /**\r\n * Creates transactions for withdrawing funds from the LP vault, creates ATA if it doesn't exist and unwraps\r\n * WSOL to SOL if required\r\n *\r\n * @param signer\r\n * @param token\r\n * @param amount\r\n * @param feeRate\r\n */\r\n async txsWithdraw(signer, token, amount, feeRate) {\r\n const action = await this.Withdraw(signer, token, amount);\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n this.logger.debug(\"txsWithdraw(): withdraw TX created, token: \" + token.toString() +\r\n \" amount: \" + amount.toString(10));\r\n return [await action.tx(feeRate)];\r\n }\r\n /**\r\n * Creates transaction for depositing funds into the LP vault, wraps SOL to WSOL if required\r\n *\r\n * @param signer\r\n * @param token\r\n * @param amount\r\n * @param feeRate\r\n */\r\n async txsDeposit(signer, token, amount, feeRate) {\r\n //Approve first\r\n const action = await this.root.Tokens.Approve(signer, this.contract.address, token, amount);\r\n action.add(this.Deposit(signer, token, amount));\r\n feeRate ?? (feeRate = await this.root.Fees.getFeeRate());\r\n this.logger.debug(\"txsDeposit(): deposit TX created, token: \" + token.toString() +\r\n \" amount: \" + amount.toString(10));\r\n return [await action.tx(feeRate)];\r\n }\r\n}\r\nexports.StarknetLpVault = StarknetLpVault;\r\nStarknetLpVault.GasCosts = {\r\n WITHDRAW: { l1: 750, l2: 0 },\r\n DEPOSIT: { l1: 750, l2: 0 }\r\n};\r\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\nexport interface Coder {\n encode(from: F): T;\n decode(to: T): F;\n}\n\nexport interface BytesCoder extends Coder {\n encode: (data: Uint8Array) => string;\n decode: (str: string) => Uint8Array;\n}\n\nfunction isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\nfunction isArrayOf(isString: boolean, arr: any[]) {\n if (!Array.isArray(arr)) return false;\n if (arr.length === 0) return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n } else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\n\n// no abytes: seems to have 10% slowdown. Why?!\n\nfunction afn(input: Function): input is Function {\n if (typeof input !== 'function') throw new Error('function expected');\n return true;\n}\n\nfunction astr(label: string, input: unknown): input is string {\n if (typeof input !== 'string') throw new Error(`${label}: string expected`);\n return true;\n}\n\nfunction anumber(n: number): void {\n if (!Number.isSafeInteger(n)) throw new Error(`invalid integer: ${n}`);\n}\nexport const assertNumber: typeof anumber = anumber;\n\nfunction aArr(input: any[]) {\n if (!Array.isArray(input)) throw new Error('array expected');\n}\nfunction astrArr(label: string, input: string[]) {\n if (!isArrayOf(true, input)) throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label: string, input: number[]) {\n if (!isArrayOf(false, input)) throw new Error(`${label}: array of numbers expected`);\n}\n\n// TODO: some recusive type inference so it would check correct order of input/output inside rest?\n// like , , \ntype Chain = [Coder, ...Coder[]];\n// Extract info from Coder type\ntype Input = F extends Coder ? T : never;\ntype Output = F extends Coder ? T : never;\n// Generic function for arrays\ntype First = T extends [infer U, ...any[]] ? U : never;\ntype Last = T extends [...any[], infer U] ? U : never;\ntype Tail = T extends [any, ...infer U] ? U : never;\n\ntype AsChain> = {\n // C[K] = Coder, Input>\n [K in keyof C]: Coder, Input>;\n};\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain>(...args: T): Coder>, Output>> {\n const id = (a: any) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a: any, b: any) => (c: any) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters: string | string[]): Coder {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits: number[]) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(\n `alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`\n );\n return lettersA[i]!;\n });\n },\n decode: (input: string[]): number[] => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined) throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = ''): Coder {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits: number, chr = '='): Coder {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data: string[]): string[] {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8) data.push(chr);\n return data;\n },\n decode(input: string[]): string[] {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0) throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn: (val: T) => T): Coder {\n afn(fn);\n return { encode: (from: T) => from, decode: (to: T) => fn(to) };\n}\n\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data: number[], from: number, to: number): number[] {\n // base 1 is impossible\n if (from < 2) throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2) throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length) return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from) throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i]!;\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (\n !Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry\n ) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done) continue;\n else if (!rounded) pos = i;\n else done = false;\n }\n res.push(carry);\n if (done) break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++) res.push(0);\n return res.reverse();\n}\n\nconst gcd = (a: number, b: number): number => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from: number, to: number) =>\n from + (to - gcd(from, to));\nconst powers: number[] = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++) res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data: number[], from: number, to: number, padding: boolean): number[] {\n aArr(data);\n if (from <= 0 || from > 32) throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32) throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(\n `convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`\n );\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from]!;\n const mask = powers[to]! - 1;\n const res: number[] = [];\n for (const n of data) {\n anumber(n);\n if (n >= max) throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32) throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to) res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined) throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from) throw new Error('Excess padding');\n if (!padding && carry > 0) throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0) res.push(carry >>> 0);\n return res;\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num: number): Coder {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits: number[]) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits: number, revPadding = false): Coder {\n anumber(bits);\n if (bits <= 0 || bits > 32) throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits: number[]) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\n\ntype ArgumentTypes = F extends (...args: infer A) => any ? A : never;\nfunction unsafeWrapper any>(fn: T) {\n afn(fn);\n return function (...args: ArgumentTypes): ReturnType | void {\n try {\n return fn.apply(null, args);\n } catch (e) {}\n };\n}\n\nfunction checksum(\n len: number,\n fn: (data: Uint8Array) => Uint8Array\n): Coder {\n anumber(len);\n afn(fn);\n return {\n encode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i]) throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n\n// prettier-ignore\nexport const utils: { alphabet: typeof alphabet; chain: typeof chain; checksum: typeof checksum; convertRadix: typeof convertRadix; convertRadix2: typeof convertRadix2; radix: typeof radix; radix2: typeof radix2; join: typeof join; padding: typeof padding; } = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n\n// RFC 4648 aka RFC 3548\n// ---------------------\n\n/**\n * base16 encoding.\n */\nexport const base16: BytesCoder = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\nexport const base32: BytesCoder = chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n padding(5),\n join('')\n);\nexport const base32nopad: BytesCoder = chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n join('')\n);\nexport const base32hex: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n padding(5),\n join('')\n);\nexport const base32hexnopad: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n join('')\n);\nexport const base32crockford: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'),\n join(''),\n normalize((s: string) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1'))\n);\n/**\n * base64 with padding. For no padding, use `base64nopad`.\n * @example\n * const b = base64.decode('A951'); // Uint8Array.from([ 3, 222, 117 ])\n * base64.encode(b); // 'A951'\n */\nexport const base64: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n padding(6),\n join('')\n);\n/**\n * base64 without padding.\n */\nexport const base64nopad: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n join('')\n);\nexport const base64url: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n padding(6),\n join('')\n);\nexport const base64urlnopad: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n join('')\n);\n\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc: string) =>\n chain(radix(58), alphabet(abc), join(''));\n\n/**\n * Base58: base64 without characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n */\nexport const base58: BytesCoder = genBase58(\n '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n);\nexport const base58flickr: BytesCoder = genBase58(\n '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n);\nexport const base58xrp: BytesCoder = genBase58(\n 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'\n);\n\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n\n/**\n * XMR version of base58.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr: BytesCoder = {\n encode(data: Uint8Array) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length]!, '1');\n }\n return res;\n },\n decode(str: string) {\n let res: number[] = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0) throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n\nexport const createBase58check = (sha256: (data: Uint8Array) => Uint8Array): BytesCoder =>\n chain(\n checksum(4, (data) => sha256(sha256(data))),\n base58\n );\n\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check: (sha256: (data: Uint8Array) => Uint8Array) => BytesCoder =\n createBase58check;\n\n// Bech32 code\n// -----------\nexport interface Bech32Decoded {\n prefix: Prefix;\n words: number[];\n}\nexport interface Bech32DecodedWithArray {\n prefix: Prefix;\n words: number[];\n bytes: Uint8Array;\n}\n\nconst BECH_ALPHABET: Coder = chain(\n alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'),\n join('')\n);\n\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre: number): number {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1) chk ^= POLYMOD_GENERATORS[i]!;\n }\n return chk;\n}\n\nfunction bechChecksum(prefix: string, words: number[], encodingConst = 1): string {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126) throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++) chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words) chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++) chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]!], 30, 5, false));\n}\n\nexport interface Bech32 {\n encode(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit?: number | false\n ): `${Lowercase}1${string}`;\n decode(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded;\n encodeFromBytes(prefix: string, bytes: Uint8Array): string;\n decodeToBytes(str: string): Bech32DecodedWithArray;\n decodeUnsafe(str: string, limit?: number | false): void | Bech32Decoded;\n fromWords(to: number[]): Uint8Array;\n fromWordsUnsafe(to: number[]): void | Uint8Array;\n toWords(from: Uint8Array): number[];\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding: 'bech32' | 'bech32m'): Bech32 {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n\n function encode(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit: number | false = 90\n ): `${Lowercase}1${string}` {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words)) words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0) throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}` as `${Lowercase}1${string}`;\n }\n\n function decode(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded;\n function decode(str: string, limit?: number | false): Bech32Decoded;\n function decode(str: string, limit: number | false = 90): Bech32Decoded {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6) throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum)) throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n\n const decodeUnsafe = unsafeWrapper(decode);\n\n function decodeToBytes(str: string): Bech32DecodedWithArray {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n\n function encodeFromBytes(prefix: string, bytes: Uint8Array) {\n return encode(prefix, toWords(bytes));\n }\n\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n\n/**\n * Low-level bech32 operations. Operates on words.\n */\nexport const bech32: Bech32 = genBech32('bech32');\nexport const bech32m: Bech32 = genBech32('bech32m');\n\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n */\nexport const utf8: BytesCoder = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n\n/**\n * hex string decoder.\n * @example\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n */\nexport const hex: BytesCoder = chain(\n radix2(4),\n alphabet('0123456789abcdef'),\n join(''),\n normalize((s: string) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n })\n);\n\n// prettier-ignore\nconst CODERS: { utf8: BytesCoder; hex: BytesCoder; base16: BytesCoder; base32: BytesCoder; base64: BytesCoder; base64url: BytesCoder; base58: BytesCoder; base58xmr: BytesCoder; } = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\ntype CoderType = keyof typeof CODERS;\nconst coderTypeError =\n 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n\nexport const bytesToString = (type: CoderType, bytes: Uint8Array): string => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (!isBytes(bytes)) throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\nexport const str: (type: CoderType, bytes: Uint8Array) => string = bytesToString; // as in python, but for bytes only\n\nexport const stringToBytes = (type: CoderType, str: string): Uint8Array => {\n if (!CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (typeof str !== 'string') throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\nexport const bytes: (type: CoderType, str: string) => Uint8Array = stringToBytes;\n","import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createAssociatedTokenAccountInstruction } from '../instructions/associatedTokenAccount.js';\nimport { getAssociatedTokenAddressSync } from '../state/mint.js';\n\n/**\n * Create and initialize a new associated token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mint Mint for the account\n * @param owner Owner of the new account\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the new associated token account\n */\nexport async function createAssociatedTokenAccount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n owner: PublicKey,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n const associatedToken = getAssociatedTokenAddressSync(mint, owner, false, programId, associatedTokenProgramId);\n\n const transaction = new Transaction().add(\n createAssociatedTokenAccountInstruction(\n payer.publicKey,\n associatedToken,\n owner,\n mint,\n programId,\n associatedTokenProgramId\n )\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n\n return associatedToken;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.info = void 0;\nvar info = {\n \"viewBox\": \"0 0 640 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M640 1344v128q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h64v-384h-64q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h384q26 0 45 19t19 45v576h64q26 0 45 19t19 45zM512 192v192q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-192q0-26 19-45t45-19h256q26 0 45 19t19 45z\"\n }\n }]\n};\nexports.info = info;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.angleRight = void 0;\nvar angleRight = {\n \"viewBox\": \"0 0 640 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M595 960q0 13-10 23l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23z\"\n }\n }]\n};\nexports.angleRight = angleRight;",null,"import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createAssociatedTokenAccountIdempotentInstruction } from '../instructions/associatedTokenAccount.js';\nimport { getAssociatedTokenAddressSync } from '../state/mint.js';\n\n/**\n * Create and initialize a new associated token account\n * The instruction will succeed even if the associated token account already exists\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mint Mint for the account\n * @param owner Owner of the new account\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the new or existing associated token account\n */\nexport async function createAssociatedTokenAccountIdempotent(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n owner: PublicKey,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n const associatedToken = getAssociatedTokenAddressSync(mint, owner, false, programId, associatedTokenProgramId);\n\n const transaction = new Transaction().add(\n createAssociatedTokenAccountIdempotentInstruction(\n payer.publicKey,\n associatedToken,\n owner,\n mint,\n programId,\n associatedTokenProgramId\n )\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n\n return associatedToken;\n}\n","/**\n * Special language-specific overrides.\n *\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n *\n * @type {Object}\n */\nvar LANGUAGES = {\n tr: {\n regexp: /[\\u0069]/g,\n map: {\n '\\u0069': '\\u0130'\n }\n },\n az: {\n regexp: /[\\u0069]/g,\n map: {\n '\\u0069': '\\u0130'\n }\n },\n lt: {\n regexp: /[\\u0069\\u006A\\u012F]\\u0307|\\u0069\\u0307[\\u0300\\u0301\\u0303]/g,\n map: {\n '\\u0069\\u0307': '\\u0049',\n '\\u006A\\u0307': '\\u004A',\n '\\u012F\\u0307': '\\u012E',\n '\\u0069\\u0307\\u0300': '\\u00CC',\n '\\u0069\\u0307\\u0301': '\\u00CD',\n '\\u0069\\u0307\\u0303': '\\u0128'\n }\n }\n}\n\n/**\n * Upper case a string.\n *\n * @param {String} str\n * @return {String}\n */\nmodule.exports = function (str, locale) {\n var lang = LANGUAGES[locale]\n\n str = str == null ? '' : String(str)\n\n if (lang) {\n str = str.replace(lang.regexp, function (m) { return lang.map[m] })\n }\n\n return str.toUpperCase()\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.copy = void 0;\nvar copy = {\n \"viewBox\": \"0 0 1792 1792\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M1696 384q40 0 68 28t28 68v1216q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-288h-544q-40 0-68-28t-28-68v-672q0-40 20-88t48-76l408-408q28-28 76-48t88-20h416q40 0 68 28t28 68v328q68-40 128-40h416zM1152 597l-299 299h299v-299zM512 213l-299 299h299v-299zM708 860l316-316v-416h-384v416q0 40-28 68t-68 28h-416v640h512v-256q0-40 20-88t48-76zM1664 1664v-1152h-384v416q0 40-28 68t-68 28h-416v640h896z\"\n }\n }]\n};\nexports.copy = copy;","// 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\tid: moduleId,\n\t\tloaded: false,\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// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// 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};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"138\":\"e06632f3\",\"227\":\"b5d51f89\",\"258\":\"1e619484\",\"451\":\"982a0e51\",\"453\":\"1565647e\",\"500\":\"ef45b207\",\"579\":\"986ba7ea\",\"648\":\"ff01c8e5\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\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))","var inProgress = {};\nvar dataWebpackPrefix = \"btc-bridge:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// 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};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbtc_bridge\"] = self[\"webpackChunkbtc_bridge\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import { createContext, useContext } from 'react';\n\nexport interface WalletModalContextState {\n visible: boolean;\n setVisible: (open: boolean) => void;\n}\n\nconst DEFAULT_CONTEXT = {\n setVisible(_open: boolean) {\n console.error(constructMissingProviderErrorMessage('call', 'setVisible'));\n },\n visible: false,\n};\nObject.defineProperty(DEFAULT_CONTEXT, 'visible', {\n get() {\n console.error(constructMissingProviderErrorMessage('read', 'visible'));\n return false;\n },\n});\n\nfunction constructMissingProviderErrorMessage(action: string, valueName: string) {\n return (\n 'You have tried to ' +\n ` ${action} \"${valueName}\"` +\n ' on a WalletModalContext without providing one.' +\n ' Make sure to render a WalletModalProvider' +\n ' as an ancestor of the component that uses ' +\n 'WalletModalContext'\n );\n}\n\nexport const WalletModalContext = createContext(DEFAULT_CONTEXT as WalletModalContextState);\n\nexport function useWalletModal(): WalletModalContextState {\n return useContext(WalletModalContext);\n}\n","import type { Connection, PublicKey, SendOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';\nimport EventEmitter from 'eventemitter3';\nimport { type WalletError, WalletNotConnectedError } from './errors.js';\nimport type { SupportedTransactionVersions, TransactionOrVersionedTransaction } from './transaction.js';\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(publicKey: PublicKey): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\nexport interface SendTransactionOptions extends SendOptions {\n signers?: Signer[];\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName = T & { __brand__: 'WalletName' };\n\nexport interface WalletAdapterProps {\n name: WalletName;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n supportedTransactionVersions?: SupportedTransactionVersions;\n\n autoConnect(): Promise;\n connect(): Promise;\n disconnect(): Promise;\n sendTransaction(\n transaction: TransactionOrVersionedTransaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n}\n\nexport type WalletAdapter = WalletAdapterProps & EventEmitter;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = 'Installed',\n NotDetected = 'NotDetected',\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = 'Loadable',\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = 'Unsupported',\n}\n\nexport abstract class BaseWalletAdapter\n extends EventEmitter\n implements WalletAdapter\n{\n abstract name: WalletName;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract publicKey: PublicKey | null;\n abstract connecting: boolean;\n abstract supportedTransactionVersions?: SupportedTransactionVersions;\n\n get connected() {\n return !!this.publicKey;\n }\n\n async autoConnect() {\n await this.connect();\n }\n\n abstract connect(): Promise;\n abstract disconnect(): Promise;\n\n abstract sendTransaction(\n transaction: TransactionOrVersionedTransaction,\n connection: Connection,\n options?: SendTransactionOptions\n ): Promise;\n\n protected async prepareTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendOptions = {}\n ): Promise {\n const publicKey = this.publicKey;\n if (!publicKey) throw new WalletNotConnectedError();\n\n transaction.feePayer = transaction.feePayer || publicKey;\n transaction.recentBlockhash =\n transaction.recentBlockhash ||\n (\n await connection.getLatestBlockhash({\n commitment: options.preflightCommitment,\n minContextSlot: options.minContextSlot,\n })\n ).blockhash;\n\n return transaction;\n }\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === 'undefined' || typeof document === 'undefined') return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', detectAndDispose, { once: true });\n disposers.push(() => document.removeEventListener('DOMContentLoaded', detectAndDispose));\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== 'complete'\n ) {\n window.addEventListener('load', detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener('load', detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n\n/**\n * Users on iOS can be redirected into a wallet's in-app browser automatically,\n * if that wallet has a universal link configured to do so\n * But should not be redirected from within a webview, eg. if they're already\n * inside a wallet's browser\n * This function can be used to identify users who are on iOS and can be redirected\n *\n * @returns true if the user can be redirected\n */\nexport function isIosAndRedirectable() {\n // SSR: return false\n if (!navigator) return false;\n\n const userAgent = navigator.userAgent.toLowerCase();\n\n // if on iOS the user agent will contain either iPhone or iPad\n // caveat: if requesting desktop site then this won't work\n const isIos = userAgent.includes('iphone') || userAgent.includes('ipad');\n\n // if in a webview then it will not include Safari\n // note that other iOS browsers also include Safari\n // so we will redirect only if Safari is also included\n const isSafari = userAgent.includes('safari');\n\n return isIos && isSafari;\n}\n","export class WalletError extends Error {\n error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = 'WalletNotReadyError';\n}\n\nexport class WalletLoadError extends WalletError {\n name = 'WalletLoadError';\n}\n\nexport class WalletConfigError extends WalletError {\n name = 'WalletConfigError';\n}\n\nexport class WalletConnectionError extends WalletError {\n name = 'WalletConnectionError';\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = 'WalletDisconnectedError';\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = 'WalletDisconnectionError';\n}\n\nexport class WalletAccountError extends WalletError {\n name = 'WalletAccountError';\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = 'WalletPublicKeyError';\n}\n\nexport class WalletKeypairError extends WalletError {\n name = 'WalletKeypairError';\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = 'WalletNotConnectedError';\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = 'WalletSendTransactionError';\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = 'WalletSignTransactionError';\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = 'WalletSignMessageError';\n}\n\nexport class WalletSignInError extends WalletError {\n name = 'WalletSignInError';\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = 'WalletTimeoutError';\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = 'WalletWindowBlockedError';\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = 'WalletWindowClosedError';\n}\n","import {\n type Adapter,\n type MessageSignerWalletAdapterProps,\n type SignerWalletAdapterProps,\n type SignInMessageSignerWalletAdapterProps,\n type WalletAdapterProps,\n type WalletName,\n type WalletReadyState,\n} from '@solana/wallet-adapter-base';\nimport { type PublicKey } from '@solana/web3.js';\nimport { createContext, useContext } from 'react';\n\nexport interface Wallet {\n adapter: Adapter;\n readyState: WalletReadyState;\n}\n\nexport interface WalletContextState {\n autoConnect: boolean;\n wallets: Wallet[];\n wallet: Wallet | null;\n publicKey: PublicKey | null;\n connecting: boolean;\n connected: boolean;\n disconnecting: boolean;\n\n select(walletName: WalletName | null): void;\n connect(): Promise;\n disconnect(): Promise;\n\n sendTransaction: WalletAdapterProps['sendTransaction'];\n signTransaction: SignerWalletAdapterProps['signTransaction'] | undefined;\n signAllTransactions: SignerWalletAdapterProps['signAllTransactions'] | undefined;\n signMessage: MessageSignerWalletAdapterProps['signMessage'] | undefined;\n signIn: SignInMessageSignerWalletAdapterProps['signIn'] | undefined;\n}\n\nconst EMPTY_ARRAY: ReadonlyArray = [];\n\nconst DEFAULT_CONTEXT: Partial = {\n autoConnect: false,\n connecting: false,\n connected: false,\n disconnecting: false,\n select() {\n logMissingProviderError('call', 'select');\n },\n connect() {\n return Promise.reject(logMissingProviderError('call', 'connect'));\n },\n disconnect() {\n return Promise.reject(logMissingProviderError('call', 'disconnect'));\n },\n sendTransaction() {\n return Promise.reject(logMissingProviderError('call', 'sendTransaction'));\n },\n signTransaction() {\n return Promise.reject(logMissingProviderError('call', 'signTransaction'));\n },\n signAllTransactions() {\n return Promise.reject(logMissingProviderError('call', 'signAllTransactions'));\n },\n signMessage() {\n return Promise.reject(logMissingProviderError('call', 'signMessage'));\n },\n signIn() {\n return Promise.reject(logMissingProviderError('call', 'signIn'));\n },\n};\nObject.defineProperty(DEFAULT_CONTEXT, 'wallets', {\n get() {\n logMissingProviderError('read', 'wallets');\n return EMPTY_ARRAY;\n },\n});\nObject.defineProperty(DEFAULT_CONTEXT, 'wallet', {\n get() {\n logMissingProviderError('read', 'wallet');\n return null;\n },\n});\nObject.defineProperty(DEFAULT_CONTEXT, 'publicKey', {\n get() {\n logMissingProviderError('read', 'publicKey');\n return null;\n },\n});\n\nfunction logMissingProviderError(action: string, property: string) {\n const error = new Error(\n `You have tried to ${action} \"${property}\" on a WalletContext without providing one. ` +\n 'Make sure to render a WalletProvider as an ancestor of the component that uses WalletContext.'\n );\n console.error(error);\n return error;\n}\n\nexport const WalletContext = createContext(DEFAULT_CONTEXT as WalletContextState);\n\nexport function useWallet(): WalletContextState {\n return useContext(WalletContext);\n}\n","import type { FC, PropsWithChildren } from 'react';\nimport React, { useLayoutEffect, useRef } from 'react';\n\nexport type CollapseProps = PropsWithChildren<{\n expanded: boolean;\n id: string;\n}>;\n\nexport const Collapse: FC = ({ id, children, expanded = false }) => {\n const ref = useRef(null);\n const instant = useRef(true);\n const transition = 'height 250ms ease-out';\n\n const openCollapse = () => {\n const node = ref.current;\n if (!node) return;\n\n requestAnimationFrame(() => {\n node.style.height = node.scrollHeight + 'px';\n });\n };\n\n const closeCollapse = () => {\n const node = ref.current;\n if (!node) return;\n\n requestAnimationFrame(() => {\n node.style.height = node.offsetHeight + 'px';\n node.style.overflow = 'hidden';\n requestAnimationFrame(() => {\n node.style.height = '0';\n });\n });\n };\n\n useLayoutEffect(() => {\n if (expanded) {\n openCollapse();\n } else {\n closeCollapse();\n }\n }, [expanded]);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node) return;\n\n function handleComplete() {\n if (!node) return;\n\n node.style.overflow = expanded ? 'initial' : 'hidden';\n if (expanded) {\n node.style.height = 'auto';\n }\n }\n\n function handleTransitionEnd(event: TransitionEvent) {\n if (node && event.target === node && event.propertyName === 'height') {\n handleComplete();\n }\n }\n\n if (instant.current) {\n handleComplete();\n instant.current = false;\n }\n\n node.addEventListener('transitionend', handleTransitionEnd);\n return () => node.removeEventListener('transitionend', handleTransitionEnd);\n }, [expanded]);\n\n return (\n \n {children}\n \n );\n};\n","import type { CSSProperties, FC, MouseEvent, PropsWithChildren, ReactElement } from 'react';\nimport React from 'react';\n\nexport type ButtonProps = PropsWithChildren<{\n className?: string;\n disabled?: boolean;\n endIcon?: ReactElement;\n onClick?: (e: MouseEvent) => void;\n startIcon?: ReactElement;\n style?: CSSProperties;\n tabIndex?: number;\n}>;\n\nexport const Button: FC = (props) => {\n return (\n \n {props.startIcon && {props.startIcon}}\n {props.children}\n {props.endIcon && {props.endIcon}}\n \n );\n};\n","import type { Wallet } from '@solana/wallet-adapter-react';\nimport type { DetailedHTMLProps, FC, ImgHTMLAttributes } from 'react';\nimport React from 'react';\n\nexport interface WalletIconProps extends DetailedHTMLProps, HTMLImageElement> {\n wallet: { adapter: Pick } | null;\n}\n\nexport const WalletIcon: FC = ({ wallet, ...props }) => {\n return wallet && {`${wallet.adapter.name};\n};\n","import { WalletReadyState } from '@solana/wallet-adapter-base';\nimport type { Wallet } from '@solana/wallet-adapter-react';\nimport type { FC, MouseEventHandler } from 'react';\nimport React from 'react';\nimport { Button } from './Button.js';\nimport { WalletIcon } from './WalletIcon.js';\n\nexport interface WalletListItemProps {\n handleClick: MouseEventHandler;\n tabIndex?: number;\n wallet: Wallet;\n}\n\nexport const WalletListItem: FC = ({ handleClick, tabIndex, wallet }) => {\n return (\n
  • \n \n
  • \n );\n};\n","import type { FC } from 'react';\nimport React from 'react';\n\nexport const WalletSVG: FC = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import type { WalletName } from '@solana/wallet-adapter-base';\nimport { WalletReadyState } from '@solana/wallet-adapter-base';\nimport type { Wallet } from '@solana/wallet-adapter-react';\nimport { useWallet } from '@solana/wallet-adapter-react';\nimport type { FC, MouseEvent } from 'react';\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Collapse } from './Collapse.js';\nimport { WalletListItem } from './WalletListItem.js';\nimport { WalletSVG } from './WalletSVG.js';\nimport { useWalletModal } from './useWalletModal.js';\n\nexport interface WalletModalProps {\n className?: string;\n container?: string;\n}\n\nexport const WalletModal: FC = ({ className = '', container = 'body' }) => {\n const ref = useRef(null);\n const { wallets, select } = useWallet();\n const { setVisible } = useWalletModal();\n const [expanded, setExpanded] = useState(false);\n const [fadeIn, setFadeIn] = useState(false);\n const [portal, setPortal] = useState(null);\n\n const [listedWallets, collapsedWallets] = useMemo(() => {\n const installed: Wallet[] = [];\n const notInstalled: Wallet[] = [];\n\n for (const wallet of wallets) {\n if (wallet.readyState === WalletReadyState.Installed) {\n installed.push(wallet);\n } else {\n notInstalled.push(wallet);\n }\n }\n\n return installed.length ? [installed, notInstalled] : [notInstalled, []];\n }, [wallets]);\n\n const hideModal = useCallback(() => {\n setFadeIn(false);\n setTimeout(() => setVisible(false), 150);\n }, [setVisible]);\n\n const handleClose = useCallback(\n (event: MouseEvent) => {\n event.preventDefault();\n hideModal();\n },\n [hideModal]\n );\n\n const handleWalletClick = useCallback(\n (event: MouseEvent, walletName: WalletName) => {\n select(walletName);\n handleClose(event);\n },\n [select, handleClose]\n );\n\n const handleCollapseClick = useCallback(() => setExpanded(!expanded), [expanded]);\n\n const handleTabKey = useCallback(\n (event: KeyboardEvent) => {\n const node = ref.current;\n if (!node) return;\n\n // here we query all focusable elements\n const focusableElements = node.querySelectorAll('button');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstElement = focusableElements[0]!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const lastElement = focusableElements[focusableElements.length - 1]!;\n\n if (event.shiftKey) {\n // if going backward by pressing tab and firstElement is active, shift focus to last focusable element\n if (document.activeElement === firstElement) {\n lastElement.focus();\n event.preventDefault();\n }\n } else {\n // if going forward by pressing tab and lastElement is active, shift focus to first focusable element\n if (document.activeElement === lastElement) {\n firstElement.focus();\n event.preventDefault();\n }\n }\n },\n [ref]\n );\n\n useLayoutEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n hideModal();\n } else if (event.key === 'Tab') {\n handleTabKey(event);\n }\n };\n\n // Get original overflow\n const { overflow } = window.getComputedStyle(document.body);\n // Hack to enable fade in animation after mount\n setTimeout(() => setFadeIn(true), 0);\n // Prevent scrolling on mount\n document.body.style.overflow = 'hidden';\n // Listen for keydown events\n window.addEventListener('keydown', handleKeyDown, false);\n\n return () => {\n // Re-enable scrolling when component unmounts\n document.body.style.overflow = overflow;\n window.removeEventListener('keydown', handleKeyDown, false);\n };\n }, [hideModal, handleTabKey]);\n\n useLayoutEffect(() => setPortal(document.querySelector(container)), [container]);\n\n return (\n portal &&\n createPortal(\n \n
    \n
    \n \n {listedWallets.length ? (\n <>\n

    Connect a wallet on Solana to continue

    \n
      \n {listedWallets.map((wallet) => (\n handleWalletClick(event, wallet.adapter.name)}\n wallet={wallet}\n />\n ))}\n {collapsedWallets.length ? (\n \n {collapsedWallets.map((wallet) => (\n \n handleWalletClick(event, wallet.adapter.name)\n }\n tabIndex={expanded ? 0 : -1}\n wallet={wallet}\n />\n ))}\n \n ) : null}\n
    \n {collapsedWallets.length ? (\n \n {expanded ? 'Less ' : 'More '}options\n \n \n \n \n ) : null}\n \n ) : (\n <>\n

    \n You'll need a wallet on Solana to continue\n

    \n
    \n \n
    \n {collapsedWallets.length ? (\n <>\n \n {expanded ? 'Hide ' : 'Already have a wallet? View '}options\n \n \n \n \n \n
      \n {collapsedWallets.map((wallet) => (\n \n handleWalletClick(event, wallet.adapter.name)\n }\n tabIndex={expanded ? 0 : -1}\n wallet={wallet}\n />\n ))}\n
    \n
    \n \n ) : null}\n \n )}\n
    \n
    \n
    \n
    ,\n portal\n )\n );\n};\n","import type { FC, ReactNode } from 'react';\nimport React, { useState } from 'react';\nimport { WalletModalContext } from './useWalletModal.js';\nimport type { WalletModalProps } from './WalletModal.js';\nimport { WalletModal } from './WalletModal.js';\n\nexport interface WalletModalProviderProps extends WalletModalProps {\n children: ReactNode;\n}\n\nexport const WalletModalProvider: FC = ({ children, ...props }) => {\n const [visible, setVisible] = useState(false);\n\n return (\n \n {children}\n {visible && }\n \n );\n};\n","import { type Connection } from '@solana/web3.js';\nimport { createContext, useContext } from 'react';\n\nexport interface ConnectionContextState {\n connection: Connection;\n}\n\nexport const ConnectionContext = createContext({} as ConnectionContextState);\n\nexport function useConnection(): ConnectionContextState {\n return useContext(ConnectionContext);\n}\n","import { Connection, type ConnectionConfig } from '@solana/web3.js';\nimport React, { type FC, type ReactNode, useMemo } from 'react';\nimport { ConnectionContext } from './useConnection.js';\n\nexport interface ConnectionProviderProps {\n children: ReactNode;\n endpoint: string;\n config?: ConnectionConfig;\n}\n\nexport const ConnectionProvider: FC = ({\n children,\n endpoint,\n config = { commitment: 'confirmed' },\n}) => {\n const connection = useMemo(() => new Connection(endpoint, config), [endpoint, config]);\n\n return {children};\n};\n","import type { Transaction, TransactionVersion, VersionedTransaction } from '@solana/web3.js';\n\nexport type SupportedTransactionVersions = ReadonlySet | null | undefined;\n\nexport type TransactionOrVersionedTransaction = S extends null | undefined\n ? Transaction\n : Transaction | VersionedTransaction;\n\nexport function isVersionedTransaction(\n transaction: Transaction | VersionedTransaction\n): transaction is VersionedTransaction {\n return 'version' in transaction;\n}\n","import type { SolanaSignInInput, SolanaSignInOutput } from '@solana/wallet-standard-features';\nimport type { Connection, TransactionSignature } from '@solana/web3.js';\nimport {\n BaseWalletAdapter,\n type SendTransactionOptions,\n type WalletAdapter,\n type WalletAdapterProps,\n} from './adapter.js';\nimport { WalletSendTransactionError, WalletSignTransactionError } from './errors.js';\nimport { isVersionedTransaction, type TransactionOrVersionedTransaction } from './transaction.js';\n\nexport interface SignerWalletAdapterProps extends WalletAdapterProps {\n signTransaction>(\n transaction: T\n ): Promise;\n signAllTransactions>(\n transactions: T[]\n ): Promise;\n}\n\nexport type SignerWalletAdapter = WalletAdapter & SignerWalletAdapterProps;\n\nexport abstract class BaseSignerWalletAdapter\n extends BaseWalletAdapter\n implements SignerWalletAdapter\n{\n async sendTransaction(\n transaction: TransactionOrVersionedTransaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n let emit = true;\n try {\n if (isVersionedTransaction(transaction)) {\n if (!this.supportedTransactionVersions)\n throw new WalletSendTransactionError(\n `Sending versioned transactions isn't supported by this wallet`\n );\n\n if (!this.supportedTransactionVersions.has(transaction.version))\n throw new WalletSendTransactionError(\n `Sending transaction version ${transaction.version} isn't supported by this wallet`\n );\n\n try {\n transaction = await this.signTransaction(transaction);\n\n const rawTransaction = transaction.serialize();\n\n return await connection.sendRawTransaction(rawTransaction, options);\n } catch (error: any) {\n // If the error was thrown by `signTransaction`, rethrow it and don't emit a duplicate event\n if (error instanceof WalletSignTransactionError) {\n emit = false;\n throw error;\n }\n throw new WalletSendTransactionError(error?.message, error);\n }\n } else {\n try {\n const { signers, ...sendOptions } = options;\n\n transaction = await this.prepareTransaction(transaction, connection, sendOptions);\n\n signers?.length && transaction.partialSign(...signers);\n\n transaction = await this.signTransaction(transaction);\n\n const rawTransaction = transaction.serialize();\n\n return await connection.sendRawTransaction(rawTransaction, sendOptions);\n } catch (error: any) {\n // If the error was thrown by `signTransaction`, rethrow it and don't emit a duplicate event\n if (error instanceof WalletSignTransactionError) {\n emit = false;\n throw error;\n }\n throw new WalletSendTransactionError(error?.message, error);\n }\n }\n } catch (error: any) {\n if (emit) {\n this.emit('error', error);\n }\n throw error;\n }\n }\n\n abstract signTransaction>(\n transaction: T\n ): Promise;\n\n async signAllTransactions>(\n transactions: T[]\n ): Promise {\n for (const transaction of transactions) {\n if (isVersionedTransaction(transaction)) {\n if (!this.supportedTransactionVersions)\n throw new WalletSignTransactionError(\n `Signing versioned transactions isn't supported by this wallet`\n );\n\n if (!this.supportedTransactionVersions.has(transaction.version))\n throw new WalletSignTransactionError(\n `Signing transaction version ${transaction.version} isn't supported by this wallet`\n );\n }\n }\n\n const signedTransactions: T[] = [];\n for (const transaction of transactions) {\n signedTransactions.push(await this.signTransaction(transaction));\n }\n return signedTransactions;\n }\n}\n\nexport interface MessageSignerWalletAdapterProps extends WalletAdapterProps {\n signMessage(message: Uint8Array): Promise;\n}\n\nexport type MessageSignerWalletAdapter = WalletAdapter &\n MessageSignerWalletAdapterProps;\n\nexport abstract class BaseMessageSignerWalletAdapter\n extends BaseSignerWalletAdapter\n implements MessageSignerWalletAdapter\n{\n abstract signMessage(message: Uint8Array): Promise;\n}\n\nexport interface SignInMessageSignerWalletAdapterProps extends WalletAdapterProps {\n signIn(input?: SolanaSignInInput): Promise;\n}\n\nexport type SignInMessageSignerWalletAdapter = WalletAdapter &\n SignInMessageSignerWalletAdapterProps;\n\nexport abstract class BaseSignInMessageSignerWalletAdapter\n extends BaseMessageSignerWalletAdapter\n implements SignInMessageSignerWalletAdapter\n{\n abstract signIn(input?: SolanaSignInInput): Promise;\n}\n","import type { SolanaSignInInput, SolanaSignInOutput } from '@solana/wallet-standard-features';\nimport { verifyMessageSignature } from './signMessage.js';\nimport { arraysEqual } from './util.js';\n\n/**\n * TODO: docs\n */\nexport function verifySignIn(input: SolanaSignInInput, output: SolanaSignInOutput): boolean {\n const {\n signedMessage,\n signature,\n account: { publicKey },\n } = output;\n const message = deriveSignInMessage(input, output);\n return (\n !!message && verifyMessageSignature({ message, signedMessage, signature, publicKey: publicKey as Uint8Array })\n );\n}\n\n/**\n * TODO: docs\n */\nexport function deriveSignInMessage(input: SolanaSignInInput, output: SolanaSignInOutput): Uint8Array | null {\n const text = deriveSignInMessageText(input, output);\n if (!text) return null;\n return new TextEncoder().encode(text);\n}\n\n/**\n * TODO: docs\n */\nexport function deriveSignInMessageText(input: SolanaSignInInput, output: SolanaSignInOutput): string | null {\n const parsed = parseSignInMessage(output.signedMessage);\n if (!parsed) return null;\n\n if (input.domain && input.domain !== parsed.domain) return null;\n if (input.address && input.address !== parsed.address) return null;\n if (input.statement !== parsed.statement) return null;\n if (input.uri !== parsed.uri) return null;\n if (input.version !== parsed.version) return null;\n if (input.chainId !== parsed.chainId) return null;\n if (input.nonce !== parsed.nonce) return null;\n if (input.issuedAt !== parsed.issuedAt) return null;\n if (input.expirationTime !== parsed.expirationTime) return null;\n if (input.notBefore !== parsed.notBefore) return null;\n if (input.requestId !== parsed.requestId) return null;\n if (input.resources) {\n if (!parsed.resources) return null;\n if (!arraysEqual(input.resources, parsed.resources)) return null;\n } else if (parsed.resources) return null;\n\n return createSignInMessageText(parsed);\n}\n\n/**\n * TODO: docs\n */\nexport type SolanaSignInInputWithRequiredFields = SolanaSignInInput &\n Required>;\n\n/**\n * TODO: docs\n */\nexport function parseSignInMessage(message: Uint8Array): SolanaSignInInputWithRequiredFields | null {\n const text = new TextDecoder().decode(message);\n return parseSignInMessageText(text);\n}\n\n// TODO: implement https://github.com/solana-labs/solana/blob/master/docs/src/proposals/off-chain-message-signing.md\nconst DOMAIN = '(?[^\\\\n]+?) wants you to sign in with your Solana account:\\\\n';\nconst ADDRESS = '(?
    [^\\\\n]+)(?:\\\\n|$)';\nconst STATEMENT = '(?:\\\\n(?[\\\\S\\\\s]*?)(?:\\\\n|$))??';\nconst URI = '(?:\\\\nURI: (?[^\\\\n]+))?';\nconst VERSION = '(?:\\\\nVersion: (?[^\\\\n]+))?';\nconst CHAIN_ID = '(?:\\\\nChain ID: (?[^\\\\n]+))?';\nconst NONCE = '(?:\\\\nNonce: (?[^\\\\n]+))?';\nconst ISSUED_AT = '(?:\\\\nIssued At: (?[^\\\\n]+))?';\nconst EXPIRATION_TIME = '(?:\\\\nExpiration Time: (?[^\\\\n]+))?';\nconst NOT_BEFORE = '(?:\\\\nNot Before: (?[^\\\\n]+))?';\nconst REQUEST_ID = '(?:\\\\nRequest ID: (?[^\\\\n]+))?';\nconst RESOURCES = '(?:\\\\nResources:(?(?:\\\\n- [^\\\\n]+)*))?';\nconst FIELDS = `${URI}${VERSION}${CHAIN_ID}${NONCE}${ISSUED_AT}${EXPIRATION_TIME}${NOT_BEFORE}${REQUEST_ID}${RESOURCES}`;\nconst MESSAGE = new RegExp(`^${DOMAIN}${ADDRESS}${STATEMENT}${FIELDS}\\\\n*$`);\n\n/**\n * TODO: docs\n */\nexport function parseSignInMessageText(text: string): SolanaSignInInputWithRequiredFields | null {\n const match = MESSAGE.exec(text);\n if (!match) return null;\n const groups = match.groups;\n if (!groups) return null;\n\n return {\n domain: groups.domain!,\n\n address: groups.address!,\n statement: groups.statement,\n uri: groups.uri,\n version: groups.version,\n nonce: groups.nonce,\n chainId: groups.chainId,\n issuedAt: groups.issuedAt,\n expirationTime: groups.expirationTime,\n notBefore: groups.notBefore,\n requestId: groups.requestId,\n resources: groups.resources?.split('\\n- ').slice(1),\n };\n}\n\n/**\n * TODO: docs\n */\nexport function createSignInMessage(input: SolanaSignInInputWithRequiredFields): Uint8Array {\n const text = createSignInMessageText(input);\n return new TextEncoder().encode(text);\n}\n\n/**\n * TODO: docs\n */\nexport function createSignInMessageText(input: SolanaSignInInputWithRequiredFields): string {\n // ${domain} wants you to sign in with your Solana account:\n // ${address}\n //\n // ${statement}\n //\n // URI: ${uri}\n // Version: ${version}\n // Chain ID: ${chain}\n // Nonce: ${nonce}\n // Issued At: ${issued-at}\n // Expiration Time: ${expiration-time}\n // Not Before: ${not-before}\n // Request ID: ${request-id}\n // Resources:\n // - ${resources[0]}\n // - ${resources[1]}\n // ...\n // - ${resources[n]}\n\n let message = `${input.domain} wants you to sign in with your Solana account:\\n`;\n message += `${input.address}`;\n\n if (input.statement) {\n message += `\\n\\n${input.statement}`;\n }\n\n const fields: string[] = [];\n if (input.uri) {\n fields.push(`URI: ${input.uri}`);\n }\n if (input.version) {\n fields.push(`Version: ${input.version}`);\n }\n if (input.chainId) {\n fields.push(`Chain ID: ${input.chainId}`);\n }\n if (input.nonce) {\n fields.push(`Nonce: ${input.nonce}`);\n }\n if (input.issuedAt) {\n fields.push(`Issued At: ${input.issuedAt}`);\n }\n if (input.expirationTime) {\n fields.push(`Expiration Time: ${input.expirationTime}`);\n }\n if (input.notBefore) {\n fields.push(`Not Before: ${input.notBefore}`);\n }\n if (input.requestId) {\n fields.push(`Request ID: ${input.requestId}`);\n }\n if (input.resources) {\n fields.push(`Resources:`);\n for (const resource of input.resources) {\n fields.push(`- ${resource}`);\n }\n }\n if (fields.length) {\n message += `\\n\\n${fields.join('\\n')}`;\n }\n\n return message;\n}\n","import { createSignInMessageText } from '@solana/wallet-standard-util';\n\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nconst SolanaMobileWalletAdapterErrorCode = {\n ERROR_ASSOCIATION_PORT_OUT_OF_RANGE: 'ERROR_ASSOCIATION_PORT_OUT_OF_RANGE',\n ERROR_REFLECTOR_ID_OUT_OF_RANGE: 'ERROR_REFLECTOR_ID_OUT_OF_RANGE',\n ERROR_FORBIDDEN_WALLET_BASE_URL: 'ERROR_FORBIDDEN_WALLET_BASE_URL',\n ERROR_SECURE_CONTEXT_REQUIRED: 'ERROR_SECURE_CONTEXT_REQUIRED',\n ERROR_SESSION_CLOSED: 'ERROR_SESSION_CLOSED',\n ERROR_SESSION_TIMEOUT: 'ERROR_SESSION_TIMEOUT',\n ERROR_WALLET_NOT_FOUND: 'ERROR_WALLET_NOT_FOUND',\n ERROR_INVALID_PROTOCOL_VERSION: 'ERROR_INVALID_PROTOCOL_VERSION',\n};\nclass SolanaMobileWalletAdapterError extends Error {\n constructor(...args) {\n const [code, message, data] = args;\n super(message);\n this.code = code;\n this.data = data;\n this.name = 'SolanaMobileWalletAdapterError';\n }\n}\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nconst SolanaMobileWalletAdapterProtocolErrorCode = {\n // Keep these in sync with `mobilewalletadapter/common/ProtocolContract.java`.\n ERROR_AUTHORIZATION_FAILED: -1,\n ERROR_INVALID_PAYLOADS: -2,\n ERROR_NOT_SIGNED: -3,\n ERROR_NOT_SUBMITTED: -4,\n ERROR_TOO_MANY_PAYLOADS: -5,\n ERROR_ATTEST_ORIGIN_ANDROID: -100,\n};\nclass SolanaMobileWalletAdapterProtocolError extends Error {\n constructor(...args) {\n const [jsonRpcMessageId, code, message, data] = args;\n super(message);\n this.code = code;\n this.data = data;\n this.jsonRpcMessageId = jsonRpcMessageId;\n this.name = 'SolanaMobileWalletAdapterProtocolError';\n }\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nfunction createHelloReq(ecdhPublicKey, associationKeypairPrivateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const publicKeyBuffer = yield crypto.subtle.exportKey('raw', ecdhPublicKey);\n const signatureBuffer = yield crypto.subtle.sign({ hash: 'SHA-256', name: 'ECDSA' }, associationKeypairPrivateKey, publicKeyBuffer);\n const response = new Uint8Array(publicKeyBuffer.byteLength + signatureBuffer.byteLength);\n response.set(new Uint8Array(publicKeyBuffer), 0);\n response.set(new Uint8Array(signatureBuffer), publicKeyBuffer.byteLength);\n return response;\n });\n}\n\nfunction encode(input) {\n return window.btoa(input);\n}\n\nfunction createSIWSMessage(payload) {\n return createSignInMessageText(payload);\n}\nfunction createSIWSMessageBase64(payload) {\n return encode(createSIWSMessage(payload));\n}\n\n// optional features\nconst SolanaSignTransactions = 'solana:signTransactions';\nconst SolanaCloneAuthorization = 'solana:cloneAuthorization';\nconst SolanaSignInWithSolana = 'solana:signInWithSolana';\n\n/**\n * Creates a {@link MobileWallet} proxy that handles backwards compatibility and API to RPC conversion.\n *\n * @param protocolVersion the protocol version in use for this session/request\n * @param protocolRequestHandler callback function that handles sending the RPC request to the wallet endpoint.\n * @returns a {@link MobileWallet} proxy\n */\nfunction createMobileWalletProxy(protocolVersion, protocolRequestHandler) {\n return new Proxy({}, {\n get(target, p) {\n if (target[p] == null) {\n target[p] = function (inputParams) {\n return __awaiter(this, void 0, void 0, function* () {\n const { method, params } = handleMobileWalletRequest(p, inputParams, protocolVersion);\n const result = yield protocolRequestHandler(method, params);\n // if the request tried to sign in but the wallet did not return a sign in result, fallback on message signing\n if (method === 'authorize' && params.sign_in_payload && !result.sign_in_result) {\n result['sign_in_result'] = yield signInFallback(params.sign_in_payload, result, protocolRequestHandler);\n }\n return handleMobileWalletResponse(p, result, protocolVersion);\n });\n };\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n}\n/**\n * Handles all {@link MobileWallet} API requests and determines the correct MWA RPC method and params to call.\n * This handles backwards compatibility, based on the provided @protocolVersion.\n *\n * @param methodName the name of {@link MobileWallet} method that was called\n * @param methodParams the parameters that were passed to the method\n * @param protocolVersion the protocol version in use for this session/request\n * @returns the RPC request method and params that should be sent to the wallet endpoint\n */\nfunction handleMobileWalletRequest(methodName, methodParams, protocolVersion) {\n let params = methodParams;\n let method = methodName\n .toString()\n .replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`)\n .toLowerCase();\n switch (methodName) {\n case 'authorize': {\n let { chain } = params;\n if (protocolVersion === 'legacy') {\n switch (chain) {\n case 'solana:testnet': {\n chain = 'testnet';\n break;\n }\n case 'solana:devnet': {\n chain = 'devnet';\n break;\n }\n case 'solana:mainnet': {\n chain = 'mainnet-beta';\n break;\n }\n default: {\n chain = params.cluster;\n }\n }\n params.cluster = chain;\n }\n else {\n switch (chain) {\n case 'testnet':\n case 'devnet': {\n chain = `solana:${chain}`;\n break;\n }\n case 'mainnet-beta': {\n chain = 'solana:mainnet';\n break;\n }\n }\n params.chain = chain;\n }\n }\n case 'reauthorize': {\n const { auth_token, identity } = params;\n if (auth_token) {\n switch (protocolVersion) {\n case 'legacy': {\n method = 'reauthorize';\n params = { auth_token: auth_token, identity: identity };\n break;\n }\n default: {\n method = 'authorize';\n break;\n }\n }\n }\n break;\n }\n }\n return { method, params };\n}\n/**\n * Handles all {@link MobileWallet} API responses and modifies the response for backwards compatibility, if needed\n *\n * @param method the {@link MobileWallet} method that was called\n * @param response the original response that was returned by the method call\n * @param protocolVersion the protocol version in use for this session/request\n * @returns the possibly modified response\n */\nfunction handleMobileWalletResponse(method, response, protocolVersion) {\n switch (method) {\n case 'getCapabilities': {\n const capabilities = response;\n switch (protocolVersion) {\n case 'legacy': {\n const features = [SolanaSignTransactions];\n if (capabilities.supports_clone_authorization === true) {\n features.push(SolanaCloneAuthorization);\n }\n return Object.assign(Object.assign({}, capabilities), { features: features });\n }\n case 'v1': {\n return Object.assign(Object.assign({}, capabilities), { supports_sign_and_send_transactions: true, supports_clone_authorization: capabilities.features.includes(SolanaCloneAuthorization) });\n }\n }\n }\n }\n return response;\n}\nfunction signInFallback(signInPayload, authorizationResult, protocolRequestHandler) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const domain = (_a = signInPayload.domain) !== null && _a !== void 0 ? _a : window.location.host;\n const address = authorizationResult.accounts[0].address;\n const siwsMessage = createSIWSMessageBase64(Object.assign(Object.assign({}, signInPayload), { domain, address }));\n const signMessageResult = yield protocolRequestHandler('sign_messages', {\n addresses: [address],\n payloads: [siwsMessage]\n });\n const signInResult = {\n address: address,\n signed_message: siwsMessage,\n signature: signMessageResult.signed_payloads[0].slice(siwsMessage.length)\n };\n return signInResult;\n });\n}\n\nconst SEQUENCE_NUMBER_BYTES = 4;\nfunction createSequenceNumberVector(sequenceNumber) {\n if (sequenceNumber >= 4294967296) {\n throw new Error('Outbound sequence number overflow. The maximum sequence number is 32-bytes.');\n }\n const byteArray = new ArrayBuffer(SEQUENCE_NUMBER_BYTES);\n const view = new DataView(byteArray);\n view.setUint32(0, sequenceNumber, /* littleEndian */ false);\n return new Uint8Array(byteArray);\n}\n\nconst INITIALIZATION_VECTOR_BYTES = 12;\nconst ENCODED_PUBLIC_KEY_LENGTH_BYTES = 65;\nfunction encryptMessage(plaintext, sequenceNumber, sharedSecret) {\n return __awaiter(this, void 0, void 0, function* () {\n const sequenceNumberVector = createSequenceNumberVector(sequenceNumber);\n const initializationVector = new Uint8Array(INITIALIZATION_VECTOR_BYTES);\n crypto.getRandomValues(initializationVector);\n const ciphertext = yield crypto.subtle.encrypt(getAlgorithmParams(sequenceNumberVector, initializationVector), sharedSecret, new TextEncoder().encode(plaintext));\n const response = new Uint8Array(sequenceNumberVector.byteLength + initializationVector.byteLength + ciphertext.byteLength);\n response.set(new Uint8Array(sequenceNumberVector), 0);\n response.set(new Uint8Array(initializationVector), sequenceNumberVector.byteLength);\n response.set(new Uint8Array(ciphertext), sequenceNumberVector.byteLength + initializationVector.byteLength);\n return response;\n });\n}\nfunction decryptMessage(message, sharedSecret) {\n return __awaiter(this, void 0, void 0, function* () {\n const sequenceNumberVector = message.slice(0, SEQUENCE_NUMBER_BYTES);\n const initializationVector = message.slice(SEQUENCE_NUMBER_BYTES, SEQUENCE_NUMBER_BYTES + INITIALIZATION_VECTOR_BYTES);\n const ciphertext = message.slice(SEQUENCE_NUMBER_BYTES + INITIALIZATION_VECTOR_BYTES);\n const plaintextBuffer = yield crypto.subtle.decrypt(getAlgorithmParams(sequenceNumberVector, initializationVector), sharedSecret, ciphertext);\n const plaintext = getUtf8Decoder().decode(plaintextBuffer);\n return plaintext;\n });\n}\nfunction getAlgorithmParams(sequenceNumber, initializationVector) {\n return {\n additionalData: sequenceNumber,\n iv: initializationVector,\n name: 'AES-GCM',\n tagLength: 128, // 16 byte tag => 128 bits\n };\n}\nlet _utf8Decoder;\nfunction getUtf8Decoder() {\n if (_utf8Decoder === undefined) {\n _utf8Decoder = new TextDecoder('utf-8');\n }\n return _utf8Decoder;\n}\n\nfunction generateAssociationKeypair() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield crypto.subtle.generateKey({\n name: 'ECDSA',\n namedCurve: 'P-256',\n }, false /* extractable */, ['sign'] /* keyUsages */);\n });\n}\n\nfunction generateECDHKeypair() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield crypto.subtle.generateKey({\n name: 'ECDH',\n namedCurve: 'P-256',\n }, false /* extractable */, ['deriveKey', 'deriveBits'] /* keyUsages */);\n });\n}\n\nfunction encryptJsonRpcMessage(jsonRpcMessage, sharedSecret) {\n return __awaiter(this, void 0, void 0, function* () {\n const plaintext = JSON.stringify(jsonRpcMessage);\n const sequenceNumber = jsonRpcMessage.id;\n return encryptMessage(plaintext, sequenceNumber, sharedSecret);\n });\n}\nfunction decryptJsonRpcMessage(message, sharedSecret) {\n return __awaiter(this, void 0, void 0, function* () {\n const plaintext = yield decryptMessage(message, sharedSecret);\n const jsonRpcMessage = JSON.parse(plaintext);\n if (Object.hasOwnProperty.call(jsonRpcMessage, 'error')) {\n throw new SolanaMobileWalletAdapterProtocolError(jsonRpcMessage.id, jsonRpcMessage.error.code, jsonRpcMessage.error.message);\n }\n return jsonRpcMessage;\n });\n}\n\nfunction parseHelloRsp(payloadBuffer, // The X9.62-encoded wallet endpoint ephemeral ECDH public keypoint.\nassociationPublicKey, ecdhPrivateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const [associationPublicKeyBuffer, walletPublicKey] = yield Promise.all([\n crypto.subtle.exportKey('raw', associationPublicKey),\n crypto.subtle.importKey('raw', payloadBuffer.slice(0, ENCODED_PUBLIC_KEY_LENGTH_BYTES), { name: 'ECDH', namedCurve: 'P-256' }, false /* extractable */, [] /* keyUsages */),\n ]);\n const sharedSecret = yield crypto.subtle.deriveBits({ name: 'ECDH', public: walletPublicKey }, ecdhPrivateKey, 256);\n const ecdhSecretKey = yield crypto.subtle.importKey('raw', sharedSecret, 'HKDF', false /* extractable */, ['deriveKey'] /* keyUsages */);\n const aesKeyMaterialVal = yield crypto.subtle.deriveKey({\n name: 'HKDF',\n hash: 'SHA-256',\n salt: new Uint8Array(associationPublicKeyBuffer),\n info: new Uint8Array(),\n }, ecdhSecretKey, { name: 'AES-GCM', length: 128 }, false /* extractable */, ['encrypt', 'decrypt']);\n return aesKeyMaterialVal;\n });\n}\n\nfunction parseSessionProps(message, sharedSecret) {\n return __awaiter(this, void 0, void 0, function* () {\n const plaintext = yield decryptMessage(message, sharedSecret);\n const jsonProperties = JSON.parse(plaintext);\n let protocolVersion = 'legacy';\n if (Object.hasOwnProperty.call(jsonProperties, 'v')) {\n switch (jsonProperties.v) {\n case 1:\n case '1':\n case 'v1':\n protocolVersion = 'v1';\n break;\n case 'legacy':\n protocolVersion = 'legacy';\n break;\n default:\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_INVALID_PROTOCOL_VERSION, `Unknown/unsupported protocol version: ${jsonProperties.v}`);\n }\n }\n return ({\n protocol_version: protocolVersion\n });\n });\n}\n\nfunction getRandomAssociationPort() {\n return assertAssociationPort(49152 + Math.floor(Math.random() * (65535 - 49152 + 1)));\n}\nfunction assertAssociationPort(port) {\n if (port < 49152 || port > 65535) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_ASSOCIATION_PORT_OUT_OF_RANGE, `Association port number must be between 49152 and 65535. ${port} given.`, { port });\n }\n return port;\n}\n\n// https://stackoverflow.com/a/9458996/802047\nfunction arrayBufferToBase64String(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let ii = 0; ii < len; ii++) {\n binary += String.fromCharCode(bytes[ii]);\n }\n return window.btoa(binary);\n}\n\nfunction getStringWithURLUnsafeCharactersReplaced(unsafeBase64EncodedString) {\n return unsafeBase64EncodedString.replace(/[/+=]/g, (m) => ({\n '/': '_',\n '+': '-',\n '=': '.',\n }[m]));\n}\n\nfunction getRandomReflectorId() {\n return assertReflectorId(getRandomInt(0, 9007199254740991)); // 0 < id < 2^53 - 1\n}\nfunction getRandomInt(min, max) {\n const randomBuffer = new Uint32Array(1);\n window.crypto.getRandomValues(randomBuffer);\n let randomNumber = randomBuffer[0] / (0xffffffff + 1);\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(randomNumber * (max - min + 1)) + min;\n}\nfunction assertReflectorId(id) {\n if (id < 0 || id > 9007199254740991) { // 0 < id < 2^53 - 1\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_REFLECTOR_ID_OUT_OF_RANGE, `Association port number must be between 49152 and 65535. ${id} given.`, { id });\n }\n return id;\n}\n\nconst INTENT_NAME = 'solana-wallet';\nfunction getPathParts(pathString) {\n return (pathString\n // Strip leading and trailing slashes\n .replace(/(^\\/+|\\/+$)/g, '')\n // Return an array of directories\n .split('/'));\n}\nfunction getIntentURL(methodPathname, intentUrlBase) {\n let baseUrl = null;\n if (intentUrlBase) {\n try {\n baseUrl = new URL(intentUrlBase);\n }\n catch (_a) { } // eslint-disable-line no-empty\n if ((baseUrl === null || baseUrl === void 0 ? void 0 : baseUrl.protocol) !== 'https:') {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_FORBIDDEN_WALLET_BASE_URL, 'Base URLs supplied by wallets must be valid `https` URLs');\n }\n }\n baseUrl || (baseUrl = new URL(`${INTENT_NAME}:/`));\n const pathname = methodPathname.startsWith('/')\n ? // Method is an absolute path. Replace it wholesale.\n methodPathname\n : // Method is a relative path. Merge it with the existing one.\n [...getPathParts(baseUrl.pathname), ...getPathParts(methodPathname)].join('/');\n return new URL(pathname, baseUrl);\n}\nfunction getAssociateAndroidIntentURL(associationPublicKey, putativePort, associationURLBase, protocolVersions = ['v1']) {\n return __awaiter(this, void 0, void 0, function* () {\n const associationPort = assertAssociationPort(putativePort);\n const exportedKey = yield crypto.subtle.exportKey('raw', associationPublicKey);\n const encodedKey = arrayBufferToBase64String(exportedKey);\n const url = getIntentURL('v1/associate/local', associationURLBase);\n url.searchParams.set('association', getStringWithURLUnsafeCharactersReplaced(encodedKey));\n url.searchParams.set('port', `${associationPort}`);\n protocolVersions.forEach((version) => {\n url.searchParams.set('v', version);\n });\n return url;\n });\n}\nfunction getRemoteAssociateAndroidIntentURL(associationPublicKey, hostAuthority, putativeId, associationURLBase, protocolVersions = ['v1']) {\n return __awaiter(this, void 0, void 0, function* () {\n const reflectorId = assertReflectorId(putativeId);\n const exportedKey = yield crypto.subtle.exportKey('raw', associationPublicKey);\n const encodedKey = arrayBufferToBase64String(exportedKey);\n const url = getIntentURL('v1/associate/remote', associationURLBase);\n url.searchParams.set('association', getStringWithURLUnsafeCharactersReplaced(encodedKey));\n url.searchParams.set('reflector', `${hostAuthority}`);\n url.searchParams.set('id', `${reflectorId}`);\n protocolVersions.forEach((version) => {\n url.searchParams.set('v', version);\n });\n return url;\n });\n}\n\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nconst Browser = {\n Firefox: 0,\n Other: 1,\n};\nfunction assertUnreachable(x) {\n return x;\n}\nfunction getBrowser() {\n return navigator.userAgent.indexOf('Firefox/') !== -1 ? Browser.Firefox : Browser.Other;\n}\nfunction getDetectionPromise() {\n // Chrome and others silently fail if a custom protocol is not supported.\n // For these, we wait to see if the browser is navigated away from in\n // a reasonable amount of time (ie. the native wallet opened).\n return new Promise((resolve, reject) => {\n function cleanup() {\n clearTimeout(timeoutId);\n window.removeEventListener('blur', handleBlur);\n }\n function handleBlur() {\n cleanup();\n resolve();\n }\n window.addEventListener('blur', handleBlur);\n const timeoutId = setTimeout(() => {\n cleanup();\n reject();\n }, 2000);\n });\n}\nlet _frame = null;\nfunction launchUrlThroughHiddenFrame(url) {\n if (_frame == null) {\n _frame = document.createElement('iframe');\n _frame.style.display = 'none';\n document.body.appendChild(_frame);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _frame.contentWindow.location.href = url.toString();\n}\nfunction launchAssociation(associationUrl) {\n return __awaiter(this, void 0, void 0, function* () {\n if (associationUrl.protocol === 'https:') {\n // The association URL is an Android 'App Link' or iOS 'Universal Link'.\n // These are regular web URLs that are designed to launch an app if it\n // is installed or load the actual target webpage if not.\n window.location.assign(associationUrl);\n }\n else {\n // The association URL has a custom protocol (eg. `solana-wallet:`)\n try {\n const browser = getBrowser();\n switch (browser) {\n case Browser.Firefox:\n // If a custom protocol is not supported in Firefox, it throws.\n launchUrlThroughHiddenFrame(associationUrl);\n // If we reached this line, it's supported.\n break;\n case Browser.Other: {\n const detectionPromise = getDetectionPromise();\n window.location.assign(associationUrl);\n yield detectionPromise;\n break;\n }\n default:\n assertUnreachable(browser);\n }\n }\n catch (e) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_WALLET_NOT_FOUND, 'Found no installed wallet that supports the mobile wallet protocol.');\n }\n }\n });\n}\nfunction startSession(associationPublicKey, associationURLBase) {\n return __awaiter(this, void 0, void 0, function* () {\n const randomAssociationPort = getRandomAssociationPort();\n const associationUrl = yield getAssociateAndroidIntentURL(associationPublicKey, randomAssociationPort, associationURLBase);\n yield launchAssociation(associationUrl);\n return randomAssociationPort;\n });\n}\nfunction getRemoteSessionUrl(associationPublicKey, hostAuthority, associationURLBase) {\n return __awaiter(this, void 0, void 0, function* () {\n const randomReflectorId = getRandomReflectorId();\n const associationUrl = yield getRemoteAssociateAndroidIntentURL(associationPublicKey, hostAuthority, randomReflectorId, associationURLBase);\n return { associationUrl, reflectorId: randomReflectorId };\n });\n}\n\nconst WEBSOCKET_CONNECTION_CONFIG = {\n /**\n * 300 milliseconds is a generally accepted threshold for what someone\n * would consider an acceptable response time for a user interface\n * after having performed a low-attention tapping task. We set the initial\n * interval at which we wait for the wallet to set up the websocket at\n * half this, as per the Nyquist frequency, with a progressive backoff\n * sequence from there. The total wait time is 30s, which allows for the\n * user to be presented with a disambiguation dialog, select a wallet, and\n * for the wallet app to subsequently start.\n */\n retryDelayScheduleMs: [150, 150, 200, 500, 500, 750, 750, 1000],\n timeoutMs: 30000,\n};\nconst WEBSOCKET_PROTOCOL = 'com.solana.mobilewalletadapter.v1';\nfunction assertSecureContext() {\n if (typeof window === 'undefined' || window.isSecureContext !== true) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SECURE_CONTEXT_REQUIRED, 'The mobile wallet adapter protocol must be used in a secure context (`https`).');\n }\n}\nfunction assertSecureEndpointSpecificURI(walletUriBase) {\n let url;\n try {\n url = new URL(walletUriBase);\n }\n catch (_a) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_FORBIDDEN_WALLET_BASE_URL, 'Invalid base URL supplied by wallet');\n }\n if (url.protocol !== 'https:') {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_FORBIDDEN_WALLET_BASE_URL, 'Base URLs supplied by wallets must be valid `https` URLs');\n }\n}\nfunction getSequenceNumberFromByteArray(byteArray) {\n const view = new DataView(byteArray);\n return view.getUint32(0, /* littleEndian */ false);\n}\nfunction transact(callback, config) {\n return __awaiter(this, void 0, void 0, function* () {\n assertSecureContext();\n const associationKeypair = yield generateAssociationKeypair();\n const sessionPort = yield startSession(associationKeypair.publicKey, config === null || config === void 0 ? void 0 : config.baseUri);\n const websocketURL = `ws://localhost:${sessionPort}/solana-wallet`;\n let connectionStartTime;\n const getNextRetryDelayMs = (() => {\n const schedule = [...WEBSOCKET_CONNECTION_CONFIG.retryDelayScheduleMs];\n return () => (schedule.length > 1 ? schedule.shift() : schedule[0]);\n })();\n let nextJsonRpcMessageId = 1;\n let lastKnownInboundSequenceNumber = 0;\n let state = { __type: 'disconnected' };\n return new Promise((resolve, reject) => {\n let socket;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const jsonRpcResponsePromises = {};\n const handleOpen = () => __awaiter(this, void 0, void 0, function* () {\n if (state.__type !== 'connecting') {\n console.warn('Expected adapter state to be `connecting` at the moment the websocket opens. ' +\n `Got \\`${state.__type}\\`.`);\n return;\n }\n socket.removeEventListener('open', handleOpen);\n // previous versions of this library and walletlib incorrectly implemented the MWA session \n // establishment protocol for local connections. The dapp is supposed to wait for the \n // APP_PING message before sending the HELLO_REQ. Instead, the dapp was sending the HELLO_REQ \n // immediately upon connection to the websocket server regardless of wether or not an \n // APP_PING was sent by the wallet/websocket server. We must continue to support this behavior \n // in case the user is using a wallet that has not updated their walletlib implementation. \n const { associationKeypair } = state;\n const ecdhKeypair = yield generateECDHKeypair();\n socket.send(yield createHelloReq(ecdhKeypair.publicKey, associationKeypair.privateKey));\n state = {\n __type: 'hello_req_sent',\n associationPublicKey: associationKeypair.publicKey,\n ecdhPrivateKey: ecdhKeypair.privateKey,\n };\n });\n const handleClose = (evt) => {\n if (evt.wasClean) {\n state = { __type: 'disconnected' };\n }\n else {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_CLOSED, `The wallet session dropped unexpectedly (${evt.code}: ${evt.reason}).`, { closeEvent: evt }));\n }\n disposeSocket();\n };\n const handleError = (_evt) => __awaiter(this, void 0, void 0, function* () {\n disposeSocket();\n if (Date.now() - connectionStartTime >= WEBSOCKET_CONNECTION_CONFIG.timeoutMs) {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_TIMEOUT, `Failed to connect to the wallet websocket at ${websocketURL}.`));\n }\n else {\n yield new Promise((resolve) => {\n const retryDelayMs = getNextRetryDelayMs();\n retryWaitTimeoutId = window.setTimeout(resolve, retryDelayMs);\n });\n attemptSocketConnection();\n }\n });\n const handleMessage = (evt) => __awaiter(this, void 0, void 0, function* () {\n const responseBuffer = yield evt.data.arrayBuffer();\n switch (state.__type) {\n case 'connecting':\n if (responseBuffer.byteLength !== 0) {\n throw new Error('Encountered unexpected message while connecting');\n }\n const ecdhKeypair = yield generateECDHKeypair();\n socket.send(yield createHelloReq(ecdhKeypair.publicKey, associationKeypair.privateKey));\n state = {\n __type: 'hello_req_sent',\n associationPublicKey: associationKeypair.publicKey,\n ecdhPrivateKey: ecdhKeypair.privateKey,\n };\n break;\n case 'connected':\n try {\n const sequenceNumberVector = responseBuffer.slice(0, SEQUENCE_NUMBER_BYTES);\n const sequenceNumber = getSequenceNumberFromByteArray(sequenceNumberVector);\n if (sequenceNumber !== (lastKnownInboundSequenceNumber + 1)) {\n throw new Error('Encrypted message has invalid sequence number');\n }\n lastKnownInboundSequenceNumber = sequenceNumber;\n const jsonRpcMessage = yield decryptJsonRpcMessage(responseBuffer, state.sharedSecret);\n const responsePromise = jsonRpcResponsePromises[jsonRpcMessage.id];\n delete jsonRpcResponsePromises[jsonRpcMessage.id];\n responsePromise.resolve(jsonRpcMessage.result);\n }\n catch (e) {\n if (e instanceof SolanaMobileWalletAdapterProtocolError) {\n const responsePromise = jsonRpcResponsePromises[e.jsonRpcMessageId];\n delete jsonRpcResponsePromises[e.jsonRpcMessageId];\n responsePromise.reject(e);\n }\n else {\n throw e;\n }\n }\n break;\n case 'hello_req_sent': {\n // if we receive an APP_PING message (empty message), resend the HELLO_REQ (see above)\n if (responseBuffer.byteLength === 0) {\n const ecdhKeypair = yield generateECDHKeypair();\n socket.send(yield createHelloReq(ecdhKeypair.publicKey, associationKeypair.privateKey));\n state = {\n __type: 'hello_req_sent',\n associationPublicKey: associationKeypair.publicKey,\n ecdhPrivateKey: ecdhKeypair.privateKey,\n };\n break;\n }\n const sharedSecret = yield parseHelloRsp(responseBuffer, state.associationPublicKey, state.ecdhPrivateKey);\n const sessionPropertiesBuffer = responseBuffer.slice(ENCODED_PUBLIC_KEY_LENGTH_BYTES);\n const sessionProperties = sessionPropertiesBuffer.byteLength !== 0\n ? yield (() => __awaiter(this, void 0, void 0, function* () {\n const sequenceNumberVector = sessionPropertiesBuffer.slice(0, SEQUENCE_NUMBER_BYTES);\n const sequenceNumber = getSequenceNumberFromByteArray(sequenceNumberVector);\n if (sequenceNumber !== (lastKnownInboundSequenceNumber + 1)) {\n throw new Error('Encrypted message has invalid sequence number');\n }\n lastKnownInboundSequenceNumber = sequenceNumber;\n return parseSessionProps(sessionPropertiesBuffer, sharedSecret);\n }))() : { protocol_version: 'legacy' };\n state = { __type: 'connected', sharedSecret, sessionProperties };\n const wallet = createMobileWalletProxy(sessionProperties.protocol_version, (method, params) => __awaiter(this, void 0, void 0, function* () {\n const id = nextJsonRpcMessageId++;\n socket.send(yield encryptJsonRpcMessage({\n id,\n jsonrpc: '2.0',\n method,\n params: params !== null && params !== void 0 ? params : {},\n }, sharedSecret));\n return new Promise((resolve, reject) => {\n jsonRpcResponsePromises[id] = {\n resolve(result) {\n switch (method) {\n case 'authorize':\n case 'reauthorize': {\n const { wallet_uri_base } = result;\n if (wallet_uri_base != null) {\n try {\n assertSecureEndpointSpecificURI(wallet_uri_base);\n }\n catch (e) {\n reject(e);\n return;\n }\n }\n break;\n }\n }\n resolve(result);\n },\n reject,\n };\n });\n }));\n try {\n resolve(yield callback(wallet));\n }\n catch (e) {\n reject(e);\n }\n finally {\n disposeSocket();\n socket.close();\n }\n break;\n }\n }\n });\n let disposeSocket;\n let retryWaitTimeoutId;\n const attemptSocketConnection = () => {\n if (disposeSocket) {\n disposeSocket();\n }\n state = { __type: 'connecting', associationKeypair };\n if (connectionStartTime === undefined) {\n connectionStartTime = Date.now();\n }\n socket = new WebSocket(websocketURL, [WEBSOCKET_PROTOCOL]);\n socket.addEventListener('open', handleOpen);\n socket.addEventListener('close', handleClose);\n socket.addEventListener('error', handleError);\n socket.addEventListener('message', handleMessage);\n disposeSocket = () => {\n window.clearTimeout(retryWaitTimeoutId);\n socket.removeEventListener('open', handleOpen);\n socket.removeEventListener('close', handleClose);\n socket.removeEventListener('error', handleError);\n socket.removeEventListener('message', handleMessage);\n };\n };\n attemptSocketConnection();\n });\n });\n}\nfunction transactRemote(callback, config) {\n return __awaiter(this, void 0, void 0, function* () {\n assertSecureContext();\n const associationKeypair = yield generateAssociationKeypair();\n const { associationUrl, reflectorId } = yield getRemoteSessionUrl(associationKeypair.publicKey, config.remoteHostAuthority, config === null || config === void 0 ? void 0 : config.baseUri);\n const websocketURL = `wss://${config === null || config === void 0 ? void 0 : config.remoteHostAuthority}/reflect?id=${reflectorId}`;\n let connectionStartTime;\n const getNextRetryDelayMs = (() => {\n const schedule = [...WEBSOCKET_CONNECTION_CONFIG.retryDelayScheduleMs];\n return () => (schedule.length > 1 ? schedule.shift() : schedule[0]);\n })();\n let nextJsonRpcMessageId = 1;\n let lastKnownInboundSequenceNumber = 0;\n let state = { __type: 'disconnected' };\n return { associationUrl, result: new Promise((resolve, reject) => {\n let socket;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const jsonRpcResponsePromises = {};\n const handleOpen = () => __awaiter(this, void 0, void 0, function* () {\n if (state.__type !== 'connecting') {\n console.warn('Expected adapter state to be `connecting` at the moment the websocket opens. ' +\n `Got \\`${state.__type}\\`.`);\n return;\n }\n socket.removeEventListener('open', handleOpen);\n });\n const handleClose = (evt) => {\n if (evt.wasClean) {\n state = { __type: 'disconnected' };\n }\n else {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_CLOSED, `The wallet session dropped unexpectedly (${evt.code}: ${evt.reason}).`, { closeEvent: evt }));\n }\n disposeSocket();\n };\n const handleError = (_evt) => __awaiter(this, void 0, void 0, function* () {\n disposeSocket();\n if (Date.now() - connectionStartTime >= WEBSOCKET_CONNECTION_CONFIG.timeoutMs) {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_TIMEOUT, `Failed to connect to the wallet websocket at ${websocketURL}.`));\n }\n else {\n yield new Promise((resolve) => {\n const retryDelayMs = getNextRetryDelayMs();\n retryWaitTimeoutId = window.setTimeout(resolve, retryDelayMs);\n });\n attemptSocketConnection();\n }\n });\n const handleMessage = (evt) => __awaiter(this, void 0, void 0, function* () {\n const responseBuffer = yield evt.data.arrayBuffer();\n switch (state.__type) {\n case 'connecting':\n if (responseBuffer.byteLength !== 0) {\n throw new Error('Encountered unexpected message while connecting');\n }\n const ecdhKeypair = yield generateECDHKeypair();\n socket.send(yield createHelloReq(ecdhKeypair.publicKey, associationKeypair.privateKey));\n state = {\n __type: 'hello_req_sent',\n associationPublicKey: associationKeypair.publicKey,\n ecdhPrivateKey: ecdhKeypair.privateKey,\n };\n break;\n case 'connected':\n try {\n const sequenceNumberVector = responseBuffer.slice(0, SEQUENCE_NUMBER_BYTES);\n const sequenceNumber = getSequenceNumberFromByteArray(sequenceNumberVector);\n if (sequenceNumber !== (lastKnownInboundSequenceNumber + 1)) {\n throw new Error('Encrypted message has invalid sequence number');\n }\n lastKnownInboundSequenceNumber = sequenceNumber;\n const jsonRpcMessage = yield decryptJsonRpcMessage(responseBuffer, state.sharedSecret);\n const responsePromise = jsonRpcResponsePromises[jsonRpcMessage.id];\n delete jsonRpcResponsePromises[jsonRpcMessage.id];\n responsePromise.resolve(jsonRpcMessage.result);\n }\n catch (e) {\n if (e instanceof SolanaMobileWalletAdapterProtocolError) {\n const responsePromise = jsonRpcResponsePromises[e.jsonRpcMessageId];\n delete jsonRpcResponsePromises[e.jsonRpcMessageId];\n responsePromise.reject(e);\n }\n else {\n throw e;\n }\n }\n break;\n case 'hello_req_sent': {\n const sharedSecret = yield parseHelloRsp(responseBuffer, state.associationPublicKey, state.ecdhPrivateKey);\n const sessionPropertiesBuffer = responseBuffer.slice(ENCODED_PUBLIC_KEY_LENGTH_BYTES);\n const sessionProperties = sessionPropertiesBuffer.byteLength !== 0\n ? yield (() => __awaiter(this, void 0, void 0, function* () {\n const sequenceNumberVector = sessionPropertiesBuffer.slice(0, SEQUENCE_NUMBER_BYTES);\n const sequenceNumber = getSequenceNumberFromByteArray(sequenceNumberVector);\n if (sequenceNumber !== (lastKnownInboundSequenceNumber + 1)) {\n throw new Error('Encrypted message has invalid sequence number');\n }\n lastKnownInboundSequenceNumber = sequenceNumber;\n return parseSessionProps(sessionPropertiesBuffer, sharedSecret);\n }))() : { protocol_version: 'legacy' };\n state = { __type: 'connected', sharedSecret, sessionProperties };\n const wallet = createMobileWalletProxy(sessionProperties.protocol_version, (method, params) => __awaiter(this, void 0, void 0, function* () {\n const id = nextJsonRpcMessageId++;\n socket.send(yield encryptJsonRpcMessage({\n id,\n jsonrpc: '2.0',\n method,\n params: params !== null && params !== void 0 ? params : {},\n }, sharedSecret));\n return new Promise((resolve, reject) => {\n jsonRpcResponsePromises[id] = {\n resolve(result) {\n switch (method) {\n case 'authorize':\n case 'reauthorize': {\n const { wallet_uri_base } = result;\n if (wallet_uri_base != null) {\n try {\n assertSecureEndpointSpecificURI(wallet_uri_base);\n }\n catch (e) {\n reject(e);\n return;\n }\n }\n break;\n }\n }\n resolve(result);\n },\n reject,\n };\n });\n }));\n try {\n resolve(yield callback(new Proxy(wallet, {\n get(target, p) {\n if (p == 'terminateSession') {\n return function () {\n return __awaiter(this, void 0, void 0, function* () {\n disposeSocket();\n socket.close();\n return;\n });\n };\n }\n else\n return target[p];\n },\n })));\n }\n catch (e) {\n reject(e);\n }\n break;\n }\n }\n });\n let disposeSocket;\n let retryWaitTimeoutId;\n const attemptSocketConnection = () => {\n if (disposeSocket) {\n disposeSocket();\n }\n state = { __type: 'connecting', associationKeypair };\n if (connectionStartTime === undefined) {\n connectionStartTime = Date.now();\n }\n socket = new WebSocket(websocketURL, [WEBSOCKET_PROTOCOL]);\n socket.addEventListener('open', handleOpen);\n socket.addEventListener('close', handleClose);\n socket.addEventListener('error', handleError);\n socket.addEventListener('message', handleMessage);\n disposeSocket = () => {\n window.clearTimeout(retryWaitTimeoutId);\n socket.removeEventListener('open', handleOpen);\n socket.removeEventListener('close', handleClose);\n socket.removeEventListener('error', handleError);\n socket.removeEventListener('message', handleMessage);\n };\n };\n attemptSocketConnection();\n }) };\n });\n}\n\nexport { SolanaCloneAuthorization, SolanaMobileWalletAdapterError, SolanaMobileWalletAdapterErrorCode, SolanaMobileWalletAdapterProtocolError, SolanaMobileWalletAdapterProtocolErrorCode, SolanaSignInWithSolana, SolanaSignTransactions, transact, transactRemote };\n","import { VersionedMessage, Transaction, VersionedTransaction, SIGNATURE_LENGTH_IN_BYTES } from '@solana/web3.js';\nimport { transact as transact$1, transactRemote as transactRemote$1 } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport bs58 from 'bs58';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nfunction fromUint8Array(byteArray) {\n return window.btoa(String.fromCharCode.call(null, ...byteArray));\n}\nfunction toUint8Array(base64EncodedByteArray) {\n return new Uint8Array(window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)));\n}\n\nfunction getPayloadFromTransaction(transaction) {\n const serializedTransaction = 'version' in transaction\n ? transaction.serialize()\n : transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n });\n const payload = fromUint8Array(serializedTransaction);\n return payload;\n}\nfunction getTransactionFromWireMessage(byteArray) {\n const numSignatures = byteArray[0];\n const messageOffset = numSignatures * SIGNATURE_LENGTH_IN_BYTES + 1;\n const version = VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length));\n if (version === 'legacy') {\n return Transaction.from(byteArray);\n }\n else {\n return VersionedTransaction.deserialize(byteArray);\n }\n}\nfunction transact(callback, config) {\n return __awaiter(this, void 0, void 0, function* () {\n const augmentedCallback = (wallet) => {\n const augmentedAPI = new Proxy({}, {\n get(target, p) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = function (_a) {\n var { minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions } = _a, rest = __rest(_a, [\"minContextSlot\", \"commitment\", \"skipPreflight\", \"maxRetries\", \"waitForCommitmentToSendNextTransaction\", \"transactions\"]);\n return __awaiter(this, void 0, void 0, function* () {\n const payloads = transactions.map(getPayloadFromTransaction);\n const options = {\n min_context_slot: minContextSlot,\n commitment: commitment,\n skip_preflight: skipPreflight,\n max_retries: maxRetries,\n wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction\n };\n const { signatures: base64EncodedSignatures } = yield wallet.signAndSendTransactions(Object.assign(Object.assign(Object.assign({}, rest), (Object.values(options).some(element => element != null)\n ? { options: options }\n : null)), { payloads }));\n const signatures = base64EncodedSignatures.map(toUint8Array).map(bs58.encode);\n return signatures;\n });\n };\n break;\n case 'signMessages':\n target[p] = function (_a) {\n var { payloads } = _a, rest = __rest(_a, [\"payloads\"]);\n return __awaiter(this, void 0, void 0, function* () {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = yield wallet.signMessages(Object.assign(Object.assign({}, rest), { payloads: base64EncodedPayloads }));\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n });\n };\n break;\n case 'signTransactions':\n target[p] = function (_a) {\n var { transactions } = _a, rest = __rest(_a, [\"transactions\"]);\n return __awaiter(this, void 0, void 0, function* () {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } = yield wallet.signTransactions(Object.assign(Object.assign({}, rest), { payloads }));\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n });\n };\n break;\n default: {\n target[p] = wallet[p];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n return callback(augmentedAPI);\n };\n return yield transact$1(augmentedCallback, config);\n });\n}\nfunction transactRemote(callback, config) {\n return __awaiter(this, void 0, void 0, function* () {\n const augmentedCallback = (wallet) => {\n const augmentedAPI = new Proxy({}, {\n get(target, p) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = function (_a) {\n var { minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions } = _a, rest = __rest(_a, [\"minContextSlot\", \"commitment\", \"skipPreflight\", \"maxRetries\", \"waitForCommitmentToSendNextTransaction\", \"transactions\"]);\n return __awaiter(this, void 0, void 0, function* () {\n const payloads = transactions.map(getPayloadFromTransaction);\n const options = {\n min_context_slot: minContextSlot,\n commitment: commitment,\n skip_preflight: skipPreflight,\n max_retries: maxRetries,\n wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction\n };\n const { signatures: base64EncodedSignatures } = yield wallet.signAndSendTransactions(Object.assign(Object.assign(Object.assign({}, rest), (Object.values(options).some(element => element != null)\n ? { options: options }\n : null)), { payloads }));\n const signatures = base64EncodedSignatures.map(toUint8Array).map(bs58.encode);\n return signatures;\n });\n };\n break;\n case 'signMessages':\n target[p] = function (_a) {\n var { payloads } = _a, rest = __rest(_a, [\"payloads\"]);\n return __awaiter(this, void 0, void 0, function* () {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = yield wallet.signMessages(Object.assign(Object.assign({}, rest), { payloads: base64EncodedPayloads }));\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n });\n };\n break;\n case 'signTransactions':\n target[p] = function (_a) {\n var { transactions } = _a, rest = __rest(_a, [\"transactions\"]);\n return __awaiter(this, void 0, void 0, function* () {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } = yield wallet.signTransactions(Object.assign(Object.assign({}, rest), { payloads }));\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n });\n };\n break;\n default: {\n target[p] = wallet[p];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n return callback(augmentedAPI);\n };\n return yield transactRemote$1(augmentedCallback, config);\n });\n}\n\nexport { transact, transactRemote };\n","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.7';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = typeof btoa === 'function' ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","import { BaseSignInMessageSignerWalletAdapter, WalletReadyState, WalletPublicKeyError, WalletNotReadyError, WalletConnectionError, WalletDisconnectedError, WalletNotConnectedError, WalletSignTransactionError, WalletSendTransactionError, WalletSignMessageError, isVersionedTransaction as isVersionedTransaction$1 } from '@solana/wallet-adapter-base';\nimport { PublicKey } from '@solana/web3.js';\nimport { transact, transactRemote } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';\nimport QRCode from 'qrcode';\nimport { toUint8Array as toUint8Array$1 } from 'js-base64';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nfunction toUint8Array(base64EncodedByteArray) {\n return new Uint8Array(window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)));\n}\n\nfunction getIsSupported$1() {\n return (typeof window !== 'undefined' &&\n window.isSecureContext &&\n typeof document !== 'undefined' &&\n /android/i.test(navigator.userAgent));\n}\n\nconst SolanaMobileWalletAdapterWalletName = 'Mobile Wallet Adapter';\nconst SIGNATURE_LENGTH_IN_BYTES$1 = 64;\nfunction getPublicKeyFromAddress$1(address) {\n const publicKeyByteArray = toUint8Array(address);\n return new PublicKey(publicKeyByteArray);\n}\nfunction isVersionedTransaction(transaction) {\n return 'version' in transaction;\n}\nfunction clusterToChainId(cluster) {\n switch (cluster) {\n case 'mainnet-beta':\n return 'solana:mainnet';\n case 'testnet':\n return 'solana:testnet';\n case 'devnet':\n return 'solana:devnet';\n }\n}\nclass SolanaMobileWalletAdapter extends BaseSignInMessageSignerWalletAdapter {\n constructor(config) {\n var _a;\n super();\n this.supportedTransactionVersions = new Set(\n // FIXME(#244): We can't actually know what versions are supported until we know which wallet we're talking to.\n ['legacy', 0]);\n this.name = SolanaMobileWalletAdapterWalletName;\n this.url = 'https://solanamobile.com/wallets';\n this.icon = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI4IiB3aWR0aD0iMjgiIHZpZXdCb3g9Ii0zIDAgMjggMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0RDQjhGRiI+PHBhdGggZD0iTTE3LjQgMTcuNEgxNXYyLjRoMi40di0yLjRabTEuMi05LjZoLTIuNHYyLjRoMi40VjcuOFoiLz48cGF0aCBkPSJNMjEuNiAzVjBoLTIuNHYzaC0zLjZWMGgtMi40djNoLTIuNHY2LjZINC41YTIuMSAyLjEgMCAxIDEgMC00LjJoMi43VjNINC41QTQuNSA0LjUgMCAwIDAgMCA3LjVWMjRoMjEuNnYtNi42aC0yLjR2NC4ySDIuNFYxMS41Yy41LjMgMS4yLjQgMS44LjVoNy41QTYuNiA2LjYgMCAwIDAgMjQgOVYzaC0yLjRabTAgNS43YTQuMiA0LjIgMCAxIDEtOC40IDBWNS40aDguNHYzLjNaIi8+PC9nPjwvc3ZnPg==';\n this._connecting = false;\n /**\n * Every time the connection is recycled in some way (eg. `disconnect()` is called)\n * increment this and use it to make sure that `transact` calls from the previous\n * 'generation' don't continue to do work and throw exceptions.\n */\n this._connectionGeneration = 0;\n this._readyState = getIsSupported$1() ? WalletReadyState.Loadable : WalletReadyState.Unsupported;\n this._authorizationResultCache = config.authorizationResultCache;\n this._addressSelector = config.addressSelector;\n this._appIdentity = config.appIdentity;\n this._chain = (_a = config.chain) !== null && _a !== void 0 ? _a : clusterToChainId(config.cluster);\n this._hostAuthority = config.remoteHostAuthority;\n this._onWalletNotFound = config.onWalletNotFound;\n if (this._readyState !== WalletReadyState.Unsupported) {\n this._authorizationResultCache.get().then((authorizationResult) => {\n if (authorizationResult) {\n // Having a prior authorization result is, right now, the best\n // indication that a mobile wallet is installed. There is no API\n // we can use to test for whether the association URI is supported.\n this.declareWalletAsInstalled();\n }\n });\n }\n }\n get publicKey() {\n if (this._publicKey == null && this._selectedAddress != null) {\n try {\n this._publicKey = getPublicKeyFromAddress$1(this._selectedAddress);\n }\n catch (e) {\n throw new WalletPublicKeyError((e instanceof Error && (e === null || e === void 0 ? void 0 : e.message)) || 'Unknown error', e);\n }\n }\n return this._publicKey ? this._publicKey : null;\n }\n get connected() {\n return !!this._authorizationResult;\n }\n get connecting() {\n return this._connecting;\n }\n get readyState() {\n return this._readyState;\n }\n declareWalletAsInstalled() {\n if (this._readyState !== WalletReadyState.Installed) {\n this.emit('readyStateChange', (this._readyState = WalletReadyState.Installed));\n }\n }\n runWithGuard(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n return yield callback();\n }\n catch (e) {\n this.emit('error', e);\n throw e;\n }\n });\n }\n /** @deprecated Use `autoConnect()` instead. */\n autoConnect_DO_NOT_USE_OR_YOU_WILL_BE_FIRED() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.autoConnect();\n });\n }\n autoConnect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.connecting || this.connected) {\n return;\n }\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n if (this._readyState !== WalletReadyState.Installed && this._readyState !== WalletReadyState.Loadable) {\n throw new WalletNotReadyError();\n }\n this._connecting = true;\n try {\n const cachedAuthorizationResult = yield this._authorizationResultCache.get();\n if (cachedAuthorizationResult) {\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n this.handleAuthorizationResult(cachedAuthorizationResult);\n }\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n finally {\n this._connecting = false;\n }\n }));\n });\n }\n connect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.connecting || this.connected) {\n return;\n }\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n if (this._readyState !== WalletReadyState.Installed && this._readyState !== WalletReadyState.Loadable) {\n throw new WalletNotReadyError();\n }\n this._connecting = true;\n try {\n yield this.performAuthorization();\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n finally {\n this._connecting = false;\n }\n }));\n });\n }\n performAuthorization(signInPayload) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const cachedAuthorizationResult = yield this._authorizationResultCache.get();\n if (cachedAuthorizationResult) {\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n this.handleAuthorizationResult(cachedAuthorizationResult);\n return cachedAuthorizationResult;\n }\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n const authorizationResult = yield wallet.authorize({\n chain: this._chain,\n identity: this._appIdentity,\n sign_in_payload: signInPayload,\n });\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n Promise.all([\n this._authorizationResultCache.set(authorizationResult),\n this.handleAuthorizationResult(authorizationResult),\n ]);\n return authorizationResult;\n }));\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n });\n }\n handleAuthorizationResult(authorizationResult) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const didPublicKeysChange = \n // Case 1: We started from having no authorization.\n this._authorizationResult == null ||\n // Case 2: The number of authorized accounts changed.\n ((_a = this._authorizationResult) === null || _a === void 0 ? void 0 : _a.accounts.length) !== authorizationResult.accounts.length ||\n // Case 3: The new list of addresses isn't exactly the same as the old list, in the same order.\n this._authorizationResult.accounts.some((account, ii) => account.address !== authorizationResult.accounts[ii].address);\n this._authorizationResult = authorizationResult;\n this.declareWalletAsInstalled();\n if (didPublicKeysChange) {\n const nextSelectedAddress = yield this._addressSelector.select(authorizationResult.accounts.map(({ address }) => address));\n if (nextSelectedAddress !== this._selectedAddress) {\n this._selectedAddress = nextSelectedAddress;\n delete this._publicKey;\n this.emit('connect', \n // Having just set `this._selectedAddress`, `this.publicKey` is definitely non-null\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.publicKey);\n }\n }\n });\n }\n performReauthorization(wallet, authToken) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const authorizationResult = yield wallet.authorize({\n auth_token: authToken,\n identity: this._appIdentity,\n });\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n Promise.all([\n this._authorizationResultCache.set(authorizationResult),\n this.handleAuthorizationResult(authorizationResult),\n ]);\n }\n catch (e) {\n this.disconnect();\n throw new WalletDisconnectedError((e instanceof Error && (e === null || e === void 0 ? void 0 : e.message)) || 'Unknown error', e);\n }\n });\n }\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n this._authorizationResultCache.clear(); // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n this._connecting = false;\n this._connectionGeneration++;\n delete this._authorizationResult;\n delete this._publicKey;\n delete this._selectedAddress;\n this.emit('disconnect');\n });\n }\n transact(callback) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const walletUriBase = (_a = this._authorizationResult) === null || _a === void 0 ? void 0 : _a.wallet_uri_base;\n const config = walletUriBase ? { baseUri: walletUriBase } : undefined;\n const remoteConfig = this._hostAuthority ? { remoteHostAuthority: this._hostAuthority } : undefined;\n const currentConnectionGeneration = this._connectionGeneration;\n try {\n return yield transact(callback, Object.assign(Object.assign({}, config), remoteConfig));\n }\n catch (e) {\n if (this._connectionGeneration !== currentConnectionGeneration) {\n yield new Promise(() => { }); // Never resolve.\n }\n if (e instanceof Error &&\n e.name === 'SolanaMobileWalletAdapterError' &&\n e.code === 'ERROR_WALLET_NOT_FOUND') {\n yield this._onWalletNotFound(this);\n }\n throw e;\n }\n });\n }\n assertIsAuthorized() {\n if (!this._authorizationResult || !this._selectedAddress)\n throw new WalletNotConnectedError();\n return {\n authToken: this._authorizationResult.auth_token,\n selectedAddress: this._selectedAddress,\n };\n }\n performSignTransactions(transactions) {\n return __awaiter(this, void 0, void 0, function* () {\n const { authToken } = this.assertIsAuthorized();\n try {\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n yield this.performReauthorization(wallet, authToken);\n const signedTransactions = yield wallet.signTransactions({\n transactions,\n });\n return signedTransactions;\n }));\n }\n catch (error) {\n throw new WalletSignTransactionError(error === null || error === void 0 ? void 0 : error.message, error);\n }\n });\n }\n sendTransaction(transaction, connection, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const { authToken } = this.assertIsAuthorized();\n const minContextSlot = options === null || options === void 0 ? void 0 : options.minContextSlot;\n try {\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n function getTargetCommitment() {\n let targetCommitment;\n switch (connection.commitment) {\n case 'confirmed':\n case 'finalized':\n case 'processed':\n targetCommitment = connection.commitment;\n break;\n default:\n targetCommitment = 'finalized';\n }\n let targetPreflightCommitment;\n switch (options === null || options === void 0 ? void 0 : options.preflightCommitment) {\n case 'confirmed':\n case 'finalized':\n case 'processed':\n targetPreflightCommitment = options.preflightCommitment;\n break;\n case undefined:\n targetPreflightCommitment = targetCommitment;\n break;\n default:\n targetPreflightCommitment = 'finalized';\n }\n const preflightCommitmentScore = targetPreflightCommitment === 'finalized'\n ? 2\n : targetPreflightCommitment === 'confirmed'\n ? 1\n : 0;\n const targetCommitmentScore = targetCommitment === 'finalized' ? 2 : targetCommitment === 'confirmed' ? 1 : 0;\n return preflightCommitmentScore < targetCommitmentScore\n ? targetPreflightCommitment\n : targetCommitment;\n }\n const [capabilities, _1, _2] = yield Promise.all([\n wallet.getCapabilities(),\n this.performReauthorization(wallet, authToken),\n isVersionedTransaction(transaction)\n ? null\n : /**\n * Unlike versioned transactions, legacy `Transaction` objects\n * may not have an associated `feePayer` or `recentBlockhash`.\n * This code exists to patch them up in case they are missing.\n */\n (() => __awaiter(this, void 0, void 0, function* () {\n var _a;\n transaction.feePayer || (transaction.feePayer = (_a = this.publicKey) !== null && _a !== void 0 ? _a : undefined);\n if (transaction.recentBlockhash == null) {\n const { blockhash } = yield connection.getLatestBlockhash({\n commitment: getTargetCommitment(),\n });\n transaction.recentBlockhash = blockhash;\n }\n }))(),\n ]);\n if (capabilities.supports_sign_and_send_transactions) {\n const signatures = yield wallet.signAndSendTransactions({\n minContextSlot,\n transactions: [transaction],\n });\n return signatures[0];\n }\n else {\n const [signedTransaction] = yield wallet.signTransactions({\n transactions: [transaction],\n });\n if (isVersionedTransaction(signedTransaction)) {\n return yield connection.sendTransaction(signedTransaction);\n }\n else {\n const serializedTransaction = signedTransaction.serialize();\n return yield connection.sendRawTransaction(serializedTransaction, Object.assign(Object.assign({}, options), { preflightCommitment: getTargetCommitment() }));\n }\n }\n }));\n }\n catch (error) {\n throw new WalletSendTransactionError(error === null || error === void 0 ? void 0 : error.message, error);\n }\n }));\n });\n }\n signTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const [signedTransaction] = yield this.performSignTransactions([transaction]);\n return signedTransaction;\n }));\n });\n }\n signAllTransactions(transactions) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const signedTransactions = yield this.performSignTransactions(transactions);\n return signedTransactions;\n }));\n });\n }\n signMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const { authToken, selectedAddress } = this.assertIsAuthorized();\n try {\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n yield this.performReauthorization(wallet, authToken);\n const [signedMessage] = yield wallet.signMessages({\n addresses: [selectedAddress],\n payloads: [message],\n });\n const signature = signedMessage.slice(-SIGNATURE_LENGTH_IN_BYTES$1);\n return signature;\n }));\n }\n catch (error) {\n throw new WalletSignMessageError(error === null || error === void 0 ? void 0 : error.message, error);\n }\n }));\n });\n }\n signIn(input) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n if (this._readyState !== WalletReadyState.Installed && this._readyState !== WalletReadyState.Loadable) {\n throw new WalletNotReadyError();\n }\n this._connecting = true;\n try {\n const authorizationResult = yield this.performAuthorization(Object.assign(Object.assign({}, input), { domain: (_a = input === null || input === void 0 ? void 0 : input.domain) !== null && _a !== void 0 ? _a : window.location.host }));\n if (!authorizationResult.sign_in_result) {\n throw new Error(\"Sign in failed, no sign in result returned by wallet\");\n }\n const signedInAddress = authorizationResult.sign_in_result.address;\n const signedInAccount = Object.assign(Object.assign({}, (_b = authorizationResult.accounts.find(acc => acc.address == signedInAddress)) !== null && _b !== void 0 ? _b : {\n address: signedInAddress\n }), { publicKey: toUint8Array(signedInAddress) });\n return {\n account: signedInAccount,\n signedMessage: toUint8Array(authorizationResult.sign_in_result.signed_message),\n signature: toUint8Array(authorizationResult.sign_in_result.signature)\n };\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n finally {\n this._connecting = false;\n }\n }));\n });\n }\n}\n\nconst BluetoothHtml = `\r\n
    \r\n \r\n

    Jupiter wants to connect

    \r\n

    Connect to your mobile wallet app through Bluetooth.

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n

    Not connected

    \r\n
    \r\n
    \r\n
    \r\n

    Connecting...

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n

    Connected

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n`;\n\nconst QRCodeHtml = `\r\n
    \r\n \r\n

    Scan to connect

    \r\n

    Use your wallet app to scan the QR Code and connect.

    \r\n
    \r\n
    \r\n`;\n\nconst css = `\r\n.mobile-wallet-adapter-embedded-modal {\r\n display: flex; /* Use flexbox to center content */\r\n flex-direction: column;\r\n justify-content: center; /* Center horizontally */\r\n align-items: center; /* Center vertically */\r\n position: fixed; /* Stay in place */\r\n z-index: 1; /* Sit on top */\r\n left: 0;\r\n top: 0;\r\n width: 100%; /* Full width */\r\n height: 100%; /* Full height */\r\n background-color: rgba(0,0,0,0.4); /* Black w/ opacity */\r\n}\r\n\r\n.mobile-wallet-adapter-embedded-modal-content {\r\n background: #10141f;\r\n padding: 20px;\r\n border-radius: 10px;\r\n width: 80%;\r\n max-width: 500px;\r\n text-align: center;\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center; /* Center children horizontally */\r\n}\r\n\r\n.mobile-wallet-adapter-embedded-modal-subtitle {\r\n color: #D8D8D8;\r\n}\r\n\r\n.mobile-wallet-adapter-embedded-modal-close {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n position: absolute;\r\n top: 18px;\r\n right: 18px;\r\n padding: 12px;\r\n cursor: pointer;\r\n background: #1a1f2e;\r\n border: none;\r\n border-radius: 50%;\r\n}\r\n\r\n.mobile-wallet-adapter-embedded-modal-close:focus-visible {\r\n outline-color: white;\r\n}\r\n\r\n.mobile-wallet-adapter-embedded-modal-close svg {\r\n fill: #777;\r\n transition: fill 200ms ease 0s;\r\n}\r\n\r\n.mobile-wallet-adapter-embedded-modal-close:hover svg {\r\n fill: #fff;\r\n}\r\n\r\n.icon-container {\r\n display: flex;\r\n justify-content: center;\r\n margin-bottom: 20px;\r\n}\r\n\r\n.icon {\r\n width: 80px;\r\n height: 80px;\r\n border-radius: 50%;\r\n background-color: #ddd; /* Placeholder for icon background */\r\n}\r\n\r\n/* Modal Title */\r\n.mobile-wallet-adapter-embedded-modal-content h1 {\r\n color: white;\r\n font-size: 24px; \r\n}\r\n\r\n.button-group {\r\n display: flex;\r\n width: 100%;\r\n gap: 10px;\r\n}\r\n\r\n.connect-btn, .cancel-btn {\r\n flex: 1;\r\n padding: 12px 20px;\r\n font-size: 16px;\r\n cursor: pointer;\r\n border-radius: 10px;\r\n transition: all 0.3s ease;\r\n}\r\n\r\n.connect-btn {\r\n background-color: #007bff;\r\n color: white;\r\n border: none;\r\n}\r\n\r\n.connect-btn:hover {\r\n background-color: #0056b3;\r\n}\r\n\r\n.cancel-btn {\r\n background-color: transparent;\r\n color: #a0a0a0;\r\n border: 1px solid #a0a0a0;\r\n}\r\n\r\n.cancel-btn:hover {\r\n background-color: rgba(160, 160, 160, 0.1);\r\n}\r\n\r\n/* BT Connection Status */\r\n\r\n.mobile-wallet-adapter-embedded-modal-connection-status-container {\r\n margin: 20px 0px 20px 0px;\r\n}\r\n\r\n.connection-status {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n margin: 20px 0;\r\n}\r\n \r\n.connection-status p {\r\n margin-top: 10px;\r\n color: #a0a0a0;\r\n}\r\n \r\n.bluetooth-icon, .checkmark-icon {\r\n width: 48px;\r\n height: 48px;\r\n}\r\n \r\n.spinner {\r\n border: 4px solid #f3f3f3;\r\n border-top: 4px solid #3498db;\r\n border-radius: 50%;\r\n width: 40px;\r\n height: 40px;\r\n animation: spin 1s linear infinite;\r\n}\r\n \r\n@keyframes spin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n}\r\n\r\n/* QR Code */\r\n\r\n#mobile-wallet-adapter-embedded-modal-qr-code-container {\r\n width: 500px;\r\n height: 500px;\r\n align-content: center;\r\n}\r\n`;\n\nclass EmbeddedModal {\n constructor(title) {\n this._root = null;\n this._title = title;\n // Bind methods to ensure `this` context is correct\n this.init = this.init.bind(this);\n this.injectQRCodeHTML = this.injectQRCodeHTML.bind(this);\n this.injectBluetoothHTML = this.injectBluetoothHTML.bind(this);\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n this.connect = this.connect.bind(this);\n this._root = document.getElementById('mobile-wallet-adapter-embedded-root-ui');\n }\n init(qrCode) {\n return __awaiter(this, void 0, void 0, function* () {\n console.log('Injecting modal');\n this.injectStyles();\n this.injectQRCodeHTML(qrCode);\n });\n }\n setConnectionStatus(status) {\n if (!this._root)\n return;\n const statuses = ['not-connected', 'connecting', 'connected'];\n statuses.forEach((s) => {\n const el = this._root.querySelector(`#status-${s}`);\n if (el instanceof HTMLElement) {\n el.style.display = s === status ? 'flex' : 'none';\n }\n });\n }\n injectStyles() {\n // Check if the styles have already been injected\n if (document.getElementById('mobile-wallet-adapter-styles')) {\n return;\n }\n const styleElement = document.createElement('style');\n styleElement.id = 'mobile-wallet-adapter-styles';\n styleElement.textContent = css;\n document.head.appendChild(styleElement);\n }\n populateQRCode(qrUrl) {\n return __awaiter(this, void 0, void 0, function* () {\n const qrcodeContainer = document.getElementById('mobile-wallet-adapter-embedded-modal-qr-code-container');\n if (qrcodeContainer) {\n const qrCodeElement = yield QRCode.toCanvas(qrUrl, { width: 400 });\n if (qrcodeContainer.firstElementChild !== null) {\n qrcodeContainer.replaceChild(qrCodeElement, qrcodeContainer.firstElementChild);\n }\n else\n qrcodeContainer.appendChild(qrCodeElement);\n }\n else {\n console.error('QRCode Container not found');\n }\n });\n }\n injectQRCodeHTML(qrCode) {\n // Check if the HTML has already been injected\n if (document.getElementById('mobile-wallet-adapter-embedded-root-ui')) {\n if (!this._root)\n this._root = document.getElementById('mobile-wallet-adapter-embedded-root-ui');\n this.populateQRCode(qrCode);\n return;\n }\n // Create a container for the modal\n this._root = document.createElement('div');\n this._root.id = 'mobile-wallet-adapter-embedded-root-ui';\n this._root.className = 'mobile-wallet-adapter-embedded-modal';\n this._root.innerHTML = QRCodeHtml;\n this._root.style.display = 'none';\n // Append the modal to the body\n document.body.appendChild(this._root);\n // Render the QRCode\n this.populateQRCode(qrCode);\n this.attachEventListeners();\n }\n injectBluetoothHTML() {\n // Check if the HTML has already been injected\n if (document.getElementById('mobile-wallet-adapter-embedded-root-ui')) {\n return;\n }\n this._root = document.createElement('div');\n this._root.id = 'mobile-wallet-adapter-embedded-root-ui';\n this._root.className = 'mobile-wallet-adapter-embedded-modal';\n this._root.innerHTML = BluetoothHtml;\n document.body.appendChild(this._root);\n this.attachEventListeners();\n }\n attachEventListeners() {\n if (!this._root)\n return;\n const closeBtn = this._root.querySelector('#mobile-wallet-adapter-embedded-modal-close');\n const cancelBtn = this._root.querySelector('#cancel-btn');\n const connectBtn = this._root.querySelector('#connect-btn');\n closeBtn === null || closeBtn === void 0 ? void 0 : closeBtn.addEventListener('click', () => this.close());\n cancelBtn === null || cancelBtn === void 0 ? void 0 : cancelBtn.addEventListener('click', () => this.close());\n connectBtn === null || connectBtn === void 0 ? void 0 : connectBtn.addEventListener('click', () => this.connect());\n }\n open() {\n console.debug('Modal open');\n if (this._root) {\n this._root.style.display = 'flex';\n this.setConnectionStatus('not-connected'); // Reset status when opening\n }\n }\n close() {\n console.debug('Modal close');\n if (this._root) {\n this._root.style.display = 'none';\n this.setConnectionStatus('not-connected'); // Reset status when closing\n }\n }\n connect() {\n console.log('Connecting...');\n // Mock connection\n this.setConnectionStatus('connecting');\n // Simulate connection process\n setTimeout(() => {\n this.setConnectionStatus('connected');\n console.log('Connected!');\n }, 5000); // 5 seconds delay\n }\n}\n\nconst SolanaMobileWalletAdapterRemoteWalletName = 'MWA (Remote)';\nconst SIGNATURE_LENGTH_IN_BYTES = 64;\nfunction getPublicKeyFromAddress(address) {\n const publicKeyByteArray = toUint8Array$1(address);\n return new PublicKey(publicKeyByteArray);\n}\n/**\n * Determine the mobile operating system.\n * Returns true if running on a mobile operating system, or false otherwise.\n *\n * @returns {boolean}\n */\nfunction isMobileOperatingSystem() {\n var userAgent = navigator.userAgent;\n // Windows Phone must come first because its UA also contains \"Android\"\n if (/windows phone/i.test(userAgent)) {\n return true;\n }\n if (/android/i.test(userAgent)) {\n return true;\n }\n // iOS detection from: http://stackoverflow.com/a/9039885/177710\n if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\n return true;\n }\n return false;\n}\nfunction getIsSupported() {\n return (typeof window !== 'undefined' &&\n window.isSecureContext &&\n typeof document !== 'undefined' &&\n !isMobileOperatingSystem());\n}\n/**\n * This burner wallet adapter is unsafe to use and is only included to provide an easy way for applications to test\n * Wallet Adapter without using a third-party wallet.\n */\nclass SolanaMobileWalletAdapterRemote extends BaseSignInMessageSignerWalletAdapter {\n constructor(config) {\n super();\n this.supportedTransactionVersions = new Set(\n // FIXME(#244): We can't actually know what versions are supported until we know which wallet we're talking to.\n ['legacy', 0]);\n this.name = SolanaMobileWalletAdapterRemoteWalletName;\n this.url = 'https://solanamobile.com/wallets';\n this.icon = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI4IiB3aWR0aD0iMjgiIHZpZXdCb3g9Ii0zIDAgMjggMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0RDQjhGRiI+PHBhdGggZD0iTTE3LjQgMTcuNEgxNXYyLjRoMi40di0yLjRabTEuMi05LjZoLTIuNHYyLjRoMi40VjcuOFoiLz48cGF0aCBkPSJNMjEuNiAzVjBoLTIuNHYzaC0zLjZWMGgtMi40djNoLTIuNHY2LjZINC41YTIuMSAyLjEgMCAxIDEgMC00LjJoMi43VjNINC41QTQuNSA0LjUgMCAwIDAgMCA3LjVWMjRoMjEuNnYtNi42aC0yLjR2NC4ySDIuNFYxMS41Yy41LjMgMS4yLjQgMS44LjVoNy41QTYuNiA2LjYgMCAwIDAgMjQgOVYzaC0yLjRabTAgNS43YTQuMiA0LjIgMCAxIDEtOC40IDBWNS40aDguNHYzLjNaIi8+PC9nPjwvc3ZnPg==';\n this._connecting = false;\n /**\n * Every time the connection is recycled in some way (eg. `disconnect()` is called)\n * increment this and use it to make sure that `transact` calls from the previous\n * 'generation' don't continue to do work and throw exceptions.\n */\n this._connectionGeneration = 0;\n this._readyState = getIsSupported() ? WalletReadyState.Loadable : WalletReadyState.Unsupported;\n this._authorizationResultCache = config.authorizationResultCache;\n this._addressSelector = config.addressSelector;\n this._appIdentity = config.appIdentity;\n this._chain = config.chain;\n this._hostAuthority = config.remoteHostAuthority;\n this._onWalletNotFound = config.onWalletNotFound;\n if (this._readyState !== WalletReadyState.Unsupported) {\n this._authorizationResultCache.get().then((authorizationResult) => {\n if (authorizationResult) {\n // Having a prior authorization result is, right now, the best\n // indication that a mobile wallet is installed. There is no API\n // we can use to test for whether the association URI is supported.\n this.declareWalletAsInstalled();\n }\n });\n }\n }\n get publicKey() {\n if (this._publicKey == null && this._selectedAddress != null) {\n try {\n this._publicKey = getPublicKeyFromAddress(this._selectedAddress);\n }\n catch (e) {\n throw new WalletPublicKeyError((e instanceof Error && (e === null || e === void 0 ? void 0 : e.message)) || 'Unknown error', e);\n }\n }\n return this._publicKey ? this._publicKey : null;\n }\n get connected() {\n return !!this._authorizationResult;\n }\n get connecting() {\n return this._connecting;\n }\n get readyState() {\n return this._readyState;\n }\n declareWalletAsInstalled() {\n if (this._readyState !== WalletReadyState.Installed) {\n this.emit('readyStateChange', (this._readyState = WalletReadyState.Installed));\n }\n }\n runWithGuard(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n return yield callback();\n }\n catch (e) {\n this.emit('error', e);\n throw e;\n }\n });\n }\n autoConnect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.connecting || this.connected) {\n return;\n }\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n if (this._readyState !== WalletReadyState.Installed && this._readyState !== WalletReadyState.Loadable) {\n throw new WalletNotReadyError();\n }\n this._connecting = true;\n try {\n const cachedAuthorizationResult = yield this._authorizationResultCache.get();\n if (cachedAuthorizationResult) {\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n this.handleAuthorizationResult(cachedAuthorizationResult);\n }\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n finally {\n this._connecting = false;\n }\n }));\n });\n }\n connect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.connecting || this.connected) {\n return;\n }\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n if (this._readyState !== WalletReadyState.Installed && this._readyState !== WalletReadyState.Loadable) {\n throw new WalletNotReadyError();\n }\n this._connecting = true;\n try {\n yield this.performAuthorization();\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n finally {\n this._connecting = false;\n }\n }));\n });\n }\n performAuthorization(signInPayload) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const cachedAuthorizationResult = yield this._authorizationResultCache.get();\n if (cachedAuthorizationResult) {\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n this.handleAuthorizationResult(cachedAuthorizationResult);\n return cachedAuthorizationResult;\n }\n if (this._wallet)\n delete this._wallet;\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n this._wallet = wallet;\n const authorizationResult = yield wallet.authorize({\n chain: this._chain,\n identity: this._appIdentity,\n sign_in_payload: signInPayload,\n });\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n Promise.all([\n this._authorizationResultCache.set(authorizationResult),\n this.handleAuthorizationResult(authorizationResult),\n ]);\n return authorizationResult;\n }));\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n });\n }\n handleAuthorizationResult(authorizationResult) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const didPublicKeysChange = \n // Case 1: We started from having no authorization.\n this._authorizationResult == null ||\n // Case 2: The number of authorized accounts changed.\n ((_a = this._authorizationResult) === null || _a === void 0 ? void 0 : _a.accounts.length) !== authorizationResult.accounts.length ||\n // Case 3: The new list of addresses isn't exactly the same as the old list, in the same order.\n this._authorizationResult.accounts.some((account, ii) => account.address !== authorizationResult.accounts[ii].address);\n this._authorizationResult = authorizationResult;\n this.declareWalletAsInstalled();\n if (didPublicKeysChange) {\n const nextSelectedAddress = yield this._addressSelector.select(authorizationResult.accounts.map(({ address }) => address));\n if (nextSelectedAddress !== this._selectedAddress) {\n this._selectedAddress = nextSelectedAddress;\n delete this._publicKey;\n this.emit('connect', \n // Having just set `this._selectedAddress`, `this.publicKey` is definitely non-null\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.publicKey);\n }\n }\n });\n }\n performReauthorization(wallet, authToken) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const authorizationResult = yield wallet.authorize({\n auth_token: authToken,\n identity: this._appIdentity,\n });\n // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n Promise.all([\n this._authorizationResultCache.set(authorizationResult),\n this.handleAuthorizationResult(authorizationResult),\n ]);\n }\n catch (e) {\n this.disconnect();\n throw new WalletDisconnectedError((e instanceof Error && (e === null || e === void 0 ? void 0 : e.message)) || 'Unknown error', e);\n }\n });\n }\n disconnect() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: figure out why this call throws \"TypeError: _a.terminateSession is not a function\"\n // even though the session termination is actually executed (websocket closes). \n try {\n (_a = this._wallet) === null || _a === void 0 ? void 0 : _a.terminateSession();\n }\n catch (e) { }\n this._authorizationResultCache.clear(); // TODO: Evaluate whether there's any threat to not `awaiting` this expression\n this._connecting = false;\n this._connectionGeneration++;\n delete this._authorizationResult;\n delete this._publicKey;\n delete this._selectedAddress;\n delete this._wallet;\n this.emit('disconnect');\n });\n }\n transact(callback) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const walletUriBase = (_a = this._authorizationResult) === null || _a === void 0 ? void 0 : _a.wallet_uri_base;\n const baseConfig = walletUriBase ? { baseUri: walletUriBase } : undefined;\n const remoteConfig = Object.assign(Object.assign({}, baseConfig), { remoteHostAuthority: this._hostAuthority });\n const currentConnectionGeneration = this._connectionGeneration;\n const modal = new EmbeddedModal('MWA QR');\n if (this._wallet) {\n return callback(this._wallet);\n }\n try {\n const { associationUrl, result: promise } = yield transactRemote((wallet) => __awaiter(this, void 0, void 0, function* () {\n const result = yield callback(wallet);\n modal.close();\n return result;\n }), remoteConfig);\n modal.init(associationUrl.toString());\n modal.open();\n return yield promise;\n }\n catch (e) {\n modal.close();\n if (this._connectionGeneration !== currentConnectionGeneration) {\n yield new Promise(() => { }); // Never resolve.\n }\n if (e instanceof Error &&\n e.name === 'SolanaMobileWalletAdapterError' &&\n e.code === 'ERROR_WALLET_NOT_FOUND') {\n yield this._onWalletNotFound(this);\n }\n throw e;\n }\n });\n }\n assertIsAuthorized() {\n if (!this._authorizationResult || !this._selectedAddress)\n throw new WalletNotConnectedError();\n return {\n authToken: this._authorizationResult.auth_token,\n selectedAddress: this._selectedAddress,\n };\n }\n performSignTransactions(transactions) {\n return __awaiter(this, void 0, void 0, function* () {\n const { authToken } = this.assertIsAuthorized();\n try {\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n yield this.performReauthorization(wallet, authToken);\n const signedTransactions = yield wallet.signTransactions({\n transactions,\n });\n return signedTransactions;\n }));\n }\n catch (error) {\n throw new WalletSignTransactionError(error === null || error === void 0 ? void 0 : error.message, error);\n }\n });\n }\n sendTransaction(transaction, connection, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const { authToken } = this.assertIsAuthorized();\n const minContextSlot = options === null || options === void 0 ? void 0 : options.minContextSlot;\n try {\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n function getTargetCommitment() {\n let targetCommitment;\n switch (connection.commitment) {\n case 'confirmed':\n case 'finalized':\n case 'processed':\n targetCommitment = connection.commitment;\n break;\n default:\n targetCommitment = 'finalized';\n }\n let targetPreflightCommitment;\n switch (options === null || options === void 0 ? void 0 : options.preflightCommitment) {\n case 'confirmed':\n case 'finalized':\n case 'processed':\n targetPreflightCommitment = options.preflightCommitment;\n break;\n case undefined:\n targetPreflightCommitment = targetCommitment;\n break;\n default:\n targetPreflightCommitment = 'finalized';\n }\n const preflightCommitmentScore = targetPreflightCommitment === 'finalized'\n ? 2\n : targetPreflightCommitment === 'confirmed'\n ? 1\n : 0;\n const targetCommitmentScore = targetCommitment === 'finalized' ? 2 : targetCommitment === 'confirmed' ? 1 : 0;\n return preflightCommitmentScore < targetCommitmentScore\n ? targetPreflightCommitment\n : targetCommitment;\n }\n const [capabilities, _1, _2] = yield Promise.all([\n wallet.getCapabilities(),\n this.performReauthorization(wallet, authToken),\n isVersionedTransaction$1(transaction)\n ? null\n : /**\n * Unlike versioned transactions, legacy `Transaction` objects\n * may not have an associated `feePayer` or `recentBlockhash`.\n * This code exists to patch them up in case they are missing.\n */\n (() => __awaiter(this, void 0, void 0, function* () {\n var _a;\n transaction.feePayer || (transaction.feePayer = (_a = this.publicKey) !== null && _a !== void 0 ? _a : undefined);\n if (transaction.recentBlockhash == null) {\n const { blockhash } = yield connection.getLatestBlockhash({\n commitment: getTargetCommitment(),\n });\n transaction.recentBlockhash = blockhash;\n }\n }))(),\n ]);\n if (capabilities.supports_sign_and_send_transactions) {\n const signatures = yield wallet.signAndSendTransactions({\n minContextSlot,\n transactions: [transaction],\n });\n return signatures[0];\n }\n else {\n const [signedTransaction] = yield wallet.signTransactions({\n transactions: [transaction],\n });\n if (isVersionedTransaction$1(signedTransaction)) {\n return yield connection.sendTransaction(signedTransaction);\n }\n else {\n const serializedTransaction = signedTransaction.serialize();\n return yield connection.sendRawTransaction(serializedTransaction, Object.assign(Object.assign({}, options), { preflightCommitment: getTargetCommitment() }));\n }\n }\n }));\n }\n catch (error) {\n throw new WalletSendTransactionError(error === null || error === void 0 ? void 0 : error.message, error);\n }\n }));\n });\n }\n signTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const [signedTransaction] = yield this.performSignTransactions([transaction]);\n return signedTransaction;\n }));\n });\n }\n signAllTransactions(transactions) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const signedTransactions = yield this.performSignTransactions(transactions);\n return signedTransactions;\n }));\n });\n }\n signMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n const { authToken, selectedAddress } = this.assertIsAuthorized();\n try {\n return yield this.transact((wallet) => __awaiter(this, void 0, void 0, function* () {\n yield this.performReauthorization(wallet, authToken);\n const [signedMessage] = yield wallet.signMessages({\n addresses: [selectedAddress],\n payloads: [message],\n });\n const signature = signedMessage.slice(-SIGNATURE_LENGTH_IN_BYTES);\n return signature;\n }));\n }\n catch (error) {\n throw new WalletSignMessageError(error === null || error === void 0 ? void 0 : error.message, error);\n }\n }));\n });\n }\n signIn(input) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.runWithGuard(() => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n if (this._readyState !== WalletReadyState.Installed && this._readyState !== WalletReadyState.Loadable) {\n throw new WalletNotReadyError();\n }\n this._connecting = true;\n try {\n const authorizationResult = yield this.performAuthorization(Object.assign(Object.assign({}, input), { domain: (_a = input === null || input === void 0 ? void 0 : input.domain) !== null && _a !== void 0 ? _a : window.location.host }));\n if (!authorizationResult.sign_in_result) {\n throw new Error(\"Sign in failed, no sign in result returned by wallet\");\n }\n const signedInAddress = authorizationResult.sign_in_result.address;\n const signedInAccount = Object.assign(Object.assign({}, (_b = authorizationResult.accounts.find(acc => acc.address == signedInAddress)) !== null && _b !== void 0 ? _b : {\n address: signedInAddress\n }), { publicKey: toUint8Array$1(signedInAddress) });\n return {\n account: signedInAccount,\n signedMessage: toUint8Array$1(authorizationResult.sign_in_result.signed_message),\n signature: toUint8Array$1(authorizationResult.sign_in_result.signature)\n };\n }\n catch (e) {\n throw new WalletConnectionError((e instanceof Error && e.message) || 'Unknown error', e);\n }\n finally {\n this._connecting = false;\n }\n }));\n });\n }\n}\n\nfunction createDefaultAddressSelector() {\n return {\n select(addresses) {\n return __awaiter(this, void 0, void 0, function* () {\n return addresses[0];\n });\n },\n };\n}\n\nconst CACHE_KEY = 'SolanaMobileWalletAdapterDefaultAuthorizationCache';\nfunction createDefaultAuthorizationResultCache() {\n let storage;\n try {\n storage = window.localStorage;\n // eslint-disable-next-line no-empty\n }\n catch (_a) { }\n return {\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!storage) {\n return;\n }\n try {\n storage.removeItem(CACHE_KEY);\n // eslint-disable-next-line no-empty\n }\n catch (_a) { }\n });\n },\n get() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!storage) {\n return;\n }\n try {\n return JSON.parse(storage.getItem(CACHE_KEY)) || undefined;\n // eslint-disable-next-line no-empty\n }\n catch (_a) { }\n });\n },\n set(authorizationResult) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!storage) {\n return;\n }\n try {\n storage.setItem(CACHE_KEY, JSON.stringify(authorizationResult));\n // eslint-disable-next-line no-empty\n }\n catch (_a) { }\n });\n },\n };\n}\n\nfunction defaultWalletNotFoundHandler(mobileWalletAdapter) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof window !== 'undefined') {\n window.location.assign(mobileWalletAdapter.url);\n }\n });\n}\nfunction createDefaultWalletNotFoundHandler() {\n return defaultWalletNotFoundHandler;\n}\n\nexport { SolanaMobileWalletAdapter, SolanaMobileWalletAdapterRemote, SolanaMobileWalletAdapterRemoteWalletName, SolanaMobileWalletAdapterWalletName, createDefaultAddressSelector, createDefaultAuthorizationResultCache, createDefaultWalletNotFoundHandler };\n","import type { WalletAccount } from '@wallet-standard/base';\n\n/** Name of the feature. */\nexport const StandardConnect = 'standard:connect';\n/**\n * @deprecated Use {@link StandardConnect} instead.\n *\n * @group Deprecated\n */\nexport const Connect = StandardConnect;\n\n/**\n * `standard:connect` is a {@link \"@wallet-standard/base\".Wallet.features | feature} that may be implemented by a\n * {@link \"@wallet-standard/base\".Wallet} to allow the app to obtain authorization to use\n * {@link \"@wallet-standard/base\".Wallet.accounts}.\n *\n * @group Connect\n */\nexport type StandardConnectFeature = {\n /** Name of the feature. */\n readonly [StandardConnect]: {\n /** Version of the feature implemented by the Wallet. */\n readonly version: StandardConnectVersion;\n /** Method to call to use the feature. */\n readonly connect: StandardConnectMethod;\n };\n};\n/**\n * @deprecated Use {@link StandardConnectFeature} instead.\n *\n * @group Deprecated\n */\nexport type ConnectFeature = StandardConnectFeature;\n\n/**\n * Version of the {@link StandardConnectFeature} implemented by a {@link \"@wallet-standard/base\".Wallet}.\n *\n * @group Connect\n */\nexport type StandardConnectVersion = '1.0.0';\n/**\n * @deprecated Use {@link StandardConnectVersion} instead.\n *\n * @group Deprecated\n */\nexport type ConnectVersion = StandardConnectVersion;\n\n/**\n * Method to call to use the {@link StandardConnectFeature}.\n *\n * @group Connect\n */\nexport type StandardConnectMethod = (input?: StandardConnectInput) => Promise;\n/**\n * @deprecated Use {@link StandardConnectMethod} instead.\n *\n * @group Deprecated\n */\nexport type ConnectMethod = StandardConnectMethod;\n\n/**\n * Input for the {@link StandardConnectMethod}.\n *\n * @group Connect\n */\nexport interface StandardConnectInput {\n /**\n * By default, using the {@link StandardConnectFeature} should prompt the user to request authorization to accounts.\n * Set the `silent` flag to `true` to request accounts that have already been authorized without prompting.\n *\n * This flag may or may not be used by the Wallet and the app should not depend on it being used.\n * If this flag is used by the Wallet, the Wallet should not prompt the user, and should return only the accounts\n * that the app is authorized to use.\n */\n readonly silent?: boolean;\n}\n/**\n * @deprecated Use {@link StandardConnectInput} instead.\n *\n * @group Deprecated\n */\nexport type ConnectInput = StandardConnectInput;\n\n/**\n * Output of the {@link StandardConnectMethod}.\n *\n * @group Connect\n */\nexport interface StandardConnectOutput {\n /** List of accounts in the {@link \"@wallet-standard/base\".Wallet} that the app has been authorized to use. */\n readonly accounts: readonly WalletAccount[];\n}\n/**\n * @deprecated Use {@link StandardConnectOutput} instead.\n *\n * @group Deprecated\n */\nexport type ConnectOutput = StandardConnectOutput;\n","import type { Wallet } from '@wallet-standard/base';\n\n/** Name of the feature. */\nexport const StandardEvents = 'standard:events';\n/**\n * @deprecated Use {@link StandardEvents} instead.\n *\n * @group Deprecated\n */\nexport const Events = StandardEvents;\n\n/**\n * `standard:events` is a {@link \"@wallet-standard/base\".Wallet.features | feature} that may be implemented by a\n * {@link \"@wallet-standard/base\".Wallet} to allow the app to add an event listener and subscribe to events emitted by\n * the Wallet when properties of the Wallet {@link StandardEventsListeners.change}.\n *\n * @group Events\n */\nexport type StandardEventsFeature = {\n /** Name of the feature. */\n readonly [StandardEvents]: {\n /** Version of the feature implemented by the {@link \"@wallet-standard/base\".Wallet}. */\n readonly version: StandardEventsVersion;\n /** Method to call to use the feature. */\n readonly on: StandardEventsOnMethod;\n };\n};\n/**\n * @deprecated Use {@link StandardEventsFeature} instead.\n *\n * @group Deprecated\n */\nexport type EventsFeature = StandardEventsFeature;\n\n/**\n * Version of the {@link StandardEventsFeature} implemented by a {@link \"@wallet-standard/base\".Wallet}.\n *\n * @group Events\n */\nexport type StandardEventsVersion = '1.0.0';\n/**\n * @deprecated Use {@link StandardEventsVersion} instead.\n *\n * @group Deprecated\n */\nexport type EventsVersion = StandardEventsVersion;\n\n/**\n * Method to call to use the {@link StandardEventsFeature}.\n *\n * @param event Event type to listen for. {@link StandardEventsListeners.change | `change`} is the only event type.\n * @param listener Function that will be called when an event of the type is emitted.\n *\n * @return\n * `off` function which may be called to remove the event listener and unsubscribe from events.\n *\n * As with all event listeners, be careful to avoid memory leaks.\n *\n * @group Events\n */\nexport type StandardEventsOnMethod = (\n event: E,\n listener: StandardEventsListeners[E]\n) => () => void;\n/**\n * @deprecated Use {@link StandardEventsOnMethod} instead.\n *\n * @group Deprecated\n */\nexport type EventsOnMethod = StandardEventsOnMethod;\n\n/**\n * Types of event listeners of the {@link StandardEventsFeature}.\n *\n * @group Events\n */\nexport interface StandardEventsListeners {\n /**\n * Listener that will be called when {@link StandardEventsChangeProperties | properties} of the\n * {@link \"@wallet-standard/base\".Wallet} have changed.\n *\n * @param properties Properties that changed with their **new** values.\n */\n change(properties: StandardEventsChangeProperties): void;\n}\n/**\n * @deprecated Use {@link StandardEventsListeners} instead.\n *\n * @group Deprecated\n */\nexport type EventsListeners = StandardEventsListeners;\n\n/**\n * Names of {@link StandardEventsListeners} that can be listened for.\n *\n * @group Events\n */\nexport type StandardEventsNames = keyof StandardEventsListeners;\n/**\n * @deprecated Use {@link StandardEventsNames} instead.\n *\n * @group Deprecated\n */\nexport type EventsNames = StandardEventsNames;\n\n/**\n * Properties of a {@link \"@wallet-standard/base\".Wallet} that {@link StandardEventsListeners.change | changed} with their\n * **new** values.\n *\n * @group Events\n */\nexport interface StandardEventsChangeProperties {\n /**\n * {@link \"@wallet-standard/base\".Wallet.chains | Chains} supported by the Wallet.\n *\n * The Wallet should only define this field if the value of the property has changed.\n *\n * The value must be the **new** value of the property.\n */\n readonly chains?: Wallet['chains'];\n /**\n * {@link \"@wallet-standard/base\".Wallet.features | Features} supported by the Wallet.\n *\n * The Wallet should only define this field if the value of the property has changed.\n *\n * The value must be the **new** value of the property.\n */\n readonly features?: Wallet['features'];\n /**\n * {@link \"@wallet-standard/base\".Wallet.accounts | Accounts} that the app is authorized to use.\n *\n * The Wallet should only define this field if the value of the property has changed.\n *\n * The value must be the **new** value of the property.\n */\n readonly accounts?: Wallet['accounts'];\n}\n/**\n * @deprecated Use {@link StandardEventsChangeProperties} instead.\n *\n * @group Deprecated\n */\nexport type EventsChangeProperties = StandardEventsChangeProperties;\n","import {\n isWalletAdapterCompatibleStandardWallet,\n type StandardWalletAdapter,\n type WalletAdapterCompatibleStandardWallet,\n} from '@solana/wallet-adapter-base';\n\n/**\n * @deprecated Use `StandardWalletAdapter` from `@solana/wallet-adapter-base` instead.\n *\n * @group Deprecated\n */\nexport type StandardAdapter = StandardWalletAdapter;\n\n/**\n * @deprecated Use `WalletAdapterCompatibleStandardWallet` from `@solana/wallet-adapter-base` instead.\n *\n * @group Deprecated\n */\nexport type WalletAdapterCompatibleWallet = WalletAdapterCompatibleStandardWallet;\n\n/**\n * @deprecated Use `isWalletAdapterCompatibleStandardWallet` from `@solana/wallet-adapter-base` instead.\n *\n * @group Deprecated\n */\nexport const isWalletAdapterCompatibleWallet = isWalletAdapterCompatibleStandardWallet;\n","import {\n SolanaSignAndSendTransaction,\n type SolanaSignAndSendTransactionFeature,\n type SolanaSignInFeature,\n type SolanaSignMessageFeature,\n SolanaSignTransaction,\n type SolanaSignTransactionFeature,\n} from '@solana/wallet-standard-features';\nimport type { Wallet as StandardWallet, WalletWithFeatures as StandardWalletWithFeatures } from '@wallet-standard/base';\nimport {\n StandardConnect,\n type StandardConnectFeature,\n type StandardDisconnectFeature,\n StandardEvents,\n type StandardEventsFeature,\n} from '@wallet-standard/features';\nimport type { WalletAdapter, WalletAdapterProps } from './adapter.js';\n\nexport type WalletAdapterCompatibleStandardWallet = StandardWalletWithFeatures<\n StandardConnectFeature &\n StandardEventsFeature &\n (SolanaSignAndSendTransactionFeature | SolanaSignTransactionFeature) &\n (StandardDisconnectFeature | SolanaSignMessageFeature | SolanaSignInFeature | object)\n>;\n\nexport interface StandardWalletAdapterProps extends WalletAdapterProps {\n wallet: WalletAdapterCompatibleStandardWallet;\n standard: true;\n}\n\nexport type StandardWalletAdapter = WalletAdapter &\n StandardWalletAdapterProps;\n\nexport function isWalletAdapterCompatibleStandardWallet(\n wallet: StandardWallet\n): wallet is WalletAdapterCompatibleStandardWallet {\n return (\n StandardConnect in wallet.features &&\n StandardEvents in wallet.features &&\n (SolanaSignAndSendTransaction in wallet.features || SolanaSignTransaction in wallet.features)\n );\n}\n","import type { WalletAccount } from '@wallet-standard/base';\n\n/** Name of the feature. */\nexport const SolanaSignIn = 'solana:signIn';\n\n/** TODO: docs */\nexport type SolanaSignInFeature = {\n /** Name of the feature. */\n readonly [SolanaSignIn]: {\n /** Version of the feature API. */\n readonly version: SolanaSignInVersion;\n\n /** Sign In With Solana (based on https://eips.ethereum.org/EIPS/eip-4361 and https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-122.md). */\n readonly signIn: SolanaSignInMethod;\n };\n};\n\n/** Version of the feature. */\nexport type SolanaSignInVersion = '1.0.0';\n\n/** TODO: docs */\nexport type SolanaSignInMethod = (...inputs: readonly SolanaSignInInput[]) => Promise;\n\n/** Input for signing in. */\nexport interface SolanaSignInInput {\n /**\n * Optional EIP-4361 Domain.\n * If not provided, the wallet must determine the Domain to include in the message.\n */\n readonly domain?: string;\n\n /**\n * Optional EIP-4361 Address.\n * If not provided, the wallet must determine the Address to include in the message.\n */\n readonly address?: string;\n\n /**\n * Optional EIP-4361 Statement.\n * If not provided, the wallet must not include Statement in the message.\n */\n readonly statement?: string;\n\n /**\n * Optional EIP-4361 URI.\n * If not provided, the wallet must not include URI in the message.\n */\n readonly uri?: string;\n\n /**\n * Optional EIP-4361 Version.\n * If not provided, the wallet must not include Version in the message.\n */\n readonly version?: string;\n\n /**\n * Optional EIP-4361 Chain ID.\n * If not provided, the wallet must not include Chain ID in the message.\n */\n readonly chainId?: string;\n\n /**\n * Optional EIP-4361 Nonce.\n * If not provided, the wallet must not include Nonce in the message.\n */\n readonly nonce?: string;\n\n /**\n * Optional EIP-4361 Issued At.\n * If not provided, the wallet must not include Issued At in the message.\n */\n readonly issuedAt?: string;\n\n /**\n * Optional EIP-4361 Expiration Time.\n * If not provided, the wallet must not include Expiration Time in the message.\n */\n readonly expirationTime?: string;\n\n /**\n * Optional EIP-4361 Not Before.\n * If not provided, the wallet must not include Not Before in the message.\n */\n readonly notBefore?: string;\n\n /**\n * Optional EIP-4361 Request ID.\n * If not provided, the wallet must not include Request ID in the message.\n */\n readonly requestId?: string;\n\n /**\n * Optional EIP-4361 Resources.\n * If not provided, the wallet must not include Resources in the message.\n */\n readonly resources?: readonly string[];\n}\n\n/** Output of signing in. */\nexport interface SolanaSignInOutput {\n /**\n * Account that was signed in.\n * The address of the account may be different from the provided input Address.\n */\n readonly account: WalletAccount;\n\n /**\n * Message bytes that were signed.\n * The wallet may prefix or otherwise modify the message before signing it.\n */\n readonly signedMessage: Uint8Array;\n\n /**\n * Message signature produced.\n * If the signature type is provided, the signature must be Ed25519.\n */\n readonly signature: Uint8Array;\n\n /**\n * Optional type of the message signature produced.\n * If not provided, the signature must be Ed25519.\n */\n readonly signatureType?: 'ed25519';\n}\n","import type { IdentifierString } from '@wallet-standard/base';\n\n/** Solana Mainnet (beta) cluster, e.g. https://api.mainnet-beta.solana.com */\nexport const SOLANA_MAINNET_CHAIN = 'solana:mainnet';\n\n/** Solana Devnet cluster, e.g. https://api.devnet.solana.com */\nexport const SOLANA_DEVNET_CHAIN = 'solana:devnet';\n\n/** Solana Testnet cluster, e.g. https://api.testnet.solana.com */\nexport const SOLANA_TESTNET_CHAIN = 'solana:testnet';\n\n/** Solana Localnet cluster, e.g. http://localhost:8899 */\nexport const SOLANA_LOCALNET_CHAIN = 'solana:localnet';\n\n/** Array of all Solana clusters */\nexport const SOLANA_CHAINS = [\n SOLANA_MAINNET_CHAIN,\n SOLANA_DEVNET_CHAIN,\n SOLANA_TESTNET_CHAIN,\n SOLANA_LOCALNET_CHAIN,\n] as const;\n\n/** Type of all Solana clusters */\nexport type SolanaChain = (typeof SOLANA_CHAINS)[number];\n\n/**\n * Check if a chain corresponds with one of the Solana clusters.\n */\nexport function isSolanaChain(chain: IdentifierString): chain is SolanaChain {\n return SOLANA_CHAINS.includes(chain as SolanaChain);\n}\n","import type { SolanaChain } from '@solana/wallet-standard-chains';\nimport {\n SOLANA_DEVNET_CHAIN,\n SOLANA_LOCALNET_CHAIN,\n SOLANA_MAINNET_CHAIN,\n SOLANA_TESTNET_CHAIN,\n} from '@solana/wallet-standard-chains';\n\n/** TODO: docs */\nexport const MAINNET_ENDPOINT = 'https://api.mainnet-beta.solana.com';\n/** TODO: docs */\nexport const DEVNET_ENDPOINT = 'https://api.devnet.solana.com';\n/** TODO: docs */\nexport const TESTNET_ENDPOINT = 'https://api.testnet.solana.com';\n/** TODO: docs */\nexport const LOCALNET_ENDPOINT = 'http://localhost:8899';\n\n/**\n * TODO: docs\n */\nexport function getChainForEndpoint(endpoint: string): SolanaChain {\n if (endpoint.includes(MAINNET_ENDPOINT)) return SOLANA_MAINNET_CHAIN;\n if (/\\bdevnet\\b/i.test(endpoint)) return SOLANA_DEVNET_CHAIN;\n if (/\\btestnet\\b/i.test(endpoint)) return SOLANA_TESTNET_CHAIN;\n if (/\\blocalhost\\b/i.test(endpoint) || /\\b127\\.0\\.0\\.1\\b/.test(endpoint)) return SOLANA_LOCALNET_CHAIN;\n return SOLANA_MAINNET_CHAIN;\n}\n\n/**\n * TODO: docs\n */\nexport function getEndpointForChain(chain: SolanaChain, endpoint?: string): string {\n if (endpoint) return endpoint;\n if (chain === SOLANA_MAINNET_CHAIN) return MAINNET_ENDPOINT;\n if (chain === SOLANA_DEVNET_CHAIN) return DEVNET_ENDPOINT;\n if (chain === SOLANA_TESTNET_CHAIN) return TESTNET_ENDPOINT;\n if (chain === SOLANA_LOCALNET_CHAIN) return LOCALNET_ENDPOINT;\n return MAINNET_ENDPOINT;\n}\n","import type { SolanaTransactionCommitment } from '@solana/wallet-standard-features';\n\n// Copied from @solana/web3.js\ntype Commitment = 'processed' | 'confirmed' | 'finalized' | 'recent' | 'single' | 'singleGossip' | 'root' | 'max';\n\n/**\n * TODO: docs\n */\nexport function getCommitment(commitment?: Commitment): SolanaTransactionCommitment | undefined {\n switch (commitment) {\n case 'processed':\n case 'confirmed':\n case 'finalized':\n case undefined:\n return commitment;\n case 'recent':\n return 'processed';\n case 'single':\n case 'singleGossip':\n return 'confirmed';\n case 'max':\n case 'root':\n return 'finalized';\n default:\n return undefined;\n }\n}\n","/** Name of the feature. */\nexport const StandardDisconnect = 'standard:disconnect';\n/**\n * @deprecated Use {@link StandardDisconnect} instead.\n *\n * @group Deprecated\n */\nexport const Disconnect = StandardDisconnect;\n\n/**\n * `standard:disconnect` is a {@link \"@wallet-standard/base\".Wallet.features | feature} that may be implemented by a\n * {@link \"@wallet-standard/base\".Wallet} to allow the app to perform any cleanup work.\n *\n * This feature may or may not be used by the app and the Wallet should not depend on it being used.\n * If this feature is used by the app, the Wallet should perform any cleanup work, but should not revoke authorization\n * to use accounts previously granted through the {@link ConnectFeature}.\n *\n * @group Disconnect\n */\nexport type StandardDisconnectFeature = {\n /** Name of the feature. */\n readonly [StandardDisconnect]: {\n /** Version of the feature implemented by the Wallet. */\n readonly version: StandardDisconnectVersion;\n /** Method to call to use the feature. */\n readonly disconnect: StandardDisconnectMethod;\n };\n};\n/**\n * @deprecated Use {@link StandardDisconnectFeature} instead.\n *\n * @group Deprecated\n */\nexport type DisconnectFeature = StandardDisconnectFeature;\n\n/**\n * Version of the {@link StandardDisconnectFeature} implemented by a Wallet.\n *\n * @group Disconnect\n */\nexport type StandardDisconnectVersion = '1.0.0';\n/**\n * @deprecated Use {@link StandardDisconnectVersion} instead.\n *\n * @group Deprecated\n */\nexport type DisconnectVersion = StandardDisconnectVersion;\n\n/**\n * Method to call to use the {@link StandardDisconnectFeature}.\n *\n * @group Disconnect\n */\nexport type StandardDisconnectMethod = () => Promise;\n/**\n * @deprecated Use {@link StandardDisconnectMethod} instead.\n *\n * @group Deprecated\n */\nexport type DisconnectMethod = StandardDisconnectMethod;\n","import type { ReadonlyUint8Array, WalletAccount } from '@wallet-standard/base';\n\n/**\n * Base implementation of a {@link \"@wallet-standard/base\".WalletAccount} to be used or extended by a\n * {@link \"@wallet-standard/base\".Wallet}.\n *\n * `WalletAccount` properties must be read-only. This class enforces this by making all properties\n * [truly private](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields) and\n * read-only, using getters for access, returning copies instead of references, and calling\n * [Object.freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)\n * on the instance.\n *\n * @group Account\n */\nexport class ReadonlyWalletAccount implements WalletAccount {\n readonly #address: WalletAccount['address'];\n readonly #publicKey: WalletAccount['publicKey'];\n readonly #chains: WalletAccount['chains'];\n readonly #features: WalletAccount['features'];\n readonly #label: WalletAccount['label'];\n readonly #icon: WalletAccount['icon'];\n\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.address | WalletAccount::address} */\n get address() {\n return this.#address;\n }\n\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.publicKey | WalletAccount::publicKey} */\n get publicKey() {\n return this.#publicKey.slice();\n }\n\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.chains | WalletAccount::chains} */\n get chains() {\n return this.#chains.slice();\n }\n\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.features | WalletAccount::features} */\n get features() {\n return this.#features.slice();\n }\n\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.label | WalletAccount::label} */\n get label() {\n return this.#label;\n }\n\n /** Implementation of {@link \"@wallet-standard/base\".WalletAccount.icon | WalletAccount::icon} */\n get icon() {\n return this.#icon;\n }\n\n /**\n * Create and freeze a read-only account.\n *\n * @param account Account to copy properties from.\n */\n constructor(account: WalletAccount) {\n if (new.target === ReadonlyWalletAccount) {\n Object.freeze(this);\n }\n\n this.#address = account.address;\n this.#publicKey = account.publicKey.slice();\n this.#chains = account.chains.slice();\n this.#features = account.features.slice();\n this.#label = account.label;\n this.#icon = account.icon;\n }\n}\n\n/**\n * Efficiently compare {@link Indexed} arrays (e.g. `Array` and `Uint8Array`).\n *\n * @param a An array.\n * @param b Another array.\n *\n * @return `true` if the arrays have the same length and elements, `false` otherwise.\n *\n * @group Util\n */\nexport function arraysEqual(a: Indexed, b: Indexed): boolean {\n if (a === b) return true;\n\n const length = a.length;\n if (length !== b.length) return false;\n\n for (let i = 0; i < length; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n}\n\n/**\n * Efficiently compare byte arrays, using {@link arraysEqual}.\n *\n * @param a A byte array.\n * @param b Another byte array.\n *\n * @return `true` if the byte arrays have the same length and bytes, `false` otherwise.\n *\n * @group Util\n */\nexport function bytesEqual(a: ReadonlyUint8Array, b: ReadonlyUint8Array): boolean {\n return arraysEqual(a, b);\n}\n\n/**\n * Efficiently concatenate byte arrays without modifying them.\n *\n * @param first A byte array.\n * @param others Additional byte arrays.\n *\n * @return New byte array containing the concatenation of all the byte arrays.\n *\n * @group Util\n */\nexport function concatBytes(first: ReadonlyUint8Array, ...others: ReadonlyUint8Array[]): Uint8Array {\n const length = others.reduce((length, bytes) => length + bytes.length, first.length);\n const bytes = new Uint8Array(length);\n\n bytes.set(first, 0);\n for (const other of others) {\n bytes.set(other, bytes.length);\n }\n\n return bytes;\n}\n\n/**\n * Create a new object with a subset of fields from a source object.\n *\n * @param source Object to pick fields from.\n * @param keys Names of fields to pick.\n *\n * @return New object with only the picked fields.\n *\n * @group Util\n */\nexport function pick(source: T, ...keys: K[]): Pick {\n const picked = {} as Pick;\n for (const key of keys) {\n picked[key] = source[key];\n }\n return picked;\n}\n\n/**\n * Call a callback function, catch an error if it throws, and log the error without rethrowing.\n *\n * @param callback Function to call.\n *\n * @group Util\n */\nexport function guard(callback: () => void) {\n try {\n callback();\n } catch (error) {\n console.error(error);\n }\n}\n\n/**\n * @internal\n *\n * Type with a numeric `length` and numerically indexed elements of a generic type `T`.\n *\n * For example, `Array` and `Uint8Array`.\n *\n * @group Internal\n */\nexport interface Indexed {\n length: number;\n [index: number]: T;\n}\n","import basex from 'base-x';\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nexport default basex(ALPHABET);\n","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n const BASE_MAP = new Uint8Array(256)\n for (let j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (let i = 0; i < ALPHABET.length; i++) {\n const x = ALPHABET.charAt(i)\n const xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n const BASE = ALPHABET.length\n const LEADER = ALPHABET.charAt(0)\n const FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n const iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n // eslint-disable-next-line no-empty\n if (source instanceof Uint8Array) { } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n let zeroes = 0\n let length = 0\n let pbegin = 0\n const pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n const size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n const b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n let carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n let i = 0\n for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n let it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n let str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n let psz = 0\n // Skip and count leading '1's.\n let zeroes = 0\n let length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n const size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n const b256 = new Uint8Array(size)\n // Process the characters.\n while (psz < source.length) {\n // Find code of next character\n const charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n let carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n let i = 0\n for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n let it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n const vch = new Uint8Array(zeroes + (size - it4))\n let j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n const buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode,\n decodeUnsafe,\n decode\n }\n}\nexport default base\n","import {\n BaseWalletAdapter,\n isVersionedTransaction,\n type SendTransactionOptions,\n type StandardWalletAdapter as StandardWalletAdapterType,\n type SupportedTransactionVersions,\n WalletAccountError,\n type WalletAdapterCompatibleStandardWallet,\n WalletConfigError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletError,\n type WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSendTransactionError,\n WalletSignInError,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport {\n SolanaSignAndSendTransaction,\n type SolanaSignAndSendTransactionFeature,\n SolanaSignIn,\n type SolanaSignInInput,\n type SolanaSignInOutput,\n SolanaSignMessage,\n SolanaSignTransaction,\n type SolanaSignTransactionFeature,\n} from '@solana/wallet-standard-features';\nimport { getChainForEndpoint, getCommitment } from '@solana/wallet-standard-util';\nimport type { Connection, TransactionSignature } from '@solana/web3.js';\nimport { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { WalletAccount } from '@wallet-standard/base';\nimport {\n StandardConnect,\n type StandardConnectInput,\n StandardDisconnect,\n StandardEvents,\n type StandardEventsListeners,\n} from '@wallet-standard/features';\nimport { arraysEqual } from '@wallet-standard/wallet';\nimport bs58 from 'bs58';\n\n/** TODO: docs */\nexport interface StandardWalletAdapterConfig {\n wallet: WalletAdapterCompatibleStandardWallet;\n}\n\n/** TODO: docs */\nexport class StandardWalletAdapter extends BaseWalletAdapter implements StandardWalletAdapterType {\n #account: WalletAccount | null;\n #publicKey: PublicKey | null;\n #connecting: boolean;\n #disconnecting: boolean;\n #off: (() => void) | null;\n #supportedTransactionVersions: SupportedTransactionVersions;\n readonly #wallet: WalletAdapterCompatibleStandardWallet;\n readonly #readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.Installed;\n\n get name() {\n return this.#wallet.name as WalletName;\n }\n\n get url() {\n return 'https://github.com/solana-labs/wallet-standard';\n }\n\n get icon() {\n return this.#wallet.icon;\n }\n\n get readyState() {\n return this.#readyState;\n }\n\n get publicKey() {\n return this.#publicKey;\n }\n\n get connecting() {\n return this.#connecting;\n }\n\n get supportedTransactionVersions() {\n return this.#supportedTransactionVersions;\n }\n\n get wallet(): WalletAdapterCompatibleStandardWallet {\n return this.#wallet;\n }\n\n get standard() {\n return true as const;\n }\n\n constructor({ wallet }: StandardWalletAdapterConfig) {\n super();\n\n this.#wallet = wallet;\n this.#account = null;\n this.#publicKey = null;\n this.#connecting = false;\n this.#disconnecting = false;\n this.#off = this.#wallet.features[StandardEvents].on('change', this.#changed);\n\n this.#reset();\n }\n\n destroy(): void {\n this.#account = null;\n this.#publicKey = null;\n this.#connecting = false;\n this.#disconnecting = false;\n\n const off = this.#off;\n if (off) {\n this.#off = null;\n off();\n }\n }\n\n async autoConnect(): Promise {\n return this.#connect({ silent: true });\n }\n\n async connect(): Promise {\n return this.#connect();\n }\n\n async #connect(input?: StandardConnectInput): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this.#readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this.#connecting = true;\n\n if (!this.#wallet.accounts.length) {\n try {\n await this.#wallet.features[StandardConnect].connect(input);\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n const account = this.#wallet.accounts[0];\n if (!account) throw new WalletAccountError();\n\n this.#connected(account);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this.#connecting = false;\n }\n }\n\n async disconnect(): Promise {\n if (StandardDisconnect in this.#wallet.features) {\n try {\n this.#disconnecting = true;\n await this.#wallet.features[StandardDisconnect].disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n } finally {\n this.#disconnecting = false;\n }\n }\n\n this.#disconnected();\n }\n\n #connected(account: WalletAccount) {\n let publicKey: PublicKey;\n try {\n // Use account.address instead of account.publicKey since address could be a PDA\n publicKey = new PublicKey(account.address);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this.#account = account;\n this.#publicKey = publicKey;\n this.#reset();\n this.emit('connect', publicKey);\n }\n\n #disconnected(): void {\n this.#account = null;\n this.#publicKey = null;\n this.#reset();\n this.emit('disconnect');\n }\n\n #reset() {\n const supportedTransactionVersions =\n SolanaSignAndSendTransaction in this.#wallet.features\n ? this.#wallet.features[SolanaSignAndSendTransaction].supportedTransactionVersions\n : this.#wallet.features[SolanaSignTransaction].supportedTransactionVersions;\n this.#supportedTransactionVersions = arraysEqual(supportedTransactionVersions, ['legacy'])\n ? null\n : new Set(supportedTransactionVersions);\n\n if (SolanaSignTransaction in this.#wallet.features && this.#account?.features.includes(SolanaSignTransaction)) {\n this.signTransaction = this.#signTransaction;\n this.signAllTransactions = this.#signAllTransactions;\n } else {\n delete this.signTransaction;\n delete this.signAllTransactions;\n }\n\n if (SolanaSignMessage in this.#wallet.features && this.#account?.features.includes(SolanaSignMessage)) {\n this.signMessage = this.#signMessage;\n } else {\n delete this.signMessage;\n }\n\n if (SolanaSignIn in this.#wallet.features) {\n this.signIn = this.#signIn;\n } else {\n delete this.signIn;\n }\n }\n\n #changed: StandardEventsListeners['change'] = (properties) => {\n // If accounts have changed on the wallet, reflect this on the adapter.\n if ('accounts' in properties) {\n const account = this.#wallet.accounts[0];\n // If the adapter isn't connected, or is disconnecting, or the first account hasn't changed, do nothing.\n if (this.#account && !this.#disconnecting && account !== this.#account) {\n // If there's a connected account, connect the adapter. Otherwise, disconnect it.\n if (account) {\n // Connect the adapter.\n this.#connected(account);\n } else {\n // Emit an error because the wallet spontaneously disconnected.\n this.emit('error', new WalletDisconnectedError());\n // Disconnect the adapter.\n this.#disconnected();\n }\n }\n }\n\n // After reflecting account changes, if features have changed on the wallet, reflect this on the adapter.\n if ('features' in properties) {\n this.#reset();\n }\n };\n\n async sendTransaction(\n transaction: T,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n try {\n const account = this.#account;\n if (!account) throw new WalletNotConnectedError();\n\n let feature: typeof SolanaSignAndSendTransaction | typeof SolanaSignTransaction;\n if (SolanaSignAndSendTransaction in this.#wallet.features) {\n if (account.features.includes(SolanaSignAndSendTransaction)) {\n feature = SolanaSignAndSendTransaction;\n } else if (\n SolanaSignTransaction in this.#wallet.features &&\n account.features.includes(SolanaSignTransaction)\n ) {\n feature = SolanaSignTransaction;\n } else {\n throw new WalletAccountError();\n }\n } else if (SolanaSignTransaction in this.#wallet.features) {\n if (!account.features.includes(SolanaSignTransaction)) throw new WalletAccountError();\n feature = SolanaSignTransaction;\n } else {\n throw new WalletConfigError();\n }\n\n const chain = getChainForEndpoint(connection.rpcEndpoint);\n if (!account.chains.includes(chain)) throw new WalletSendTransactionError();\n\n try {\n const { signers, ...sendOptions } = options;\n\n let serializedTransaction: Uint8Array;\n if (isVersionedTransaction(transaction)) {\n signers?.length && transaction.sign(signers);\n serializedTransaction = transaction.serialize();\n } else {\n transaction = (await this.prepareTransaction(transaction, connection, sendOptions)) as T;\n signers?.length && (transaction as Transaction).partialSign(...signers);\n serializedTransaction = new Uint8Array(\n (transaction as Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n );\n }\n\n if (feature === SolanaSignAndSendTransaction) {\n const [output] = await (this.#wallet.features as SolanaSignAndSendTransactionFeature)[\n SolanaSignAndSendTransaction\n ].signAndSendTransaction({\n account,\n chain,\n transaction: serializedTransaction,\n options: {\n preflightCommitment: getCommitment(\n sendOptions.preflightCommitment || connection.commitment\n ),\n skipPreflight: sendOptions.skipPreflight,\n maxRetries: sendOptions.maxRetries,\n minContextSlot: sendOptions.minContextSlot,\n },\n });\n\n return bs58.encode(output!.signature);\n } else {\n const [output] = await (this.#wallet.features as SolanaSignTransactionFeature)[\n SolanaSignTransaction\n ].signTransaction({\n account,\n chain,\n transaction: serializedTransaction,\n options: {\n preflightCommitment: getCommitment(\n sendOptions.preflightCommitment || connection.commitment\n ),\n minContextSlot: sendOptions.minContextSlot,\n },\n });\n\n return await connection.sendRawTransaction(output!.signedTransaction, {\n ...sendOptions,\n preflightCommitment: getCommitment(sendOptions.preflightCommitment || connection.commitment),\n });\n }\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n signTransaction: ((transaction: T) => Promise) | undefined;\n async #signTransaction(transaction: T): Promise {\n try {\n const account = this.#account;\n if (!account) throw new WalletNotConnectedError();\n\n if (!(SolanaSignTransaction in this.#wallet.features)) throw new WalletConfigError();\n if (!account.features.includes(SolanaSignTransaction)) throw new WalletAccountError();\n\n try {\n const signedTransactions = await this.#wallet.features[SolanaSignTransaction].signTransaction({\n account,\n transaction: isVersionedTransaction(transaction)\n ? transaction.serialize()\n : new Uint8Array(\n transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n ),\n });\n\n const serializedTransaction = signedTransactions[0]!.signedTransaction;\n\n return (\n isVersionedTransaction(transaction)\n ? VersionedTransaction.deserialize(serializedTransaction)\n : Transaction.from(serializedTransaction)\n ) as T;\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n signAllTransactions: ((transaction: T[]) => Promise) | undefined;\n async #signAllTransactions(transactions: T[]): Promise {\n try {\n const account = this.#account;\n if (!account) throw new WalletNotConnectedError();\n\n if (!(SolanaSignTransaction in this.#wallet.features)) throw new WalletConfigError();\n if (!account.features.includes(SolanaSignTransaction)) throw new WalletAccountError();\n\n try {\n const signedTransactions = await this.#wallet.features[SolanaSignTransaction].signTransaction(\n ...transactions.map((transaction) => ({\n account,\n transaction: isVersionedTransaction(transaction)\n ? transaction.serialize()\n : new Uint8Array(\n transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n ),\n }))\n );\n\n return transactions.map((transaction, index) => {\n const signedTransaction = signedTransactions[index]!.signedTransaction;\n\n return (\n isVersionedTransaction(transaction)\n ? VersionedTransaction.deserialize(signedTransaction)\n : Transaction.from(signedTransaction)\n ) as T;\n });\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n signMessage: ((message: Uint8Array) => Promise) | undefined;\n async #signMessage(message: Uint8Array): Promise {\n try {\n const account = this.#account;\n if (!account) throw new WalletNotConnectedError();\n\n if (!(SolanaSignMessage in this.#wallet.features)) throw new WalletConfigError();\n if (!account.features.includes(SolanaSignMessage)) throw new WalletAccountError();\n\n try {\n const signedMessages = await this.#wallet.features[SolanaSignMessage].signMessage({\n account,\n message,\n });\n\n return signedMessages[0]!.signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n signIn: ((input?: SolanaSignInInput) => Promise) | undefined;\n async #signIn(input: SolanaSignInInput = {}): Promise {\n try {\n if (!(SolanaSignIn in this.#wallet.features)) throw new WalletConfigError();\n\n let output: SolanaSignInOutput | undefined;\n try {\n [output] = await this.#wallet.features[SolanaSignIn].signIn(input);\n } catch (error: any) {\n throw new WalletSignInError(error?.message, error);\n }\n\n if (!output) throw new WalletSignInError();\n this.#connected(output.account);\n return output;\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import type {\n DEPRECATED_WalletsCallback,\n DEPRECATED_WalletsWindow,\n Wallet,\n WalletEventsWindow,\n WindowAppReadyEvent,\n WindowAppReadyEventAPI,\n} from '@wallet-standard/base';\n\nlet wallets: Wallets | undefined = undefined;\nconst registeredWalletsSet = new Set();\nfunction addRegisteredWallet(wallet: Wallet) {\n cachedWalletsArray = undefined;\n registeredWalletsSet.add(wallet);\n}\nfunction removeRegisteredWallet(wallet: Wallet) {\n cachedWalletsArray = undefined;\n registeredWalletsSet.delete(wallet);\n}\nconst listeners: { [E in WalletsEventNames]?: WalletsEventsListeners[E][] } = {};\n\n/**\n * Get an API for {@link Wallets.get | getting}, {@link Wallets.on | listening for}, and\n * {@link Wallets.register | registering} {@link \"@wallet-standard/base\".Wallet | Wallets}.\n *\n * When called for the first time --\n *\n * This dispatches a {@link \"@wallet-standard/base\".WindowAppReadyEvent} to notify each Wallet that the app is ready\n * to register it.\n *\n * This also adds a listener for {@link \"@wallet-standard/base\".WindowRegisterWalletEvent} to listen for a notification\n * from each Wallet that the Wallet is ready to be registered by the app.\n *\n * This combination of event dispatch and listener guarantees that each Wallet will be registered synchronously as soon\n * as the app is ready whether the app loads before or after each Wallet.\n *\n * @return API for getting, listening for, and registering Wallets.\n *\n * @group App\n */\nexport function getWallets(): Wallets {\n if (wallets) return wallets;\n wallets = Object.freeze({ register, get, on });\n if (typeof window === 'undefined') return wallets;\n\n const api = Object.freeze({ register });\n try {\n (window as WalletEventsWindow).addEventListener('wallet-standard:register-wallet', ({ detail: callback }) =>\n callback(api)\n );\n } catch (error) {\n console.error('wallet-standard:register-wallet event listener could not be added\\n', error);\n }\n try {\n (window as WalletEventsWindow).dispatchEvent(new AppReadyEvent(api));\n } catch (error) {\n console.error('wallet-standard:app-ready event could not be dispatched\\n', error);\n }\n\n return wallets;\n}\n\n/**\n * API for {@link Wallets.get | getting}, {@link Wallets.on | listening for}, and\n * {@link Wallets.register | registering} {@link \"@wallet-standard/base\".Wallet | Wallets}.\n *\n * @group App\n */\nexport interface Wallets {\n /**\n * Get all Wallets that have been registered.\n *\n * @return Registered Wallets.\n */\n get(): readonly Wallet[];\n\n /**\n * Add an event listener and subscribe to events for Wallets that are\n * {@link WalletsEventsListeners.register | registered} and\n * {@link WalletsEventsListeners.unregister | unregistered}.\n *\n * @param event Event type to listen for. {@link WalletsEventsListeners.register | `register`} and\n * {@link WalletsEventsListeners.unregister | `unregister`} are the only event types.\n * @param listener Function that will be called when an event of the type is emitted.\n *\n * @return\n * `off` function which may be called to remove the event listener and unsubscribe from events.\n *\n * As with all event listeners, be careful to avoid memory leaks.\n */\n on(event: E, listener: WalletsEventsListeners[E]): () => void;\n\n /**\n * Register Wallets. This can be used to programmatically wrap non-standard wallets as Standard Wallets.\n *\n * Apps generally do not need to, and should not, call this.\n *\n * @param wallets Wallets to register.\n *\n * @return\n * `unregister` function which may be called to programmatically unregister the registered Wallets.\n *\n * Apps generally do not need to, and should not, call this.\n */\n register(...wallets: Wallet[]): () => void;\n}\n\n/**\n * Types of event listeners of the {@link Wallets} API.\n *\n * @group App\n */\nexport interface WalletsEventsListeners {\n /**\n * Emitted when Wallets are registered.\n *\n * @param wallets Wallets that were registered.\n */\n register(...wallets: Wallet[]): void;\n\n /**\n * Emitted when Wallets are unregistered.\n *\n * @param wallets Wallets that were unregistered.\n */\n unregister(...wallets: Wallet[]): void;\n}\n\n/**\n * Names of {@link WalletsEventsListeners} that can be listened for.\n *\n * @group App\n */\nexport type WalletsEventNames = keyof WalletsEventsListeners;\n\n/**\n * @deprecated Use {@link WalletsEventsListeners} instead.\n *\n * @group Deprecated\n */\nexport type WalletsEvents = WalletsEventsListeners;\n\nfunction register(...wallets: Wallet[]): () => void {\n // Filter out wallets that have already been registered.\n // This prevents the same wallet from being registered twice, but it also prevents wallets from being\n // unregistered by reusing a reference to the wallet to obtain the unregister function for it.\n wallets = wallets.filter((wallet) => !registeredWalletsSet.has(wallet));\n // If there are no new wallets to register, just return a no-op unregister function.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n if (!wallets.length) return () => {};\n\n wallets.forEach((wallet) => addRegisteredWallet(wallet));\n listeners['register']?.forEach((listener) => guard(() => listener(...wallets)));\n // Return a function that unregisters the registered wallets.\n return function unregister(): void {\n wallets.forEach((wallet) => removeRegisteredWallet(wallet));\n listeners['unregister']?.forEach((listener) => guard(() => listener(...wallets)));\n };\n}\n\nlet cachedWalletsArray: readonly Wallet[] | undefined;\nfunction get(): readonly Wallet[] {\n if (!cachedWalletsArray) {\n cachedWalletsArray = [...registeredWalletsSet];\n }\n return cachedWalletsArray;\n}\n\nfunction on(event: E, listener: WalletsEventsListeners[E]): () => void {\n listeners[event]?.push(listener) || (listeners[event] = [listener]);\n // Return a function that removes the event listener.\n return function off(): void {\n listeners[event] = listeners[event]?.filter((existingListener) => listener !== existingListener);\n };\n}\n\nfunction guard(callback: () => void) {\n try {\n callback();\n } catch (error) {\n console.error(error);\n }\n}\n\nclass AppReadyEvent extends Event implements WindowAppReadyEvent {\n readonly #detail: WindowAppReadyEventAPI;\n\n get detail() {\n return this.#detail;\n }\n\n get type() {\n return 'wallet-standard:app-ready' as const;\n }\n\n constructor(api: WindowAppReadyEventAPI) {\n super('wallet-standard:app-ready', {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n this.#detail = api;\n }\n\n /** @deprecated */\n preventDefault(): never {\n throw new Error('preventDefault cannot be called');\n }\n\n /** @deprecated */\n stopImmediatePropagation(): never {\n throw new Error('stopImmediatePropagation cannot be called');\n }\n\n /** @deprecated */\n stopPropagation(): never {\n throw new Error('stopPropagation cannot be called');\n }\n}\n\n/**\n * @deprecated Use {@link getWallets} instead.\n *\n * @group Deprecated\n */\nexport function DEPRECATED_getWallets(): Wallets {\n if (wallets) return wallets;\n wallets = getWallets();\n if (typeof window === 'undefined') return wallets;\n\n const callbacks = (window as DEPRECATED_WalletsWindow).navigator.wallets || [];\n if (!Array.isArray(callbacks)) {\n console.error('window.navigator.wallets is not an array');\n return wallets;\n }\n\n const { register } = wallets;\n const push = (...callbacks: DEPRECATED_WalletsCallback[]): void =>\n callbacks.forEach((callback) => guard(() => callback({ register })));\n try {\n Object.defineProperty((window as DEPRECATED_WalletsWindow).navigator, 'wallets', {\n value: Object.freeze({ push }),\n });\n } catch (error) {\n console.error('window.navigator.wallets could not be set');\n return wallets;\n }\n\n push(...callbacks);\n return wallets;\n}\n","import type { Adapter, WalletName } from '@solana/wallet-adapter-base';\nimport { isWalletAdapterCompatibleWallet, StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base';\nimport { DEPRECATED_getWallets } from '@wallet-standard/app';\nimport type { Wallet } from '@wallet-standard/base';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nexport function useStandardWalletAdapters(adapters: Adapter[]): Adapter[] {\n const warnings = useConstant(() => new Set());\n const { get, on } = useConstant(() => DEPRECATED_getWallets());\n const [standardAdapters, setStandardAdapters] = useState(() => wrapWalletsWithAdapters(get()));\n\n useEffect(() => {\n const listeners = [\n on('register', (...wallets) =>\n setStandardAdapters((standardAdapters) => [...standardAdapters, ...wrapWalletsWithAdapters(wallets)])\n ),\n on('unregister', (...wallets) =>\n setStandardAdapters((standardAdapters) =>\n standardAdapters.filter((standardAdapter) =>\n wallets.some((wallet) => wallet === standardAdapter.wallet)\n )\n )\n ),\n ];\n return () => listeners.forEach((off) => off());\n }, [on]);\n\n const prevStandardAdapters = usePrevious(standardAdapters);\n useEffect(() => {\n if (!prevStandardAdapters) return;\n\n const currentAdapters = new Set(standardAdapters);\n const removedAdapters = new Set(\n prevStandardAdapters.filter((previousAdapter) => !currentAdapters.has(previousAdapter))\n );\n removedAdapters.forEach((adapter) => adapter.destroy());\n }, [prevStandardAdapters, standardAdapters]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => () => standardAdapters.forEach((adapter) => adapter.destroy()), []);\n\n return useMemo(\n () => [\n ...standardAdapters,\n ...adapters.filter(({ name }) => {\n if (standardAdapters.some((standardAdapter) => standardAdapter.name === name)) {\n if (!warnings.has(name)) {\n warnings.add(name);\n console.warn(\n `${name} was registered as a Standard Wallet. The Wallet Adapter for ${name} can be removed from your app.`\n );\n }\n return false;\n }\n return true;\n }),\n ],\n [standardAdapters, adapters, warnings]\n );\n}\n\nfunction useConstant(fn: () => T): T {\n const ref = useRef<{ value: T }>(undefined);\n if (ref.current === undefined) {\n ref.current = { value: fn() };\n }\n return ref.current.value;\n}\n\nfunction usePrevious(state: T): T | undefined {\n const ref = useRef(undefined);\n useEffect(() => {\n ref.current = state;\n });\n return ref.current;\n}\n\nfunction wrapWalletsWithAdapters(wallets: readonly Wallet[]): readonly StandardWalletAdapter[] {\n return wallets.filter(isWalletAdapterCompatibleWallet).map((wallet) => new StandardWalletAdapter({ wallet }));\n}\n","import { SolanaMobileWalletAdapterWalletName } from '@solana-mobile/wallet-adapter-mobile';\nimport { type Adapter, WalletReadyState } from '@solana/wallet-adapter-base';\n\nexport enum Environment {\n DESKTOP_WEB,\n MOBILE_WEB,\n}\n\ntype Config = Readonly<{\n adapters: Adapter[];\n userAgentString: string | null;\n}>;\n\nfunction isWebView(userAgentString: string) {\n return /(WebView|Version\\/.+(Chrome)\\/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)|; wv\\).+(Chrome)\\/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+))/i.test(\n userAgentString\n );\n}\n\nexport default function getEnvironment({ adapters, userAgentString }: Config): Environment {\n if (\n adapters.some(\n (adapter) =>\n adapter.name !== SolanaMobileWalletAdapterWalletName &&\n adapter.readyState === WalletReadyState.Installed\n )\n ) {\n /**\n * There are only two ways a browser extension adapter should be able to reach `Installed` status:\n *\n * 1. Its browser extension is installed.\n * 2. The app is running on a mobile wallet's in-app browser.\n *\n * In either case, we consider the environment to be desktop-like.\n */\n return Environment.DESKTOP_WEB;\n }\n if (\n userAgentString &&\n // Step 1: Check whether we're on a platform that supports MWA at all.\n /android/i.test(userAgentString) &&\n // Step 2: Determine that we are *not* running in a WebView.\n !isWebView(userAgentString)\n ) {\n return Environment.MOBILE_WEB;\n } else {\n return Environment.DESKTOP_WEB;\n }\n}\n","import { WalletError } from '@solana/wallet-adapter-base';\n\nexport class WalletNotSelectedError extends WalletError {\n name = 'WalletNotSelectedError';\n}\n","import {\n type Adapter,\n type MessageSignerWalletAdapterProps,\n type SignerWalletAdapterProps,\n type SignInMessageSignerWalletAdapterProps,\n type WalletAdapterProps,\n type WalletError,\n type WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletReadyState,\n} from '@solana/wallet-adapter-base';\nimport { type PublicKey } from '@solana/web3.js';\nimport React, { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { WalletNotSelectedError } from './errors.js';\nimport { WalletContext } from './useWallet.js';\n\nexport interface WalletProviderBaseProps {\n children: ReactNode;\n wallets: Adapter[];\n adapter: Adapter | null;\n isUnloadingRef: React.RefObject;\n // NOTE: The presence/absence of this handler implies that auto-connect is enabled/disabled.\n onAutoConnectRequest?: () => Promise;\n onConnectError: () => void;\n onError?: (error: WalletError, adapter?: Adapter) => void;\n onSelectWallet: (walletName: WalletName | null) => void;\n}\n\nexport function WalletProviderBase({\n children,\n wallets: adapters,\n adapter,\n isUnloadingRef,\n onAutoConnectRequest,\n onConnectError,\n onError,\n onSelectWallet,\n}: WalletProviderBaseProps) {\n const isConnectingRef = useRef(false);\n const [connecting, setConnecting] = useState(false);\n const isDisconnectingRef = useRef(false);\n const [disconnecting, setDisconnecting] = useState(false);\n const [publicKey, setPublicKey] = useState(() => adapter?.publicKey ?? null);\n const [connected, setConnected] = useState(() => adapter?.connected ?? false);\n\n /**\n * Store the error handlers as refs so that a change in the\n * custom error handler does not recompute other dependencies.\n */\n const onErrorRef = useRef(onError);\n useEffect(() => {\n onErrorRef.current = onError;\n return () => {\n onErrorRef.current = undefined;\n };\n }, [onError]);\n const handleErrorRef = useRef((error: WalletError, adapter?: Adapter) => {\n if (!isUnloadingRef.current) {\n if (onErrorRef.current) {\n onErrorRef.current(error, adapter);\n } else {\n console.error(error, adapter);\n if (error instanceof WalletNotReadyError && typeof window !== 'undefined' && adapter) {\n window.open(adapter.url, '_blank');\n }\n }\n }\n return error;\n });\n\n // Wrap adapters to conform to the `Wallet` interface\n const [wallets, setWallets] = useState(() =>\n adapters\n .map((adapter) => ({\n adapter,\n readyState: adapter.readyState,\n }))\n .filter(({ readyState }) => readyState !== WalletReadyState.Unsupported)\n );\n\n // When the adapters change, start to listen for changes to their `readyState`\n useEffect(() => {\n // When the adapters change, wrap them to conform to the `Wallet` interface\n setWallets((wallets) =>\n adapters\n .map((adapter, index) => {\n const wallet = wallets[index];\n // If the wallet hasn't changed, return the same instance\n return wallet && wallet.adapter === adapter && wallet.readyState === adapter.readyState\n ? wallet\n : {\n adapter: adapter,\n readyState: adapter.readyState,\n };\n })\n .filter(({ readyState }) => readyState !== WalletReadyState.Unsupported)\n );\n function handleReadyStateChange(this: Adapter, readyState: WalletReadyState) {\n setWallets((prevWallets) => {\n const index = prevWallets.findIndex(({ adapter }) => adapter === this);\n if (index === -1) return prevWallets;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { adapter } = prevWallets[index]!;\n return [\n ...prevWallets.slice(0, index),\n { adapter, readyState },\n ...prevWallets.slice(index + 1),\n ].filter(({ readyState }) => readyState !== WalletReadyState.Unsupported);\n });\n }\n adapters.forEach((adapter) => adapter.on('readyStateChange', handleReadyStateChange, adapter));\n return () => {\n adapters.forEach((adapter) => adapter.off('readyStateChange', handleReadyStateChange, adapter));\n };\n }, [adapter, adapters]);\n\n const wallet = useMemo(() => wallets.find((wallet) => wallet.adapter === adapter) ?? null, [adapter, wallets]);\n\n // Setup and teardown event listeners when the adapter changes\n useEffect(() => {\n if (!adapter) return;\n\n const handleConnect = (publicKey: PublicKey) => {\n setPublicKey(publicKey);\n isConnectingRef.current = false;\n setConnecting(false);\n setConnected(true);\n isDisconnectingRef.current = false;\n setDisconnecting(false);\n };\n\n const handleDisconnect = () => {\n if (isUnloadingRef.current) return;\n\n setPublicKey(null);\n isConnectingRef.current = false;\n setConnecting(false);\n setConnected(false);\n isDisconnectingRef.current = false;\n setDisconnecting(false);\n };\n\n const handleError = (error: WalletError) => {\n handleErrorRef.current(error, adapter);\n };\n\n adapter.on('connect', handleConnect);\n adapter.on('disconnect', handleDisconnect);\n adapter.on('error', handleError);\n\n return () => {\n adapter.off('connect', handleConnect);\n adapter.off('disconnect', handleDisconnect);\n adapter.off('error', handleError);\n\n handleDisconnect();\n };\n }, [adapter, isUnloadingRef]);\n\n // When the adapter changes, clear the `autoConnect` tracking flag\n const didAttemptAutoConnectRef = useRef(false);\n useEffect(() => {\n return () => {\n didAttemptAutoConnectRef.current = false;\n };\n }, [adapter]);\n\n // If auto-connect is enabled, request to connect when the adapter changes and is ready\n useEffect(() => {\n if (\n didAttemptAutoConnectRef.current ||\n isConnectingRef.current ||\n connected ||\n !onAutoConnectRequest ||\n !(wallet?.readyState === WalletReadyState.Installed || wallet?.readyState === WalletReadyState.Loadable)\n )\n return;\n\n isConnectingRef.current = true;\n setConnecting(true);\n didAttemptAutoConnectRef.current = true;\n (async function () {\n try {\n await onAutoConnectRequest();\n } catch {\n onConnectError();\n // Drop the error. It will be caught by `handleError` anyway.\n } finally {\n setConnecting(false);\n isConnectingRef.current = false;\n }\n })();\n }, [connected, onAutoConnectRequest, onConnectError, wallet]);\n\n // Send a transaction using the provided connection\n const sendTransaction: WalletAdapterProps['sendTransaction'] = useCallback(\n async (transaction, connection, options) => {\n if (!adapter) throw handleErrorRef.current(new WalletNotSelectedError());\n if (!connected) throw handleErrorRef.current(new WalletNotConnectedError(), adapter);\n return await adapter.sendTransaction(transaction, connection, options);\n },\n [adapter, connected]\n );\n\n // Sign a transaction if the wallet supports it\n const signTransaction: SignerWalletAdapterProps['signTransaction'] | undefined = useMemo(\n () =>\n adapter && 'signTransaction' in adapter\n ? async (transaction) => {\n if (!connected) throw handleErrorRef.current(new WalletNotConnectedError(), adapter);\n return await adapter.signTransaction(transaction);\n }\n : undefined,\n [adapter, connected]\n );\n\n // Sign multiple transactions if the wallet supports it\n const signAllTransactions: SignerWalletAdapterProps['signAllTransactions'] | undefined = useMemo(\n () =>\n adapter && 'signAllTransactions' in adapter\n ? async (transactions) => {\n if (!connected) throw handleErrorRef.current(new WalletNotConnectedError(), adapter);\n return await adapter.signAllTransactions(transactions);\n }\n : undefined,\n [adapter, connected]\n );\n\n // Sign an arbitrary message if the wallet supports it\n const signMessage: MessageSignerWalletAdapterProps['signMessage'] | undefined = useMemo(\n () =>\n adapter && 'signMessage' in adapter\n ? async (message) => {\n if (!connected) throw handleErrorRef.current(new WalletNotConnectedError(), adapter);\n return await adapter.signMessage(message);\n }\n : undefined,\n [adapter, connected]\n );\n\n // Sign in if the wallet supports it\n const signIn: SignInMessageSignerWalletAdapterProps['signIn'] | undefined = useMemo(\n () =>\n adapter && 'signIn' in adapter\n ? async (input) => {\n return await adapter.signIn(input);\n }\n : undefined,\n [adapter]\n );\n\n const handleConnect = useCallback(async () => {\n if (isConnectingRef.current || isDisconnectingRef.current || wallet?.adapter.connected) return;\n if (!wallet) throw handleErrorRef.current(new WalletNotSelectedError());\n const { adapter, readyState } = wallet;\n if (!(readyState === WalletReadyState.Installed || readyState === WalletReadyState.Loadable))\n throw handleErrorRef.current(new WalletNotReadyError(), adapter);\n isConnectingRef.current = true;\n setConnecting(true);\n try {\n await adapter.connect();\n } catch (e) {\n onConnectError();\n throw e;\n } finally {\n setConnecting(false);\n isConnectingRef.current = false;\n }\n }, [onConnectError, wallet]);\n\n const handleDisconnect = useCallback(async () => {\n if (isDisconnectingRef.current) return;\n if (!adapter) return;\n isDisconnectingRef.current = true;\n setDisconnecting(true);\n try {\n await adapter.disconnect();\n } finally {\n setDisconnecting(false);\n isDisconnectingRef.current = false;\n }\n }, [adapter]);\n\n return (\n \n {children}\n \n );\n}\n","import {\n createDefaultAddressSelector,\n createDefaultAuthorizationResultCache,\n createDefaultWalletNotFoundHandler,\n SolanaMobileWalletAdapter,\n SolanaMobileWalletAdapterWalletName,\n} from '@solana-mobile/wallet-adapter-mobile';\nimport { type Adapter, type WalletError, type WalletName } from '@solana/wallet-adapter-base';\nimport { useStandardWalletAdapters } from '@solana/wallet-standard-wallet-adapter-react';\nimport React, { type ReactNode, useCallback, useEffect, useMemo, useRef } from 'react';\nimport getEnvironment, { Environment } from './getEnvironment.js';\nimport getInferredClusterFromEndpoint from './getInferredClusterFromEndpoint.js';\nimport { useConnection } from './useConnection.js';\nimport { useLocalStorage } from './useLocalStorage.js';\nimport { WalletProviderBase } from './WalletProviderBase.js';\n\nexport interface WalletProviderProps {\n children: ReactNode;\n wallets: Adapter[];\n autoConnect?: boolean | ((adapter: Adapter) => Promise);\n localStorageKey?: string;\n onError?: (error: WalletError, adapter?: Adapter) => void;\n}\n\nlet _userAgent: string | null;\nfunction getUserAgent() {\n if (_userAgent === undefined) {\n _userAgent = globalThis.navigator?.userAgent ?? null;\n }\n return _userAgent;\n}\n\nfunction getIsMobile(adapters: Adapter[]) {\n const userAgentString = getUserAgent();\n return getEnvironment({ adapters, userAgentString }) === Environment.MOBILE_WEB;\n}\n\nfunction getUriForAppIdentity() {\n const location = globalThis.location;\n if (!location) return;\n return `${location.protocol}//${location.host}`;\n}\n\nexport function WalletProvider({\n children,\n wallets: adapters,\n autoConnect,\n localStorageKey = 'walletName',\n onError,\n}: WalletProviderProps) {\n const { connection } = useConnection();\n const adaptersWithStandardAdapters = useStandardWalletAdapters(adapters);\n const mobileWalletAdapter = useMemo(() => {\n if (!getIsMobile(adaptersWithStandardAdapters)) {\n return null;\n }\n const existingMobileWalletAdapter = adaptersWithStandardAdapters.find(\n (adapter) => adapter.name === SolanaMobileWalletAdapterWalletName\n );\n if (existingMobileWalletAdapter) {\n return existingMobileWalletAdapter;\n }\n return new SolanaMobileWalletAdapter({\n addressSelector: createDefaultAddressSelector(),\n appIdentity: {\n uri: getUriForAppIdentity(),\n },\n authorizationResultCache: createDefaultAuthorizationResultCache(),\n cluster: getInferredClusterFromEndpoint(connection?.rpcEndpoint),\n onWalletNotFound: createDefaultWalletNotFoundHandler(),\n });\n }, [adaptersWithStandardAdapters, connection?.rpcEndpoint]);\n const adaptersWithMobileWalletAdapter = useMemo(() => {\n if (mobileWalletAdapter == null || adaptersWithStandardAdapters.indexOf(mobileWalletAdapter) !== -1) {\n return adaptersWithStandardAdapters;\n }\n return [mobileWalletAdapter, ...adaptersWithStandardAdapters];\n }, [adaptersWithStandardAdapters, mobileWalletAdapter]);\n const [walletName, setWalletName] = useLocalStorage(\n localStorageKey,\n getIsMobile(adaptersWithStandardAdapters) ? SolanaMobileWalletAdapterWalletName : null\n );\n const adapter = useMemo(\n () => adaptersWithMobileWalletAdapter.find((a) => a.name === walletName) ?? null,\n [adaptersWithMobileWalletAdapter, walletName]\n );\n const changeWallet = useCallback(\n (nextWalletName: WalletName | null) => {\n if (walletName === nextWalletName) return;\n if (\n adapter &&\n // Selecting a wallet other than the mobile wallet adapter is not\n // sufficient reason to call `disconnect` on the mobile wallet adapter.\n // Calling `disconnect` on the mobile wallet adapter causes the entire\n // authorization store to be wiped.\n adapter.name !== SolanaMobileWalletAdapterWalletName\n ) {\n adapter.disconnect();\n }\n setWalletName(nextWalletName);\n },\n [adapter, setWalletName, walletName]\n );\n useEffect(() => {\n if (!adapter) return;\n function handleDisconnect() {\n if (isUnloadingRef.current) return;\n // Leave the adapter selected in the event of a disconnection.\n if (walletName === SolanaMobileWalletAdapterWalletName && getIsMobile(adaptersWithStandardAdapters)) return;\n setWalletName(null);\n }\n adapter.on('disconnect', handleDisconnect);\n return () => {\n adapter.off('disconnect', handleDisconnect);\n };\n }, [adapter, adaptersWithStandardAdapters, setWalletName, walletName]);\n const hasUserSelectedAWallet = useRef(false);\n const handleAutoConnectRequest = useMemo(() => {\n if (!autoConnect || !adapter) return;\n return async () => {\n // If autoConnect is true or returns true, use the default autoConnect behavior.\n if (autoConnect === true || (await autoConnect(adapter))) {\n if (hasUserSelectedAWallet.current) {\n await adapter.connect();\n } else {\n await adapter.autoConnect();\n }\n }\n };\n }, [autoConnect, adapter]);\n const isUnloadingRef = useRef(false);\n useEffect(() => {\n if (walletName === SolanaMobileWalletAdapterWalletName && getIsMobile(adaptersWithStandardAdapters)) {\n isUnloadingRef.current = false;\n return;\n }\n function handleBeforeUnload() {\n isUnloadingRef.current = true;\n }\n /**\n * Some wallets fire disconnection events when the window unloads. Since there's no way to\n * distinguish between a disconnection event received because a user initiated it, and one\n * that was received because they've closed the window, we have to track window unload\n * events themselves. Downstream components use this information to decide whether to act\n * upon or drop wallet events and errors.\n */\n window.addEventListener('beforeunload', handleBeforeUnload);\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n };\n }, [adaptersWithStandardAdapters, walletName]);\n const handleConnectError = useCallback(() => {\n if (adapter && adapter.name !== SolanaMobileWalletAdapterWalletName) {\n // If any error happens while connecting, unset the adapter.\n changeWallet(null);\n }\n }, [adapter, changeWallet]);\n const selectWallet = useCallback(\n (walletName: WalletName | null) => {\n hasUserSelectedAWallet.current = true;\n changeWallet(walletName);\n },\n [changeWallet]\n );\n return (\n \n {children}\n \n );\n}\n","import { type Cluster } from '@solana/web3.js';\n\nexport default function getInferredClusterFromEndpoint(endpoint?: string): Cluster {\n if (!endpoint) {\n return 'mainnet-beta';\n }\n if (/devnet/i.test(endpoint)) {\n return 'devnet';\n } else if (/testnet/i.test(endpoint)) {\n return 'testnet';\n } else {\n return 'mainnet-beta';\n }\n}\n","import { type Dispatch, type SetStateAction, useEffect, useRef, useState } from 'react';\n\nexport function useLocalStorage(key: string, defaultState: T): [T, Dispatch>] {\n const state = useState(() => {\n try {\n const value = localStorage.getItem(key);\n if (value) return JSON.parse(value) as T;\n } catch (error: any) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n\n return defaultState;\n });\n const value = state[0];\n\n const isFirstRenderRef = useRef(true);\n useEffect(() => {\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false;\n return;\n }\n try {\n if (value === null) {\n localStorage.removeItem(key);\n } else {\n localStorage.setItem(key, JSON.stringify(value));\n }\n } catch (error: any) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n }, [value, key]);\n\n return state;\n}\n","import type {\n DEPRECATED_WalletsWindow,\n Wallet,\n WalletEventsWindow,\n WindowRegisterWalletEvent,\n WindowRegisterWalletEventCallback,\n} from '@wallet-standard/base';\n\n/**\n * Register a {@link \"@wallet-standard/base\".Wallet} as a Standard Wallet with the app.\n *\n * This dispatches a {@link \"@wallet-standard/base\".WindowRegisterWalletEvent} to notify the app that the Wallet is\n * ready to be registered.\n *\n * This also adds a listener for {@link \"@wallet-standard/base\".WindowAppReadyEvent} to listen for a notification from\n * the app that the app is ready to register the Wallet.\n *\n * This combination of event dispatch and listener guarantees that the Wallet will be registered synchronously as soon\n * as the app is ready whether the Wallet loads before or after the app.\n *\n * @param wallet Wallet to register.\n *\n * @group Wallet\n */\nexport function registerWallet(wallet: Wallet): void {\n const callback: WindowRegisterWalletEventCallback = ({ register }) => register(wallet);\n try {\n (window as WalletEventsWindow).dispatchEvent(new RegisterWalletEvent(callback));\n } catch (error) {\n console.error('wallet-standard:register-wallet event could not be dispatched\\n', error);\n }\n try {\n (window as WalletEventsWindow).addEventListener('wallet-standard:app-ready', ({ detail: api }) =>\n callback(api)\n );\n } catch (error) {\n console.error('wallet-standard:app-ready event listener could not be added\\n', error);\n }\n}\n\nclass RegisterWalletEvent extends Event implements WindowRegisterWalletEvent {\n readonly #detail: WindowRegisterWalletEventCallback;\n\n get detail() {\n return this.#detail;\n }\n\n get type() {\n return 'wallet-standard:register-wallet' as const;\n }\n\n constructor(callback: WindowRegisterWalletEventCallback) {\n super('wallet-standard:register-wallet', {\n bubbles: false,\n cancelable: false,\n composed: false,\n });\n this.#detail = callback;\n }\n\n /** @deprecated */\n preventDefault(): never {\n throw new Error('preventDefault cannot be called');\n }\n\n /** @deprecated */\n stopImmediatePropagation(): never {\n throw new Error('stopImmediatePropagation cannot be called');\n }\n\n /** @deprecated */\n stopPropagation(): never {\n throw new Error('stopPropagation cannot be called');\n }\n}\n\n/**\n * @deprecated Use {@link registerWallet} instead.\n *\n * @group Deprecated\n */\nexport function DEPRECATED_registerWallet(wallet: Wallet): void {\n registerWallet(wallet);\n try {\n ((window as DEPRECATED_WalletsWindow).navigator.wallets ||= []).push(({ register }) => register(wallet));\n } catch (error) {\n console.error('window.navigator.wallets could not be pushed\\n', error);\n }\n}\n","import { WalletNotConnectedError } from '@solana/wallet-adapter-base';\nimport { SOLANA_DEVNET_CHAIN, SOLANA_MAINNET_CHAIN, SOLANA_TESTNET_CHAIN } from '@solana/wallet-standard-chains';\nimport {\n SolanaSignAndSendTransaction,\n type SolanaSignAndSendTransactionFeature,\n type SolanaSignAndSendTransactionMethod,\n SolanaSignMessage,\n type SolanaSignMessageFeature,\n type SolanaSignMessageMethod,\n SolanaSignTransaction,\n type SolanaSignTransactionFeature,\n type SolanaSignTransactionMethod,\n} from '@solana/wallet-standard-features';\nimport type { default as SolflareMetaMask } from '@solflare-wallet/metamask-sdk';\nimport type { Wallet } from '@wallet-standard/base';\nimport {\n StandardConnect,\n type StandardConnectFeature,\n type StandardConnectMethod,\n StandardDisconnect,\n type StandardDisconnectFeature,\n type StandardDisconnectMethod,\n StandardEvents,\n type StandardEventsChangeProperties,\n type StandardEventsFeature,\n type StandardEventsListeners,\n type StandardEventsNames,\n type StandardEventsOnMethod,\n} from '@wallet-standard/features';\nimport { icon } from './icon.js';\n\nexport class SolflareMetaMaskWallet implements Wallet {\n readonly #listeners: { [E in StandardEventsNames]?: StandardEventsListeners[E][] } = {};\n readonly #version = '1.0.0' as const;\n readonly #name = 'MetaMask' as const;\n readonly #icon = icon;\n #solflareMetaMask: SolflareMetaMask | null = null;\n\n get version() {\n return this.#version;\n }\n\n get name() {\n return this.#name;\n }\n\n get icon() {\n return this.#icon;\n }\n\n get chains() {\n return [SOLANA_MAINNET_CHAIN, SOLANA_DEVNET_CHAIN, SOLANA_TESTNET_CHAIN] as const;\n }\n\n get features(): StandardConnectFeature &\n StandardDisconnectFeature &\n StandardEventsFeature &\n SolanaSignAndSendTransactionFeature &\n SolanaSignTransactionFeature &\n SolanaSignMessageFeature {\n return {\n [StandardConnect]: {\n version: '1.0.0',\n connect: this.#connect,\n },\n [StandardDisconnect]: {\n version: '1.0.0',\n disconnect: this.#disconnect,\n },\n [StandardEvents]: {\n version: '1.0.0',\n on: this.#on,\n },\n [SolanaSignAndSendTransaction]: {\n version: '1.0.0',\n supportedTransactionVersions: ['legacy', 0],\n signAndSendTransaction: this.#signAndSendTransaction,\n },\n [SolanaSignTransaction]: {\n version: '1.0.0',\n supportedTransactionVersions: ['legacy', 0],\n signTransaction: this.#signTransaction,\n },\n [SolanaSignMessage]: {\n version: '1.0.0',\n signMessage: this.#signMessage,\n },\n };\n }\n\n get accounts() {\n return this.#solflareMetaMask ? this.#solflareMetaMask.standardAccounts : [];\n }\n\n #on: StandardEventsOnMethod = (event, listener) => {\n this.#listeners[event]?.push(listener) || (this.#listeners[event] = [listener]);\n return (): void => this.#off(event, listener);\n };\n\n #emit(event: E, ...args: Parameters): void {\n // eslint-disable-next-line prefer-spread\n this.#listeners[event]?.forEach((listener) => listener.apply(null, args));\n }\n\n #off(event: E, listener: StandardEventsListeners[E]): void {\n this.#listeners[event] = this.#listeners[event]?.filter((existingListener) => listener !== existingListener);\n }\n\n #connect: StandardConnectMethod = async () => {\n if (!this.#solflareMetaMask) {\n let SolflareMetaMaskClass: typeof SolflareMetaMask;\n try {\n SolflareMetaMaskClass = (await import('@solflare-wallet/metamask-sdk')).default;\n } catch (error: any) {\n throw new Error('Unable to load Solflare MetaMask SDK');\n }\n this.#solflareMetaMask = new SolflareMetaMaskClass();\n this.#solflareMetaMask.on('standard_change', (properties: StandardEventsChangeProperties) =>\n this.#emit('change', properties)\n );\n }\n\n if (!this.accounts.length) {\n await this.#solflareMetaMask.connect();\n }\n\n return { accounts: this.accounts };\n };\n\n #disconnect: StandardDisconnectMethod = async () => {\n if (!this.#solflareMetaMask) return;\n await this.#solflareMetaMask.disconnect();\n };\n\n #signAndSendTransaction: SolanaSignAndSendTransactionMethod = async (...inputs) => {\n if (!this.#solflareMetaMask) throw new WalletNotConnectedError();\n return await this.#solflareMetaMask.standardSignAndSendTransaction(...inputs);\n };\n\n #signTransaction: SolanaSignTransactionMethod = async (...inputs) => {\n if (!this.#solflareMetaMask) throw new WalletNotConnectedError();\n return await this.#solflareMetaMask.standardSignTransaction(...inputs);\n };\n\n #signMessage: SolanaSignMessageMethod = async (...inputs) => {\n if (!this.#solflareMetaMask) throw new WalletNotConnectedError();\n return await this.#solflareMetaMask.standardSignMessage(...inputs);\n };\n}\n","import type { WalletIcon } from '@wallet-standard/base';\n\n/** @internal */\nexport const icon: WalletIcon =\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjMxIiB2aWV3Qm94PSIwIDAgMzEgMzEiIHdpZHRoPSIzMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGxpbmVhckdyYWRpZW50IGlkPSJhIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIwLjI1IiB4Mj0iMjYuNTcxIiB5MT0iMjcuMTczIiB5Mj0iMTkuODU4Ij48c3RvcCBvZmZzZXQ9Ii4wOCIgc3RvcC1jb2xvcj0iIzk5NDVmZiIvPjxzdG9wIG9mZnNldD0iLjMiIHN0b3AtY29sb3I9IiM4NzUyZjMiLz48c3RvcCBvZmZzZXQ9Ii41IiBzdG9wLWNvbG9yPSIjNTQ5N2Q1Ii8+PHN0b3Agb2Zmc2V0PSIuNiIgc3RvcC1jb2xvcj0iIzQzYjRjYSIvPjxzdG9wIG9mZnNldD0iLjcyIiBzdG9wLWNvbG9yPSIjMjhlMGI5Ii8+PHN0b3Agb2Zmc2V0PSIuOTciIHN0b3AtY29sb3I9IiMxOWZiOWIiLz48L2xpbmVhckdyYWRpZW50PjxnIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iLjA5NCI+PHBhdGggZD0ibTI2LjEwOSAzLjY0My05LjM2OSA2Ljk1OSAxLjczMy00LjEwNSA3LjYzNy0yLjg1M3oiIGZpbGw9IiNlMjc2MWIiIHN0cm9rZT0iI2UyNzYxYiIvPjxnIGZpbGw9IiNlNDc2MWIiIHN0cm9rZT0iI2U0NzYxYiI+PHBhdGggZD0ibTQuNDgxIDMuNjQzIDkuMjk0IDcuMDI0LTEuNjQ4LTQuMTcxem0xOC4yNTggMTYuMTMtMi40OTUgMy44MjMgNS4zMzkgMS40NjkgMS41MzUtNS4yMDctNC4zNzgtLjA4NXptLTE5LjI0Ny4wODUgMS41MjUgNS4yMDcgNS4zMzktMS40NjktMi40OTUtMy44MjN6Ii8+PHBhdGggZD0ibTEwLjA1NSAxMy4zMTMtMS40ODggMi4yNTEgNS4zMDEuMjM1LS4xODgtNS42OTd6bTEwLjQ4IDAtMy42NzItMy4yNzctLjEyMiA1Ljc2MyA1LjI5Mi0uMjM1LTEuNDk3LTIuMjUxem0tMTAuMTc4IDEwLjI4MyAzLjE4My0xLjU1NC0yLjc0OS0yLjE0Ny0uNDMzIDMuNzAxem02LjY5NS0xLjU1NCAzLjE5MiAxLjU1NC0uNDQzLTMuNzAxeiIvPjwvZz48cGF0aCBkPSJtMjAuMjQ0IDIzLjU5Ni0zLjE5Mi0xLjU1NC4yNTQgMi4wODEtLjAyOC44NzZ6bS05Ljg4NyAwIDIuOTY2IDEuNDAzLS4wMTktLjg3Ni4yMzUtMi4wODEtMy4xODMgMS41NTR6IiBmaWxsPSIjZDdjMWIzIiBzdHJva2U9IiNkN2MxYjMiLz48cGF0aCBkPSJtMTMuMzY5IDE4LjUyMS0yLjY1NS0uNzgxIDEuODc0LS44NTd6bTMuODUxIDAgLjc4MS0xLjYzOCAxLjg4My44NTctMi42NjUuNzgxeiIgZmlsbD0iIzIzMzQ0NyIgc3Ryb2tlPSIjMjMzNDQ3Ii8+PHBhdGggZD0ibTEwLjM1NyAyMy41OTYuNDUyLTMuODIzLTIuOTQ3LjA4NXptOS40MzUtMy44MjMuNDUyIDMuODIzIDIuNDk1LTMuNzM4em0yLjI0MS00LjIwOS01LjI5Mi4yMzUuNDkgMi43MjEuNzgyLTEuNjM4IDEuODgzLjg1N3ptLTExLjMxOCAyLjE3NSAxLjg4My0uODU3Ljc3MiAxLjYzOC40OTktMi43MjEtNS4zMDEtLjIzNXoiIGZpbGw9IiNjZDYxMTYiIHN0cm9rZT0iI2NkNjExNiIvPjxwYXRoIGQ9Im04LjU2NyAxNS41NjQgMi4yMjIgNC4zMzEtLjA3NS0yLjE1NnptMTEuMzI4IDIuMTc1LS4wOTQgMi4xNTYgMi4yMzItNC4zMzEtMi4xMzcgMi4xNzV6bS02LjAyNi0xLjk0LS40OTkgMi43MjEuNjIxIDMuMjExLjE0MS00LjIyOC0uMjY0LTEuNzA0em0yLjg3MiAwLS4yNTQgMS42OTUuMTEzIDQuMjM3LjYzMS0zLjIxMXoiIGZpbGw9IiNlNDc1MWYiIHN0cm9rZT0iI2U0NzUxZiIvPjxwYXRoIGQ9Im0xNy4yMyAxOC41Mi0uNjMxIDMuMjExLjQ1Mi4zMTEgMi43NS0yLjE0Ny4wOTQtMi4xNTZ6bS02LjUxNi0uNzgxLjA3NSAyLjE1NiAyLjc1IDIuMTQ3LjQ1Mi0uMzExLS42MjItMy4yMTF6IiBmaWxsPSIjZjY4NTFiIiBzdHJva2U9IiNmNjg1MWIiLz48cGF0aCBkPSJtMTcuMjc3IDI0Ljk5OS4wMjgtLjg3Ni0uMjM1LS4yMDdoLTMuNTVsLS4yMTcuMjA3LjAxOS44NzYtMi45NjYtMS40MDMgMS4wMzYuODQ4IDIuMSAxLjQ1OWgzLjYwNmwyLjEwOS0xLjQ1OSAxLjAzNi0uODQ4eiIgZmlsbD0iI2MwYWQ5ZSIgc3Ryb2tlPSIjYzBhZDllIi8+PHBhdGggZD0ibTE3LjA1MSAyMi4wNDItLjQ1Mi0uMzExaC0yLjYwOGwtLjQ1Mi4zMTEtLjIzNSAyLjA4MS4yMTctLjIwN2gzLjU1bC4yMzUuMjA3LS4yNTQtMi4wODF6IiBmaWxsPSIjMTYxNjE2IiBzdHJva2U9IiMxNjE2MTYiLz48cGF0aCBkPSJtMjYuNTA1IDExLjA1My44LTMuODQyLTEuMTk2LTMuNTY5LTkuMDU4IDYuNzIzIDMuNDg0IDIuOTQ3IDQuOTI1IDEuNDQxIDEuMDkyLTEuMjcxLS40NzEtLjMzOS43NTMtLjY4Ny0uNTg0LS40NTIuNzUzLS41NzQtLjQ5OS0uMzc3em0tMjMuMjExLTMuODQxLjggMy44NDItLjUwOC4zNzcuNzUzLjU3NC0uNTc0LjQ1Mi43NTMuNjg3LS40NzEuMzM5IDEuMDgzIDEuMjcxIDQuOTI1LTEuNDQxIDMuNDg0LTIuOTQ3LTkuMDU5LTYuNzIzeiIgZmlsbD0iIzc2M2QxNiIgc3Ryb2tlPSIjNzYzZDE2Ii8+PHBhdGggZD0ibTI1LjQ2IDE0Ljc1NC00LjkyNS0xLjQ0MSAxLjQ5NyAyLjI1MS0yLjIzMiA0LjMzMSAyLjkzOC0uMDM4aDQuMzc4bC0xLjY1Ny01LjEwNHptLTE1LjQwNS0xLjQ0MS00LjkyNSAxLjQ0MS0xLjYzOCA1LjEwNGg0LjM2OWwyLjkyOC4wMzgtMi4yMjItNC4zMzEgMS40ODgtMi4yNTF6bTYuNjg1IDIuNDg2LjMxMS01LjQzMyAxLjQzMS0zLjg3aC02LjM1NmwxLjQxMyAzLjg3LjMyOSA1LjQzMy4xMTMgMS43MTQuMDA5IDQuMjE5aDIuNjFsLjAxOS00LjIxOS4xMjItMS43MTR6IiBmaWxsPSIjZjY4NTFiIiBzdHJva2U9IiNmNjg1MWIiLz48L2c+PGNpcmNsZSBjeD0iMjMuNSIgY3k9IjIzLjUiIGZpbGw9IiMwMDAiIHI9IjYuNSIvPjxwYXRoIGQ9Im0yNy40NzMgMjUuNTQ1LTEuMzEgMS4zNjhjLS4wMjkuMDMtLjA2My4wNTMtLjEwMS4wN2EuMzEuMzEgMCAwIDEgLS4xMjEuMDI0aC02LjIwOWMtLjAzIDAtLjA1OS0uMDA4LS4wODMtLjAyNGEuMTUuMTUgMCAwIDEgLS4wNTYtLjA2NWMtLjAxMi0uMDI2LS4wMTUtLjA1Ni0uMDEtLjA4NHMuMDE4LS4wNTUuMDM5LS4wNzZsMS4zMTEtMS4zNjhjLjAyOC0uMDMuMDYzLS4wNTMuMTAxLS4wNjlhLjMxLjMxIDAgMCAxIC4xMjEtLjAyNWg2LjIwOGMuMDMgMCAuMDU5LjAwOC4wODMuMDI0YS4xNS4xNSAwIDAgMSAuMDU2LjA2NWMuMDEyLjAyNi4wMTUuMDU2LjAxLjA4NHMtLjAxOC4wNTUtLjAzOS4wNzZ6bS0xLjMxLTIuNzU2Yy0uMDI5LS4wMy0uMDYzLS4wNTMtLjEwMS0uMDdhLjMxLjMxIDAgMCAwIC0uMTIxLS4wMjRoLTYuMjA5Yy0uMDMgMC0uMDU5LjAwOC0uMDgzLjAyNHMtLjA0NC4wMzgtLjA1Ni4wNjUtLjAxNS4wNTYtLjAxLjA4NC4wMTguMDU1LjAzOS4wNzZsMS4zMTEgMS4zNjhjLjAyOC4wMy4wNjMuMDUzLjEwMS4wNjlhLjMxLjMxIDAgMCAwIC4xMjEuMDI1aDYuMjA4Yy4wMyAwIC4wNTktLjAwOC4wODMtLjAyNGEuMTUuMTUgMCAwIDAgLjA1Ni0uMDY1Yy4wMTItLjAyNi4wMTUtLjA1Ni4wMS0uMDg0cy0uMDE4LS4wNTUtLjAzOS0uMDc2em0tNi40MzEtLjk4M2g2LjIwOWEuMzEuMzEgMCAwIDAgLjEyMS0uMDI0Yy4wMzgtLjAxNi4wNzMtLjA0LjEwMS0uMDdsMS4zMS0xLjM2OGMuMDItLjAyMS4wMzQtLjA0Ny4wMzktLjA3NnMuMDAxLS4wNTgtLjAxLS4wODRhLjE1LjE1IDAgMCAwIC0uMDU2LS4wNjVjLS4wMjUtLjAxNi0uMDU0LS4wMjQtLjA4My0uMDI0aC02LjIwOGEuMzEuMzEgMCAwIDAgLS4xMjEuMDI1Yy0uMDM4LjAxNi0uMDcyLjA0LS4xMDEuMDY5bC0xLjMxIDEuMzY4Yy0uMDIuMDIxLS4wMzQuMDQ3LS4wMzkuMDc2cy0uMDAxLjA1OC4wMS4wODQuMDMxLjA0OS4wNTYuMDY1LjA1NC4wMjQuMDgzLjAyNHoiIGZpbGw9InVybCgjYSkiLz48L3N2Zz4=' as const;\n","import { registerWallet } from '@wallet-standard/wallet';\nimport { SolflareMetaMaskWallet } from './wallet.js';\n\nlet registered = false;\n\nfunction register() {\n if (registered) return;\n registerWallet(new SolflareMetaMaskWallet());\n registered = true;\n}\n\n/** @internal */\nexport async function detectAndRegisterSolflareMetaMaskWallet(): Promise {\n const id = 'solflare-detect-metamask';\n\n function postMessage() {\n window.postMessage(\n {\n target: 'metamask-contentscript',\n data: {\n name: 'metamask-provider',\n data: {\n id,\n jsonrpc: '2.0',\n method: 'wallet_getSnaps',\n },\n },\n },\n window.location.origin\n );\n }\n\n function onMessage(event: MessageEvent) {\n const message = event.data;\n if (message?.target === 'metamask-inpage' && message.data?.name === 'metamask-provider') {\n if (message.data.data?.id === id) {\n window.removeEventListener('message', onMessage);\n\n if (!message.data.data.error) {\n register();\n }\n } else {\n postMessage();\n }\n }\n }\n\n window.addEventListener('message', onMessage);\n window.setTimeout(() => window.removeEventListener('message', onMessage), 5000);\n\n postMessage();\n}\n","import type { default as Transport } from '@ledgerhq/hw-transport';\nimport { StatusCodes, TransportStatusError } from '@ledgerhq/hw-transport';\nimport { isVersionedTransaction } from '@solana/wallet-adapter-base';\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\nimport './polyfills/index.js';\n\nexport function getDerivationPath(account?: number, change?: number): Buffer {\n const length = account !== undefined ? (change === undefined ? 3 : 4) : 2;\n const derivationPath = Buffer.alloc(1 + length * 4);\n\n let offset = derivationPath.writeUInt8(length, 0);\n offset = derivationPath.writeUInt32BE(harden(44), offset); // Using BIP44\n offset = derivationPath.writeUInt32BE(harden(501), offset); // Solana's BIP44 path\n\n if (account !== undefined) {\n offset = derivationPath.writeUInt32BE(harden(account), offset);\n if (change !== undefined) {\n derivationPath.writeUInt32BE(harden(change), offset);\n }\n }\n\n return derivationPath;\n}\n\nconst BIP32_HARDENED_BIT = (1 << 31) >>> 0;\n\nfunction harden(n: number): number {\n return (n | BIP32_HARDENED_BIT) >>> 0;\n}\n\nconst INS_GET_PUBKEY = 0x05;\nconst INS_SIGN_MESSAGE = 0x06;\n\nconst P1_NON_CONFIRM = 0x00;\nconst P1_CONFIRM = 0x01;\n\nconst P2_EXTEND = 0x01;\nconst P2_MORE = 0x02;\n\nconst MAX_PAYLOAD = 255;\n\nconst LEDGER_CLA = 0xe0;\n\n/** @internal */\nexport async function getPublicKey(transport: Transport, derivationPath: Buffer): Promise {\n const bytes = await send(transport, INS_GET_PUBKEY, P1_NON_CONFIRM, derivationPath);\n return new PublicKey(bytes);\n}\n\n/** @internal */\nexport async function signTransaction(\n transport: Transport,\n transaction: Transaction | VersionedTransaction,\n derivationPath: Buffer\n): Promise {\n const paths = Buffer.alloc(1);\n paths.writeUInt8(1, 0);\n\n const message = isVersionedTransaction(transaction)\n ? transaction.message.serialize()\n : transaction.serializeMessage();\n const data = Buffer.concat([paths, derivationPath, message]);\n\n return await send(transport, INS_SIGN_MESSAGE, P1_CONFIRM, data);\n}\n\nasync function send(transport: Transport, instruction: number, p1: number, data: Buffer): Promise {\n let p2 = 0;\n let offset = 0;\n\n if (data.length > MAX_PAYLOAD) {\n while (data.length - offset > MAX_PAYLOAD) {\n const buffer = data.slice(offset, offset + MAX_PAYLOAD);\n const response = await transport.send(LEDGER_CLA, instruction, p1, p2 | P2_MORE, buffer);\n // @ts-ignore -- TransportStatusError is a constructor Function, not a Class\n if (response.length !== 2) throw new TransportStatusError(StatusCodes.INCORRECT_DATA);\n\n p2 |= P2_EXTEND;\n offset += MAX_PAYLOAD;\n }\n }\n\n const buffer = data.slice(offset);\n const response = await transport.send(LEDGER_CLA, instruction, p1, p2, buffer);\n\n return response.slice(0, response.length - 2);\n}\n","import type { WalletAdapter } from './adapter.js';\nimport type { MessageSignerWalletAdapter, SignerWalletAdapter, SignInMessageSignerWalletAdapter } from './signer.js';\nimport type { StandardWalletAdapter } from './standard.js';\n\nexport type Adapter =\n | WalletAdapter\n | SignerWalletAdapter\n | MessageSignerWalletAdapter\n | SignInMessageSignerWalletAdapter\n | StandardWalletAdapter;\n\nexport enum WalletAdapterNetwork {\n Mainnet = 'mainnet-beta',\n Testnet = 'testnet',\n Devnet = 'devnet',\n}\n","import { keccak_256 } from '@noble/hashes/sha3';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { utf8ToBytes } from '@noble/hashes/utils';\nimport { Field, mod, validateField, invert } from '@noble/curves/abstract/modular';\nimport { poseidon } from '@noble/curves/abstract/poseidon';\nimport { weierstrass, DER } from '@noble/curves/abstract/weierstrass';\nimport * as u from '@noble/curves/abstract/utils';\nimport { getHash } from '@noble/curves/_shortw_utils';\nconst CURVE_ORDER = BigInt('3618502788666131213697322783095070105526743751716087489154079457884512865583');\nexport const MAX_VALUE = BigInt('0x800000000000000000000000000000000000000000000000000000000000000');\nconst nBitLength = 252;\nfunction bits2int(bytes) {\n while (bytes[0] === 0)\n bytes = bytes.subarray(1);\n const delta = bytes.length * 8 - nBitLength;\n const num = u.bytesToNumberBE(bytes);\n return delta > 0 ? num >> BigInt(delta) : num;\n}\nfunction hex0xToBytes(hex) {\n if (typeof hex === 'string') {\n hex = strip0x(hex);\n if (hex.length & 1)\n hex = '0' + hex;\n }\n return u.hexToBytes(hex);\n}\nconst curve = weierstrass({\n a: BigInt(1),\n b: BigInt('3141592653589793238462643383279502884197169399375105820974944592307816406665'),\n Fp: Field(BigInt('0x800000000000011000000000000000000000000000000000000000000000001')),\n n: CURVE_ORDER,\n nBitLength,\n Gx: BigInt('874739451078007766457464989774322083649278607533249481151382481072868806602'),\n Gy: BigInt('152666792071518830868575557812948353041420400780739481342941381225525861407'),\n h: BigInt(1),\n lowS: false,\n ...getHash(sha256),\n bits2int,\n bits2int_modN: (bytes) => {\n const hex = u.bytesToNumberBE(bytes).toString(16);\n if (hex.length === 63)\n bytes = hex0xToBytes(hex + '0');\n return mod(bits2int(bytes), CURVE_ORDER);\n },\n});\nexport const _starkCurve = curve;\nfunction ensureBytes(hex) {\n return u.ensureBytes('', typeof hex === 'string' ? hex0xToBytes(hex) : hex);\n}\nfunction normPrivKey(privKey) {\n return u.bytesToHex(ensureBytes(privKey)).padStart(64, '0');\n}\nexport function getPublicKey(privKey, isCompressed = false) {\n return curve.getPublicKey(normPrivKey(privKey), isCompressed);\n}\nexport function getSharedSecret(privKeyA, pubKeyB) {\n return curve.getSharedSecret(normPrivKey(privKeyA), pubKeyB);\n}\nfunction checkSignature(signature) {\n const { r, s } = signature;\n if (r < 0n || r >= MAX_VALUE)\n throw new Error(`Signature.r should be [1, ${MAX_VALUE})`);\n const w = invert(s, CURVE_ORDER);\n if (w < 0n || w >= MAX_VALUE)\n throw new Error(`inv(Signature.s) should be [1, ${MAX_VALUE})`);\n}\nfunction checkMessage(msgHash) {\n const bytes = ensureBytes(msgHash);\n const num = u.bytesToNumberBE(bytes);\n if (num >= MAX_VALUE)\n throw new Error(`msgHash should be [0, ${MAX_VALUE})`);\n return bytes;\n}\nexport function sign(msgHash, privKey, opts) {\n const sig = curve.sign(checkMessage(msgHash), normPrivKey(privKey), opts);\n checkSignature(sig);\n return sig;\n}\nexport function verify(signature, msgHash, pubKey) {\n if (!(signature instanceof Signature)) {\n const bytes = ensureBytes(signature);\n try {\n signature = Signature.fromDER(bytes);\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n signature = Signature.fromCompact(bytes);\n }\n }\n checkSignature(signature);\n return curve.verify(signature, checkMessage(msgHash), ensureBytes(pubKey));\n}\nconst { CURVE, ProjectivePoint, Signature, utils } = curve;\nexport { CURVE, ProjectivePoint, Signature, utils };\nfunction extractX(bytes) {\n const hex = u.bytesToHex(bytes.subarray(1));\n const stripped = hex.replace(/^0+/gm, '');\n return `0x${stripped}`;\n}\nfunction strip0x(hex) {\n return hex.replace(/^0x/i, '');\n}\nexport function grindKey(seed) {\n const _seed = ensureBytes(seed);\n const sha256mask = 2n ** 256n;\n const limit = sha256mask - mod(sha256mask, CURVE_ORDER);\n for (let i = 0;; i++) {\n const key = sha256Num(u.concatBytes(_seed, u.numberToVarBytesBE(BigInt(i))));\n if (key < limit)\n return mod(key, CURVE_ORDER).toString(16);\n if (i === 100000)\n throw new Error('grindKey is broken: tried 100k vals');\n }\n}\nexport function getStarkKey(privateKey) {\n return extractX(getPublicKey(privateKey, true));\n}\nexport function ethSigToPrivate(signature) {\n signature = strip0x(signature);\n if (signature.length !== 130)\n throw new Error('Wrong ethereum signature');\n return grindKey(signature.substring(0, 64));\n}\nconst MASK_31 = 2n ** 31n - 1n;\nconst int31 = (n) => Number(n & MASK_31);\nexport function getAccountPath(layer, application, ethereumAddress, index) {\n const layerNum = int31(sha256Num(layer));\n const applicationNum = int31(sha256Num(application));\n const eth = u.hexToNumber(strip0x(ethereumAddress));\n return `m/2645'/${layerNum}'/${applicationNum}'/${int31(eth)}'/${int31(eth >> 31n)}'/${index}`;\n}\nconst PEDERSEN_POINTS = [\n new ProjectivePoint(2089986280348253421170679821480865132823066470938446095505822317253594081284n, 1713931329540660377023406109199410414810705867260802078187082345529207694986n, 1n),\n new ProjectivePoint(996781205833008774514500082376783249102396023663454813447423147977397232763n, 1668503676786377725805489344771023921079126552019160156920634619255970485781n, 1n),\n new ProjectivePoint(2251563274489750535117886426533222435294046428347329203627021249169616184184n, 1798716007562728905295480679789526322175868328062420237419143593021674992973n, 1n),\n new ProjectivePoint(2138414695194151160943305727036575959195309218611738193261179310511854807447n, 113410276730064486255102093846540133784865286929052426931474106396135072156n, 1n),\n new ProjectivePoint(2379962749567351885752724891227938183011949129833673362440656643086021394946n, 776496453633298175483985398648758586525933812536653089401905292063708816422n, 1n),\n];\nfunction pedersenPrecompute(p1, p2) {\n const out = [];\n let p = p1;\n for (let i = 0; i < 248; i++) {\n out.push(p);\n p = p.double();\n }\n p = p2;\n for (let i = 0; i < 4; i++) {\n out.push(p);\n p = p.double();\n }\n return out;\n}\nconst PEDERSEN_POINTS1 = pedersenPrecompute(PEDERSEN_POINTS[1], PEDERSEN_POINTS[2]);\nconst PEDERSEN_POINTS2 = pedersenPrecompute(PEDERSEN_POINTS[3], PEDERSEN_POINTS[4]);\nfunction pedersenArg(arg) {\n let value;\n if (typeof arg === 'bigint') {\n value = arg;\n }\n else if (typeof arg === 'number') {\n if (!Number.isSafeInteger(arg))\n throw new Error(`Invalid pedersenArg: ${arg}`);\n value = BigInt(arg);\n }\n else {\n value = u.bytesToNumberBE(ensureBytes(arg));\n }\n if (!(0n <= value && value < curve.CURVE.Fp.ORDER))\n throw new Error(`PedersenArg should be 0 <= value < CURVE.P: ${value}`);\n return value;\n}\nfunction pedersenSingle(point, value, constants) {\n let x = pedersenArg(value);\n for (let j = 0; j < 252; j++) {\n const pt = constants[j];\n if (pt.equals(point))\n throw new Error('Same point');\n if ((x & 1n) !== 0n)\n point = point.add(pt);\n x >>= 1n;\n }\n return point;\n}\nexport function pedersen(x, y) {\n let point = PEDERSEN_POINTS[0];\n point = pedersenSingle(point, x, PEDERSEN_POINTS1);\n point = pedersenSingle(point, y, PEDERSEN_POINTS2);\n return extractX(point.toRawBytes(true));\n}\nexport const computeHashOnElements = (data, fn = pedersen) => [0, ...data, data.length].reduce((x, y) => fn(x, y));\nconst MASK_250 = u.bitMask(250);\nexport const keccak = (data) => u.bytesToNumberBE(keccak_256(data)) & MASK_250;\nconst sha256Num = (data) => u.bytesToNumberBE(sha256(data));\nexport const Fp251 = Field(BigInt('3618502788666131213697322783095070105623107215331596699973092056135872020481'));\nfunction poseidonRoundConstant(Fp, name, idx) {\n const val = Fp.fromBytes(sha256(utf8ToBytes(`${name}${idx}`)));\n return Fp.create(val);\n}\nexport function _poseidonMDS(Fp, name, m, attempt = 0) {\n const x_values = [];\n const y_values = [];\n for (let i = 0; i < m; i++) {\n x_values.push(poseidonRoundConstant(Fp, `${name}x`, attempt * m + i));\n y_values.push(poseidonRoundConstant(Fp, `${name}y`, attempt * m + i));\n }\n if (new Set([...x_values, ...y_values]).size !== 2 * m)\n throw new Error('X and Y values are not distinct');\n return x_values.map((x) => y_values.map((y) => Fp.inv(Fp.sub(x, y))));\n}\nconst MDS_SMALL = [\n [3, 1, 1],\n [1, -1, 1],\n [1, 1, -2],\n].map((i) => i.map(BigInt));\nexport function poseidonBasic(opts, mds) {\n validateField(opts.Fp);\n if (!Number.isSafeInteger(opts.rate) || !Number.isSafeInteger(opts.capacity))\n throw new Error(`Wrong poseidon opts: ${opts}`);\n const m = opts.rate + opts.capacity;\n const rounds = opts.roundsFull + opts.roundsPartial;\n const roundConstants = [];\n for (let i = 0; i < rounds; i++) {\n const row = [];\n for (let j = 0; j < m; j++)\n row.push(poseidonRoundConstant(opts.Fp, 'Hades', m * i + j));\n roundConstants.push(row);\n }\n const res = poseidon({\n ...opts,\n t: m,\n sboxPower: 3,\n reversePartialPowIdx: true,\n mds,\n roundConstants,\n });\n res.m = m;\n res.rate = opts.rate;\n res.capacity = opts.capacity;\n return res;\n}\nexport function poseidonCreate(opts, mdsAttempt = 0) {\n const m = opts.rate + opts.capacity;\n if (!Number.isSafeInteger(mdsAttempt))\n throw new Error(`Wrong mdsAttempt=${mdsAttempt}`);\n return poseidonBasic(opts, _poseidonMDS(opts.Fp, 'HadesMDS', m, mdsAttempt));\n}\nexport const poseidonSmall = poseidonBasic({ Fp: Fp251, rate: 2, capacity: 1, roundsFull: 8, roundsPartial: 83 }, MDS_SMALL);\nexport function poseidonHash(x, y, fn = poseidonSmall) {\n return fn([x, y, 2n])[0];\n}\nexport function poseidonHashFunc(x, y, fn = poseidonSmall) {\n return u.numberToVarBytesBE(poseidonHash(u.bytesToNumberBE(x), u.bytesToNumberBE(y), fn));\n}\nexport function poseidonHashSingle(x, fn = poseidonSmall) {\n return fn([x, 0n, 1n])[0];\n}\nexport function poseidonHashMany(values, fn = poseidonSmall) {\n const { m, rate } = fn;\n if (!Array.isArray(values))\n throw new Error('bigint array expected in values');\n const padded = Array.from(values);\n padded.push(1n);\n while (padded.length % rate !== 0)\n padded.push(0n);\n let state = new Array(m).fill(0n);\n for (let i = 0; i < padded.length; i += rate) {\n for (let j = 0; j < rate; j++)\n state[j] += padded[i + j];\n state = fn(state);\n }\n return state[0];\n}\n","/**\n * Test whether a string contains an integer number\n */\nexport function isInteger(value: string): boolean {\n return INTEGER_REGEX.test(value)\n}\n\nconst INTEGER_REGEX = /^-?[0-9]+$/\n\n/**\n * Test whether a string contains a number\n * http://stackoverflow.com/questions/13340717/json-numbers-regular-expression\n */\nexport function isNumber(value: string): boolean {\n return NUMBER_REGEX.test(value)\n}\n\nconst NUMBER_REGEX = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$/\n\n/**\n * Test whether a string can be safely represented with a number\n * without information loss.\n *\n * When approx is true, floating point numbers that lose a few digits but\n * are still approximately equal in value are considered safe too.\n * Integer numbers must still be exactly equal.\n */\nexport function isSafeNumber(\n value: string,\n config?: {\n approx: boolean\n }\n): boolean {\n const num = Number.parseFloat(value)\n const str = String(num)\n\n const v = extractSignificantDigits(value)\n const s = extractSignificantDigits(str)\n\n if (v === s) {\n return true\n }\n\n if (config?.approx === true) {\n // A value is approximately equal when:\n // 1. it is a floating point number, not an integer\n // 2. it has at least 14 digits\n // 3. the first 14 digits are equal\n const requiredDigits = 14\n if (\n !isInteger(value) &&\n s.length >= requiredDigits &&\n v.startsWith(s.substring(0, requiredDigits))\n ) {\n return true\n }\n }\n\n return false\n}\n\nexport enum UnsafeNumberReason {\n underflow = 'underflow',\n overflow = 'overflow',\n truncate_integer = 'truncate_integer',\n truncate_float = 'truncate_float'\n}\n\n/**\n * When the provided value is an unsafe number, describe what the reason is:\n * overflow, underflow, truncate_integer, or truncate_float.\n * Returns undefined when the value is safe.\n */\nexport function getUnsafeNumberReason(value: string): UnsafeNumberReason | undefined {\n if (isSafeNumber(value, { approx: false })) {\n return undefined\n }\n\n if (isInteger(value)) {\n return UnsafeNumberReason.truncate_integer\n }\n\n const num = Number.parseFloat(value)\n if (!Number.isFinite(num)) {\n return UnsafeNumberReason.overflow\n }\n\n if (num === 0) {\n return UnsafeNumberReason.underflow\n }\n\n return UnsafeNumberReason.truncate_float\n}\n\n/**\n * Convert a string into a number when it is safe to do so.\n * Throws an error otherwise, explaining the reason.\n */\nexport function toSafeNumberOrThrow(\n value: string,\n config?: {\n approx: boolean\n }\n): number {\n const number = Number.parseFloat(value)\n\n const unsafeReason = getUnsafeNumberReason(value)\n if (\n config?.approx === true\n ? unsafeReason && unsafeReason !== UnsafeNumberReason.truncate_float\n : unsafeReason\n ) {\n const unsafeReasonText = unsafeReason?.replace(/_\\w+$/, '')\n throw new Error(\n `Cannot safely convert to number: the value '${value}' would ${unsafeReasonText} and become ${number}`\n )\n }\n\n return number\n}\n\n/**\n * Get the significant digits of a number.\n *\n * For example:\n * '2.34' returns '234'\n * '-77' returns '77'\n * '0.003400' returns '34'\n * '120.5e+30' returns '1205'\n **/\nexport function extractSignificantDigits(value: string): string {\n return (\n value\n // from \"-0.250e+30\" to \"-0.250\"\n .replace(EXPONENTIAL_PART_REGEX, '')\n\n // from \"-0.250\" to \"-0250\"\n .replace(DOT_REGEX, '')\n\n // from \"-0250\" to \"-025\"\n .replace(TRAILING_ZEROS_REGEX, '')\n\n // from \"-025\" to \"25\"\n .replace(LEADING_MINUS_AND_ZEROS_REGEX, '')\n )\n}\n\nconst EXPONENTIAL_PART_REGEX = /[eE][+-]?\\d+$/\nconst LEADING_MINUS_AND_ZEROS_REGEX = /^-?(0*)?/\nconst DOT_REGEX = /\\./\nconst TRAILING_ZEROS_REGEX = /0+$/\n","import {\n UnsafeNumberReason,\n extractSignificantDigits,\n getUnsafeNumberReason,\n isInteger,\n isNumber\n} from './utils.js'\n\n/**\n * A lossless number. Stores its numeric value as string\n */\nexport class LosslessNumber {\n // numeric value as string\n value: string\n\n // type information\n isLosslessNumber = true\n\n constructor(value: string) {\n if (!isNumber(value)) {\n throw new Error(`Invalid number (value: \"${value}\")`)\n }\n\n this.value = value\n }\n\n /**\n * Get the value of the LosslessNumber as number or bigint.\n *\n * - a number is returned for safe numbers and decimal values that only lose some insignificant digits\n * - a bigint is returned for big integer numbers\n * - an Error is thrown for values that will overflow or underflow\n *\n * Note that you can implement your own strategy for conversion by just getting the value as string\n * via .toString(), and using util functions like isInteger, isSafeNumber, getUnsafeNumberReason,\n * and toSafeNumberOrThrow to convert it to a numeric value.\n */\n valueOf(): number | bigint {\n const unsafeReason = getUnsafeNumberReason(this.value)\n\n // safe or truncate_float\n if (unsafeReason === undefined || unsafeReason === UnsafeNumberReason.truncate_float) {\n return Number.parseFloat(this.value)\n }\n\n // truncate_integer\n if (isInteger(this.value)) {\n return BigInt(this.value)\n }\n\n // overflow or underflow\n throw new Error(\n `Cannot safely convert to number: the value '${this.value}' would ${unsafeReason} and become ${Number.parseFloat(this.value)}`\n )\n }\n\n /**\n * Get the value of the LosslessNumber as string.\n */\n toString(): string {\n return this.value\n }\n\n // Note: we do NOT implement a .toJSON() method, and you should not implement\n // or use that, it cannot safely turn the numeric value in the string into\n // stringified JSON since it has to be parsed into a number first.\n}\n\n/**\n * Test whether a value is a LosslessNumber\n */\nexport function isLosslessNumber(value: unknown): value is LosslessNumber {\n // @ts-ignore\n return (value && typeof value === 'object' && value.isLosslessNumber === true) || false\n}\n\n/**\n * Convert a number into a LosslessNumber if this is possible in a safe way\n * If the value has too many digits, or is NaN or Infinity, an error will be thrown\n */\nexport function toLosslessNumber(value: number): LosslessNumber {\n if (extractSignificantDigits(String(value)).length > 15) {\n throw new Error(\n `Invalid number: contains more than 15 digits and is most likely truncated and unsafe by itself (value: ${value})`\n )\n }\n\n if (Number.isNaN(value)) {\n throw new Error('Invalid number: NaN')\n }\n\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid number: ${value}`)\n }\n\n return new LosslessNumber(String(value))\n}\n","import { LosslessNumber } from './LosslessNumber.js'\nimport { isInteger } from './utils.js'\n\nexport function parseLosslessNumber(value: string): LosslessNumber {\n return new LosslessNumber(value)\n}\n\nexport function parseNumberAndBigInt(value: string): number | bigint {\n return isInteger(value) ? BigInt(value) : Number.parseFloat(value)\n}\n","import { isLosslessNumber } from './LosslessNumber.js'\nimport type { GenericObject, Reviver } from './types'\n\n/**\n * Revive a json object.\n * Applies the reviver function recursively on all values in the JSON object.\n * @param json A JSON Object, Array, or value\n * @param reviver\n * A reviver function invoked with arguments `key` and `value`,\n * which must return a replacement value. The function context\n * (`this`) is the Object or Array that contains the currently\n * handled value.\n */\nexport function revive(json: unknown, reviver: Reviver): unknown {\n return reviveValue({ '': json }, '', json, reviver)\n}\n\n/**\n * Revive a value\n */\nfunction reviveValue(\n context: GenericObject | Array,\n key: string,\n value: unknown,\n reviver: Reviver\n): unknown {\n if (Array.isArray(value)) {\n return reviver.call(context, key, reviveArray(value, reviver))\n }\n\n if (value && typeof value === 'object' && !isLosslessNumber(value)) {\n // note the special case for LosslessNumber,\n // we don't want to iterate over the internals of a LosslessNumber\n return reviver.call(context, key, reviveObject(value as GenericObject, reviver))\n }\n\n return reviver.call(context, key, value)\n}\n\n/**\n * Revive the properties of an object\n */\nfunction reviveObject(object: GenericObject, reviver: Reviver) {\n for (const key of Object.keys(object)) {\n const value = reviveValue(object, key, object[key], reviver)\n if (value !== undefined) {\n object[key] = value\n } else {\n delete object[key]\n }\n }\n\n return object\n}\n\n/**\n * Revive the properties of an Array\n */\nfunction reviveArray(array: Array, reviver: Reviver): Array {\n for (let i = 0; i < array.length; i++) {\n array[i] = reviveValue(array, String(i), array[i], reviver)\n }\n\n return array\n}\n","import { parseLosslessNumber } from './numberParsers.js'\nimport { revive } from './revive.js'\nimport type { NumberParser, Reviver } from './types'\nimport type { GenericObject } from './types'\n\n/**\n * The LosslessJSON.parse() method parses a string as JSON, optionally transforming\n * the value produced by parsing.\n *\n * The parser is based on the parser of Tan Li Hou shared in\n * https://lihautan.com/json-parser-with-javascript/\n *\n * @param text\n * The string to parse as JSON. See the JSON object for a description of JSON syntax.\n *\n * @param [reviver]\n * If a function, prescribes how the value originally produced by parsing is\n * transformed, before being returned.\n *\n * @param [parseNumber=parseLosslessNumber]\n * Pass a custom number parser. Input is a string, and the output can be unknown\n * numeric value: number, bigint, LosslessNumber, or a custom BigNumber library.\n *\n * @returns Returns the Object corresponding to the given JSON text.\n *\n * @throws Throws a SyntaxError exception if the string to parse is not valid JSON.\n */\nexport function parse(\n text: string,\n reviver?: Reviver | null,\n parseNumber: NumberParser = parseLosslessNumber\n): unknown {\n let i = 0\n const value = parseValue()\n expectValue(value)\n expectEndOfInput()\n\n return reviver ? revive(value, reviver) : value\n\n function parseObject(): GenericObject | undefined {\n if (text.charCodeAt(i) === codeOpeningBrace) {\n i++\n skipWhitespace()\n\n const object: GenericObject = {}\n let initial = true\n while (i < text.length && text.charCodeAt(i) !== codeClosingBrace) {\n if (!initial) {\n eatComma()\n skipWhitespace()\n } else {\n initial = false\n }\n\n const start = i\n\n const key = parseString()\n if (key === undefined) {\n throwObjectKeyExpected()\n return // To make TS happy\n }\n\n skipWhitespace()\n eatColon()\n const value = parseValue()\n\n if (value === undefined) {\n throwObjectValueExpected()\n return // To make TS happy\n }\n\n // TODO: test deep equal instead of strict equal\n if (Object.prototype.hasOwnProperty.call(object, key) && !isDeepEqual(value, object[key])) {\n // Note that we could also test `if(key in object) {...}`\n // or `if (object[key] !== 'undefined') {...}`, but that is slower.\n throwDuplicateKey(key, start + 1)\n }\n\n object[key] = value\n }\n\n if (text.charCodeAt(i) !== codeClosingBrace) {\n throwObjectKeyOrEndExpected()\n }\n i++\n\n return object\n }\n }\n\n function parseArray(): Array | unknown {\n if (text.charCodeAt(i) === codeOpeningBracket) {\n i++\n skipWhitespace()\n\n const array = []\n let initial = true\n while (i < text.length && text.charCodeAt(i) !== codeClosingBracket) {\n if (!initial) {\n eatComma()\n } else {\n initial = false\n }\n\n const value = parseValue()\n expectArrayItem(value)\n array.push(value)\n }\n\n if (text.charCodeAt(i) !== codeClosingBracket) {\n throwArrayItemOrEndExpected()\n }\n i++\n\n return array\n }\n }\n\n function parseValue(): unknown {\n skipWhitespace()\n\n const value =\n parseString() ??\n parseNumeric() ??\n parseObject() ??\n parseArray() ??\n parseKeyword('true', true) ??\n parseKeyword('false', false) ??\n parseKeyword('null', null)\n\n skipWhitespace()\n\n return value\n }\n\n function parseKeyword(name: string, value: unknown): unknown | undefined {\n if (text.slice(i, i + name.length) === name) {\n i += name.length\n return value\n }\n }\n\n function skipWhitespace() {\n while (isWhitespace(text.charCodeAt(i))) {\n i++\n }\n }\n\n function parseString() {\n if (text.charCodeAt(i) === codeDoubleQuote) {\n i++\n let result = ''\n while (i < text.length && text.charCodeAt(i) !== codeDoubleQuote) {\n if (text.charCodeAt(i) === codeBackslash) {\n const char = text[i + 1]\n const escapeChar = escapeCharacters[char]\n if (escapeChar !== undefined) {\n result += escapeChar\n i++\n } else if (char === 'u') {\n if (\n isHex(text.charCodeAt(i + 2)) &&\n isHex(text.charCodeAt(i + 3)) &&\n isHex(text.charCodeAt(i + 4)) &&\n isHex(text.charCodeAt(i + 5))\n ) {\n result += String.fromCharCode(Number.parseInt(text.slice(i + 2, i + 6), 16))\n i += 5\n } else {\n throwInvalidUnicodeCharacter(i)\n }\n } else {\n throwInvalidEscapeCharacter(i)\n }\n } else {\n if (isValidStringCharacter(text.charCodeAt(i))) {\n result += text[i]\n } else {\n throwInvalidCharacter(text[i])\n }\n }\n i++\n }\n expectEndOfString()\n i++\n return result\n }\n }\n\n function parseNumeric() {\n const start = i\n if (text.charCodeAt(i) === codeMinus) {\n i++\n expectDigit(start)\n }\n\n if (text.charCodeAt(i) === codeZero) {\n i++\n } else if (isNonZeroDigit(text.charCodeAt(i))) {\n i++\n while (isDigit(text.charCodeAt(i))) {\n i++\n }\n }\n\n if (text.charCodeAt(i) === codeDot) {\n i++\n expectDigit(start)\n while (isDigit(text.charCodeAt(i))) {\n i++\n }\n }\n\n if (text.charCodeAt(i) === codeLowercaseE || text.charCodeAt(i) === codeUppercaseE) {\n i++\n if (text.charCodeAt(i) === codeMinus || text.charCodeAt(i) === codePlus) {\n i++\n }\n expectDigit(start)\n while (isDigit(text.charCodeAt(i))) {\n i++\n }\n }\n\n if (i > start) {\n return parseNumber(text.slice(start, i))\n }\n }\n\n function eatComma() {\n if (text.charCodeAt(i) !== codeComma) {\n throw new SyntaxError(`Comma ',' expected after value ${gotAt()}`)\n }\n i++\n }\n\n function eatColon() {\n if (text.charCodeAt(i) !== codeColon) {\n throw new SyntaxError(`Colon ':' expected after property name ${gotAt()}`)\n }\n i++\n }\n\n function expectValue(value: unknown) {\n if (value === undefined) {\n throw new SyntaxError(`JSON value expected ${gotAt()}`)\n }\n }\n\n function expectArrayItem(value: unknown) {\n if (value === undefined) {\n throw new SyntaxError(`Array item expected ${gotAt()}`)\n }\n }\n\n function expectEndOfInput() {\n if (i < text.length) {\n throw new SyntaxError(`Expected end of input ${gotAt()}`)\n }\n }\n\n function expectDigit(start: number) {\n if (!isDigit(text.charCodeAt(i))) {\n const numSoFar = text.slice(start, i)\n throw new SyntaxError(`Invalid number '${numSoFar}', expecting a digit ${gotAt()}`)\n }\n }\n\n function expectEndOfString() {\n if (text.charCodeAt(i) !== codeDoubleQuote) {\n throw new SyntaxError(`End of string '\"' expected ${gotAt()}`)\n }\n }\n\n function throwObjectKeyExpected() {\n throw new SyntaxError(`Quoted object key expected ${gotAt()}`)\n }\n\n function throwDuplicateKey(key: string, pos: number) {\n throw new SyntaxError(`Duplicate key '${key}' encountered at position ${pos}`)\n }\n\n function throwObjectKeyOrEndExpected() {\n throw new SyntaxError(`Quoted object key or end of object '}' expected ${gotAt()}`)\n }\n\n function throwArrayItemOrEndExpected() {\n throw new SyntaxError(`Array item or end of array ']' expected ${gotAt()}`)\n }\n\n function throwInvalidCharacter(char: string) {\n throw new SyntaxError(`Invalid character '${char}' ${pos()}`)\n }\n\n function throwInvalidEscapeCharacter(start: number) {\n const chars = text.slice(start, start + 2)\n throw new SyntaxError(`Invalid escape character '${chars}' ${pos()}`)\n }\n\n function throwObjectValueExpected() {\n throw new SyntaxError(`Object value expected after ':' ${pos()}`)\n }\n\n function throwInvalidUnicodeCharacter(start: number) {\n const chars = text.slice(start, start + 6)\n throw new SyntaxError(`Invalid unicode character '${chars}' ${pos()}`)\n }\n\n // zero based character position\n function pos(): string {\n return `at position ${i}`\n }\n\n function got(): string {\n return i < text.length ? `but got '${text[i]}'` : 'but reached end of input'\n }\n\n function gotAt(): string {\n return `${got()} ${pos()}`\n }\n}\n\nfunction isWhitespace(code: number): boolean {\n return code === codeSpace || code === codeNewline || code === codeTab || code === codeReturn\n}\n\nfunction isHex(code: number): boolean {\n return (\n (code >= codeZero && code <= codeNine) ||\n (code >= codeUppercaseA && code <= codeUppercaseF) ||\n (code >= codeLowercaseA && code <= codeLowercaseF)\n )\n}\n\nfunction isDigit(code: number): boolean {\n return code >= codeZero && code <= codeNine\n}\n\nfunction isNonZeroDigit(code: number): boolean {\n return code >= codeOne && code <= codeNine\n}\n\nexport function isValidStringCharacter(code: number): boolean {\n return code >= 0x20 && code <= 0x10ffff\n}\n\nexport function isDeepEqual(a: unknown, b: unknown): boolean {\n if (a === b) {\n return true\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((item, index) => isDeepEqual(item, b[index]))\n }\n\n if (isObject(a) && isObject(b)) {\n const keys = [...new Set([...Object.keys(a), ...Object.keys(b)])]\n return keys.every((key) => isDeepEqual(a[key], b[key]))\n }\n\n return false\n}\n\nfunction isObject(value: unknown): value is Record {\n return typeof value === 'object' && value !== null\n}\n\n// map with all escape characters\nconst escapeCharacters: GenericObject = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n // note that \\u is handled separately in parseString()\n}\n\nconst codeBackslash = 0x5c // \"\\\"\nconst codeOpeningBrace = 0x7b // \"{\"\nconst codeClosingBrace = 0x7d // \"}\"\nconst codeOpeningBracket = 0x5b // \"[\"\nconst codeClosingBracket = 0x5d // \"]\"\nconst codeSpace = 0x20 // \" \"\nconst codeNewline = 0xa // \"\\n\"\nconst codeTab = 0x9 // \"\\t\"\nconst codeReturn = 0xd // \"\\r\"\nconst codeDoubleQuote = 0x0022 // \"\nconst codePlus = 0x2b // \"+\"\nconst codeMinus = 0x2d // \"-\"\nconst codeZero = 0x30\nconst codeOne = 0x31\nconst codeNine = 0x39\nconst codeComma = 0x2c // \",\"\nconst codeDot = 0x2e // \".\" (dot, period)\nconst codeColon = 0x3a // \":\"\nexport const codeUppercaseA = 0x41 // \"A\"\nexport const codeLowercaseA = 0x61 // \"a\"\nexport const codeUppercaseE = 0x45 // \"E\"\nexport const codeLowercaseE = 0x65 // \"e\"\nexport const codeUppercaseF = 0x46 // \"F\"\nexport const codeLowercaseF = 0x66 // \"f\"\n","import type { GenericObject, NumberStringifier, Replacer } from './types'\nimport { isNumber } from './utils.js'\n\n/**\n * The LosslessJSON.stringify() method converts a JavaScript value to a JSON string,\n * optionally replacing values if a replacer function is specified, or\n * optionally including only the specified properties if a replacer array is specified.\n *\n * @param value\n * The value to convert to a JSON string.\n *\n * @param [replacer]\n * A function that alters the behavior of the stringification process,\n * or an array of String and Number objects that serve as a whitelist for\n * selecting the properties of the value object to be included in the JSON string.\n * If this value is null or not provided, all properties of the object are\n * included in the resulting JSON string.\n *\n * @param [space]\n * A String or Number object that's used to insert white space into the output\n * JSON string for readability purposes. If this is a Number, it indicates the\n * number of space characters to use as white space; this number is capped at 10\n * if it's larger than that. Values less than 1 indicate that no space should be\n * used. If this is a String, the string (or the first 10 characters of the string,\n * if it's longer than that) is used as white space. If this parameter is not\n * provided (or is null), no white space is used.\n *\n * @param [numberStringifiers]\n * An optional list with additional number stringifiers, for example to serialize\n * a BigNumber. The output of the function must be valid stringified JSON.\n * When `undefined` is returned, the property will be deleted from the object.\n * The difference with using a `replacer` is that the output of a `replacer`\n * must be JSON and will be stringified afterwards, whereas the output of the\n * `numberStringifiers` is already stringified JSON.\n *\n * @returns Returns the string representation of the JSON object.\n */\nexport function stringify(\n value: unknown,\n replacer?: Replacer | null,\n space?: number | string,\n numberStringifiers?: NumberStringifier[]\n): string | undefined {\n const resolvedSpace = resolveSpace(space)\n\n const replacedValue =\n typeof replacer === 'function' ? replacer.call({ '': value }, '', value) : value\n\n return stringifyValue(replacedValue, '')\n\n /**\n * Stringify a value\n */\n function stringifyValue(value: unknown, indent: string | undefined): string | undefined {\n if (Array.isArray(numberStringifiers)) {\n const stringifier = numberStringifiers.find((item) => item.test(value))\n if (stringifier) {\n const str: unknown = stringifier.stringify(value)\n if (typeof str !== 'string' || !isNumber(str)) {\n throw new Error(\n `Invalid JSON number: output of a number stringifier must be a string containing a JSON number (output: ${str})`\n )\n }\n return str\n }\n }\n\n // boolean, null, number, string, or date\n if (\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string' ||\n value === null ||\n value instanceof Date ||\n value instanceof Boolean ||\n value instanceof Number ||\n value instanceof String\n ) {\n return JSON.stringify(value)\n }\n\n // lossless number, the secret ingredient :)\n // @ts-ignore\n if (value?.isLosslessNumber) {\n return value.toString()\n }\n\n // BigInt\n if (typeof value === 'bigint') {\n return value.toString()\n }\n\n // Array\n if (Array.isArray(value)) {\n return stringifyArray(value, indent)\n }\n\n // Object (test lastly!)\n if (value && typeof value === 'object') {\n return stringifyObject(value as GenericObject, indent)\n }\n\n return undefined\n }\n\n /**\n * Stringify an array\n */\n function stringifyArray(array: Array, indent: string | undefined): string {\n if (array.length === 0) {\n return '[]'\n }\n\n const childIndent = resolvedSpace ? indent + resolvedSpace : undefined\n let str = resolvedSpace ? '[\\n' : '['\n\n for (let i = 0; i < array.length; i++) {\n const item =\n typeof replacer === 'function' ? replacer.call(array, String(i), array[i]) : array[i]\n\n if (resolvedSpace) {\n str += childIndent\n }\n\n if (typeof item !== 'undefined' && typeof item !== 'function') {\n str += stringifyValue(item, childIndent)\n } else {\n str += 'null'\n }\n\n if (i < array.length - 1) {\n str += resolvedSpace ? ',\\n' : ','\n }\n }\n\n str += resolvedSpace ? `\\n${indent}]` : ']'\n return str\n }\n\n /**\n * Stringify an object\n */\n function stringifyObject(\n object: GenericObject,\n indent: string | undefined\n ): string | undefined {\n if (typeof object.toJSON === 'function') {\n return stringify(object.toJSON(), replacer, space, undefined)\n }\n\n const keys: string[] = Array.isArray(replacer) ? replacer.map(String) : Object.keys(object)\n\n if (keys.length === 0) {\n return '{}'\n }\n\n const childIndent = resolvedSpace ? indent + resolvedSpace : undefined\n let first = true\n let str = resolvedSpace ? '{\\n' : '{'\n\n for (const key of keys) {\n const value =\n typeof replacer === 'function' ? replacer.call(object, key, object[key]) : object[key]\n\n if (includeProperty(key, value)) {\n if (first) {\n first = false\n } else {\n str += resolvedSpace ? ',\\n' : ','\n }\n\n const keyStr = JSON.stringify(key)\n str += resolvedSpace ? `${childIndent + keyStr}: ` : `${keyStr}:`\n\n str += stringifyValue(value, childIndent)\n }\n }\n\n str += resolvedSpace ? `\\n${indent}}` : '}'\n return str\n }\n\n /**\n * Test whether to include a property in a stringified object or not.\n */\n function includeProperty(_key: string, value: unknown): boolean {\n return typeof value !== 'undefined' && typeof value !== 'function' && typeof value !== 'symbol'\n }\n}\n\n/**\n * Resolve a JSON stringify space:\n * replace a number with a string containing that number of spaces\n */\nfunction resolveSpace(space: number | string | undefined): string | undefined {\n if (typeof space === 'number') {\n return ' '.repeat(space)\n }\n\n if (typeof space === 'string' && space !== '') {\n return space\n }\n\n return undefined\n}\n","import * as tough from \"tough-cookie\";\nimport { splitCookiesString } from \"set-cookie-parser\";\nfunction isDomainOrSubdomain(destination, original) {\n const orig = new URL(original).hostname;\n const dest = new URL(destination).hostname;\n return orig === dest || orig.endsWith(`.${dest}`);\n}\nconst referrerPolicy = /* @__PURE__ */ new Set([\n \"\",\n \"no-referrer\",\n \"no-referrer-when-downgrade\",\n \"same-origin\",\n \"origin\",\n \"strict-origin\",\n \"origin-when-cross-origin\",\n \"strict-origin-when-cross-origin\",\n \"unsafe-url\"\n]);\nfunction parseReferrerPolicy(policyHeader) {\n const policyTokens = policyHeader.split(/[,\\s]+/);\n let policy = \"\";\n for (const token of policyTokens) {\n if (token !== \"\" && referrerPolicy.has(token)) {\n policy = token;\n }\n }\n return policy;\n}\nfunction doNothing(init, name) {\n}\nfunction callDeleteMethod(init, name) {\n init.headers.delete(name);\n}\nfunction deleteFromObject(init, name) {\n const headers = init.headers;\n for (const key of Object.keys(headers)) {\n if (key.toLowerCase() === name) {\n delete headers[key];\n }\n }\n}\nfunction identifyDeleteHeader(init) {\n if (init.headers == null) {\n return doNothing;\n }\n if (typeof init.headers.delete === \"function\") {\n return callDeleteMethod;\n }\n return deleteFromObject;\n}\nconst redirectStatus = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);\nfunction isRedirect(status) {\n return redirectStatus.has(status);\n}\nasync function handleRedirect(fetchImpl, init, response) {\n switch (init.redirect ?? \"follow\") {\n case \"error\":\n throw new TypeError(`URI requested responded with a redirect and redirect mode is set to error: ${response.url}`);\n case \"manual\":\n return response;\n case \"follow\":\n break;\n default:\n throw new TypeError(`Invalid redirect option: ${init.redirect}`);\n }\n const locationUrl = response.headers.get(\"location\");\n if (locationUrl === null) {\n return response;\n }\n const requestUrl = response.url;\n const redirectUrl = new URL(locationUrl, requestUrl).toString();\n const redirectCount = init.redirectCount ?? 0;\n const maxRedirect = init.maxRedirect ?? 20;\n if (redirectCount >= maxRedirect) {\n throw new TypeError(`Reached maximum redirect of ${maxRedirect} for URL: ${requestUrl}`);\n }\n init = {\n ...init,\n redirectCount: redirectCount + 1\n };\n const deleteHeader = identifyDeleteHeader(init);\n if (!isDomainOrSubdomain(requestUrl, redirectUrl)) {\n for (const name of [\"authorization\", \"www-authenticate\", \"cookie\", \"cookie2\"]) {\n deleteHeader(init, name);\n }\n }\n const maybeNodeStreamBody = init.body;\n const maybeStreamBody = init.body;\n if (response.status !== 303 && init.body != null && (typeof maybeNodeStreamBody.pipe === \"function\" || typeof maybeStreamBody.pipeTo === \"function\")) {\n throw new TypeError(\"Cannot follow redirect with body being a readable stream\");\n }\n if (response.status === 303 || (response.status === 301 || response.status === 302) && init.method === \"POST\") {\n init.method = \"GET\";\n init.body = void 0;\n deleteHeader(init, \"content-length\");\n }\n if (response.headers.has(\"referrer-policy\")) {\n init.referrerPolicy = parseReferrerPolicy(response.headers.get(\"referrer-policy\"));\n }\n deleteHeader(init, \"host\");\n return await fetchImpl(redirectUrl, init);\n}\nfunction addCookiesToRequest(input, init, cookie) {\n if (cookie === \"\") {\n return init;\n }\n const maybeRequest = input;\n const maybeHeaders = init.headers;\n if (maybeRequest.headers && typeof maybeRequest.headers.append === \"function\") {\n maybeRequest.headers.append(\"cookie\", cookie);\n } else if (maybeHeaders && typeof maybeHeaders.append === \"function\") {\n maybeHeaders.append(\"cookie\", cookie);\n } else if (Array.isArray(init.headers)) {\n const headers = [...init.headers];\n const cookieHeaderIndex = headers.findIndex((header) => header[0].toLowerCase() === \"cookie\");\n if (cookieHeaderIndex === -1) {\n headers.push([\"cookie\", cookie]);\n } else {\n headers[cookieHeaderIndex] = [\"cookie\", cookie];\n }\n init = { ...init, headers };\n } else {\n init = { ...init, headers: { ...init.headers, cookie } };\n }\n return init;\n}\nfunction getCookiesFromResponse(response) {\n const maybeNodeFetchHeaders = response.headers;\n if (typeof maybeNodeFetchHeaders.getAll === \"function\") {\n return maybeNodeFetchHeaders.getAll(\"set-cookie\");\n }\n if (typeof maybeNodeFetchHeaders.raw === \"function\") {\n const headers = maybeNodeFetchHeaders.raw();\n if (Array.isArray(headers[\"set-cookie\"])) {\n return headers[\"set-cookie\"];\n }\n return [];\n }\n const cookieString = response.headers.get(\"set-cookie\");\n if (cookieString !== null) {\n return splitCookiesString(cookieString);\n }\n return [];\n}\nfunction fetchCookie(fetch, jar, ignoreError = true) {\n const actualFetch = fetch;\n const actualJar = jar ?? new tough.CookieJar();\n async function fetchCookieWrapper(input, init) {\n const originalInit = init ?? {};\n init = { ...init, redirect: \"manual\" };\n const requestUrl = typeof input === \"string\" ? input : \"href\" in input ? input.href : input.url;\n const cookie = await actualJar.getCookieString(requestUrl);\n init = addCookiesToRequest(input, init, cookie);\n const response = await actualFetch(input, init);\n const cookies = getCookiesFromResponse(response);\n await Promise.all(cookies.map(async (cookie2) => await actualJar.setCookie(cookie2, response.url, { ignoreError })));\n if ((init.redirectCount ?? 0) > 0) {\n Object.defineProperty(response, \"redirected\", { value: true });\n }\n if (!isRedirect(response.status)) {\n return response;\n }\n return await handleRedirect(fetchCookieWrapper, originalInit, response);\n }\n fetchCookieWrapper.toughCookie = tough;\n fetchCookieWrapper.cookieJar = actualJar;\n return fetchCookieWrapper;\n}\nfetchCookie.toughCookie = tough;\nexport {\n fetchCookie as default\n};\n","import BigNumber from \"bignumber.js\";\r\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\r\nimport { constants, RpcProvider } from \"starknet\";\r\nimport { BitcoinNetwork, MempoolApi, SwapperFactory } from \"@atomiqlabs/sdk\";\r\nimport { SolanaInitializer } from \"@atomiqlabs/chain-solana\";\r\nimport { StarknetInitializer } from \"@atomiqlabs/chain-starknet\";\r\nconst solanaRpcUrl = process.env.REACT_APP_SOLANA_RPC_URL;\r\nconst solanaChain = process.env.REACT_APP_SOLANA_NETWORK; //DEVNET or MAINNET\r\nconst btcBlockExplorer = process.env.REACT_APP_BTC_BLOCK_EXPLORER;\r\nconst solBlockExplorer = process.env.REACT_APP_SOL_BLOCK_EXPLORER;\r\nconst statsUrl = process.env.REACT_APP_STATS_URL;\r\nconst dappUrl = process.env.REACT_APP_DAPP_URL;\r\nconst affiliateUrl = process.env.REACT_APP_AFFILIATE_URL;\r\nconst starknetRpcUrl = process.env.REACT_APP_STARKNET_RPC_URL;\r\nconst starknetChain = process.env.REACT_APP_STARKNET_NETWORK; //SEPOLIA or MAIN\r\nconst starknetBlockExplorer = process.env.REACT_APP_STARKNET_BLOCK_EXPLORER;\r\nconst bitcoinNetwork = process.env.REACT_APP_BITCOIN_NETWORK; //SEPOLIA or MAIN\r\nconst mempoolApi = new MempoolApi(bitcoinNetwork === \"MAINNET\" ?\r\n [\r\n \"https://mempool.space/api/\",\r\n \"https://mempool.fra.mempool.space/api/\",\r\n \"https://mempool.va1.mempool.space/api/\",\r\n \"https://mempool.tk7.mempool.space/api/\"\r\n ] :\r\n [\r\n \"https://mempool.space/testnet/api/\",\r\n \"https://mempool.fra.mempool.space/testnet/api/\",\r\n \"https://mempool.va1.mempool.space/testnet/api/\",\r\n \"https://mempool.tk7.mempool.space/testnet/api/\"\r\n ]);\r\nexport const Factory = new SwapperFactory([SolanaInitializer, StarknetInitializer]);\r\nconsole.log(\"Factory: \", Factory);\r\nexport const Tokens = Factory.Tokens;\r\nexport const TokenResolver = Factory.TokenResolver;\r\nexport const FEConstants = {\r\n btcBlockExplorer,\r\n blockExplorers: {\r\n SOLANA: solBlockExplorer,\r\n STARKNET: starknetBlockExplorer\r\n },\r\n scBalances: {\r\n SOLANA: {\r\n optimal: {\r\n \"So11111111111111111111111111111111111111112\": 4000000n\r\n }\r\n },\r\n STARKNET: {\r\n optimal: {\r\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\": 150000000000000n,\r\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\": 1000000000000000000n\r\n }\r\n }\r\n },\r\n mempoolApi,\r\n allowedChains: new Set([\r\n solanaRpcUrl != null ? \"SOLANA\" : undefined,\r\n starknetRpcUrl != null ? \"STARKNET\" : undefined\r\n ]),\r\n statsUrl,\r\n solanaChain: solanaChain === \"MAINNET\" ? WalletAdapterNetwork.Mainnet : WalletAdapterNetwork.Devnet,\r\n solanaRpcUrl,\r\n starknetChainId: starknetChain == null ? null : (starknetChain === \"MAIN\" ? constants.StarknetChainId.SN_MAIN : constants.StarknetChainId.SN_SEPOLIA),\r\n starknetRpc: starknetRpcUrl == null ? null : new RpcProvider({ nodeUrl: starknetRpcUrl }),\r\n bitcoinNetwork: bitcoinNetwork === \"TESTNET\" ? BitcoinNetwork.TESTNET : BitcoinNetwork.MAINNET,\r\n url: null,\r\n satsPerBitcoin: new BigNumber(100000000),\r\n USDollar: new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n }),\r\n dappUrl,\r\n affiliateUrl,\r\n trustedGasSwapLp: process.env.REACT_APP_TRUSTED_GAS_SWAP,\r\n defaultLp: process.env.REACT_APP_DEFAULT_LP\r\n};\r\n","import { jsx as _jsx } from \"react/jsx-runtime\";\r\nimport { WalletModalProvider } from \"@solana/wallet-adapter-react-ui\";\r\nimport { ConnectionProvider, WalletProvider } from \"@solana/wallet-adapter-react\";\r\nimport { LedgerWalletAdapter, PhantomWalletAdapter, TorusWalletAdapter, SolflareWalletAdapter } from \"@solana/wallet-adapter-wallets\";\r\nimport { FEConstants } from \"../FEConstants\";\r\nconst wallets = [\r\n new PhantomWalletAdapter(),\r\n new SolflareWalletAdapter({ network: FEConstants.solanaChain }),\r\n new TorusWalletAdapter(),\r\n new LedgerWalletAdapter()\r\n];\r\nconst fetchWithTimeout = async (input, init) => {\r\n if (init == null)\r\n init = {};\r\n let timedOut = false;\r\n const abortController = new AbortController();\r\n const timeoutHandle = setTimeout(() => {\r\n timedOut = true;\r\n abortController.abort(\"Timed out\");\r\n }, 15000);\r\n let originalSignal;\r\n if (init.signal != null) {\r\n originalSignal = init.signal;\r\n init.signal.addEventListener(\"abort\", (reason) => {\r\n clearTimeout(timeoutHandle);\r\n abortController.abort(reason);\r\n });\r\n }\r\n init.signal = abortController.signal;\r\n try {\r\n return await fetch(input, init);\r\n }\r\n catch (e) {\r\n console.error(\"SolanaWalletProvider: fetchWithTimeout(\" + typeof (e) + \"): \", e);\r\n if (e.name === \"AbortError\" && (originalSignal == null || !originalSignal.aborted) && timedOut) {\r\n throw new Error(\"Network request timed out\");\r\n }\r\n else {\r\n throw e instanceof Error ? e : new Error(e);\r\n }\r\n }\r\n};\r\nfunction SolanaWalletProvider(props) {\r\n return (_jsx(ConnectionProvider, { endpoint: FEConstants.solanaRpcUrl ?? \"http://example.com/\", config: { fetch: fetchWithTimeout, commitment: \"confirmed\" }, children: _jsx(WalletProvider, { wallets: wallets, autoConnect: true, children: _jsx(WalletModalProvider, { children: props.children }) }) }));\r\n}\r\nexport default SolanaWalletProvider;\r\n","import type { EventEmitter, SendTransactionOptions, WalletName } from '@solana/wallet-adapter-base';\nimport {\n BaseMessageSignerWalletAdapter,\n isIosAndRedirectable,\n isVersionedTransaction,\n scopePollingDetectionStrategy,\n WalletAccountError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSendTransactionError,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport type {\n Connection,\n SendOptions,\n Transaction,\n TransactionSignature,\n TransactionVersion,\n VersionedTransaction,\n} from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\n\ninterface PhantomWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n accountChanged(newPublicKey: PublicKey): unknown;\n}\n\ninterface PhantomWallet extends EventEmitter {\n isPhantom?: boolean;\n publicKey?: { toBytes(): Uint8Array };\n isConnected: boolean;\n signTransaction(transaction: T): Promise;\n signAllTransactions(transactions: T[]): Promise;\n signAndSendTransaction(\n transaction: T,\n options?: SendOptions\n ): Promise<{ signature: TransactionSignature }>;\n signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n connect(): Promise;\n disconnect(): Promise;\n}\n\ninterface PhantomWindow extends Window {\n phantom?: {\n solana?: PhantomWallet;\n };\n solana?: PhantomWallet;\n}\n\ndeclare const window: PhantomWindow;\n\nexport interface PhantomWalletAdapterConfig {}\n\nexport const PhantomWalletName = 'Phantom' as WalletName<'Phantom'>;\n\nexport class PhantomWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = PhantomWalletName;\n url = 'https://phantom.app';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDgiIGhlaWdodD0iMTA4IiB2aWV3Qm94PSIwIDAgMTA4IDEwOCIgZmlsbD0ibm9uZSI+CjxyZWN0IHdpZHRoPSIxMDgiIGhlaWdodD0iMTA4IiByeD0iMjYiIGZpbGw9IiNBQjlGRjIiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00Ni41MjY3IDY5LjkyMjlDNDIuMDA1NCA3Ni44NTA5IDM0LjQyOTIgODUuNjE4MiAyNC4zNDggODUuNjE4MkMxOS41ODI0IDg1LjYxODIgMTUgODMuNjU2MyAxNSA3NS4xMzQyQzE1IDUzLjQzMDUgNDQuNjMyNiAxOS44MzI3IDcyLjEyNjggMTkuODMyN0M4Ny43NjggMTkuODMyNyA5NCAzMC42ODQ2IDk0IDQzLjAwNzlDOTQgNTguODI1OCA4My43MzU1IDc2LjkxMjIgNzMuNTMyMSA3Ni45MTIyQzcwLjI5MzkgNzYuOTEyMiA2OC43MDUzIDc1LjEzNDIgNjguNzA1MyA3Mi4zMTRDNjguNzA1MyA3MS41NzgzIDY4LjgyNzUgNzAuNzgxMiA2OS4wNzE5IDY5LjkyMjlDNjUuNTg5MyA3NS44Njk5IDU4Ljg2ODUgODEuMzg3OCA1Mi41NzU0IDgxLjM4NzhDNDcuOTkzIDgxLjM4NzggNDUuNjcxMyA3OC41MDYzIDQ1LjY3MTMgNzQuNDU5OEM0NS42NzEzIDcyLjk4ODQgNDUuOTc2OCA3MS40NTU2IDQ2LjUyNjcgNjkuOTIyOVpNODMuNjc2MSA0Mi41Nzk0QzgzLjY3NjEgNDYuMTcwNCA4MS41NTc1IDQ3Ljk2NTggNzkuMTg3NSA0Ny45NjU4Qzc2Ljc4MTYgNDcuOTY1OCA3NC42OTg5IDQ2LjE3MDQgNzQuNjk4OSA0Mi41Nzk0Qzc0LjY5ODkgMzguOTg4NSA3Ni43ODE2IDM3LjE5MzEgNzkuMTg3NSAzNy4xOTMxQzgxLjU1NzUgMzcuMTkzMSA4My42NzYxIDM4Ljk4ODUgODMuNjc2MSA0Mi41Nzk0Wk03MC4yMTAzIDQyLjU3OTVDNzAuMjEwMyA0Ni4xNzA0IDY4LjA5MTYgNDcuOTY1OCA2NS43MjE2IDQ3Ljk2NThDNjMuMzE1NyA0Ny45NjU4IDYxLjIzMyA0Ni4xNzA0IDYxLjIzMyA0Mi41Nzk1QzYxLjIzMyAzOC45ODg1IDYzLjMxNTcgMzcuMTkzMSA2NS43MjE2IDM3LjE5MzFDNjguMDkxNiAzNy4xOTMxIDcwLjIxMDMgMzguOTg4NSA3MC4yMTAzIDQyLjU3OTVaIiBmaWxsPSIjRkZGREY4Ii8+Cjwvc3ZnPg==';\n supportedTransactionVersions: ReadonlySet = new Set(['legacy', 0]);\n\n private _connecting: boolean;\n private _wallet: PhantomWallet | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor(config: PhantomWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n if (isIosAndRedirectable()) {\n // when in iOS (not webview), set Phantom as loadable instead of checking for install\n this._readyState = WalletReadyState.Loadable;\n this.emit('readyStateChange', this._readyState);\n } else {\n scopePollingDetectionStrategy(() => {\n if (window.phantom?.solana?.isPhantom || window.solana?.isPhantom) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n }\n\n get publicKey() {\n return this._publicKey;\n }\n\n get connecting() {\n return this._connecting;\n }\n\n get readyState() {\n return this._readyState;\n }\n\n async autoConnect(): Promise {\n // Skip autoconnect in the Loadable state\n // We can't redirect to a universal link without user input\n if (this.readyState === WalletReadyState.Installed) {\n await this.connect();\n }\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n\n if (this.readyState === WalletReadyState.Loadable) {\n // redirect to the Phantom /browse universal link\n // this will open the current URL in the Phantom in-wallet browser\n const url = encodeURIComponent(window.location.href);\n const ref = encodeURIComponent(window.location.origin);\n window.location.href = `https://phantom.app/ul/browse/${url}?ref=${ref}`;\n return;\n }\n\n if (this.readyState !== WalletReadyState.Installed) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window.phantom?.solana || window.solana!;\n\n if (!wallet.isConnected) {\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n if (!wallet.publicKey) throw new WalletAccountError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n wallet.on('accountChanged', this._accountChanged);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n wallet.off('accountChanged', this._accountChanged);\n\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async sendTransaction(\n transaction: T,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signers, ...sendOptions } = options;\n\n if (isVersionedTransaction(transaction)) {\n signers?.length && transaction.sign(signers);\n } else {\n transaction = (await this.prepareTransaction(transaction, connection, sendOptions)) as T;\n signers?.length && (transaction as Transaction).partialSign(...signers);\n }\n\n sendOptions.preflightCommitment = sendOptions.preflightCommitment || connection.commitment;\n\n const { signature } = await wallet.signAndSendTransaction(transaction, sendOptions);\n return signature;\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signTransaction(transaction: T): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signTransaction(transaction)) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: T[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return (await wallet.signAllTransactions(transactions)) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signature } = await wallet.signMessage(message);\n return signature;\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n wallet.off('accountChanged', this._accountChanged);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n\n private _accountChanged = (newPublicKey: PublicKey) => {\n const publicKey = this._publicKey;\n if (!publicKey) return;\n\n try {\n newPublicKey = new PublicKey(newPublicKey.toBytes());\n } catch (error: any) {\n this.emit('error', new WalletPublicKeyError(error?.message, error));\n return;\n }\n\n if (publicKey.equals(newPublicKey)) return;\n\n this._publicKey = newPublicKey;\n this.emit('connect', newPublicKey);\n };\n}\n","import type { WalletAdapterNetwork, WalletName } from '@solana/wallet-adapter-base';\nimport {\n BaseMessageSignerWalletAdapter,\n WalletConfigError,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletError,\n WalletLoadError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSendTransactionError,\n WalletSignMessageError,\n WalletSignTransactionError,\n isIosAndRedirectable,\n isVersionedTransaction,\n scopePollingDetectionStrategy,\n type SendTransactionOptions,\n} from '@solana/wallet-adapter-base';\nimport type { Transaction, TransactionVersion, VersionedTransaction } from '@solana/web3.js';\nimport { PublicKey, type Connection, type TransactionSignature } from '@solana/web3.js';\nimport type { default as Solflare } from '@solflare-wallet/sdk';\nimport { detectAndRegisterSolflareMetaMaskWallet } from './metamask/detect.js';\n\ninterface SolflareWindow extends Window {\n solflare?: {\n isSolflare?: boolean;\n };\n SolflareApp?: unknown;\n}\n\ndeclare const window: SolflareWindow;\n\nexport interface SolflareWalletAdapterConfig {\n network?: WalletAdapterNetwork;\n}\n\nexport const SolflareWalletName = 'Solflare' as WalletName<'Solflare'>;\n\nexport class SolflareWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = SolflareWalletName;\n url = 'https://solflare.com';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjUwIiB2aWV3Qm94PSIwIDAgNTAgNTAiIHdpZHRoPSI1MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGxpbmVhckdyYWRpZW50IGlkPSJhIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmMxMGIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmYjNmMmUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2LjQ3ODM1IiB4Mj0iMzQuOTEwNyIgeGxpbms6aHJlZj0iI2EiIHkxPSI3LjkyIiB5Mj0iMzMuNjU5MyIvPjxyYWRpYWxHcmFkaWVudCBpZD0iYyIgY3g9IjAiIGN5PSIwIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDQuOTkyMTg4MzIgMTIuMDYzODc5NjMgLTEyLjE4MTEzNjU1IDUuMDQwNzEwNzQgMjIuNTIwMiAyMC42MTgzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHI9IjEiIHhsaW5rOmhyZWY9IiNhIi8+PHBhdGggZD0ibTI1LjE3MDggNDcuOTEwNGMuNTI1IDAgLjk1MDcuNDIxLjk1MDcuOTQwM3MtLjQyNTcuOTQwMi0uOTUwNy45NDAyLS45NTA3LS40MjA5LS45NTA3LS45NDAyLjQyNTctLjk0MDMuOTUwNy0uOTQwM3ptLTEuMDMyOC00NC45MTU2NWMuNDY0Ni4wMzgzNi44Mzk4LjM5MDQuOTAyNy44NDY4MWwxLjEzMDcgOC4yMTU3NGMuMzc5OCAyLjcxNDMgMy42NTM1IDMuODkwNCA1LjY3NDMgMi4wNDU5bDExLjMyOTEtMTAuMzExNThjLjI3MzMtLjI0ODczLjY5ODktLjIzMTQ5Ljk1MDcuMDM4NTEuMjMwOS4yNDc3Mi4yMzc5LjYyNjk3LjAxNjEuODgyNzdsLTkuODc5MSAxMS4zOTU4Yy0xLjgxODcgMi4wOTQyLS40NzY4IDUuMzY0MyAyLjI5NTYgNS41OTc4bDguNzE2OC44NDAzYy40MzQxLjA0MTguNzUxNy40MjM0LjcwOTMuODUyNC0uMDM0OS4zNTM3LS4zMDc0LjYzOTUtLjY2MjguNjk0OWwtOS4xNTk0IDEuNDMwMmMtMi42NTkzLjM2MjUtMy44NjM2IDMuNTExNy0yLjEzMzkgNS41NTc2bDMuMjIgMy43OTYxYy4yNTk0LjMwNTguMjE4OC43NjE1LS4wOTA4IDEuMDE3OC0uMjYyMi4yMTcyLS42NDE5LjIyNTYtLjkxMzguMDIwM2wtMy45Njk0LTIuOTk3OGMtMi4xNDIxLTEuNjEwOS01LjIyOTctLjI0MTctNS40NTYxIDIuNDI0M2wtLjg3NDcgMTAuMzk3NmMtLjAzNjIuNDI5NS0uNDE3OC43NDg3LS44NTI1LjcxMy0uMzY5LS4wMzAzLS42NjcxLS4zMDk3LS43MTcxLS42NzIxbC0xLjM4NzEtMTAuMDQzN2MtLjM3MTctMi43MTQ0LTMuNjQ1NC0zLjg5MDQtNS42NzQzLTIuMDQ1OWwtMTIuMDUxOTUgMTAuOTc0Yy0uMjQ5NDcuMjI3MS0uNjM4MDkuMjExNC0uODY4LS4wMzUtLjIxMDk0LS4yMjYyLS4yMTczNS0uNTcyNC0uMDE0OTMtLjgwNmwxMC41MTgxOC0xMi4xMzg1YzEuODE4Ny0yLjA5NDIuNDg0OS01LjM2NDQtMi4yODc2LTUuNTk3OGwtOC43MTg3Mi0uODQwNWMtLjQzNDEzLS4wNDE4LS43NTE3Mi0uNDIzNS0uNzA5MzYtLjg1MjQuMDM0OTMtLjM1MzcuMzA3MzktLjYzOTQuNjYyNy0uNjk1bDkuMTUzMzgtMS40Mjk5YzIuNjU5NC0uMzYyNSAzLjg3MTgtMy41MTE3IDIuMTQyMS01LjU1NzZsLTIuMTkyLTIuNTg0MWMtLjMyMTctLjM3OTItLjI3MTMtLjk0NDMuMTEyNi0xLjI2MjEuMzI1My0uMjY5NC43OTYzLS4yNzk3IDEuMTMzNC0uMDI0OWwyLjY5MTggMi4wMzQ3YzIuMTQyMSAxLjYxMDkgNS4yMjk3LjI0MTcgNS40NTYxLTIuNDI0M2wuNzI0MS04LjU1OTk4Yy4wNDU3LS41NDA4LjUyNjUtLjk0MjU3IDEuMDczOS0uODk3Mzd6bS0yMy4xODczMyAyMC40Mzk2NWMuNTI1MDQgMCAuOTUwNjcuNDIxLjk1MDY3Ljk0MDNzLS40MjU2My45NDAzLS45NTA2Ny45NDAzYy0uNTI1MDQxIDAtLjk1MDY3LS40MjEtLjk1MDY3LS45NDAzcy40MjU2MjktLjk0MDMuOTUwNjctLjk0MDN6bTQ3LjY3OTczLS45NTQ3Yy41MjUgMCAuOTUwNy40MjEuOTUwNy45NDAzcy0uNDI1Ny45NDAyLS45NTA3Ljk0MDItLjk1MDctLjQyMDktLjk1MDctLjk0MDIuNDI1Ny0uOTQwMy45NTA3LS45NDAzem0tMjQuNjI5Ni0yMi40Nzk3Yy41MjUgMCAuOTUwNi40MjA5NzMuOTUwNi45NDAyNyAwIC41MTkzLS40MjU2Ljk0MDI3LS45NTA2Ljk0MDI3LS41MjUxIDAtLjk1MDctLjQyMDk3LS45NTA3LS45NDAyNyAwLS41MTkyOTcuNDI1Ni0uOTQwMjcuOTUwNy0uOTQwMjd6IiBmaWxsPSJ1cmwoI2IpIi8+PHBhdGggZD0ibTI0LjU3MSAzMi43NzkyYzQuOTU5NiAwIDguOTgwMi0zLjk3NjUgOC45ODAyLTguODgxOSAwLTQuOTA1My00LjAyMDYtOC44ODE5LTguOTgwMi04Ljg4MTlzLTguOTgwMiAzLjk3NjYtOC45ODAyIDguODgxOWMwIDQuOTA1NCA0LjAyMDYgOC44ODE5IDguOTgwMiA4Ljg4MTl6IiBmaWxsPSJ1cmwoI2MpIi8+PC9zdmc+';\n supportedTransactionVersions: ReadonlySet = new Set(['legacy', 0]);\n\n private _connecting: boolean;\n private _wallet: Solflare | null;\n private _publicKey: PublicKey | null;\n private _config: SolflareWalletAdapterConfig;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.Loadable;\n\n constructor(config: SolflareWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._publicKey = null;\n this._wallet = null;\n this._config = config;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window.solflare?.isSolflare || window.SolflareApp) {\n this._readyState = WalletReadyState.Installed;\n this.emit('readyStateChange', this._readyState);\n return true;\n }\n return false;\n });\n detectAndRegisterSolflareMetaMaskWallet();\n }\n }\n\n get publicKey() {\n return this._publicKey;\n }\n\n get connecting() {\n return this._connecting;\n }\n\n get connected() {\n return !!this._wallet?.connected;\n }\n\n get readyState() {\n return this._readyState;\n }\n\n async autoConnect(): Promise {\n // Skip autoconnect in the Loadable state on iOS\n // We can't redirect to a universal link without user input\n if (!(this.readyState === WalletReadyState.Loadable && isIosAndRedirectable())) {\n await this.connect();\n }\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Loadable && this._readyState !== WalletReadyState.Installed)\n throw new WalletNotReadyError();\n\n // redirect to the Solflare /browse universal link\n // this will open the current URL in the Solflare in-wallet browser\n if (this.readyState === WalletReadyState.Loadable && isIosAndRedirectable()) {\n const url = encodeURIComponent(window.location.href);\n const ref = encodeURIComponent(window.location.origin);\n window.location.href = `https://solflare.com/ul/v1/browse/${url}?ref=${ref}`;\n return;\n }\n\n let SolflareClass: typeof Solflare;\n try {\n SolflareClass = (await import('@solflare-wallet/sdk')).default;\n } catch (error: any) {\n throw new WalletLoadError(error?.message, error);\n }\n\n let wallet: Solflare;\n try {\n wallet = new SolflareClass({ network: this._config.network });\n } catch (error: any) {\n throw new WalletConfigError(error?.message, error);\n }\n\n this._connecting = true;\n\n if (!wallet.connected) {\n try {\n await wallet.connect();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n if (!wallet.publicKey) throw new WalletConnectionError();\n\n let publicKey: PublicKey;\n try {\n publicKey = new PublicKey(wallet.publicKey.toBytes());\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n wallet.on('disconnect', this._disconnected);\n wallet.on('accountChanged', this._accountChanged);\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n wallet.off('accountChanged', this._accountChanged);\n\n this._wallet = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async sendTransaction(\n transaction: T,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signers, ...sendOptions } = options;\n\n if (isVersionedTransaction(transaction)) {\n signers?.length && transaction.sign(signers);\n } else {\n transaction = (await this.prepareTransaction(transaction, connection, sendOptions)) as T;\n signers?.length && (transaction as Transaction).partialSign(...signers);\n }\n\n sendOptions.preflightCommitment = sendOptions.preflightCommitment || connection.commitment;\n\n return await wallet.signAndSendTransaction(transaction, sendOptions);\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signTransaction(transaction: T): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return ((await wallet.signTransaction(transaction)) as T) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: T[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return ((await wallet.signAllTransactions(transactions)) as T[]) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return await wallet.signMessage(message, 'utf8');\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const wallet = this._wallet;\n if (wallet) {\n wallet.off('disconnect', this._disconnected);\n\n this._wallet = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n\n private _accountChanged = (newPublicKey?: PublicKey) => {\n if (!newPublicKey) return;\n\n const publicKey = this._publicKey;\n if (!publicKey) return;\n\n try {\n newPublicKey = new PublicKey(newPublicKey.toBytes());\n } catch (error: any) {\n this.emit('error', new WalletPublicKeyError(error?.message, error));\n return;\n }\n\n if (publicKey.equals(newPublicKey)) return;\n\n this._publicKey = newPublicKey;\n this.emit('connect', newPublicKey);\n };\n}\n","import type { SendTransactionOptions, WalletName } from '@solana/wallet-adapter-base';\nimport {\n BaseMessageSignerWalletAdapter,\n WalletAccountError,\n WalletConfigError,\n WalletConnectionError,\n WalletDisconnectionError,\n WalletError,\n WalletLoadError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSendTransactionError,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport type { Connection, Transaction, TransactionSignature } from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\nimport type { default as Torus, TorusParams } from '@toruslabs/solana-embed';\n\nexport interface TorusWalletAdapterConfig {\n params?: TorusParams;\n}\n\ninterface TorusWindow extends Window {\n torus?: Torus | null;\n}\n\ndeclare const window: TorusWindow;\n\nexport const TorusWalletName = 'Torus' as WalletName<'Torus'>;\n\nexport class TorusWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = TorusWalletName;\n url = 'https://tor.us';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzMiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMyAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYuNSIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzAzNjRGRiIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjIxODYgOS40OTIxOUMxMC40NTM5IDkuNDkyMTkgOS44MzM5OCAxMC4xMTIxIDkuODMzOTggMTAuODc2OFYxMi40ODk4QzkuODMzOTggMTMuMjU0NSAxMC40NTM5IDEzLjg3NDQgMTEuMjE4NiAxMy44NzQ0SDEzLjY2ODRWMjIuODk3NkMxMy42Njg0IDIzLjY2MjMgMTQuMjg4MyAyNC4yODIyIDE1LjA1MyAyNC4yODIySDE2LjY2NkMxNy40MzA3IDI0LjI4MjIgMTguMDUwNiAyMy42NjIzIDE4LjA1MDYgMjIuODk3NlYxMi41MDE1QzE4LjA1MDYgMTIuNDk3NiAxOC4wNTA2IDEyLjQ5MzcgMTguMDUwNiAxMi40ODk4VjEwLjg3NjhDMTguMDUwNiAxMC4xMTIxIDE3LjQzMDcgOS40OTIxOSAxNi42NjYgOS40OTIxOUgxNS4wNTNIMTEuMjE4NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMS4zMzc2IDEzLjg3NDRDMjIuNTQ3NyAxMy44NzQ0IDIzLjUyODcgMTIuODkzNCAyMy41Mjg3IDExLjY4MzNDMjMuNTI4NyAxMC40NzMyIDIyLjU0NzcgOS40OTIxOSAyMS4zMzc2IDkuNDkyMTlDMjAuMTI3NSA5LjQ5MjE5IDE5LjE0NjUgMTAuNDczMiAxOS4xNDY1IDExLjY4MzNDMTkuMTQ2NSAxMi44OTM0IDIwLjEyNzUgMTMuODc0NCAyMS4zMzc2IDEzLjg3NDRaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K';\n readonly supportedTransactionVersions = null;\n\n private _connecting: boolean;\n private _wallet: Torus | null;\n private _publicKey: PublicKey | null;\n private _params: TorusParams;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' || typeof document === 'undefined'\n ? WalletReadyState.Unsupported\n : WalletReadyState.Loadable;\n\n constructor(\n { params = { showTorusButton: false } }: TorusWalletAdapterConfig = { params: { showTorusButton: false } }\n ) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._publicKey = null;\n this._params = params;\n }\n\n get publicKey() {\n return this._publicKey;\n }\n\n get connecting() {\n return this._connecting;\n }\n\n get connected() {\n return !!this._wallet?.isLoggedIn;\n }\n\n get readyState() {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Loadable) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n let TorusClass: typeof Torus;\n try {\n TorusClass = (await import('@toruslabs/solana-embed')).default;\n } catch (error: any) {\n throw new WalletLoadError(error?.message, error);\n }\n\n let wallet: Torus;\n try {\n wallet = window.torus || new TorusClass();\n } catch (error: any) {\n throw new WalletConfigError(error?.message, error);\n }\n\n if (!wallet.isInitialized) {\n try {\n await wallet.init(this._params);\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n }\n\n let accounts: string[];\n try {\n accounts = await wallet.login();\n } catch (error: any) {\n throw new WalletAccountError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n publicKey = new PublicKey(accounts[0]!);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const wallet = this._wallet;\n if (wallet) {\n this._wallet = null;\n this._publicKey = null;\n\n try {\n if (wallet.isLoggedIn) await wallet.cleanUp();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async sendTransaction(\n transaction: Transaction,\n connection: Connection,\n options: SendTransactionOptions = {}\n ): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n const { signers, ...sendOptions } = options;\n\n transaction = await this.prepareTransaction(transaction, connection, sendOptions);\n\n signers?.length && transaction.partialSign(...signers);\n\n sendOptions.preflightCommitment = sendOptions.preflightCommitment || connection.commitment;\n\n const { signature } = await wallet.signAndSendTransaction(transaction, sendOptions);\n return signature;\n } catch (error: any) {\n if (error instanceof WalletError) throw error;\n throw new WalletSendTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signTransaction(transaction: T): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return ((await wallet.signTransaction(transaction)) as T) || transaction;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signAllTransactions(transactions: T[]): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return ((await wallet.signAllTransactions(transactions)) as T[]) || transactions;\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n async signMessage(message: Uint8Array): Promise {\n try {\n const wallet = this._wallet;\n if (!wallet) throw new WalletNotConnectedError();\n\n try {\n return await wallet.signMessage(message);\n } catch (error: any) {\n throw new WalletSignMessageError(error?.message, error);\n }\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n}\n","import type { default as Transport } from '@ledgerhq/hw-transport';\nimport type { default as TransportWebHID } from '@ledgerhq/hw-transport-webhid';\nimport type { WalletName } from '@solana/wallet-adapter-base';\nimport {\n BaseSignerWalletAdapter,\n WalletConnectionError,\n WalletDisconnectedError,\n WalletDisconnectionError,\n WalletLoadError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletPublicKeyError,\n WalletReadyState,\n WalletSignTransactionError,\n} from '@solana/wallet-adapter-base';\nimport type { PublicKey, Transaction, TransactionVersion, VersionedTransaction } from '@solana/web3.js';\nimport './polyfills/index.js';\nimport { getDerivationPath, getPublicKey, signTransaction } from './util.js';\n\nexport interface LedgerWalletAdapterConfig {\n derivationPath?: Buffer;\n}\n\nexport const LedgerWalletName = 'Ledger' as WalletName<'Ledger'>;\n\nexport class LedgerWalletAdapter extends BaseSignerWalletAdapter {\n name = LedgerWalletName;\n url = 'https://ledger.com';\n icon =\n 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzUgMzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0ibTIzLjU4OCAwaC0xNnYyMS41ODNoMjEuNnYtMTZhNS41ODUgNS41ODUgMCAwIDAgLTUuNi01LjU4M3oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuNzM5KSIvPjxwYXRoIGQ9Im04LjM0MiAwaC0yLjc1N2E1LjU4NSA1LjU4NSAwIDAgMCAtNS41ODUgNS41ODV2Mi43NTdoOC4zNDJ6Ii8+PHBhdGggZD0ibTAgNy41OWg4LjM0MnY4LjM0MmgtOC4zNDJ6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDUuNzM5KSIvPjxwYXRoIGQ9Im0xNS4xOCAyMy40NTFoMi43NTdhNS41ODUgNS41ODUgMCAwIDAgNS41ODUtNS42di0yLjY3MWgtOC4zNDJ6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS40NzggMTEuNDc4KSIvPjxwYXRoIGQ9Im03LjU5IDE1LjE4aDguMzQydjguMzQyaC04LjM0MnoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuNzM5IDExLjQ3OCkiLz48cGF0aCBkPSJtMCAxNS4xOHYyLjc1N2E1LjU4NSA1LjU4NSAwIDAgMCA1LjU4NSA1LjU4NWgyLjc1N3YtOC4zNDJ6IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDExLjQ3OCkiLz48L2c+PC9zdmc+';\n supportedTransactionVersions: ReadonlySet = new Set(['legacy', 0]);\n\n private _derivationPath: Buffer;\n private _connecting: boolean;\n private _transport: Transport | null;\n private _publicKey: PublicKey | null;\n private _readyState: WalletReadyState =\n typeof window === 'undefined' ||\n typeof document === 'undefined' ||\n typeof navigator === 'undefined' ||\n !navigator.hid\n ? WalletReadyState.Unsupported\n : WalletReadyState.Loadable;\n\n constructor(config: LedgerWalletAdapterConfig = {}) {\n super();\n this._derivationPath = config.derivationPath || getDerivationPath(0, 0);\n this._connecting = false;\n this._transport = null;\n this._publicKey = null;\n }\n\n get publicKey() {\n return this._publicKey;\n }\n\n get connecting() {\n return this._connecting;\n }\n\n get readyState() {\n return this._readyState;\n }\n\n async connect(): Promise {\n try {\n if (this.connected || this.connecting) return;\n if (this._readyState !== WalletReadyState.Loadable) throw new WalletNotReadyError();\n\n this._connecting = true;\n\n let TransportWebHIDClass: typeof TransportWebHID;\n try {\n TransportWebHIDClass = (await import('@ledgerhq/hw-transport-webhid')).default;\n } catch (error: any) {\n throw new WalletLoadError(error?.message, error);\n }\n\n let transport: Transport;\n try {\n transport = await TransportWebHIDClass.create();\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n\n let publicKey: PublicKey;\n try {\n publicKey = await getPublicKey(transport, this._derivationPath);\n } catch (error: any) {\n throw new WalletPublicKeyError(error?.message, error);\n }\n\n transport.on('disconnect', this._disconnected);\n\n this._transport = transport;\n this._publicKey = publicKey;\n\n this.emit('connect', publicKey);\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise {\n const transport = this._transport;\n if (transport) {\n transport.off('disconnect', this._disconnected);\n\n this._transport = null;\n this._publicKey = null;\n\n try {\n await transport.close();\n } catch (error: any) {\n this.emit('error', new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit('disconnect');\n }\n\n async signTransaction(transaction: T): Promise {\n try {\n const transport = this._transport;\n const publicKey = this._publicKey;\n if (!transport || !publicKey) throw new WalletNotConnectedError();\n\n try {\n const signature = await signTransaction(transport, transaction, this._derivationPath);\n transaction.addSignature(publicKey, signature);\n } catch (error: any) {\n throw new WalletSignTransactionError(error?.message, error);\n }\n\n return transaction;\n } catch (error: any) {\n this.emit('error', error);\n throw error;\n }\n }\n\n private _disconnected = () => {\n const transport = this._transport;\n if (transport) {\n transport.off('disconnect', this._disconnected);\n\n this._transport = null;\n this._publicKey = null;\n\n this.emit('error', new WalletDisconnectedError());\n this.emit('disconnect');\n }\n };\n}\n","class QrScanner {\n static readonly DEFAULT_CANVAS_SIZE = 400;\n static readonly NO_QR_CODE_FOUND = 'No QR code found';\n private static _disableBarcodeDetector = false;\n private static _workerMessageId = 0;\n\n /** @deprecated */\n static set WORKER_PATH(workerPath: string) {\n console.warn('Setting QrScanner.WORKER_PATH is not required and not supported anymore. '\n + 'Have a look at the README for new setup instructions.');\n }\n\n static async hasCamera(): Promise {\n try {\n return !!(await QrScanner.listCameras(false)).length;\n } catch (e) {\n return false;\n }\n }\n\n static async listCameras(requestLabels = false): Promise> {\n if (!navigator.mediaDevices) return [];\n\n const enumerateCameras = async (): Promise> =>\n (await navigator.mediaDevices.enumerateDevices()).filter((device) => device.kind === 'videoinput');\n\n // Note that enumerateDevices can always be called and does not prompt the user for permission.\n // However, enumerateDevices only includes device labels if served via https and an active media stream exists\n // or permission to access the camera was given. Therefore, if we're not getting labels but labels are requested\n // ask for camera permission by opening a stream.\n let openedStream: MediaStream | undefined;\n try {\n if (requestLabels && (await enumerateCameras()).every((camera) => !camera.label)) {\n openedStream = await navigator.mediaDevices.getUserMedia({ audio: false, video: true });\n }\n } catch (e) {\n // Fail gracefully, especially if the device has no camera or on mobile when the camera is already in use\n // and some browsers disallow a second stream.\n }\n\n try {\n return (await enumerateCameras()).map((camera, i) => ({\n id: camera.deviceId,\n label: camera.label || (i === 0 ? 'Default Camera' : `Camera ${i + 1}`),\n }));\n } finally {\n // close the stream we just opened for getting camera access for listing the device labels\n if (openedStream) {\n console.warn('Call listCameras after successfully starting a QR scanner to avoid creating '\n + 'a temporary video stream');\n QrScanner._stopVideoStream(openedStream);\n }\n }\n }\n\n readonly $video: HTMLVideoElement;\n readonly $canvas: HTMLCanvasElement;\n readonly $overlay?: HTMLDivElement;\n private readonly $codeOutlineHighlight?: SVGSVGElement;\n private readonly _onDecode?: (result: QrScanner.ScanResult) => void;\n private readonly _legacyOnDecode?: (result: string) => void;\n private readonly _legacyCanvasSize: number = QrScanner.DEFAULT_CANVAS_SIZE;\n private _preferredCamera: QrScanner.FacingMode | QrScanner.DeviceId = 'environment';\n private readonly _maxScansPerSecond: number = 25;\n private _lastScanTimestamp: number = -1;\n private _scanRegion: QrScanner.ScanRegion;\n private _codeOutlineHighlightRemovalTimeout?: number;\n private _qrEnginePromise: Promise\n private _active: boolean = false;\n private _paused: boolean = false;\n private _flashOn: boolean = false;\n private _destroyed: boolean = false;\n\n constructor(\n video: HTMLVideoElement,\n onDecode: (result: QrScanner.ScanResult) => void,\n options: {\n onDecodeError?: (error: Error | string) => void,\n calculateScanRegion?: (video: HTMLVideoElement) => QrScanner.ScanRegion,\n preferredCamera?: QrScanner.FacingMode | QrScanner.DeviceId,\n maxScansPerSecond?: number;\n highlightScanRegion?: boolean,\n highlightCodeOutline?: boolean,\n overlay?: HTMLDivElement,\n /** just a temporary flag until we switch entirely to the new api */\n returnDetailedScanResult?: true,\n },\n );\n /** @deprecated */\n constructor(\n video: HTMLVideoElement,\n onDecode: (result: string) => void,\n onDecodeError?: (error: Error | string) => void,\n calculateScanRegion?: (video: HTMLVideoElement) => QrScanner.ScanRegion,\n preferredCamera?: QrScanner.FacingMode | QrScanner.DeviceId,\n );\n /** @deprecated */\n constructor(\n video: HTMLVideoElement,\n onDecode: (result: string) => void,\n onDecodeError?: (error: Error | string) => void,\n canvasSize?: number,\n preferredCamera?: QrScanner.FacingMode | QrScanner.DeviceId,\n );\n /** @deprecated */\n constructor(video: HTMLVideoElement, onDecode: (result: string) => void, canvasSize?: number);\n constructor(\n video: HTMLVideoElement,\n onDecode: ((result: QrScanner.ScanResult) => void) | ((result: string) => void),\n canvasSizeOrOnDecodeErrorOrOptions?: number | ((error: Error | string) => void) | {\n onDecodeError?: (error: Error | string) => void,\n calculateScanRegion?: (video: HTMLVideoElement) => QrScanner.ScanRegion,\n preferredCamera?: QrScanner.FacingMode | QrScanner.DeviceId,\n maxScansPerSecond?: number;\n highlightScanRegion?: boolean,\n highlightCodeOutline?: boolean,\n overlay?: HTMLDivElement,\n /** just a temporary flag until we switch entirely to the new api */\n returnDetailedScanResult?: true,\n },\n canvasSizeOrCalculateScanRegion?: number | ((video: HTMLVideoElement) => QrScanner.ScanRegion),\n preferredCamera?: QrScanner.FacingMode | QrScanner.DeviceId,\n ) {\n this.$video = video;\n this.$canvas = document.createElement('canvas');\n\n if (canvasSizeOrOnDecodeErrorOrOptions && typeof canvasSizeOrOnDecodeErrorOrOptions === 'object') {\n // we got an options object using the new api\n this._onDecode = onDecode as QrScanner['_onDecode'];\n } else {\n if (canvasSizeOrOnDecodeErrorOrOptions || canvasSizeOrCalculateScanRegion || preferredCamera) {\n console.warn('You\\'re using a deprecated version of the QrScanner constructor which will be removed in '\n + 'the future');\n } else {\n // Only video and onDecode were specified and we can't distinguish between new or old api usage. For\n // backwards compatibility we have to assume the old api for now. The options object is marked as non-\n // optional in the parameter list above to make clear that ScanResult instead of string is only passed\n // if an options object was provided. However, in the future once legacy support is removed, the options\n // object should become optional.\n console.warn('Note that the type of the scan result passed to onDecode will change in the future. '\n + 'To already switch to the new api today, you can pass returnDetailedScanResult: true.');\n }\n this._legacyOnDecode = onDecode as QrScanner['_legacyOnDecode'];\n }\n\n const options = typeof canvasSizeOrOnDecodeErrorOrOptions === 'object'\n ? canvasSizeOrOnDecodeErrorOrOptions\n : {};\n this._onDecodeError = options.onDecodeError || (typeof canvasSizeOrOnDecodeErrorOrOptions === 'function'\n ? canvasSizeOrOnDecodeErrorOrOptions\n : this._onDecodeError);\n this._calculateScanRegion = options.calculateScanRegion || (typeof canvasSizeOrCalculateScanRegion==='function'\n ? canvasSizeOrCalculateScanRegion\n : this._calculateScanRegion);\n this._preferredCamera = options.preferredCamera || preferredCamera || this._preferredCamera;\n this._legacyCanvasSize = typeof canvasSizeOrOnDecodeErrorOrOptions === 'number'\n ? canvasSizeOrOnDecodeErrorOrOptions\n : typeof canvasSizeOrCalculateScanRegion === 'number'\n ? canvasSizeOrCalculateScanRegion\n : this._legacyCanvasSize;\n this._maxScansPerSecond = options.maxScansPerSecond || this._maxScansPerSecond;\n\n this._onPlay = this._onPlay.bind(this);\n this._onLoadedMetaData = this._onLoadedMetaData.bind(this);\n this._onVisibilityChange = this._onVisibilityChange.bind(this);\n this._updateOverlay = this._updateOverlay.bind(this);\n\n // @ts-ignore\n video.disablePictureInPicture = true;\n // Allow inline playback on iPhone instead of requiring full screen playback,\n // see https://webkit.org/blog/6784/new-video-policies-for-ios/\n // @ts-ignore\n video.playsInline = true;\n // Allow play() on iPhone without requiring a user gesture. Should not really be needed as camera stream\n // includes no audio, but just to be safe.\n video.muted = true;\n\n // Avoid Safari stopping the video stream on a hidden video.\n // See https://github.com/cozmo/jsQR/issues/185\n let shouldHideVideo = false;\n if (video.hidden) {\n video.hidden = false;\n shouldHideVideo = true;\n }\n if (!document.body.contains(video)) {\n document.body.appendChild(video);\n shouldHideVideo = true;\n }\n const videoContainer = video.parentElement!;\n\n if (options.highlightScanRegion || options.highlightCodeOutline) {\n const gotExternalOverlay = !!options.overlay;\n this.$overlay = options.overlay || document.createElement('div');\n const overlayStyle = this.$overlay.style;\n overlayStyle.position = 'absolute';\n overlayStyle.display = 'none';\n overlayStyle.pointerEvents = 'none';\n this.$overlay.classList.add('scan-region-highlight');\n if (!gotExternalOverlay && options.highlightScanRegion) {\n // default style; can be overwritten via css, e.g. by changing the svg's stroke color, hiding the\n // .scan-region-highlight-svg, setting a border, outline, background, etc.\n this.$overlay.innerHTML = ''\n + '';\n try {\n this.$overlay.firstElementChild!.animate({ transform: ['scale(.98)', 'scale(1.01)'] }, {\n duration: 400,\n iterations: Infinity,\n direction: 'alternate',\n easing: 'ease-in-out',\n });\n } catch (e) {}\n videoContainer.insertBefore(this.$overlay, this.$video.nextSibling);\n }\n if (options.highlightCodeOutline) {\n // default style; can be overwritten via css\n this.$overlay.insertAdjacentHTML(\n 'beforeend',\n '',\n );\n this.$codeOutlineHighlight = this.$overlay.lastElementChild as SVGSVGElement;\n }\n }\n this._scanRegion = this._calculateScanRegion(video);\n\n requestAnimationFrame(() => {\n // Checking in requestAnimationFrame which should avoid a potential additional re-flow for getComputedStyle.\n const videoStyle = window.getComputedStyle(video);\n if (videoStyle.display === 'none') {\n video.style.setProperty('display', 'block', 'important');\n shouldHideVideo = true;\n }\n if (videoStyle.visibility !== 'visible') {\n video.style.setProperty('visibility', 'visible', 'important');\n shouldHideVideo = true;\n }\n if (shouldHideVideo) {\n // Hide the video in a way that doesn't cause Safari to stop the playback.\n console.warn('QrScanner has overwritten the video hiding style to avoid Safari stopping the playback.');\n video.style.opacity = '0';\n video.style.width = '0';\n video.style.height = '0';\n if (this.$overlay && this.$overlay.parentElement) {\n this.$overlay.parentElement.removeChild(this.$overlay);\n }\n // @ts-ignore\n delete this.$overlay!;\n // @ts-ignore\n delete this.$codeOutlineHighlight!;\n }\n\n if (this.$overlay) {\n this._updateOverlay();\n }\n });\n\n video.addEventListener('play', this._onPlay);\n video.addEventListener('loadedmetadata', this._onLoadedMetaData);\n document.addEventListener('visibilitychange', this._onVisibilityChange);\n window.addEventListener('resize', this._updateOverlay);\n\n this._qrEnginePromise = QrScanner.createQrEngine();\n }\n\n async hasFlash(): Promise {\n let stream: MediaStream | undefined;\n try {\n if (this.$video.srcObject) {\n if (!(this.$video.srcObject instanceof MediaStream)) return false; // srcObject is not a camera stream\n stream = this.$video.srcObject;\n } else {\n stream = (await this._getCameraStream()).stream;\n }\n return 'torch' in stream.getVideoTracks()[0].getSettings();\n } catch (e) {\n return false;\n } finally {\n // close the stream we just opened for detecting whether it supports flash\n if (stream && stream !== this.$video.srcObject) {\n console.warn('Call hasFlash after successfully starting the scanner to avoid creating '\n + 'a temporary video stream');\n QrScanner._stopVideoStream(stream);\n }\n }\n }\n\n isFlashOn(): boolean {\n return this._flashOn;\n }\n\n async toggleFlash(): Promise {\n if (this._flashOn) {\n await this.turnFlashOff();\n } else {\n await this.turnFlashOn();\n }\n }\n\n async turnFlashOn(): Promise {\n if (this._flashOn || this._destroyed) return;\n this._flashOn = true;\n if (!this._active || this._paused) return; // flash will be turned on later on .start()\n try {\n if (!await this.hasFlash()) throw 'No flash available';\n // Note that the video track is guaranteed to exist and to be a MediaStream due to the check in hasFlash\n await (this.$video.srcObject as MediaStream).getVideoTracks()[0].applyConstraints({\n // @ts-ignore: constraint 'torch' is unknown to ts\n advanced: [{ torch: true }],\n });\n } catch (e) {\n this._flashOn = false;\n throw e;\n }\n }\n\n async turnFlashOff(): Promise {\n if (!this._flashOn) return;\n // applyConstraints with torch: false does not work to turn the flashlight off, as a stream's torch stays\n // continuously on, see https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints#torch. Therefore,\n // we have to stop the stream to turn the flashlight off.\n this._flashOn = false;\n await this._restartVideoStream();\n }\n\n destroy(): void {\n this.$video.removeEventListener('loadedmetadata', this._onLoadedMetaData);\n this.$video.removeEventListener('play', this._onPlay);\n document.removeEventListener('visibilitychange', this._onVisibilityChange);\n window.removeEventListener('resize', this._updateOverlay);\n\n this._destroyed = true;\n this._flashOn = false;\n this.stop(); // sets this._paused = true and this._active = false\n QrScanner._postWorkerMessage(this._qrEnginePromise, 'close');\n }\n\n async start(): Promise {\n if (this._destroyed) throw new Error('The QR scanner can not be started as it had been destroyed.');\n if (this._active && !this._paused) return;\n\n if (window.location.protocol !== 'https:') {\n // warn but try starting the camera anyways\n console.warn('The camera stream is only accessible if the page is transferred via https.');\n }\n\n this._active = true;\n if (document.hidden) return; // camera will be started as soon as tab is in foreground\n this._paused = false;\n if (this.$video.srcObject) {\n // camera stream already/still set\n await this.$video.play();\n return;\n }\n\n try {\n const { stream, facingMode } = await this._getCameraStream();\n if (!this._active || this._paused) {\n // was stopped in the meantime\n QrScanner._stopVideoStream(stream);\n return;\n }\n this._setVideoMirror(facingMode);\n this.$video.srcObject = stream;\n await this.$video.play();\n\n // Restart the flash if it was previously on\n if (this._flashOn) {\n this._flashOn = false; // force turnFlashOn to restart the flash\n this.turnFlashOn().catch(() => {});\n }\n } catch (e) {\n if (this._paused) return;\n this._active = false;\n throw e;\n }\n }\n\n stop(): void {\n this.pause();\n this._active = false;\n }\n\n async pause(stopStreamImmediately = false): Promise {\n this._paused = true;\n if (!this._active) return true;\n this.$video.pause();\n\n if (this.$overlay) {\n this.$overlay.style.display = 'none';\n }\n\n const stopStream = () => {\n if (this.$video.srcObject instanceof MediaStream) {\n // revoke srcObject only if it's a stream which was likely set by us\n QrScanner._stopVideoStream(this.$video.srcObject);\n this.$video.srcObject = null;\n }\n };\n\n if (stopStreamImmediately) {\n stopStream();\n return true;\n }\n\n await new Promise((resolve) => setTimeout(resolve, 300));\n if (!this._paused) return false;\n stopStream();\n return true;\n }\n\n async setCamera(facingModeOrDeviceId: QrScanner.FacingMode | QrScanner.DeviceId): Promise {\n if (facingModeOrDeviceId === this._preferredCamera) return;\n this._preferredCamera = facingModeOrDeviceId;\n // Restart the scanner with the new camera which will also update the video mirror and the scan region.\n await this._restartVideoStream();\n }\n\n static async scanImage(\n imageOrFileOrBlobOrUrl: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas | ImageBitmap\n | SVGImageElement | File | Blob | URL | String,\n options: {\n scanRegion?: QrScanner.ScanRegion | null,\n qrEngine?: Worker | BarcodeDetector | Promise | null,\n canvas?: HTMLCanvasElement | null,\n disallowCanvasResizing?: boolean,\n alsoTryWithoutScanRegion?: boolean,\n /** just a temporary flag until we switch entirely to the new api */\n returnDetailedScanResult?: true,\n },\n ): Promise;\n /** @deprecated */\n static async scanImage(\n imageOrFileOrBlobOrUrl: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas | ImageBitmap\n | SVGImageElement | File | Blob | URL | String,\n scanRegion?: QrScanner.ScanRegion | null,\n qrEngine?: Worker | BarcodeDetector | Promise | null,\n canvas?: HTMLCanvasElement | null,\n disallowCanvasResizing?: boolean,\n alsoTryWithoutScanRegion?: boolean,\n ): Promise;\n static async scanImage(\n imageOrFileOrBlobOrUrl: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas | ImageBitmap\n | SVGImageElement | File | Blob | URL | String,\n scanRegionOrOptions?: QrScanner.ScanRegion | {\n scanRegion?: QrScanner.ScanRegion | null,\n qrEngine?: Worker | BarcodeDetector | Promise | null,\n canvas?: HTMLCanvasElement | null,\n disallowCanvasResizing?: boolean,\n alsoTryWithoutScanRegion?: boolean,\n /** just a temporary flag until we switch entirely to the new api */\n returnDetailedScanResult?: true,\n } | null,\n qrEngine?: Worker | BarcodeDetector | Promise | null,\n canvas?: HTMLCanvasElement | null,\n disallowCanvasResizing: boolean = false,\n alsoTryWithoutScanRegion: boolean = false,\n ): Promise {\n let scanRegion: QrScanner.ScanRegion | null | undefined;\n let returnDetailedScanResult = false;\n if (scanRegionOrOptions && (\n 'scanRegion' in scanRegionOrOptions\n || 'qrEngine' in scanRegionOrOptions\n || 'canvas' in scanRegionOrOptions\n || 'disallowCanvasResizing' in scanRegionOrOptions\n || 'alsoTryWithoutScanRegion' in scanRegionOrOptions\n || 'returnDetailedScanResult' in scanRegionOrOptions\n )) {\n // we got an options object using the new api\n scanRegion = scanRegionOrOptions.scanRegion;\n qrEngine = scanRegionOrOptions.qrEngine;\n canvas = scanRegionOrOptions.canvas;\n disallowCanvasResizing = scanRegionOrOptions.disallowCanvasResizing || false;\n alsoTryWithoutScanRegion = scanRegionOrOptions.alsoTryWithoutScanRegion || false;\n returnDetailedScanResult = true;\n } else if (scanRegionOrOptions || qrEngine || canvas || disallowCanvasResizing || alsoTryWithoutScanRegion) {\n console.warn('You\\'re using a deprecated api for scanImage which will be removed in the future.');\n } else {\n // Only imageOrFileOrBlobOrUrl was specified and we can't distinguish between new or old api usage. For\n // backwards compatibility we have to assume the old api for now. The options object is marked as non-\n // optional in the parameter list above to make clear that ScanResult instead of string is only returned if\n // an options object was provided. However, in the future once legacy support is removed, the options object\n // should become optional.\n console.warn('Note that the return type of scanImage will change in the future. To already switch to the '\n + 'new api today, you can pass returnDetailedScanResult: true.');\n }\n\n const gotExternalEngine = !!qrEngine;\n\n try {\n let image: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas | ImageBitmap\n | SVGImageElement;\n let canvasContext: CanvasRenderingContext2D;\n [qrEngine, image] = await Promise.all([\n qrEngine || QrScanner.createQrEngine(),\n QrScanner._loadImage(imageOrFileOrBlobOrUrl),\n ]);\n [canvas, canvasContext] = QrScanner._drawToCanvas(image, scanRegion, canvas, disallowCanvasResizing);\n let detailedScanResult: QrScanner.ScanResult;\n\n if (qrEngine instanceof Worker) {\n const qrEngineWorker = qrEngine; // for ts to know that it's still a worker later in the event listeners\n if (!gotExternalEngine) {\n // Enable scanning of inverted color qr codes.\n QrScanner._postWorkerMessageSync(qrEngineWorker, 'inversionMode', 'both');\n }\n detailedScanResult = await new Promise((resolve, reject) => {\n let timeout: number;\n let onMessage: (event: MessageEvent) => void;\n let onError: (error: ErrorEvent | string) => void;\n let expectedResponseId = -1;\n onMessage = (event: MessageEvent) => {\n if (event.data.id !== expectedResponseId) {\n return;\n }\n qrEngineWorker.removeEventListener('message', onMessage);\n qrEngineWorker.removeEventListener('error', onError);\n clearTimeout(timeout);\n if (event.data.data !== null) {\n resolve({\n data: event.data.data,\n cornerPoints: QrScanner._convertPoints(event.data.cornerPoints, scanRegion),\n });\n } else {\n reject(QrScanner.NO_QR_CODE_FOUND);\n }\n };\n onError = (error: ErrorEvent | string) => {\n qrEngineWorker.removeEventListener('message', onMessage);\n qrEngineWorker.removeEventListener('error', onError);\n clearTimeout(timeout);\n const errorMessage = !error ? 'Unknown Error' : ((error as ErrorEvent).message || error);\n reject('Scanner error: ' + errorMessage);\n };\n qrEngineWorker.addEventListener('message', onMessage);\n qrEngineWorker.addEventListener('error', onError);\n timeout = setTimeout(() => onError('timeout'), 10000);\n const imageData = canvasContext.getImageData(0, 0, canvas!.width, canvas!.height);\n expectedResponseId = QrScanner._postWorkerMessageSync(\n qrEngineWorker,\n 'decode',\n imageData,\n [imageData.data.buffer],\n );\n });\n } else {\n detailedScanResult = await Promise.race([\n new Promise((resolve, reject) => window.setTimeout(\n () => reject('Scanner error: timeout'),\n 10000,\n )),\n (async (): Promise => {\n try {\n const [scanResult] = await qrEngine.detect(canvas!);\n if (!scanResult) throw QrScanner.NO_QR_CODE_FOUND;\n return {\n data: scanResult.rawValue,\n cornerPoints: QrScanner._convertPoints(scanResult.cornerPoints, scanRegion),\n };\n } catch (e) {\n const errorMessage = (e as Error).message || e as string;\n if (/not implemented|service unavailable/.test(errorMessage)) {\n // Not implemented can apparently for some reason happen even though getSupportedFormats\n // in createQrScanner reported that it's supported, see issue #98.\n // Service unavailable can happen after some time when the BarcodeDetector crashed and\n // can theoretically be recovered from by creating a new BarcodeDetector. However, in\n // newer browsers this issue does not seem to be present anymore and therefore we do not\n // apply this optimization anymore but just set _disableBarcodeDetector in both cases.\n // Also note that if we got an external qrEngine that crashed, we should possibly notify\n // the caller about it, but we also don't do this here, as it's such an unlikely case.\n QrScanner._disableBarcodeDetector = true;\n // retry without passing the broken BarcodeScanner instance\n return QrScanner.scanImage(imageOrFileOrBlobOrUrl, {\n scanRegion,\n canvas,\n disallowCanvasResizing,\n alsoTryWithoutScanRegion,\n });\n }\n throw `Scanner error: ${errorMessage}`;\n }\n })(),\n ]);\n }\n return returnDetailedScanResult ? detailedScanResult : detailedScanResult.data;\n } catch (e) {\n if (!scanRegion || !alsoTryWithoutScanRegion) throw e;\n const detailedScanResult = await QrScanner.scanImage(\n imageOrFileOrBlobOrUrl,\n { qrEngine, canvas, disallowCanvasResizing },\n );\n return returnDetailedScanResult ? detailedScanResult : detailedScanResult.data;\n } finally {\n if (!gotExternalEngine) {\n QrScanner._postWorkerMessage(qrEngine!, 'close');\n }\n }\n }\n\n setGrayscaleWeights(red: number, green: number, blue: number, useIntegerApproximation: boolean = true): void {\n // Note that for the native BarcodeDecoder or if the worker was destroyed, this is a no-op. However, the native\n // implementations work also well with colored qr codes.\n QrScanner._postWorkerMessage(\n this._qrEnginePromise,\n 'grayscaleWeights',\n { red, green, blue, useIntegerApproximation }\n );\n }\n\n setInversionMode(inversionMode: QrScanner.InversionMode): void {\n // Note that for the native BarcodeDecoder or if the worker was destroyed, this is a no-op. However, the native\n // implementations scan normal and inverted qr codes by default\n QrScanner._postWorkerMessage(this._qrEnginePromise, 'inversionMode', inversionMode);\n }\n\n static async createQrEngine(): Promise;\n /** @deprecated */\n static async createQrEngine(workerPath: string): Promise;\n static async createQrEngine(workerPath?: string): Promise {\n if (workerPath) {\n console.warn('Specifying a worker path is not required and not supported anymore.');\n }\n\n // @ts-ignore no types defined for import\n const createWorker = () => (import('./qr-scanner-worker.min.js') as Promise<{ createWorker: () => Worker }>)\n .then((module) => module.createWorker());\n\n const useBarcodeDetector = !QrScanner._disableBarcodeDetector\n && 'BarcodeDetector' in window\n && BarcodeDetector.getSupportedFormats\n && (await BarcodeDetector.getSupportedFormats()).includes('qr_code');\n\n if (!useBarcodeDetector) return createWorker();\n\n // On Macs with an M1/M2 processor and macOS Ventura (macOS version 13), the BarcodeDetector is broken in\n // Chromium based browsers, regardless of the version. For that constellation, the BarcodeDetector does not\n // error but does not detect QR codes. Macs without an M1/M2 or before Ventura are fine.\n // See issue #209 and https://bugs.chromium.org/p/chromium/issues/detail?id=1382442\n // TODO update this once the issue in macOS is fixed\n const userAgentData = navigator.userAgentData;\n const isChromiumOnMacWithArmVentura = userAgentData // all Chromium browsers support userAgentData\n && userAgentData.brands.some(({ brand }) => /Chromium/i.test(brand))\n && /mac ?OS/i.test(userAgentData.platform)\n // Does it have an ARM chip (e.g. M1/M2) and Ventura? Check this last as getHighEntropyValues can\n // theoretically trigger a browser prompt, although no browser currently does seem to show one.\n // If browser or user refused to return the requested values, assume broken ARM Ventura, to be safe.\n && await userAgentData.getHighEntropyValues(['architecture', 'platformVersion'])\n .then(({ architecture, platformVersion }) =>\n /arm/i.test(architecture || 'arm') && parseInt(platformVersion || '13') >= /* Ventura */ 13)\n .catch(() => true);\n if (isChromiumOnMacWithArmVentura) return createWorker();\n\n return new BarcodeDetector({ formats: ['qr_code'] });\n }\n\n private _onPlay(): void {\n this._scanRegion = this._calculateScanRegion(this.$video);\n this._updateOverlay();\n if (this.$overlay) {\n this.$overlay.style.display = '';\n }\n this._scanFrame();\n }\n\n private _onLoadedMetaData(): void {\n this._scanRegion = this._calculateScanRegion(this.$video);\n this._updateOverlay();\n }\n\n private _onVisibilityChange(): void {\n if (document.hidden) {\n this.pause();\n } else if (this._active) {\n this.start();\n }\n }\n\n private _calculateScanRegion(video: HTMLVideoElement): QrScanner.ScanRegion {\n // Default scan region calculation. Note that this can be overwritten in the constructor.\n const smallestDimension = Math.min(video.videoWidth, video.videoHeight);\n const scanRegionSize = Math.round(2 / 3 * smallestDimension);\n return {\n x: Math.round((video.videoWidth - scanRegionSize) / 2),\n y: Math.round((video.videoHeight - scanRegionSize) / 2),\n width: scanRegionSize,\n height: scanRegionSize,\n downScaledWidth: this._legacyCanvasSize,\n downScaledHeight: this._legacyCanvasSize,\n };\n }\n\n private _updateOverlay(): void {\n requestAnimationFrame(() => {\n // Running in requestAnimationFrame which should avoid a potential additional re-flow for getComputedStyle\n // and offsetWidth, offsetHeight, offsetLeft, offsetTop.\n if (!this.$overlay) return;\n const video = this.$video;\n const videoWidth = video.videoWidth;\n const videoHeight = video.videoHeight;\n const elementWidth = video.offsetWidth;\n const elementHeight = video.offsetHeight;\n const elementX = video.offsetLeft;\n const elementY = video.offsetTop;\n\n const videoStyle = window.getComputedStyle(video);\n const videoObjectFit = videoStyle.objectFit;\n const videoAspectRatio = videoWidth / videoHeight;\n const elementAspectRatio = elementWidth / elementHeight;\n let videoScaledWidth: number;\n let videoScaledHeight: number;\n switch (videoObjectFit) {\n case 'none':\n videoScaledWidth = videoWidth;\n videoScaledHeight = videoHeight;\n break;\n case 'fill':\n videoScaledWidth = elementWidth;\n videoScaledHeight = elementHeight;\n break;\n default: // 'cover', 'contains', 'scale-down'\n if (videoObjectFit === 'cover'\n ? videoAspectRatio > elementAspectRatio\n : videoAspectRatio < elementAspectRatio) {\n // The scaled height is the element height\n // - for 'cover' if the video aspect ratio is wider than the element aspect ratio\n // (scaled height matches element height and scaled width overflows element width)\n // - for 'contains'/'scale-down' if element aspect ratio is wider than the video aspect ratio\n // (scaled height matched element height and element width overflows scaled width)\n videoScaledHeight = elementHeight;\n videoScaledWidth = videoScaledHeight * videoAspectRatio;\n } else {\n videoScaledWidth = elementWidth;\n videoScaledHeight = videoScaledWidth / videoAspectRatio;\n }\n if (videoObjectFit === 'scale-down') {\n // for 'scale-down' the dimensions are the minimum of 'contains' and 'none'\n videoScaledWidth = Math.min(videoScaledWidth, videoWidth);\n videoScaledHeight = Math.min(videoScaledHeight, videoHeight);\n }\n }\n\n // getComputedStyle is so nice to convert keywords (left, center, right, top, bottom) to percent and makes\n // sure to set the default of 50% if only one or no component was provided, therefore we can be sure that\n // both components are set. Additionally, it converts units other than px (e.g. rem) to px.\n const [videoX, videoY] = videoStyle.objectPosition.split(' ').map((length, i) => {\n const lengthValue = parseFloat(length);\n return length.endsWith('%')\n ? (!i ? elementWidth - videoScaledWidth : elementHeight - videoScaledHeight) * lengthValue / 100\n : lengthValue;\n });\n\n const regionWidth = this._scanRegion.width || videoWidth;\n const regionHeight = this._scanRegion.height || videoHeight;\n const regionX = this._scanRegion.x || 0;\n const regionY = this._scanRegion.y || 0;\n\n const overlayStyle = this.$overlay.style;\n overlayStyle.width = `${regionWidth / videoWidth * videoScaledWidth}px`;\n overlayStyle.height = `${regionHeight / videoHeight * videoScaledHeight}px`;\n overlayStyle.top = `${elementY + videoY + regionY / videoHeight * videoScaledHeight}px`;\n const isVideoMirrored = /scaleX\\(-1\\)/.test(video.style.transform!);\n overlayStyle.left = `${elementX\n + (isVideoMirrored ? elementWidth - videoX - videoScaledWidth : videoX)\n + (isVideoMirrored ? videoWidth - regionX - regionWidth : regionX) / videoWidth * videoScaledWidth}px`;\n // apply same mirror as on video\n overlayStyle.transform = video.style.transform;\n });\n }\n\n private static _convertPoints(\n points: QrScanner.Point[],\n scanRegion?: QrScanner.ScanRegion | null,\n ): QrScanner.Point[] {\n if (!scanRegion) return points;\n const offsetX = scanRegion.x || 0;\n const offsetY = scanRegion.y || 0;\n const scaleFactorX = scanRegion.width && scanRegion.downScaledWidth\n ? scanRegion.width / scanRegion.downScaledWidth\n : 1;\n const scaleFactorY = scanRegion.height && scanRegion.downScaledHeight\n ? scanRegion.height / scanRegion.downScaledHeight\n : 1;\n for (const point of points) {\n point.x = point.x * scaleFactorX + offsetX;\n point.y = point.y * scaleFactorY + offsetY;\n }\n return points;\n }\n\n private _scanFrame(): void {\n if (!this._active || this.$video.paused || this.$video.ended) return;\n // If requestVideoFrameCallback is available use that to avoid unnecessary scans on the same frame as the\n // camera's framerate can be lower than the screen refresh rate and this._maxScansPerSecond, especially in dark\n // settings where the exposure time is longer. Both, requestVideoFrameCallback and requestAnimationFrame are not\n // being fired if the tab is in the background, which is what we want.\n const requestFrame = 'requestVideoFrameCallback' in this.$video\n // @ts-ignore\n ? this.$video.requestVideoFrameCallback.bind(this.$video)\n : requestAnimationFrame;\n requestFrame(async () => {\n if (this.$video.readyState <= 1) {\n // Skip scans until the video is ready as drawImage() only works correctly on a video with readyState\n // > 1, see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage#Notes.\n // This also avoids false positives for videos paused after a successful scan which remains visible on\n // the canvas until the video is started again and ready.\n this._scanFrame();\n return;\n }\n\n const timeSinceLastScan = Date.now() - this._lastScanTimestamp;\n const minimumTimeBetweenScans = 1000 / this._maxScansPerSecond;\n if (timeSinceLastScan < minimumTimeBetweenScans) {\n await new Promise((resolve) => setTimeout(resolve, minimumTimeBetweenScans - timeSinceLastScan));\n }\n // console.log('Scan rate:', Math.round(1000 / (Date.now() - this._lastScanTimestamp)));\n this._lastScanTimestamp = Date.now();\n\n let result: QrScanner.ScanResult | undefined;\n try {\n result = await QrScanner.scanImage(this.$video, {\n scanRegion: this._scanRegion,\n qrEngine: this._qrEnginePromise,\n canvas: this.$canvas,\n });\n } catch (error) {\n if (!this._active) return;\n this._onDecodeError(error as Error | string);\n }\n\n if (QrScanner._disableBarcodeDetector && !(await this._qrEnginePromise instanceof Worker)) {\n // replace the disabled BarcodeDetector\n this._qrEnginePromise = QrScanner.createQrEngine();\n }\n\n if (result) {\n if (this._onDecode) {\n this._onDecode(result);\n } else if (this._legacyOnDecode) {\n this._legacyOnDecode(result.data);\n }\n\n if (this.$codeOutlineHighlight) {\n clearTimeout(this._codeOutlineHighlightRemovalTimeout);\n this._codeOutlineHighlightRemovalTimeout = undefined;\n this.$codeOutlineHighlight.setAttribute(\n 'viewBox',\n `${this._scanRegion.x || 0} `\n + `${this._scanRegion.y || 0} `\n + `${this._scanRegion.width || this.$video.videoWidth} `\n + `${this._scanRegion.height || this.$video.videoHeight}`,\n );\n const polygon = this.$codeOutlineHighlight.firstElementChild!;\n polygon.setAttribute('points', result.cornerPoints.map(({x, y}) => `${x},${y}`).join(' '));\n this.$codeOutlineHighlight.style.display = '';\n }\n } else if (this.$codeOutlineHighlight && !this._codeOutlineHighlightRemovalTimeout) {\n // hide after timeout to make it flash less when on some frames the QR code is detected and on some not\n this._codeOutlineHighlightRemovalTimeout = setTimeout(\n () => this.$codeOutlineHighlight!.style.display = 'none',\n 100,\n );\n }\n\n this._scanFrame();\n });\n }\n\n private _onDecodeError(error: Error | string): void {\n // default error handler; can be overwritten in the constructor\n if (error === QrScanner.NO_QR_CODE_FOUND) return;\n console.log(error);\n }\n\n private async _getCameraStream(): Promise<{ stream: MediaStream, facingMode: QrScanner.FacingMode }> {\n if (!navigator.mediaDevices) throw 'Camera not found.';\n\n const preferenceType = /^(environment|user)$/.test(this._preferredCamera)\n ? 'facingMode'\n : 'deviceId';\n const constraintsWithoutCamera: Array = [{\n width: { min: 1024 }\n }, {\n width: { min: 768 }\n }, {}];\n const constraintsWithCamera = constraintsWithoutCamera.map((constraint) => Object.assign({}, constraint, {\n [preferenceType]: { exact: this._preferredCamera },\n }));\n\n for (const constraints of [...constraintsWithCamera, ...constraintsWithoutCamera]) {\n try {\n const stream = await navigator.mediaDevices.getUserMedia({ video: constraints, audio: false });\n // Try to determine the facing mode from the stream, otherwise use a guess or 'environment' as\n // default. Note that the guess is not always accurate as Safari returns cameras of different facing\n // mode, even for exact facingMode constraints.\n const facingMode = this._getFacingMode(stream)\n || (constraints.facingMode\n ? this._preferredCamera as QrScanner.FacingMode // a facing mode we were able to fulfill\n : (this._preferredCamera === 'environment'\n ? 'user' // switch as _preferredCamera was environment but we are not able to fulfill it\n : 'environment' // switch from unfulfilled user facingMode or default to environment\n )\n );\n return { stream, facingMode };\n } catch (e) {}\n }\n\n throw 'Camera not found.';\n }\n\n private async _restartVideoStream(): Promise {\n // Note that we always pause the stream and not only if !this._paused as even if this._paused === true, the\n // stream might still be running, as it's by default only stopped after a delay of 300ms.\n const wasPaused = this._paused;\n const paused = await this.pause(true);\n if (!paused || wasPaused || !this._active) return;\n await this.start();\n }\n\n private static _stopVideoStream(stream : MediaStream): void {\n for (const track of stream.getTracks()) {\n track.stop(); // note that this will also automatically turn the flashlight off\n stream.removeTrack(track);\n }\n }\n\n private _setVideoMirror(facingMode: QrScanner.FacingMode): void {\n // in user facing mode mirror the video to make it easier for the user to position the QR code\n const scaleFactor = facingMode === 'user'? -1 : 1;\n this.$video.style.transform = 'scaleX(' + scaleFactor + ')';\n }\n\n private _getFacingMode(videoStream: MediaStream): QrScanner.FacingMode | null {\n const videoTrack = videoStream.getVideoTracks()[0];\n if (!videoTrack) return null; // unknown\n // inspired by https://github.com/JodusNodus/react-qr-reader/blob/master/src/getDeviceId.js#L13\n return /rear|back|environment/i.test(videoTrack.label)\n ? 'environment'\n : /front|user|face/i.test(videoTrack.label)\n ? 'user'\n : null; // unknown\n }\n\n private static _drawToCanvas(\n image: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas | ImageBitmap\n | SVGImageElement,\n scanRegion?: QrScanner.ScanRegion | null,\n canvas?: HTMLCanvasElement | null,\n disallowCanvasResizing= false,\n ): [HTMLCanvasElement, CanvasRenderingContext2D] {\n canvas = canvas || document.createElement('canvas');\n const scanRegionX = scanRegion && scanRegion.x ? scanRegion.x : 0;\n const scanRegionY = scanRegion && scanRegion.y ? scanRegion.y : 0;\n const scanRegionWidth = scanRegion && scanRegion.width\n ? scanRegion.width\n : (image as HTMLVideoElement).videoWidth || image.width as number;\n const scanRegionHeight = scanRegion && scanRegion.height\n ? scanRegion.height\n : (image as HTMLVideoElement).videoHeight || image.height as number;\n\n if (!disallowCanvasResizing) {\n const canvasWidth = scanRegion && scanRegion.downScaledWidth\n ? scanRegion.downScaledWidth\n : scanRegionWidth;\n const canvasHeight = scanRegion && scanRegion.downScaledHeight\n ? scanRegion.downScaledHeight\n : scanRegionHeight;\n // Setting the canvas width or height clears the canvas, even if the values didn't change, therefore only\n // set them if they actually changed.\n if (canvas.width !== canvasWidth) {\n canvas.width = canvasWidth;\n }\n if (canvas.height !== canvasHeight) {\n canvas.height = canvasHeight;\n }\n }\n\n const context = canvas.getContext('2d', { alpha: false })!;\n context.imageSmoothingEnabled = false; // gives less blurry images\n context.drawImage(\n image,\n scanRegionX, scanRegionY, scanRegionWidth, scanRegionHeight,\n 0, 0, canvas.width, canvas.height,\n );\n return [canvas, context];\n }\n\n private static async _loadImage(\n imageOrFileOrBlobOrUrl: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas | ImageBitmap\n | SVGImageElement | File | Blob | URL | String,\n ): Promise {\n if (imageOrFileOrBlobOrUrl instanceof Image) {\n await QrScanner._awaitImageLoad(imageOrFileOrBlobOrUrl);\n return imageOrFileOrBlobOrUrl;\n } else if (imageOrFileOrBlobOrUrl instanceof HTMLVideoElement\n || imageOrFileOrBlobOrUrl instanceof HTMLCanvasElement\n || imageOrFileOrBlobOrUrl instanceof SVGImageElement\n || 'OffscreenCanvas' in window && imageOrFileOrBlobOrUrl instanceof OffscreenCanvas\n || 'ImageBitmap' in window && imageOrFileOrBlobOrUrl instanceof ImageBitmap) {\n return imageOrFileOrBlobOrUrl;\n } else if (imageOrFileOrBlobOrUrl instanceof File || imageOrFileOrBlobOrUrl instanceof Blob\n || imageOrFileOrBlobOrUrl instanceof URL || typeof imageOrFileOrBlobOrUrl === 'string') {\n const image = new Image();\n if (imageOrFileOrBlobOrUrl instanceof File || imageOrFileOrBlobOrUrl instanceof Blob) {\n image.src = URL.createObjectURL(imageOrFileOrBlobOrUrl);\n } else {\n image.src = imageOrFileOrBlobOrUrl.toString();\n }\n try {\n await QrScanner._awaitImageLoad(image);\n return image;\n } finally {\n if (imageOrFileOrBlobOrUrl instanceof File || imageOrFileOrBlobOrUrl instanceof Blob) {\n URL.revokeObjectURL(image.src);\n }\n }\n } else {\n throw 'Unsupported image type.';\n }\n }\n\n private static async _awaitImageLoad(image: HTMLImageElement): Promise {\n if (image.complete && image.naturalWidth !== 0) return; // already loaded\n await new Promise((resolve, reject) => {\n const listener = (event: ErrorEvent | Event) => {\n image.removeEventListener('load', listener);\n image.removeEventListener('error', listener);\n if (event instanceof ErrorEvent) {\n reject('Image load error');\n } else {\n resolve();\n }\n };\n image.addEventListener('load', listener);\n image.addEventListener('error', listener);\n });\n }\n\n private static async _postWorkerMessage(\n qrEngineOrQrEnginePromise: Worker | BarcodeDetector | Promise,\n type: string,\n data?: any,\n transfer?: Transferable[],\n ): Promise {\n return QrScanner._postWorkerMessageSync(await qrEngineOrQrEnginePromise, type, data, transfer);\n }\n\n // sync version of _postWorkerMessage without performance overhead of async functions\n private static _postWorkerMessageSync(\n qrEngine: Worker | BarcodeDetector,\n type: string,\n data?: any,\n transfer?: Transferable[],\n ): number {\n if (!(qrEngine instanceof Worker)) return -1;\n const id = QrScanner._workerMessageId++;\n qrEngine.postMessage({\n id,\n type,\n data,\n }, transfer);\n return id;\n }\n}\n\ndeclare namespace QrScanner {\n export interface ScanRegion {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n downScaledWidth?: number;\n downScaledHeight?: number;\n }\n\n export type FacingMode = 'environment' | 'user';\n export type DeviceId = string;\n\n export interface Camera {\n id: DeviceId;\n label: string;\n }\n\n export type InversionMode = 'original' | 'invert' | 'both';\n\n export interface Point {\n x: number;\n y: number;\n }\n\n export interface ScanResult {\n data: string;\n // In clockwise order, starting at top left, but this might not be guaranteed in the future.\n cornerPoints: QrScanner.Point[];\n }\n}\n\n// simplified from https://wicg.github.io/shape-detection-api/#barcode-detection-api\ndeclare class BarcodeDetector {\n constructor(options?: { formats: string[] });\n static getSupportedFormats(): Promise;\n detect(image: ImageBitmapSource): Promise>;\n}\n\n// simplified from https://github.com/lukewarlow/user-agent-data-types/blob/master/index.d.ts\ndeclare global {\n interface Navigator {\n readonly userAgentData?: {\n readonly platform: string;\n readonly brands: Array<{\n readonly brand: string;\n readonly version: string;\n }>;\n getHighEntropyValues(hints: string[]): Promise<{\n readonly architecture?: string;\n readonly platformVersion?: string;\n }>;\n };\n }\n}\n\nexport default QrScanner;\n","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return